 /************************************************************************************************************
 (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 = 0; // 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-=1000;
 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()',0.1);
 }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 + 30 + '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 = null;//dhtmlgoodies_slmenuObj.getElementsByTagName('UL')[0];
 var mainMenuItem = null;//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;