/************************************************************************************************************
(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 loadingOptionSelected;
var loadingOptionSelectedClassName;

var expandFirstItemAutomatically = 3; //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();

var myScrollIndex;

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;
	}	
	//getDimensions();
}

function showSubMenu(e, inputObj)
{
//	if(inputObj){
//		alert(inputObj.tagName);
//	}
//	alert('showSubMenu');
	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();
	}	
	//getDimensions();
}

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();			
	}
	//getDimensions();
}

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();
		//getDimensions();
	}
}	

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]);
			}
			getDimensions();
		}
	}
}

function initSubItems(inputObj, currentDepth, paginaActual, optionSelected)
{		
	var opSelected = 0;
	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;
	//alert('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){
		opSelected = 0;
		if(menuItem.tagName=='LI'){
			var aTag = menuItem.getElementsByTagName('A')[0];
			//aTag.className='slMenuItem_depth'+currentDepth;	
			var subUl = menuItem.getElementsByTagName('UL');
			//if (aTag.href == paginaActual || aTag.href == paginaActual + '#'){
			if (aTag.href == paginaActual){
				//if (initMenuIdToExpand == false){
					opSelected = 1;
					initMenuIdToExpand = div.id;
					loadingOptionSelected = aTag;
				//}
			}
			if(subUl.length>0){
				if (opSelected == 1){
					//aTag.className = 'slMenuItem_depth' + currentDepth + '_plus_sel';
					//loadingOptionSelected = aTag;
					loadingOptionSelectedClassName = 'slMenuItem_depth' + currentDepth + '_plus_sel';
				} //else {
					aTag.className='slMenuItem_depth' + currentDepth + '_plus';
				//}
				initSubItems(subUl[0], currentDepth + 1, paginaActual, opSelected);
			} else {
				if (opSelected == 1){
					//aTag.className = 'slMenuItem_depth' + currentDepth + '_option_sel';
					//loadingOptionSelected = aTag;
					loadingOptionSelectedClassName = 'slMenuItem_depth' + currentDepth + '_option_sel';
				} //else {
					aTag.className='slMenuItem_depth' + currentDepth + '_option';
				//}
			}
			aTag.onclick = showSubMenu;				
		}			
		menuItem = menuItem.nextSibling;						
	}
	if (optionSelected == 1) initMenuIdToExpand = div.id;
}

function initSlideDownMenu(paginaActual, unScrollIndex)
{
	var opSelected = 0;
	myScrollIndex = parseInt(unScrollIndex);
	
	dhtmlgoodies_slmenuObj = document.getElementById('slidedown_menu');
	var mainUl = dhtmlgoodies_slmenuObj.getElementsByTagName('UL')[0];		
	var mainMenuItem = mainUl.getElementsByTagName('LI')[0];
	var isFirst = 1;
	mainItemCounter = 1;
	initMenuIdToExpand = false;
	while(mainMenuItem) {
		if(mainMenuItem.tagName == 'LI') {
			opSelected = 0;
			var aTag = mainMenuItem.getElementsByTagName('A')[0];
			//aTag.className='slMenuItem_depth1';
			var subUl = mainMenuItem.getElementsByTagName('UL');
				if (aTag.href == paginaActual) {
					//if (initMenuIdToExpand == false) {
						var opSelected = 1;
						initMenuIdToExpand = mainMenuItem.id;
						loadingOptionSelected = aTag;
					//}
				}
			if(subUl.length > 0) {
				if (isFirst == 1) {
					if (opSelected == 1) {
						//aTag.className = 'slMenuItem_depth1_first_plus_sel';
						//loadingOptionSelected = aTag;
						loadingOptionSelectedClassName = 'slMenuItem_depth1_first_plus_sel';
					} //else {
						aTag.className = 'slMenuItem_depth1_first_plus';
					//}
					isFirst = 0;
				} else {
					if (opSelected == 1) {
						//aTag.className = 'slMenuItem_depth1_plus_sel';
						//previousSelected = aTag;
						loadingOptionSelectedClassName = 'slMenuItem_depth1_plus_sel';
					} //else {
						aTag.className = 'slMenuItem_depth1_plus';
					//}
				}
				mainMenuItem.id = 'mainMenuItem' + mainItemCounter;
				initSubItems(subUl[0], 2, paginaActual, opSelected);
				aTag.onclick = showSubMenu;
				mainItemCounter++;
			} else {
				if (isFirst == 1) {
					if (opSelected == 1) {
						//aTag.className = 'slMenuItem_depth1_first_option_sel';
						//loadingOptionSelected = aTag;
						loadingOptionSelectedClassName = 'slMenuItem_depth1_first_option_sel';
					} //else {
						aTag.className = 'slMenuItem_depth1_first_option';
					//}
					isFirst = 0;
				} else{
					if (opSelected == 1) {
						//aTag.className = 'slMenuItem_depth1_option_sel';
						//loadingOptionSelected = aTag;
						loadingOptionSelectedClassName = 'slMenuItem_depth1_option_sel';
					} //else {
						aTag.className = 'slMenuItem_depth1_option';
					//}
				}
			}
		}
		mainMenuItem = mainMenuItem.nextSibling;
	}
	if (loadingOptionSelected) {
		//alert(loadingOptionSelected);
		loadingOptionSelected.className = loadingOptionSelectedClassName;
	}
	/*
	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){
		//showSubMenu(false,document.getElementById('mainMenuItem2'));
		//divToScroll=document.getElementById('slideDiv2');
		//popMenusToShow();
		//
		//showSubMenu(false,document.getElementById('slideDiv2'));
		//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!='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;
			}
		}
	}
	*/
	//initMenuIdToExpand = 'slideDiv4';
	if(initMenuIdToExpand)
	{
		objectsToExpand = new Array();
		//initMenuIdToExpand = 'slideDiv6';
		//alert(initMenuIdToExpand);
		var obj = document.getElementById(initMenuIdToExpand)
		
		//var subUl22 = obj.getElementsByTagName('UL');
		//if(subUl22.length > 0) {
			 //objectsToExpand.unshift(obj);
		//	objectsToExpand.unshift(obj);
		//	alert('hola');
		//}
		
		while(obj && obj.id != '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]);
	}
	dhtmlgoodies_slmenuObj.style.visibility = 'visible';
	getDimensions();
}

function markOptionByLink(sOptionLink, bSelected)
{
	var opSelected = 0;
	var optionClassName = '';
	
	dhtmlgoodies_slmenuObj = document.getElementById('slidedown_menu');
	var mainUl = dhtmlgoodies_slmenuObj.getElementsByTagName('UL')[0];		
	var mainMenuItem = mainUl.getElementsByTagName('LI')[0];
	var isFirst = 1;
	while(mainMenuItem) {
		if(mainMenuItem.tagName == 'LI') {
			opSelected = 0;
			var aTag = mainMenuItem.getElementsByTagName('A')[0];
			var subUl = mainMenuItem.getElementsByTagName('UL');
				if (aTag.href == sOptionLink) {
					opSelected = 1;
				}
			if(subUl.length > 0) {
				if (isFirst == 1) {
					if (opSelected == 1) {
						optionClassName = 'slMenuItem_depth1_first_plus_sel';
					} else { 
						optionClassName = 'slMenuItem_depth1_first_plus';
					}
					isFirst = 0;
				} else {
					if (opSelected == 1) {
						optionClassName = 'slMenuItem_depth1_plus_sel';
					} else {
						optionClassName = 'slMenuItem_depth1_plus';
					}
				}
				markOptionByLinkSubItems(subUl[0], 2, sOptionLink, bSelected);
			} else {
				if (isFirst == 1) {
					if (opSelected == 1) {
						optionClassName = 'slMenuItem_depth1_first_option_sel';
					} else {
						optionClassName = 'slMenuItem_depth1_first_option';
					}
					isFirst = 0;
				} else {
					if (opSelected == 1) {
						optionClassName = 'slMenuItem_depth1_option_sel';
					} else {
						optionClassName = 'slMenuItem_depth1_option';
					}
				}
			}
		}
		aTag.className = optionClassName;
		mainMenuItem = mainMenuItem.nextSibling;
	}
}

function markOptionByText(sOptionText, bSelected)
{
	var opSelected = 0;
	var optionClassName = '';
	
	dhtmlgoodies_slmenuObj = document.getElementById('slidedown_menu');
	var mainUl = dhtmlgoodies_slmenuObj.getElementsByTagName('UL')[0];		
	var mainMenuItem = mainUl.getElementsByTagName('LI')[0];
	var isFirst = 1;
	while(mainMenuItem) {
		if(mainMenuItem.tagName == 'LI') {
			opSelected = 0;
			var aTag = mainMenuItem.getElementsByTagName('A')[0];
			var subUl = mainMenuItem.getElementsByTagName('UL');
				if (aTag.innerHTML == sOptionText) {
					opSelected = 1;
				}
			if(subUl.length > 0) {
				if (isFirst == 1) {
					if (opSelected == 1) {
						optionClassName = 'slMenuItem_depth1_first_plus_sel';
					} else { 
						optionClassName = 'slMenuItem_depth1_first_plus';
					}
					isFirst = 0;
				} else {
					if (opSelected == 1) {
						optionClassName = 'slMenuItem_depth1_plus_sel';
					} else {
						optionClassName = 'slMenuItem_depth1_plus';
					}
				}
				//initSubItems(subUl[0], 2, paginaActual);
				markOptionByTextSubItems(subUl[0], 2, sOptionText, bSelected);
			} else {
				if (isFirst == 1) {
					if (opSelected == 1) {
						optionClassName = 'slMenuItem_depth1_first_option_sel';
					} else {
						optionClassName = 'slMenuItem_depth1_first_option';
					}
					isFirst = 0;
				} else {
					if (opSelected == 1) {
						optionClassName = 'slMenuItem_depth1_option_sel';
					} else {
						optionClassName = 'slMenuItem_depth1_option';
					}
				}
			}
		}
		aTag.className = optionClassName;
		mainMenuItem = mainMenuItem.nextSibling;
	}
}

function markOptionByLinkSubItems(inputObj, currentDepth, sOptionLink, bSelected)
{		
	var opSelected = 0;
	var optionClassName = '';
	
	var menuItem = inputObj.getElementsByTagName('LI')[0];
	while(menuItem){
		opSelected = 0;
		if(menuItem.tagName=='LI'){
			var aTag = menuItem.getElementsByTagName('A')[0];
			var subUl = menuItem.getElementsByTagName('UL');
			if (aTag.href == sOptionLink){
				opSelected = 1;
			}
			if(subUl.length>0){
				if (opSelected == 1){
					optionClassName = 'slMenuItem_depth' + currentDepth + '_plus_sel';
				} else {
					optionClassName = 'slMenuItem_depth' + currentDepth + '_plus';
				}
				
				markOptionByLinkSubItems(subUl[0], currentDepth + 1, sOptionLink, bSelected);
				
			} else {
				if (opSelected == 1){
					optionClassName = 'slMenuItem_depth' + currentDepth + '_option_sel';
				} else {
					optionClassName = 'slMenuItem_depth' + currentDepth + '_option';
				}
			}
		}
		aTag.className = optionClassName;
		menuItem = menuItem.nextSibling;						
	}
}

function markOptionByTextSubItems(inputObj, currentDepth, sOptionText, bSelected)
{		
	var opSelected = 0;
	var optionClassName = '';
	
	var menuItem = inputObj.getElementsByTagName('LI')[0];
	while(menuItem){
		opSelected = 0;
		if(menuItem.tagName=='LI'){
			var aTag = menuItem.getElementsByTagName('A')[0];
			var subUl = menuItem.getElementsByTagName('UL');
			if (aTag.innerHTML == sOptionText){
				opSelected = 1;
			}
			if(subUl.length>0){
				if (opSelected == 1){
					optionClassName = 'slMenuItem_depth' + currentDepth + '_plus_sel';
				} else {
					optionClassName = 'slMenuItem_depth' + currentDepth + '_plus';
				}
				
				//initSubItems(subUl[0], currentDepth + 1, paginaActual);
				markOptionByTextSubItems(subUl[0], currentDepth + 1, sOptionText, bSelected);
				
			} else {
				if (opSelected == 1){
					optionClassName = 'slMenuItem_depth' + currentDepth + '_option_sel';
				} else {
					optionClassName = 'slMenuItem_depth' + currentDepth + '_option';
				}
			}
		}
		aTag.className = optionClassName;
		menuItem = menuItem.nextSibling;						
	}
}

function getDimensions()
{
	//scrollArrayScroller[myScrollIndex].reset();
	//scrollArrayScrollbar[myScrollIndex].reset();
}
