/*======================================================================================*\
 * Copyright (c) 2008 BLUEWING.BIZ - All Rights Reserved.
 * ======================================================================================
 * No part of this file may be reproduced or transmitted in any form or by any means, 
 * electronic or mechanical, including photocopying and recording, for any purpose 
 * without the express written permission of the owner of copyright.
 * ======================================================================================
 * @filesource       _core/control/js/gui.js
 * @copyright        Copyright 2007-2008, Bluewing, Florian Tschoerner
 * @link             http://www.bluewing.biz
 * @package          bluewing
 * @since            Bluewing v 2.0.1
 * @version          
 * @modifiedby       
 * @lastmodified     18.06.2008
 * @license          http://www.opensource.org/licenses/mit-license.php The MIT License
\*======================================================================================*/

	var guiAjaxLoader;



	/*==================================================================================*\
	 *	Function:	guiScreenInit()
	 *	Purpose:	initializes shaddow
	 *	Author:		Florian Tschoerner
	 *	LastMod:	03.06.2009
	 *	Params:		none
	 *	Return:		none
	\*==================================================================================*/

	function guiScreenInit() {
		guiShaddowInit();
		guiDialogueInit();

		// check if java script is enabled
		document.getElementById('dlgJavaScript').style.display = 'none';

		// check if cookies are enabled
		if (navigator.cookieEnabled == true)
			document.getElementById('dlgCookies').style.display = 'none';

		// check if popups are enabled
		document.getElementById('dlgPopup').style.display = 'none';

		// hide help dialogue
		document.getElementById('dlgHelp').style.display = 'none';
		
		// hide ajax loader dialogue
		document.getElementById('dlgAjaxLoader').style.display = 'none';
		guiAjaxLoader = false;

		// hide alert dialogue
		document.getElementById('dlgAlert').style.display = 'none';

		// hide dialogue shaddow
		document.getElementById('dlgShaddow').style.display = 'none';
		document.getElementById('dialogues').style.display = 'none';

		guiAddOnClickEvent();

		if (document.getElementById('clock'))
			startClock();
	}



	/*==================================================================================*\
	 *	Function:	guiAddOnClickEvent()
	 *	Purpose:	
	 *	Author:		Florian Tschoerner
	 *	LastMod:	03.06.2009
	 *	Params:		none
	 *	Return:		none
	\*==================================================================================*/

	function guiAddOnClickEvent() {
		var elements;
		var string = '';

		if (document.all) elements = document.all;
		else if (document.getElementsByTagName && !document.all) elements = document.getElementsByTagName("*");

		for(i=0;i<elements.length;i++) {
			// add to links
			if (elements[i].tagName.toLowerCase() == "a" 
					&& elements[i].href.indexOf('#') == -1
					&& elements[i].href.indexOf('download=') == -1
					&& elements[i].href.indexOf('javascript') == -1
					&& !elements[i].getAttribute("target")
					&& !elements[i].getAttribute("rel")
				) {

				if (elements[i].getAttribute("onclick"))
					elements[i].setAttribute("onclick", "guiDlgLoader(); " + elements[i].getAttribute("onclick"));
				else
					elements[i].setAttribute("onclick", "guiDlgLoader();");

			// add to buttons
			} else if (elements[i].tagName.toLowerCase() == "button" && elements[i].getAttribute("type") != "reset"
				) {

				// create absolute href
				if (elements[i].getAttribute("onclick"))
					elements[i].setAttribute("onclick", "guiDlgLoader(); " + elements[i].getAttribute("onclick"));
				else
					elements[i].setAttribute("onclick", "guiDlgLoader();");
//			} else {
//				if (elements[i].getAttribute("onclick"))
//					elements[i].setAttribute("onclick", "guiDlgLoader(); " + elements[i].getAttribute("onclick"));
			}
		}
	}



	/*==================================================================================*\
	 *	Function:	guiShaddowInit()
	 *	Purpose:	initializes shaddow
	 *	Author:		Florian Tschoerner
	 *	LastMod:	03.06.2009
	 *	Params:		none
	 *	Return:		none
	\*==================================================================================*/

	function guiShaddowInit() {
		var elem = document.getElementById("dlgShaddow").style;

		// style action blocker
		elem.width = screen.width+'px';
		elem.height = screen.height+'px';

		if (parent.url) { // hta ! ie
			elem.filter = 'alpha(opacity=80)';
		} else if (document.all && navigator.appVersion.indexOf("MSIE 7") > -1) { // ie 7
			elem.filter = 'alpha(opacity=80)';
		} else { // ff
			elem.opacity = '.8';
		}
	}



	/*==================================================================================*\
	 *	Function:	guiDialogueInit()
	 *	Purpose:	initializes dialogues
	 *	Author:		Florian Tschoerner
	 *	LastMod:	03.06.2009
	 *	Params:		none
	 *	Return:		none
	\*==================================================================================*/

	function guiDialogueInit() {
		var parent = document.getElementById("dialogues");

		var screenWidth = parent.offsetWidth;
		var screenHeight = parent.offsetHeight;

		if (screenWidth > screen.width || screenHeight > screen.height) {
			screenWidth = screen.width;
			screenHeight = screen.height;
		}

		for (var i=0; i<parent.childNodes.length; i++) {
			if (parent.childNodes[i].className == 'dlgTable') {
				parent.childNodes[i].style.width = (screenWidth / 2)+'px';
				parent.childNodes[i].style.left = (screenWidth / 4)+'px';
				parent.childNodes[i].style.top = ((screenHeight / 2) - parent.childNodes[i].offsetHeight) + 'px';
			}
		}
	}



	/*==================================================================================*\
	 *	Function:	guiDlgHelp()
	 *	Purpose:	toggles the help dialogue
	 *	Author:		Florian Tschoerner
	 *	LastMod:	03.06.2009
	 *	Params:		@text : string, element id
	 *	Return:		none
	\*==================================================================================*/

	function guiDlgHelp(text) {
		if (document.getElementById("dlgHelp"))
			if (document.getElementById("dlgHelp").style.display == 'block') {
				document.getElementById('dialogues').style.display = 'none';
				document.getElementById("dlgShaddow").style.display = 'none';
				document.getElementById("dlgHelp").style.display = 'none';
			} else {
				document.getElementById("dlgBodyHelp").innerHTML = text;
				document.getElementById('dialogues').style.display = 'block';
				document.getElementById("dlgShaddow").style.display = 'block';
				document.getElementById("dlgHelp").style.display = 'block';
			}
	}



	/*==================================================================================*\
	 *	Function:	guiDlgAlert()
	 *	Purpose:	toggles the alert dialogue
	 *	Author:		Florian Tschoerner
	 *	LastMod:	06.06.2009
	 *	Params:		@text : string, element id
	 *	Return:		none
	\*==================================================================================*/

	function guiDlgAlert(title, text) {
		if (document.getElementById("dlgAlert"))
			if (document.getElementById("dlgAlert").style.display == 'block') {
				document.getElementById('dialogues').style.display = 'none';
				document.getElementById("dlgShaddow").style.display = 'none';
				document.getElementById("dlgAlert").style.display = 'none';
			} else {
				document.getElementById("dlgBodyAlertTitle").innerHTML = title;
				document.getElementById("dlgBodyAlertText").innerHTML = text;
				document.getElementById('dialogues').style.display = 'block';
				document.getElementById("dlgShaddow").style.display = 'block';
				document.getElementById("dlgAlert").style.display = 'block';
			}
	}



	/*==================================================================================*\
	 *	Function:	guiDlgLoader()
	 *	Purpose:	toggles ajax loader dialogue
	 *	Author:		Florian Tschoerner
	 *	LastMod:	03.06.2009
	 *	Params:		@elem : string, element id
	 *	Return:		none
	\*==================================================================================*/

	function guiDlgLoader() {
		if (document.getElementById("dlgAjaxLoader"))
			if (document.getElementById("dlgAjaxLoader").style.display == 'none') {
				document.getElementById('dialogues').style.display = 'block';
				document.getElementById("dlgShaddow").style.display = 'block';
				document.getElementById("dlgAjaxLoader").style.display = 'block';
				guiAjaxLoader = true;
			} else {
				document.getElementById('dialogues').style.display = 'none';
				document.getElementById("dlgShaddow").style.display = 'none';
				document.getElementById("dlgAjaxLoader").style.display = 'none';
				guiAjaxLoader = false;
			}
	}



	/*==================================================================================*\
	 *	Function:	guiDlgPosition()
	 *	Purpose:	toggles ajax loader dialogue
	 *	Author:		Florian Tschoerner
	 *	LastMod:	03.06.2009
	 *	Params:		@elem : string, element id
	 *	Return:		none
	\*==================================================================================*/

	function guiDlgPosition() {
		var topPos = 0;

		topPos+=(document.all?document.body.scrollTop:window.pageYOffset);
		
		document.getElementById("dialogues").style.top=topPos+"px";
	}



	/*==================================================================================*\
     *	Function:	ajaxLoad()
     *	Purpose:	
     *	Author:		Florian Tschoerner
	 *	Lastmod:	30.12.2008
     *	Params:		none
	 *	Return:		none
    \*==================================================================================*/

	function ajaxLoad(div, path, params) {
		if (guiAjaxLoader == false)
			guiDlgLoader();

		new Ajax.Updater(div, path+"?ajax=1&"+params, {
				evalScripts:true, 
				onComplete:function(){
						if (guiAjaxLoader == true)
							guiDlgLoader();
					},
				onFailure:function(){
						if (guiAjaxLoader == true)
							guiDlgLoader();
					}
				});
	}



	/*==================================================================================*\
     *	Function:	ajaxSubmit()
     *	Purpose:	
     *	Author:		Florian Tschoerner
	 *	Lastmod:	30.12.2008
     *	Params:		none
	 *	Return:		none
    \*==================================================================================*/

	function ajaxSubmit(div, params) {
		if (guiAjaxLoader == false)
			guiDlgLoader();

		var inputs = document.form.getElementsByTagName("input");

		for (var i = 0; i < inputs.length; i++) {
		   params = params+'&'+inputs[i].name+"="+inputs[i].value;
		}

		new Ajax.Updater(div, params+"&ajax=1", {
				evalScripts:true, 
				onComplete:function(){
						if (guiAjaxLoader == true)
							guiDlgLoader();
					},
				onFailure:function(){
						if (guiAjaxLoader == true)
							guiDlgLoader();
					}
				});
	}
	
	
	
	/*==================================================================================*\
	 *	Function:	toggleDisplay()
	 *	Purpose:	toggles an elements style display value
	 *	Author:		Florian Tschoerner
	 *	LastMod:	10.11.2009
	 *	Params:		@elem : string, element id
	 *	Return:		none
	\*==================================================================================*/

	function toggleDisplay(elem) {
		var elem = document.getElementById(elem);

		elem.style.display == 'none'
			? elem.style.display = 'block'
			: elem.style.display = 'none';

		return false;
	}



	/*==================================================================================*\
	 *	Function:	onload
	 *	Purpose:	fires on loading window
	 *	Author:		Florian Tschoerner
	 *	Params:		none
	 *	Return:		none
	\*==================================================================================*/

	window.onload = function() {
	}



	/*==================================================================================*\
	 *	Function:	onunload
	 *	Purpose:	fires on unloading window
	 *	Author:		Florian Tschoerner
	 *	Params:		none
	 *	Return:		none
	\*==================================================================================*/

	window.onunload = function() {
	}



	/*==================================================================================*\
	 *	Function:	onsubmit
	 *	Purpose:	fires on submit event
	 *	Author:		Florian Tschoerner
	 *	Params:		none
	 *	Return:		none
	\*==================================================================================*/

	window.onsubmit = function() {
	}
