/*
 * 	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
 *
 */
 
/*
 *	markup example for $("#slider").easySlider();
 *	
 * 	<div id="slider">
 *		<ul>
 *			<li><img src="images/01.jpg" alt="" /></li>
 *			<li><img src="images/02.jpg" alt="" /></li>
 *			<li><img src="images/03.jpg" alt="" /></li>
 *			<li><img src="images/04.jpg" alt="" /></li>
 *			<li><img src="images/05.jpg" alt="" /></li>
 *		</ul>
 *	</div>
 *
 */

(function($){
$.fn.easySlider=function(options){
var defaults={
prevId:	'prevBtn',
prevText:	'Previous',
nextId:	'nextBtn',
nextText:	'Next',
controlsShow:	true,
controlsBefore:	'',
controlsAfter:	'',
controlsFade:	true,
firstId:	'firstBtn',
firstText:	'First',
firstShow:	false,
lastId:	'lastBtn',
lastText:	'Last',
lastShow:	false,
vertical:	false,
speed:	800,
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-3
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)}}
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)

