﻿/*
 * Copyright (c) 2008 Threeformed Media (http://www.threeformed.com)
 * This is licensed under GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 * 
 * 
 * *******
 * 
 * This plugin is derived in part from JScrollPane created by Kevin Luck(http://www.kelvinluck.com)
 * 
 * Copyright (c) 2006 Kelvin Luck (kelvin AT kelvinluck DOT com || http://www.kelvinluck.com)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 * 
 * See http://kelvinluck.com/assets/jquery/jScrollPane/
 * $Id: jScrollPane.js 3125 2007-09-06 20:39:42Z kelvin.luck $
 *
 * Removed wresize plugin 2010-03-23 OB
 */

var _jscr_originalSizes=new Array();var _jscr_differenceSizes=new Array();var _jscr_previousWindowSize=new Array();var _jscr_originalPercentages=new Array();var _jscr_intervals=new Array();var _jscr_trackInt=new Array();var _jscr_originalPos=new Array();var _jscr_globalProperties=new Array();jQuery.jScrollHorizontalPane={active:[]};jQuery.fn.jScrollHorizontalPane=function(a){a=jQuery.extend({scrollbarHeight:10,scrollbarMargin:5,wheelSpeed:18,showArrows:false,arrowSize:10,animateTo:false,dragMinWidth:1,dragMaxWidth:99999,animateInterval:100,animateStep:3,maintainPosition:true,resize:true,minimumWidth:200,reset:false},a);return this.each(function(){if(a.reset==true){jQuery.fn.jScrollHorizontalPane.reset()}var m=jQuery(this);var G=0;var S=false;var M=m.attr("id");if(M==undefined){M=m.attr("class")}var v=_jscr_previousWindowSize[M];_jscr_originalPos[M]=-1;_jscr_globalProperties[M]=a;_jscr_previousWindowSize[M]=$(window).width();if(_jscr_originalSizes[M]==undefined){if((jQuery.browser.msie)&&(parseInt(jQuery.browser.version)==6)){var W=parseInt(m.outerWidth())-parseInt(m.offset().left);_jscr_differenceSizes[M]=m.offset().left/$(window).width()}else{var W=m.outerWidth();_jscr_differenceSizes[M]=m.position().left/$(window).width()}percentageWidth=(W/$(window).width());_jscr_originalPercentages[M]=percentageWidth;_jscr_originalSizes[M]=$(window).width()}else{percentageWidth=_jscr_originalPercentages[M];diff=_jscr_differenceSizes[M]-((m.offset().left+_jscr_originalPos[M])/$(window).width());percentageWidth=percentageWidth+diff}var i=new Array();_jscr_intervals=new Array();i[0]=0;_jscr_intervals[0]=0;margin=m.position().left;offset=1;if(margin<0){margin=0}$(".scroll-interval",m).each(function(p,am){pos=$(am).position().left-margin;if(pos!=0){_jscr_intervals[p+offset]=pos}else{offset--}});if(_jscr_intervals.length<=1){_jscr_intervals=new Array()}if(jQuery(this).parent().is(".jScrollPaneContainer")){var ak=a.maintainPosition?m.offset({relativeTo:jQuery(this).parent()[0]}).left:0;var k=jQuery(this).parent();var D=k.outerWidth();var al=k.innerHeight();var U=m.offset().left+_jscr_originalPos[M]+D;if((v!=$(window).width())&&((U>$(window).width())||(v<$(window).width()))&&(a.resize==true)){console.log("resize?");if($(window).width()>=_jscr_originalSizes[M]){D=($(window).width()*percentageWidth)}else{D=$(window).width()-(m.offset().left+_jscr_originalPos[M])-10}if(D<a.minimumWidth){D=a.minimumWidth}jQuery(this).parent().css({height:al+"px",width:D+"px"})}var E=D;if(k.unmousewheel){if($.browser.opera){k.unbind("mousewheel",fn=function(){})}else{k.unmousewheel()}}jQuery(">.jScrollPaneTrack, >.jScrollArrowLeft, >.jScrollArrowRight",k).remove();m.css({left:0});_jscr_originalPos[M]=-1}else{var ak=0;this.originalPadding=m.css("paddingTop")+" "+m.css("paddingRight")+" "+m.css("paddingBottom")+" "+m.css("paddingLeft");this.originalSidePaddingTotal=(parseInt(m.css("paddingLeft"))||0)+(parseInt(m.css("paddingRight"))||0);var D=m.outerWidth();var U=m.offset().left+_jscr_originalPos[M]+D;if((U)>$(window).width()){D=$(window).width()*percentageWidth}if(D<a.minimumWidth){D=a.minimumWidth}var al=m.innerHeight();var E=D;m.wrap(jQuery("<div></div>").attr({className:"jScrollPaneContainer"}).css({height:al+"px",width:D+"px"}));jQuery(document).bind("emchange",function(am,an,p){m.jScrollHorizontalPane(a)})}var V=this.originalSidePaddingTotal;m.css({height:al-a.scrollbarHeight-V+"px",width:"auto",paddingRight:a.scrollbarMargin+"px"});var Z=m.outerWidth();if($.browser.msie||$.browser.opera||$.browser.safari){var e=0;m.children().each(function(p,am){if($(am).outerWidth()>e){e=$(am).outerWidth()}});if(e>Z){Z=e}}var O=D/Z;var ab=new Array();if(O<0.99){var f=m.parent();f.append(jQuery("<div></div>").attr({className:"jScrollPaneTrack"}).css({height:a.scrollbarHeight+"px"}).append(jQuery("<div></div>").attr({className:"jScrollPaneDrag"}).css({height:a.scrollbarHeight+"px"}).append(jQuery("<div></div>").attr({className:"jScrollPaneDragLeft"}).css({height:a.scrollbarHeight+"px"}),jQuery("<div></div>").attr({className:"jScrollPaneDragRight"}).css({height:a.scrollbarHeight+"px"}))));var ah=jQuery(">.jScrollPaneTrack",f);for(inter in _jscr_intervals){if(a.showArrows==true){scrollOffset=a.arrowSize}else{scrollOffset=0}intervalTrackPos=_jscr_intervals[inter]/Z*ah.width()-(scrollOffset);ab[inter]=intervalTrackPos;if(ab[inter-1]!=undefined){i[inter-1]=(ab[inter]+ab[inter-1])/2}if(inter!=0){interObj=jQuery("<div>|</div>").attr({className:"jScrollIntervalTrack"}).css({left:intervalTrackPos+"px"});ah.append(interObj)}}var n=jQuery(">.jScrollPaneTrack .jScrollPaneDrag",f);if(a.showArrows){var I;var aj;var r;var Y;var P=function(){if(Y>4||Y%4==0){ag(ad+aj*B)}Y++};var j=function(p){jQuery("body").unbind("mouseup",j);I.removeClass("jScrollActiveArrowButton");clearInterval(r);R=true;w()};var A=function(){jQuery("body").bind("mouseup",j);I.addClass("jScrollActiveArrowButton");Y=0;P();r=setInterval(P,100)};f.append(jQuery("<a></a>").attr({href:"javascript:;",className:"jScrollArrowLeft"}).css({width:a.arrowSize+"px"}).html("Scroll Left").bind("mousedown",function(){I=jQuery(this);aj=-1;A();this.blur();return false}),jQuery("<a></a>").attr({href:"javascript:;",className:"jScrollArrowRight"}).css({width:a.arrowSize+"px"}).html("Scroll Right").bind("mousedown",function(){I=jQuery(this);aj=1;A();this.blur();return false}));if(a.arrowSize){E=D-a.arrowSize-a.arrowSize;ah.css({width:E+"px",left:a.arrowSize+"px"})}else{var J=jQuery(">.jScrollArrowLeft",f).width();a.arrowSize=J;E=D-J-jQuery(">.jScrollArrowRight",f).width();ah.css({width:E+"px",left:J+"px"})}}var ae=jQuery(this).css({position:"absolute",overflow:"visible"});var b;var y;var B;var ad=0;var u=O*D/2;var z=function(am,ao){var an=ao=="X"?"Left":"Bottom";return am["page"+ao]||(am["client"+ao]+(document.documentElement["scroll"+an]||document.body["scroll"+an]))||0};var H=function(){return false};var g=0;var l=1;var R=false;var K=false;_jscr_trackInt[M]=-1;var ac=function(){T();b=n.offset(false);b.left-=ad;y=E-n[0].offsetWidth;B=2*a.wheelSpeed*y/Z};var c=function(p){ac();u=z(p,"X")-ad-b.left;jQuery("body").bind("mouseup",s).bind("mousemove",L);if(jQuery.browser.msie){jQuery("body").bind("dragstart",H).bind("selectstart",H)}return false};var s=function(){jQuery("body").unbind("mouseup",s).unbind("mousemove",L);u=O*D/2;w();if(jQuery.browser.msie){jQuery("body").unbind("dragstart",H).unbind("selectstart",H)}};var ag=function(am){N(ad,am);am=am<0?0:(am>y?y:am);ad=am;n.css({left:am+"px"});var an=am/y;_jscr_originalPos[M]=(D-Z)*an*-1;ae.css({left:((D-Z)*an)+"px"});m.trigger("scroll")};var L=function(p){ag(z(p,"X")-b.left-u)};var N=function(p,am){if((K==false)&&(S!=true)){_jscr_trackInt[M]=-1;halfInter=-1;smallInter=-1;bigInter=-1;endDragPos=am+n.width();fullTrackWidth=$(".jScrollPaneTrack").width();for(inter in ab){if((endDragPos>=fullTrackWidth)&&(endDragPos>=ab[inter])){_jscr_trackInt[M]=inter}else{if(am>=ab[inter]){smallInter=inter}else{bigInter=inter;break}}}if(_jscr_trackInt[M]==-1){smallDistance=am-ab[smallInter];largeDistance=ab[bigInter]-am;if(smallDistance<=largeDistance){_jscr_trackInt[M]=smallInter}else{_jscr_trackInt[M]=bigInter}}}else{K=false}};var w=function(){if(_jscr_trackInt[M]!=-1){if(R==true){if((l==-1)&&(_jscr_trackInt[M]!=0)){_jscr_trackInt[M]=g-1}else{if((l==1)&&(_jscr_trackInt[M]!=(_jscr_intervals.length-1))){_jscr_trackInt[M]=parseInt(g)+1}}R=false}K=true;ag(ab[_jscr_trackInt[M]]);g=_jscr_trackInt[M]}};var o=0;if(a.showArrows==true){o=a.arrowSize}var X=Math.max(Math.min(O*(D-o*2),a.dragMaxWidth),a.dragMinWidth);n.css({width:X+"px"}).bind("mousedown",c);var Q;var q;var h;var aa=function(){if(q>8||q%4==0){ag((ad-((ad-h)/2)))}q++};var ai=function(){clearInterval(Q);w();jQuery("body").unbind("mouseup",ai).unbind("mousemove",F)};var F=function(p){h=z(p,"X")-b.left-u};var t=function(p){ac();F(p);q=0;jQuery("body").bind("mouseup",ai).bind("mousemove",F);Q=setInterval(aa,100);aa()};ah.bind("mousedown",t);if(f.mousewheel){f.mousewheel(function(an,ap){var am=-1;if($.browser.opera){ap=an.wheelDelta/120}if(ab.length>1){S=true;if(ap<0){_jscr_trackInt[M]=parseInt(_jscr_trackInt[M])+1;if((_jscr_trackInt[M])>=ab.length-1){_jscr_trackInt[M]=ab.length-1}if((parseInt(n.width())+parseInt(ab[_jscr_trackInt[M]]))>parseInt($(".jScrollPaneTrack").width())){am=parseInt($(".jScrollPaneTrack").width())-n.width()}}else{_jscr_trackInt[M]=parseInt(_jscr_trackInt[M])-1;if(_jscr_trackInt[M]<0){_jscr_trackInt[M]=0}}}ac();T();var ao=ad;if(S==true){if(am==-1){ag(ab[_jscr_trackInt[M]])}else{ag(am)}}else{ag(ad-ap*B)}w();var p=ao!=ad;S=false;return !p},false)}var d;var x;function C(){var p=(d-ad)/a.animateStep;if((p>1||p<-1)&&((ad+p+n.width())<(D))){ag(ad+p)}else{ag(d);T()}}var T=function(){if(x){clearInterval(x);delete d}};var af=function(an,p){if(typeof an=="string"){$e=jQuery(an,this);if(!$e.length){return}an=$e.position().left}T();var am=-an/(D-Z)*y;if(!p||a.animateTo){d=am;x=setInterval(C,a.animateInterval)}else{ag(am)}};m[0].scrollTo=af;m[0].scrollBy=function(am){var p=-parseInt(ae.css("left"))||0;af(p+am)};ac();af(-ak,true);jQuery.jScrollHorizontalPane.active.push(m[0])}else{var af=function(am,p){};m[0].scrollTo=af;m.css({height:al-this.originalSidePaddingTotal+"px",width:D+"px",padding:this.originalPadding})}})};jQuery.fn.jScrollHorizontalPane.reset=function(){_jscr_originalSizes=new Array();_jscr_differenceSizes=new Array();_jscr_previousWindowSize=new Array();_jscr_originalPercentages=new Array();_jscr_intervals=new Array();_jscr_trackInt=new Array();_jscr_originalPos=new Array();_jscr_globalProperties=new Array()};jQuery(window).bind("unload",function(){var b=jQuery.jScrollHorizontalPane.active;for(var a=0;a<b.length;a++){b[a].scrollTo=b[a].scrollBy=null}});
