(function(a){function b(b,c){var d=this;d.settings=a.extend({},a.fn.GenericSlider.defaults,c),d.state={holder:b,list:b.children("ul.slider"),items:b.children("ul.slider").children(),total:0,current:0,interval:!1,animating:!1},!!d.isPositioned(d.state.holder)&&!!d.isPositioned(d.state.list),d.settings.buildLinks?d.buildLinks():d.state.holder.siblings("ul.slider_links").length&&(d.state.links=d.state.holder.siblings("ul.slider_links").find("a")),d.settings.buildControls?d.buildControls():d.state.holder.siblings("ul.slider_controls").length&&(d.state.controls=d.state.holder.siblings("ul.slider_controls").find("a")),d.state.list.children().removeData(),d.state.items=d.state.list.children().not(".hidden"),d.state.total=d.state.items.length,d.state.items.eq(0).data("gs-start",!0),d.state.items.last().data("gs-end",!0);if(d.settings.infinite){var e=0;while(e<d.settings.numShowing+d.settings.moveBy){if(d.state.items.eq(e).hasClass("hidden"))continue;d.state.items.eq(e).clone().data("gs-tostart",!0).data("gs-offset",e).appendTo(d.state.list),e++}var e=d.state.items.filter(function(){return a(this).data("gs-end")}).index(d.state.items),f=0;while(f>-d.settings.numShowing){if(d.state.items.eq(e).hasClass("hidden"))continue;d.state.items.eq(e).clone().data("gs-toend",!0).data("gs-offset",f).prependTo(d.state.list),e--,f--}var g=d.settings.direction=="top"?"outerHeight":"outerWidth";d.state.list.css(d.settings.direction,-(d.state.items[g](!0)*d.settings.numShowing)+"px"),d.state.current=d.settings.numShowing,d.state.items=d.state.list.children().not(".hidden"),d.state.total=d.state.items.length,d.state.list.css(g,d.state.total*d.state.items.outerWidth(!0)*d.settings.numShowing)}d.addListeners(),!isNaN(d.settings.auto)&&d.settings.auto>0&&(d.state.interval=setTimeout(function(){d.moveTo(d.state.current-0+1)},d.settings.auto))}a.fn.GenericSlider=function(c){var d=this,e={allElements:d,destroy:function(){d.allElements.each(function(){var b=a(d).data("GenericSlider");b&&b.destroy()})},reinit:function(){d.allElements.each(function(){var b=a(d).data("GenericSlider");b&&b.reinit()})},moveTo:function(b){d.allElements.each(function(){var c=a(d).data("GenericSlider");c&&c.moveTo(b)})},stop:function(){return d.allElements.each(function(){})}};d.each(function(){a(this).data("GenericSlider")||a(this).data("GenericSlider",new b(a(d),c))});return e},b.prototype.isPositioned=function(a){var b=this,c=a.css("position");return!c||c.toLowerCase()=="static"?!1:!0},b.prototype.buildLinks=function(){var b=this,c=a('<ul class="slider_links"/>'),d="";for(i=1;i<=b._total;i++)d+='<li><a href="#">'+i+"</a></li>";c.append(a(d).eq(0).children().addClass("selected").end().end()).appendTo(b._holder.parent()),b.settings.centerLinks&&c.css("position","absolute").css("left",(controls_.parent().width()-controls_.width())/2+"px"),b.state.links=c.find("a")},b.prototype.buildControls=function(){var b=a('<ul class="slider_controls"/>');b.append('<li><a class="next" href="#">Next Slide</a></li>'),b.append('<li><a class="prev" href="#">Previous Slide</a></li>'),b.insertAfter(o.state.holder),o.state.controls=b.find("a")},b.prototype.addListeners=function(){var b=this;b.state.controls&&(b.state.controls.filter("a.next").bind("click",function(a){b.moveTo(b.state.current+b.settings.moveBy),a.preventDefault()}),b.state.controls.filter("a.prev").bind("click",function(a){b.moveTo(b.state.current-b.settings.moveBy),a.preventDefault()})),b.state.links&&b.state.links.bind("click",function(c){b.moveTo(a(this).index(b.state.links)),c.preventDefault()})},b.prototype.destroy=function(){var b=this;b.state.items.each(function(){(a(this).data("gs-tostart")||a(this).data("gs-toend"))&&a(this).remove()}),b.state.controls.unbind(),b.state.links.unbind(),b.settings.buildLinks&&b.state.links.remove(),b.settings.buildControls&&b.state.controls.remove()},b.prototype.reinit=function(){var a=this;a.state.list=a.state.holder.children("ul.slider"),a.state.items=a.state.list.children().not(".hidden"),a.state.total=a.state.items.length,a.addListeners()},b.prototype.animate=function(b){var c=this;b+c.settings.numShowing>c.state.total&&!c.settings.infinite&&(b=0),b<0&&(b=c.state.total-c.settings.numShowing),c.state.current=b,c.settings.duringAnimation&&c.settings.duringAnimation.apply(c);var d=c.state.items.eq(c.state.current).position()[c.settings.direction],e={};e[c.settings.direction]=-d,c.state.animating=!0,c.state.list.stop().animate(e,c.settings.speed,c.settings.easing,function(){if(c.settings.infinite){if(c.state.items.eq(c.state.current).data("gs-tostart"))var b=c.state.items.filter(function(){return a(this).data("gs-start")});else if(c.state.items.eq(c.state.current).data("gs-toend"))var b=c.state.items.filter(function(){return a(this).data("gs-end")});if(b){var d=parseInt(c.state.items.eq(c.state.current).data("gs-offset"));c.state.current=c.state.items.index(b)-0+d,c.state.list.css(c.settings.direction,-c.state.items.eq(c.state.current).position()[c.settings.direction]+"px")}}c.state.animating=!1,!isNaN(c.settings.auto)&&c.settings.auto>0&&(c.state.interval=setTimeout(function(){c.moveTo(c.state.current-0+1)},c.settings.auto)),c.settings.afterFinish&&c.settings.afterFinish.apply(c)})},b.prototype.moveTo=function(a){var b=this;if(!b.settings.infinite||!b.state.animating){if(!b.state.items.filter(":visible").length){b.settings.afterFinsh&&b.settings.afterFinish.apply(b);return}clearInterval(b.state.interval),b.settings.beforeStart&&b.settings.beforeStart.apply(b),b.animate(a)}},a.fn.GenericSlider.defaults={easing:"swing",infinite:!0,moveBy:1,numShowing:1,speed:500,auto:0,direction:"left",elastic:!1,elasticEasing:"swing",elasticDuration:500,buildControls:!1,buildLinks:!1,centerLinks:!1,separateLinks:!1,beforeStart:function(){},duringAnimation:function(){},afterFinish:function(){}}})(jQuery)
