macheteYeti / LWAF Open Saved Searches & Hide

// ==UserScript==
// @name         LWAF Open Saved Searches & Hide
// @namespace    LWAF
// @license MIT
// @include https://livewellandfully.activehosted.com/*
// @require http://code.jquery.com/jquery-3.4.1.min.js
// @require     https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js
// @require https://raw.githubusercontent.com/phstc/jquery-dateFormat/master/dist/jquery-dateformat.min.js
// @downloadURL https://openuserjs.org/install/macheteYeti/LWAF_Open_Saved_Searches_Hide.user.js
// @updateURL https://openuserjs.org/install/macheteYeti/LWAF_Open_Saved_Searches_Hide.user.js
// @author       macheteYeti
// @description  Opens AC saved searches & hide recently active
// @grant       GM_addStyle
// @version 33
// ==/UserScript==

// Title Manager System
var TitleManager = {
    currentPriority: 0,
    priorities: {
        GENERIC: 1,
        CONTACTS: 2, 
        SERIES: 3,
		EDITOR: 4,
        SAVED_SEARCH: 5
    },
    
    setTitle: function(title, priority) {
        if (priority >= this.currentPriority) {
            $('title').html(title);
            this.currentPriority = priority;
            console.log('TitleManager: Set title to "' + title + '" with priority ' + priority);
            return true;
        }
        console.log('TitleManager: Rejected title "' + title + '" (priority ' + priority + ' < current ' + this.currentPriority + ')');
        return false;
    },
    
    reset: function() {
        this.currentPriority = 0;
        console.log('TitleManager: Reset priority');
    }
};

// Reset on page changes
$(window).on('beforeunload', function() {
    TitleManager.reset();
});

GM_addStyle( `

	#listWarning{background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); font-weight: bold; float: left; height: 100%; width: 60%; padding: 10px;display:block
	webkit-animation: blinkred 1s infinite;  /* Safari 4+ */
-moz-animation: blinkred 1s infinite;  /* Fx 5+ */
-o-animation: blinkred 1s infinite;  /* Opera 12+ */
animation: blinkred 1s infinite;  /* IE 10+, Fx 29+ */
	}
	
	@-webkit-keyframes blinkred {
	  0%, 49% {
		background-color:#f00;
	  }
	  50%, 100% {
		background-color: #fff;
		color:#000
	  }
	}
	.modal-body .ac_lists table,.modal-body .ac_lists tr,.modal-body .ac_lists td,.modal-body .ac_lists a,.modal-body .ac_lists tbody{max-width:470px}
	.hideInactive{opacity:0.4;background-color:#999}
	.hideInactive td{padding-top:0;padding-bottom:0;}
	
	.components_segments_saved-searches-modal camp-button{padding:3px 5px}
	#btns{display:flex;justify-content:space-between;align-items:center}
	
	#searchTitleHeading{color:#fff;height:0}
	#searchTitle{cursor:pointer;font-size:22px;border:0;font-weight:600;font-family: "IBM Plex Sans", "Franklin Gothic", "ITC Franklin Gothic", helvetica, arial, sans-serif;display:block;width:100%}
	#searchTitle:focus{border:1px solid #000}
	#searchDets{margin-bottom:1.5em}
	#searchInvestigate,#searchDesc{width:600px;height:100px;font-style:italic}
	#searchInvestigate:focus,#searchDesc:focus{font-style:normal}
	#searchMeta{font-style:italic}
	
	#contacts-actions-toggle{margin-left:4em}
	
	/*#uxbody.contacts{margin-top:11em}*/
thead[data-testid="contacts-table-subheader"]{position:sticky;top:-2.3em;z-index:10;background-color:#fff;bottom:20px;}
#search_advanced{z-index:15}

	.external-link-btn{display:inline-block;padding:6px 12px;margin:4px 4px 4px 0;border-radius:4px;font-size:12px;font-weight:600;text-decoration:none;cursor:pointer}
	.tc-link-btn{background-color:#4A90A4;color:#fff !important}
	.tc-link-btn:hover{background-color:#3a7a8a}
	.hw-link-btn{background-color:#6B5B95;color:#fff !important}
	.hw-link-btn:hover{background-color:#5a4a84}
	#contact-external-links{margin-top:8px}
	.external-link-btn i{margin-right:8px}
	.copy-link-btn{background-color:#2E8B57;color:#fff !important}
	.copy-link-btn:hover{background-color:#256d47}
	.copy-link-btn.copied{background-color:#28a745}
	.date-info{margin-top:4px}
	.date-info span{display:block;font-size:12px;color:#666}
	.date-row { display: flex; gap: 8px; }
	.date-label { color: #888; min-width: 75px; }
	.date-value { color: #fff; }
` );

jQuery.fn.selText = function() {
    var obj = this[0];
    
        var selection = obj.ownerDocument.defaultView.getSelection();
        var range = obj.ownerDocument.createRange();
        range.selectNodeContents(obj);
        selection.removeAllRanges();
        selection.addRange(range);
   
    return this;
}

$(document).ready(function(){

	// External Links Feature for Contact Pages
	function addContactExternalLinks(){
		if(!window.location.href.match(/\/contacts\/\d+/)) return;
		
		$('.contacts_edit_contact-info__personal-info').each(function(){
			var $block = $(this);
			if($block.hasClass('external-links-processed')) return;
			$block.addClass('external-links-processed');
			
			var $emailEl = $block.find('.record-email-text a');
			if($emailEl.length === 0) return;
			
			var email = $emailEl.text().trim().toLowerCase();
			
			var $linksDiv = $('<div id="contact-external-links"></div>');
			$linksDiv.append('<a class="external-link-btn tc-link-btn" href="https://thrivecart.com/livewellandfully/#/orders?searchCust='+email+'" target="_blank"><i class="ac-icon ac-icon-cart"></i> ThriveCart</a>');
			$linksDiv.append('<a class="external-link-btn hw-link-btn" href="https://inbox.helpwise.io/inboxes/206907/mine?search='+email+'" target="_blank"><i class="ac-icon ac-icon-mail"></i> Helpwise</a>');
			
			var $copyBtn = $('<a class="external-link-btn copy-link-btn" href="#">📋 Copy Email</a>');
			$copyBtn.on('click', function(e){
				e.preventDefault();
				navigator.clipboard.writeText(email).then(function(){
					$copyBtn.addClass('copied').text('✓ Copied!');
					setTimeout(function(){ 
						$copyBtn.removeClass('copied').text('📋 Copy Email'); 
					}, 1500);
				});
			});
			$linksDiv.append($copyBtn);
			
			$block.append($linksDiv);
		});
	}

	// Contact page date info (Registered + Bought + Time to buy)
	var lastFetchedEmail = '';
	
	function loadContactDateInfo(){
		var $emailEl = $('.record-email-text a');
		var $linksDiv = $('#contact-external-links');
		
		if($emailEl.length === 0 || $linksDiv.length === 0){
			setTimeout(loadContactDateInfo, 500);
			return;
		}
		
		var email = $emailEl.text().trim();
		if(!email){
			setTimeout(loadContactDateInfo, 500);
			return;
		}
		
		if(email === lastFetchedEmail) return;
		
		$(document).arrive('.phone.is-atomic', function(){
			var $phone = $(this);
			var $dateInfo = $('.date-info');
			if($dateInfo.length && $phone.length){
				$phone.after($dateInfo);
				$phone.after($('#contact-external-links'));
			}
		});
		
		// Remove old date-info if exists
		$('.date-info').remove();
		
		lastFetchedEmail = email;
		
		$.ajax({
			cache: false,
			dataType: 'json',
			url: 'https://members.livewellandfully.com/sud/acLookup.php?mode=dates&email=' + encodeURIComponent(email),
			success: function(d){
				if(d.success){
					var html = '<div class="date-info">';
					
					if(d.cdate) html += '<div class="date-row"><span class="date-label">Registered:</span><span class="date-value">'+d.cdate+'</span></div>';
					
					if(d.boughtDate){
						html += '<div class="date-row"><span class="date-label">Bought:</span><span class="date-value">'+d.boughtDate+'</span></div>';
					} else {
						html += '<div class="date-row"><span class="date-label">Bought:</span><span class="date-value">Tomorrow?</span></div>';
					}
					
					if(d.cdateRaw && d.boughtDateRaw){
						var regDate = new Date(d.cdateRaw);
						var buyDate = new Date(d.boughtDateRaw);
						var diffMs = buyDate - regDate;
						var diffDays = Math.max(0, Math.floor(diffMs / (1000 * 60 * 60 * 24)));
						
						var years = Math.floor(diffDays / 365);
						var months = Math.floor((diffDays % 365) / 30);
						var days = diffDays % 30;
						
						var timeBetween = '';
						if(years > 0) timeBetween += years + 'y ';
						if(months > 0) timeBetween += months + 'mo ';
						if(days > 0 || timeBetween === '') timeBetween += days + 'd';
						
						html += '<div class="date-row"><span class="date-label">Time to buy:</span><span class="date-value">'+timeBetween.trim()+'</span></div>';
					} else {
						html += '<div class="date-row"><span class="date-label">Time to buy:</span><span class="date-value">N/A</span></div>';
					}
					
					html += '</div>';
					$linksDiv.before(html);
				}
			}
		});
	}
	addContactExternalLinks();
	loadContactDateInfo();
	
	$(document).arrive('.contacts_edit_contact-info__personal-info', function(){
		loadContactDateInfo();
	});

	setInterval(function(){
		if($('.location.text-size-default').length > 0 && $('.location.text-size-default').siblings('.date-info').length === 0){
			loadContactDateInfo();
		}
	}, 1000);

	$(document).arrive('.contacts_edit_contact-info__personal-info', function(){
		addContactExternalLinks();
	});

	setInterval(function(){
		if($('.contacts_edit_contact-info__personal-info:not(.external-links-processed)').length > 0){
			addContactExternalLinks();
		}
	}, 1000);

	$(document).arrive('#searchDets',function(){
	
		if($('#page_header').find('#searchDets').length)$('#page_header').css('margin-bottom','12em');
	});
	if(window.location.href.indexOf('series')>-1){
	
		console.log('automations');
		TitleManager.setTitle($('#name_span').text(), TitleManager.priorities.SERIES);
		$(document).arrive('#name_span',function(){
		
			console.log('automation title loaded');
			TitleManager.setTitle($(this).text(), TitleManager.priorities.SERIES);
		});
	}
	if(window.location.href.indexOf('campaign/editor')>-1){
	
		console.log('editor');
		
		var tit=$('.campaign').text().substring(6);
		if($('.series').length>0)tit+=" | "+$('.series').text().substring(11);
		TitleManager.setTitle(tit, TitleManager.priorities.EDITOR);
		
		$(document).arrive('.campaign',function(){
		
			console.log('campaign title loaded');
			
			var tit=$('.campaign').text().substring(6);
			if($('.series').length>0)tit+=" | "+$('.series').text().substring(11);
			TitleManager.setTitle(tit, TitleManager.priorities.EDITOR);
		});
	}

	if(window.location.href.indexOf('contacts')>-1&&window.location.href.indexOf('segmentid')==-1){
	
		console.log('contacts');
		$(document).arrive('[data-testid="contacts-page-header"] li:nth-child(2)',function(){
		
			console.log('contacts title loaded');
			TitleManager.setTitle($(this).text(), TitleManager.priorities.CONTACTS);
		});
	}
	$(document).arrive('a[data-dropdown-value="# aa  SAFE in place of enter all automations"]',function(){
	
		$(this)[0].click();
	});
	$('[data-testid="tags-table"] [data-testid="tag-name"]').each(function(){
	
		if(!$(this).hasClass('idd')){
		
			var id="Tag ID: "+$(this).parents('tr').find('[data-testid*="tag-automations"]').attr('data-testid').split("-").pop();
			$(this).parents('tr').attr('title',id);
			$(this).addClass('idd');
		}
	});
	$(document).arrive('[data-testid="tags-table"] [data-testid="tag-name"]', function(){
	
		if(!$(this).hasClass('idd')){
		
			var id="Tag ID: "+$(this).parents('tr').find('[data-testid*="tag-automations"]').attr('data-testid').split("-").pop();
			$(this).parents('tr').attr('title',id);
			$(this).addClass('idd');
		}
	});
	
	if(window.location.href.indexOf('/series/')>-1){
	
		$(document).arrive('.active.all',function(){
		
			$('.active.all').parent().find('li').first().next().find('a')[0].click();
		});
	}
	$(document).on('keyup','input[placeholder="Enter new search name here"]',function(){
	
		var nam=$(this).val();
		$.ajax({type:'POST',crossDomain:true,cache:false,dataType:'json',url:"https://fitaf570.com/sud/grabSearch.php",data:{type:'nam',nam:nam,seg:new URLSearchParams(window.location.search).get('segmentid')}});
	});
	wins=[];
	if($('#formModal.add-list').length){
	
		console.log('adding warning');
		$('#formModal.add-list .modal-footer').prepend('<a id="listWarning" href="https://www.wrike.com/open.htm?id=839860076" target="_blank">Barbara - remember to follow the process so you don\'t break unsubscribe.</a>');
	}
	$(document).arrive('.components_segments_saved-searches-modal .ac_lists>table',function(){console.log('found saved search table');$(this).css('max-width','100%');});
	$(document).arrive(".modal-wrap",function(){
	
		// console.log('found saved search list');
		if(!$('.modal-wrap').hasClass('openers')){
		
			if($(this).find('.modal-title').first().text()!='Your saved searches')return false;
			
			$('#openSavedSearches').remove();
			$('#selectAll').remove();
			$('.modal-body').prepend("<div id='btns'></div>");
			$('#btns').append('<camp-button id="openSavedSearches"><span class="create">Open All</span></camp-button>');
			$('#btns').append('<camp-button id="openSavedSearchesMatches" data-matches="1"><span class="create">Open Matches</span></camp-button>');
			$('#btns').append('<camp-button id="openSavedSearchesMatchesHide" data-matches="1" data-hide="1"><span class="create">Open Matches &amp; Hide</span></camp-button>');
			$('#btns').append('<camp-button id="openSavedSearchesHide" data-hide="1"><span class="create">Open All &amp; Hide</span></camp-button>');
			$('#btns').append("<select id='catSelector' style='height:38px;font-size:16px;padding:5px'><option value='nono'>Select a type</option>");
			$('#btns').append('<camp-button id="hideSavedSearches" data-type="0"><span class="create" style="background-color:#f00">Hide Selected</span></camp-button>');
			$.ajax({
			
				type:'POST',crossDomain:true,cache:false,dataType:'json',url:"https://fitaf570.com/sud/grabSearch.php",data:{type:'checkNew'},
				success:function(d){
				
					var cats=[];
					var embers={};
					$('.modal-wrap tr').each(function(i){
					
						if(i>0){
						
							embers[$(this).find('a').first().text()]=$(this).find('span').last().attr('id').substring(5);
							$(this).remove();
						}
					});
					
					var vals=Object.values(d.searches);
					var keys=Object.keys(d.searches);
					$.each(keys,function(i,v){
					
							var cat=keys[i].split('-')[0].trim();
							if(keys[i] in embers)var nextIns='<tr><td class="text_left"><input type="checkbox" class="selector" style="margin-right:10px;width:17px;height:17px;float:left" data-id="'+vals[i]+'" data-cat="'+cat+'"><a class="missing" data-id="'+vals[i]+'" href="#">'+keys[i]+'</a></td><td><button class="ac_button fright xsmall" data-ember-action="" data-ember-action-'+(embers[keys[i]]-1.0)+'="'+(embers[keys[i]]-1.0)+'"><span id="ember'+embers[keys[i]]+'" class="icon left ember-view"><svg style=""><use xlink:href="#circle-x" fill="" class="icon-circle-x"></use></svg></span> Delete</button></td></tr>';
							else var nextIns='<tr style="background-color:#ccc"><td class="text_left"><input type="checkbox" class="selector" style="margin-right:10px;width:17px;height:17px;float:left" data-id="'+vals[i]+'" data-cat="'+cat+'"><a class="missing" data-id="'+vals[i]+'" href="#">'+keys[i]+'</a></td><td>&nbsp;</button></td></tr>';
							$('.modal-wrap tbody').append(nextIns);
						
						if(!isNaN(cat)&&$.inArray(cat,cats)==-1){
						
							cats.push(cat);
							$('#catSelector').append('<option value="'+cat+'">'+cat+' ('+d.meta[cat]+')</option>');
						}
					});
					$('.components_segments_saved-searches-modal .ac_lists>table tr:not(.renamable)').each(function(){
					
						$(this).append("<td><a class='renameSS'>Rename</a></td>");
						$(this).addClass('renamable');
					});
					if($('#renameSS').length==0){
					
						$('.modal-wrap').append("<input id='renameSS' style='width:600px;position:absolute;display:none'>");
						$('.modal-wrap').append("<input id='renameName' type='hidden'>");
						$('.modal-wrap').append("<input id='renameID' type='hidden'>");
					}
				}
			});
			$('.modal-wrap').addClass('openers');
		}
	});
	
	$(document).on('click','.renameSS',function(e){
	
		$('#renameSS').val($(this).parents('tr').find('td').first().text());
		$('#renameName').val($(this).parents('tr').find('td').first().text());
		$('#renameID').val($(this).parents('tr').find('td').first().find('a').attr('data-id'));
		$('#renameSS').css({top:e.pageY,left:e.pageX,display:'block'});
		$('#renameSS').focus().select();
		$(this).parents('tr').addClass('thisRename');
	});
	
	$(document).on('blur','#renameSS',function(e){
	
		var dat={};
		dat.type='rename';
		dat.nam=$('#renameName').val();
		dat.id=$('#renameID').val();
		dat.newName=$(this).val();
		$.ajax({type:'POST',crossDomain:true,cache:false,dataType:'json',url:'https://fitaf570.com/sud/grabSearch.php',data:dat,success:function(){
		
			$('#renameSS').hide();
			$('#renameName').val('');
			$('#renameID').val('');
			$('.thisRename').find('td').first().find('a').text(dat.newName);
			sortTable($('.components_segments_saved-searches-modal .ac_lists>table'),'asc');
			$('tr').removeClass('thisRename');
		}});
	});
	
	$(document).on('focus','#searchDesc,#searchInvestigate',function(){
	
		$(this).select();
	});
	$(document).on('focus','#searchTitle',function(){
	
		$(this).select();
	});
	$(document).on('blur','#searchDesc,#searchInvestigate',function(){
	
		if($(this).val()==$(this).attr('data-placeholder'))return false;
		
		var dat={};
		dat.seg=seg;
		dat.desc=$(this).val();
		dat.type=$(this).attr('id');
		dat.editor=$('div[data-testid=account-popover-toggle]').find('img').attr('src').split('h=').pop().split('&s').shift();
		var t=$(this);
		$.ajax({type:'POST',crossDomain:true,cache:false,dataType:'json',url:'https://fitaf570.com/sud/grabSearch.php',data:dat,success:function(){
		
			t.attr('data-placeholder',t.val());
		}});
	});
	$(document).on('blur','#searchTitle',function(){
	
		if($(this).val()==$(this).attr('data-placeholder'))return false;
		
		var dat={};
		dat.seg=seg;
		dat.nam=$(this).val();
		dat.type='title';
		dat.editor=$('div[data-testid=account-popover-toggle]').find('img').attr('src').split('h=').pop().split('&s').shift();
		var t=$(this);
		$.ajax({type:'POST',crossDomain:true,cache:false,dataType:'json',url:'https://fitaf570.com/sud/grabSearch.php',data:dat,success:function(){
		
			t.attr('data-placeholder',t.val());
		}});
	});
	
	function sortTable(table, order) {
	var asc   = order === 'asc',
		tbody = table.find('tbody');

	tbody.find('tr').sort(function(a, b) {
		if (asc) {
			return $('td:first', a).text().localeCompare($('td:first', b).text());
		} else {
			return $('td:first', b).text().localeCompare($('td:first', a).text());
		}
	}).appendTo(tbody);
	}
	
	$(document).on('click','.missing',function(){
	
		var url="https://livewellandfully.activehosted.com/app/contacts?limit=100&segmentid="+$(this).attr('data-id');
		window.open(url,"_blank");
	});
	
	$(document).on('change','#catSelector',function(){
	
		if($(this).val()!='nono')$('.modal-body .ac_lists').find('input[type="checkbox"][data-cat="'+$(this).val()+'"]').prop('checked',true);
	});
	
	$(document).on('click','#hideSavedSearches',function(){
	
		var ids=[];
		$('.selector:checked').each(function(){
		
			ids.push($(this).attr('data-id'));
		});
		
		$.ajax({type:'POST',crossDomain:true,cache:false,dataType:'json',url:'https://fitaf570.com/sud/grabSearch.php',data:{type:'hide',ids:ids.join(",")}});
	});
	$("#openSavedSearches").unbind('click');
	
	$(document).on('click','#btns camp-button',function(e){
	
		var btn=$(this);
		e.stopImmediatePropagation();
		var ids=[];
		$('.selector:checked').each(function(){
		
			ids.push($(this).attr('data-id'));
			$(this).prop('checked',false);
		});
		ids.reverse();
		
		$(ids).each(function(k,v){
		
			var url="https://livewellandfully.activehosted.com/app/contacts?limit=100&segmentid="+v;
			if(typeof btn.attr('data-matches')!=typeof undefined){
			
				url+="&matches=1";
				$.ajax({type:'POST',crossDomain:true,cache:false,dataType:'json',url:'https://fitaf570.com/sud/grabSearch.php',data:{type:'matches',id:v,val:null}});
			}
			if(typeof btn.attr('data-hide')!=typeof undefined){
			
				url+="&hide=1";
			}
			wins[k]=window.open(url,"_blank");
		});
		e.preventDefault();
		e.stopPropagation();
		return false;
	});
	
	$(document).on('click','.modal-wrap .ac_lists a',function(e){
	
		e.preventDefault();
		e.stopPropagation()
		e.stopImmediatePropagation();
		var nam=$(this).text();
		var seg=e.target.baseURI;
		$.ajax({type:'POST',crossDomain:true,cache:false,dataType:'json',url:"https://fitaf570.com/sud/grabSearch.php",data:{type:'nam',nam:nam,seg:seg}});
		return false;
	});
	
	var urlParams = new URLSearchParams(window.location.search);
	
	if(typeof urlParams.get('segmentid')!=typeof undefined&&urlParams.get('segmentid')!=null&&urlParams.get('segmentid').length>1){
	
		console.log('found segment');
		seg=urlParams.get('segmentid');
		if(typeof urlParams.get('hide')!=typeof undefined&&urlParams.get('hide')!=null&&urlParams.get('hide').length>0){
		
			console.log('found hide - checking');
			var ids=[];
			var i=0;
			$(document).arrive('table[data-testid=c-table] tbody tr',function(){
			
				var id=$(this).attr('id').split('_').pop();
				ids.push(id);
				if(i==99||i==($('h2[data-testid=contacts-page-header] span').text().replace('(','').replace(')','')-1)){
				
					console.log('sending '+ids);
					$.ajax({type:'POST',crossDomain:true,cache:false,dataType:'json',url:"https://members.livewellandfully.com/sud/checkActivity.php",data:{type:'checkActivity',ids:ids},success:function(d){
					
						$.each(d.ids,function(i,v){
						
							$('#contactrow_'+v).addClass('hideInactive');
						});
					}});
				}
				i++;
			});
			
		}
		
		// Add fallback timeout for saved search AJAX
		setTimeout(function() {
			if (TitleManager.currentPriority < TitleManager.priorities.SAVED_SEARCH) {
				console.log('TitleManager: AJAX timeout reached, allowing lower priority titles');
				TitleManager.currentPriority = TitleManager.priorities.CONTACTS - 1;
			}
		}, 5000);
		
		$.ajax({type:'POST',crossDomain:true,cache:false,dataType:'json',url:"https://fitaf570.com/sud/grabSearch.php",data:{type:'newTit',seg:seg},success:function(d){
		
			d=d.seg;
			$(document).arrive('[data-testid="contacts-page-header"]',function(){
			
				if($('#searchTitle').length==0){
				
					$('<aside id="searchDets"></aside>').insertAfter($(this));
					
					$('<h3 id="searchTitleHeading">'+d.nam+'</h3>').appendTo($('#searchDets'));
					$('<input id="searchTitle" autocomplete="off" data-placeholder="'+d.nam+'" value="'+d.nam+'">').appendTo($('#searchDets'));
					$('#searchTitle').attr('data-lpignore',true);
					
					if(d.desc!=null)var textarea='<textarea id="searchDesc" data-placeholder="'+d.desc+'">'+d.desc+'</textarea>';
					else var textarea='<textarea id="searchDesc" data-placeholder="Add a description explaining how to handle the results of this saved search">Add a description explaining how to handle the results of this saved search</textarea>';
					$(textarea).appendTo($('#searchDets'));
					
					if(d.investigate!=null)var textarea='<textarea id="searchInvestigate" data-placeholder="'+d.investigate+'" title="Log each investigation result here with:\n\nthe date,\nyour initials,\nand a STATUS indicator of:\n\tRESOLVED (in the event of a hole that you plugged in our logic)\n\tAC OUTAGE (in the event you think this was the result of a breakage out of our control)">'+d.investigate+'</textarea>';
					else var textarea='<textarea id="searchInvestigate" data-placeholder="ONLY for FULFILLMENT SEARCHES. Add a description explaining how to investigate breakages which cause results to appear in this search." title="Log each investigation result here with:\n\nthe date,\nyour initials,\nand a STATUS indicator of:\n\tRESOLVED (in the event of a hole that you plugged in our logic)\n\tAC OUTAGE (in the event you think this was the result of a breakage out of our control)">ONLY for FULFILLMENT SEARCHES. Add a description explaining how to investigate breakages which cause results to appear in this search.</textarea>';
					$(textarea).appendTo($('#searchDets'));
					
					var last_up=d.last_updated || "unknown";
					var last_editor=d.last_editor || "unknown";
					if(last_up!="unknown"||last_editor!="unknown")$('<p id="searchMeta">Last Updated: '+last_up+' by '+last_editor+'</p>').appendTo($('#searchDets'));
					
					console.log('outputting saved search name');
					TitleManager.setTitle(d.nam, TitleManager.priorities.SAVED_SEARCH);
				}
			});
			
		}});
		
		$(document).arrive('camp-text',function(){
		
			if($(this).text().indexOf("no contacts that match your search conditions")==-1){
			
					if($('.contactsOpener').length==0){
					
						addResub();
						list=25;
						$('<camp-button class="contacts_index_subheader_add-contact ml10 contactsOpener"><span class="create">Open All</span></camp-button>').insertAfter($('.edit-all'));
						$('<camp-button class="contacts_index_subheader_add-contact ml10 contactsOpener" data-exclude="1"><span class="create">Open Non-Excluded</span></camp-button>').insertAfter($('.edit-all'));
						
						$('#searchDets').parent().next().children().insertAfter($('.contactsOpener').last());
					}
			}
			if($('.contactsOpener').length==0){
			
				$('#contactLists').find('div').first().next().prepend("<div></div>");
				$('#searchDets').parent().next().children().prependTo($('#contactLists').find('div').first().next().find('div').first());
			}
		});
		
		
		$(document).on('click','.contactsOpener',function(){
		
			var exclude=0;
			if($(this).attr('data-exclude')==1)exclude=1
			$('.contacts_index_contact-row').each(function(){
			
				if($(this).hasClass('hideInactive')&&exclude)return true;
				window.open("https://livewellandfully.activehosted.com"+$(this).find('a').first().attr('href'));
			});
		});
	}
	if(typeof urlParams.get('matches')!=typeof undefined&&urlParams.get('matches')!=null&&urlParams.get('matches').length>0){
	
		$(document).arrive('camp-text',function(){
		
			console.log('found camp text'+$(this).text());
			console.log($(this).text().indexOf("no contacts that match your search conditions"));
			if($(this).text().indexOf("no contacts that match your search conditions")>-1)window.close();
		});
	}
	
	
	function addResub(){
	
		var urlParams = new URLSearchParams(window.location.search);
		if(typeof urlParams.get('listid')!=typeof undefined&&urlParams.get('listid')!=null&&urlParams.get('listid').length>0){
		
			console.log('adding resub');
			list=urlParams.get('listid');
			if($('.resubscribe').length==0){
			
				var after='.edit-all';
				if($('.contactsOpener').length)after='.contactsOpener';
				$('<camp-button class="contacts_index_subheader_add-contact ml10 resubscribe" data-exclude="1"><span class="create">Resubscribe Visible</span></camp-button>').insertAfter($(after).last());
			}
		}
		else $('.resubscribe').hide();
	}
	addResub();
	
	$(document).arrive('table[data-testid=c-table] tbody tr',function(){
	
		console.log('row arrived, seeing if we should add resub button');
		addResub();
	});
	
	$(document).on('click','.renamable .ac_button.fright',function(){
	
		console.log('adding del class');
		$(this).parents('tr').addClass('currentDel');
		if($('.notify').length){
		
			$('.notify').insertAfter($(this).parents('tr'));
			$(this).parents('tr').removeClass('currentDel');
		}
	});
	
	$(document).arrive('.notify',function(){
	
		console.log('found delete alert');
		
		setTimeout(()=>{
		
			$('.notify').insertAfter($('.currentDel'));
			$('.currentDel').removeClass('currentDel');
		},500);
	});
	
	$(document).on('click','.resubscribe',function(){
	
		var studs=[];
		$('.contacts_index_contact-row').each(function(){
		
			if($(this).find('td[data-testid="c-table__cell--email"]').find('a').length>0)studs.push($(this).find('td[data-testid="c-table__cell--email"]').find('a').attr('href').split('/').pop());
		});
		
		$.ajax({type:'POST',crossDomain:true,cache:false,dataType:'json',url:"https://members.livewellandfully.com/sud/resubscribe.php",data:{studs:studs,list:list},success:function(d){
		
		}});
	});
});