﻿
	    var list_menuObj;   // Reference to the menu div 
	    var currentZIndex = 1000;
	    var liIndex = 0;
	    var visibleMenus = new Array();
	    var activeMenuItem = false;
	    var timeBeforeAutoHide = 1200; // Microseconds from mouse leaves menu to auto hide. 
	    var list_menu_arrow = './images/strzala.jpg';

	    var MSIE = navigator.userAgent.indexOf('MSIE') >= 0 ? true : false;
	    var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') >= 0 ? true : false;
	    var navigatorVersion = navigator.appVersion.replace(/.*?MSIE ([0-9]\.[0-9]).*/g, '$1') / 1;
	    var menuBlockArray = new Array();
	    var menuParentOffsetLeft = false;


	    // {{{ getStyle() 
	    /** 
	    * Return specific style attribute for an element 
	    * 
	    * @param Object el = Reference to HTML element 
	    * @param String property = Css property 
	    * @private 
	    */
	    

	    function getStyle(el, property) {

	        if (document.defaultView && document.defaultView.getComputedStyle) {

	            var retVal = null;
	            var comp = document.defaultView.getComputedStyle(el, '');
	            if (comp) {
	                retVal = comp[property];

	                if (!retVal) {
	                    var comp = document.defaultView.getComputedStyle(el, null);
	                    retVal = comp.getPropertyCSSValue(property);
	                }
	            }

	            if (retVal == null) retVal = '';

	            return el.style[property] || retVal;
	        }
	        if (document.documentElement.currentStyle && MSIE) {
	            var value = el.currentStyle ? el.currentStyle[property] : null;
	            return (el.style[property] || value);

	        }
	        return el.style[property];
	    }

	    function getTopPos(inputObj) {
	        var origInputObj = inputObj;

	        var returnValue = inputObj.offsetTop;
	        if (inputObj.tagName == 'LI' && inputObj.parentNode.className == 'menuBlock1') {
	            var aTag = inputObj.getElementsByTagName('A')[0];
	            if (aTag) returnValue += aTag.parentNode.offsetHeight;
	        }
	        var topOfMenuReached = false;
	        while ((inputObj = inputObj.offsetParent) != null) {
	            if (inputObj.parentNode.id == 'list_menu') topOfMenuReached = true;
	            if (topOfMenuReached && !inputObj.className.match(/menuBlock/gi) || (!MSIE && origInputObj.parentNode.className == 'menuBlock1')) {
	                var style = getStyle(inputObj, 'position');
	                if (style == 'absolute' || style == 'relative') {
	                    return returnValue;
	                }
	            }

	            returnValue += inputObj.offsetTop;
	        }

	        return returnValue;
	    }

	    function getLeftPos(inputObj) {
	        var returnValue = inputObj.offsetLeft;

	        var topOfMenuReached = false;
	        while ((inputObj = inputObj.offsetParent) != null) {
	            if (inputObj.parentNode.id == 'list_menu') topOfMenuReached = true;
	            if (topOfMenuReached && !inputObj.className.match(/menuBlock/gi)) {
	                var style = getStyle(inputObj, 'position');
	                if (style == 'absolute' || style == 'relative') return returnValue;
	            }

	            returnValue += inputObj.offsetLeft;
	        }
	        return returnValue;
	    }



	    function showHideSub() {

	        var attr = this.parentNode.getAttribute('currentDepth');
	        if (navigator.userAgent.indexOf('Opera') >= 0) {
	            attr = this.parentNode.currentDepth;
	        }

	        this.className = 'currentDepth' + attr + 'over';

	        if (activeMenuItem && activeMenuItem != this) {
	            activeMenuItem.className = activeMenuItem.className.replace(/over/, '');
	        }
	        activeMenuItem = this;

	        var numericIdThis = this.id.replace(/[^0-9]/g, '');
	        var exceptionArray = new Array();
	        // Showing sub item of this LI 
	        var sub = document.getElementById('subOf' + numericIdThis);
	        if (sub) {
	            visibleMenus.push(sub);
	            sub.style.display = '';
	            sub.parentNode.className = sub.parentNode.className + 'over';
	            exceptionArray[sub.id] = true;
	        }

	        // Showing parent items of this one 

	        var parent = this.parentNode;
	        while (parent && parent.id && parent.tagName == 'UL') {
	            visibleMenus.push(parent);
	            exceptionArray[parent.id] = true;
	            parent.style.display = '';

	            var li = document.getElementById('listItem' + parent.id.replace(/[^0-9]/g, ''));
	            if (li.className.indexOf('over') < 0) li.className = li.className + 'over';
	            parent = li.parentNode;

	        }


	        hideMenuItems(exceptionArray);



	    }

	    function hideMenuItems(exceptionArray) {
	        /* 
	        Hiding visible menu items 
	        */
	        var newVisibleMenuArray = new Array();
	        for (var no = 0; no < visibleMenus.length; no++) {
	            if (visibleMenus[no].className != 'menuBlock1' && visibleMenus[no].id) {
	                if (!exceptionArray[visibleMenus[no].id]) {
	                    var el = visibleMenus[no].getElementsByTagName('A')[0];
	                    visibleMenus[no].style.display = 'none';
	                    var li = document.getElementById('listItem' + visibleMenus[no].id.replace(/[^0-9]/g, ''));
	                    if (li.className.indexOf('over') > 0) li.className = li.className.replace(/over/, '');
	                } else {
	                    newVisibleMenuArray.push(visibleMenus[no]);
	                }
	            }
	        }
	        visibleMenus = newVisibleMenuArray;
	    }



	    var menuActive = true;
	    var hideTimer = 0;
	    function mouseOverMenu() {
	        menuActive = true;
	    }

	    function mouseOutMenu() {
	        menuActive = false;
	        timerAutoHide();
	    }

	    function timerAutoHide() {
	        if (menuActive) {
	            hideTimer = 0;
	            return;
	        }

	        if (hideTimer < timeBeforeAutoHide) {
	            hideTimer += 100;
	            setTimeout('timerAutoHide()', 99);
	        } else {
	            hideTimer = 0;
	            autohideMenuItems();
	        }
	    }

	    function autohideMenuItems() {
	        if (!menuActive) {
	            hideMenuItems(new Array());
	            if (activeMenuItem) activeMenuItem.className = activeMenuItem.className.replace(/over/, '');
	        }
	    }


	    function initSubMenus(inputObj, initOffsetLeft, currentDepth) {
	        var subUl = inputObj.getElementsByTagName('UL');
	        if (subUl.length > 0) {
	            var ul = subUl[0];

	            ul.id = 'subOf' + inputObj.id.replace(/[^0-9]/g, '');
	            ul.setAttribute('currentDepth', currentDepth);
	            ul.currentDepth = currentDepth;
	            ul.className = 'menuBlock' + currentDepth;
	            ul.onmouseover = mouseOverMenu;
	            ul.onmouseout = mouseOutMenu;
	            currentZIndex += 1;
	            ul.style.zIndex = currentZIndex;
	            menuBlockArray.push(ul);
	            ul = list_menuObj.appendChild(ul);
	            var topPos = getTopPos(inputObj);
	            var leftPos = getLeftPos(inputObj) / 1 + initOffsetLeft / 1;

	            ul.style.position = 'absolute';
	            ul.style.left = leftPos + 'px';
	            ul.style.top = topPos + 'px';
	            var li = ul.getElementsByTagName('LI')[0];
	            while (li) {
	                if (li.tagName == 'LI') {
	                    li.className = 'currentDepth' + currentDepth;
	                    li.id = 'listItem' + liIndex;
	                    liIndex++;
	                    var uls = li.getElementsByTagName('UL');
	                    li.onmouseover = showHideSub;

	                    if (uls.length > 0) {
	                        var offsetToFunction = li.getElementsByTagName('A')[0].offsetWidth + 2;
	                        if (navigatorVersion < 6 && MSIE) offsetToFunction += 15;   // MSIE 5.x fix 
	                        initSubMenus(li, offsetToFunction, (currentDepth + 1));
	                    }
	                    if (MSIE) {
	                        var a = li.getElementsByTagName('A')[0];
	                        a.style.width = li.offsetWidth + 'px';
	                        a.style.display = 'block';
	                    }
	                }
	                li = li.nextSibling;
	            }
	            ul.style.display = 'none';
	            if (!document.all) {
	                //list_menuObj.appendChild(ul); 
	            }
	        }
	    }


	    function resizeMenu() {
	        var offsetParent = getLeftPos(list_menuObj);

	        for (var no = 0; no < menuBlockArray.length; no++) {
	            var leftPos = menuBlockArray[no].style.left.replace('px', '') / 1;
	            menuBlockArray[no].style.left = leftPos + offsetParent - menuParentOffsetLeft + 'px';
	        }
	        menuParentOffsetLeft = offsetParent;
	    }

	    /* 
	    Initializing menu 
	    */
	    function initMenu() {
	        list_menuObj = document.getElementById('list_menu');


	        var aTags = list_menuObj.getElementsByTagName('A');
	        for (var no = 0; no < aTags.length; no++) {

	            var subUl = aTags[no].parentNode.getElementsByTagName('UL');
	            if (subUl.length > 0 && aTags[no].parentNode.parentNode.parentNode.id != 'list_menu') {
	                var img = document.createElement('IMG');
	                img.src = list_menu_arrow;
	                aTags[no].appendChild(img);

	            }

	        }

	        var mainMenu = list_menuObj.getElementsByTagName('UL')[0];
	        mainMenu.className = 'menuBlock1';
	        mainMenu.style.zIndex = currentZIndex;
	        mainMenu.setAttribute('currentDepth', 1);
	        mainMenu.currentDepth = '1';
	        mainMenu.onmouseover = mouseOverMenu;
	        mainMenu.onmouseout = mouseOutMenu;

	        var mainMenuItemsArray = new Array();
	        var mainMenuItem = mainMenu.getElementsByTagName('LI')[0];
	        mainMenu.style.height = mainMenuItem.offsetHeight + 2 + 'px';
	        while (mainMenuItem) {

	            mainMenuItem.className = 'currentDepth1';
	            mainMenuItem.id = 'listItem' + liIndex;
	            mainMenuItem.onmouseover = showHideSub;
	            liIndex++;
	            if (mainMenuItem.tagName == 'LI') {
	                mainMenuItem.style.cssText = 'float:left;';
	                mainMenuItem.style.styleFloat = 'left';
	                mainMenuItemsArray[mainMenuItemsArray.length] = mainMenuItem;
	                initSubMenus(mainMenuItem, 0, 2);
	            }

	            mainMenuItem = mainMenuItem.nextSibling;

	        }

	        for (var no = 0; no < mainMenuItemsArray.length; no++) {
	            initSubMenus(mainMenuItemsArray[no], 0, 2);
	        }

	        menuParentOffsetLeft = getLeftPos(list_menuObj);
	        window.onresize = resizeMenu;
	        list_menuObj.style.visibility = 'visible';
	        initLeftMenu();
	    }
	    window.onload = initMenu;
	
