/*
Author: James Olson
Date: circa 7/1/09
if modifications need to be done please do them in jo_carousel_unpacked.js and then repack here!
*/
if(typeof Scroller==='undefined'){var Scroller=Class.create({initialize:function(element,options){this.options=Object.extend({auto:false,speed:2000,vertical:false,visible:4,skin_class:'jcarousel',start:0,scroll:1,expand:false,beforeStart:Prototype.emptyFunction,afterEnd:Prototype.emptyFunction},options||{});this.running=false;this.animCss=this.options.vertical?"top":"left";this.direction=this.options.vertical?"vertical":"horizontal";this.sizeCss=this.options.vertical?"height":"width";this.div=$(element);this.ul=this.div;this.tLi=this.div.select("li");this.tl=this.tLi.length;this.v=this.options.visible;this.li=this.div.select("li");this.itemLength=this.li.length;this.curr=this.options.start;this.div.wrap('div',{'class':this.options.skin_class+'-skin'});this.div.wrap('div',{'class':this.options.skin_class+'-container '+this.options.skin_class+'-container-'+this.direction});this.div.wrap('div',{'class':this.options.skin_class+'-clip '+this.options.skin_class+'-clip-'+this.direction});this.div.addClassName(this.options.skin_class+'-list '+this.options.skin_class+'-list-'+this.direction);this.div.up(1).insert({'top':'<div class="'+this.options.skin_class+'-prev '+this.options.skin_class+'-prev-'+this.direction+'"></div><div class="'+this.options.skin_class+'-next '+this.options.skin_class+'-next-'+this.direction+'"></div>'});if(this.options.expand){this.div.up(1).insert({'after':'<div class="'+this.options.skin_class+'-expand '+this.options.skin_class+'-expand-closed"></div>'})}this.li.invoke('addClassName',this.options.skin_class+'-item');this.div.setStyle({overflow:"hidden",position:"relative","z-index":"2",left:"0px"});this.btnPrev=this.div.up(1).select('.'+this.options.skin_class+'-prev')[0];this.btnNext=this.div.up(1).select('.'+this.options.skin_class+'-next')[0];this.liSize=this.options.vertical?this.height(this.li):this.width(this.li);this.ulSize=this.liSize*this.itemLength;this.divSize=this.liSize*this.v;if(this.options.vertical){this.ul.setStyle({height:this.ulSize+"px"})}else{this.ul.setStyle({width:this.ulSize+"px"})}if(this.btnPrev){this.btnPrev.observe('click',this.previous.bind(this))}if(this.btnNext){this.btnNext.observe('click',this.next.bind(this))}if(this.options.auto){this.setTimer()}if(this.options.expand){try{this.div.up('.'+this.options.skin_class+'-skin').select('.'+this.options.skin_class+'-expand').invoke('observe','click',this.expandThumbs.bind(this))}catch(e_expand){}}this.vis();this.setButtons();this.ul.observe("carousel:Resample",this.resample.bind(this))},expandThumbs:function(e){var el=Event.element(e);if(el.hasClassName(this.options.skin_class+'-expand-closed')){el.removeClassName(this.options.skin_class+'-expand-closed');this.btnPrev.hide();this.btnNext.hide();this.div.up().addClassName(this.options.skin_class+'-expand-style')}else{el.addClassName(this.options.skin_class+'-expand-closed');this.btnPrev.show();this.btnNext.show();this.div.up().removeClassName(this.options.skin_class+'-expand-style')}},resample:function(){var _newList=this.div.select("li");this.itemLength=_newList.length;if(this.itemLength>0){_newList.invoke('addClassName',this.options.skin_class+'-item')}if(this.liSize>0){this.ulSize=this.liSize*this.itemLength}else{this.li=this.div.select("li");this.liSize=this.options.vertical?this.height(this.li):this.width(this.li);this.ulSize=this.liSize*this.itemLength}if(this.options.vertical){this.ul.setStyle({height:this.ulSize+"px"})}else{this.ul.setStyle({width:this.ulSize+"px"})}this.setButtons();this.go(this.curr-this.options.scroll)},width:function(el){if(el[0]!=undefined){var tempW=el[0].getWidth();if(tempW==0){tempW=this.css(el[0],'width')}return tempW+this.css(el[0],'marginLeft')+this.css(el[0],'marginRight')+this.css(el[0],'borderLeftWidth')+this.css(el[0],'borderRightWidth')}else{return 0}},height:function(el){if(el[0]!=undefined){var tempH=el[0].getHeight();if(tempH==0){tempH=this.css(el[0],'height')}return tempH+this.css(el[0],'marginTop')+this.css(el[0],'marginBottom')+this.css(el[0],'borderTopWidth')+this.css(el[0],'borderBottomWidth')}else{return 0}},previous:function(e){Event.stop(e);this.go(this.curr-this.options.scroll)},next:function(e){Event.stop(e);this.go(this.curr+this.options.scroll)},css:function(el,prop){return parseInt($(el).getStyle(prop))||0},vis:function(){return this.li.slice(this.curr).slice(0,this.v)},setTimer:function(){if(this.options.auto){this.timer=setTimeout(this.next.bind(this),this.options.speed)}return},getImageAt:function(pos){this.go(pos)},clearTimer:function(){clearTimeout(this.timer);return},go:function(to){if(this.options.auto){this.clearTimer()}if(!this.running){if(this.options.beforeStart){this.options.beforeStart(this,this.vis())}if(to<0||to>this.itemLength-this.v){return}else{this.curr=to}this.running=true;if(this.options.vertical){new Effect.Move(this.ul,{y:-(this.curr*this.liSize),mode:'absolute',afterFinish:function(){this.options.afterEnd(this,this.vis());this.running=false;this.setTimer()}.bind(this)})}else{new Effect.Move(this.ul,{x:-(this.curr*this.liSize),mode:'absolute',afterFinish:function(){this.options.afterEnd(this,this.vis());this.running=false;this.setTimer()}.bind(this)})}this.setButtons()}},setButtons:function(){this.btnPrev.removeClassName(this.options.skin_class+'-prev-disabled-'+this.direction);this.btnNext.removeClassName(this.options.skin_class+'-next-disabled-'+this.direction);if(this.curr-this.options.scroll<0&&this.btnPrev){this.btnPrev.addClassName(this.options.skin_class+'-prev-disabled-'+this.direction)}if(this.curr+this.options.scroll>this.itemLength-this.v&&this.btnNext){this.btnNext.addClassName(this.options.skin_class+'-next-disabled-'+this.direction)}}})}
