// JavaScript Document
var aTimer = new Array();
var dTimer = new Array();
var s1Timer = new Array();
var s2Timer = new Array();
var mnuArrTimer = new Array();

var showing_sub = '';
var fixed_sub = '';
var menu_selected = "-";

var mnumapchild = new Array();
var mnumapparent = new Array();

mnumapchild[0] = "";

mnumapparent[0] = "";


function selectMainMenu(id){
	addClass(id, "selected");
	//document.getElementById(id).className = "selected";
}

function mainmenu_over(id){
	if(this.menu_selected == "-") init();
	
	if(containClass(id, "selected")){
	//if(document.getElementById(id).className != "selected"){		
		removeSelected();
	}
	addClass(id, "hover");
	//document.getElementById(id).className = "hover";
	/*
	//alert(id);
	//check if selected menu contains submenu
	var uindex = this.mnumapparent.indexOf(id);
	if(uindex < 0){
		//not contain submenu
		forceHideSubmenu();
	}
	*/
}

function mainmenu_out(id){
	removeClass(id, "hover");
	
	clearS1Timer();
	this.s1Timer[this.s1Timer.length] = setTimeout('markSelected()', 1000);
}

function restoreSubmenu(){	
	var uindex = this.mnumapparent.indexOf(this.menu_selected);
	if(uindex >= 0){
		var subid = this.mnumapchild[uindex];
		showSubmenu(subid);
	}	
}

function resetMainMenu(){
	//if(document.getElementById("mnuhome").className == "hover") document.getElementById("mnuhome").className = "";
	
}

function selectSubMenu(subid){
	//document.getElementById(id).className = "selected";
	showSubmenu(subid);
	addClass(subid, "fixed");
	this.fixed_sub = subid;
	/*
	var uindex = this.mnumapchild.indexOf(subid);
	if(uindex >= 0){
		this.menu_selected = this.mnumapparent[uindex];
	}
	*/
}

function showSubmenu(id){
	//this.mTimer = setTimeout("autoShowSubmenu('"+id+"')", 3000);
	cleardTimer();
	
	if(this.showing_sub != '') document.getElementById(this.showing_sub).style.display = "none";
	
	var sub_idx = id.indexOf("_sub");
	if(sub_idx != -1){
		clearMnuArrowTimer();
		
		var prid = id.substr(0, sub_idx);
		addClass(prid, "expanded");
		addClass(prid, "hover");
	}
		
	autoShowSubmenu(id);
	
	this.showing_sub = id;
	/*
	var uindex = this.mnumapchild.indexOf(id);
	if(uindex >= 0){
		var prid = this.mnumapparent[uindex];
		if(document.getElementById(prid) != null && containClass(prid, "selected")){ //document.getElementById(prid).className != "selected"
			addClass(prid, "hover");
			//document.getElementById(prid).className = "hover";
		}
		
		if(prid != this.menu_selected){
			removeSelected();
		}
	}
	*/
}

function autoShowSubmenu(id){
	//document.getElementById("body-padding").className = "body-padding-sub";	
		
	var ob = document.getElementById("submenu-bar");
	
	var height = 160; //129; //ob.offsetHeight;
	ob.style.height = ob.offsetHeight+'px';
	ob.style.overflow = 'hidden';
	
	//document.getElementById("submenu-bar").style.display = "block";			
	
	for(var i=ob.offsetHeight;i<height;i++){
		this.aTimer[this.aTimer.length] = setTimeout(function(){mlIncreaseHeight(ob)},i*2);
		if(ob.offsetHeight >= height) clearaTimer();
	}	
	
	document.getElementById(id).style.display = "block";
	document.getElementById("submenu").style.display = "block";	
}

function hideSubmenu(id){
	clearaTimer();
	this.dTimer[this.dTimer.length] = setTimeout(function(){autoHideSubmenu(id)}, 1000);
	//alert(document.getElementById(id).className.split(" ")[2]);
	/*
	var uindex = this.mnumapchild.indexOf(id);
	if(uindex >= 0){
		var prid = this.mnumapparent[uindex];
		if(document.getElementById(prid) != null && containClass(prid, "hover")){ //document.getElementById(prid).className == "hover"
			//document.getElementById(prid).className = "";
			removeClass(prid, "hover");
		}
		
		clearS1Timer();
		this.s1Timer[this.s1Timer.length] = setTimeout("markSelected()", 1000);
	}
	*/
	var sub_idx = id.indexOf("_sub");
	if(sub_idx != -1)
		//this.mnuArrTimer[this.mnuArrTimer.length] = setTimeout(function(){ removeClass(id.substr(0, sub_idx), "expanded");  }, 1300);
		removeClass(id.substr(0, sub_idx), "expanded");

}

function autoHideSubmenu(id){
	//if(document.getElementById(id).className.split(" ")[0] != "fixed"){
	if(!containClass(id, "fixed")){

		document.getElementById(id).style.display = "none";
		
		this.showing_sub = '';
		if(this.fixed_sub != ''){
			document.getElementById(this.fixed_sub).style.display = "block";
			this.showing_sub = this.fixed_sub;
			cleardTimer();
		}else{
			document.getElementById("submenu").style.display = "none";


			var ob = document.getElementById("submenu-bar");
			
			var height = 160; //129; //ob.offsetHeight;
			ob.style.height = ob.offsetHeight+'px';
			ob.style.overflow = 'hidden';
			for(var i=ob.offsetHeight;i>=0;i--){
				setTimeout(function(){mlDecreaseHeight(ob)},((height-i)*2));
				if(ob.offsetHeight <= 0) clearTimeout(this.dTimer);
			}
			
			//document.getElementById(id).style.display = "none";
	
			//document.getElementById("body-padding").className = "body-padding";
		}
	}
}


function forceHideSubmenu(){
	clearaTimer();
	cleardTimer();
	this.dTimer[this.dTimer.length] = setTimeout(function(){hideMe()}, 200);
}

function hideMe(){
	document.getElementById("submenu").style.display = "none";

	var ob = document.getElementById("submenu-bar");
	
	var height = ob.offsetHeight;
	ob.style.height = height+'px';
	ob.style.overflow = 'hidden';
	for(var i=height;i>=0;i--){
		setTimeout(function(){mlDecreaseHeight(ob)},((height-i)*2));
		if(ob.offsetHeight <= 0) clearTimeout(this.dTimer);
	}		
}


function mlIncreaseHeight(ob, mx){
	var current = parseInt(ob.style.height);
	//alert(current);
	var newh = current + 1;
	ob.style.height = newh+'px';
}

function mlDecreaseHeight(ob){
	var current = parseInt(ob.style.height);
	//alert(current);
	var newh = current - 1;
	if(newh >= 0) ob.style.height = newh+'px';
}

function removeSelected(){
	clearS1Timer();
	//unset selected
	if(document.getElementById(this.menu_selected) != null){
		removeClass(this.menu_selected, "selected");
		//document.getElementById(this.menu_selected).className = "";
	}	
}

function markSelected(){
	//get back selected
	if(document.getElementById(this.menu_selected) != null){
		addClass(this.menu_selected, "selected");
		//document.getElementById(this.menu_selected).className = "selected";
		restoreSubmenu();
	}
}

function clearaTimer(){
	//alert(this.s1Timer.length);
	for(n=0; n<this.aTimer.length; n++){
		clearTimeout(this.aTimer[n]);	
	}
	this.aTimer = new Array();
}

function cleardTimer(){
	//alert(this.s1Timer.length);
	for(n=0; n<this.dTimer.length; n++){
		clearTimeout(this.dTimer[n]);	
	}
	this.dTimer = new Array();
}


function clearS1Timer(){
	//alert(this.s1Timer.length);
	for(n=0; n<this.s1Timer.length; n++){
		clearTimeout(this.s1Timer[n]);	
	}
	this.s1Timer = new Array();
}

function clearS2Timer(){
	//alert(this.s1Timer.length);
	for(n=0; n<this.s2Timer.length; n++){
		clearTimeout(this.s2Timer[n]);	
	}
	this.s2Timer = new Array();
}

function clearMnuArrowTimer(){
	//alert(this.s1Timer.length);
	for(n=0; n<this.mnuArrTimer.length; n++){
		clearTimeout(this.mnuArrTimer[n]);	
	}
	this.mnuArrTimer = new Array();
}

function init(){
	var obj = document.getElementById("mainmenu").getElementsByTagName("ul");
	for(var i=0;i<obj.length;i++){
		var listitems = obj[i].getElementsByTagName("li");
			
		for(j=0; j<listitems.length; j++){
			if(listitems[j].className == "selected"){
				this.menu_selected = listitems[j].id;
				break;
			}
		}	
	}
}

if(!Array.indexOf){
	Array.prototype.indexOf = function(obj){
		for(var i=0; i<this.length; i++){
			if(this[i]==obj){
				return i;
			}
		}
		return -1;
	}
}

function addClass(obj, classname){
	if(document.getElementById(obj) != null){
		var exs_classname = document.getElementById(obj).className;
		var exs_arr = exs_classname.split(" ");
		if(exs_arr.indexOf(classname) == -1){
			exs_arr[exs_arr.length] = classname;
		}
		
		document.getElementById(obj).className = exs_arr.join(" ");
	}
}

function removeClass(obj, classname){
	if(document.getElementById(obj) != null){
		var exs_classname = document.getElementById(obj).className;
		var exs_arr = exs_classname.split(" ");
		var idx = exs_arr.indexOf(classname);
		if(idx != -1){
			exs_arr.splice(idx, 1);
		}
		
		document.getElementById(obj).className = exs_arr.join(" ");
	}
}

function containClass(obj, classname){
	if(document.getElementById(obj) != null){
		var exs_classname = document.getElementById(obj).className;
		var exs_arr = exs_classname.split(" ");
		var idx = exs_arr.indexOf(classname);
		if(idx != -1){
			return true;
		}else return false;
	}else return false;
}
