// ----------------  clipping animation  -----------------------
function animClip(sId, iStart, iEnd, iAnimLength, bShow) { 
	Object.prototype.clipAnim=new Object();
	
	var oObj = document.getElementById(sId);
	if(typeof(oObj.clipAnim.isAnimating)=="undefined" || !oObj.clipAnim.isAnimating) { 	
		oObj.clipAnim.isAnimating=true;
		oObj.clipAnim.iUpdateInterval=10;
		oObj.clipAnim.curTime=0;
		if(bShow) { setObjClip(sId, 0, 0, 0, 0); }
		
		oObj.clipAnim.animInterval=setInterval("checkClipAnim('"+sId+"', "+iStart+", "+iEnd+", "+iAnimLength+", "+bShow+")", oObj.clipAnim.iUpdateInterval);
	}
}
function checkClipAnim(sId, iStart, iEnd, iAnimLength, bShow) {
	var oObj = document.getElementById(sId);
	if(!bShow) { iEnd=iStart*-1; } // reverse for closing the menu
	var iNextVal = Math.easeInOutQuint(oObj.clipAnim.curTime, iStart, iEnd, iAnimLength);
	oObj.clipAnim.curTime+=oObj.clipAnim.iUpdateInterval;

	if(oObj.clipAnim.curTime<=iAnimLength) {
		setObjClip(sId, 0, oObj.offsetWidth, iNextVal, 0);
	}
	else { 
		clearInterval(oObj.clipAnim.animInterval);
		if(!bShow) { changeMenuItemClasses(oObj, oObj.parentLI, bShow); }
		oObj.clipAnim=new Object(); // clear out the old anim now that it's done
		oObj.clipAnim.isAnimating=false;
	}
}
function setObjClip(sId, iTop, iRight, iBottom, iLeft) {
	var oObj = document.getElementById(sId);
	oObj.style.clip = 'rect('+iTop+'px, '+iRight+'px, '+iBottom+'px, '+iLeft+'px)';
}






// ----------------------  Alpha Animation  -----------------------------
//Object.prototype.startAlpha=85;

function animAlpha(sId, iStart, iEnd, iAnimLength, bShow) {
	Object.prototype.fadeAnim=new Object();
	//Object.prototype.startAlpha=85;

	var oObj = document.getElementById(sId);
	if(typeof(oObj.fadeAnim.isAnimating)=="undefined" || !oObj.fadeAnim.isAnimating) {
		oObj.fadeAnim.isAnimating = true;
		oObj.fadeAnim.iUpdateInterval=10;
		oObj.fadeAnim.curTime=0;
		setObjAlpha(oObj, iStart);
		oObj.fadeAnim.animInterval = setInterval("checkAlphaAnim('"+sId+"', "+iStart+", "+iEnd+", "+iAnimLength+", "+bShow+")", oObj.fadeAnim.iUpdateInterval);
	}
}
function checkAlphaAnim(sId, iStart, iEnd, iAnimLength, bShow) {
	var oObj = document.getElementById(sId);
	if(!bShow) { iEnd=iStart*-1; } // for closing the menu
	var iNextVal = Math.linearTween(oObj.fadeAnim.curTime, iStart, iEnd, iAnimLength);
	oObj.fadeAnim.curTime+=oObj.fadeAnim.iUpdateInterval;

	if(oObj.fadeAnim.curTime<=iAnimLength) { setObjAlpha(oObj, iNextVal); }
	else { 
		clearInterval(oObj.fadeAnim.animInterval);
		if(!bShow) { changeMenuItemClasses(oObj, oObj.parentLI, bShow); }
		oObj.fadeAnim=new Object(); // clear out the old anim now that it's done
		oObj.fadeAnim.isAnimating=false;
	}
}
function setObjAlpha(oObj, iAlpha) {
	var f = oObj.filters;
	if (f) {
		if (oObj.style.filter.indexOf("alpha") == -1) {
			oObj.style.filter += ' alpha(opacity=' + iAlpha + ')';
		}
		else if (f.length && f.alpha) {
			with (f.alpha)	{ opacity = iAlpha; }
		}
	}
	else { 
		oObj.style.opacity = iAlpha/100.1;
		oObj.style.MozOpacity = iAlpha/100.1;
	}
}









// ---------------------------  Easing prototypes  --------------------------
// t: current time, b: beginning value, c: change in value, d: duration
Math.easeInOutQuint = function (t, b, c, d) {
	if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
	return c/2*((t-=2)*t*t*t*t + 2) + b;
}
// t: current time, b: beginning value, c: change in value, d: duration
Math.linearTween = function (t, b, c, d) {
	return c*t/d + b;
}






var MenuAnimationsLoaded=true;
