// Animation libary
// Created by Kevin Dibble. Magic Designs Limited. All Rights Reserved.
var linkAnimation = new function(){
	this.aniLink				= Array();		// Animation link
	this.toggle					= Array();		// Hold colour change amount for each animation
	this.r						= Array();		// Red Colour	0-255
	this.g						= Array();		// Green colour 0-255
	this.b						= Array();		// blue colour	0-255
	this.start_r				=88;
	this.start_g				=94;
	this.start_b				=130;
	this.end_r					=239;
	this.end_g					=239;
	this.end_b					=239;
	this.steps					= 5;			// Steps between each colour transition
	this.seconds				= 25;			// Seconds between each transition
	this.animID					= Array();		// AnimationID = used to start and stop animations
	this.linkAnimationCount		= Array();		// Array used to track animations on page
	this.animationCount			= Array();		// Array to store how many times the animation has looped
	this.doAnim = function(linkId){
		var self = linkAnimation;
		self.aniLink[linkId]=linkId;			// Set up array
		if(document.getElementById(linkId)){
			self.r[linkId] 		= self.start_r;
			self.g[linkId]		= self.start_g;
			self.b[linkId] 		= self.start_b;
			self.toggle[linkId]	= self.steps;	
			self.linkAnimationCount[self.linkAnimationCount.length+1] = linkId;
			var currAnimationCount = self.linkAnimationCount.length - 1;
			self.animationCount[linkId]=0;
			self.stopAnim(linkId);				// Clear current animation
			self.animID[linkId] = setInterval("linkAnimation.animate(" + currAnimationCount + ")",self.seconds);
		}
	};
	this.animate = function(currAnimation){
		var self = linkAnimation;
		linkId = self.linkAnimationCount[currAnimation];
		self.animationCount[linkId]++;
		if(self.r[linkId] > self.end_r || self.r[linkId] < self.start_r){self.toggle[linkId] = (self.toggle[linkId] * -1);}
		self.r[linkId] += self.toggle[linkId];
		self.g[linkId] += self.toggle[linkId];
		self.b[linkId] += self.toggle[linkId];
		if(document.getElementById(self.aniLink[linkId])){
			document.getElementById(self.aniLink[linkId]).style.color = 'rgb('+ self.r[linkId] + ','+ self.g[linkId] + ','+ self.b[linkId] + ')';
		}
	};
	this.restore = function(linkId){
		var self = linkAnimation;
		clearInterval(self.animID[linkId]);		// Stop the current Animation
		self.animID[linkId] = null;
		self.linkAnimationCount[self.linkAnimationCount.length+1] = linkId;
		var currAnimationCount = self.linkAnimationCount.length - 1;
		self.animID[linkId] = setInterval("linkAnimation.restoreAnim("+currAnimationCount+")",self.seconds);
	};
	this.restoreAnim = function(aniCount){
		var self = linkAnimation;
		var linkId = self.linkAnimationCount[aniCount];
		self.r[linkId] = self.r[linkId] - self.steps;
		self.g[linkId] = self.g[linkId] - self.steps;
		self.b[linkId] = self.b[linkId] - self.steps;
		if(document.getElementById(self.aniLink[linkId])){
			document.getElementById(self.aniLink[linkId]).style.color = 'rgb('+ self.r[linkId] + ','+ self.g[linkId] + ','+ self.b[linkId] + ')';
		}
		if(self.r[linkId] <= self.start_r){
			clearInterval(self.animID[linkId]);
			self.animID[linkId] = null;
			self.r[linkId] = self.start_r; 
			self.g[linkId] = self.start_g; 
			self.b[linkId] = self.start_b;
			document.getElementById(self.aniLink[linkId]).style.color = 'rgb('+ self.r[linkId] + ','+ self.g[linkId] + ','+ self.b[linkId] + ')';
		}
	};
	this.stopAnim = function(linkId){
		var self = linkAnimation;
		clearInterval(self.animID[linkId]);
		self.animID[linkId] = null;
		self.r[linkId] = self.start_r; 
		self.g[linkId] = self.start_g; 
		self.b[linkId] = self.start_b;
		if(document.getElementById(self.aniLink[linkId])){
			document.getElementById(self.aniLink[linkId]).style.color = 'rgb('+ self.start_r + ','+ self.start_g + ','+ self.start_b + ')'; 
		}
		self.animationCount[linkId]=0;
	};
}