// MooTools Slider - scrollbars are dependent on this line
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('k H={};H.O=r m({4:{I:B,1d:\'1B\',W:m.v,1e:m.v,J:m.v,1f:m.v,X:m.v,8:B,n:{x:\'Y\',y:\'Z\'},w:B,10:6},C:5(a,b){3.1g(b);3.9=$(a);3.I=$(3.4.I)||3.9;3.s={\'7\':{},\'11\':{}};3.h={\'o\':{},\'7\':{}};3.l={\'o\':3.o.P(3),\'D\':3.D.P(3),\'t\':3.t.P(3),\'u\':3.u.K(3)};3.1h();f(3.4.C)3.4.C.1i(3)},1h:5(){3.I.1j(\'12\',3.l.o);E 3},1C:5(){3.I.1D(\'12\',3.l.o);E 3},o:5(a){3.q(\'1e\',3.9);3.s.o=a.F;k b=3.4.8;3.8={\'x\':[],\'y\':[]};13(k z 1k 3.4.n){f(!3.4.n[z])1l;3.h.7[z]=3.9.1E(3.4.n[z]).1F();3.s.11[z]=a.F[z]-3.h.7[z];f(b&&b[z]){13(k i=0;i<2;i++){f($14(b[z][i]))3.8[z][i]=($1m(b[z][i])==\'5\')?b[z][i]():b[z][i]}}}f($1m(3.4.w)==\'1G\')3.4.w={\'x\':3.4.w,\'y\':3.4.w};A.15(\'L\',3.l.D);A.15(\'1n\',3.l.u);3.q(\'W\',3.9);a.u()},D:5(a){k b=M.1o(M.1H(M.1p(a.F.x-3.s.o.x,2)+M.1p(a.F.y-3.s.o.y,2)));f(b>3.4.10){A.Q(\'L\',3.l.D);A.15(\'L\',3.l.t);3.t(a);3.q(\'1f\',3.9)}a.u()},t:5(a){3.16=B;3.s.7=a.F;13(k z 1k 3.4.n){f(!3.4.n[z])1l;3.h.7[z]=3.s.7[z]-3.s.11[z];f(3.8[z]){f($14(3.8[z][1])&&(3.h.7[z]>3.8[z][1])){3.h.7[z]=3.8[z][1];3.16=1q}1I f($14(3.8[z][0])&&(3.h.7[z]<3.8[z][0])){3.h.7[z]=3.8[z][0];3.16=1q}}f(3.4.w[z])3.h.7[z]-=(3.h.7[z]%3.4.w[z]);3.9.R(3.4.n[z],3.h.7[z]+3.4.1d)}3.q(\'X\',3.9);a.u()},u:5(){A.Q(\'L\',3.l.D);A.Q(\'L\',3.l.t);A.Q(\'1n\',3.l.u);3.q(\'J\',3.9)}});H.O.17(r 1r,r 1s);1J.1K({1L:5(a){E r H.O(3,$1M({n:{x:\'1N\',y:\'1O\'}},a))}});k 18=r m({4:{1t:m.v,J:m.v,19:5(a){3.G.R(3.p,a)},1u:\'1v\',S:1P,g:0},C:5(a,b,c){3.9=$(a);3.G=$(b);3.1g(c);3.1a=-1;3.1b=-1;3.j=-1;3.9.1j(\'12\',3.1w.P(3));k d,g;1Q(3.4.1u){1x\'1v\':3.z=\'x\';3.p=\'Y\';d={\'x\':\'Y\',\'y\':B};g=\'1R\';1S;1x\'1T\':3.z=\'y\';3.p=\'Z\';d={\'x\':B,\'y\':\'Z\'};g=\'1U\'}3.N=3.9[g]-3.G[g]+(3.4.g*2);3.1y=3.G[g]/2;3.1z=3.9[\'1V\'+3.p.1W()].K(3.9);3.G.R(\'1X\',\'1Y\').R(3.p,-3.4.g);k e={};e[3.z]=[-3.4.g,3.N-3.4.g];3.t=r H.O(3.G,{8:e,n:d,10:0,W:5(){3.T()}.K(3),X:5(){3.T()}.K(3),J:5(){3.T();3.U()}.K(3)});f(3.4.C)3.4.C.1i(3)},1Z:5(a){3.j=a.8(0,3.4.S);3.V();3.U();3.q(\'19\',3.1A(3.j));E 3},1w:5(a){k b=a.F[3.z]-3.1z()-3.1y;b=b.8(-3.4.g,3.N-3.4.g);3.j=3.1c(b);3.V();3.U();3.q(\'19\',b)},T:5(){3.j=3.1c(3.t.h.7[3.z]);3.V()},V:5(){f(3.1a!=3.j){3.1a=3.j;3.q(\'1t\',3.j)}},U:5(){f(3.1b!==3.j){3.1b=3.j;3.q(\'J\',3.j+\'\')}},1c:5(a){E M.1o((a+3.4.g)/3.N*3.4.S)},1A:5(a){E 3.N*a/3.4.S}});18.17(r 1r);18.17(r 1s);',62,124,'|||this|options|function||now|limit|element||||||if|offset|value||step|var|bound|Class|modifiers|start||fireEvent|new|mouse|drag|stop|empty|grid||||document|false|initialize|check|return|page|knob|Drag|handle|onComplete|bind|mousemove|Math|max|Base|bindWithEvent|removeListener|setStyle|steps|draggedKnob|end|checkStep|onStart|onDrag|left|top|snap|pos|mousedown|for|chk|addListener|out|implement|Slider|onTick|previousChange|previousEnd|toStep|unit|onBeforeStart|onSnap|setOptions|attach|call|addEvent|in|continue|type|mouseup|round|pow|true|Events|Options|onChange|mode|horizontal|clickedElement|case|half|getPos|toPosition|px|detach|removeEvent|getStyle|toInt|number|sqrt|else|Element|extend|makeResizable|merge|width|height|100|switch|offsetWidth|break|vertical|offsetHeight|get|capitalize|position|relative|set'.split('|'),0,{}))

var Scrollbars = {
    elements: $$('.scrollbars'),
    
    init: function(ele) {
        if (ele)
            this.elements = ele;
        
        this.applyEvents();
    },
    
    applyEvents: function() {
	    var scrolls = this.elements;
        
        // duplicate "this" for use outside of scope
        _this_scroll = this;
        
	    for (var i = 0; i < scrolls.length; i++) {
		    var thumb = $$("#" + scrolls[i].id + " .scrollThumb")[0];
		    var ele = $(thumb.elementToScroll);
		    var wrapper = ele.parentElement ? ele.parentElement.parentElement : ele.parentNode.parentNode;
		    // resize the thumb bar to indicate the content displacement
		    var newHeight = (wrapper.offsetHeight / ele.offsetHeight) * scrolls[i].offsetHeight;
		    // only increase the height of the thumb bar. the minimum height will be set in the CSS
		    if (newHeight > thumb.offsetHeight) {
			    thumb.style.height = newHeight + "px";
		    }
    		
		    ele.style.position = "absolute";
		    scrolls[i].Slide = new Slider($(scrolls[i].id), $(thumb.id), {
			    steps: 50,
			    mode: 'vertical',
			    onChange: function(step){
				    if (this.elementToScroll) {
					    var ele = $(this.elementToScroll);
					    var parent = ele.parentElement ? ele.parentElement.parentElement : ele.parentNode.parentNode;
					    var space = ele.offsetHeight - parent.offsetHeight;
					    var thumb = $(this.thumb);
					    var scrollCont = thumb.parentElement ? thumb.parentElement : thumb.parentNode;
					    var currPercent = (thumb.offsetTop) / (scrollCont.offsetHeight - thumb.offsetHeight);
					    ele.style.top = (space * currPercent * -1) + "px";
				    }
			    }
		    }).set(0);
    		
		    scrolls[i].onclick = function() {
			    this.Slide.fireEvent("onChange");
		    }
		    scrolls[i].Slide.elementToScroll = thumb.elementToScroll;
		    scrolls[i].Slide.thumb = thumb.id;
	    }
    	
	    var upBtns = $$(".arrowUpBtn");
	    for (var i = 0; i < upBtns.length; i++) {
		    upBtns[i].onmousedown = function() {
			    this.cancelScroll = false;
			    _this_scroll.scrollUp(this);
		    }
		    upBtns[i].onmouseup = function() {
			    this.cancelScroll = true;
		    }
	    }
    	
	    var downBtns = $$(".arrowDownBtn");
	    for (var i = 0; i <  downBtns.length; i++) {
		     downBtns[i].onmousedown = function() {
			    this.cancelScroll = false;
			    _this_scroll.scrollDown(this);
		    }
		     downBtns[i].onmouseup = function() {
			    this.cancelScroll = true;
		    }
	    }
	},
	
	moveThumb: function (percent, thumb) {
	    var thmb = $(thumb);
	    var parent = thmb.parentElement ? thmb.parentElement : thmb.parentNode;
	    var totHeight = parent.offsetHeight - thmb.offsetHeight;
	    thmb.style.top = (totHeight * percent) + "px";
    },
    
    scrollUp: function (obj) {
	    if (typeof(obj) == "string") {
		    obj = $(obj);
	    }
	    if (!obj.cancelScroll) {
		    var ele = $(obj.elementToScroll);
		    var parent = ele.parentElement ? ele.parentElement.parentElement : ele.parentNode.parentNode;
		    var arrowJump = parent.offsetHeight / 2;
		    if (ele.offsetTop + arrowJump <= 0) {
			    ele.style.top = (ele.offsetTop + arrowJump) + "px";
			    var contentpercent = (ele.offsetTop / (ele.offsetHeight - parent.offsetHeight)) * -1;
			    this.moveThumb(contentpercent, obj.thumbElement);
			    setTimeout("_this_scroll.scrollUp('" + obj.id + "')", 10);
		    }
		    else {
			    ele.style.top = "0px";
			    this.moveThumb(0, obj.thumbElement);
		    }
	    }
    },
    
    scrollDown: function (obj) {
	    if (typeof(obj) == "string") {
		    obj = $(obj);
	    }
	    if (!obj.cancelScroll) {
		    var ele = $(obj.elementToScroll);
		    var parent = ele.parentElement ? ele.parentElement.parentElement : ele.parentNode.parentNode;
		    var arrowJump = parent.offsetHeight / 2;
		    if (ele.offsetTop - arrowJump >= (ele.offsetHeight - parent.offsetHeight) * -1) {
			    ele.style.top = (ele.offsetTop - arrowJump) + "px";
			    var contentpercent = (ele.offsetTop / (ele.offsetHeight - parent.offsetHeight)) * -1;
			    this.moveThumb(contentpercent, obj.thumbElement);
			    setTimeout("_this_scroll.scrollDown('" + obj.id + "')", 10);
		    }
		    else {
			    ele.style.top = ((ele.offsetHeight - parent.offsetHeight) * -1) + "px";
			    this.moveThumb(1, obj.thumbElement);
		    }
	    }
    }
};





