/***********************************************
* AnyLink Drop Down Menu- © Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

var menuwidth = '165px'; //default menu width
var menubgcolor = '#eeeeff';  //menu bgcolor
var disappeardelay = 250;  //menu disappear speed onMouseout (in miliseconds)
var hidemenu_onclick = "yes"; //hide menu when user clicks within menu?

/////No further editting needed

var ie4 = document.all;
var ns6 = document.getElementById && !document.all;

if (ie4||ns6)
	document.write('<div id="dropmenudiv" style="visibility:hidden;width:'+menuwidth+';background-color:'+menubgcolor+'" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>');

function getposOffset(what, offsettype)
{
	var totaloffset;
	if( offsettype == "left" )
		totaloffset = what.offsetLeft;
	else
		totaloffset = what.offsetTop;

	var parentEl = what.offsetParent;

	while ( parentEl != null)
	{
		if( offsettype == "left" )
			totaloffset = totaloffset + parentEl.offsetLeft;
		else
			totaloffset = totaloffset + parentEl.offsetTop;
			
		parentEl = parentEl.offsetParent;
	}
	
	return totaloffset;
}

function getAbsolutePos(el)
{
	var SL = 0, ST = 0;
	var is_div = /^div$/i.test(el.tagName);
	
	if (is_div && el.scrollLeft)
		SL = el.scrollLeft;
	
	if (is_div && el.scrollTop)
		ST = el.scrollTop;
	
	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
	
	if (el.offsetParent) 
	{
		var tmp = this.getAbsolutePos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	
	return r;
}

function showhide(obj, e, visible, hidden, menuwidth)
{
	if (ie4||ns6)
		dropmenuobj.style.left = dropmenuobj.style.top =- 500;
	
	if (menuwidth!="")
	{
		dropmenuobj.widthobj = dropmenuobj.style;
		dropmenuobj.widthobj.width = menuwidth;
	}
	
	if ( e.type == "click" && obj.visibility == hidden || e.type == "mouseover" )
		obj.visibility = visible;	
	else if ( e.type == "click" )
		obj.visibility = hidden;
}


function showDD(show)
{
	if(!ie4)
		return;
	var tags = new Array("applet", "iframe", "select");
	var p = getAbsolutePos(document.getElementById("dropmenudiv"));
	var EX1 = p.x;
	var EX2 = dropmenuobj.offsetWidth + EX1;
	var EY1 = p.y;
	var EY2 = dropmenuobj.offsetHeight + EY1;

	for (var k = tags.length; k > 0; ) 
	{
		var ar = document.getElementsByTagName(tags[--k]);
		var cc = null;

		for (var i = ar.length; i > 0;) 
		{
			cc = ar[--i];

			p = getAbsolutePos(cc);
			var CX1 = p.x;
			var CX2 = cc.offsetWidth + CX1;
			var CY1 = p.y;
			var CY2 = cc.offsetHeight + CY1;

			
			if (!((CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1))) 
			{
				if (!show)
					cc.style.visibility = "hidden";
				else
					cc.style.visibility = "visible";
			}
		}
	}
}

function iecompattest()
{
	if (document.compatMode && document.compatMode != "BackCompat")
		return document.documentElement;
	else
		return document.body;
}

function clearbrowseredge(obj, whichedge)
{
	var edgeoffset=0
	if (whichedge == "rightedge")
	{
		var windowedge;
	
		if(ie4 && !window.opera)
			windowedge = iecompattest().scrollLeft + iecompattest().clientWidth - 15;
		else
			windowsedge = window.pageXOffset + window.innerWidth - 15;
	
		dropmenuobj.contentmeasure = dropmenuobj.offsetWidth;

		if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
			edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
	}
	else
	{
		var topedge;
		var windowedge;

		if(ie4 && !window.opera)
		{
			topedge = iecompattest().scrollTop;
			windowsedge = iecompattest().scrollTop + iecompattest().clientHeight - 15;
		}
		else
		{
			topedge = window.pageYOffset;
			windowedge = window.pageYOffset + window.innerHeight - 18;
		}
		
		dropmenuobj.contentmeasure = dropmenuobj.offsetHeight;
		
		if ( windowedge - dropmenuobj.y < dropmenuobj.contentmeasure ) //move up?
		{
			edgeoffset = dropmenuobj.contentmeasure + obj.offsetHeight;
			
			if ( (dropmenuobj.y - topedge) < dropmenuobj.contentmeasure) //up no good either?
				edgeoffset = dropmenuobj.y + obj.offsetHeight - topedge;
		}
	}

	return edgeoffset
}

function populatemenu(what)
{
	if (ie4||ns6)
		dropmenuobj.innerHTML=what.join("")
}


function dropdownmenu(obj, e, menucontents, menuwidth)
{
	if (window.event) 
		event.cancelBubble = true;
	else if (e.stopPropagation) 
		e.stopPropagation();
		
	clearhidemenu();

	if( document.getElementById )
		dropmenuobj = document.getElementById("dropmenudiv");
	else
		dropmenuobj = dropmenudiv;
		
	populatemenu( menucontents );

	if ( ie4 || ns6 )
	{
		showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth);
		dropmenuobj.x = getposOffset(obj, "left");
		dropmenuobj.y = getposOffset(obj, "top");
		dropmenuobj.style.left = dropmenuobj.x - clearbrowseredge(obj, "rightedge") + "px";
		dropmenuobj.style.top = dropmenuobj.y - clearbrowseredge(obj, "bottomedge") + obj.offsetHeight + "px";
		showDD(false);
	}

	return clickreturnvalue()
}

function clickreturnvalue()
{
	if ( ie4 || ns6 ) 
		return false
	else 
		return true
}

function contains_ns6(a, b) 
{
	while (b.parentNode)
	{
		if ( (b = b.parentNode) == a)
			return true;
	}
	
	return false;
}

function dynamichide(e)
{
	if ( ie4 && !dropmenuobj.contains(e.toElement) )
		delayhidemenu();
	else if ( ns6 && e.currentTarget != e.relatedTarget && !contains_ns6(e.currentTarget, e.relatedTarget) )
		delayhidemenu();
}

function hidemenu(e)
{
	if (typeof dropmenuobj!="undefined")
	{
		if (ie4||ns6)
		{
			dropmenuobj.style.visibility="hidden"
			showDD(true)
		}
	}
}

function delayhidemenu()
{
	if ( ie4 || ns6 )
		delayhide = setTimeout("hidemenu()",disappeardelay);
}

function clearhidemenu()
{
	if (typeof delayhide != "undefined")
		clearTimeout(delayhide);
}

if ( hidemenu_onclick=="yes" )
	document.onclick=hidemenu;
