$(document).ready(function() {
	$('#username').focus();	

	$('#create_new_acct_btn').click(function(){
		$('#new_user_form').slideToggle();
	});

	$('#create_subcat_btn').live('click',function() {
		$('#new_subcat').slideToggle('fast');
		document.forms.new_subcat_form.reset();
		$('#new_category').focus();
	});
	
	$('#new_subcat_cancel').live('click',function() {
		$('#new_subcat').slideToggle('fast');
		document.forms.new_subcat_form.reset();
	});
	
	$('#cat_settings_btn').live('click',function() {
		$('#cathead_rss').slideToggle('fast');
		document.forms.set_rss.reset();
	});
	
	$('#cat_settings_cancel').live('click',function() {
		$('#cathead_rss').slideToggle('fast');
		document.forms.set_rss.reset();
	});
	
	$('#forgot_pw_btn').click(function(){
		$('#reset_pw_form_container').slideToggle('fast');
		document.forms.reset_pw_form.reset();
	});
	
	$('#submit_reset_pw_btn').click(function(){
		document.forms.reset_pw_form.submit();
	});

	$('#cancel_reset_pw_form').click(function(){
		$('#reset_pw_form_container').slideToggle('fast',function() {
			document.forms.reset_pw_form.reset();
		});
	});
	
	$('#edit_link_cancel_btn').live('click',function(){
		$('#bookmark_edit_box').slideUp('fast');
		clearEditForm();
	});
	
	$('#share_link_cancel_btn').live('click',function(){
		$('#sharelink_box').slideUp('fast');
		clearShareForm();
	});
	
	$('.theme_thumb_pic').live('click',function(){
		$('.theme_thumb_pic_selected').removeClass().addClass('theme_thumb_pic');
		$(this).removeClass().addClass('theme_thumb_pic_selected');
		$('#content_region').css('background-color', '');
		$('body').css('background-color', '');
		$('body').css('background-image', '');
		$('body').css('background-repeat', '');
		$('body').css('background-size', '');
		$('#content_region').css('border-color', '');
		$('#theme_name').val($(this).attr('data-ryebox-theme'));
		$('#theme_css').attr('href', 'themes/'+$(this).attr('data-ryebox-theme')+'/theme.css');
	});
	
	if (theme_name == 'custom') {
		$('body').css('background-color', ctheme_bgcolor);
		$('body').css('background-image', "url("+ctheme_url_bgimage+")");
		if (ctheme_image_repeat == "stretch") {
			$('body').css('background-repeat', 'no-repeat');
			rescaleBgImage();
		} else {
			$('body').css('background-repeat', ctheme_image_repeat);
			$('body').css('background-size', '');
		}
		$('#content_region').css('background-color', ctheme_content_bgcolor);
		$('#content_region').css('border-color', ctheme_content_border);
		setStyleSheetForCustom();
	}
	
	loadCatList();
	
	$(function(){
		$(window).resize(function(){
			if (ctheme_image_repeat == "stretch") {
				rescaleBgImage();
			}
		});
	});
	
});

gFrameMoveSpeed = 25;
gLeftStopPos = -500;
gTimeoutSpeed = 25;

function rescaleBgImage() {
	bgsize = $(window).width() + "px " + $(window).height() + "px"
	$('body').css('background-size', bgsize);
}

function showLinks() {
	if (gPrefAnimate) {
		theLeft = parseInt($('#slide_window').css('left'));
		moveObjectById ("slide_window",0,((gLeftStopPos-theLeft)/8));
		if (theLeft > (gLeftStopPos+7)) {
			setTimeout("showLinks(),"+gTimeoutSpeed);
		} else {
			$('#slide_window').css('left', gLeftStopPos + "px");
		}		
	} else {
		$('#slide_window').css('left', gLeftStopPos + "px");
	}
}

function closeLinks() {
	loadCatList();
	if (gPrefAnimate) {
		theLeft = parseInt($('#slide_window').css('left'));
		if (theLeft == -500) {
			theLeft = -497;
		}
		moveObjectById ("slide_window",0,(((gLeftStopPos-theLeft)/8)*-1)+1);
		if (theLeft < 0) {
			setTimeout("closeLinks(),25");
		} else {
			$('#slide_window').css('left', "0px");
			clearLinkPanel();
		}
	} else {
		$('#slide_window').css('left', "0px");
		clearLinkPanel();
	}
}

function moveObjectById (theObid, updown, leftright) {
	if (updown) {
		// moving up/down
		currTop = parseInt($('#'+theObid).css('top'));
		newTop = currTop + updown;
		$('#'+theObid).css('top', newTop + "px");
	}

	if (leftright) {
		// moving left/right
		currLeft = parseInt($('#'+theObid).css('left'));
		newLeft = currLeft + leftright;
		$('#'+theObid).css('left', newLeft + "px");
	}
}

function showNewCatForm() {
	var sortByOptList = "";
	optList = new Array ('no_order|None', 'my_order|My sorting order', 'name_asc|Alphabetically, A-Z', 'name_des|Alphabetically reversed, Z-A', 'date_asc|Oldest to newest', 'date_des|Newest to oldest');
	for (x in optList) {
		element = optList[x].split('|');
		sortByOptList += "<option value=\""+element[0]+"\">"+element[1]+"</option>";
	}
	$('#links').html("<div class=\"box_content\" style=\"width:450px;\"><form id=\"addnewcat\" action=\"addnewcat.php\" method=\"post\"><div class=\"link_header\">Name your new category:</div><input style=\"font-size:18px;width:97%;margin-top:10px;margin-bottom:10px;color:green;padding:3px;\" type=\"text\" name=\"new_category\" id=\"new_category\" value=\"\" /><a href=\"#\" id=\"newcat_adv_opt_link\" onclick=\"$(\'#newcat_adv_opt_box\').slideToggle();\">Category settings</a><div style=\"border:1px gray dotted;width:95%;height:auto;display:none;margin-bottom:10px;padding:10px;\" id=\"newcat_adv_opt_box\"><input type=\"checkbox\" id=\"rss_live\" name=\"rss_live\" $rssChecked><label class=\"cb_label\" for=\"rss_live\" >Make this category available as a public RSS feed.</label><br /><input type=\"checkbox\" id=\"is_public\" name=\"is_public\" $is_publicChecked><label class=\"cb_label\" for=\"is_public\" >Make this category available as a public page.</label><div style=\"margin-top:10px;margin-bottom:5px;\">Sort category by: <select style=\"font-size:10px;\" id=\"category_sort_by\" name=\"category_sort_by\">"+sortByOptList+"</select></div></div><div style=\"margin-top:10px;\"><a class=\"st_button\" href=\"#\" onclick=\"document.forms.addnewcat.submit();\">add it</a></form></div>");
	$('#links').css('overflow', "visible");
	showLinks();
	$('#new_category').focus();
}

function showSearchForm() {
	$('#links').html("<div class=\"box_content\" style=\"width:450px;\"><form id=\"search_form\" action=\"javascript:doSearch();\" method=\"post\"><div class=\"link_header\">Search:</div><input style=\"font-size:18px;width:97%;margin-top:10px;margin-bottom:15px;color:green;padding:3px;\" type=\"text\" id=\"search_terms\" name=\"search_terms\" value=\"\" /><br /><!-- <input type=\"checkbox\" id=\"restrict_to_keywords\"><label class=\"cb_label\" for=\"restrict_to_keywords\">Only search keywords</label> --><div><a class=\"st_button\" href=\"#\" onclick=\"document.forms.search_form.submit();\">search</a></form></div><!-- <div id=\"search_results\">&nbsp;</div> -->");
	$('#links').css('overflow', "visible");
	showLinks();
	$('#search_terms').focus();
}

function showTrashCan() {
	clearLinkPanel();
	showLinks();
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=showtrash&thecode=0&thename='nil'",
		success: function(msg) {
            $('#links').empty().html(msg);
		}
	});
}

function loadLinks(thecode) {
	$('#links').css('overflow', "auto");
	clearLinkPanel();
	showLinks();
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=showcat&thecode=" + thecode + "&thename='nil'",
		success: function(msg) {
            $('#links').empty().html(msg);
		}
	});
}

function loadSubcatLinks(thecode,containerid) {
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=showsubcatlinks&thecode=" + thecode + "&thename=" + containerid,
		success: function(msg) {
            $('#'+containerid).empty().html(msg);
		}
	});
}

function toggleVis (elementName) {
	$('#' + elementName).slideToggle('fast');
}

function pwCheck(theForm) {
	if ( $('#newreg_password').val() != $('#newreg_repassword').val() ) {
		setAlertText('Registration has failed.','The password you entered does not match the retyped password. Please enter them again.');
		$('#newreg_password').focus();
	} else {
		theForm.submit();
	}
}

function showDeleteCatConfirm(categoryNum) {
	if(confirm("Are you sure you want to delete this category? All bookmarks in the category will be moved to the trash. This cannot be undone. Click OK if you really want to delete this category.")) {
		window.location="deletecat.php?category_id=" + categoryNum;
	}
}

function showDeleteSubcatConfirm(categoryNum) {
	if(confirm(categoryNum + "Are you sure you want to delete this subcategory? All bookmarks in the subcategory will be moved to the trash. This cannot be undone. Click OK if you really want to delete this subcategory.")) {
		$.ajax({
			url: "deletecat.php",
			data: "category_id=" + categoryNum + "&reload_site=no_reload",
			success: function(msg) {
				refreshCategoryView(msg);
			}
		});
	}
}

function showTrashBookmarkConfirm(bookmarkId) {
	if(confirm("Are you sure you want to move this bookmark the trash?")) {
		$.ajax({
			url: "trashbookmark.php",
			data: "bookmark_id=" + bookmarkId,
			success: function(msg) {
				if (msg) {
					$('#link_id_'+bookmarkId).hide();
				} else {
					alert ("The bookmark could not be moved to the trash due to an unknown error.");
				}
			}
		});
	}
}

function showDeleteBookmarkConfirm(bookmarkId) {
	if(confirm("Are you sure you want to delete this bookmark? This action cannot be undone. Click OK to delete this item permanently.")) {
		$.ajax({
			url: "deletebookmark.php",
			data: "bookmark_id=" + bookmarkId,
			success: function(msg) {
				if (msg) {
					$('#link_id_'+bookmarkId).hide();
				} else {
					alert ("The bookmark could not be deleted due to an unknown error.");
				}
			}
		});
	}
}

function emptyTrash(linkid) {
	if(confirm("Are you sure you want to empty the trash? All bookmarks in the trash will be deleted permanently. This cannot be undone. Click OK if you really want to delete these links forever.")) {
		window.location="emptytrash.php";
	}
}

function editLink(linkid) {
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=editlink&thecode="+linkid+"&thename='nil'",
		success: function(msg) {
            $('#bookmark_edit_box').empty().html(msg);
		}
	});
	$('#bookmark_edit_box').slideDown('fast');
}

function shareLink(linkid) {
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=sharelink&thecode="+linkid+"&thename='nil'",
		success: function(msg) {
            $('#sharelink_box').empty().html(msg);
		}
	});
	$('#sharelink_box').slideDown('fast');
}

function showAcctPrefs() {
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=getprefs&thecode='nil'&thename='nil'",
		success: function(msg) {
            $('#links').empty().html(msg);
		}
	});
	clearLinkPanel();
	showLinks();
}

function clearLinkPanel() {
	$('#links').html("<center><div style=\"margin-top:50px;\"><img src=\"images/progressbar.gif\" border=\"0\"></div></center>");
}

function validateAddWidgetForm() {
	test = validateNewBookmark();
	if (test) {
		// defined in addwidget.php...
		toggleAddButton();
	}
	return test;
}

function validateNewBookmark() {
	if ($('#newurl_category_picker').val() == "nil") {
		alert ("Please select a category.");
		return false;
	}

	if ($('#newurl_new_title').val() == "") {
		alert ("Please enter a title for the bookmark.");
		return false;
	}

	if ($('#newurl_new_bookmark').val() == "") {
		alert ("Please enter a URL for the bookmark.");
		return false;
	}
	return true;
}

function closeWidgetAndGoRB() {
	window.close();
	newWin = window.open('http://ryebox.com/beta5/','newwindow','');
}

function showAll() {
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=showall&thecode='nil'&thename='nil'",
		success: function(msg) {
            $('#links').empty().html(msg);
		}
	});
	clearLinkPanel();
	showLinks();
}

function exportFullList() {
	newWin = window.open('exportLinkList.php','newwindow','');
}

function showLinkstream() {
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=linkstream&thecode='nil'&thename='nil'",
		success: function(msg) {
            $('#links').empty().html(msg);
		}
	});
	clearLinkPanel();
	showLinks();
}

function showRecentBookmarks() {
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=recentbookmarks&thecode='nil'&thename='nil'",
		success: function(msg) {
			$('#links').empty().html(msg);
		}
	});
	clearLinkPanel();
	showLinks();
}

function doSearch() {
	$('#links').css('overflow', "auto");
	searchStr = $('#search_terms').val();
	clearLinkPanel();
	showLinks();
	$.ajax({
		url: "rpc_search.php",
		dataType: "html",
		data: "search="+searchStr,
		success: function(msg) {
            $('#links').empty().html(msg);
		}
	});
}

function fadeInItem(itemId) {
	$('#' + itemId).fadeIn('fast');
}

function fadeOutItem(itemId) {
	$('#' + itemId).fadeOut('fast');
}

function testUrlDuplicate() {
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=testdupurl&thecode="+$('#newurl_new_bookmark').val()+"&thename='nil'",
		success: function(msg) {
            $('#new_blurb').empty().html(msg);
		}
	});
}

function testDupeNick() {
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=testdupnick&thecode="+$('#new_user_nick').val()+"&thename='nil'",
		success: function(msg) {
            $('#new_user_header').empty().html(msg);
		}
	});
}

function testDupeEmail() {
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=testdupemail&thecode="+$('#new_user_email').val()+"&thename='nil'",
		success: function(msg) {
            $('#new_user_header').empty().html(msg);
		}
	});
}

function loadCatList() {
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=loadcatlist&thecode='nil'&thename='nil'",
		success: function(msg) {
            $('#cat_list').empty().html(msg);
		}
	});
}

function renameMainCat(catid) {
	$('#main_cat_name').text($('#rename_text').val());
	newcatname = encodeURI($('#rename_text').val());
	newcatname = newcatname.replace("&","%26");
	$.ajax({
		url: "renamecat.php",
		data: "rename_text="+newcatname+"&category_id="+catid
	});
	toggleVis('cathead_static');
	toggleVis('cathead_rename');
}

function renameSubCat(catid) {
	$('#subcat_display_name_'+catid).html($('#rename_text_'+catid).val());
	newcatname = $('#rename_text_'+catid).val();
	$.ajax({
		url: "renamecat.php",
		data: "rename_text="+newcatname+"&category_id="+catid
	});
	toggleVis('cathead_rename_'+catid);
	toggleVis('cathead_static_'+catid);
	toggleVis('subcat_link_header_'+catid);
}

function shareLinkNow() {
	// model on saveLinkEdit() below
	titleEsc = escape($('#sharels_title').val());
	$.ajax({
		async: false,
		url: "submitlinkls.php",
		data: "title="+titleEsc+"&url="+$('#sharels_url').val()+"&keywords="+$('#sharels_keywords').val()+"&description="+$('#sharels_description').val()+
"&created_date="+$('#sharels_created_date').val()+"&id="+$('#sharels_id').val()
	});
	$('#bookmark_edit_box').slideUp();
	clearShareForm();
}

function saveLinkEdit() {
	//in_favorites = ($('#in_favorites:checkbox:checked').val());
	//in_linkstream = ($('#in_linkstream:checkbox:checked').val());
	//
	// jquery returns undefined on these so access the old way
	in_linkstream = document.getElementById('in_linkstream').checked;
	in_favorites = document.getElementById('in_favorites').checked;
	
	newTitleEsc = escape($('#new_title').val());

	$.ajax({
		async: false,
		url: "savelinkedit.php",
		data: "new_title="+newTitleEsc+"&new_url="+$('#new_url').val()
			+"&in_favorites="+in_favorites+"&in_linkstream="+in_linkstream
			+"&category_picker="+$('#category_picker').val()+"&new_keywords="+$('#new_keywords').val()
			+"&id="+$('#id').val()
	});
	$('#bookmark_edit_box').slideUp();

	// if the original category is different that its new category, then
	// that means the bookmark was moved so make it disappear otherwise,
	// refresh the info for the existing link
	if ( ($('#original_category').val() != $('#category_picker').val()) &&
		 ($('#original_category').val() != 0) ) {
		$('#link_id_'+$('#id').val()).hide();
		// check if the new category is the current main cat
		// or if it's a visible category (link_id_## will exist)
		// and reload that category so new link shows up
	} else {
		refreshLinkEntry($('#id').val());
	}
	clearEditForm();
}

function refreshLinkEntry(linkid) {
	$.ajax({
		url: "refreshlink.php",
		dataType: "html",
		data: "linkid=" + linkid,
		success: function(msg) {
			$('#link_id_'+linkid).html(msg);
		}
	});
}

function addNewSubcat(catid) {
	$.ajax({
		url: "addnewcat.php",
		data: "new_category="+$('#new_category').val()+"&subcatof="+catid+"&reload_site=no_reload",
		success: function(msg) {
            refreshCategoryView(catid);
		}
	});
}

function refreshCategoryView(catid) {
	$.ajax({
		url: "rpc.php",
		dataType: "html",
		data: "action=showcat&thecode=" + catid + "&thename='nil'",
		success: function(msg) {
            $('#links').empty().html(msg);
		}
	});
}

function clearEditForm() {
	$('#savelinkedit :input').not(':button, :submit, :reset, :hidden, :checkbox').each(function(){
		this.value = "";
	});
}

function clearShareForm() {
	$('#sharelink :input').not(':button, :submit, :reset, :hidden, :checkbox').each(function(){
		this.value = "";
	});
}


function setStyleSheetForCustom () {
	// make a new stylesheet
	var ns = document.createElement('style');
	document.getElementsByTagName('head')[0].appendChild(ns);
	
	if (!window.createPopup) {
	   ns.appendChild(document.createTextNode(''));
	}
	var s = document.styleSheets[document.styleSheets.length - 1];
	//$('.catrow a:link').css('background-color', ctheme_catrow_normal);
	//$('.catrow a:hover').css('background-color', ctheme_catrow_hover);
	//$('.catrow a:active').css('background-color', ctheme_catrow_active);
	//$('.navbar_back a:link').css('background-color', ctheme_catrow_normal);
	//$('.navbar_back a:hover').css('background-color', ctheme_catrow_hover);
	//$('.navbar_back a:active').css('background-color', ctheme_catrow_active);
	
	// some rules to apply
	var rules = {
	   "a.catrow:link" : "{ background-color:"+ctheme_catrow_normal+"; color:"+ctheme_catrow_text+";}",
	   "a.catrow:hover" : "{ background-color:"+ctheme_catrow_hover+"; color:"+ctheme_catrow_text+";}",
	   "a.catrow:active" : "{ background-color:"+ctheme_catrow_active+"; color:"+ctheme_catrow_text+";}",
	   "a.navbar_back:link" : "{ background-color:"+ctheme_catrow_normal+"; color:"+ctheme_catrow_text+";}",
	   "a.navbar_back:hover" : "{ background-color:"+ctheme_catrow_hover+"; color:"+ctheme_catrow_text+";}",
	   "a.navbar_back:active" : "{ background-color:"+ctheme_catrow_active+"; color:"+ctheme_catrow_text+";}"
	}
	
	// loop through and insert
	for (selector in rules) {
	   if (s.insertRule) {
		  // it's an IE browser
		  try { 
			 s.insertRule(selector + rules[selector], s.cssRules.length); 
		  } catch(e) {}
	   } else {
		  // it's a W3C browser
		  try { 
			 s.addRule(selector, rules[selector]); 
		  } catch(e) {}
	   }               
	}
	
}
