/*************************************************************************
	Dynamic Layer Menu v1.3 ( 11/18/05 [rh/sn] MH-CWD )
		Description: 
			Allows usage of absolute positioning to dynamically anchor layers
			to an achor point.
			
		Usage:
			mouseover: showMenu(layer,anchor,x-offset,y-offset)
			mouseout:  autoHideMenu();
*************************************************************************/



  /* ADD FOR MENU SCRIPT >> DO NOT REMOVE:
  		Add inside MM_swapImage() as the 2nd line.
		Usage: force-hide menu on rollout (see: checkDiv)

  checkDiv(a[2]);
  */

// checkDiv @params
var parent_image_src="";
var child_prefix="aop";
var layer_id="aopMenu";


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;
}

function repositionDiv(){
	// repositions menu layer to menu03 x,y
	var obj,an,x,y,args=repositionDiv.arguments;
	var an = FIND(args[1]) || document.images[args[1]] || document.links[args[1]] || document.anchors[args[1]];
	obj=args[0];
	x = findPosX (an);
	y = findPosY (an);
	obj.style.left=x+ ( (args[2])?args[2]:0 );
	obj.style.top= y+ ( (args[3])?args[3]:0 );
}

function showDiv(){
	/* @params
		 0> layer
		 1> anchor
		 2> offset-x
		 3> offset-y 
	*/
	var args=showDiv.arguments;
	if(obj=FIND(args[0])){
		repositionDiv(obj,args[1],args[2],args[3]);
		obj.style.visibility='visible';
	}
}

function hideDiv(evt) {
	var b,rt,mT=false; 
		if(document.layers){
			b=evt.target;
			if(b.aHide){
				b.visibility="hidden";
			}else{
				routeEvent(evt);
			}
		}else if(document.all&&!window.opera){
			b=event.srcElement;
			while(b!=null){
				if(b.tagName=="DIV" && b.ahD){mT=true;break;}
				b=b.parentElement;
			}
			if(!b.contains(event.toElement)){
				b.style.visibility="hidden";
			}
		}else if(document.getElementById){
			b=evt.currentTarget;
			rt=evt.relatedTarget;
			while(rt!=null){
				if(b==rt){mT=true;break;}
				rt=rt.parentNode;
			}
			if(!mT){b.style.visibility="hidden";}
		}
}

function autoHide() {
	var i,g,args=autoHide.arguments;
	for(i=0;i<args.length;i++){
		if((g=FIND(args[i]))!=null){
			g.aHide=true;
			if(document.layers){
				g.captureEvents(Event.MOUSEOUT);
			}
			g.onmouseout=hideDiv;
			g.ahD=true;
		}
	}
}

function hdro(ad){
	obj=FIND(ad);
	obj.style.visibility='hidden';
}

function checkDiv(timg){
	// hack function to force hide div on rolloff -> except if rolling off parent/child
	// no functionality w/ multiple menus
	theName=timg.substr(timg.lastIndexOf("/")+1);
	if(theName.substr(0,3)==child_prefix) 	return;	// don't hide on child over
	if(theName==parent_image_src)			return; // don't hide on parent over
	dv=FIND(layer_id);
	dv.style.visibility="hidden";
}

// ripped from MM_*
// can swapout for MM_findItem()
function FIND(item) {
	var agt = navigator.userAgent.toLowerCase();
	window.mmIsOpera = agt.indexOf("opera") != -1;
	if( window.mmIsOpera ) return(document.getElementById(item));
	if (document.all) return(document.all[item]);
	if (document.getElementById) return(document.getElementById(item));
	return(false);
}