var currentMenu = null
var currentSubmenu = null

var currentTd = null;
var prevTd = null;
var nextTd = null;

var ie = document.all?true:false

function hideSelects(){
	if(currentSubmenu){
		var selects = document.getElementsByTagName("select");
		for(var i = 0; i < selects.length; i++){				
			//selects[i].setAttribute("previousVisibility", selects[i].style.visibility)		
			if(isCrossing(selects[i], currentSubmenu)){
				selects[i].style.visibility = "hidden"
			}
		}
	}
}
function showSelects(){
	var selects = document.getElementsByTagName("select");
	for(var i = 0; i < selects.length; i++){		
		selects[i].style.visibility = "";//selects[i].getAttribute("previousVisibility")
	}	
}

function isCrossing(obj1, obj2){
	var coor1 = getAbsolutePosition(obj1)
	var coor2 = getAbsolutePosition(obj2)
	if(coor1.x > coor2.x + obj2.clientWidth){
		return false
	}
	if(coor1.x + obj1.clientWidth < coor2.x){
		return false
	}
	if(coor1.y > coor2.y + obj2.clientHeight){
		return false
	}
	if(coor1.y + obj1.clientHeight < coor2.y){
		return false
	}
	//alert("" + coor1.x + "--" + coor1.y)
	//alert(coor2)
	return true;
}

function showMenu(obj){
	
	if(currentSubmenu){
		currentSubmenu.style.display = "none"
	}
		if(currentMenu){
			currentMenu.className = "mainmenu"
			currentMenu = null
		}
		if(currentTd){
			currentTd.className=''
			currentTd = null;
		}
		if(prevTd){
			if(prevTd.className == "active1"){
				prevTd.className = 'sep1';
			}else{
				prevTd.className = 'sep2';
			}
			prevTd = null;
		}
		if(nextTd){
			if(nextTd.className == "active1"){
				nextTd.className = "sep1"
			}else{
				nextTd.className = "sep2"
			}
			nextTd = null;
		}
	
	
	
	currentMenu = obj
	currentTd = obj
	while(currentTd.nodeName != "TD"){
		currentTd = currentTd.parentNode
	}
	prevTd = currentTd.previousSibling;
	if(prevTd){
		while(prevTd.nodeName != "TD"){
			if(prevTd.previousSibling){
				prevTd = prevTd.previousSibling 
			}else{
				prevTd = null;
				break;
			}
		}
	}
	if(prevTd){
		if(prevTd.className == "sep1"){
			prevTd.className = "active1"
		}else{
			prevTd.className = "active2"
		}
	}
	
	nextTd = currentTd.nextSibling;
	while(nextTd.nodeName != "TD"){
		if(nextTd.nextSibling){
			nextTd = nextTd.nextSibling 
		}else{
			nextTd = null;
			break;
		}
	}
	if(nextTd){
		if(nextTd.className == "sep2"){
			nextTd.className = "active2"
		}else if(nextTd.className == "sep1"){
			nextTd.className = "active1"
		}else{
			nextTd = null;
		}
	}
	
	
	currentTd.className = "active"
	currentMenu.className = "mainmenu mainmenu-active"
	
	var submenu = obj.nextSibling
	while(submenu && submenu.nodeName == "#text"){
		submenu = submenu.nextSibling
	}
	currentSubmenu = submenu;
	if(submenu && submenu.className == "submenu"){
		submenu.style.display = "";
	}
	if(ie){
		hideSelects()
	}
	
}
function hideMenu(event){
	if(document.all){
		var target = event.toElement
	}else{
		var target = event.target
	}
	while(target && target.nodeName != "BODY"){
		if(target == currentMenu){
			
		}
		if(target == currentSubmenu){
		}
		target = target.parentNode		
	}
	var pos = getPosition(event)
	var res = inElem(currentSubmenu, pos, false)
	var res1 = inElem(currentMenu, pos, currentSubmenu)
	
	if(res == false && res1==false){
		if(ie){
			showSelects();
		}
		if(currentSubmenu){
			currentSubmenu.style.display = "none"
			currentSubmenu = null
		}
		if(currentMenu){
			currentMenu.className = "mainmenu"
			currentMenu = null
		}
		if(currentTd){
			currentTd.className=''
			currentTd = null;
		}
		if(prevTd){
			if(prevTd.className == "active1"){
				prevTd.className = 'sep1';
			}else{
				prevTd.className = 'sep2';
			}
			prevTd = null;
		}
		if(nextTd){
			if(nextTd.className == "active1"){
				nextTd.className = "sep1"
			}else{
				nextTd.className = "sep2"
			}
			nextTd = null;
		}
	}
}

function inElem(obj, pos, addElem){
	if(!obj)
		return false;
	var coor = getAbsolutePosition(obj)
	if(pos.x-1 <= coor.x || pos.x>= coor.x + obj.clientWidth){
		return false
	}
	if(!addElem){
		if(pos.y+1 <= coor.y || pos.y+1 >= coor.y + obj.clientHeight){
			return false
		}
	}
	else{
		if(pos.y-1 <= coor.y || pos.y-1 >= coor.y + obj.clientHeight){
			return false
		}
	}
	return true;
}


  function getAbsolutePosition(element) {
    var r = { x: element.offsetLeft, y: element.offsetTop };
    if (element.offsetParent) {
      var tmp = getAbsolutePosition(element.offsetParent);
      r.x += tmp.x;
      r.y += tmp.y;
    }
    return r;
  };


function getPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + 
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + 
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}
