/*Copyright DragnWing Productions 2009 - All Rights Reserved - Joseph Neathawk */

var Slider = new function()
{
	var me = this;
	me.name = 'Slider';
	me.MasterTitle = false;
	
	//contains the current viewing image number
	me.image1 = 0;
	me.image2 = 0;
	
	me.sliding = false;
	
	me.originalHeight = 400;
	me.image1Height = me.originalHeight;
	me.image2Height = 0;
	me.vertical = true;
	
	me.originalWidth = 860;
	me.image1Width = me.originalWidth;
	me.image2Width = 0;
	me.horizontal = true;
	
	me.timer = new Date().getTime();
	me.slideInterval = 5000;
	me.slideTime = 750;
	
	//contains all image info (thumbnail,image,date,title,desc)
	//if default of false is not changed no other functionality will be written/available
	me.image = new Array(false);
	//contains the thumbnail SRC for preloading
	me.imageSRC = new Array();
	
	
	
	me.start = function()
	{	
		if(me.image[0] != false)
		{
			me.preloadImage();				
			
			var output = "\n" + '<div id="' + me.name + 'Wrapper" >';
			//alert('image');
			output += "\n" + '<div id="' + me.name + 'ImageWrapper" >';
			output += "\n" + '<img id="' + me.name + 'Image2" src="" />';
			output += "\n" + '<img id="' + me.name + 'Image1" src="" />';
			output += "\n" + '</div>';
			if(me.MasterTitle != false)
			{
				output += "\n" + '<div id="' + me.name + 'MasterTitle" >';
				output += "\n" + '<h1>' + me.MasterTitle + '</h1>';
				output += "\n" + '</div>';	
			}
			for(var i = 0; i < me.image.length; i++)
			{
				var tempStyle = 'position:absolute; left:' + (i * 11 + 7) + 'px; bottom:7px; height:6px; width:6px; border:1px solid #777777; cursor:pointer;';
				if(i == 0)
				{
					tempStyle += '  background-color:#ffffff;';// border-color:#666666;';
				}
				else
				{
					tempStyle += '  background-color:#000000;';// border-color:#cccccc;';
				}
				tempStyle += '  -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; ';
				output += "\n" + '<div id="' + me.name + 'Icon' + i + '" style="' + tempStyle + '" onclick="javascript:' + me.name + '.jump(' + i + ');" ></div>';
			}	
			output += "\n" + '</div><div style="clear:both; height:0px;"></div>';
			document.write(output);
			
			me.setImage();
			me.intervalCounter();
		}
	};
	
	me.preloadImage = function()
	{		
		for(var i = 0; i < me.image.length; i++)
		{
			me.imageSRC[i] = new Image();
			me.imageSRC[i].src = me.image[i][0];
		}	
	};	
	
	me.intervalCounter = function()
	{				
		var tempTime = new Date().getTime();
		if(me.timer + me.slideInterval < tempTime)
		{
			me.timer = tempTime;
			me.next()
			me.switchImage();
			me.sliding = true;		   
		}
		me.slide();	
		
		setTimeout(me.name + '.intervalCounter()',10);
	};
	
	me.slide = function()
	{
		if(me.sliding)
		{	
			var newTime = new Date().getTime() - me.timer;
			if(newTime >= me.slideTime)
			{
				me.image1Height = me.originalHeight;
				me.image2Height = 0;
				me.image1Width = me.originalWidth;
				me.image2Width = 0;
				me.sliding = false;
				me.setImage();
			}	
			else
			{			
				if(me.vertical)
				{
					var tempHeight = (me.originalHeight * newTime) / me.slideTime;
					me.image1Height = Math.floor(me.originalHeight - tempHeight);
					me.image2Height = Math.floor(tempHeight);
				}				
				if(me.horizontal)
				{					
					var tempWidth = (me.originalWidth * newTime) / me.slideTime;
					me.image1Width = Math.floor(me.originalWidth - tempWidth);
					me.image2Width = Math.floor(tempWidth);
				}
				
				me.image1Height = (me.image1Height > me.originalHeight) ? me.originalHeight : me.image1Height;
				me.image2Height = (me.image2Height > me.originalHeight) ? me.originalHeight : me.image2Height;
				me.image1Width = (me.image1Width > me.originalWidth) ? me.originalWidth : me.image1Width;
				me.image2Width = (me.image2Width > me.originalWidth) ? me.originalWidth : me.image2Width;
			}
			
			if(document.getElementById(me.name + 'Image1') && document.getElementById(me.name + 'Image2'))
			{
				var picture1 = document.getElementById(me.name + 'Image1');
				var picture2 = document.getElementById(me.name + 'Image2');	
				
				if(me.vertical && me.horizontal)
				{		
					picture1.style.height = me.image1Height + 'px';
					picture1.style.marginTop = (me.originalHeight - me.image1Height) + 'px';
					picture2.style.height = me.image2Height + 'px';
					picture2.style.marginTop = (me.originalHeight - me.image2Height) + 'px';
					
					picture1.style.width = me.image1Width + 'px';
					picture2.style.width = me.image2Width + 'px';				
				}			
				else if(me.vertical)
				{
					picture1.style.height = me.image1Height + 'px';
					picture2.style.height = me.image2Height + 'px';
					
					picture1.style.width = me.originalWidth + 'px';
					picture2.style.width = me.originalWidth + 'px';
				}				
				else if(me.horizontal)
				{					
					picture1.style.height = me.originalHeight + 'px';
					picture2.style.height = me.originalHeight + 'px';
					
					picture1.style.width = me.image1Width + 'px';
					picture2.style.width = me.image2Width + 'px';
				}
			}		
		}
	};
	
	me.next = function()
	{		
		me.image2 = me.image1;
		me.image1++;
		if(me.image1 >= me.imageSRC.length)
		{
			me.image1 = 0;
		}	
		
		for(var i = 0; i < me.image.length; i++)
		{	
			if(document.getElementById(me.name + 'Icon' + i))
			{
				var icon = document.getElementById(me.name + 'Icon' + i);
				icon.style.backgroundColor = '#000000';
				//icon.style.borderColor = '#cccccc';
			}	
		}	
		if(document.getElementById(me.name + 'Icon' + me.image1))
		{
			var icon = document.getElementById(me.name + 'Icon' + me.image1);
			icon.style.backgroundColor = '#ffffff';
			//icon.style.borderColor = '#666666';
		}	
	};
	
	me.jump = function(number)
	{
		if(me.image1 != (number))
		{
			me.image1 = number - 1;
			if(me.image1 < 0)
			{
				me.image1 = me.imageSRC.length - 1;
			}
			me.timer -= me.slideInterval;
		}
		else
		{
			me.timer = new Date().getTime();
		}
	};
	
	me.setImage = function()
	{
		if(document.getElementById(me.name + 'Image1') && document.getElementById(me.name + 'Image2'))
		{
			var picture1 = document.getElementById(me.name + 'Image1');
			picture1.src = me.imageSRC[me.image1].src;
			picture1.title = me.image[me.image1][1];	
			picture1.alt = me.image[me.image1][2];	
			var picture2 = document.getElementById(me.name + 'Image2');
			picture2.src = me.imageSRC[me.image2].src;
			picture2.title = me.image[me.image2][1];	
			picture2.alt = me.image[me.image2][2];	
		}
	};
	
	me.switchImage = function()
	{
		if(document.getElementById(me.name + 'Image1') && document.getElementById(me.name + 'Image2'))
		{
			var picture1 = document.getElementById(me.name + 'Image1');
			//picture1.src = me.imageSRC[me.image2].src;
			picture1.title = me.image[me.image2][1];	
			picture1.alt = me.image[me.image2][2];	
			var picture2 = document.getElementById(me.name + 'Image2');
			picture2.src = me.imageSRC[me.image1].src;
			picture2.title = me.image[me.image1][1];	
			picture2.alt = me.image[me.image1][2];
		}
	};
	
	me.newInterval = function(seconds)
	{
		me.slideInterval = seconds * 1000;
	};
	
	me.newSpeed = function(seconds)
	{
		me.slideTime = seconds * 1000;
	};
	
	me.newImage = function(picture,title,desc)
	{
		if(!title)
		{
			var title = 'Infiniti Golf';	
		}
		if(!desc)
		{
			var desc = title;	
		}
		//by default the array is set to false
		if(me.image[0] == false)
		{
			me.image = new Array();	
		}
		me.image[me.image.length] = new Array(picture,title,desc);	
		
	};	
}

