var IE = document.all?true:false
var Ie = /msie/i.test(navigator.userAgent);
if (!IE) document.captureEvents(Event.MOUSEMOVE)

document.onmousemove = getMouseXY;

var tempX = 0
var tempY = 0
var tempMouse = new Array(9);
var effectTime;
var effectTime2;
var mouseTimer;
var mouseTimer2;

function getMouseXY(e) {
  if (IE) { 
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } else { 
    tempX = e.pageX
    tempY = e.pageY
  }  
 
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
  
  return true
}
	function createEl(t, a, y, x) {
    	var e = document.createElement(t);
   		if (a) {
        	for (var k in a) {
            	if (k == 'class')
					e.className = a[k];
            	else if (k == 'id')
					e.id = a[k];
            	else e.setAttribute(k, a[k]);
        	}
    	}
    	if (y) { for (var k in y) e.style[k] = y[k]; }
    	if (x) { e.appendChild(document.createTextNode(x)); }
    	return e;
	}
	
	function ReboundMenu(){
		
	}
	
	ReboundMenu.prototype.setHeight = function(height){
		this.itemHeight = height;
	}
	
	ReboundMenu.prototype.getName = function(){
		return this.name;
	}
			
	ReboundMenu.prototype.init = function(mainItems,subItems,name){			
			this.mainItems = mainItems;
			this.subItems = subItems;
			this.name = name;
			
			var temp = new Array(this.mainItems.length);
			
			this.mainItemsPosition = temp;
			
			for(id=0;id<this.mainItems.length;id++){
				
				var itemDiv = new Array();
				var Divheight = this.mainItems[id].length * this.itemHeight+1; 
								
				for(i=0;i<this.mainItems[id].length;i++){
					itemDiv[i] = document.createElement("DIV");
					itemDiv[i].innerHTML = this.mainItems[id][i].text;
					itemDiv[i].style.position = "absolute";
					itemDiv[i].style.left = "0px";
					itemDiv[i].style.top = "0px";
					itemDiv[i].id = "menuItem_"+id+i;
					itemDiv[i].style.display = "none";
					itemDiv[i].style.zIndex = 1;
					
					subID = this.mainItems[id][i].subID-1;
					if(this.subItems[subID]){
						this.createSubmenu(subID);
					}
					
					if(window.addEventListener){
						itemDiv[i].addEventListener('click',Function("setLink('"+this.mainItems[id][i].link+"','"+this.mainItems[id][i].linkType+"')"), false);
						itemDiv[i].addEventListener('mouseover',eval(this.getName()+".setClass('"+itemDiv[i].id+"','ReboundMenuItemOver')"), false);
						itemDiv[i].addEventListener('mouseout',eval(this.getName()+".setClass('"+itemDiv[i].id+"','ReboundMenuItem')"), false);
						itemDiv[i].addEventListener('mouseout',Function(this.getName()+".mouseStatus("+id+","+mainItems[id][i].width+","+Divheight+","+i+")"), false);
						itemDiv[i].addEventListener('mouseover',Function("setMouseSatus("+id+",0)"), false);
						itemDiv[i].addEventListener('mouseout',eval(this.getName()+".closeSubMenu"), false);
						itemDiv[i].addEventListener('mouseover',eval(this.getName()+".clearTimer"),false);
						if(subItems[subID]){
							itemDiv[i].addEventListener('mouseover',eval(this.getName()+".showSubMenu("+subID+")"), false);
						}
						
					}
					else{
						itemDiv[i].attachEvent("onclick",Function("setLink('"+mainItems[id][i].link+"','"+this.mainItems[id][i].linkType+"')"));
						itemDiv[i].attachEvent("onmouseover",eval(this.getName()+".setClass('"+itemDiv[i].id+"','ReboundMenuItemOver')"));
						itemDiv[i].attachEvent("onmouseout",eval(this.getName()+".setClass('"+itemDiv[i].id+"','ReboundMenuItem')"));
						itemDiv[i].attachEvent("onmouseout",Function(this.getName()+".mouseStatus("+id+","+mainItems[id][i].width+","+Divheight+","+i+")"));
						itemDiv[i].attachEvent("onmouseover",Function("setMouseSatus("+id+",0)"));
						itemDiv[i].attachEvent("onmouseout",eval(this.getName()+".closeSubMenu"));
						itemDiv[i].attachEvent("onmouseover",eval(this.getName()+".clearTimer"));
						if(subItems[subID]){
							itemDiv[i].attachEvent("onmouseover",eval(this.getName()+".showSubMenu("+subID+")"));
						}
					}
				
					itemDiv[i].style.width = mainItems[id][i].width+"px";
					itemDiv[i].className = "ReboundMenuItem";	
					document.body.appendChild(itemDiv[i]);						
				}
				
				
				
				temp[id] = itemDiv;				
			}			
			this.mainItemObjs = temp;			
	}
	
	ReboundMenu.prototype.showSubMenu = function(subID){
		clearTimeout(mouseTimer);
		var i = 0;
		var length = this.subItems[subID].length;
		var id = 0;
		var mainID = 0;
		for(id=0;id<this.mainItems.length;id++){
			for(i=0;i<this.mainItems[id].length;i++){
				if(this.mainItems[id][i])
					if(this.mainItems[id][i].subID-1 == subID){
						mainID = id+""+i;
					}
			}
		}
		var height = this.itemHeight;
		
		return function(){			
			var left = 0;
			var top = 0;
			var width = 0;
			
			if(document.getElementById("menuItem_"+mainID)){
				left = document.getElementById("menuItem_"+mainID).style.left;
				top = document.getElementById("menuItem_"+mainID).style.top;
				width = document.getElementById("menuItem_"+mainID).style.width;
				top = top.substr(0,top.length-2);
				left = left.substr(0,left.length-2);
				width = width.substr(0,width.length-2);
			}
			
			var startTop = height * (length-1);
			

			if(document.getElementById("submenuItem_"+subID+"0"))
			if(document.getElementById("submenuItem_"+subID+"0").style.display == "none"){
			for(i=0;i<length;i++){		
				if(document.getElementById("submenuItem_"+subID+i)){
					if (Ie){
						document.getElementById("submenuItem_"+subID+i).style.filter = "alpha(opacity="+ 5+",style=0)";	
						newleft = left;
					}
					else{
						document.getElementById("submenuItem_"+subID+i).style.opacity = 5/ 100;	
						newleft = (left*1) + 8;
					}
					document.getElementById("submenuItem_"+subID+i).style.display = "block";
					document.getElementById("submenuItem_"+subID+i).style.left = (newleft*1) + (width*1) + 0 + "px";
					document.getElementById("submenuItem_"+subID+i).style.top = (top*1) + (i*height) - startTop + "px";					
				}
			}						
			menuEffect2(6,subID,length);		
			}
		}
	}
	
	ReboundMenu.prototype.createSubmenu = function(subID){
		var length = this.subItems[subID].length;
		var i = 0;
		var subitemDiv = new Array();
		
		for(i=0;i<length;i++){
		
			subitemDiv[i] = document.createElement("DIV");
			subitemDiv[i].innerHTML = this.subItems[subID][i].text;
			subitemDiv[i].style.position = "absolute";
			subitemDiv[i].style.left = "0px";
			subitemDiv[i].style.top = "0px";
			subitemDiv[i].id = "submenuItem_"+subID+i;
			subitemDiv[i].style.display = "none";
			subitemDiv[i].style.width = this.subItems[subID][i].width+"px";
			subitemDiv[i].className = "ReboundMenuItem";
			
			
			if(window.addEventListener){
				subitemDiv[i].addEventListener('click',Function("setLink('"+this.subItems[subID][i].link+"','"+this.subItems[subID][i].linkType+"')"), false);
				subitemDiv[i].addEventListener('mouseover',eval(this.getName()+".setClass('"+subitemDiv[i].id+"','ReboundMenuItemOver')"), false);
				subitemDiv[i].addEventListener('mouseout',eval(this.getName()+".setClass('"+subitemDiv[i].id+"','ReboundMenuItem')"), false);
				subitemDiv[i].addEventListener('mouseover',eval(this.getName()+".clearTimer2"),false);
				subitemDiv[i].addEventListener('mouseout',eval(this.getName()+".checkMouseOutSubMenu"),false);
			}
			else{
				subitemDiv[i].attachEvent("onclick",Function("setLink('"+subItems[subID][i].link+"','"+this.subItems[subID][i].linkType+"')"));
				subitemDiv[i].attachEvent("onmouseover",eval(this.getName()+".setClass('"+subitemDiv[i].id+"','ReboundMenuItemOver')"));
				subitemDiv[i].attachEvent("onmouseout",eval(this.getName()+".setClass('"+subitemDiv[i].id+"','ReboundMenuItem')"));
				subitemDiv[i].attachEvent("onmouseover",eval(this.getName()+".clearTimer2"));
				subitemDiv[i].attachEvent("onmouseout",eval(this.getName()+".checkMouseOutSubMenu"));
			}
			
			document.body.appendChild(subitemDiv[i]);		
		}
	}
	
	ReboundMenu.prototype.clearTimer = function(){
		clearTimeout(mouseTimer);
	}
	
	ReboundMenu.prototype.clearTimer2 = function(){
		clearTimeout(mouseTimer);
		clearTimeout(mouseTimer2);
	}
	
	function setMouseSatus(id,value){
		tempMouse[id] = value;
	}
	
	ReboundMenu.prototype.closeSubMenu = function(e){
	
		if(Ie){
			var srcElement = window.event.srcElement;
			var toElement = window.event.toElement;
		}
		else{
			var srcElement = e.target;
			var toElement = e.relatedTarget;
		}
		
		var id = srcElement.id.substr(9,1);
		var i = srcElement.id.substr(10,1);
	
		if(id!="" && i!=""){
			var subID = mainItems[id][i].subID-1;
			if(subItems[subID]){
				if(!(toElement.className == "menuImg" || toElement.id == "menuItem_"+id+i || toElement.id.substr(0,13) == "submenuItem_"+subID )){
					clearTimeout(effectTime2);
					//menuEffect2(60,subID,subItems[subID].length);
					if(toElement.id.substr(0,9) == "menuItem_")
						hiddensubmenu(subID,subItems[subID].length);
					else
						mouseTimer2 = setTimeout("hiddensubmenu("+subID+","+subItems[subID].length+")",700);
						
				}								
			}
		}
		
	
	}
	
	function hiddensubmenu(subID,length){
		for(j=0;j<length;j++){
						document.getElementById("submenuItem_"+subID+j).style.display = "none";
		}
	}
	
	function hiddenmenu(mainID,length){
		for(i=0;i<length;i++){
				if(document.getElementById("menuItem_"+mainID+i))
						document.getElementById("menuItem_"+mainID+i).style.display = "none";
		}
	}
	
	ReboundMenu.prototype.checkMouseOutSubMenu = function(e){
		if(Ie){
			var srcElement = window.event.srcElement;
			var toElement = window.event.toElement;
		}
		else{
			var srcElement = e.target;
			var toElement = e.relatedTarget;
		}
	
	
		var mainID = ""
		if(srcElement.id!=""){
			var id = srcElement.id.substr(12,1);
			if(id!=""){
				var subID = subItems[id][0].subID;
				for(id=0;id<mainItems.length;id++){								
					for(i=0;i<mainItems[id].length;i++){
							if(mainItems[id][i].subID == subID)
								mainID = id+""+i;
					}
				}
			}
		}

		j=0;
		while(document.getElementById("submenuItem_"+(subID-1)+j)){
			if (Ie)
				document.getElementById("submenuItem_"+(subID-1)+j).style.filter = "alpha(opacity=85,style=0)";	
			else
				document.getElementById("submenuItem_"+(subID-1)+j).style.opacity = "0.85";
			j++;
		}
		
		
		if(mainID!=null)
			var checkMainItem = toElement.id == "menuItem_"+mainID;
		else
			var checkMainItem = false;
		
	
		if(!(toElement.className == "menuImg" || toElement.id.substr(0,12) == "submenuItem_" || checkMainItem)){
			clearTimeout(effectTime2);			
			j=0;
			while(document.getElementById("submenuItem_"+(subID-1)+j)){

				j++;
			}
			//document.getElementById("submenuItem_"+(subID-1)+j).style.display = "none";
			mouseTimer2 = setTimeout("hiddensubmenu("+(subID-1)+","+j+")",500);
			
			if(toElement.id==""){
				if(mainID!=""){
					mouseTimer = setTimeout("hiddenmenu("+mainID.substr(0,1)+","+mainItems[mainID.substr(0,1)].length+")",300);
				}
			}
		}
	}
	
	ReboundMenu.prototype.mouseStatus =  function(id,width,height,i){
		var mLeft = document.getElementById("menuItem_"+id+"0").style.left;
		var mTop = document.getElementById("menuItem_"+id+"0").style.top;
		var x1 = (mLeft.substr(0,mLeft.length-2)*1);
		var x2 = (mLeft.substr(0,mLeft.length-2)*1)+width;
		var y1 = (mTop.substr(0,mTop.length-2)*1)-0;
		var y2 = (mTop.substr(0,mTop.length-2)*1)+height+48;
		mouseTimer = setTimeout("checkMouse("+id+","+x1+","+x2+","+y1+","+y2+")",500);		
	}
	
	function checkMouse(id,x1,x2,y1,y2){
	
		if(((tempX < x1 || tempX > x2) || (tempY < y1 || tempY > y2)) && tempMouse[id] == "0") {
			hiddenMenu(6,id)
			tempMouse[id] = "1";	
		}
		else
			tempMouse[id] = "0";
	}
	
	function hiddenMenu(length,id){
		for(i=0;i<length;i++){
			if(document.getElementById("menuItem_"+id+i))
				document.getElementById("menuItem_"+id+i).style.display = "none";
		}
	}
	
	ReboundMenu.prototype.showMainMenu = function(id,obj){
		clearTimeout(mouseTimer);
		this.clearOtherItem(id);
		if(obj){
			var mainLeft = getposOffset(obj,"left");
			var mainTop = getposOffset(obj,"Top");		
			this.mainItemsPosition[id] = {left:mainLeft,top:mainTop};
		}
		else{
			
		}
		
		
		if(document.getElementById("menuItem_"+id+"0"))
			if(document.getElementById("menuItem_"+id+"0").style.display=="none"){
				clearTimeout(effectTime);
				this.itemsAnime(id)				
			}
	}
	
	ReboundMenu.prototype.clearOtherItem = function(id){
		for(j=0;j<this.mainItems.length;j++){
			for(i=0;i<this.mainItems[j].length;i++){
				if(document.getElementById("menuItem_"+j+i) && j !=id){
					document.getElementById("menuItem_"+j+i).style.display = "none";
				}
			}
		}
		
		for(j=0;j<this.subItems.length;j++){
			for(i=0;i<this.subItems[j].length;i++){
				if(document.getElementById("submenuItem_"+j+i)){
					document.getElementById("submenuItem_"+j+i).style.display = "none";
				}
			}
		}
		
	}
	
	ReboundMenu.prototype.closeMenu = function(id){
		if(this.mainItems[id].length!=0){
			tempMouse[id] = 0
			var Divheight = this.mainItems[id].length * this.itemHeight;
			var Divwidth = this.mainItems[id][0].width;			
			this.mouseStatus(id,Divwidth,Divheight);
		}
		else{
			
		}
	}	
	
	ReboundMenu.prototype.itemsAnime = function(id){
		
		var startTop = this.mainItems[id].length * this.itemHeight +10;
	
		for(i=0;i<this.mainItems[id].length;i++){
			if(document.getElementById("menuItem_"+id+i)){
				document.getElementById("menuItem_"+id+i).style.display = "block";
				document.getElementById("menuItem_"+id+i).style.left = this.mainItemsPosition[id].left;
				document.getElementById("menuItem_"+id+i).style.top = this.mainItemsPosition[id].top+((this.itemHeight) *(i)-startTop);
				if (Ie)
					document.getElementById("menuItem_"+id+i).style.filter = "alpha(opacity="+ 5+",style=0)";	
				else
					document.getElementById("menuItem_"+id+i).style.opacity = 5/ 100;		
			}
		}
		menuEffect(5,id,mainItems[id].length);
	}
	
	ReboundMenu.prototype.setClass = function (id,className){
		
		return function(){
			document.getElementById(id).className = className;
		}
	}
	
	function menuEffect(Opacity,id,length){
		Opacity +=5;
		for(i=0;i<length;i++){
			if(document.getElementById("menuItem_"+id+i)){				
				if (Ie)
					document.getElementById("menuItem_"+id+i).style.filter = "alpha(opacity="+ Opacity +",style=0)";	
				else{
					document.getElementById("menuItem_"+id+i).style.opacity = Opacity/ 100;
				}
			}
		}
		if(Opacity > 70)
			clearTimeout(effectTime)
		else
			effectTime = window.setTimeout("menuEffect("+ Opacity +","+id+","+length+")", 40);
	}
	
	
	function menuEffect2(Opacity,subID,length){
		Opacity +=5;
		for(i=0;i<length;i++){
			if(document.getElementById("submenuItem_"+subID+i)){				
				if (Ie)
					document.getElementById("submenuItem_"+subID+i).style.filter = "alpha(opacity="+ Opacity +",style=0)";	
				else{
					document.getElementById("submenuItem_"+subID+i).style.opacity = Opacity/ 100;
				}
			}
		}
		if(Opacity > 85)
			clearTimeout(effectTime2)
		else
			effectTime2 = window.setTimeout("menuEffect2("+ Opacity +","+subID+","+length+")", 30);
	}
	
	
	
	function setLink(alink,type){
		if(type=="self")
			window.location = alink;
		else if(type=="newWin")
				window.open(alink);
	}
		
	function getposOffset(what, offsettype){
		var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
		var parentEl=what.offsetParent;
		while (parentEl!=null){
			totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
			parentEl=parentEl.offsetParent;
		}
		return totaloffset;
	}