
	/*
	 * Varibel som håller reda på om popupen kan sparas eller ej.
	 * En flik kan förhindra att en sparning kan göras, tex om en
	 * obligatorisk kategori inte har fått ett kategorival.
	 */
	var ok_to_save_popup = true;


	/*
	 * Kommer att hålla data för alla inputfält etc för att se om
	 * något ändrats och veta om det ska gå att spara eller ej.
	 */
	var popup_tabs_start_data = "";



	/*
	 * Visa en popup-vy med flikar
	 */
	function popup_tabs(popup_view, id, params)
	{

		/*
		 * TODO:
		 *
		 * Här skulle man kunna kolla om params är en array och bygga
		 * upp en url från det istället för att ta det som en sträng bara.
		 *
		 */
		 if(typeof params === "undefined") {
			 params = "";
		 }
		 else {
			 params = "&" + params;
		 }


		//Hämta html
		url = "ajax2/popup_ajax.php?popup_view=" + popup_view + "&id=" + id + params + "&func=LOAD" + "&" + Math.random();
		var request = getHTTPObject();
		request.open("GET", url, true);
		request.onreadystatechange = function ()
		{
			if (request.readyState == 4)
			{
				//Läs in xml-svaret
				var popup = request.responseXML.getElementsByTagName('popup').item(0);
				var popup_title = popup.getElementsByTagName('title').item(0).firstChild.nodeValue;
				var popup_width = popup.getElementsByTagName('width').item(0).firstChild.nodeValue;
				var popup_height = popup.getElementsByTagName('height').item(0).firstChild.nodeValue;
				var popup_javascripts = popup.getElementsByTagName('javascripts').item(0);
				var popup_javascripts_sources = popup_javascripts.getElementsByTagName('item');
				var popup_javascript_load_methods = popup.getElementsByTagName('javascriptloadmethods').item(0);
				var popup_javascript_load_method_names = popup_javascript_load_methods.getElementsByTagName('item');
				var popup_javascript_pre_save_methods = popup.getElementsByTagName('javascriptpresavemethods').item(0);
				var popup_javascript_pre_save_method_names = popup_javascript_pre_save_methods.getElementsByTagName('item');
				var popup_content_container = popup.getElementsByTagName('content').item(0);
				var popup_content_parts = popup_content_container.getElementsByTagName('item');

				//Bygg ihop html popupen
				popup_content = "";
				for(var i=0; i<popup_content_parts.length; i++)
				{
					var part = popup_content_parts.item(i);
					if (part.firstChild != null)
					{
						var part_text = part.firstChild.nodeValue;
						popup_content = popup_content + part_text;
					}
				}

				//Inkludera javascript
				for(var i=0; i<popup_javascripts_sources.length; i++) {
					var js_src = popup_javascripts_sources.item(i).firstChild.nodeValue;
					var script_element = document.createElement("script");
					script_element.type = "text/javascript";
					script_element.src = js_src;
					$("head").append(script_element);
				}

				//Visa popup
				using_tabs = true;
				popup_dialog(popup_title, popup_content, popup_width+"px", popup_height+"px", using_tabs);

				//Kör javascript-metoder för laddade flikar
				for(var i=0; i<popup_javascript_load_method_names.length; i++) {
					var call_method = popup_javascript_load_method_names.item(i).firstChild.nodeValue;
					window[call_method]();
				}



				//Håll reada på hur datan såg ut i inputfält etc då popupen laddades in
				popup_tabs_start_data = get_popup_data();

				//Hämta de element som håller data
				var data_elements = get_popup_data_elements();

				//När ett element har ändrats - kolla om vi kan spara
// 				$(data_elements).change(function() {
				$(data_elements).click(function() {
					enable_or_disable_saving();
				});

				//När det skrivs i ett element - kolla om vi kan spara
				$(data_elements).keyup(function() {
					enable_or_disable_saving();
				});



				//Vad som ska hända då popupen sparas
				$('#save').click(function() {

					//Sparning skall utföras så länge som ingen flik ändrar denna status
					ok_to_save_popup = true;

					//Registrera javascript-metoder som skall köras för flikarna INNAN sparning utförs mot servern
					for(var i=0; i<popup_javascript_pre_save_method_names.length; i++) {
						var call_method = popup_javascript_pre_save_method_names.item(i).firstChild.nodeValue;
						window[call_method]();
					}

					//Utför vanlig sparning
					if(ok_to_save_popup) {
						save_popup_tabs(popup_view, id);
					}

				});

			}
		}
		request.send(null);
	}




	/*
	 * Hämta de element som håller data (kommentarsfliken undantaget)
	 */
	function get_popup_data_elements()
	{
		var all_data_elements = $(".popup_tabs input, .popup_tabs textarea, .popup_tabs select");
		var comment_data_elements = $(".popup_tab_content_comment input, .popup_tab_content_comment textarea, .popup_tab_content_comment select");
		var data_elemtnts = $(all_data_elements).not($(comment_data_elements));
		return data_elemtnts;
	}



	/*
	 * Hämta data från alla inputfält, textareas etc för popupen
	 */
	function get_popup_data()
	{
		var data_elements = get_popup_data_elements();
		return $(data_elements).serialize();
	}



	/*
	 * Uppdatera om det går att spara eller ej
	 */
	function enable_or_disable_saving()
	{
		//Nuvarande data
		var popup_tabs_current_data = get_popup_data();

		//Något är ändrat - tillåt spara
		if(popup_tabs_current_data != popup_tabs_start_data) {
			$('#save').removeAttr('disabled');
			$('#cancel').val(p("ID_CANCEL"));

			//Fix för Opera
			if ($.browser.opera) {
				$('#cancel').get(0).outerHTML = $('#cancel').get(0).outerHTML;
			}
		}
		//Ej ändrat - kan ej spara
		else {
			$('#save').attr('disabled', 'disabled');
			$('#cancel').val(p("ID_CLOSE"));

			//Fix för Opera
			if ($.browser.opera) {
				$('#cancel').get(0).outerHTML = $('#cancel').get(0).outerHTML;
			}
		}
	}



	/*
	 * Spara en popup-vys flikar
	 */
	function save_popup_tabs(popup_view, id)
	{

		//Hämta all data från inputfält och textrutor
		var input_field_for_url = get_popup_data();

		//Skicka data som ska sparas
		url = "ajax2/popup_ajax.php";
		params = "popup_view=" + popup_view + "&id=" + id + "&func=SAVE" + "&" + input_field_for_url + "&" + Math.random();
		var request = getHTTPObject();
		request.open("POST", url, true);
		request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		request.setRequestHeader("Content-length", params.length);
		request.setRequestHeader("Connection", "close");
		request.onreadystatechange = function ()
		{
			if (request.readyState == 4)
			{
				//Hämta alla flikars xml-svar
				var response = request.responseXML;
				var popup_save = request.responseXML.getElementsByTagName('popup_save').item(0);
				var saved_tabs = request.responseXML.getElementsByTagName('tab_save');

				//Hämnta vilken metod som skall köras för varje flik
				for(var i=0; i<saved_tabs.length; i++) {
					var saved_tab = saved_tabs.item(i);
					if(saved_tab != null) {
						var call_method = saved_tab.getElementsByTagName('call_method').item(0).firstChild.nodeValue;
						if(call_method != null && call_method != "") {
							//Anropa metod
							window[call_method](saved_tab);
						}
					}
				}
			}
		}
		request.send(params);

		//Stäng popup
		closePopupView();
	}


	/*
	 * Byt till en annan flik i popupen
	 */
	function changeTab(clicked_tab, tab_identifyer)
	{

		//Om man inte klickat på en flik utan anropar ett byte
		if(clicked_tab == null || clicked_tab == undefined || clicked_tab == "") {
			var tab_identifyer_lower_case = tab_identifyer.toLowerCase();
			clicked_tab = $('#popup_tabs_menu_' + tab_identifyer_lower_case);
		}

		//Markera vald flik
		$(".popup_tabs_menu_container").removeClass("popup_tabs_menu_container_selected");
		$(clicked_tab).addClass("popup_tabs_menu_container_selected");

		//Visa vald fliks innehåll
		$(".popup_tab_content").hide();
		$("#"+tab_identifyer).show();
	}


	/*
	 * Skriv ut ett meddelande som visas i popupen
	 */
	function setFeedbackMessage(message, message_type, tab_identifyer)
	{

		//"message_type"
		//Implementera att man kan sätta olika klaser på meddelandet beroende på typ

		//Visa meddelandet
		$('#popup_feedback_message').html(message).show();

		//Byt till fliken som gav meddelandet
		changeTab("", tab_identifyer);
	}

	

	/*
	 * Stäng popup
	 */
	function closePopupView()
	{
		//Ta bort tinymce instanser
		if(typeof tinyMCE.editors !== "undefined") {
			var tinymce_editors = tinyMCE.editors;
			for(var i=0; i<tinymce_editors.length; i++) {
				tinymce.EditorManager.execCommand('mceRemoveControl',true, tinymce_editors[i].id);
			}
		}
		
		//Stäng med vanliga metoden
		closePopup();
    }

