/* (c) 2009 Axel Taschus - mootools @ taschus . de */
var scroller=new Class({Implements:[Options],initialize:function(element,options){this.e=document.id(element);this.uniqid="scr"+$time();this.e.setStyle("overflow","hidden");this.setOptions(options);this.mode=this.options.mode||"vert";this.eleDim=(this.mode=="vert")?this.e.getCoordinates().height.toInt():this.e.getCoordinates().width.toInt();this.coords=this.e.getCoordinates();this.maxSpd=this.options.maxSpd||100;this.as=this.options.autostart||false;this.ass=this.options.autostartSpeed||0;this.asd=this.options.autostartDelay||2500;this.bnc=this.options.bounce||false;this.bncDly=this.options.bounceDelay||500;this.nc=this.options.noControls||false;this.step=this.options.step||24;this.bs=this.options.barsize||Math.floor(this.eleDim/3);this.bib=this.options.barImageBack||"";this.bif=this.options.barImageForeward||"";this.bio=this.options.barImageOpacity||0.4;this.pause=false;this.cSpd=0;this.lSpd=0;this.cPos=0;this.inScroller=false;this.start()},start:function(){var s=this;window.addEvent("resize",function(){s.coords=s.e.getCoordinates()});if(this.as&&this.ass){(function(){this.cSpd=this.ass}.bind(this)).delay(this.asd)}this.e.addEvent("mouseleave",function(){if(s.nc){return}s.cSpd=s.lSpd;s.inScroller=false;if(s.bib){document.id(s.uniqid+"bib").destroy()}if(s.bif){document.id(s.uniqid+"bif").destroy()}if(s.as){if(s.lSpd<0){s.cSpd=s.ass*-1}else{s.cSpd=s.ass}}}).addEvent("mouseenter",function(e){s.inScroller=true;if(s.bib){new Element("div",{id:s.uniqid+"bib",styles:{backgroundImage:"url("+s.bib+")",backgroundPosition:"center center",backgroundRepeat:"no-repeat",opacity:0,position:"absolute"},tween:{duration:250}}).inject(s.e,"bottom").tween("opacity",s.bio)}if(s.bif){new Element("div",{id:s.uniqid+"bif",styles:{backgroundImage:"url("+s.bif+")",backgroundPosition:"center center",backgroundRepeat:"no-repeat",opacity:0,position:"absolute"},tween:{duration:250}}).inject(s.e,"bottom").tween("opacity",s.bio)}s.positionBarElements()}).addEvent("mousemove",function(e){if(s.nc){return}if(s.mode=="horizontal"){mPos=(e.client.x-s.coords.left)}else{mPos=(e.client.y-s.coords.top)}if(mPos<s.bs){s.cSpd=s.lSpd=(s.maxSpd-(Math.floor(s.maxSpd/s.bs*mPos)))*-1}else{if(mPos>(s.eleDim-s.bs)){s.cSpd=s.lSpd=Math.floor(s.maxSpd-(s.maxSpd/s.bs*(s.eleDim-mPos)))}else{s.cSpd=0}}}).addEvent("mousewheel",function(e){if(s.nc){return}if(e.wheel!=0){s.cSpd=(s.step*e.wheel)*-1}s.scrollIt();s.cSpd=0;e.stop()});window.addEvent("keydown",function(e){if(s.nc){return}if(s.inScroller){if(((s.mode=="vert")&&(e.key=="down"))||((s.mode=="horizontal")&&(e.key=="right"))){s.cSpd=s.step}if(((s.mode=="vert")&&(e.key=="up"))||((s.mode=="horizontal")&&(e.key=="left"))){s.cSpd=s.step*-1}if(s.cSpd){e.stop();s.scrollIt();s.cSpd=0}}});(function(){s.scrollIt()}).periodical(40)},scrollIt:function(){if(this.cSpd!=0){if(!this.inScroller){if(this.pause){return}if((this.bnc)&&(this.cPos==(this.getCurrPos()+this.cSpd))){this.pause=true;(function(){this.cSpd=(this.cSpd*-1);this.pause=false}.bind(this)).delay(this.bncDly)}}this.cPos=(this.getCurrPos()+this.cSpd);if(this.mode=="vert"){this.e.scrollTo(0,this.e.getScroll().y.toInt()+this.cSpd)}else{if(this.mode=="horizontal"){this.e.scrollTo(this.getCurrPos()+this.cSpd,0)}}}},getCurrPos:function(){if(this.mode=="vert"){return(this.e.getScroll().y.toInt())}else{if(this.mode=="horizontal"){return(this.e.getScroll().x.toInt())}}},positionBarElements:function(){if(this.mode=="horizontal"){document.id(this.uniqid+"bif").setStyles({top:this.coords.top,left:this.coords.left+this.coords.width-this.bs,width:this.bs,height:this.coords.height});document.id(this.uniqid+"bib").setStyles({top:this.coords.top,left:this.coords.left,width:this.bs,height:this.coords.height})}else{if(this.mode=="vert"){document.id(this.uniqid+"bif").setStyles({top:this.coords.top,left:this.coords.left,width:this.coords.width,height:this.bs});document.id(this.uniqid+"bib").setStyles({top:this.coords.top+this.coords.height-this.bs,left:this.coords.left,width:this.coords.width,height:this.bs})}}}});