/*****************************************************
 * ypSlideOutMenu
 * http://ypslideoutmenus.sourceforge.net/
 *
 * Licensed under AFL 2.0
 * http://www.opensource.org/licenses/afl-2.0.php
 *****************************************************/
 
ypSlideOutMenu.Registry=[];
ypSlideOutMenu.aniLen=250;
ypSlideOutMenu.hideDelay=1000;
ypSlideOutMenu.minCPUResolution=10;
function ypSlideOutMenu(id,_2,_3,_4,_5,_6)
{
	this.ie=document.all?1:0;
	this.ns4=document.layers?1:0;
	this.dom=document.getElementById?1:0;
	this.css="";
	if(this.ie||this.ns4||this.dom)
	{
		this.id=id;
		this.dir=_2;
		this.orientation=_2=="left"||_2=="right"?"h":"v";
		this.dirType=_2=="right"||_2=="down"?"-":"+";
		this.dim=this.orientation=="h"?_5:_6;
		this.hideTimer=false;
		this.aniTimer=false;
		this.open=false;
		this.over=false;
		this.startTime=0;
		this.gRef="ypSlideOutMenu_"+id;
		eval(this.gRef+"=this");
		ypSlideOutMenu.Registry[id]=this;
		var d=document;
		var _8="";
		_8+="#"+this.id+"Container{visibility:hidden;";
		_8+="left:"+_3+"px;";
		_8+="top:"+_4+"px;";
		_8+="overflow:hidden;z-index:10000;}";
		_8+="#"+this.id+"Container,#"+this.id+"Content{position:absolute;";
		_8+="width:"+_5+"px;";
		_8+="height:"+_6+"px;";
		_8+="clip:rect(0 "+_5+" "+_6+" 0);";
		_8+="}";
		this.css=_8;
		this.load();
	}
}
ypSlideOutMenu.writeCSS=function()
{
	document.writeln("<style type=\"text/css\">");
	for(var id in ypSlideOutMenu.Registry)
	{
		document.writeln(ypSlideOutMenu.Registry[id].css);
	}
	document.writeln("</style>");
}
ypSlideOutMenu.prototype.load=function()
{
	var d=document;
	var _10=this.id+"Container";
	var _11=this.id+"Content";
	var _12=this.dom?d.getElementById(_10):this.ie?d.all[_10]:d.layers[_10];
	if(_12)
	{
		var _13=this.ns4?_12.layers[_11]:this.ie?d.all[_11]:d.getElementById(_11);
	}
	var _14;
	if(!_12||!_13)
	{
		window.setTimeout(this.gRef+".load()",100);
	}
	else
	{
		this.container=_12;
		this.menu=_13;
		this.style=this.ns4?this.menu:this.menu.style;
		this.homePos=eval("0"+this.dirType+this.dim);
		this.outPos=0;
		this.accelConst=(this.outPos-this.homePos)/ypSlideOutMenu.aniLen/ypSlideOutMenu.aniLen;
		if(this.ns4)
		{
			//alert("ns4");
			this.menu.captureEvents(Event.MOUSEOVER|Event.MOUSEOUT);
		}
		this.menu.onmouseover=new Function("ypSlideOutMenu.showMenu('"+this.id+"')");
		this.menu.onmouseout=new Function("ypSlideOutMenu.hideMenu('"+this.id+"')");
		this.endSlide();
	}
}
ypSlideOutMenu.showMenu=function(id)
{
	if((id=="menu1")||(id=="menu2")||(id=="menu3")) { isOpening[id]=true;setMenuState(id); }
	var reg=ypSlideOutMenu.Registry;
	var obj=ypSlideOutMenu.Registry[id];
	if(obj.container)
	{
		obj.over=true;
		for(menu in reg)
		{
			if(id!=menu)
			{
				ypSlideOutMenu.hide(menu);
			}
		}
		if(obj.hideTimer)
		{
			reg[id].hideTimer=window.clearTimeout(reg[id].hideTimer);
		}
		if(!obj.open&&!obj.aniTimer)
		{
			reg[id].startSlide(true);
		}
	}
}
ypSlideOutMenu.hideMenu=function(id)
{
	var obj=ypSlideOutMenu.Registry[id];
	if(id!="menu4")
	{
		isOpening[id]=false;
		if(obj.container)
		{
			if(obj.hideTimer)
			{
				window.clearTimeout(obj.hideTimer);
			}
			obj.hideTimer=window.setTimeout("ypSlideOutMenu.hide('"+id+"')",ypSlideOutMenu.hideDelay);
		}
	}
}
ypSlideOutMenu.hideAll=function()
{
	var reg=ypSlideOutMenu.Registry;
	for(menu in reg)
	{
		ypSlideOutMenu.hide(menu);
		if(menu.hideTimer)
		{
			window.clearTimeout(menu.hideTimer);
		}
	}
}
ypSlideOutMenu.hide=function(id)
{
	var obj=ypSlideOutMenu.Registry[id];
	obj.over=false;
	if(obj.hideTimer)
	{
		window.clearTimeout(obj.hideTimer);
	}
	obj.hideTimer=0;
	if(obj.open&&!obj.aniTimer)
	{
		obj.startSlide(false);
	}
}
ypSlideOutMenu.prototype.startSlide=function(_21)
{
	this[_21?"onactivate":"ondeactivate"]();
	this.open=_21;
	if(_21)
	{
		this.setVisibility(true);
	}
	this.startTime=(new Date()).getTime();
	this.aniTimer=window.setInterval(this.gRef+".slide()",ypSlideOutMenu.minCPUResolution);
}
ypSlideOutMenu.prototype.slide=function()
{
	var _22=(new Date()).getTime()-this.startTime;
	if(_22>ypSlideOutMenu.aniLen)
	{
		this.endSlide(false);
	}
	else
	{
		var d=Math.round(Math.pow(ypSlideOutMenu.aniLen-_22,2)*this.accelConst);
		if(this.open&&this.dirType=="-")
		{
			d=-d;
		}
		else
		{
			if(this.open&&this.dirType=="+")
			{
				d=-d;
			}
			else
			{
				if(!this.open&&this.dirType=="-")
				{
					d=-this.dim+d;
				}
				else
				{
					d=this.dim+d;
				}
			}
		}
		this.moveTo(d);
	}
}
ypSlideOutMenu.prototype.endSlide=function()
{
	this.aniTimer=window.clearTimeout(this.aniTimer);
	this.moveTo(this.open?this.outPos:this.homePos);
	if(!this.open)
	{
		this.setVisibility(false);
		if(this.id=="menu4") { checkPrefTab(); /* see preferences.js */ }
		else { setMenuState(this.id); }
	}
	if((this.open&&!this.over)||(!this.open&&this.over))
	{
		this.startSlide(this.over);
	}
}
ypSlideOutMenu.prototype.setVisibility=function(_24)
{
	var s=this.ns4?this.container:this.container.style;s.visibility=_24?"visible":"hidden";
}
ypSlideOutMenu.prototype.moveTo=function(p)
{
	this.style[this.orientation=="h"?"left":"top"]=this.ns4?p:p+"px";
}
ypSlideOutMenu.prototype.getPos=function(c)
{
	return parseInt(this.style[c]);
}
ypSlideOutMenu.prototype.onactivate=function(){}
ypSlideOutMenu.prototype.ondeactivate=function(){}

/*****************************************************
 * added for handling of menu states
 *****************************************************/
function setMenuState(id)
{
	var t = "_trigger";
	if(isOpening[id])
	{
		/* reset menus to original state on page load */
		if(isActivated["menu1"]) { isActivated["menu1"]=false;setClassName("menu1"+t,getClassName("menu1"+t).split("_")[0]); }
		if(isActivated["menu2"]) { isActivated["menu2"]=false;setClassName("menu2"+t,getClassName("menu2"+t).split("_")[0]); }
		if(isActivated["menu3"]) { isActivated["menu3"]=false;setClassName("menu3"+t,getClassName("menu3"+t).split("_")[0]); }
		isActivated[id]=true;
		if(getClassName(id.toString()+t)=="active") { setClassName(id.toString()+t,getClassName(id.toString()+t)+"_activated"); }
		else { setClassName(id.toString()+t,"activated"); }
	}
	else
	{
		isActivated[id]=false;
		if(getClassName(id.toString()+t)!="active")
		{
			if(getClassName(id.toString()+t).split("_").length>1) { setClassName(id.toString()+t,"active"); }
			else { setClassName(id.toString()+t,""); }
		}
	}
}
var isActivated = { menu1:false, menu2:false, menu3:false };
var isOpening = { menu1:false, menu2:false, menu3:false };

