var iSlider=Class.create({islider:null,container:null,items:null,active:0,itemSize:1,viewportSize:1,numOfPages:1,peTimeout:10,pe:null,duration:.2,scrollbarSlider:$('scrollbar-slider'),direction:'horizontal',initialize:function(element,options){this.islider=element;this.container=element.down('.islider-container');this.items=this.container.childElements();if(options&&options.direction=='vertical')this.direction='vertical';this._setScrollbarSliderWidth();this._resizeElements();this._addObservers();if(options&&options.timer){this.peTimeout=options.timer;this.pe=new PeriodicalExecuter(function(){this.next()}.bind(this),this.peTimeout)}},_resizeElements:function(){if(this.direction=='vertical'){this.viewportSize=this.islider.down('.islider-viewport').getHeight();if(this.items.length>0){this.itemSize=this.items[0].getHeight();this.container.setStyle({height:(this.itemSize*this.items.length)+'px'})}}else{this.viewportSize=this.islider.down('.islider-viewport').getWidth();if(this.items.length>0){this.itemSize=this.items[0].getWidth();this.container.setStyle({width:(this.itemSize*this.items.length)+'px'})}};this.numOfPages=Math.ceil((this.itemSize*this.items.length)/this.viewportSize)},_addObservers:function(){this.islider.down('a.islider-previous').observe('click',this.previous.bind(this));this.islider.down('a.islider-next').observe('click',this.next.bind(this))},_setScrollbarSliderWidth:function(){if(this.scrollbarSlider){var newWidth=Math.floor($('scrollbar').getWidth()/this.items.length);this.scrollbarSlider.setStyle({width:newWidth+'px'})}},next:function(event){if(event){event.stop();if(this.pe)this.restartPeriodicalExecuter()};this.gotoIndex(this.active+1)},previous:function(event){if(event){event.stop();if(this.pe)this.restartPeriodicalExecuter()};this.gotoIndex(this.active-1)},gotoIndex:function(index){if(index<0){index=this.numOfPages-1}else if(index>=this.numOfPages)index=0;if(this.direction=='vertical'){this.container.morph('margin-top: -'+(this.viewportSize*index)+'px;',{duration:this.duration,transition:Effect.Transitions.linear,afterFinish:function(){this.active=index}.bind(this)})}else{this.container.morph('margin-left: -'+(this.viewportSize*index)+'px;',{duration:this.duration,transition:Effect.Transitions.linear,afterFinish:function(){this.active=index}.bind(this)});if(this.scrollbarSlider){var marginLeft=index*this.scrollbarSlider.getWidth();this.scrollbarSlider.morph('margin-left: '+marginLeft+'px',{duration:this.duration})}}},restartPeriodicalExecuter:function(){if(!this.pe)return;this.pe.stop();this.pe=new PeriodicalExecuter(function(){this.next()}.bind(this),this.peTimeout)}})
