var fpTools = [];
fpTools = {
	include: function(fileName, initFunction)
		{
		if(document.body)
			{
			var scriptFile = document.createElement("script");
			scriptFile.src = fileName+"?disablecache="+Math.round(Math.random()*9999);
			scriptFile.type = "text/javascript";
			document.body.appendChild(scriptFile);
			if(initFunction) setTimeout(initFunction,10);
			}
		else
			{
			var timeout = "fpTools.include('"+fileName+"', "+initFunction+")";
			setTimeout(timeout , 100);
			}
		},
	
	addNewStyle: function(styleSheet)
		{
		/* Ads new CSS to document.body */
		var styles = document.getElementsByTagName("LINK");
		var newStyle = 0;
		for(var i in styles) if(styles[i].href) if(styles[i].href.indexOf(styleSheet) != -1) newStyle++;
		if(newStyle < 1)
			{
			var newuiWindowtyle = document.createElement("link");
			newuiWindowtyle.setAttribute('href', styleSheet+'?disableCache='+Math.round(Math.random()*9999));
			newuiWindowtyle.setAttribute('rel', 'stylesheet');
			newuiWindowtyle.setAttribute('type', 'text/css');
			document.getElementsByTagName('head')[0].appendChild(newuiWindowtyle);
			}
		}
	};
/* Animate */

var animate = [];
animate = {
	tasks	: [],

	init: function(obj, cssProperty, startValue, endValue, ratio, interval, params)
		{
		var timeLine = new Array();
		timeLine.push(startValue);

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

		var animateId = this.tasks.length;
		
		this.tasks.push({
			animateOrder	: animateId,
			targetObj	: obj,
			styleProperty	: cssProperty,
			steps		: timeLine,
			interval	: interval,
			parameters	: params
			});

		if(animate.timer) clearInterval(animate.timer);
		animate.timer = setInterval("animate.purge()", 30);
		},
	
	purge: function()
		{
		if(!this.tasks[0]) return false;
//		alert(this.tasks.length);

		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].parameters;
			animateThis(obj, animate.tasks[i].steps[0], animateParams);
			this.tasks[i].steps.splice(0,1);
			}
		if(this.tasks[0].steps.length <= 0)
			{
			this.tasks.splice(0, 1);
			if(this.tasks.length > 0)
				{
				}
			else	{
				clearInterval(animate.timer);
				return false;
				}
			}
		},

	_x: function(obj, animValue)
		{
		obj.style.left = animValue+"px";
		},
		
	_y: function(obj, animValue)
		{
		obj.style.top = animValue+"px";
		},

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

	_height: function(obj, animValue,params)
		{
		obj.style.height= animValue+"px";
		if(params == 'centerize') obj.style.top = + ((fixedPointUiControl.screenHeight/2) - (animValue/2)) +"px";
		},
	
	_alpha: function(obj, animValue)
		{
		if(document.all)
			{
			obj.style.filter = "Alpha(opacity="+animValue+")"; 
			}
		else	{
			obj.style.opacity = animValue/100;
			}
		}
	}
fpTools.animate = animate;


/* Chrome */ 

var chromeElement = [];
chromeElement = {
	createInputField: function(elemName)
		{
		var container = document.createElement("DIV");
		container.className = 'tntclInputHolder';

		var inputFieldLeft = document.createElement("DIV");
		inputFieldLeft.className = 'tntclInputLeft';

		var inputField = document.createElement("INPUT");
		inputField.onfocus = function(){this.parentNode.className = 'tntclInputHolderFocus';}
		inputField.onblur = function(){this.parentNode.className = 'tntclInputHolder';}
		inputField.className = "tntclInput";

		var inputFieldRight = document.createElement("DIV");
		inputFieldRight.className = "tntclInputRight";

		container.appendChild(inputFieldLeft);
		container.appendChild(inputField);
		container.appendChild(inputFieldRight);

		return container;
		}
	}

fpTools.chrome = chromeElement;



/* Gradient */
var gradient = [];
gradient = {
	gradients	: [],

	init: function(gradient, gradientContainer, gradientHeight)
		{
		var container = document.createElement("DIV");
		with(container.style)
			{
			position	= "absolute";
			left		= 0+"px"; 
			top		= 0+"px"; 
			width		= 100+"%";
			background	= "#efefef";
			}
		if(!gradientHeight)
			{
			container.style.height = parseInt(gradientContainer.scrollHeight)+"px";
			}
		else	{
			container.style.height = gradientHeight+"px";
			}

		var containerPositionFix = document.createElement("DIV");
		containerPositionFix.style.position = "relative";
		container.appendChild(containerPositionFix);
		gradientContainer.appendChild(container);
		this.drawGradient(gradient, containerPositionFix, parseInt(container.style.height));

		},

	drawGradient: function(gradient, container, height)
		{
		var step = 0;
		for(var i=0; i < this.gradients[gradient].gradient.length-1; i++)
			{
			var start = height/100*this.gradients[gradient].gradient[i][0];
			var end = height/100*this.gradients[gradient].gradient[i+1][0];
			var r_start = this.gradients[gradient].gradient[i][1];
			var g_start = this.gradients[gradient].gradient[i][2];
			var b_start = this.gradients[gradient].gradient[i][3];

			var r_end = this.gradients[gradient].gradient[i+1][1];
			var g_end = this.gradients[gradient].gradient[i+1][2];
			var b_end = this.gradients[gradient].gradient[i+1][3];

			var r_inc = (r_end-r_start)/(end-start);
			var g_inc = (g_end-g_start)/(end-start);
			var b_inc = (b_end-b_start)/(end-start);
			for(var j=0; j < end-start; j++)
				{
				var nakki = document.createElement("DIV");
				with(nakki.style)
					{
					background	= 'rgb('+Math.round(r_start)+','+Math.round(g_start)+','+Math.round(b_start)+')';
					position	= 'absolute';
					top		= step+j+"px";
					height		= 1+"px";
					width		= 100+"%";
					}
				container.appendChild(nakki);
				r_start+=r_inc;
				g_start+=g_inc;
				b_start+=b_inc;
				}
			step+=end-start;
			}
		}
	}

gradient.gradients['youtube'] = {
	id		: 'youtube',
	gradient	: [[0,200,200,200], [100,230,230,230], [99,200,200,200], [100,200,200,200]]
	}

gradient.gradients['metal'] = {
	id		: 'metal',
	gradient	: [[0,180,180,180], [52, 200,200,200], [51,250,250,250], [100,200,200,200]]
	}

gradient.gradients['plastic'] = {
	id		: 'plastic',
	gradient	: [[0,60,60,60], [82, 80,80,80], [81,60,60,60], [100,30,30,30]] // To create sharp edges we need to overlap gradients. First draw from 0-51 percent and then start new from 50
	}

fpTools.gradient = gradient;