var okToInit = false;
var tinyReady = true;
var hasTinyEditor = false;
var initDone = 0;
var parentSelector = false;

$(function() {
	// handle page debug box
	$("#debug").oneTime(3000,function() {
		$(this).fadeOut("normal");
	}); 
	
	// handle submenu
	$(".menuitemContainer").mouseover(function() {
		$(this).children('.submenu').stopTime();
		$(this).children('.submenu').slideDown("fast");
	});
	
	$(".menuitemContainer").mouseout(function() {
		$(this).children('.submenu').oneTime(1500, function() {
			$(this).slideUp("fast");
		});
	});
	okToInit = true;
	initLocoCms();
});

function tryInit()
{
	if (!initDone) {
		if (okToInit && tinyReady && !initDone) initLocoCms();
		else {
			setTimeout("tryInit()", 100);
		}
	}	
}

function initLocoCms() {
	if (hasTinyEditor) tinyInit(); 
	initDone++;
	// handle admin menu
	if ($("#documentList").length > 0)  {
		startDocumentSort();
		refreshDocumentList(0,0);
	}
	menuItemListeners();
	$(".menu .active").parents(".submenucontainer").show();
	$(".openAll .submenucontainer").show();
	$(".openAll .openerIcon").attr('src', '/images/icons/minus.png');
	$(".menu .active").parents(".submenucontainer").siblings(".menuitemIcon").children(".openerIcon").attr('src', '/images/icons/minus.png');
	initMenuSort();
	
	// handle rich text collection tab changing
	$(".collectionHeader").click(function() {
		var thisid = $(this).attr("id").replace(/tab_/, "");
		var editorid = $(this).parent().attr("id").replace(/editor_/, "");
		var isPlaintext = $("#"+editorid).hasClass("plaintext");
		var editorcontents = isPlaintext ? $("#"+editorid).val() : tinyMCE.get(editorid).getContent();
		var activeid = $(this).parent().children('.active').attr("id").replace(/tab_/, "");
		$("#"+activeid).val(editorcontents);
		var inserthtml = $("#"+thisid).val();
		if (navigator.userAgent.toLowerCase().indexOf('safari' != -1)) {
			inserthtml = inserthtml.replace(/<span/g, '<font'); // safari doesn't understand many spans in the same tinymce area, might be fixed later
			inserthtml = inserthtml.replace(/<\/span/g, '</font');
		}
		if (isPlaintext) $("#"+editorid).val(inserthtml); 
		else tinyMCE.get(editorid).setContent(inserthtml);
		$(this).parent().children('.collectionHeader').removeClass("active");
		$(this).addClass("active");
	});
	
	// handle language toggling
	$(".langtoggler").click(function() {
		var langcode = $(this).attr("id").replace(/togglelang_/, "");
		var activelang = $(".languages .active").attr("id").replace(/togglelang_/, "");
		$.get("/ajax/togglelang", {togglelang: langcode}, function() {
			$(".langtoggler").removeClass("active");
			$("#togglelang_" + langcode).addClass("active");
			$(".langflag").attr("src", "/images/icons/flags/" + langcode + ".png");
			$(".multilang").each(function() {
				var mlfieldid = $(this).attr("id");
				$("#"+mlfieldid+"_"+activelang).val($("#"+mlfieldid).val()); // move the value from the visible field to the hidden language field
				$("#"+mlfieldid).val($("#"+mlfieldid+"_"+langcode).val());
			});
			$(".multilangrich").each(function() {
				var richid = $(this).attr("id").replace(/rich_/, "");
				var newval = $("#"+richid+"_"+langcode).val() ? $("#"+richid+"_"+langcode).val() : '';
				$("#"+richid+"_"+activelang).val(tinyMCE.get(richid).getContent()); // move the value from the visible field to the hidden language field
				tinyMCE.get(richid).setContent(newval);
			});
			$(".collectionHeader").each(function() {
				if ($(this).hasClass('multilangci') && $(this).hasClass('active')) {
					var thisid = $(this).attr("id").replace(/tab_/, "");
					var editorid = $(this).parent().attr("id").replace(/editor_/, "");
					var isPlaintext = $("#"+editorid).hasClass("plaintext");
					var editorcontents = isPlaintext ? $("#"+editorid).val() : tinyMCE.get(editorid).getContent();
					var activeid = $(this).parent().children('.active').attr("id").replace(/tab_/, "");
					$("#"+activeid+"_"+activelang).val(editorcontents);
					if (isPlaintext) $("#"+editorid).val($("#"+thisid).val()); 
					else tinyMCE.get(editorid).setContent($("#"+thisid).val());
				}
			});
			$(".menulangcontainer, .langfield").addClass("hidden");
			$(".lang_" + langcode).removeClass("hidden");
			if ($("#documentList").length > 0) refreshDocumentList(0,0);
		});
	});
	
	// parent selector listeners 
	$(".parentselector .choicebutton").click(function() {
		var fieldname = $(this).parent().parent().attr("id").replace(/parent_/, "");
		parentSelector = parentSelector == fieldname ? false : fieldname;
		$(this).html(parentSelector ? 'stop' : 'choose');
		if (parentSelector) {
			$(this).addClass("active");
			$(".parentinfo").slideDown("fast");
		}
		else {
			$(this).removeClass("active");
			$(".parentinfo").slideUp("fast");
		}
		menuItemListeners();
	});
	$(".parentselector .removebutton").click(function() {
		var selectorObj = $(this).parent().parent();
		selectorObj.children("input").val(0);
		selectorObj.children(".parentname").html("No parent"); 
	});
	
	// autofill init
	if ($("input.autocomplete").length) {
		$("input.autocomplete").autocomplete({source: "/" + $("input.autocomplete").attr("id") + "/autocomplete", minLength: 2, select: function(event, ui) {
			var baseAddress = window.location.toString();
			baseAddress = baseAddress.split("?");
			var gotoId = ui.item.id;
			var url = baseAddress[0] + "?edit=" + gotoId;
			window.location.href = url;
		}});
	}
}

function sure(url,conftext) {
	if (!conftext) conftext = "Are you sure?";
	if (confirm(conftext)) document.location.href =  url;
}

function checkOkToSave() {
	// clean up all collections
	$(".collection").each(function() {
		var editorid = $(this).attr("id").replace(/editor_/, "");
		var activeid = $(this).children('.active').attr("id").replace(/tab_/, "");
		var isPlaintext = $("#"+editorid).hasClass("plaintext");
		var editorcontents = isPlaintext ? $("#"+editorid).val() : tinyMCE.get(editorid).getContent();
		$("#"+activeid).val(editorcontents);
	});
	document.adminform.submit();
}

function initMenuSort()
{
	if ($(".sortablemenulevel").length > 0) {
		var sortSelector = $(".menu").hasClass("recursive") ? ".menu" : ".sortablemenulevel";
		$(sortSelector).sortable({items: "span", placeholder: "sortPlaceHolder", helper: "clone", update: function(event,ui) {
			var order = "";
			var draggedId = $(ui.item).attr("id").replace(/menuitem_/, "");
			$(ui.item).parent().children("span").each(function() {
				var thisid = $(this).attr("id").replace(/menuitem_/, "");
				order += (order ? "," : "") + thisid;
			});
			//alert(order);
			if ($(".menu").hasClass("recursive")) $.post("/ajax/sort", {tableName: tableName, order: order, draggedId: draggedId, recursive: 1});
			else $.post("/ajax/sort", {tableName: tableName, order: order, draggedId: draggedId});
		}});
	}
}

function refreshMenuSort()
{
	if ($(".sortablemenulevel").length > 0) {
		var sortSelector = $(".menu").hasClass("recursive") ? ".menu" : ".sortablemenulevel";
		$(sortSelector).sortable('refresh');
	}
}

function menuItemListeners()
{
	$(".menuitemIcon").unbind("click");
	$(".menuitemIcon").click(function() {
		if ($(this).hasClass("ajaxOpener")) {
			var clickeditem = $(this);
			if (clickeditem.children(".openerIcon").length > 0) {
				var isalpha = $(this).parent().hasClass("alphabetic") ? 1 : 0; // are we opening a branch of an alphabetized menu
				var branchId = $(this).parent().attr("id").replace(/menuitem_/, "");
				var controller = $(".menu").attr("id") ? $(".menu").attr("id") : 'pages';
				$(this).siblings(".submenucontainer").load("/"+controller+"/menubranch", {branchId: branchId, isalpha: isalpha}, function() {
					clickeditem.siblings(".submenucontainer").slideToggle("fast");
					clickeditem.removeClass("ajaxOpener");
					var openerIcon = clickeditem.children(".openerIcon").attr("src");
					clickeditem.children(".openerIcon").attr("src", openerIcon.indexOf("minus") != -1 ? "/images/icons/plus.png" : "/images/icons/minus.png");
					initMenuSort();
					menuItemListeners();
				});
			}
		}
		else {
			if ($(this).children(".openerIcon").length > 0) {
				$(this).siblings(".submenucontainer").slideToggle("fast");
				var openerIcon = $(this).children(".openerIcon").attr("src");
				$(this).children(".openerIcon").attr("src", openerIcon.indexOf("minus") != -1 ? "/images/icons/plus.png" : "/images/icons/minus.png");
			}
		}
		if (parentSelector) {
			var branchId = $(this).parent().attr("id").replace(/menuitem_/, "");
			var choicelabel = $(this).siblings(".menuitemlabel").children("a").html();
			$("#parent_" + parentSelector).children(".parentname").html(choicelabel);
			$("#parent_" + parentSelector).children("input").val(branchId);
			//alert(branchId);
		}
	});
}



