
    /************************************************************************************************************
    (C) www.dhtmlgoodies.com, October 2005
    
    This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	
    
    Terms of use:
    You are free to use this script as long as the copyright message is kept intact. However, you may not
    redistribute, sell or repost it without our permission.
    
    Update log:
    
        March, 15th: Fixed problem with sliding in MSIE
    
    Thank you!
    
    www.dhtmlgoodies.com
    Alf Magne Kalleland
    
    ************************************************************************************************************/	
    var expandFirstItemAutomatically = false;	// Expand first menu item automatically ?
    var initMenuIdToExpand = false;	// Id of menu item that should be initially expanded. the id is defined in the <li> tag.
    var expandMenuItemByUrl = true;	// Menu will automatically expand by url - i.e. if the href of the menu item is in the current location, it will expand
    
    
    var initialMenuItemAlwaysExpanded = true;	// NOT IMPLEMENTED YET
    
    var dhtmlgoodies_slmenuObj;
    var divToScroll = false;
    var ulToScroll = false;	
    var divCounter = 1;
    var otherDivsToScroll = new Array();
    var divToHide = false;
    var parentDivToHide = new Array();
    var ulToHide = false;
    var offsetOpera = 0;
    if(navigator.userAgent.indexOf('Opera')>=0)offsetOpera=1;	
    var slideMenuHeightOfCurrentBox = 0;
    var objectsToExpand = new Array();
    var initExpandIndex = 0;
    var alwaysExpanedItems = new Array();
        
    function popMenusToShow()
    {
        var obj = divToScroll;
        var endArray = new Array();
        while(obj && obj.tagName!='BODY'){
            if(obj.tagName=='DIV' && obj.id.indexOf('slideDiv')>=0){
                var objFound = -1;
                for(var no=0;no<otherDivsToScroll.length;no++){
                    if(otherDivsToScroll[no]==obj){
                        objFound = no;		
                    }					
                }	
                if(objFound>=0){
                    otherDivsToScroll.splice(objFound,1);	
                }		
            }	
            obj = obj.parentNode;
        }	
    }
    
    function showSubMenu(e,inputObj)
    {
    
        if(this && this.tagName)inputObj = this.parentNode;
        if(inputObj && inputObj.tagName=='LI'){
            divToScroll = inputObj.getElementsByTagName('DIV')[0];
            for(var no=0;no<otherDivsToScroll.length;no++){
                if(otherDivsToScroll[no]==divToScroll)return;
            }			
        }
        hidingInProcess = false;
        if(otherDivsToScroll.length>0){
            if(divToScroll){				
                if(otherDivsToScroll.length>0){
                    popMenusToShow();
                }
                if(otherDivsToScroll.length>0){	
                    autoHideMenus();
                    hidingInProcess = true;
                }
            }	
        }		
        if(divToScroll && !hidingInProcess){
            divToScroll.style.display='';
            otherDivsToScroll.length = 0;
            otherDivToScroll = divToScroll.parentNode;
            otherDivsToScroll.push(divToScroll);	
            while(otherDivToScroll && otherDivToScroll.tagName!='BODY'){
                if(otherDivToScroll.tagName=='DIV' && otherDivToScroll.id.indexOf('slideDiv')>=0){
                    otherDivsToScroll.push(otherDivToScroll);
                                        
                }
                otherDivToScroll = otherDivToScroll.parentNode;
            }			
            ulToScroll = divToScroll.getElementsByTagName('UL')[0];
            if(divToScroll.style.height.replace('px','')/1<=1)scrollDownSub();
        }	
        
    
    }
    
    
    
    function autoHideMenus()
    {
        if(otherDivsToScroll.length>0){
            divToHide = otherDivsToScroll[otherDivsToScroll.length-1];
            parentDivToHide.length=0;
            var obj = divToHide.parentNode.parentNode.parentNode;
            while(obj && obj.tagName=='DIV'){			
                if(obj.id.indexOf('slideDiv')>=0)parentDivToHide.push(obj);
                obj = obj.parentNode.parentNode.parentNode;
            }
            var tmpHeight = (divToHide.style.height.replace('px','')/1 - slideMenuHeightOfCurrentBox);
            if(tmpHeight<0)tmpHeight=0;
            if(slideMenuHeightOfCurrentBox)divToHide.style.height = tmpHeight  + 'px';
            ulToHide = divToHide.getElementsByTagName('UL')[0];
            slideMenuHeightOfCurrentBox = ulToHide.offsetHeight;
            scrollUpMenu();		
        }else{
            slideMenuHeightOfCurrentBox = 0;
            showSubMenu();			
        }
    }
    
    
    function scrollUpMenu()
    {
    
        var height = divToHide.offsetHeight;
        height-=15;
        if(height<0)height=0;
        divToHide.style.height = height + 'px';
    
        for(var no=0;no<parentDivToHide.length;no++){	
            parentDivToHide[no].style.height = parentDivToHide[no].getElementsByTagName('UL')[0].offsetHeight + 'px';
        }
        if(height>0){
            setTimeout('scrollUpMenu()',5);
        }else{
            divToHide.style.display='none';
            otherDivsToScroll.length = otherDivsToScroll.length-1;
            autoHideMenus();			
        }
    }	
    
    function scrollDownSub()
    {
        if(divToScroll){			
            var height = divToScroll.offsetHeight/1;
            var offsetMove =Math.min(15,(ulToScroll.offsetHeight - height));
            height = height +offsetMove ;
            divToScroll.style.height = height + 'px';
            
            for(var no=1;no<otherDivsToScroll.length;no++){
                var tmpHeight = otherDivsToScroll[no].offsetHeight/1 + offsetMove;
                otherDivsToScroll[no].style.height = tmpHeight + 'px';
            }			
            if(height<ulToScroll.offsetHeight)setTimeout('scrollDownSub()',5); else {
                divToScroll = false;
                ulToScroll = false;
                if(objectsToExpand.length>0 && initExpandIndex<(objectsToExpand.length-1)){
                    initExpandIndex++;
                    
                    showSubMenu(false,objectsToExpand[initExpandIndex]);
                }
            }
        }
    }
        
    function initSubItems(inputObj,currentDepth)
    {		
        divCounter++;		
        var div = document.createElement('DIV');	// Creating new div		
        div.style.overflow = 'hidden';	
        div.style.position = 'relative';
        div.style.display='none';
        div.style.height = '1px';
        div.id = 'slideDiv' + divCounter;
        div.className = 'slideMenuDiv' + currentDepth;		
        inputObj.parentNode.appendChild(div);	// Appending DIV as child element of <LI> that is parent of input <UL>		
        div.appendChild(inputObj);	// Appending <UL> to the div
        var menuItem = inputObj.getElementsByTagName('LI')[0];
        while(menuItem){
            if(menuItem.tagName=='LI'){
                var aTag = menuItem.getElementsByTagName('A')[0];
                aTag.className='slMenuItem_depth'+currentDepth;	
                var subUl = menuItem.getElementsByTagName('UL');
                if(subUl.length>0){
                    initSubItems(subUl[0],currentDepth+1);					
                }
                aTag.onclick = showSubMenu;				
            }			
            menuItem = menuItem.nextSibling;						
        }		
    }
    
    function initSlideDownMenu()
    {
        dhtmlgoodies_slmenuObj = document.getElementById('dhtmlgoodies_slidedown_menu');
        dhtmlgoodies_slmenuObj.style.visibility='visible';
        var mainUl = dhtmlgoodies_slmenuObj.getElementsByTagName('UL')[0];		
        var mainMenuItem = mainUl.getElementsByTagName('LI')[0];
        mainItemCounter = 1;
        while(mainMenuItem){			
            if(mainMenuItem.tagName=='LI'){
                var aTag = mainMenuItem.getElementsByTagName('A')[0];
                aTag.className='slMenuItem_depth1';	
                var subUl = mainMenuItem.getElementsByTagName('UL');
                if(subUl.length>0){
                    mainMenuItem.id = 'mainMenuItem' + mainItemCounter;
                    initSubItems(subUl[0],2);
                    aTag.onclick = showSubMenu;
                    mainItemCounter++;
                }				
            }			
            mainMenuItem = mainMenuItem.nextSibling;	
        }		
        
        if(location.search.indexOf('mainMenuItemToSlide')>=0){
            var items = location.search.split('&');
            for(var no=0;no<items.length;no++){
                if(items[no].indexOf('mainMenuItemToSlide')>=0){
                    values = items[no].split('=');
                    showSubMenu(false,document.getElementById('mainMenuItem' + values[1]));	
                    initMenuIdToExpand = false;				
                }
            }			
        }else if(expandFirstItemAutomatically>0){
            if(document.getElementById('mainMenuItem' + expandFirstItemAutomatically)){
                showSubMenu(false,document.getElementById('mainMenuItem' + expandFirstItemAutomatically));
                initMenuIdToExpand = false;
            }
        }
    
        if(expandMenuItemByUrl)
        {
            var aTags = dhtmlgoodies_slmenuObj.getElementsByTagName('A');
            for(var no=0;no<aTags.length;no++){
                var hrefToCheckOn = aTags[no].href;				
                if(location.href.indexOf(hrefToCheckOn)>=0 && hrefToCheckOn.indexOf('#')<hrefToCheckOn.length-1){
                    initMenuIdToExpand = false;
                    var obj = aTags[no].parentNode;
                    while(obj && obj.id!='dhtmlgoodies_slidedown_menu'){
                        if(obj.tagName=='LI'){							
                            var subUl = obj.getElementsByTagName('UL');
                            if(initialMenuItemAlwaysExpanded)alwaysExpanedItems[obj.parentNode] = true;
                            if(subUl.length>0){								
                                objectsToExpand.unshift(obj);
                            }
                        }
                        obj = obj.parentNode;	
                    }
                    showSubMenu(false,objectsToExpand[0]);
                    break;					
                }			
            }
        }
                
        if(initMenuIdToExpand)
        {
            objectsToExpand = new Array();
            var obj = document.getElementById(initMenuIdToExpand)
            while(obj && obj.id!='dhtmlgoodies_slidedown_menu'){
                if(obj.tagName=='LI'){
                    var subUl = obj.getElementsByTagName('UL');
                    if(initialMenuItemAlwaysExpanded)alwaysExpanedItems[obj.parentNode] = true;
                    if(subUl.length>0){						
                        objectsToExpand.unshift(obj);
                    }
                }
                obj = obj.parentNode;	
            }
            
            showSubMenu(false,objectsToExpand[0]);
    
        }
        
    
            
    }
        window.onload = initSlideDownMenu;
