/*
* Opacity Control
* @Author: Alexander Gavazov
* @Date: 2007-11-22
*/

var fadeElements = [];

function setOpacity(element, opacity)
{
	element.style['opacity'] = opacity / 100;

	if(element.filters)
	{
		element.style.filter = 'alpha(opacity=' + opacity + ')';
	}
}

function getOpacity(element)
{
	return (element.style['opacity']) ? element.style['opacity'] * 100 : 100;
}

function fade(elementId, toOpacity, fromOpacity, duration, onComplete, fadeFunction)
{
	var element = document.getElementById(elementId);
	var fromOpacity = (isNaN(parseInt(fromOpacity))) ? getOpacity(element) : fromOpacity;
	var fadeFunction = (fadeFunction) ? fadeFunction : Tween.strongEaseOut;
	var duration = (duration) ? duration : 1.5;

	if(!fadeElements[elementId])
	{
		fadeElements[elementId] = new Tween;
		var Calculator = fadeElements[elementId];
	}
	else
	{
		var Calculator = fadeElements[elementId];
		Calculator.stop();
	}

	Calculator.targetObject = element;

	Calculator.onMotionChanged = function(obj)
	{
		setOpacity(element, obj.target._pos);
	}

	if(typeof(onComplete) == 'function')
	{
		Calculator.onMotionFinished = onComplete;
	}

	Calculator.init(new Object(), 'x', fadeFunction, fromOpacity, toOpacity, duration);
	Calculator.start();
}