var bL = new Array();
var bI = 0;
var bLD = new Array();
var bID = 0;
var mDT = "";
var mUT = "";
var onState = "";

function initMenu(tar,dir,MA,On){
	onState = On;
	if(dir == "down"){
		mDT = tar;
		for(var i = 0; i < MA.length; i++){			
			buildMenuDown(MA[i].pageid,2,MA[i].hoffset,MA[i].voffset,MA[i].animate);
		}
		MenuDown();
	}else if(dir == "up"){
		mUT = tar;
		for(var i = 0; i < MA.length; i++){
			buildMenuUp(MA[i].pageid,2,MA[i].hoffset,MA[i].voffset,MA[i].animate);
		}
		MenuUp();
	}else{
		alert("Menu can only go up or down. please fix :)")
	}
}
function CheckPosition(myB){
	var offset = $("#"+mDT+"_" + myB).offset();
	var subMenuHeight = $("#L2_" + myB).height();
	var chOffset = $("#L2_" + myB).attr("hoffset");
	var cvOffset = $("#L2_" + myB).attr("voffset");
	if(isNaN(chOffset)){
		if(chOffset == "center"){
			var pWidth = $("#"+mDT+"_" + myB).width();
			var mWidth = $("#L2_" + myB).width();
			CBL(myB,offset.left + ((pWidth/2)-(mWidth/2)));
		}else{
			CBL(myB,offset.left);
		}
	}else{
		CBL(myB,offset.left + parseInt(chOffset));
	}
	if(!isNaN(cvOffset)){
		CBT(myB,offset.top + $("#"+mDT+"_" + myB).height() + parseInt(cvOffset));
	}
}
function CBL(myB,myO){
	if($.browser.msie){
		$("#L2_" + myB).css("left",(myO) + "px");
	}else if($.browser.mozilla){
		$("#L2_" + myB).css("left",(myO+1) + "px");
	}else{
		$("#L2_" + myB).css("left",(myO) + "px");
	}
}
function CBT(myB,myO){
	if($.browser.msie){
		$("#L2_" + myB).css("top",(myO) + "px");
	}else{
		$("#L2_" + myB).css("top",myO + "px");
	}
}
function MenuDown(){
	var t;
	var t2;
	var MenuToClose;
	var CurrentZIndex = 1000;
	for(var i = 0; i < bLD.length; i++){
		var offset = $("#"+mDT+"_" + bLD[i]).offset();
		var subMenuHeight = $("#L2_" + bLD[i]).height();
		var chOffset = $("#L2_" + bLD[i]).attr("hoffset");
		var cvOffset = $("#L2_" + bLD[i]).attr("voffset");
		if(isNaN(chOffset)){
			if(chOffset == "center"){
				var pWidth = $("#"+mDT+"_" + bLD[i]).width();
				var mWidth = $("#L2_" + bLD[i]).width();
				CBL(bLD[i],offset.left + ((pWidth/2)-(mWidth/2)));
			}else{
				CBL(bLD[i],offset.left);
			}
		}else{
			CBL(bLD[i],offset.left + parseInt(chOffset));
		}
		if(!isNaN(cvOffset)){
			CBT(bLD[i],offset.top + $("#"+mDT+"_" + bLD[i]).height() + parseInt(cvOffset));
		}
		$("#L2_" + bLD[i]+ " #holder").css("position","relative");
		$("#L2_" + bLD[i]).css("overflow","hidden");
		$("#L2_" + bLD[i]).css("width",$("#L2_" +  bLD[i]).width()+"px");
		$("#L2_" + bLD[i]).css("height",$("#L2_" +  bLD[i]).height()+"px");
		$("#L2_" + bLD[i]+" #holder").css("top","-" + $("#L2_" +  bLD[i]).height()+"px");
	}
	$("#"+mDT+" li a").hover(
      function () {
		var buttonID = $(this).attr("id").substring(mDT.length+1,$(this).attr("id").length);
		CheckPosition(buttonID);
		if(buttonID == MenuToClose){
			clearTimeout(t2);
		}
		var subMenuHeight = $("#L2_" + buttonID).height();
		
		for(var i = 0; i < bLD.length; i++){
			if(buttonID == bLD[i]){
				$("#L2_" + bLD[i]).css("z-index",CurrentZIndex + 1);
			}else{
				$("#L2_" + bLD[i]).css("z-index",CurrentZIndex);
			}
		}
		$("#L2_" +  buttonID+" #holder").stop();
		 $("#L2_" +  buttonID+" #holder").queue("fx", []);
		$("#L2_" +  buttonID+" #holder").dequeue();
		$("#L2_" + buttonID).show(0);
		var cAnimate = $("#L2_" + buttonID).attr("animate");
		if(isNaN(cAnimate)){
			if(cAnimate == "false"){
				$("#L2_" + buttonID+" #holder").animate({top: 0},1);
			}else if(cAnimate == "true"){
				$("#L2_" + buttonID+" #holder").animate({top: 0},250);
			}else{
				$("#L2_" + buttonID+" #holder").animate({top: 0},1);
			}
		}else{
			$("#L2_" + buttonID+" #holder").animate({top: 0},parseInt(cAnimate));
		}
      }, 
      function () {
	   var buttonID = $(this).attr("id").substring(mDT.length+1,$(this).attr("id").length);
	   MenuToClose = buttonID;
		for(var i = 0; i < bLD.length; i++){
			if(MenuToClose == bLD[i]){
				t = setTimeout(function(){
					var cAnimate = $("#L2_" + MenuToClose).attr("animate");
					if(isNaN(cAnimate)){
						if(cAnimate == "false"){
							$("#L2_" + MenuToClose+" #holder").animate({top: "-" + $("#L2_" + MenuToClose).height()},1);
						}else if(cAnimate == "true"){
							$("#L2_" + MenuToClose+" #holder").animate({top: "-" + $("#L2_" + MenuToClose).height()},250);
						}else{
							$("#L2_" + MenuToClose+" #holder").animate({top: "-" + $("#L2_" + MenuToClose).height()},1);
						}
					}else{
						$("#L2_" + MenuToClose+" #holder").animate({top: "-" + $("#L2_" + MenuToClose).height()},parseInt(cAnimate));
					}					
					$("#L2_" +  MenuToClose+" #holder").queue(function () {
					
					$(this).parent().hide();
					$(this).dequeue();
				});		
				},50);
			}else{
				
				var cAnimate = $("#L2_" + bLD[i]).attr("animate");
				if(isNaN(cAnimate)){
					if(cAnimate == "false"){
						$("#L2_" + bLD[i]+" #holder").animate({top: "-" + $("#L2_" + bLD[i]).height()},1);
					}else if(cAnimate == "true"){
						$("#L2_" + bLD[i]+" #holder").animate({top: "-" + $("#L2_" + bLD[i]).height()},250);
					}else{
						$("#L2_" + bLD[i]+" #holder").animate({top: "-" + $("#L2_" + bLD[i]).height()},1);
					}
				}else{
					$("#L2_" + bLD[i]+" #holder").animate({top: "-" + $("#L2_" + bLD[i]).height()},parseInt(cAnimate));
				}	
				$("#L2_" +  bLD[i]+" #holder").queue(function () {
					
					$(this).parent().hide();
					$(this).dequeue();
				});	
			}
		}
      }
    );
	
	$(".subMenu").hover(
      function () {
      	clearTimeout(t);
		var myID = $(this).attr("id").substring(3,$(this).attr("id").length);
		$("#"+mDT+"_"+myID).addClass("on");		
      }, 
      function () {
		t2 = setTimeout(function(){
			var cAnimate = $("#L2_" + MenuToClose).attr("animate");
			if(isNaN(cAnimate)){
				if(cAnimate == "false"){
					$("#L2_" + MenuToClose+" #holder").animate({top: "-" + $("#L2_" + MenuToClose).height()},1);
				}else if(cAnimate == "true"){
					$("#L2_" + MenuToClose+" #holder").animate({top: "-" + $("#L2_" + MenuToClose).height()},250);
				}else{
					$("#L2_" + MenuToClose+" #holder").animate({top: "-" + $("#L2_" + MenuToClose).height()},1);
				}
			}else{
				$("#L2_" + MenuToClose+" #holder").animate({top: "-" + $("#L2_" + MenuToClose).height()},parseInt(cAnimate));
			}					
			$("#L2_" +  MenuToClose+" #holder").queue(function () {
				$(this).parent().hide();
				$(this).dequeue();
			});	
		},50);
		var myID = $(this).attr("id").substring(3,$(this).attr("id").length);
		if(myID != onState){
			$("#"+mDT+"_"+myID).removeClass("on");
		}
      }
    );
}
function buildMenuDown(pageID, level, chO, cvO, cA){
	bLD[bID++] = pageID;
	var firstItem = true;
	var menuString = "";
	if(pageID == onState){
		$("#"+mDT+"_"+pageID).addClass("on");	
	}
	for(var i = 0; i < pageList.length; i++){
		if(pageList[i].parentID == pageID && pageList[i].level == level){
			if(firstItem){
				menuString = "<div id='L2_"+pageID+"' class='subMenu'>";
				menuString+= "<div id='holder'><div id='menu-header'><!-- --></div>"
			}
			target = ""
			if(pageList[i].target) target = " target=\"_blank\"";
			menuString += "<a class='subMenuItems' href='" + pageList[i].pageURL + "'" + target + "><span>" + pageList[i].pageName + "</span></a>";
			firstItem = false;
		}
	}
	if(menuString.length > 0){
		menuString+= "<div id='menu-footer'><!-- --></div>"
		menuString += "</div></div>";
		$("#"+mDT).after(menuString);
		if(chO == undefined){
			chO = "none";
		}
		if(cvO == undefined){
			cvO = 0;
		}
		$("#L2_"+pageID).attr("hoffset",chO)
		$("#L2_"+pageID).attr("voffset",cvO)
		$("#L2_"+pageID).attr("animate",cA)
	}
}


function CheckPositionUp(myB){
	var offset = $("#"+mUT+"_" + myB).offset();
	var subMenuHeight = $("#L2_" + myB).height();
	var chOffset = $("#L2_" + myB).attr("hoffset");
	var cvOffset = $("#L2_" + myB).attr("voffset");
	if(isNaN(chOffset)){
		if(chOffset == "center"){
			var pWidth = $("#"+mUT+"_" + myB).width();
			var mWidth = $("#L2_" + myB).width();
			$("#L2_" + myB).css("left",(offset.left + ((pWidth/2)-(mWidth/2))) + "px");
		}else{
			$("#L2_" + myB).css("left",offset.left + "px");
		}
	}else{
		$("#L2_" + myB).css("left",(offset.left + parseInt(chOffset)) + "px");
	}
	if(!isNaN(cvOffset)){
		CBT_UP(myB,(offset.top - subMenuHeight) + parseInt(cvOffset));
	}
}
function CBT_UP(myB,myO){
	if($.browser.mozilla){
		$("#L2_" + myB).css("top",(myO) + "px");
	}else{
		$("#L2_" + myB).css("top",myO + "px");
	}
}
function MenuUp(){
	var t;
	var t2;
	var MenuToClose;
	var CurrentZIndex = 1000;
	for(var i = 0; i < bL.length; i++){
		var offset = $("#"+mUT+"_" + bL[i]).offset();
		var subMenuHeight = $("#L2_" + bL[i]).height();
		var chOffset = $("#L2_" + bL[i]).attr("hoffset");
		var cvOffset = $("#L2_" + bL[i]).attr("voffset");
		if(isNaN(chOffset)){
			if(chOffset == "center"){
				var pWidth = $("#"+mUT+"_" + bL[i]).width();
				var mWidth = $("#L2_" + bL[i]).width();
				$("#L2_" + bL[i]).css("left",(offset.left + ((pWidth/2)-(mWidth/2))) + "px");
			}else{
				$("#L2_" + bL[i]).css("left",offset.left + "px");
			}
		}else{
			$("#L2_" + bL[i]).css("left",(offset.left + parseInt(chOffset)) + "px");
		}
		if(!isNaN(cvOffset)){
			CBT_UP(bL[i],(offset.top - subMenuHeight) + parseInt(cvOffset));
		}
		
		$("#L2_" + bL[i]).attr("endMove",(offset.top - subMenuHeight))
		$("#L2_" + bL[i]).attr("startMove",(offset.top))
		$("#L2_" + bL[i]+ " #holder").css("position","relative");
		$("#L2_" + bL[i]).css("overflow","hidden");
		$("#L2_" + bL[i]).css("width",$("#L2_" +  bL[i]).width()+"px");
		$("#L2_" + bL[i]).css("height",$("#L2_" +  bL[i]).height()+"px");
		$("#L2_" + bL[i]+" #holder").css("top", $("#L2_" +  bL[i]).height()+"px");
	}
	$("#"+mUT+" li a").hover(
      function () {
		var buttonID = $(this).attr("id").substring(mUT.length+1,$(this).attr("id").length);
		CheckPositionUp(buttonID);
		if(buttonID == MenuToClose){
			clearTimeout(t2);
		}
		for(var i = 0; i < bL.length; i++){
			if(buttonID == bL[i]){
				$("#L2_" + bL[i]).css("z-index",CurrentZIndex + 1);
			}else{
				$("#L2_" + bL[i]).css("z-index",CurrentZIndex);
			}
		}		
		$("#L2_" +  buttonID+" #holder").stop();
		 $("#L2_" +  buttonID+" #holder").queue("fx", []);
		$("#L2_" +  buttonID+" #holder").dequeue();
		$("#L2_" + buttonID).show(0);
		
		var cAnimate = $("#L2_" + buttonID).attr("animate");
		if(isNaN(cAnimate)){
			if(cAnimate == "false"){
				$("#L2_" + buttonID+" #holder").animate({top: 0},1);
			}else if(cAnimate == "true"){
				$("#L2_" + buttonID+" #holder").animate({top: 0},250);
			}else{
				$("#L2_" + buttonID+" #holder").animate({top: 0},1);
			}
		}else{
			$("#L2_" + buttonID+" #holder").animate({top: 0},parseInt(cAnimate));
		}
      }, 
      function () {
	   var buttonID = $(this).attr("id").substring(mUT.length+1,$(this).attr("id").length);
	   MenuToClose = buttonID;
		for(var i = 0; i < bL.length; i++){
			if(MenuToClose == bL[i]){
				t = setTimeout(function(){
					var cAnimate = $("#L2_" + MenuToClose).attr("animate");
					if(isNaN(cAnimate)){
						if(cAnimate == "false"){
							$("#L2_" + MenuToClose+" #holder").animate({top: $("#L2_" + MenuToClose).height()},1);
						}else if(cAnimate == "true"){
							$("#L2_" + MenuToClose+" #holder").animate({top: $("#L2_" + MenuToClose).height()},250);
						}else{
							$("#L2_" + MenuToClose+" #holder").animate({top: $("#L2_" + MenuToClose).height()},1);
						}
					}else{
						$("#L2_" + MenuToClose+" #holder").animate({top: $("#L2_" + MenuToClose).height()},parseInt(cAnimate));
					}
					
					$("#L2_" +  MenuToClose+" #holder").queue(function () {
					$(this).parent().hide();
					$(this).dequeue();
				});		
				},50);
			}else{
				var cAnimate = $("#L2_" + bL[i]).attr("animate");
				if(isNaN(cAnimate)){
					if(cAnimate == "false"){
						$("#L2_" + bL[i]+" #holder").animate({top: $("#L2_" + bL[i]).height()},1);
					}else if(cAnimate == "true"){
						$("#L2_" + bL[i]+" #holder").animate({top: $("#L2_" + bL[i]).height()},250);
					}else{
						$("#L2_" + bL[i]+" #holder").animate({top: $("#L2_" + bL[i]).height()},1);
					}
				}else{
					$("#L2_" + bL[i]+" #holder").animate({top: $("#L2_" + bL[i]).height()},parseInt(cAnimate));
				}	
				$("#L2_" +  bL[i]+" #holder").queue(function () {
					$(this).parent().hide();
					$(this).dequeue();
				});	
			}
		}
      }
    );
	
	$(".subMenuUp").hover(
      function () {
		clearTimeout(t);
		var myID = $(this).attr("id").substring(3,$(this).attr("id").length);
		$("#"+mUT+"_"+myID).addClass("on");		
      }, 
      function () {
		t2 = setTimeout(function(){
			var cAnimate = $("#L2_" + MenuToClose).attr("animate");
			if(isNaN(cAnimate)){
				if(cAnimate == "false"){
					$("#L2_" + MenuToClose+" #holder").animate({top: $("#L2_" + MenuToClose).height()},1);
				}else if(cAnimate == "true"){
					$("#L2_" + MenuToClose+" #holder").animate({top: $("#L2_" + MenuToClose).height()},250);
				}else{
					$("#L2_" + MenuToClose+" #holder").animate({top: $("#L2_" + MenuToClose).height()},1);
				}
			}else{
				$("#L2_" + MenuToClose+" #holder").animate({top: $("#L2_" + MenuToClose).height()},parseInt(cAnimate));
			}
			$("#L2_" +  MenuToClose+" #holder").queue(function () {
				$(this).parent().hide();
				$(this).dequeue();
			});	
		},50);
		var myID = $(this).attr("id").substring(3,$(this).attr("id").length);
		if(myID != onState){
			$("#"+mUT+"_"+myID).removeClass("on");
		}
      }
    );
}

function buildMenuUp(pageID,level,chO,cvO,cA){
	bL[bI++] = pageID;
	var firstItem = true;
	var menuString = "";
	if(pageID == onState){
		$("#"+mUT+"_"+pageID).addClass("on");	
	}
	for(var i = pageList.length-1; i > 0; i--){
		if(pageList[i].parentID == pageID && pageList[i].level == level){
			if(firstItem){
				menuString = "<div id='L2_"+pageID+"' class='subMenuUp'>";
				menuString+= "<div id='holder'><div id='menu-header'><!-- --></div>"
			}
			target = ""
			if(pageList[i].target) target = " target=\"_blank\"";
			menuString += "<a class='subMenuItemsUp' href='" + pageList[i].pageURL + "'" + target + "><span>" + pageList[i].pageName + "</span></a>";
			firstItem = false;
		}
	}
	if(menuString.length > 0){
		menuString+= "<div id='menu-footer'><!-- --></div>"
		menuString += "</div></div>";
		$("#" + mUT).after(menuString);
		if(chO == undefined){
			chO = "none";
		}
		if(cvO == undefined){
			cvO = 0;
		}
		$("#L2_"+pageID).attr("hoffset",chO);
		$("#L2_"+pageID).attr("voffset",cvO);
		$("#L2_"+pageID).attr("animate",cA);
	}
}