//@NAME: Panther Menu (InConjunction Real Estate)
//@VERS: 2.6
//@DATE: 25/03/2006 12:56AM
//@AUTH: precarious_panther

//Copyright 2005 - This script may not be used without prior written permission from 
//the author (Adam Benson)

var menuimage="none";
var menuimagehover="url('images/menuitembg.gif')";
var menuimagehover2="url('images/menuitembg.gif')";

var iW;

if( typeof( window.innerWidth ) == 'number' ) {
	iW = window.innerWidth;
} else if( document.documentElement &&( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	iW = document.documentElement.clientWidth;
} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	iW = document.body.clientWidth;
}


var openMenus = new Array();
var hidetime;
var lastOpen,menudiv;

function modStyle(tag,style,value){
		var elements = document.getElementsByTagName(tag);
		for(var i = 0; i < elements.length; i++) {
			elements.item(i).style[style] = value;
		}
}



function showMenu(menulink,submenu,parentdiv,mainLink,fakeLink){
	var menudiv=document.getElementById(submenu);
	var mEx=false;
	if(menudiv != lastOpen){
		menudiv.parent=parentdiv;
		if(fakeLink)menulink.fakeLink=fakeLink;
		if(mainLink)menulink.mainlink=mainLink;
		menudiv.menulink=menulink;
		
		for(var x=0;x<openMenus.length;x++){
			if (openMenus[x] == menudiv){
				mEx=true;
			} 
		}
		
		if(!mEx){ //if not in the list, close all up to parent
			closeTrees(parentdiv);
		} else {
			closeTrees(submenu);
		}
		
		
		if(mainLink){
			menudiv.style.top=findPosY(menulink);
			menudiv.style.left=findPosX(menulink) + menulink.offsetWidth;
		}else{
			if (findPosX(menulink) + (menulink.offsetWidth*2) > iW){
				menudiv.style.top=findPosY(menulink) + 2;
				menudiv.style.left=findPosX(menulink) - menulink.offsetWidth/2;
			}else {
				menudiv.style.top=findPosY(menulink);
				menudiv.style.left=findPosX(menulink) + menulink.offsetWidth;
			}
		}
		if(!menudiv.menulink.fakeLink){
			if(!menudiv.menulink.mainLink){
				menudiv.menulink.style.backgroundImage=menuimagehover;
			} else {
				menudiv.menulink.style.backgroundImage=menuimagehover2;
			} 
		}
		openMenus[openMenus.length]=menudiv;
		fadeIn(menudiv);
		lastOpen=menudiv;
	} else {
		cTimer();
	}
	//modStyle("input", "visibility", "hidden")
	modStyle("select", "visibility", "hidden")
	modStyle("textarea", "visibility", "hidden")
}


function closeTrees(parentdiv){
	//hide all other trees
	lastOpen=null;
	var curLevel = false;
	var newOpens = new Array();
	for(var x=0;x<openMenus.length;x++){
	
		if(openMenus[x].parent==parentdiv){
			curLevel=true;	
		}
		
		if(curLevel){
			fadeOut(openMenus[x]);
			if(!openMenus[x].menulink.fakeLink)openMenus[x].menulink.style.backgroundImage=menuimage;
		} else {
			newOpens[newOpens.length] = openMenus[x];
			if(!openMenus[x].menulink.fakeLink){
				if(!openMenus[x].menulink.mainLink){
					openMenus[x].menulink.style.backgroundImage=menuimagehover;
				} else {
					openMenus[x].menulink.style.backgroundImage=menuimagehover2;
				} 
			}
		}

	}
	openMenus=newOpens;
}

function menuhide(){
//	modStyle("input", "visibility", "visible")
	modStyle("select", "visibility", "visible")
	modStyle("textarea", "visibility", "visible")

	lastOpen=null;
	for(var x=0;x<openMenus.length;x++){
		if(!openMenus[x].menulink.fakeLink){
			openMenus[x].menulink.style.backgroundImage=menuimage;
		}
		fadeOut(openMenus[x]);
	}
	openMenus = new Array();
}

function fadeIn(menudiv){
	Effect.Appear(menudiv,{duration:0.2});
	menudiv.style.visibility="visible";
}


function fadeOut(menudiv){
	Effect.Fade(menudiv,{duration:0.1});
	//menudiv.style.display="none";
	//menudiv.style.visibility="hidden";
}



function menuOut() {
  hidetime = setTimeout("menuhide()", 1000);
}

function cTimer() {
	clearTimeout(hidetime);
}




function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}