/*
 * 	Easy Slider 1.5 - jQuery plugin
 *	written by Alen Grakalic	
 *	http://cssglobe.com/post/4004/easy-slider-15-the-easiest-jquery-plugin-for-sliding
 *
 *	Copyright (c) 2009 Alen Grakalic (http://cssglobe.com)
 *	Dual licensed under the MIT (MIT-LICENSE.txt)
 *	and GPL (GPL-LICENSE.txt) licenses.
 *
 *	Built for jQuery library
 *	http://jquery.com
 *
 */
 
(function($) {
$.fn.easySlider = function(options){
// default configuration properties
  var defaults = {			
    prevId: 		'prevBtn',
	prevText: 		'<img src="../shared/img/prev_btn.jpg" />',
	nextId: 		'nextBtn',	
	nextText: 		'<img src="../shared/img/next_btn.jpg" />',
	controlsShow:	true,
	controlsBefore:	'',
	controlsAfter:	'',	
	controlsFade:	true,
	firstId: 		'firstBtn',
	firstText: 		'First',
	firstShow:		false,
	lastId: 		'lastBtn',	
	lastText: 		'Last',
	lastShow:		false,				
	vertical:		false,
	speed: 			500,
	auto:			false,
	pause:			2000,
	continuous:		false
  }; 
  var options = $.extend(defaults, options);  
  this.each(function() {  
	var obj = $(this); 				
	var s = $("li", obj).length;
	var w = $("li", obj).width(); 
	var h = $("li", obj).height(); 
	obj.width(w); 
	obj.height(h); 
	obj.css("overflow","hidden");
	var ts = s-1;
	var t = 0;
	$("ul", obj).css('width',s*w);			
	if(!options.vertical) $("li", obj).css('float','left');
	if(options.controlsShow){
	  var html = options.controlsBefore;
	    if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>';
		html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>';
		html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>';
		if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>';
		html += options.controlsAfter;						
		$(obj).after(html);										
	  };
	$("a","#"+options.nextId).click(function(){		
	  animate("next",true);
	});
	$("a","#"+options.prevId).click(function(){		
	  animate("prev",true);				
	});	
	$("a","#"+options.firstId).click(function(){		
	  animate("first",true);
	});				
	$("a","#"+options.lastId).click(function(){		
	  animate("last",true);				
	});		
	function animate(dir,clicked){
	  var ot = t;				
	  switch(dir){
	  case "next":
	  t = (ot>=ts) ? (options.continuous ? 0 : ts) : t+1;						
	  break; 
	  case "prev":
	  t = (t<=0) ? (options.continuous ? ts : 0) : t-1;
	  break; 
	  case "first":
	  t = 0;
	  break; 
	  case "last":
	  t = ts;
	  break; 
	  default:
	  break; 
	};	
	var diff = Math.abs(ot-t);
	var speed = diff*options.speed;						
	if(!options.vertical) {
	  p = (t*w*-1);
	  $("ul",obj).animate(
	  { marginLeft: p }, 
		speed
	  );				
	  } else {
	    p = (t*h*-1);
		$("ul",obj).animate(
		{ marginTop: p }, 
		  speed
		);					
	  };
	  if(!options.continuous && options.controlsFade){					
	    if(t==ts){
		  $("a","#"+options.nextId).hide();
		  $("a","#"+options.lastId).hide();
		} else {
		  $("a","#"+options.nextId).show();
		  $("a","#"+options.lastId).show();					
	    };
		if(t==0){
		  $("a","#"+options.prevId).hide();
		  $("a","#"+options.firstId).hide();
		} else {
		  $("a","#"+options.prevId).show();
		  $("a","#"+options.firstId).show();
		};					
    };				
	if(clicked) clearTimeout(timeout);
	if(options.auto && dir=="next" && !clicked){;
	  timeout = setTimeout(function(){
	    animate("next",false);
	  },diff*options.speed+options.pause);
	};
  };

  // init
  var timeout;
  if(options.auto){;
    timeout = setTimeout(function(){
	  animate("next",false);
	},options.pause);
  };		
  if(!options.continuous && options.controlsFade){					
    $("a","#"+options.prevId).hide();
    $("a","#"+options.firstId).hide();				
  };				
  });
};
})(jQuery);




