//	requires Framework.js
/*-----------Menu-------------*/
var ma=new Array();
var mx=new Array();
var my=new Array();
var mc=new Array();
var mal=0;
var psrc=0;
var pname="";
var NS6 = (!isInstance(document.all) && isInstance(document.getElementById));
var NS4 = (!isInstance(document.getElementById));
var IE5 = (!NS4&&!NS6&&navigator.userAgent.indexOf('MSIE 5.0')!=-1);
var activeMainMenuButton;
var activeSubMenuDiv;

var fc=0x707172;
var bc=0xd7da91;

var frames=7;

function setLinkStyleRecursive(ob, className)
{
	if(!isInstance(ob))
		return;
		
	if(ob.tagName.toLowerCase() == "a")
	{
		ob.className = className;
		return;
	}
	setLinkStyleRecursive(ob.parentNode, className);
}
function openMenu(event,id,pos,bc,fc,callerControl)
{
	if(NS4)
		return;
	var el,x,y;
	if(mal>0)
	{
		el=document.getElementById(ma[mal-1]);
		if(mx[mal-1]!=el.offsetLeft||my[mal-1]!=el.offsetTop)
		{
			el.style.left=toStringPx(mx[mal-1]);
			el.style.top=toStringPx(my[mal-1]);
		}
		tidyMenu(event);
	}
	if(NS6)
	{
		if(mal==0)
		{
			if(!isInstance(event.target.x))
			{
				var result = calcOffsetsRecursive(event.target, null);
				if(result == null)
					return;
				x=result.offsetLeft;
				y=result.offsetTop;
			}
			else
			{
				x=event.target.x;
				y=event.target.y;
			}
			dx=event.target.offsetWidth;
			dy=event.target.offsetHeight;
		}
		else
		{
			var p=event.target;
			if(p.nodeName!="A"&&p.parentNode.nodeName=="A")
				p=p.parentNode;
			dx=p.offsetWidth;
			dy=p.offsetHeight;
			el=document.getElementById(ma[mal-1]);
			x=el.offsetLeft;
			y=el.offsetTop+p.offsetTop;
		}
	}
	else
	{
		var result = calcOffsetsRecursive(event.srcElement, null);

		x=result.offsetLeft;
		y=result.offsetTop;
		dx=event.srcElement.offsetWidth;
		dy=event.srcElement.offsetHeight;
	}
	el=document.getElementById(id);
	if(isInstance(el) && el.style.visibility != "visible")
	{
		if(pos==1)
		{
			x+=dx;
			el.style.left=toStringPx(x-el.offsetWidth);
			el.style.top=toStringPx(y);
			nspeed=el.offsetWidth/frames;
		}
		else if(pos==2)
		{
			y+=dy;
			el.style.left=toStringPx(x);
			el.style.top=toStringPx(y-el.offsetHeight);
			nspeed=el.offsetHeight/frames;
		}
		else if(pos==3)
		{
			x-=el.offsetWidth;
			el.style.left=toStringPx(x+el.offsetWidth);
			el.style.top=toStringPx(y);
			nspeed=el.offsetWidth/frames;
		}
		mx[mal]=x;
		my[mal]=y;
		if(NS6||IE5||frames==0)
		{
			el.style.left=toStringPx(x);
			el.style.top=toStringPx(y);
		}
		if(!IE5)
			clipMenu(mal,el);
		el.style.visibility="visible";
		ma[mal]=id;
		if(NS6)
		{
			var p=event.target;
			if(p.nodeName!="A"&&p.parentNode.nodeName=="A")
				p=p.parentNode;
			mc[mal]=p.style;
			el.onmouseout=tidyMenu;
		}
		else
		{
			mc[mal]=event.srcElement.style;
		}
		mal++;
	}
	
	setLinkStyleRecursive(callerControl, "mainMenuButtonHover");
	if(activeMainMenuButton != null && activeMainMenuButton != callerControl)
		setLinkStyleRecursive(activeMainMenuButton, "mainMenuButton");
	activeMainMenuButton = callerControl;
	hideAllInactive();
}
function overMenu(x,y)
{
	var result = new Object();
	if(isInstance(activeMainMenuButton))
	{
		if(NS6)
		{
			result.offsetLeft = activeMainMenuButton.offsetLeft;
			result.offsetTop = activeMainMenuButton.offsetTop;
		}
		else
		{
			result = calcOffsetsRecursive(activeMainMenuButton, null);
		}
		
		if( result.offsetLeft + activeMainMenuButton.offsetWidth > x &&
			result.offsetLeft <= x &&
			result.offsetTop + activeMainMenuButton.offsetHeight > y &&
			result.offsetTop <= y )
		{
			if(activeMainMenuButton == null)
				return "";
			return activeMainMenuButton.id;
		}
	}

	for(i=0;i<mal;i++)
	{
		var el = document.getElementById(ma[i]);
		if(NS6)
		{
			result.offsetLeft = el.offsetLeft;
			result.offsetTop = el.offsetTop;
		}
		else
		{
			var result = calcOffsetsRecursive(el, null);
		}
		
		if( result.offsetLeft + el.offsetWidth > x &&
			result.offsetLeft <= x &&
			result.offsetTop + el.offsetHeight > y &&
			result.offsetTop <= y )
		{
			return ma[i];
		}
	}
	return "";
}
function tidyMenu(e)
{
	if(NS4)
		return;
	if(NS6)
	{
		t=overMenu(e.pageX,e.pageY);
		if(t!=""&&(e.target.firstChild==e.relatedTarget||(e.relatedTarget!=null&&e.target==e.relatedTarget.firstChild)))
			return;
	}
	else 
	{
		var eventObject = event;
		var eventTarget = eventObject.srcElement;
		var mouseOffset = getOffsetFromEvent(eventObject, eventTarget);
		t = overMenu(mouseOffset.offsetLeft, mouseOffset.offsetTop);
	}
	if(activeMainMenuButton != null && t == activeMainMenuButton.id)
		return;
	om=0;
	for(i=0;i<mal;i++)
	{
		var mail=ma[i].length;
		
		if(mail>t.length||t.substring(0,mail)!=ma[i])
		{
			var el=document.getElementById(ma[i]);
			el.style.visibility="hidden";
		}
		else
		{
			ma[om]=ma[i];
			mx[om]=mx[i];
			my[om]=my[i];
			om++;
		}
	}
	mal=om;
	if(mal==0 && psrc)
		psrc.src=pname;
	if(om == 0 && isInstance(activeMainMenuButton))
	{
		setLinkStyleRecursive(activeMainMenuButton, "mainMenuButton");
		activeMainMenuButton = null;
	}
}
function hideAllInactive()
{
	if(NS4)
		return;
	var activeId = "";
	if(activeMainMenuButton != null)
		activeId = activeMainMenuButton.id;
	om=0;
	for(i=0;i<mal;i++)
	{
		var mail=ma[i].length;
		
		if(mail>activeId.length||activeId.substring(0,mail)!=ma[i])
		{
			var el=document.getElementById(ma[i]);
			el.style.visibility="hidden";
		}
		else
		{
			ma[om]=ma[i];
			mx[om]=mx[i];
			my[om]=my[i];
			om++;
		}
	}
	mal=om;
	if(mal==0 && psrc)
		psrc.src=pname;
	if(om == 0 && isInstance(activeMainMenuButton))
	{
		setLinkStyleRecursive(activeMainMenuButton, "mainMenuButton");
		activeMainMenuButton = null;
	}
}
function animate()
{
	for(i=0;i<mal;i++)
	{
		var el=document.getElementById(ma[i]);
		if(el.style.visibility == "visible")
		{
			if(el.offsetLeft<mx[i])
				el.style.left=toStringPx(Math.min(el.offsetLeft+nspeed,mx[i]));
			if(el.offsetLeft>mx[i])
				el.style.left=toStringPx(Math.max(el.offsetLeft-nspeed,mx[i]));
			if(el.offsetTop<my[i])
				el.style.top=toStringPx(Math.min(el.offsetTop+nspeed,my[i]));
			clipMenu(i,el);
		}
	}
	if(mal!=0||frames!=0)
		setTimeout("animate()",10);
}
function clipMenu(i,el)
{
	if(el.offsetLeft>mx[i])
		el.style.clip="rect("+(my[i]-el.offsetTop)+"px "+(el.offsetWidth+(mx[i]-el.offsetLeft))+"px "+el.offsetHeight+"px "+0+"px)";
	else
		el.style.clip="rect("+(my[i]-el.offsetTop)+"px "+el.offsetWidth+"px "+el.offsetHeight+"px "+(mx[i]-el.offsetLeft)+"px)";
}
