// Global variables definitions

// Inline Javascript
preventFrames();
$(document).ready(domReady);
// Menus should be redefined if window is resized
$(window).resize(handleLoginMenu);
$(window).resize(handleLanguageMenu);

// Functions definitions
function preventFrames(){
	if (top.frames.length > 0) {
		try {
			var parentLocation = parent.location.href;
		} catch(err) {}
		if (typeof parentLocation == "undefined") {
			top.location = document.location;
		} else {
			var parentLocationSplitTab = parentLocation.split("/");
			var selfLocationSplitTab = document.location.href.split("/");
			parentLocationSplitTab.length=3;
			selfLocationSplitTab.length=3;
			var parentLocationDomain = parentLocationSplitTab.join("/");
			var selfLocationDomain = selfLocationSplitTab.join("/");
			if (parentLocationDomain != selfLocationDomain) {
				top.location = document.location;
			}
		}
	}
}

function domReady() {
	handleHeaderLogin();
	handleHeaderResetPassword();
	handleLoginMenu();
	handleLanguageMenu();
	handleDatePicker();
	handleTinyMCE();
}

function handleHeaderLogin(){
	var headerLoginDialogOptions = {};
		headerLoginDialogOptions.width = 460;
		headerLoginDialogOptions.modal = true;
		headerLoginDialogOptions.autoOpen = false;
		headerLoginDialogOptions.stack = false;
	$("#headerLogin").dialog(headerLoginDialogOptions);
	$("#headerLoginForm").submit(function() {
		$(this).channelAjaxLogin(function(){
			$("#headerLogin").dialog("close");
			location.reload(true);
		});
		return false;
	});
	$("#loginLink").click(function(){
		$("#headerLogin").dialog("open");
		return false;
	});
}

function handleHeaderResetPassword(){
	var headerResetPasswordDialogOptions = {};
		headerResetPasswordDialogOptions.width = 460;
		headerResetPasswordDialogOptions.modal = true;
		headerResetPasswordDialogOptions.autoOpen = false;
		headerResetPasswordDialogOptions.stack = false;
	$("#headerResetPassword").dialog(headerResetPasswordDialogOptions);
	$("#headerPasswordForgottenForm").submit(function() {
		$(this).channelAjaxCall(function(data) {
			$("#headerResetPassword").dialog("close");
			successPopup($(this));
		});
		return false;
	});
	$("#headerPasswordForgotten").click(function() {
		$("#headerLogin").dialog("close");
		$("#headerPasswordForgottenForm input").val("");
		$("#headerResetPassword").dialog("open");
		return false;
	});
}

function handleLoginMenu(){
	var menuOptions = {};
		menuOptions.content = $("#loginMenuContent").html();
		menuOptions.flyOut = true;
	$("#loginMenu").fgmenu(menuOptions);
}

function handleLanguageMenu() {
	var menuOptions = {};
		menuOptions.content = $("#languageSelectorContent").html();
		menuOptions.flyOut = true;
	$("#languageSelector").fgmenu(menuOptions);
}

function changeLanguage(newLanguage) {
	var currentLocation = document.location.href;
	var anchor = "";
	if (currentLocation.indexOf("#") != -1) {
		anchor = currentLocation.substring(currentLocation.indexOf("#"), currentLocation.length);
		currentLocation = currentLocation.substring(0, currentLocation.indexOf("#"));
	}
	if (currentLocation.indexOf("?")==-1) {
		document.location.href = currentLocation + "?lang=" + newLanguage + anchor;
	} else {
		document.location.href = currentLocation + "&lang=" + newLanguage + anchor;
	}
	return false;
}

function handleDatePicker() {
	var datepickerLocale = pageLocale;
	if (datepickerLocale=="en") {
		datepickerLocale = "en-GB";
	}
	$.datepicker.setDefaults( $.datepicker.regional[datepickerLocale] );
	$(".dateInput input").each(function(){
		var randomId = randomString(16);
		var hiddenInput = $("<input>")
			.attr("type","hidden")
			.attr("id",randomId)
			.attr("name",$(this).attr("name"))
		;
		if ($(this).data("dateYear") && $(this).data("dateYear")!="" && $(this).data("dateMonth") && $(this).data("dateMonth")!="" && $(this).data("dateDay") && $(this).data("dateDay")!="") {
			if (isNaN($(this).data("dateYear")) || isNaN($(this).data("dateYear")) || isNaN($(this).data("dateYear"))) {
				ChannelAjaxToolkit.error("Date elements values are incorrect");
			} else {
				var dateValue = new Date($(this).data("dateYear"),$(this).data("dateMonth")-1,$(this).data("dateDay"));
				var dateToSet = $.datepicker.formatDate( $.datepicker.regional[datepickerLocale].dateFormat, dateValue);
				$(this).val(dateToSet);
				var dateToSetInAlt = $.datepicker.formatDate( "yy-mm-dd", dateValue);
				hiddenInput.val(dateToSetInAlt);
			}
		} else if ($(this).data("dateYear")!="" || $(this).data("dateMonth")!="" || $(this).data("dateDay")!="") {
			ChannelAjaxToolkit.error("Date is partially initialized");
		}
		
		$(this).after(hiddenInput);
		$(this).datepicker({ "altField": "#"+randomId, "altFormat": "yy-mm-dd" });
		$(this).attr("name",$(this).attr("name")+randomId);
		$(this).change(function(){
			if (!$(this).val()) $("#"+randomId).val("");
		});
	});
}
	
function handleTinyMCE() {
	if ($(".htmlInput textarea").length>0) {
		loadScriptSync("/tiny_mce_3.4.7/jquery.tinymce.js");
	}
	$(".htmlInput textarea").each(function(){
		var tinyMCEOptions = {};
			tinyMCEOptions.theme = "advanced";
			tinyMCEOptions.skin = "o2k7";
			tinyMCEOptions.theme_advanced_buttons2 = "";
			tinyMCEOptions.theme_advanced_buttons3 = "";
			tinyMCEOptions.theme_advanced_buttons4 = "";
			tinyMCEOptions.theme_advanced_toolbar_location = "top";
			tinyMCEOptions.theme_advanced_toolbar_align = "left";
			tinyMCEOptions.width = "520";
			tinyMCEOptions.height = "270";
			tinyMCEOptions.entity_encoding = "raw";
			tinyMCEOptions.content_css = "/css/screen/common/reset.css,/css/screen/common/tinyMCE.css";
			tinyMCEOptions.language=pageLocale;
			tinyMCEOptions.formats = {};
			tinyMCEOptions.formats.bold = {inline : 'strong'};
			tinyMCEOptions.formats.italic = {inline : 'em'};
			tinyMCEOptions.formats.underline = {inline : 'u'};
			
		if ($(this).data("tinymceMode")=="simple") {
			tinyMCEOptions.script_url = "/tiny_mce_3.4.7/tiny_mce.js";
			tinyMCEOptions.valid_elements="br,strong/b,em/i,u";
			tinyMCEOptions.plugins="safari,paste";
			tinyMCEOptions.inline_styles=false;
			tinyMCEOptions.force_br_newlines=true;
			tinyMCEOptions.force_p_newlines=false;
			tinyMCEOptions.forced_root_block="";
			// fix to avoid paste problems
			tinyMCEOptions.paste_preprocess = function(pl, o) {
				var newContent = o.content.replace(/<\/p>/gi,"</p><br><br>");
				o.content = newContent;
			};
			
			tinyMCEOptions.theme_advanced_buttons1="bold,italic,underline";
		} else if ($(this).data("tinymceMode")=="advanced") {
			if ($(this).data("tinymceScriptUrl")) {
				tinyMCEOptions.script_url = $(this).data("tinymceScriptUrl");
			} else {
				tinyMCEOptions.script_url = "/tiny_mce_3.4.7/tiny_mce.js";
			}
			tinyMCEOptions.valid_elements = "@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup]"
				+ ",a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur]"
				+ ",img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align]"
				+ ",#p,-span,br,strong/b,em/i"
				+ ",-ol[type|compact],-ul[type|compact],-li"
				+ ",object[classid|width|height|codebase|*],param[name|value|_value],embed[type|width|height|src|*]"
				+ ",iframe[align<bottom?left?middle?right?top|class|frameborder|height|id"
					+"|longdesc|marginheight|marginwidth|name|scrolling<auto?no?yes|src|style"
					+"|title|width]";
			tinyMCEOptions.theme_advanced_font_sizes= "10px,12px,13px,14px,16px,18px,20px";
			tinyMCEOptions.font_size_style_values = "10px,12px,13px,14px,16px,18px,20px";
			var tinyMCEPlugins = "safari,paste,searchreplace,contextmenu,preview";
			if ($(this).data("tinymceFileManager")) {
				tinyMCEPlugins += ",filemanager";
			}
			if ($(this).data("tinymceImageManager")) {
				tinyMCEPlugins += ",imagemanager";
			}
			tinyMCEOptions.plugins=tinyMCEPlugins;
			tinyMCEOptions.theme_advanced_buttons1="fontsizeselect,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist,|,code";
			tinyMCEOptions.relative_urls=false;
			tinyMCEOptions.convert_urls=false;
		} else {
			alert("Missing or incorrect tiny mce mode");
		}
		$(this).tinymce(tinyMCEOptions);
	});
}
