//plugin
(function($)
{
	var Slider = function(obj, width, speed, editNextPos)
	{
		//constants
		this.DIV = obj;
		this.WIDTH = width;
		this.SPEED = speed;
		this.EditNextPosition = editNextPos;
		
		//call constractor
		this.init();	
	};
	
	Slider.prototype = {
		
		SlidesNumber : 0,
		CurrentSlide : 0,
		SliderAnchor: window.location.hash,
		
		//jump
		jump: function(slidename)
		{			
			var slidePos;
			this.CurrentSlide = this.GetSlideIndexBySlideName(slidename);							
			slidePos = -1*this.WIDTH *this.CurrentSlide;						
			this.DIV.find("ul#SlideShowUl").css("left", slidePos);	
			
		},		
	
		//constractor
		init: function()
		{
			var handler = this;
			
			this.SlidesNumber = this.DIV.find("div.Slide").length;
			this.DIV.find("ul#SlideShowUl").css("width", this.WIDTH*this.SlidesNumber);

			
		  	//click left arrow --------------------------
			this.DIV.find("a#leftArrow").click(function()
			{
				var NextSlide, animateArgs, NextPos;
									 
				if(eval(handler.CurrentSlide) - 1 >= 0)
				{
					NextSlide = eval(handler.CurrentSlide) - 1;                    
					NextPos = (-1*handler.WIDTH *NextSlide)+handler.EditNextPosition;					
					animateArgs = {left:NextPos};  
					handler.DIV.find("ul#SlideShowUl").animate(animateArgs, handler.SPEED);
					handler.CurrentSlide = eval(handler.CurrentSlide) - 1; 

					handler.set_arrow_visibility();	

				}	
				
				return false;
			});	

			//click right arrow --------------------------
			this.DIV.find("a#rightArrow").click(function()
			{
				var NextSlide, animateArgs, NextPos;
				

				
				//get next slide
				if(eval(handler.CurrentSlide) + 1 < handler.SlidesNumber)
				{ 
					NextSlide = eval(handler.CurrentSlide) + 1;
					NextPos = (-1*handler.WIDTH *NextSlide)+handler.EditNextPosition;					
					animateArgs = {left:NextPos};  					
					handler.DIV.find("ul#SlideShowUl").animate(animateArgs, handler.SPEED);
					handler.CurrentSlide = eval(handler.CurrentSlide) + 1;

					handler.set_arrow_visibility();			

				}				
				
				
				return false;
			});	
			
			//init first anchor (onload)
			this.init_anchor();
		},
		
		//set arrows visibility
		set_arrow_visibility: function()
		{
			if(this.CurrentSlide == 0)
			{
				$("#leftArrowImg").css("visibility","hidden");  
				$("#rightArrowImg").css("visibility","visible");			
			}
			else
			if(this.CurrentSlide == this.SlidesNumber - 1)
			{
				$("#leftArrowImg").css("visibility","visible");  
				$("#rightArrowImg").css("visibility","hidden");			
			}
			else
			{
				$("#leftArrowImg").css("visibility","visible");  
				$("#rightArrowImg").css("visibility","visible");	
			}
		},
		
		
		//init anchor
		init_anchor: function()
		{
			if(this.SliderAnchor == "" || this.SliderAnchor.replace("#", "")  == "")
			{
				return;
			}
			else
			{				
				this.SliderAnchor = this.SliderAnchor.replace("#", "");						
				this.jump(this.SliderAnchor);
			}
		},
				
		//
		GetSlideIndexBySlideName: function(_slidename)
		{
			var slidename;
			var slides = this.DIV.find("div.Slide");
			var counter = 0;
			var index = 0;
			

			
			slides.each(function()
			{
				slidename = $(this).attr("slidename");
				
				if(slidename != undefined && slidename == _slidename)	
					index = counter;			
				
				counter ++;
			});	
			
			return index;		
		}
	}	
	
	$.fn.PluginsSlider = function(width, speed, editNextPos)
	{
		var slider = new Slider(this, width, speed, editNextPos);
		
	}
})(jQuery);

