var Pagination=new Class({Implements:[Options,Events],options:{aPage:0,tPages:false,pages:[],nPage:"li",parent:"#pagination",hash:"pagination-",loop:false,counter:false,delay:10*1000,auto:{delay:2,step:1,start:false,play:"play",stop:"stop"},fx:"fade",fxOptions:{},controls:[],disableClass:"disable"},initialize:function(a){this.setOptions(a);this._checkPages();this._setAPage();this._hasEmpty();this._auto()},_goto:function(a){if(this.options.aPage===a){return true}if(!this._hasEmpty(a)){return false}this._showPage(a);this.options.aPage=a;this._checkControls();this._setAPage()},_canMove:function(b){if((b==this.options.auto.play&&!this.options.auto.start)||(b==this.options.auto.stop&&this.options.auto.start)){return true}if((b==this.options.auto.play&&this.options.auto.start)||(b==this.options.auto.stop&&!this.options.auto.start)){return false}if(b=="last"){return(this.options.tPages)?this.options.tPages-1:false}if(b=="first"){return 0}var a=this.options.aPage+b.toInt();if(this.options.loop&&this.options.tPages){if(this.options.tPages&&a<0){a=this.options.tPages+a}if(this.options.tPages&&a>=this.options.tPages){a=a-this.options.tPages}}else{if(a<0){a=false}if(this.options.tPages&&a>=this.options.tPages){a=false}}return a},_hasEmpty:function(c){var e=0;var a=0;if(!$chk(c)){a=c=this.options.aPage}else{e=this.options.aPage<=c?this.options.aPage:c;a=this.options.aPage>=c?this.options.aPage:c}var d=document.getElement(this.options.parent);while(a>=e){if(!$chk(this.options.pages[e])){var b=(e!=c);this.options.pages[e]={};this.options.pages[e].element=d.hasChild(this.options.hash+e)?d.hasChild(this.options.hash+e):this._fillPage(e,b)}else{if((e==c)&&!$chk(d.getElement("#"+this.options.hash+e).get("html"))){$clear(this.options.pages[e].delay);this._getContent(c)}}e++}return true},_fillPage:function(d,b){var c=new Element(this.options.nPage,{id:this.options.hash+d});document.getElement(this.options.parent).adopt(c);if(b){var a=this._getContent.delay(this.options.delay,this,d);this.options.pages[d].delay=a}else{this._getContent(d)}return c},_showPage:function(a){switch(this.options.fx){case"move":this._showPageFxMove(a);break;case"fade":this._showPageFxFade(a);break;default:this._showPageExtra(a)}},_showPageFxMove:function(a){var b=document.getElement(this.options.parent);var c=-1*a*this.options.fxOptions.width;b.tween("margin-left",c)},_showPageFxFade:function(a){document.id(this.options.hash+this.options.aPage).fade("out");document.id(this.options.hash+a).fade("in")},_changeControlStatus:function(a){if(!$chk(a)){a=this.options.controls.length-1}this.options.controls[a].element.removeEvents("click");if(this.options.controls[a].status=="enable"){this.options.controls[a].status="disable";this.options.controls[a].element.addEvent("click",function(b){b.stop()}.bind(this));this.options.controls[a].element.addClass(this.options.disableClass)}else{this.options.controls[a].status="enable";this.options.controls[a].element.addEvent("click",function(b){b.stop();if(this.options.controls[a].units==this.options.auto.play||this.options.controls[a].units==this.options.auto.stop){this._auto(this.options.controls[a].units)}else{this.move(this.options.controls[a].units)}}.bind(this));this.options.controls[a].element.removeClass(this.options.disableClass)}},_checkControls:function(){this.options.controls.each(function(b,a){if((b.status!="enable"&&(this._canMove(b.units)!==false))||((b.status=="enable"||!$chk(b.status))&&(this._canMove(b.units)===false))){this._changeControlStatus(a)}}.bind(this))},_checkPages:function(){switch(this.options.fx){case"move":this._checkPagesFxMove();break;case"fade":this._checkPagesFxFade();break;default:this._checkPagesExtra()}},_checkPagesFxMove:function(){var b=document.getElement(this.options.parent);var a=this.options.tPages?this.options.tPages+1:100;b.setStyle("width",this.options.fxOptions.width*a);b.set("tween",this.options.fxOptions.tween);this._showPageFxMove(this.options.aPage)},_checkPagesFxFade:function(){var a=document.getElement(this.options.parent);a.getChildren().each(function(b){if(b.id.test(this.options.hash)&&!b.id.test(this.options.hash+this.options.aPage)){b.fade("out")}}.bind(this))},_addControl:function(b,a){if(!$chk(a)){a=b.rel?b.rel:1}this.options.controls.push({element:b,units:a});this._changeControlStatus()},_setAPage:function(){if(this.options.counter&&document.getElement(this.options.counter)){document.getElement(this.options.counter).set("html",this.options.aPage+1)}},_auto:function(a){if(!$chk(a)){a=this.options.auto.start}if(a===true||a===this.options.auto.play){this.options.auto.id=this.move.periodical(this.options.auto.delay*1000,this,this.options.auto.step);this.options.auto.start=true}else{$clear(this.options.auto.id);this.options.auto.start=false}this._checkControls()},_checkPagesExtra:function(){alert("This method should be overridden")},_getContent:function(a){alert("This method should be overridden")},_showPageExtra:function(a){alert("This method should be overridden")},addControl:function(b,a){this._addControl(b,a);this._checkControls()},addControls:function(a){a.each(function(b){this._addControl(b.element,b.units)}.bind(this));this._checkControls()},move:function(b){var a=this._canMove(b);if(a!==false){this._goto(a)}else{return false}}});
