var deleted_links = '';
var deleted_cats = ''; 
var renamed_cats = ''; 
var renamed_links = ''; 
var catweights='';
var links_modified = false; 

$(function(){  
 $("#sbi").focus();  // focus on search box?
 $("#resetpage").click(resetPage);
 setAJAXTracking();
 setCatsHover();
 setLinksHover();
 setCatsSortable();   
	// our jquery extensions
 $.fn.outerHtml = function() { 
   $this = $(this);
   var h = $this.html();
   var s = $this.wrap("<div></div>").parent().html();
   $this.empty().html(h);
   return s;
 };    
});

 
// Set up tool tips 
 var positionToolTip = function(event){
   var tPosX = event.pageX - 5;
   var tPosY = event.pageY + 20;
   $('div.tooltip').css({top:tPosY, left: tPosX});
 };
 var showToolTip = function(event){
  $('div.tooltip').remove(); 
  $('<div class="tooltip"><h3>'+this.name+'</h3><p>'+ this.title +'</p></div>').appendTo('body');
  positionToolTip(event);
 };
 var hideToolTip = function(){$('div.tooltip').remove();};
// end of tooltips

 
function resetPage(){ 
 if(confirm ("This will restore all links and categories you've deleted. Proceed?")){
  var id = readCookie('userkey'); 
  $.getJSON('', {ajax:'', cmd:'reset_page', id:id, c:Math.random()}, function(json){ 
   if (json && json.success) document.location.reload();
  });
 }	
 return false;
}  
function delete_group(){
 $("#edit_title").submit(); // clear out any others
 $("#add_title").submit(); // clear out any others
 var $cat = $(this).parents('div.link_group');
	var catid = $cat.attr('id').slice(1);  
 deleted_cats += ","+catid;
 $cat.fadeTo('fast', 0.25).slideUp('slow', function(){  
  $(this).remove();
  $('div.cat-column div:empty').remove();
 });  
 //reorganize_cats();
 save_changes();
} 
function setAJAXTracking(){
	 $('#search_form').submit(trackSearch); // records search event -- DOES NOT RECORD SEARCH TEXT for privacy
	 $('a.top-link, a.cat-link').click(trackLinkClick);
		getSearchFields();
}
function trackLinkClick(){  
 var link_id = $(this).parents('li.cat-link, li.top-link').attr('id').slice(1);
	var id = readCookie('userkey');  
 $.getJSON(thisPage(), {ajax:'', cmd:'record_link_click', id:id, link_id:link_id}); 	 
	return true; 
}
function trackSearch(){ // DOES NOT RECORD SEARCH TEXT for privacy - this is just for counting
	var id = readCookie('userkey');  
	var adid = $('#value_adid').attr('value');		
	//alert('Got adid: '+adid);
 $.getJSON('', {ajax:'', cmd:'record_search', id:id, adid:adid}); 	 
	return true; 
}
function getSearchFields(){  
	var id = readCookie('userkey'); 
 var param = queryString('key') 
 $.getJSON('', {ajax:'', cmd:'next_ad', id:id, param:param, c:Math.random()}, function(json){ 
  if (json.success) {
			var ad = json.data; 
	  $('#goog_pubid').attr('value', ad.pub);			
	  $('#goog_channel').attr('value', ad.channel);		 
			$('#value_adid').remove();
			$('<input type="hidden" id="value_adid" value="" />').attr('value', ad.adid).appendTo('body');	
			$('#value_adtype').remove();		
			$('<input type="hidden" id="value_adtype" value="" />').attr('value', ad.type).appendTo('body');	 
		}
 });
} 
function queryString(key){
  var regex = new RegExp("[?&]" + key + "=([^&$]*)", "i");
  var offset = location.search.search(regex);
  if (offset == -1) return null;
  return RegExp.$1;
} 
function thisPage(){return location.href.split("?")[0];} 
function clearForms(){ 
 $("#edit_title").find("form").submit(); // remove all other forms
 $("#edit_link").find("form").submit(); // remove all other forms
 cancel_add_link(); // remove all other forms
}  
function add_link(){ 
 clearForms();
 var $category = $(this).parents("div.link_group");   
 var $greybar = $category.find("h3");  
 var catTitle = $.trim($greybar.find("a.catlink").text());  
 var editForm = '<div id="add_link"><b>Add "'+catTitle+'" Link:</b><br/><form>'+
  '<label for="url">URL:&nbsp;&nbsp;</label><input class="text" name="url" value="" /><br/>'+
  '<label for="desc">Desc:&nbsp;</label><input class="text" name="desc" value="" /><br/>'+
  '<input type="button" value="cancel" class="btn" /> '+
  '<input type="submit" value="save" class="btn" /></form></div>'; 
 var $editorBox = $category.prepend(editForm).find("#add_link");
 $editorBox.css("border-top-color", $greybar.css("border-top-color"));  
 $editorBox.find("form").submit(done_adding_link);  
 //$editorBox[0].blur(cancel_add_link); 
 $editorBox.find("input[@value=cancel]").click(cancel_add_link);  
 $editorBox.find("input[@value=save]").click(done_adding_link); 	
 $greybar.hide();  
 $editorBox.find("input:first").focus(); 
}  
function clicktest(){
	alert('clicks happen!');
}

function cancel_add_link(){ 
	var $editorBox = $("#add_link");
	$editorBox.parents("div.link_group").find("h3").show(); 
	$editorBox.remove(); 
	return false;
}
function done_adding_link(){ 
 var $editorBox = $("#add_link"); 
	var $cat = $editorBox.parents('div.link_group');
 var $greybar = $cat.find("h3"); 
 var catid = $cat.attr("id").slice(1);
// $cat.css('border','5px solid green'); return false;
	var href = $editorBox.find("input[@name=url]").attr("value");
	var title = $editorBox.find("input[@name=desc]").attr("value");	
	var id = readCookie('userkey');  
 // code for submitting link here
 $.getJSON('', {ajax:'',id:id,cmd:'add_user_link',href:href,title:title,catid:catid}, function(response){
		if(response.success){ 
		 var l = response.data;
		 $('#g'+l.catid+' ul.links').prepend(l.linkHTML).end()
			 .find('#c'+l.linkid).hover(onLinkHover, onLinkEndHover);
		}																																																																																															
 });  
 $editorBox.remove();  
 $greybar.show();   
 return false; // for submit to not forward 
} 
function edit_group(){ 
// clearForms();
 var $category = $(this).parents("div.link_group");   
 var $greybar = $category.find("h3");   
 var editForm = '<div id="edit_title"><form onsubmit="return false;"><input name="new" value="'+
  $greybar.find("a.catlink").attr('title') +'" /></form></div>';   
 var $editorBox = $category.prepend(editForm).find("#edit_title"); 
 $editorBox.find("form").submit(done_editing_cat); 
 $editorBox.css("border-top-color", $greybar.css("border-top-color")); 
 $editorBox.find("input[@name=new]").blur(done_editing_cat).focus();  
 $greybar.hide();  
}  
function done_editing_cat(){ // entering from cat_group   
 var $form = $("#edit_title"); 
 var $greybar = $form.parent().find("h3"); 
 var oldTitle = $.trim($greybar.find("a.catlink").text());
 var newTitle = $.trim($form.find("input:first").attr("value"));  
 if ((newTitle.length>0) && (newTitle != oldTitle)){  
  $greybar.find("a.catlink").text(newTitle).attr('title', newTitle); 
  var catid = $greybar.parents('div.link_group').attr("id").slice(1);
		// must encode bars and equalsto keep this from breaking
  //newTitle.replace(/|/, '&bar;'); newTitle.replace(/=/, '&eq;'); // 
  renamed_cats += '|'+catid+"="+newTitle;
  save_changes();  
 } 
 $form.remove();  
 $greybar.show();   
//	alert ("got here");
 return false; // for submit to not forward
}  
function delete_link(){  
 $item = $(this).parents('li');  
 var linkId = $item.attr('id').slice(1); 
 deleted_links += ','+linkId;
 $("li#c"+linkId+", li#t"+linkId).addClass("deleted") 
  .fadeTo('fast', 0.25).hide('slow', function(){$("li.deleted").remove();});  
 save_changes();
}  
function edit_link(){   
 clearForms();
 var $item = $(this).parents("li.cat-link");
 var $category = $item.parents("div.link_group");    
 var $link = $item.find("a.cat-link");   
 var editForm = '<div id="edit_link"><form><input name="desc" value="'+
  $link.text() +'" /></form></div>';   
 var $editorBox = $item.prepend(editForm).find("#edit_link");
 $editorBox.find("form").submit(done_editing_link);  
 $editorBox.find("input[@name=desc]").blur(done_editing_link).focus();  
 $link.hide();  
}  
function done_editing_link(){ 
 var $item = $(this).parents("li.cat-link");
 var $category = $item.parents("div.link_group");    
 var $link = $item.find("a.cat-link"); 
 var $editorBox = $category.find("#edit_link");
 var oldDesc = $.trim($link.text());
 var newDesc = $.trim($editorBox.find("input[@name=desc]").attr("value"));
 if ((newDesc.length>0) && (newDesc != oldDesc)){
  var linkid = $item.attr("id").slice(1);  
  $link.text(newDesc).attr('title', newDesc);  
		$('#t'+linkid+' a.top-link').text(newDesc).attr('title', newDesc);
				// must encode bars and equalsto keep this from breaking
	  //	newDesc.replace(/|/, '&bar;'); newDesc.replace(/=/, '&eq;'); // 
  renamed_links += '|'+ linkid+"="+newDesc;
  save_changes();  
 } 
 $editorBox.remove();  
 $link.show();   
 return false; // for submit to not forward 
} 
function reorganize_cats(){ 
 catweights=''; // gather new cat order to re-weight
 $('div.link_group').each(function(i){ catweights += ','+this.id.slice(1);	}); 
 save_changes(); 
	return; 
}  
function save_changes(){  
 links_modified = true;
  var id = readCookie('userkey');  
		var url = "?ajax&id="+id+"&cmd=save_homepage_changes";
			if (renamed_cats.length>0) url += "&renamed_cats="+renamed_cats;
			if (deleted_cats.length>0) url += "&deleted_cats="+deleted_cats;		
			if (renamed_links.length>0) url += "&renamed_links="+renamed_links;		
			if (deleted_links.length>0) url += "&deleted_links="+deleted_links;
			if (catweights.length>0) url += "&cat_weights="+catweights;		 
	 $.getJSON(url, function(response){ if (response.success){
				renamed_cats=''; deleted_cats=''; renamed_links=''; deleted_links=''; links_modified=false; catweights='';
	 }}); 
}  
function occurances(str, needle){
 //alert("Looking for '"+needle+"' in '"+str+"'");
 str = str.toLowerCase();
 var count = 0;
 var pos = str.indexOf(needle);
 while ( pos != -1 ) {count++; pos = str.indexOf(needle, pos+1); }
 return count;
}  
 
 // edit & delete controls for all links
function setLinksHover(){$('li.cat-link').hover(onLinkHover, onLinkEndHover);}  
function onLinkHover(){
	var link = '<div class="controls"><a class="edit" name="Edit Link" title="Click here to rename this link\'s title."></a><a class="delete" name="Delete Link" title="Click here to delete this link permanently."></a></div>';
	$(this).append(link)
		.find('a.delete').mouseup(delete_link)
				.hover(showToolTip,hideToolTip).mousemove(positionToolTip).end()
		.find('a.edit').mouseup(edit_link) 
				.hover(showToolTip,hideToolTip).mousemove(positionToolTip).end()
		.addClass('mouseover');  
	var linkid = $(this).attr("id").slice(1);
	$('#t'+linkid+' a.top-link').addClass('mouseover');	
}
function onLinkEndHover(){
	$(this).children('div.controls').remove().end()
  .removeClass('mouseover'); 
	var linkid = $(this).attr("id").slice(1);		
	$('#t'+linkid+' a.top-link').removeClass('mouseover');			
}  
function setCatsHover(){ // delete and more controls for groups  
 $('.link_group h3').hover(
   function(){ $(this)
					.append('<div class="controls"><a class="edit" title="Edit Category Title"></a>'
							+'<a class="add" title="Add Link to Category"></a><a class="delete" title="Delete Category"></a></div>')
					.find('a.delete').mouseup(delete_group).end() 
					.find('a.add').click(add_link).end() 
					.find('a.edit').click(edit_group).end() 
					.find('a.catlink').text($(this).find('a.catlink').attr('title').substring(0,22));
   },
   function(){$(this)
			  .find('div.controls').remove().end() 
					.find('a.catlink').text($(this).find('a.catlink').attr('title').substring(0,28));
			} 
 );  
}   
function setCatsSortable(){
 $('div.cat-column').Sortable({
   accept: 'link_group',
   helperclass: 'sortHelper',
   activeclass:  'sortableactive',
   hoverclass:  'sortablehover',
   handle: "h3:not(a)",
   tolerance: 'pointer',
   onChange: function(ser){reorganize_cats();},
   onStart: function() {$.iAutoscroller.start(this, document.getElementsByTagName('body')); },
   onStop: function() {$.iAutoscroller.stop();}
 }); 
}  
function readCookie(cookieName) {
 var theCookie=""+document.cookie;
 var ind=theCookie.indexOf(cookieName);
 if (ind==-1 || cookieName=="") return ""; 
 var ind1=theCookie.indexOf(';',ind);
 if (ind1==-1) ind1=theCookie.length; 
 return unescape(theCookie.substring(ind+cookieName.length+1,ind1));
} 


 
 