<!--
//

// browser detection
// Netscape 6 or above
//var isNS=isNetscape&&parseInt(navigator.appVersion)>5;
var isNS=isNetscape&&parseInt(navigator.appVersion)>=5;
// IE 5 or above
var isIE=document.all&&document.getElementById;

// state variables

// layers related
var currentSectionLayer=""
var prevLayer1 = "";
var prevLayer2 = "";
var prevLayer3 = "";		

var currLayer1 = "";
var currLayer2 = "";
var currLayer3 = "";		

// timers
var menuTimerRunning = false;
var mt1=1;
var mt2=1;
var mt3=1;
var mt4=1;					

// end state variables

// functions section
/* parameter description:
1. layerName:
 format: 
	leftBar, layerOne - s[a]
	layerTwo - s[a].[b]
	layerThree - s[a].[b].[c] 
	layerFour - s[a].[b].[c].[d]
	where a = item order of leftBar
		b = item order of layerOne
		c = item order of layerTwo
		d = item order of layerThree
2. type
	- possible values: "leftBar", "layerOne", "layerTwo" and "layerThree"
*/

/* structure for each menu item */
function cMenuItem (itemName, hasChild, itemUrl, code) {
	this.itemName = itemName
	this.hasChild = hasChild
	this.itemUrl = itemUrl
	this.code = code
}


/* get [a] from layerName */
function getParentId(layerName) {
	var id = "";
	if (layerName.indexOf(".") == -1)
		id = layerName.substring(1, layerName.length);
	else
		id = layerName.substring(1, layerName.indexOf("."));
	return id;	
}

/*	get [b] from layerName */
function getChildId(layerName) {
	var id ="";
	if (layerName.indexOf(".")==layerName.lastIndexOf(".")){ 
		id = layerName.substring(layerName.indexOf(".")+1, layerName.length);
	}else{
		id = layerName.substring(layerName.indexOf(".")+1, layerName.indexOf(".", layerName.indexOf(".") + 1));
	}
	return id;	 
}	

/*	get [c] from layerName	*/
function getLastId(layerName) {
	var id ="";
	if (layerName.indexOf(".", layerName.indexOf(".") + 1)==layerName.lastIndexOf(".")){ 
		id = layerName.substring(layerName.lastIndexOf(".")+1, layerName.length);
	}else{
		id = layerName.substring(layerName.indexOf(".", layerName.indexOf(".") + 1)+1, layerName.lastIndexOf("."));
	}
	return id;	
}

/*	get [d] from layerName	*/
function getVeryLastId(layerName) {
	var id = layerName.substring(layerName.lastIndexOf(".")+1, layerName.length);
	return id;	
}

// check for "leftBar"
function isLeftBar(layerName) {
	if (layerName.indexOf(".") == -1)
		return true;
	else
		return false;
}

// check for "layerOne"
function isLayerOne(layerName) {
	var count = 0;
	var pos = 0;
	while (layerName.indexOf(".", pos) != - 1) {
		pos = layerName.indexOf(".", pos) + 1;
		count++;
	}
	if (count==1)
		return true;
	else
		return false;
}

// check for "layerTwo"
function isLayerTwo(layerName) {
	var count = 0;
	var pos = 0;
	while (layerName.indexOf(".", pos) != - 1) {
		pos = layerName.indexOf(".", pos) + 1;
		count++;
	}
	if (count==2)
		return true;
	else
		return false;
}

// check for "layerThree"
function isLayerThree(layerName) {
	var count = 0;
	var pos = 0;
	while (layerName.indexOf(".", pos) != - 1) {
		pos = layerName.indexOf(".", pos) + 1;
		count++;
	}
	if (count==3)
		return true;
	else
		return false;
}

// change background color and font color of menu item
function changeColor(type, layerName, parentid, childid) {
		if (layerName==currentSectionLayer) {
		   	bcolor = sectionbgOff;
		} else {
		   	bcolor = menubgOff;
		}
			
	if (isIE){
		switch (type) {
			case 'leftBar':
				layerNo3 = parseInt(layerName.substring(1, layerName.length))+1;
			    	id = "mi" + layerName.substring(1, layerName.length);
			    	id2 = "mi2" + layerName.substring(1, layerName.length);
			    	id3 = "mi2" + layerNo3;
				document.all["ma" + layerName.substring(1, layerName.length)].style.color = fontOn;
				break;
			case 'layerOne':
				id = "si" + layerName.substring(1, layerName.length);	
				document.all["sa" + parentid + "." + childid].style.color = fontOn;
				break;	
			case 'layerTwo':
				id = "si" + layerName.substring(1, layerName.length);
				document.all["sa" + parentid + "." + childid + "." + getLastId(layerName)].style.color = fontOn;
				break;
			case 'layerThree':
				id = "si" + layerName.substring(1, layerName.length);
				document.all["sa" + parentid + "." + childid + "." + getLastId(layerName) + "." + getVeryLastId(layerName)].style.color = fontOn;
				break;
		}
	    document.all[id].style.background = bgOn;
	    document.all[id2].style.background = bcolor;
	    document.all[id3].style.background = bcolor;
    } else if (isNS){
		switch (type) {
			case 'leftBar':
		    	id = "mi" + layerName.substring(1, layerName.length);
				document.getElementById("ma" + layerName.substring(1, layerName.length)).style.color = fontOn;
				break;
			case 'layerOne':
				id = "si" + layerName.substring(1, layerName.length);	
				document.getElementById("sa" + parentid + "." + childid).style.color = fontOn;
				break;
			case 'layerTwo':
				id = "si" + layerName.substring(1, layerName.length);
				document.getElementById("sa" + parentid + "." + childid + "." + getLastId(layerName)).style.color = fontOn;
				break;
			case 'layerThree':
				id = "si" + layerName.substring(1, layerName.length);
				document.getElementById("sa" + parentid + "." + childid + "." + getLastId(layerName) + "." + getVeryLastId(layerName)).style.color = fontOn;
				break;
		}
	    document.getElementById(id).style.backgroundColor = bgOn;
    }
}

// restore background color and font color of menu item
function restoreColor(type, layerName) {
	if (layerName=="")
		return;

	var parentId = getParentId(layerName);
	var childId = getChildId(layerName);
	var lastId = getLastId(layerName);
	var veryLastId =  getVeryLastId(layerName);
	var bcolor = "";
	var fcolor = "";
	
	if (isLeftBar(layerName)){
		if (layerName==currentSectionLayer) {
		   	bcolor = sectionbgOff;
			fcolor = sectionfontOff;
		} else {
		   	bcolor = menubgOff;
			fcolor = fontOff;
		}
	   	id = "mi" + layerName.substring(1, layerName.length);
	   	id2 = "mi2" + layerName.substring(1, layerName.length);
	   	layerNo3 = parseInt(layerName.substring(1, layerName.length))+1;
	   	id3 = "mi2" + layerNo3;
		if (isIE){
			document.all["ma" + layerName.substring(1, layerName.length)].style.color = fcolor;
		}else if (isNS){
			document.getElementById("ma" + layerName.substring(1, layerName.length)).style.color = fcolor;
		}
    } else if (isLayerOne(layerName)) {			
    	bcolor = smenubgOff;
		fcolor = fontOff;
    	id = "si" + parentId + "." + childId; 
		if (isIE){
			document.all["sa" + parentId + "." + childId].style.color = fcolor;
		}else if (isNS){
			document.getElementById("sa" + parentId + "." + childId).style.color = fcolor;
		}		
    } else if (isLayerTwo(layerName)) {			
		bcolor = smenubgOff;
		fcolor = fontOff;
		id = "si" + parentId + "." + childId + "." + lastId;
		if (isIE){
			document.all["sa" + parentId + "." + childId + "." + lastId].style.color = fcolor;
		}else if (isNS){
			document.getElementById("sa" + parentId + "." + childId + "." + lastId).style.color = fcolor;
		}	
	} else {	
    	bcolor = smenubgOff;
		fcolor = fontOff;
    	id = "si" + layerName.substring(1, layerName.length);
		if (isIE){	
			document.all["sa" + layerName.substring(1, layerName.length)].style.color = fcolor;	
		}else if (isNS){			
			document.getElementById("sa" + layerName.substring(1, layerName.length)).style.color = fcolor;
		}			
	}		
	if (isIE){
		document.all[id].style.background = bcolor;	
		document.all[id2].style.background = "#ffffff";
		document.all[id3].style.background = "#ffffff";
	}
	else if (isNS){
		document.getElementById(id).style.backgroundColor = bcolor;
	}
}

// show layerOne, layerTwo or layerThree if layer exists
// close previous visible layers
function showLayer(type, hasChild, layerName) {
	var vTop = headerHeight; 
	var parentId = getParentId(layerName);
	var childId = getChildId(layerName);
	var veryLastId =  getVeryLastId(layerName);
	var tempLayerName = "";

	clearMenuTimer();
	
	changeColor(type, layerName, parentId, childId);
	if (isIE) {
    	switch(type)
        	{	
			case 'leftBar':
				currLayer1=layerName;
				if (hasChild == 'Y'){
						
					/* set top position of layerOne */
					vTop += document.all["mi"+ parseInt(layerName.substring(1, layerName.length))].offsetTop;
				}
				break;       

	        		case 'layerOne':
				/* set top position of layerTwo */
				if (hasChild == "Y"){
					eval("document.images."+layerName.replace(".", "_")+".src=arrowOn.src");
					currLayer2=layerName;
					vTop += document.all["mi"+ parseInt(layerName.substring(1, layerName.length))].offsetTop;
					vTop += document.all["si"+parentId+"."+childId].offsetTop - 1;	
				} else {
					currLayer2="";
				}
				currLayer1=prevLayer1;
				break;

			case 'layerTwo':
				if (hasChild == "Y"){
					tempLayerName = layerName.replace(".", "_");
					tempLayerName = tempLayerName.replace(".", "_");
					eval("document.images."+tempLayerName+".src=arrowOn.src");
					currLayer3=layerName;
					vTop += document.all["mi"+ parseInt(getParentId(layerName))].offsetTop;
					vTop += document.all["si"+parentId+"."+childId].offsetTop - 1;	
					vTop += document.all["si"+ parentId + "." + childId + "." + veryLastId].offsetTop - 1;
				} else {
					currLayer3="";
				}
				currLayer2=prevLayer2;
				break;		       

			case 'layerThree':
				currLayer3=prevLayer3;
				break;
     	}
			
		/* show menu layer */
		if (document.all[layerName] != null && hasChild == "Y") {
			document.all[layerName].style.top = vTop;
			document.all[layerName].style.visibility = "visible";	
		}
		
	} else if (isNS) {	
		switch(type)
				{
					case 'leftBar':
						/* set top position of layerOne */
						currLayer1=layerName;
						if (hasChild == "Y"){
							if (parseInt(layerName.substring(1, layerName.length)) > 1) {
								vTop = document.getElementById("mi"+( parseInt(layerName.substring(1, layerName.length)) )).offsetTop;											
							}
						}
						break;		       

					case 'layerOne':
						/* set top position of layerTwo */
						if (hasChild == "Y") {
							eval("document.images."+layerName.replace(".", "_")+".src=arrowOn.src");
							currLayer2=layerName;
							vTop = document.getElementById("si"+parentId+"."+childId).offsetTop;
							vTop += document.getElementById("mi"+(parseInt(parentId))).offsetTop - 1;	
						} else {
							currLayer2="";
						}
						currLayer1=prevLayer1;
						break;

					case 'layerTwo':
						if (hasChild == "Y"){
							tempLayerName = layerName.replace(".", "_");
							tempLayerName = tempLayerName.replace(".", "_");
							eval("document.images."+tempLayerName+".src=arrowOn.src");
							currLayer3=layerName;
							vTop = document.getElementById("mi"+ parseInt(getParentId(layerName))).offsetTop;
							vTop += document.getElementById("si"+parentId+"."+childId).offsetTop - 1;	
							vTop += document.getElementById("si"+ parentId + "." + childId + "." + veryLastId).offsetTop - 1;
						} else {
							currLayer3="";
						}					
						currLayer2=prevLayer2;
						break;		
					case 'layerTwo':
						currLayer3=prevLayer3;
						break;							       
				}
			
		/* show menu layer */
		if (document.getElementById(layerName) != null && hasChild == "Y") {
			document.getElementById(layerName).style.top = vTop;
			document.getElementById(layerName).style.visibility = "visible";	
		}
	}

	/* hide irrelevant layers */
	switch(type)
    {
  	   	case 'leftBar': 
			if (prevLayer1 != currLayer1){
				hideLayer("layerOne", "", prevLayer1);
			}
			if (prevLayer2 != "") {
				hideLayer("layerTwo", "", prevLayer2);	
			}
			if (prevLayer3 != "") {
				hideLayer("layerThree", "", prevLayer3);	
			}
			break;
  	   	case 'layerOne': 
			if (prevLayer2!=currLayer2 && prevLayer2!="") {
				hideLayer("layerOne", "", prevLayer2);
			}
			if (prevLayer3 != "") {
				hideLayer("layerTwo", "", prevLayer3);	
			}
			break;		
		case 'layerTwo':
			if (prevLayer3!=currLayer3 && prevLayer3!="") {
				hideLayer("layerTwo", "", prevLayer3);
			}
			break;
		default:
	}
}

// change layer from visible to hidden
function hideLayer(type, hasChild, layerName){
	/* restore background and font color of menu item */
	restoreColor(type, layerName);
	var parentId = getParentId(layerName);
	var childId = getChildId(layerName);
	var lastId = getLastId(layerName);
	var veryLastId = getVeryLastId(layerName);
	var tempLayerName = "";

	if (isIE) { 
		if (document.all[layerName] != null) {
			document.all[layerName].style.visibility = "hidden";
			if (isLayerOne(layerName)){
				/* if layerOne has child layer, change arrow color */
				if (eval("s" + parentId +"Array"+"\133"+(childId-1)+"\135").hasChild > 0){
					eval("document.images."+layerName.replace(".", "_")+".src=arrowOff.src");
				}
			}
			else if (isLayerTwo(layerName))	{
				if (eval("s" + parentId + '_' + childId + "Array" + "\133"+ (lastId-1)+"\135").hasChild > 0){
					tempLayerName = layerName.replace(".", "_");
					tempLayerName = tempLayerName.replace(".", "_");
					eval("document.images."+tempLayerName+".src=arrowOff.src");
				}
			}
			else if (isLayerThree(layerName)) {
				if (eval("s" + parentId + '_' + childId + "_" + lastId + "Array" + "\133"+ (veryLastId-1)+"\135").hasChild > 0){
					tempLayerName = layerName.replace(".", "_");
					tempLayerName = tempLayerName.replace(".", "_");
					eval("document.images."+tempLayerName+".src=arrowOff.src");
				}
			}
		}
	} else if (isNS) {
		if (document.getElementById(layerName) != null) {
			document.getElementById(layerName).style.visibility = "hidden";
			if (isLayerOne(layerName)){
				/* if layerOne has child layer, change arrow color */
				if (eval("s" + parentId +"Array"+"\133"+(childId-1)+"\135").hasChild > 0){
					eval("document.images."+layerName.replace(".", "_")+".src=arrowOff.src");
				}
			}
			else if (isLayerTwo(layerName)){
				if (eval("s" + parentId + '_' + childId + "Array" + "\133"+ (lastId-1)+"\135").hasChild > 0){
					tempLayerName = layerName.replace(".", "_");
					tempLayerName = tempLayerName.replace(".", "_");
					eval("document.images."+tempLayerName+".src=arrowOff.src");
				}
			}
			else if (isLayerThree(layerName)){
				if (eval("s" + parentId + '_' + childId + "_" + lastId + "Array" + "\133"+ (veryLastId-1)+"\135").hasChild > 0){
					tempLayerName = layerName.replace(".", "_");
					tempLayerName = tempLayerName.replace(".", "_");
					eval("document.images."+tempLayerName+".src=arrowOff.src");
				}
			}						
		}
	}
}

// set a timer for hiding dhtml layers
function menuTimer(type, hasChild, layerName){
	
	var parentId = getParentId(layerName);
	var childId = getChildId(layerName);
	var lastId = getLastId(layerName);
	var veryLastId = getVeryLastId(layerName);

	clearMenuTimer();
	
	switch(type)
    {
		case 'leftBar':
			
			mt1 = setTimeout("hideLayer(\"" + type + "\"," + "\"" + hasChild + "\"," + "\""+layerName+"\")", mtimeout);	
			mt2 = 1;
			mt3 = 1;
			mt4 = setTimeout("resetStates()", mtimeout);	
			prevLayer1 = currLayer1;
			currLayer1 = "";
			break;
	
        case 'layerOne': 
        			
			mt1 = setTimeout("hideLayer(\"" + type + "\"," + "\"" + hasChild + "\"," + "\"s" + parentId + "\")", mtimeout);
			if (hasChild == "N") {
				mt2 = 1;
				restoreColor(type, layerName);	
			} else {	
				mt2 = setTimeout("hideLayer(\"" + type + "\"," + "\"" + hasChild + "\"," + "\"s" + parentId + "." + childId + "\")", mtimeout);	
			}	
			mt3 = 1;
			mt4 = setTimeout("resetStates()", mtimeout);	
			prevLayer2 = currLayer2;
			currLayer2 = "";
			break;
			
		case 'layerTwo':
			mt1 = setTimeout("hideLayer(\"" + type + "\"," + "\"" + hasChild + "\"," + "\"s" + parentId + "\")", mtimeout);
			mt2 = setTimeout("hideLayer(\"" + type + "\"," + "\"" + hasChild + "\"," + "\"s" + parentId + "." + childId + "\")", mtimeout);
			if (hasChild == "N"){ 
				mt3 = 1;
				restoreColor(type, layerName);
			}
			else{
				mt3 = setTimeout("hideLayer(\"" + type + "\"," + "\"" + hasChild + "\"," + "\"s" + parentId + "." + childId + "." + lastId +"\")", mtimeout);	 
			}
			mt4 = setTimeout("resetStates()", mtimeout);	
			prevLayer3 = currLayer3;
			currLayer3 = "";
			break;

		case 'layerThree':
			mt1 = setTimeout("hideLayer(\"" + type + "\"," + "\"" + hasChild + "\"," + "\"s" + parentId + "\")", mtimeout);
			mt2 = setTimeout("hideLayer(\"" + type + "\"," + "\"" + hasChild + "\"," + "\"s" + parentId + "." + childId + "\")", mtimeout);
			mt3 = setTimeout("hideLayer(\"" + type + "\"," + "\"" + hasChild + "\"," + "\"s" + parentId + "." + childId + "." + lastId +"\")", mtimeout);	 
			mt4 = setTimeout("resetStates()", mtimeout);	
			restoreColor(type, layerName);	
			break;
	}
	menuTimerRunning = true;	
	
}

// clear menu timer
function clearMenuTimer(){
	if (menuTimerRunning){
		clearTimeout(mt1);
		clearTimeout(mt2);
		clearTimeout(mt3);
		clearTimeout(mt4);
		menuTimerRunning = false;
	}
}

// reset state variables
function resetStates() {
	prevLayer1 = "";
	prevLayer2 = "";
	prevLayer3 = "";
	currLayer1 = "";
	currLayer2 = "";
	currLayer3 = "";
	menuTimerRunning = false;
}

// end functions section

//-->
