var finishTime = 0;

var globEndVal = 0;



function afterAnim(command)

{

	//synch anims

	deltaTime = 0;

	epoch = new Date(); 

	var startTime = epoch.getTime(); // UNIX timeStamp

	if (startTime < finishTime) 

		deltaTime = finishTime - startTime;

		

	setTimeout(command, deltaTime);

}



function animate(objID, prop, startVal, endVal, millisec)

{	

	var steps = 25;

	var speed = Math.round(millisec / steps);

	var timer = 0;

	var deltaTime = 0;

	var actVal = 0;

	

	//synch anims

	epoch = new Date(); 

	var startTime = epoch.getTime(); // UNIX timeStamp

	if (startTime < finishTime) 

	{

		deltaTime = finishTime - startTime;

		finishTime = finishTime + millisec;

	}

	else

		finishTime = startTime + millisec;

	

	if (prop == 'opacity')

	{		

		if (navigator.appName.indexOf("Microsoft")!= -1) // change DOM from STYLE to FILTERS

		{

			if (startVal == -1) startVal = globEndVal;

			var strObject = 'document.getElementById(\'' + objID + '\').filters.alpha';

		}

		else // change SCALE FROM 0..1 to 0..100

		{

			var strObject = 'document.getElementById(\'' + objID + '\').style';

			if (startVal == -1) 

				startVal = Math.abs(globEndVal);

			else

				startVal = startVal / 100;



			endVal = endVal / 100;

		}

	}

	else

		var strObject = 'document.getElementById(\'' + objID + '\').style';

		

	for(i=0; i<=steps; i++) 

	{

		if (startVal < endVal)

			actVal = startVal + (Math.abs(startVal - endVal) / steps) * i;

		else

			actVal = startVal - (Math.abs(startVal - endVal) / steps) * i;

		

		setTimeout(strObject + '.' + prop + '=' + actVal, (timer * speed) + deltaTime);

		timer++;

	}

	

	globEndVal = endVal;

}






