(function(b){function a(f,e){var d=this;if(!a.current){a.current=this}var g={size:5,vertical:false,activeClass:"active",inactiveClass:"inactive",speed:200,onScroll:null,clickable:true,window:".window",drawer:".drawer",back:".prev",next:".next",navi:".navi",naviItem:"span",loop:false};g=b.extend(g,e);g.horizontal=!g.vertical;this.opts=g;this.root=b(f);var c=this.root;this.items=c.children();this.items.wrapAll('<div class="'+g.window.substr(1)+'" style="position:relative;overflow:hidden;" />');this.window=this.items.parent();this.window.before('<a class="'+g.back.substr(1)+'"><span class="button" /></a>').after('<a class="'+g.next.substr(1)+'"><span class="button" /></a>');this.items.wrapAll('<div class="'+g.drawer.substr(1)+'" style="position:absolute;" />');this.drawer=this.items.parent();this.drawer.css(g.horizontal?"width":"height","20000em");this.offset=0;this.active=null;if(b.isFunction(b.fn.mousewheel)){c.bind("mousewheel.scrollable",function(h,i){d.scroll(-i,50);return false})}if(g.clickable){this.items.each(function(i,h){b(this).bind("click.scrollable",function(){d.click(i)})})}b(g.back,c).click(function(){d.scrollBack()});b(g.next,c).click(function(){d.scrollNext()});this.updateScroller(0);b(g.navi,c).each(function(){var m=b(this);var h=d.getStatus();if(m.is(":empty")){for(var k=0;k<h.pages;k++){var l=b("<"+g.naviItem+"/>").attr("page",k).click(function(n){var i=b(this);i.parent().children().removeClass(g.activeClass);i.addClass(g.activeClass);d.setPage(i.attr("page"));n.preventDefault()});if(k===0){l.addClass(g.activeClass)}m.append(l)}}else{var j=m.find("a");if(!j.length){j=m.children()}j.each(function(n){var o=b(this);o.attr("page",n);if(n===0){o.addClass(g.activeClass)}o.click(function(){m.find("."+g.activeClass).removeClass(g.activeClass);o.addClass(g.activeClass);d.setPage(o.attr("page"))})})}})}b.extend(a.prototype,{getVersion:function(){return"@VERSION"},click:function(c){if(c==this.active){return false}this.select(c);if(b.isFunction(this.opts.onClick)){this.opts.onClick.call(this)}},select:function(e){var d=this.items.size()-1;e=Math.min(Math.max(e,0),d);var f=this.items.eq(e);var c=this.opts.activeClass;if(f.hasClass(c)){return false}this.items.removeClass(c);f.addClass(c);this.active=e;var h=Math.floor(this.opts.size/2);var g=e-h;this.scrollTo(g);if(b.isFunction(this.opts.onSelect)){this.opts.onSelect.call(this)}},getTotal:function(){return this.items.size()},getPage:function(){return Math.ceil(this.offset/this.opts.size)},getPages:function(){return Math.ceil(this.items.size()/this.opts.size)},scrollTo:function(e,c){var i=this.scrollMax();e=Math.min(Math.max(e,0),i);if(e==this.offset){return false}a.current=this;var k=this.items.eq(e);if(this.opts.horizontal){var d=this.drawer.offset().left-k.offset().left;this.drawer.animate({left:d},c||this.opts.speed)}else{var h=this.drawer.offset().top-k.offset().top;this.drawer.animate({top:h},c||this.opts.speed)}var j=b(this.opts.navi,this.root);if(j.length){var f=this.opts.activeClass;var g=Math.ceil(e/this.opts.size);g=Math.min(g,j.children().length-1);j.children().removeClass(f).eq(g).addClass(f)}this.updateScroller(e);if(b.isFunction(this.opts.onScroll)){this.opts.onScroll.call(this)}this.offset=e;return true},updateScroller:function(g){var d=this.opts.inactiveClass;var c=this.scrollMax();var e=b(this.opts.back,this.root);if(e.length){if(g>0){e.removeClass(d)}else{e.removeClass(d).addClass(d)}}var f=b(this.opts.next,this.root);if(f.length){if(g<c){f.removeClass(d)}else{f.removeClass(d).addClass(d)}}},scrollMax:function(){return Math.max(0,this.items.length-this.opts.size)},scroll:function(d,c){d+=this.offset;if(this.opts.loop&&to>(this.items.length-this.opts.size)){d=0}this.scrollTo(d,c)},scrollNext:function(c){this.scroll(1,c)},scrollBack:function(c){this.scroll(-1,c)},pageTo:function(d,e){var c=this.opts.size;var f=c*d;this.scrollTo(f,e)},pageScroll:function(d,c){this.scroll(this.opts.size*d,c)},pageBack:function(c){this.pageTo(this.getPage()-1,c)},pageNext:function(c){this.pageTo(this.getPage()+1,c)},gotoFirst:function(c){this.scrollTo(0,c)},gotoLast:function(c){this.scrollTo(this.items.size()-this.opts.size,c)}});b(window).bind("keypress.scrollable",function(c){var d=a.current;if(!d){return}if(d.opts.horizontal&&(c.keyCode==37||c.keyCode==39)){d.scroll(c.keyCode==37?-1:1);return c.preventDefault()}if(!d.opts.horizontal&&(c.keyCode==38||c.keyCode==40)){d.scroll(c.keyCode==38?-1:1);return c.preventDefault()}return true});jQuery.prototype.scrollable=function(g,e,d){if(!g||typeof g=="number"){var c=g||0;var f=b.data(this.get()[c],"scrollable");if(f){return f}}this.each(function(){if(typeof g=="string"){var i=b.data(this,"scrollable");i[g].apply(i,[e,d])}else{var h=new a(this,g);b.data(this,"scrollable",h)}});return this}})(jQuery);