/**
*
* JavaScript knihovna pro úpravu defaultního nastavení js knihoven
*
* @package		slModules
* @subpackage	core-db-localizable
* @version		$Id: custom.js 4840 2008-09-05 11:04:50Z michal $
* @encoding		utf-8
* @author		Michal Kouďa <michal.kouda@e4you.cz>
* @copyright	(c) e4you spol. s r.o. 2002-2008, <design@e4you.cz>
*
* Obsah tohoto souboru je majetkem e4you spol. s r.o. Jeho kopírování,
* pozměňování, šíření a jakékoli další využití je možné výhradně
* se souhlasem e4you spol. s r.o.
*
*/

/// pokud neexistuje jmenný prostor sl. vytvoříme ho
if(!sl) { var sl = {} };


/**
 * modul sdružující funkce pro ovládání menu
 */

sl.menu = {

	/**
	* Objekt s aktuálně modifikovaným dom uzlem submenu
	*
	* @var object
	*/
	submenu: null,

	/**
	* Objekt s html tagy menu
	*
	* @var object
	*/
	menu_tags: null,

	/**
	 * Identifkátor intervalu pro nastavení šířky menu
	 */
	width_interval:  null,

	/**
	 * Identifkátor intervalu pro nastavení průhlednosti menu
	 */
	opacity_interval: null,


	/**
	* Inicializuje javascript pro ovládání menu
	*
	* @return void
	*/
	init: function() {
		try {

			/// zjistíme html elementy v objektu menu
			sl.menu_tags = sl.dom.getElement('left_menu').getElementsByTagName('*');

			/// projdeme je
			for ( var k=0; k<sl.menu_tags.length; k++ )  {

				/// pokud se jedná o odkaz první úrovně, nastavíme mu ovladač pro submenu
				if (sl.menu_tags[k].parentNode.className.match('level_1')) {
					//sl.menu_tags[k].onclick = sl.menu.toggleNode ;
					sl.menu_tags[k].onmouseover = sl.menu.toggleNode ;
				}

				/// pokud je uzel první úrovně vybraný, zkusíme k němu zobrazit submenu
				/// @todo pro případná podmenu další úrovně bude třeba dořešit
				if (sl.dom.hasClass(sl.menu_tags[k],'selected') && sl.dom.hasClass(sl.menu_tags[k],'level_1')) {
					sl.menu.toggleNode(null,sl.menu_tags[k].firstChild);
				}
			}

		} catch (e) {
			//alert (e);
		}
	},

	/**
	* Zobrazí / skryje submenu
	*
	* @return boolean
	*/
	toggleNode: function(event,node) {

		/// funkce může být volána s parametry
		if (node != undefined ) {
			event = node;
		/// nebo jako událost při kliknutí myši
		} else {
			event = this;
		}

		try {

			/// nejprve skryjeme všechna otevřená submenu
			for ( var k=0; k<sl.menu_tags.length; k++ )  {
				if (sl.dom.hasClass(sl.menu_tags[k],'submenu_list')) {
					sl.menu_tags[k].style.display = 'none';
				}
				if (sl.dom.hasClass(sl.menu_tags[k],'selected') && sl.dom.hasClass(sl.menu_tags[k],'level_1') ) {
					sl.dom.removeClass(sl.menu_tags[k],'selected');
				}
			}

			/// zjistíme pozici nadřazené položky menu v dokumentu
			//var position = slGetObjectOffset(event);

			/// zjistíme si prvek, který obsahuje podmenu - jeho id je rovné css třídě odkazu
			sl.submenu = sl.dom.getElement(event.className);

			/// pokud existuje nějaké submenu
			if (sl.submenu) {
				/// pozicujeme ho
				sl.submenu.style.left = (event.offsetLeft+48)+'px';
				sl.submenu.style.top = event.offsetTop+'px';
				/// je-li submenu zobrazené, skryjeme ho
				if (sl.submenu.style.display=='block') {
					sl.menu.hideNode();
					sl.dom.removeClass(event.parentNode,'selected');
				/// je-li submenu skryté, zobrazíme ho
				} else {
					sl.menu.showNode();
					sl.dom.addClass(event.parentNode,'selected');
				}
			/// pokud submenu neexistuje
			} else {
				///return true;
			}
		} catch (e) {
			alert (e);
		}
		///return false;
		return true;
	},


	/**
	* Zobrazí submenu
	*
	*/
	showNode: function() {

		if (sl.submenu) {

			/// zjistíme a skryjeme všechny odkazy obsažené v submenu
			var menu_a = sl.submenu.getElementsByTagName('a');
			for (var i=0; i<menu_a.length; i++) {
				menu_a[i].style.visibility = 'hidden';
			}

			/// aktuální průhlednost
			var current_opacity = 0;
			/// aktuální šířka
			var current_width = 0;
			/// konečná šířka, které chceme dosáhnout
			var final_width = 130;

			/// nastavíme zobrazení, průhlednost a šírku
			sl.submenu.style.display = 'block';
			sl.submenu.style.opacity = current_opacity;
			sl.submenu.style.width = current_width;

			clearInterval(sl.opacity_interval);
			clearInterval(sl.width_interval);

			/// spustíme anonymní funkci, která zajistí přechod od nulové do plné průhlednosti
			sl.opacity_interval = setInterval(function() {
				/// pokud jsme dosáhli plné viditelnosti
				if (current_opacity >= 1) {
					/// zastavíme provádění funkce
					clearInterval(sl.opacity_interval);
				}
				current_opacity = current_opacity + 0.05;
				sl.submenu.style.opacity =  current_opacity ;
			}, 30);

			/// spustíme anonymní funkci, která zajistí roztažení menu z nulové na požadovanou šířku
			sl.width_interval = setInterval(function() {
				/// pokud jsme dosáhli požadované šířky
				if (current_width >= final_width ) {
					/// zastavíme provádění funkce
					clearInterval(sl.width_interval);
					/// zviditelníme odkazy v menu
					for (var i=0; i<menu_a.length; i++) {
						menu_a[i].style.visibility = 'visible';
					}
				}
				current_width = current_width + 5;
				sl.submenu.style.width =  current_width+'px' ;
			}, 7);
		}
	},


	/**
	* Skryje submenu
	*
	*/
	hideNode: function() {

		if (sl.submenu) {

			/// aktuální průhlednost
			var current_opacity = 1;

			/// spustíme anonymní funkci, která zajistí přechod plné do nulové průhlednosti
			opacity_interval = setInterval(function() {
				/// pokud jsme dosáhli plné viditelnosti
				if (current_opacity <= 0) {
					/// zastavíme provádění funkce
					clearInterval(opacity_interval);
					sl.submenu.style.display = 'none';
				}
				current_opacity = current_opacity - 0.05;
				sl.submenu.style.opacity =  current_opacity ;
			}, 20);

		}

	}


}
