(function(jQuery)
{jQuery.fn.xtdSlider=function(options)
{var cfg=$.extend({},$.fn.xtdSlider.cfg,options);return this.each(function()
{var elem=jQuery(this),slider=jQuery('.slider',this),control=jQuery('.control',this),total=slider.children().length,prev=0,next=0,current=0,interval,timeout,active;function animate(direction,clicked)
{if(!active)
{active=true;log('Animate');switch(direction)
{case'next':next=(current+1);prev=current;if(next>=total)next=0;current=next;break;case'prev':prev=current;next=(current-1);if(next<0)next=total-1;current=next;break;case'pagination':next=parseInt(clicked,10);prev=current;current=next;break;}
slider.children(':eq('+next+')').css({zIndex:10}).fadeIn(cfg.duration,cfg.easing,function()
{slider.children(':eq('+prev+')').css({display:'none',zIndex:0});slider.children(':eq('+next+')').css({zIndex:0});active=false;});if(cfg.control)
{control.children('li').removeClass(cfg.currentClass);control.children('li:eq('+next+')').addClass(cfg.currentClass);}}}
function log(message,range)
{if(cfg.log==true)console.log("xtdSlider: "+message);}
function start()
{log("Interval started",1);startInterval();}
function startInterval()
{interval=setInterval(function(){animate('next');},cfg.interval);slider.data('interval',interval);}
function stop()
{log("Interval stopped",1);clearInterval(slider.data('interval'));}
function resume()
{log("Interval resumed",1);startInterval();}
function pause()
{if(cfg.resume)
{clearTimeout(slider.data('pause'));clearInterval(slider.data('interval'));timeout=setTimeout(function()
{clearTimeout(slider.data('pause'));startInterval();},cfg.pause);slider.data('pause',timeout);}
else
{stop();}}
slider.children(':eq('+current+')').css({zIndex:0}).show();if(cfg.control)jQuery(control).children('li:eq('+current+')').addClass(cfg.currentClass);if(total<2)
{log('Only 1 item',1);return;}
jQuery('.'+cfg.nextButton,elem).click(function()
{if(cfg.play)pause();animate('next');});jQuery('.'+cfg.prevButton,elem).click(function()
{if(cfg.play)pause();animate('prev');});if(cfg.hoverPause&&cfg.play)
{slider.bind('mouseenter',function()
{log('Mouse entered',1);stop();});slider.bind('mouseleave',function()
{log('Mouse leaved',1);resume();});}
jQuery('li',control).click(function()
{log("Control clicked",1);if(cfg.play)pause();var clicked=jQuery(control).children('li').index(this);if(current!=clicked)animate('pagination',clicked);return false;})
if(cfg.play)start();});}
$.fn.xtdSlider.cfg={currentClass:'current',control:true,duration:2000,easing:null,log:false,pause:0,play:true,resume:true,interval:6000,hoverPause:true,pagination:false,nextButton:'next',prevButton:'prev'};})(jQuery);
