// JavaScript Document

(function( $ ){
  $.fn.carousel = function(options) {
	  
	  var settings={
		  speed: 8000
		  };
	  $.extend(settings,options);
	  
	  var currentIndex=0;
	  var handler=null;
	  var isover=false;
	  
	  $images=this.find("img");
	  $navigator=this.find("#navigator");
	  $bt_left=this.find("#bt_left");
	  $bt_right=this.find("#bt_right");
	  $carousel_panel=this;
	  
	  
	  function init()
	  {
		  var i=0;
		  var lnks=Array();
		  for(i=0;i<$images.length;i++)
		  {
			  	lnks[i]="<a href='#'>&nbsp;&nbsp;</a>";
		  }
		  $navigator.append(lnks.join(" "));
		  $navigator.find("a").click(function(event){
											  event.preventDefault();
											  pause();
											  goto($(this).index());
											  });
		  
		  $bt_left.click(function(event)
								  {
									  event.preventDefault();
									  pause();
									  prev();
								  });

		  $bt_right.click(function(event)
								  {
									  event.preventDefault();
									  pause();
									  next();
								  });
		  $(document).keypress(function(event){
					  switch (event.keyCode) {
						  case 37://Left key
						  		$bt_left.click();
						  		break;
						  case 39: //Right Key
						  		$bt_right.click();
						  		break;

					  }
					});

		 next();
	  }
	  
	  function pause()
	  {
		  if(handler==null)return;
		  
		  window.clearTimeout(handler);
		  handler=null;
	  }
	  
	  function resume()
	  {
		  	keepRotating();
	  }
	  
	  function next()
	  {
		  	goto(currentIndex+1);
	  }
	  
	  function prev()
	  {
		  	goto(currentIndex-1);
	  }	 
	  
	  function transit(from,to)
	  {
		  $images.eq(from).animate({opacity:0.2},500,"",function(){$images.eq(to).css({display:"block",opacity:0.2}).animate({opacity:1},500);$(this).css({display:"none",opacity:1});});
		  
	  }
	  
	  function keepRotating()
	  {
		  if(!isover)
				handler=window.setTimeout(next,(currentIndex%2==0)?settings.speed+2000:settings.speed);
	  }
	  function goto(index)
	  {
		  	if(index<0)
				index=$images.length-1;
			else if(index>$images.length-1)
				index=0;
			
			transit(currentIndex,index);
			
			keepRotating();
			
			currentIndex=index;
			
			$navigator.find("a").removeClass("selected");
			$navigator.find("a:eq("+currentIndex+")").addClass("selected");
	  }
	  this.hover(
				 function(){isover=true;pause();},
				 function(){isover=false;resume();}
				 );
	  init();
	return this;
  };
})( jQuery );
