/************************************************************/
// Class StickyScroller
// Purpose: Create a fixed scroller
/************************************************************/

function StickyScroller(f,g){if(typeof StickyScroller.counter==='undefined'){StickyScroller.counter=0;}else{StickyScroller.counter++;}var h=this;var i=$(f).css('top');var j=$(f).css('left');var k=$(f).css('right');var l=0;var m=0;var n={start:0,end:10000,interval:$(f).height(),margin:parseInt(i,10),range:$(f).height()},settings=jQuery.extend(n,g);f=$(f);settings.index=0;settings.oldIndex=0;GetSet.getters({scope:h,obj:settings});var o={};o.newIndex=function(){};o.limbo=function(){};o.scroll=function(){};GetSet.setters({scope:this,prefix:"on",obj:o});this.distanceFrom=function(a){var b=a*settings.interval+settings.start;var c=a*settings.interval+settings.range+settings.start;var d=Math.abs(l-b);var e=Math.abs(l-c);if(d<e){return d;}else{return e;}};this.closestIndex=function(){if(settings.index===0){return 1;}var a=this.distanceFrom(settings.index-1);var b=this.distanceFrom(settings.index+1);if(a<=b){return settings.index-1;}else{return settings.index+1;}};var p=function(){if(l>settings.start&&l<settings.end){tempIndex=Math.floor((l-settings.start)/settings.interval);if(tempIndex!==settings.index){settings.oldIndex=settings.index;settings.index=tempIndex;}}else if(l>=settings.end){settings.oldIndex=settings.index;settings.index=Math.floor((settings.end-settings.start)/settings.interval);}else{settings.oldIndex=settings.index;settings.index=0;}};this.firstIndex=function(){return 0;};this.lastIndex=function(){return Math.floor((settings.end-settings.start+settings.margin)/settings.interval);};this.inRange=function(){var a=settings.index*settings.interval+settings.start;var b=settings.index*settings.interval+settings.start+settings.range;var c=(l>=a)&&(l<=b);return c;};var q=$('<div id="scrollcontainer'+StickyScroller.counter+'">').css({width:f.width(),height:f.height(),position:"absolute",top:i,left:j,right:k});f.wrap(q);$(window).scroll(function(){l=$(window).scrollTop();p();if(l<settings.start){$(f).css({position:'absolute',top:0,left:0,right:0});$("#scrollcontainer"+StickyScroller.counter).css({position:'absolute',top:i,left:j,right:k});}else if(l>settings.end){$(f).css({position:'absolute',top:0,left:0,right:0});$("#scrollcontainer"+StickyScroller.counter).css({position:'absolute',top:settings.end+settings.margin,left:j,right:k});}else{$(f).css({position:'fixed',top:settings.margin,left:j,right:k});}if(settings.oldIndex!==settings.index){o.newIndex(settings.index);}if(!h.inRange()&&l>settings.start&&l<settings.end){o.limbo(settings.index);}o.scroll(settings.index);});}
