nlsEffectList={	barn:"progid:DXImageTransform.Microsoft.Barn(Duration=0.3,motion=out,orientation=vertical);"
				,blinds:"progid:DXImageTransform.Microsoft.Blinds(Duration=0.3,Bands=8,direction=right);"
				,checkerboard:"progid:DXImageTransform.Microsoft.Checkerboard(Duration=0.3,Direction=right,SquaresX=20,SquaresY=20);"
				,fade:"progid:DXImageTransform.Microsoft.Fade(Duration=0.3,Overlap=1.00);"
				,inset:"progid:DXImageTransform.Microsoft.Inset(Duration=0.3);"
				,iris:"progid:DXImageTransform.Microsoft.Iris(Duration=0.3,irisstyle=CIRCLE,motion=in);"
				,pixelate:"progid:DXImageTransform.Microsoft.Pixelate(Duration=0.3,MaxSquare=10);"
				,radialwipe:"progid:DXImageTransform.Microsoft.RadialWipe(Duration=0.3,wipestyle=WEDGE)"
				,randombars:"progid:DXImageTransform.Microsoft.RandomBars(Duration=0.3,Orientation=horizontal);"
				,randomdissolve:"progid:DXImageTransform.Microsoft.RandomDissolve(duration=0.3);"
				,slide:"progid:DXImageTransform.Microsoft.Slide(Duration=0.3,slidestyle=HIDE,Bands=5);"
				,spiral:"progid:DXImageTransform.Microsoft.Spiral(Duration=0.3,GridSizeX=64,GridSizeY=64);"
				,stretch:"progid:DXImageTransform.Microsoft.Stretch(Duration=0.3,stretchstyle=HIDE);"
				,strips:"progid:DXImageTransform.Microsoft.Strips(Duration=0.3,motion=rightdown);"
				,wheel:"progid:DXImageTransform.Microsoft.Wheel(Duration=0.3,spokes=10);"
				,gradienwipe:"progid:DXImageTransform.Microsoft.GradientWipe(Duration=0.3,GradientSize=0.75,wipestyle=0,motion=forward);"
				,zigzag:"progid:DXImageTransform.Microsoft.Zigzag(Duration=0.3,GridSizeX=8,GridSizeY=8);"
				,itemfade:"progid:DXImageTransform.Microsoft.Fade(Duration=0.2,Overlap=0.75);"
				,itemdissolve:"progid:DXImageTransform.Microsoft.RandomDissolve(duration=0.3);",aoslide:"Duration:2"
		   };
		   
function NlsMenuEffect(mId,effName)
{
	this.mId=mId;
	this.elm=null;
	this.effName=effName;
	this.isOut=false;
	this.prop=new Object();
	this.onShow=function(){};
	this.onHide=function(){};
	this.start=_defStart;
	this.run=_defRun;
	if(effName=="aoslide")
	{	
		this.start=_slideStart;
		this.run=_slideRun}return this
};

		_fadeTm=null;
		_fadesEff=new Object();
function _defStart(isOut)
{
	var mn=NlsMenu.$GE(this.mId);
	mn.childNodes[0].style.position="";
	nlsMenu[this.mId].rt.ready=true;
	this.elm=NlsMenu.$GE("effwin_"+this.mId);
	if(nls_isIE)
	{
		this.elm.style.filter=nlsEffectList[this.effName];
		if(this.elm.filters.length>0) this.elm.filters[0].apply();
	}
	else
	{
		this.elm=this.elm.parentNode;this.isOut=(isOut==true);
		if(!this.prop["init"])
		{
			this.elm.style.MozOpacity=(isOut?1:0);
			this.elm.style.opacity=(isOut?1:0);
		}
		this.prop["init"]=true;
		this.prop["dur"]=15;
		this.prop["rng"]=100;
		this.prop["spd"]=10}
};

function _defRun()
{
	if(nls_isIE)
	{
		if(this.elm.filters.length>0)this.elm.filters[0].play();
	}
	else
	{
		var me=this;
		if(this.elm.style.MozOpacity)
			this.prop["opa"]="MozOpacity";
		else 
			this.prop["opa"]="opacity";
		var p=new Object();
		p.x1=this.elm.style[this.prop["opa"]]*this.prop["rng"];
		if(this.isOut)
		{
			p.x2=0
		}
		else
		{
			p.x2=this.prop["rng"]-1
		}
		_fc_fade(p);
		this.prop["pt"]=p;
		this.prop["sd"]=0;
		_fadesEff[this.mId]=this;
		if(!_fadeTm)_fadeTm=setInterval(function(){_fadeAnimate();},this.prop["spd"]);
	}
};

function _fadeAnimate()
{
	var b=true;
	for(var it in _fadesEff)
	{
		var eff=_fadesEff[it];
		var p=eff.prop["pt"];
		if(eff.prop["sd"]<eff.prop["dur"])
		{
			eff.prop["sd"]++;
			eff.elm.style[eff.prop["opa"]]=effect_bezier(eff.prop["sd"]/eff.prop["dur"],p.x1, p.x2, p.c1, p.c2)/eff.prop["rng"]
		}
		else
		{
			eff.elm.style[eff.prop["opa"]]=p.x2/eff.prop["rng"];
			if(eff.isOut)
			{
				eff.onHide();
				eff.elm.style[eff.prop["opa"]]=0
			}
			else
			{
				eff.onShow();
			}
			delete _fadesEff[eff.mId]}b=false
	}
	if(b)
	{
		clearInterval(_fadeTm);
		_fadeTm=null
	}
};

_slideTm=null;
_slidesEff=new Object();

function _slideStart(isOut)
{
	var mn=NlsMenu.$GE(this.mId);
	this.elm=mn.childNodes[0];
	if(!isOut&&this.prop["init"]!=true)
	{
		this.elm.style.position="";
		var w=this.elm.offsetWidth;
		var h=this.elm.offsetHeight;
		with(mn.style)
		{
			overflow="hidden";
			width=w+"px";
			height=h+"px"
		};
		with(this.elm.style)
		{
			position=nls_isIE?"absolute":"relative";
			switch(this.prop["dir"])
			{
				case"right":
					top="0px";
					left=-w+"px";
					this.prop["st"]="left";
					break;
				case"left":
					top="0px";left=w+"px";
					this.prop["st"]="left";
					break;
				case"down":
					top=-h+"px";
					left="0px";
					this.prop["st"]="top";
					break;
				case"up":
					top=h+"px";
					left="0px";this.prop["st"]="top";
					break
			}
		};
		this.prop["mw"]=w;
		this.prop["mh"]=h;
		if(!nls_isIE)this.prop["init"]=true
	}
	this.prop["dur"]=parseFloat(nlsEffectList[this.effName].split(":")[1])*10;
	this.prop["spd"]=15;
	this.isOut=(isOut==true);
	nlsMenu[this.mId].rt.ready=false
};

function _slideRun()
{
	var me=this;
	var p=new Object();
	var l=parseInt(this.elm.style.left);
	var t=parseInt(this.elm.style.top);
	var c=this.isOut?1:0;
	switch(this.prop["dir"])
	{
		case"right":
			p.x1=l;
			p.x2=-this.prop["mw"]*c;
			break;
		case"left":
			p.x1=l;
			p.x2=this.prop["mw"]*c;
			break;
		case"down":
			p.x1=t;
			p.x2=-this.prop["mh"]*c;
			break;
		case"up":
			p.x1=t;
			p.x2=this.prop["mh"]*c;
			break
	};
	_fc_slide(p);
	this.prop["pt"]=p;
	this.prop["sd"]=0;
	_slidesEff[this.mId]=this;
	if(!_slideTm)_slideTm=setInterval(function(){_slideAnimate();},this.prop["spd"]);
};

function _slideAnimate()
{
	var b=true;
	for(var it in _slidesEff)
	{
		var eff=_slidesEff[it];
		var p=eff.prop["pt"];
		if(eff.prop["sd"]<eff.prop["dur"])
		{
			eff.elm.style[eff.prop["st"]]=effect_bezier(eff.prop["sd"]/eff.prop["dur"],p.x1,p.x2,p.c1,p.c2)+"px";
			eff.prop["sd"]++
		}
		else
		{
			eff.elm.style[eff.prop["st"]]=p.x2+"px";
			if(eff.isOut)
			{
				eff.onHide();
			}
			else
			{
				nlsMenu[eff.mId].rt.ready=true;
				eff.onShow();
			}
			delete _slidesEff[eff.mId]}b=false
	}
	if(b){clearInterval(_slideTm);
	_slideTm=null}
};

function _fc_fade(p)
{
	p.c1=p.x1+(p.x2-p.x1)*2/3;
	p.c2=p.x2
};

function _fc_slide(p)
{
	p.c1=p.x1+(p.x2-p.x1)*2/3;
	p.c2=p.x2
};

function _f1(t)
{
	return(1-t);
};

function _f2(t)
{
	return(1-t)*(1-t);
};

function _f3(t)
{
	return(1-t)*(1-t)*(1-t);
};

function _f4(t)
{
	return t*t*t
};

function effect_bezier(t,x1,x2,c1,c2)
{
	return _f3(t)*x1+3*t*_f2(t)*c1+3*t*t*_f1(t)*c2+_f4(t)*x2
};

function NlsMenuItemEffect(itemId,effName)
{
	this.tmId=null;
	this.itemId=itemId;
	this.elm=null;
	this.effName=effName
};

NlsMenuItemEffect.prototype.init=function()
{
	if(!nls_isIE)return;
	if(this.elm==null)this.elm=NlsMenu.$GE(this.itemId);
	if(nlsEffectList[this.effName])this.elm.style.filter=nlsEffectList[this.effName];
	if(this.elm.filters.length>0)this.elm.filters[0].apply();
};

NlsMenuItemEffect.prototype.start=function()
{
	if(!nls_isIE)return;
	if(this.elm.filters.length>0)this.elm.filters[0].play();
};

NLSMENU.applyBorder=function(bTop,bBottom,bLeft,bRight)
{
	if(!bTop&&!bBottom&&!bLeft&&!bRight)
	{
		this.customBorder=null
	}
	else
	{
		this.customBorder=new NlsMenuBorder(bTop,bBottom,bLeft,bRight);
	}
};

function NlsMenuBorder(bTop,bBottom,bLeft,bRight)
{
	var border="<table cellpadding=0 cellspacing=0>";
	var sTop="",sBottom="",sLeft="",sRight="";
	if(bTop)sTop="<td><table width='100%' cellpadding=0 cellspacing=0><tr><td class='@stlprf_mtop'></td></tr></table></td>";
	if(bBottom)sBottom="<td><table width='100%' cellpadding=0 cellspacing=0><tr><td class='@stlprf_mbottom'></td></tr></table></td>";
	if(bLeft)
	{
		sLeft="<td height='100%' class='@stlprf_mleft' style='font-size:1pt;'>&nbsp;</td>";
		if(bTop)sTop="<td class='@stlprf_mtopleft'></td>"+sTop;
		if(bBottom)sBottom="<td class='@stlprf_mbottomleft'></td>"+sBottom
	}
	if(bRight)
	{
		sRight="<td height='100%' class='@stlprf_mright' style='font-size:1pt;'>&nbsp;</td>";
		if(bTop)sTop+="<td class='@stlprf_mtopright'></td>";
		if(bBottom)sBottom+="<td class='@stlprf_mbottomright'></td>"
	}
	if(sTop!="")sTop="<tr>"+sTop+"</tr>";
	if(sBottom!="")sBottom="<tr>"+sBottom+"</tr>";
	border+=sTop+"<tr height='100%'>"+sLeft+"<td>@menu</td>"+sRight+"</tr>"+sBottom;border+="</table>";
	this.applyBorder=function(smenu,stlprf)
	{
		var b=border.replace(/@stlprf_/gi,stlprf);
		return b.replace(/@menu/gi,smenu);
	};
	return this
};