var animate = {
	tasks	: [],

	init: function(animateData)
		{
		if(!animateData) return false;
		var timeLine = new Array();
		if(isNaN(animateData.startValue) || isNaN(animateData.endValue)) return false;
		if(typeof(animateData.startValue) == 'undefined') animateData.startValue = 0;
		if(typeof(animateData.endValue) == 'undefined') animateData.endValue = 100;
		if(typeof(animateData.iteration) == 'undefined') animateData.iteration = 1;

		timeLine.push(animateData.startValue);
		while(animateData.startValue != animateData.endValue)
			{
			if(animateData.startValue <= animateData.endValue)
				{
				iterate = Math.ceil((animateData.endValue - animateData.startValue)/animateData.iteration)
				animateData.startValue+=iterate;
				}
			else	{
				iterate = Math.ceil((animateData.startValue - animateData.endValue)/animateData.iteration)
				animateData.startValue-=iterate;
				}
			timeLine.push(animateData.startValue);
			}

		var animateId = this.tasks.length;
		
		this.tasks.push({
			animateOrder	: animateId,
			targetObj	: animateData.obj,
			styleProperty	: animateData.styleProperty,
			steps		: timeLine,
			interval	: animateData.speed,
			runAfter	: animateData.init
			});
		if(animate.timer) clearInterval(animate.timer);
		animate.timer = setInterval("animate.purge()", 30);
		},
	
	purge: function()
		{
		if(!this.tasks[0]) return false;

		for (var i=0; i < this.tasks.length; i++)
			{
			var obj = this.tasks[i].targetObj;
			var animateThis = this.tasks[i].styleProperty;
			var animateParams = this.tasks[i].runAfter;
			animateThis(obj, animate.tasks[i].steps[0], animateParams);
			this.tasks[i].steps.splice(0,1);
			}
		for (var i=0; i < this.tasks.length; i++)
			{
			if(this.tasks[i].steps.length <= 0)
				{
				(typeof(this.tasks[i].runAfter) != 'undefined') ? eval(this.tasks[i].runAfter) : false;
				this.tasks.splice(i, 1);
				}
			}
		if(this.tasks.length <= 0)
			{
			clearInterval(animate.timer);
			return false;
			}
		},

	_x: function(obj, animValue)
		{
		(typeof animValue != 'undefined') ? obj.style.left = animValue+"px" : false;
		},

	_x2: function(obj, animValue)
		{
		(typeof animValue != 'undefined') ? obj.style.right = animValue+"px" : false;
		},

	_y: function(obj, animValue)
		{
		(typeof animValue != 'undefined') ? obj.style.top = animValue+"px" : false;
		},

	_y2: function(obj, animValue)
		{
		(typeof animValue != 'undefined') ? obj.style.bottom = animValue+"px" : false;
		},

	_width: function(obj, animValue, params)
		{
		obj.style.width= animValue+"px";
		if(params == 'centerize') obj.style.left = + ((fpUIC.screenWidth/2) - (animValue/2)) +"px";
		},

	_height: function(obj, animValue,params)
		{
		obj.style.height= animValue+"px";
		if(params == 'centerize') obj.style.top = + ((fpUIC.screenHeight/2) - (animValue/2)) +"px";
		},
	
	_alpha: function(obj, animValue , params)
		{
		if(animValue == 0) obj.style.display = "none";
		else obj.style.display = "block";
		if(document.all)
			{
			(typeof animValue != 'undefined') ? obj.style.filter = "Alpha(opacity='"+animValue+"')" : false;
			}
		else	{
			(typeof animValue != 'undefined') ? obj.style.opacity = animValue/100 : false;
			}
		}
	}

if(typeof(fpTools) == 'undefined') var fpTools = {};
fpTools.animate  = animate ;
