// JavaScript Document

/* 
Example Javascript Animation Techniques by Hesido.com;
2 different reusable examples.
Attribution is not required, but is welcome, you can also take out the comments
updated: 16.05.06
*/
if (document.getElementById && document.getElementsByTagName) {
if (window.addEventListener) window.addEventListener('load', initAnims, false);
else if (window.attachEvent) window.attachEvent('onload', initAnims);
}
var mPos = new Array([-125,0],[-275,0],[-400,0],[-500,0],[-575,0],[-625,0],[-650,0],[-660,0],[-662,0],[-672,0],[-967,0],[-747,0],[-822,0],[-922,0],[-1047,0],[-1197,0]);
//var mPos = new Array([-125,0],[-150,0],[-225,0],[-350,0],[-500,0],[-550,0],[-600,0],[-675,0],[-725,0],[-750,0],[-756,0],[-758,0],[-764,0],[-789,0],[-839,0],[-914,0],[-1014,0],[-1139,0]);
var mWidth = 150; // maximuni width
function initAnims() {

//	Init background frame based animation
	classChange(document.getElementById('nav_main'),'scriptactive','noscript')
	var animElements = document.getElementById('nav_main').getElementsByTagName('a');
	//document.getElementById('animmenu3').className='examplediv scriptactive';
	
	
	for(var i=0; i<animElements.length; i++) {
		animElements[i].bgAnim = {
		iPos:[0,0], //initial (starting) position (the second value will be declared as percentage, using the pUnit variable.
		pUnit:['px','px'], //Unit used for positions
		cFrame:0, //current (starting) frame
		mFrame: 9, //max frame.
		//dPos:mPos,
		dPos:[-150,0], //width, height change (delta position) for each frame
		mSec:25 //milisecond intervals the animation will be played.
		}
		animElements[i].onmouseover = backPosAnimF;
		animElements[i].onmouseout = backPosAnimR;
	}
		
	function backPosAnimF() {
	//we're passing the element, the animation variable holder, start and end frames to the animator function
		doBackPosAnim(this,this.bgAnim,this.bgAnim.cFrame, this.bgAnim.mFrame);
	}
	
	function backPosAnimR() {
		doBackPosAnim(this,this.bgAnim,this.bgAnim.cFrame, 0);
	}

}

function doBackPosAnim(elem,vrH,startFrm,endFrm) { 
//Animcode by www.hesido.com 
    if (vrH.intID) window.clearInterval(vrH.intID); 
    var actStep = 0, steps = Math.abs(endFrm - startFrm)+1; 
		var newWidth;
    vrH.intID = window.setInterval( 
        function() { 
            vrH.cFrame = easeInOut(startFrm,endFrm,steps,actStep,1); 
            vrH.cPos = [ 
                //vrH.iPos[0]+mPos[vrH.cFrame][0], 
                //vrH.iPos[1]+mPos[vrH.cFrame][1] 
								vrH.iPos[0]+vrH.cFrame*vrH.dPos[0], 
                vrH.iPos[1]+vrH.cFrame*vrH.dPos[1] 
                ]; 
						
            elem.style.backgroundPosition = vrH.cPos[0]+vrH.pUnit[0]+' '+vrH.cPos[1]+vrH.pUnit[1]; 
						//changewidth = Math.abs(mPos[(vrH.cFrame)][0]-mPos[(vrH.cFrame-1)][0]);
/*						
						if(vrH.cFrame>0){
							newWidth = Math.abs(mPos[vrH.cFrame][0]-mPos[vrH.cFrame-1][0]);
							fMaxCenter = Math.abs(mWidth*.5);
							fItemCenter = Math.abs(newWidth*.5)
							
						} else {
							newWidth = Math.abs(mPos[vrH.cFrame][0]);
							fMaxCenter = Math.abs(mWidth*.5);
							fItemCenter = Math.abs(newWidth*.5)
						}
							posCenter = Math.abs(fMaxCenter-fItemCenter);
							elem.style.width = newWidth+vrH.pUnit[0];
							elem.style.left = posCenter+vrH.pUnit[0];
           	
		//					alert(fMaxCenter+' / '+fItemCenter+'; '+newWidth);
	*/						
						actStep++; 
            if (actStep > steps) window.clearInterval(vrH.intID); 
						
        } 
        ,vrH.mSec) 
}

function easeInOut(minValue,maxValue,totalSteps,actualStep,powr) {
//Generic Animation Step Value Generator By www.hesido.com
	totalSteps = Math.max(totalSteps,1)
	var delta = maxValue - minValue;
	var stepp = minValue+(Math.pow(((1 / totalSteps)*actualStep),powr)*delta);
	return Math.ceil(stepp)
}

function classChange(elem,addClass,remClass) {
//Add + remove classnames function by www.hesido.com
	if (!elem.className) elem.className = '';
	var clsnm = elem.className;
	if (addClass && !clsnm.match(RegExp("\\b"+addClass+"\\b"))) clsnm = clsnm.replace(/(\S$)/,'$1 ')+addClass;
	if (remClass) clsnm = clsnm.replace(RegExp("(\\s*\\b"+remClass+"\\b(\\s*))*","g"),'$2');
	elem.className=clsnm;
	}

/* debug code  */
function showError(str) {
if (window.opera) opera.postError('|'+str+'|');
else alert('|'+str+'|');
}