function menuObject(){
	this.dataObject = new menuDataObject();
	this.offsetId = 0;
	this.includeFrontPage = false;
	this.dataObject.offsetId = this.offsetId;
	this.dataObject.includeFrontPage = this.includeFrontPage;
	
	this.top=0;
	this.className=""
	this.mainMenuObjects = new Array();
	this.allMenuObjects = new Array();
	
	//EXTERNAL FUNCTIONS
	this.createMenu=__createMenu;
	
	
	
	//INTERNAL FUNCTIONS	
	this.createSubMenu = __createSubMenu;
	
	
	return this;
}

function menuViewObject(){
	this.viewDivObj = null;
	this.viewTableObj = null;
	this.viewTdObj = null;
	
	this.childViewObj = null;
	this.parentViewObj = null;
	
	return this
}





function __createMenu(){
	var menuArr = this.dataObject.topMenues
	var retStr, divObj, i, vObj, tmp, isFirst=true, borderStyle="", startClass, endClass
	
	
	for(i=0;i<menuArr.length;i++){ // all level 1 menues
		if(this.includeFrontPage || (!this.includeFrontPage && !menuArr[i].isFront)){
			divObj = document.createElement("DIV")
			document.body.appendChild(divObj)
			
				startClass="buttonStart";
				endClass="buttonEnd";
			
				retStr = "<table border='0' cellspacing='0' style='' cellpadding='0' id='menuTbl_" + menuArr[i].id + "'><tr>";			
				retStr += "<td style='border-style:solid; border-width:0px 0px 0px 1px; border-color:#FFFFFF;' id='startMenuCell_" + menuArr[i].id + "'><img src='/gfx/spacer.gif'></td>"
				if(menuArr[i].childs.length<1){
					retStr += "<td  class='" + this.className + "' style='padding:0px 20px 0px 20px; white-space:nowrap; cursor:hand;'  id='menuCell_"+menuArr[i].id+"' onclick=\"document.location='" + menuArr[i].url + "&mid="+menuArr[i].id+"'\" onmouseOut='mainOut(" + menuArr[i].id + ",this)' onmouseOver='mainOver(" + menuArr[i].id + ")'>"+menuArr[i].title+"</td>"
				}else{
					retStr += "<td  class='" + this.className + "' style='padding:0px 20px 0px 20px; white-space:nowrap; cursor:default;'  id='menuCell_"+menuArr[i].id+"' aonclick=\"document.location='" + menuArr[i].url + "&mid="+menuArr[i].id+"'\" onmouseOut='mainOut(" + menuArr[i].id + ",this)' onmouseOver='mainOver(" + menuArr[i].id + ")'>"+menuArr[i].title+"</td>"
				}
				
				retStr += "</tr></table>"
				divObj.innerHTML = retStr;
				divObj.style.visibility = "hidden";
				divObj.style.position="absolute";
				divObj.style.top=this.top
				divObj.style.height=10
				divObj.style.left="0"

			divObj.id = "mContainer_" + menuArr[i].id;	
			
			viewObj = this.mainMenuObjects[this.mainMenuObjects.length] = new menuViewObject()
			
			viewObj.viewDivObj = divObj;
			viewObj.viewTableObj = document.getElementById("menuTbl_" + menuArr[i].id)
			viewObj.viewTdObj = document.getElementById("menuCell_" + menuArr[i].id)
			this.allMenuObjects[this.allMenuObjects.length]=viewObj;
			//divObj;
			
			//Submenu
			this.createSubMenu(menuArr[i],viewObj)
			isFirst?isFirst=false:null;
		}
	}
}

function __createSubMenu(pObj,vObj){
	if(pObj.childs.length>0){
			var retStr="";
			var divObj, i, tmpMVO;
			divObj = document.createElement("DIV")
			document.body.appendChild(divObj)
			retStr = "<table border='0' class='subMenu' width=100% cellspacing='0' cellpadding='0' id='childMenuTbl_" + pObj.id + "'>"
			for(i=0;i<pObj.childs.length;i++){
				if(pObj.childs[i].childs.length>0){
					retStr += "<tr><td bgcolor='#FFFFFF'  class='subMenu' style='cursor:default;' onmouseOut='subOut(" + pObj.childs[i].id + ",this)' onmouseOver='subOver(" + pObj.childs[i].id + ",this," + pObj.id + ")' id='childMenuCell_"+pObj.childs[i].id+"'>" + pObj.childs[i].title + "</td></tr>"
				}else{
					retStr += "<tr><td bgcolor='#FFFFFF'  class='subMenu' onclick='document.location=\"" + pObj.childs[i].url + "&mid="+pObj.id+"&scid="+pObj.childs[i].id+"\"' onmouseOut='subOut(" + pObj.childs[i].id + ",this)' onmouseOver='subOver(" + pObj.childs[i].id + ",this," + pObj.id + ")' id='childMenuCell_"+pObj.childs[i].id+"'>" + pObj.childs[i].title + "</td></tr>"
				}
				this.createSubMenu(pObj.childs[i]) //recurse
			}
			
			retStr += "</table>"
			
			divObj.innerHTML = retStr;
			divObj.style.visibility = "hidden";
			divObj.style.position="absolute";
			divObj.style.top="0"
			divObj.style.left="0"
			divObj.style.width="100"
			divObj.style.zIndex="1000"
			divObj.id = "childMenuContainer_" + pObj.id;	
			divObj.innerHTML = retStr;

			tmpMVO = new menuViewObject();
			tmpMVO.viewDivObj = divObj
			tmpMVO.viewTableObj = document.getElementById("childMenuTbl_" + pObj.id)
			
			if(vObj){
				vObj.childViewObj = tmpMVO;	
				this.allMenuObjects[this.allMenuObjects.length]=tmpMVO
			}
		}
}



/*************************Functions for the display things ***************************************/
var menuTimer;
function hideShowingDivs(divObj){
	divObj.style.visibility="hidden";
	divObj.style.display="none";
	if(divObj.showingDiv)
		hideShowingDivs(divObj.showingDiv);
}

function hideAllDivs(id){
	oDivs = document.body.getElementsByTagName("DIV");
	for(i=0;i<oDivs.length;i++){
		if(oDivs[i].id.toString().indexOf("menuContainer_")>-1 || oDivs[i].id.toString().indexOf("childMenuContainer_")>-1){
			oDivs[i].showingDiv=null;
			if(oDivs[i].id!="menuContainer_2"){
				oDivs[i].style.visibility="hidden";
				oDivs[i].style.display="none";
			}
		}
	}
	document.showingEl=null;
}

document.menuTimer=null;
document.menuDisplayedId=null;
document.showingEl=null;
document.activeMainMenu=null;
document.useFilter=4
document.effectTime=0.2
document.filt = new Array()
document.filt[1] = "progid:DXImageTransform.Microsoft.Pixelate(maxSquare=50,duration=0.2)"
document.filt[2] = "progid:DXImageTransform.Microsoft.RandomDissolve(duration=0.5)"
document.filt[3] = "progid:DXImageTransform.Microsoft.Slide(slidestyle=PUSH,Bands=2)"
document.filt[4] = "progid:DXImageTransform.Microsoft.Fade(Overlap=0.5,percent=11,Duration="+document.effectTime+")"
document.filt[5] = "progid:DXImageTransform.Microsoft.Checkerboard(Direction=right,SquaresX=50,SquaresY=50)"
document.filt[6] = "progid:DXImageTransform.Microsoft.Iris(irisstyle=circle,motion=in)"
document.filt[7] = "progid:DXImageTransform.Microsoft.Stretch(stretchstyle=SPIN)"
document.filt[8] = "progid:DXImageTransform.Microsoft.Opacity(opacity=10,style=0)"


function mainOver(id){
	var mainContainer, childContainer, buttons = new Array();
	var mainContainerDisplayed, childContainerDisplayed, buttonsDisplayed = new Array();
	var idDisplayed = document.menuDisplayedId
	if(document.menuTimer){
			window.clearTimeout(document.menuTimer);
			document.menuTimer=null;
	}
	
	if(id==idDisplayed){
		return false;
	}
	hideAllDivs();
	mainContainer = document.getElementById("mContainer_" + id);
	childContainer = document.getElementById("childMenuContainer_" + id);
	
	buttons[0] = document.getElementById('menuCell_' + id);
	

	mainContainerDisplayed = document.getElementById("mContainer_" + idDisplayed);
	childContainerDisplayed = document.getElementById("childMenuContainer_" + idDisplayed);
	
	buttonsDisplayed[0] = document.getElementById('menuCell_' + idDisplayed);
	
	
	for(button in buttonsDisplayed){		
		if(buttonsDisplayed[button]){
			buttonsDisplayed[button].orgClassName?buttonsDisplayed[button].className = buttonsDisplayed[button].orgClassName:null;
		}
	}
	
	for(button in buttons){
		buttons[button].orgClassName = buttons[button].className;
		buttons[button].className += "Hover";
	}	
		
	if(!mainContainer.oldZ){
		mainContainer.oldZ = mainContainer.style.zIndex;
		mainContainer.style.zIndex = mainContainer.style.zIndex + 2
	}


	
	
	if(mainContainerDisplayed && mainContainerDisplayed!=mainContainer){
		__mainOut(idDisplayed);
	}

	
	if(childContainer && childContainer!=childContainerDisplayed){
		if(document.all){
			childContainer.style.filter='progid:DXImageTransform.Microsoft.Fade(Overlap=0.5,percent=11,Duration=0.2) alpha(opacity=90) ';
			childContainer.filters[0].apply();
			childContainer.style.visibility="visible";
			childContainer.style.display="block";
			childContainer.filters[0].play();
		}else{
			childContainer.style.visibility="visible";
			childContainer.style.display="block";
			childContainer.style.opacity=0.0;
			setOpIn(99,10,childContainer.id)
		}
	}
	document.menuDisplayedId = id;
}


function mainOut(id){	
	var dObj
	document.menuTimer=window.setTimeout("__mainOut('"+id+"')",500)
}

function __mainOut(id){
	var mainContainer, childContainer, buttons = new Array();
	mainContainer = document.getElementById("mContainer_" + document.menuDisplayedId);
	childContainer=document.getElementById("childMenuContainer_" + document.menuDisplayedId);
	
	buttons[0]  = document.getElementById('menuCell_' + id)

	
	for(button in buttons){
		buttons[button]?buttons[button].className = buttons[button].orgClassName:null;
	}
		
	mainContainer?mainContainer.style.zIndex = mainContainer.oldZ:null;
	mainContainer?mainContainer.oldZ=null:null;
		
	if(childContainer){
		if(document.all){
			childContainer.filters[0].apply();
			childContainer.style.visibility="hidden"
			childContainer.filters[0].play();
		}else{
			setOpOut(0,10,childContainer.id)
		}
	}
	
	document.activeMainMenu=null
	document.showingEl=null
	document.menuDisplayedId = null;
}

function subOver(childId, obj, ownId){
	if(document.menuTimer){window.clearTimeout(document.menuTimer);document.menuTimer=null}
	childDivObj = document.getElementById("childMenuContainer_" + childId);
	ownDivObj = document.getElementById("childMenuContainer_" + ownId);
	ownTdObj = obj;
	
	if(ownDivObj.showingDiv){
		
		if(ownDivObj.showingDiv!=childDivObj)
			hideShowingDivs(ownDivObj.showingDiv)
	}
	ownTdObj.className="subMenuHover"
	
	leftOffset = parseInt(ownDivObj.style.left) + parseInt(ownTdObj.offsetWidth)+1
	topOffset = parseInt(ownTdObj.offsetTop) + parseInt(ownDivObj.style.top)-0
		
	if(childDivObj){		
		childDivObj.style.top=topOffset;
		childDivObj.style.left=leftOffset;
		childDivObj.style.visibility="visible";
		childDivObj.style.display = "block";
		ownDivObj.showingDiv=childDivObj;
	}
}

function subOut(id, obj){
	obj.className="subMenu"
	document.menuTimer=window.setTimeout("__subOut('"+id+"','"+obj.id+"')",500)	
}

function __subOut(id, obj){
	subDiv=document.getElementById("childMenuContainer_" + document.menuDisplayedId);
		if(subDiv){
			if(document.all){
				subDiv.filters[0].apply();
				subDiv.style.visibility="hidden"
				subDiv.filters[0].play();
			}else{
				setOpOut(0,10,subDiv.id)
			}
		}
	document.showingEl=null
	
	
	var buttons = new Array();
	
	buttons[0]  = document.getElementById('menuCell_' + document.menuDisplayedId)

	
	for(button in buttons){
		buttons[button]?buttons[button].className = buttons[button].orgClassName:null;
	}
		
	dObj = document.getElementById("mContainer_" + document.menuDisplayedId)
	dObj.style.zIndex = dObj.oldZ
	dObj.oldZ=null;
	 document.menuDisplayedId = null;
	document.menuTimer = window.setTimeout('hideAllDivs()',100)
}


function setOpIn(end,jmp,objId){
	obj=document.getElementById(objId)
	if(end<=obj.style.opacity*100+jmp){
		obj.style.opacity=end/100;
	}else{
		obj.style.opacity=parseFloat(obj.style.opacity)+(parseFloat((jmp/100)));
		window.setTimeout("setOpIn("+end+","+jmp+",'"+objId+"')",30)
	}
}

function setOpOut(end,jmp,objId){
	obj=document.getElementById(objId)
	if(obj.style.opacity*100-jmp<=end){
		obj.style.opacity=end/100;
		obj.style.visibility="hidden";
	}else{
		obj.style.opacity=parseFloat(obj.style.opacity)-(parseFloat((jmp/100)));
		window.setTimeout("setOpOut("+end+","+jmp+",'"+objId+"')",30)
	}
}