integ/js/jquery.mCustomScrollbar.js
author veltr
Mon, 06 May 2013 18:38:13 +0200
changeset 65 b13a409f01dc
parent 0 ca1b8c0fbe35
permissions -rw-r--r--
Some refactoring
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
     1
/* 
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
     2
== malihu jquery custom scrollbars plugin == 
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
     3
version: 2.1 
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
     4
author: malihu (http://manos.malihu.gr) 
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
     5
plugin home: http://manos.malihu.gr/jquery-custom-content-scroller 
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
     6
*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
     7
(function($){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
     8
	var methods={
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
     9
		init:function(options){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    10
			var defaults={ 
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    11
				set_width:false, /*optional element width: boolean, pixels, percentage*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    12
				set_height:false, /*optional element height: boolean, pixels, percentage*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    13
				horizontalScroll:false, /*scroll horizontally: boolean*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    14
				scrollInertia:550, /*scrolling inertia: integer (milliseconds)*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    15
				scrollEasing:"easeOutCirc", /*scrolling easing: string*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    16
				mouseWheel:"auto", /*mousewheel support and velocity: boolean, "auto", integer*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    17
				autoDraggerLength:true, /*auto-adjust scrollbar dragger length: boolean*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    18
				scrollButtons:{ /*scroll buttons*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    19
					enable:false, /*scroll buttons support: boolean*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    20
					scrollType:"continuous", /*scroll buttons scrolling type: "continuous", "pixels"*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    21
					scrollSpeed:20, /*scroll buttons continuous scrolling speed: integer*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    22
					scrollAmount:40 /*scroll buttons pixels scroll amount: integer (pixels)*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    23
				},
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    24
				advanced:{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    25
					updateOnBrowserResize:true, /*update scrollbars on browser resize (for layouts based on percentages): boolean*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    26
					updateOnContentResize:false, /*auto-update scrollbars on content resize (for dynamic content): boolean*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    27
					autoExpandHorizontalScroll:false /*auto-expand width for horizontal scrolling: boolean*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    28
				},
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    29
				callbacks:{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    30
					onScroll:function(){}, /*user custom callback function on scroll event*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    31
					onTotalScroll:function(){}, /*user custom callback function on scroll end reached event*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    32
					onTotalScrollOffset:0 /*scroll end reached offset: integer (pixels)*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    33
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    34
			},
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    35
			options=$.extend(true,defaults,options);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    36
			/*check for touch device*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    37
			$(document).data("mCS-is-touch-device",false);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    38
			if(is_touch_device()){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    39
				$(document).data("mCS-is-touch-device",true);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    40
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    41
			function is_touch_device(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    42
				return !!("ontouchstart" in window) ? 1 : 0;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    43
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    44
			return this.each(function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    45
				var $this=$(this);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    46
				/*set element width/height, create markup for custom scrollbars, add classes*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    47
				if(options.set_width){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    48
					$this.css("width",options.set_width);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    49
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    50
				if(options.set_height){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    51
					$this.css("height",options.set_height);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    52
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    53
				if(!$(document).data("mCustomScrollbar-index")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    54
					$(document).data("mCustomScrollbar-index","1");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    55
				}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    56
					var mCustomScrollbarIndex=parseInt($(document).data("mCustomScrollbar-index"));
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    57
					$(document).data("mCustomScrollbar-index",mCustomScrollbarIndex+1);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    58
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    59
				$this.wrapInner("<div class='mCustomScrollBox' id='mCSB_"+$(document).data("mCustomScrollbar-index")+"' style='position:relative; height:100%; overflow:hidden; max-width:100%;' />").addClass("mCustomScrollbar _mCS_"+$(document).data("mCustomScrollbar-index"));
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    60
				var mCustomScrollBox=$this.children(".mCustomScrollBox");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    61
				if(options.horizontalScroll){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    62
					mCustomScrollBox.addClass("mCSB_horizontal").wrapInner("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    63
					var mCSB_h_wrapper=mCustomScrollBox.children(".mCSB_h_wrapper");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    64
					mCSB_h_wrapper.wrapInner("<div class='mCSB_container' style='position:absolute; left:0;' />").children(".mCSB_container").css({"width":mCSB_h_wrapper.children().outerWidth(),"position":"relative"}).unwrap();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    65
				}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    66
					mCustomScrollBox.wrapInner("<div class='mCSB_container' style='position:relative; top:0;' />");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    67
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    68
				var mCSB_container=mCustomScrollBox.children(".mCSB_container");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    69
				if(!$(document).data("mCS-is-touch-device")){ /*not touch device - apply custom scrollbars functionality*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    70
					mCSB_container.after("<div class='mCSB_scrollTools' style='position:absolute;'><div class='mCSB_draggerContainer' style='position:relative;'><div class='mCSB_dragger' style='position:absolute;'><div class='mCSB_dragger_bar' style='position:relative;'></div></div><div class='mCSB_draggerRail'></div></div></div>");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    71
					var mCSB_scrollTools=mCustomScrollBox.children(".mCSB_scrollTools"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    72
						mCSB_draggerContainer=mCSB_scrollTools.children(".mCSB_draggerContainer"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    73
						mCSB_dragger=mCSB_draggerContainer.children(".mCSB_dragger");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    74
					if(options.horizontalScroll){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    75
						mCSB_dragger.data("minDraggerWidth",mCSB_dragger.width());
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    76
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    77
						mCSB_dragger.data("minDraggerHeight",mCSB_dragger.height());
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    78
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    79
					if(options.scrollButtons.enable){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    80
						if(options.horizontalScroll){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    81
							mCSB_scrollTools.prepend("<a class='mCSB_buttonLeft' style='display:block; position:relative;'></a>").append("<a class='mCSB_buttonRight' style='display:block; position:relative;'></a>");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    82
						}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    83
							mCSB_scrollTools.prepend("<a class='mCSB_buttonUp' style='display:block; position:relative;'></a>").append("<a class='mCSB_buttonDown' style='display:block; position:relative;'></a>");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    84
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    85
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    86
					/*mCustomScrollBox scrollTop and scrollLeft is always 0 to prevent browser focus scrolling*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    87
					mCustomScrollBox.bind("scroll",function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    88
						mCustomScrollBox.scrollTop(0).scrollLeft(0);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    89
					});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    90
					/*store element options and update element*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    91
					$this.data({
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    92
						"horizontalScroll":options.horizontalScroll,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    93
						"scrollInertia":options.scrollInertia,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    94
						"scrollEasing":options.scrollEasing,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    95
						"mouseWheel":options.mouseWheel,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    96
						"autoDraggerLength":options.autoDraggerLength,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    97
						"scrollButtons-enable":options.scrollButtons.enable,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    98
						"scrollButtons-scrollType":options.scrollButtons.scrollType,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
    99
						"scrollButtons-scrollSpeed":options.scrollButtons.scrollSpeed,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   100
						"scrollButtons-scrollAmount":options.scrollButtons.scrollAmount,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   101
						"autoExpandHorizontalScroll":options.advanced.autoExpandHorizontalScroll,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   102
						"onScroll-Callback":options.callbacks.onScroll,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   103
						"onTotalScroll-Callback":options.callbacks.onTotalScroll,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   104
						"onTotalScroll-Offset":options.callbacks.onTotalScrollOffset
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   105
					}).mCustomScrollbar("update");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   106
					/*window resize fn (for layouts based on percentages)*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   107
					if(options.advanced.updateOnBrowserResize){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   108
						var mCSB_resizeTimeout;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   109
						$(window).resize(function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   110
							if(mCSB_resizeTimeout){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   111
								clearTimeout(mCSB_resizeTimeout);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   112
							}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   113
							mCSB_resizeTimeout=setTimeout(function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   114
								$this.mCustomScrollbar("update");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   115
							},150);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   116
						});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   117
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   118
				}else{ /*is touch device*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   119
					/*check for mobile os/browser not supporting overflow:auto (Android 2.xx)*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   120
					var ua=navigator.userAgent;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   121
					if(ua.indexOf("Android")!=-1){ 
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   122
						var androidversion=parseFloat(ua.slice(ua.indexOf("Android")+8));
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   123
						if(androidversion<3){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   124
							touchScroll("mCSB_"+$(document).data("mCustomScrollbar-index")); /*non overflow:auto fn*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   125
						}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   126
							mCustomScrollBox.css({"overflow":"auto","-webkit-overflow-scrolling":"touch"});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   127
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   128
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   129
						mCustomScrollBox.css({"overflow":"auto","-webkit-overflow-scrolling":"touch"});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   130
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   131
					mCSB_container.addClass("mCS_no_scrollbar mCS_touch");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   132
					$this.data({
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   133
						"horizontalScroll":options.horizontalScroll,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   134
						"scrollInertia":options.scrollInertia,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   135
						"scrollEasing":options.scrollEasing,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   136
						"autoExpandHorizontalScroll":options.advanced.autoExpandHorizontalScroll,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   137
						"onScroll-Callback":options.callbacks.onScroll,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   138
						"onTotalScroll-Callback":options.callbacks.onTotalScroll,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   139
						"onTotalScroll-Offset":options.callbacks.onTotalScrollOffset
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   140
					});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   141
					mCustomScrollBox.scroll(function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   142
						$this.mCustomScrollbar("callbacks",mCustomScrollBox,mCSB_container); /*user custom callback functions*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   143
					});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   144
					/*non overflow:auto fn 
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   145
					(source: http://chris-barr.com/index.php/entry/scrolling_a_overflowauto_element_on_a_touch_screen_device/)*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   146
					function touchScroll(id){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   147
						var el=document.getElementById(id),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   148
							scrollStartPosY=0,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   149
							scrollStartPosX=0;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   150
						document.getElementById(id).addEventListener("touchstart",function(event){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   151
							scrollStartPosY=this.scrollTop+event.touches[0].pageY;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   152
							scrollStartPosX=this.scrollLeft+event.touches[0].pageX;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   153
							/*event.preventDefault(); // Keep this remarked so you can click on buttons and links in the div*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   154
						},false);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   155
						document.getElementById(id).addEventListener("touchmove",function(event){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   156
							/*These if statements allow the full page to scroll (not just the div) if they are
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   157
							at the top of the div scroll or the bottom of the div scroll
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   158
							The -5 and +5 below are in case they are trying to scroll the page sideways
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   159
							but their finger moves a few pixels down or up.  The event.preventDefault() function
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   160
							will not be called in that case so that the whole page can scroll.*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   161
							if((this.scrollTop<this.scrollHeight-this.offsetHeight && this.scrollTop+event.touches[0].pageY<scrollStartPosY-5) || (this.scrollTop!=0 && this.scrollTop+event.touches[0].pageY>scrollStartPosY+5))
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   162
								event.preventDefault();	
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   163
							if((this.scrollLeft<this.scrollWidth-this.offsetWidth && this.scrollLeft+event.touches[0].pageX < scrollStartPosX-5) || (this.scrollLeft!=0&&this.scrollLeft+event.touches[0].pageX>scrollStartPosX+5))
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   164
								event.preventDefault();	
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   165
							this.scrollTop=scrollStartPosY-event.touches[0].pageY;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   166
							this.scrollLeft=scrollStartPosX-event.touches[0].pageX;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   167
						},false);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   168
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   169
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   170
				/*content resize fn (for dynamically generated content)*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   171
				if(options.advanced.updateOnContentResize){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   172
					var mCSB_onContentResize;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   173
					if(options.horizontalScroll){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   174
						var mCSB_containerOldSize=mCSB_container.outerWidth();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   175
						if(is_touch_device()){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   176
							/*disable iOS webkit inertia for smooth scrolling*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   177
							mCustomScrollBox.css({"-webkit-overflow-scrolling":"auto"});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   178
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   179
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   180
						var mCSB_containerOldSize=mCSB_container.outerHeight();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   181
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   182
					mCSB_onContentResize=setInterval(function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   183
						if(options.horizontalScroll){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   184
							if(options.advanced.autoExpandHorizontalScroll){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   185
								mCSB_container.css({"position":"absolute","width":"auto"}).wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />").css({"width":mCSB_container.outerWidth(),"position":"relative"}).unwrap();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   186
							}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   187
							var mCSB_containerNewSize=mCSB_container.outerWidth();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   188
						}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   189
							var mCSB_containerNewSize=mCSB_container.outerHeight();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   190
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   191
						if(mCSB_containerNewSize!=mCSB_containerOldSize){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   192
							$this.mCustomScrollbar("update");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   193
							mCSB_containerOldSize=mCSB_containerNewSize;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   194
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   195
					},300);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   196
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   197
			});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   198
		},
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   199
		update:function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   200
			var $this=$(this),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   201
				mCustomScrollBox=$this.children(".mCustomScrollBox"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   202
				mCSB_container=mCustomScrollBox.children(".mCSB_container");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   203
			if(!$(document).data("mCS-is-touch-device")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   204
				mCSB_container.removeClass("mCS_no_scrollbar");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   205
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   206
			var mCSB_scrollTools=mCustomScrollBox.children(".mCSB_scrollTools"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   207
				mCSB_draggerContainer=mCSB_scrollTools.children(".mCSB_draggerContainer"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   208
				mCSB_dragger=mCSB_draggerContainer.children(".mCSB_dragger");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   209
			if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   210
				var mCSB_buttonLeft=mCSB_scrollTools.children(".mCSB_buttonLeft"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   211
					mCSB_buttonRight=mCSB_scrollTools.children(".mCSB_buttonRight"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   212
					mCustomScrollBoxW=mCustomScrollBox.width();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   213
				if($this.data("autoExpandHorizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   214
					mCSB_container.css({"position":"absolute","width":"auto"}).wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />").css({"width":mCSB_container.outerWidth(),"position":"relative"}).unwrap();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   215
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   216
				var mCSB_containerW=mCSB_container.outerWidth();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   217
			}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   218
				var mCSB_buttonUp=mCSB_scrollTools.children(".mCSB_buttonUp"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   219
					mCSB_buttonDown=mCSB_scrollTools.children(".mCSB_buttonDown"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   220
					mCustomScrollBoxH=mCustomScrollBox.height(),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   221
					mCSB_containerH=mCSB_container.outerHeight();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   222
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   223
			if(mCSB_containerH>mCustomScrollBoxH && !$this.data("horizontalScroll") && !$(document).data("mCS-is-touch-device")){ /*content needs vertical scrolling*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   224
				mCSB_scrollTools.css("display","block");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   225
				var mCSB_draggerContainerH=mCSB_draggerContainer.height();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   226
				/*auto adjust scrollbar dragger length analogous to content*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   227
				if($this.data("autoDraggerLength")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   228
					var draggerH=Math.round(mCustomScrollBoxH/mCSB_containerH*mCSB_draggerContainerH),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   229
						minDraggerH=mCSB_dragger.data("minDraggerHeight");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   230
					if(draggerH<=minDraggerH){ /*min dragger height*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   231
						mCSB_dragger.css({"height":minDraggerH});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   232
					}else if(draggerH>=mCSB_draggerContainerH-10){ /*max dragger height*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   233
						var mCSB_draggerContainerMaxH=mCSB_draggerContainerH-10;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   234
						mCSB_dragger.css({"height":mCSB_draggerContainerMaxH});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   235
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   236
						mCSB_dragger.css({"height":draggerH});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   237
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   238
					mCSB_dragger.children(".mCSB_dragger_bar").css({"line-height":mCSB_dragger.height()+"px"});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   239
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   240
				var mCSB_draggerH=mCSB_dragger.height(),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   241
				/*calculate and store scroll amount*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   242
					scrollAmount=(mCSB_containerH-mCustomScrollBoxH)/(mCSB_draggerContainerH-mCSB_draggerH);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   243
				$this.data("scrollAmount",scrollAmount);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   244
				/*add scrolling*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   245
				$this.mCustomScrollbar("scrolling",mCustomScrollBox,mCSB_container,mCSB_draggerContainer,mCSB_dragger,mCSB_buttonUp,mCSB_buttonDown,mCSB_buttonLeft,mCSB_buttonRight);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   246
				/*scroll*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   247
				var mCSB_containerP=Math.abs(Math.round(mCSB_container.position().top));
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   248
				$this.mCustomScrollbar("scrollTo",mCSB_containerP,{callback:false});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   249
			}else if(mCSB_containerW>mCustomScrollBoxW && $this.data("horizontalScroll") && !$(document).data("mCS-is-touch-device")){ /*content needs horizontal scrolling*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   250
				mCSB_scrollTools.css("display","block");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   251
				var mCSB_draggerContainerW=mCSB_draggerContainer.width();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   252
				/*auto adjust scrollbar dragger length analogous to content*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   253
				if($this.data("autoDraggerLength")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   254
					var draggerW=Math.round(mCustomScrollBoxW/mCSB_containerW*mCSB_draggerContainerW),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   255
						minDraggerW=mCSB_dragger.data("minDraggerWidth");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   256
					if(draggerW<=minDraggerW){ /*min dragger height*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   257
						mCSB_dragger.css({"width":minDraggerW});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   258
					}else if(draggerW>=mCSB_draggerContainerW-10){ /*max dragger height*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   259
						var mCSB_draggerContainerMaxW=mCSB_draggerContainerW-10;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   260
						mCSB_dragger.css({"width":mCSB_draggerContainerMaxW});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   261
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   262
						mCSB_dragger.css({"width":draggerW});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   263
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   264
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   265
				var mCSB_draggerW=mCSB_dragger.width(),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   266
				/*calculate and store scroll amount*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   267
					scrollAmount=(mCSB_containerW-mCustomScrollBoxW)/(mCSB_draggerContainerW-mCSB_draggerW);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   268
				$this.data("scrollAmount",scrollAmount);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   269
				/*add scrolling*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   270
				$this.mCustomScrollbar("scrolling",mCustomScrollBox,mCSB_container,mCSB_draggerContainer,mCSB_dragger,mCSB_buttonUp,mCSB_buttonDown,mCSB_buttonLeft,mCSB_buttonRight);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   271
				/*scroll*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   272
				var mCSB_containerP=Math.abs(Math.round(mCSB_container.position().left));
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   273
				$this.mCustomScrollbar("scrollTo",mCSB_containerP,{callback:false});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   274
			}else{ /*content does not need scrolling*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   275
				/*unbind events, reset content position, hide scrollbars, remove classes*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   276
				mCustomScrollBox.unbind("mousewheel");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   277
				mCustomScrollBox.unbind("focusin");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   278
				if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   279
					mCSB_dragger.add(mCSB_container).css("left",0);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   280
				}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   281
					mCSB_dragger.add(mCSB_container).css("top",0);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   282
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   283
				mCSB_scrollTools.css("display","none");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   284
				mCSB_container.addClass("mCS_no_scrollbar");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   285
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   286
		},
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   287
		scrolling:function(mCustomScrollBox,mCSB_container,mCSB_draggerContainer,mCSB_dragger,mCSB_buttonUp,mCSB_buttonDown,mCSB_buttonLeft,mCSB_buttonRight){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   288
			var $this=$(this);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   289
			/*drag scrolling*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   290
			if(!mCSB_dragger.hasClass("ui-draggable")){ /*apply drag function once*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   291
				if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   292
					var draggableAxis="x";
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   293
				}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   294
					var draggableAxis="y";
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   295
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   296
				mCSB_dragger.draggable({ 
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   297
					axis:draggableAxis,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   298
					containment:"parent",
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   299
					drag:function(event,ui){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   300
						$this.mCustomScrollbar("scroll");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   301
						mCSB_dragger.addClass("mCSB_dragger_onDrag");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   302
					},
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   303
					stop:function(event,ui){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   304
						mCSB_dragger.removeClass("mCSB_dragger_onDrag");	
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   305
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   306
				});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   307
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   308
			mCSB_draggerContainer.unbind("click").bind("click",function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   309
				if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   310
					var mouseCoord=(e.pageX-mCSB_draggerContainer.offset().left);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   311
					if(mouseCoord<mCSB_dragger.position().left || mouseCoord>(mCSB_dragger.position().left+mCSB_dragger.width())){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   312
						var scrollToPos=mouseCoord;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   313
						if(scrollToPos>=mCSB_draggerContainer.width()-mCSB_dragger.width()){ /*max dragger position is bottom*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   314
							scrollToPos=mCSB_draggerContainer.width()-mCSB_dragger.width();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   315
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   316
						mCSB_dragger.css("left",scrollToPos);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   317
						$this.mCustomScrollbar("scroll");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   318
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   319
				}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   320
					var mouseCoord=(e.pageY-mCSB_draggerContainer.offset().top);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   321
					if(mouseCoord<mCSB_dragger.position().top || mouseCoord>(mCSB_dragger.position().top+mCSB_dragger.height())){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   322
						var scrollToPos=mouseCoord;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   323
						if(scrollToPos>=mCSB_draggerContainer.height()-mCSB_dragger.height()){ /*max dragger position is bottom*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   324
							scrollToPos=mCSB_draggerContainer.height()-mCSB_dragger.height();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   325
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   326
						mCSB_dragger.css("top",scrollToPos);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   327
						$this.mCustomScrollbar("scroll");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   328
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   329
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   330
			});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   331
			/*mousewheel scrolling*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   332
			if($this.data("mouseWheel")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   333
				var mousewheelVel=$this.data("mouseWheel");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   334
				if($this.data("mouseWheel")==="auto"){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   335
					mousewheelVel=8; /*default mousewheel velocity*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   336
					/*check for safari browser on mac osx to lower mousewheel velocity*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   337
					var os=navigator.userAgent;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   338
					if(os.indexOf("Mac")!=-1 && os.indexOf("Safari")!=-1 && os.indexOf("AppleWebKit")!=-1 && os.indexOf("Chrome")==-1){ 
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   339
						mousewheelVel=1;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   340
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   341
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   342
				mCustomScrollBox.unbind("mousewheel").bind("mousewheel",function(event,delta){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   343
					event.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   344
					var vel=Math.abs(delta*mousewheelVel);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   345
					if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   346
						var posX=mCSB_dragger.position().left-(delta*vel);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   347
						mCSB_dragger.css("left",posX);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   348
						if(mCSB_dragger.position().left<0){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   349
							mCSB_dragger.css("left",0);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   350
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   351
						var mCSB_draggerContainerW=mCSB_draggerContainer.width(),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   352
							mCSB_draggerW=mCSB_dragger.width();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   353
						if(mCSB_dragger.position().left>mCSB_draggerContainerW-mCSB_draggerW){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   354
							mCSB_dragger.css("left",mCSB_draggerContainerW-mCSB_draggerW);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   355
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   356
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   357
						var posY=mCSB_dragger.position().top-(delta*vel);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   358
						mCSB_dragger.css("top",posY);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   359
						if(mCSB_dragger.position().top<0){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   360
							mCSB_dragger.css("top",0);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   361
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   362
						var mCSB_draggerContainerH=mCSB_draggerContainer.height(),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   363
							mCSB_draggerH=mCSB_dragger.height();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   364
						if(mCSB_dragger.position().top>mCSB_draggerContainerH-mCSB_draggerH){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   365
							mCSB_dragger.css("top",mCSB_draggerContainerH-mCSB_draggerH);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   366
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   367
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   368
					$this.mCustomScrollbar("scroll");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   369
				});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   370
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   371
			/*buttons scrolling*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   372
			if($this.data("scrollButtons-enable")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   373
				if($this.data("scrollButtons-scrollType")==="pixels"){ /*scroll by pixels*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   374
					var pixelsScrollTo;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   375
					if($.browser.msie && parseInt($.browser.version)<9){ /*stupid ie8*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   376
						$this.data("scrollInertia",0);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   377
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   378
					if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   379
						mCSB_buttonRight.add(mCSB_buttonLeft).unbind("click mousedown mouseup mouseout",mCSB_buttonRight_stop,mCSB_buttonLeft_stop);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   380
						/*scroll right*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   381
						mCSB_buttonRight.bind("click",function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   382
							e.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   383
							if(!mCSB_container.is(":animated")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   384
								pixelsScrollTo=Math.abs(mCSB_container.position().left)+$this.data("scrollButtons-scrollAmount");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   385
								$this.mCustomScrollbar("scrollTo",pixelsScrollTo);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   386
							}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   387
						});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   388
						/*scroll left*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   389
						mCSB_buttonLeft.bind("click",function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   390
							e.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   391
							if(!mCSB_container.is(":animated")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   392
								pixelsScrollTo=Math.abs(mCSB_container.position().left)-$this.data("scrollButtons-scrollAmount");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   393
								if(mCSB_container.position().left>=-$this.data("scrollButtons-scrollAmount")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   394
									pixelsScrollTo="left";
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   395
								}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   396
								$this.mCustomScrollbar("scrollTo",pixelsScrollTo);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   397
							}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   398
						});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   399
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   400
						mCSB_buttonDown.add(mCSB_buttonUp).unbind("click mousedown mouseup mouseout",mCSB_buttonDown_stop,mCSB_buttonUp_stop);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   401
						/*scroll down*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   402
						mCSB_buttonDown.bind("click",function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   403
							e.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   404
							if(!mCSB_container.is(":animated")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   405
								pixelsScrollTo=Math.abs(mCSB_container.position().top)+$this.data("scrollButtons-scrollAmount");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   406
								$this.mCustomScrollbar("scrollTo",pixelsScrollTo);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   407
							}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   408
						});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   409
						/*scroll up*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   410
						mCSB_buttonUp.bind("click",function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   411
							e.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   412
							if(!mCSB_container.is(":animated")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   413
								pixelsScrollTo=Math.abs(mCSB_container.position().top)-$this.data("scrollButtons-scrollAmount");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   414
								if(mCSB_container.position().top>=-$this.data("scrollButtons-scrollAmount")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   415
									pixelsScrollTo="top";
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   416
								}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   417
								$this.mCustomScrollbar("scrollTo",pixelsScrollTo);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   418
							}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   419
						});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   420
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   421
				}else{ /*continuous scrolling*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   422
					if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   423
						mCSB_buttonRight.add(mCSB_buttonLeft).unbind("click mousedown mouseup mouseout",mCSB_buttonRight_stop,mCSB_buttonLeft_stop);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   424
						/*scroll right*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   425
						var mCSB_buttonScrollRight,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   426
							mCSB_draggerContainerW=mCSB_draggerContainer.width(),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   427
							mCSB_draggerW=mCSB_dragger.width();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   428
						mCSB_buttonRight.bind("mousedown",function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   429
							e.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   430
							var draggerScrollTo=mCSB_draggerContainerW-mCSB_draggerW;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   431
							mCSB_buttonScrollRight=setInterval(function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   432
								var scrollToSpeed=Math.abs(mCSB_dragger.position().left-draggerScrollTo)*(100/$this.data("scrollButtons-scrollSpeed"));
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   433
								mCSB_dragger.stop().animate({left:draggerScrollTo},scrollToSpeed,"linear");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   434
								$this.mCustomScrollbar("scroll");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   435
							},20);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   436
						});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   437
						var mCSB_buttonRight_stop=function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   438
							e.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   439
							clearInterval(mCSB_buttonScrollRight);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   440
							mCSB_dragger.stop();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   441
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   442
						mCSB_buttonRight.bind("mouseup mouseout",mCSB_buttonRight_stop);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   443
						/*scroll left*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   444
						var mCSB_buttonScrollLeft;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   445
						mCSB_buttonLeft.bind("mousedown",function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   446
							e.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   447
							var draggerScrollTo=0;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   448
							mCSB_buttonScrollLeft=setInterval(function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   449
								var scrollToSpeed=Math.abs(mCSB_dragger.position().left-draggerScrollTo)*(100/$this.data("scrollButtons-scrollSpeed"));
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   450
								mCSB_dragger.stop().animate({left:draggerScrollTo},scrollToSpeed,"linear");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   451
								$this.mCustomScrollbar("scroll");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   452
							},20);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   453
						});	
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   454
						var mCSB_buttonLeft_stop=function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   455
							e.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   456
							clearInterval(mCSB_buttonScrollLeft);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   457
							mCSB_dragger.stop();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   458
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   459
						mCSB_buttonLeft.bind("mouseup mouseout",mCSB_buttonLeft_stop);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   460
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   461
						mCSB_buttonDown.add(mCSB_buttonUp).unbind("click mousedown mouseup mouseout",mCSB_buttonDown_stop,mCSB_buttonUp_stop);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   462
						/*scroll down*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   463
						var mCSB_buttonScrollDown,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   464
							mCSB_draggerContainerH=mCSB_draggerContainer.height(),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   465
							mCSB_draggerH=mCSB_dragger.height();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   466
						mCSB_buttonDown.bind("mousedown",function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   467
							e.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   468
							var draggerScrollTo=mCSB_draggerContainerH-mCSB_draggerH;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   469
							mCSB_buttonScrollDown=setInterval(function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   470
								var scrollToSpeed=Math.abs(mCSB_dragger.position().top-draggerScrollTo)*(100/$this.data("scrollButtons-scrollSpeed"));
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   471
								mCSB_dragger.stop().animate({top:draggerScrollTo},scrollToSpeed,"linear");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   472
								$this.mCustomScrollbar("scroll");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   473
							},20);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   474
						});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   475
						var mCSB_buttonDown_stop=function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   476
							e.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   477
							clearInterval(mCSB_buttonScrollDown);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   478
							mCSB_dragger.stop();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   479
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   480
						mCSB_buttonDown.bind("mouseup mouseout",mCSB_buttonDown_stop);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   481
						/*scroll up*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   482
						var mCSB_buttonScrollUp;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   483
						mCSB_buttonUp.bind("mousedown",function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   484
							e.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   485
							var draggerScrollTo=0;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   486
							mCSB_buttonScrollUp=setInterval(function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   487
								var scrollToSpeed=Math.abs(mCSB_dragger.position().top-draggerScrollTo)*(100/$this.data("scrollButtons-scrollSpeed"));
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   488
								mCSB_dragger.stop().animate({top:draggerScrollTo},scrollToSpeed,"linear");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   489
								$this.mCustomScrollbar("scroll");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   490
							},20);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   491
						});	
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   492
						var mCSB_buttonUp_stop=function(e){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   493
							e.preventDefault();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   494
							clearInterval(mCSB_buttonScrollUp);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   495
							mCSB_dragger.stop();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   496
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   497
						mCSB_buttonUp.bind("mouseup mouseout",mCSB_buttonUp_stop);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   498
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   499
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   500
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   501
			/*scrolling on element focus (e.g. via TAB key)*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   502
			mCustomScrollBox.unbind("focusin").bind("focusin",function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   503
				mCustomScrollBox.scrollTop(0).scrollLeft(0);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   504
				var focusedElem=$(document.activeElement);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   505
				if(focusedElem.is("input,textarea,select,button,a[tabindex],area,object")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   506
					if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   507
						var mCSB_containerX=mCSB_container.position().left,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   508
							focusedElemX=focusedElem.position().left,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   509
							mCustomScrollBoxW=mCustomScrollBox.width(),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   510
							focusedElemW=focusedElem.outerWidth();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   511
						if(mCSB_containerX+focusedElemX>=0 && mCSB_containerX+focusedElemX<=mCustomScrollBoxW-focusedElemW){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   512
							/*just focus...*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   513
						}else{ /*scroll, then focus*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   514
							var moveDragger=focusedElemX/$this.data("scrollAmount");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   515
							if(moveDragger>=mCSB_draggerContainer.width()-mCSB_dragger.width()){ /*max dragger position is bottom*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   516
								moveDragger=mCSB_draggerContainer.width()-mCSB_dragger.width();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   517
							}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   518
							mCSB_dragger.css("left",moveDragger);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   519
							$this.mCustomScrollbar("scroll");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   520
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   521
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   522
						var mCSB_containerY=mCSB_container.position().top,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   523
							focusedElemY=focusedElem.position().top,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   524
							mCustomScrollBoxH=mCustomScrollBox.height(),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   525
							focusedElemH=focusedElem.outerHeight();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   526
						if(mCSB_containerY+focusedElemY>=0 && mCSB_containerY+focusedElemY<=mCustomScrollBoxH-focusedElemH){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   527
							/*just focus...*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   528
						}else{ /*scroll, then focus*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   529
							var moveDragger=focusedElemY/$this.data("scrollAmount");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   530
							if(moveDragger>=mCSB_draggerContainer.height()-mCSB_dragger.height()){ /*max dragger position is bottom*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   531
								moveDragger=mCSB_draggerContainer.height()-mCSB_dragger.height();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   532
							}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   533
							mCSB_dragger.css("top",moveDragger);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   534
							$this.mCustomScrollbar("scroll");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   535
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   536
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   537
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   538
			});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   539
		},
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   540
		scroll:function(updated){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   541
			var $this=$(this),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   542
				mCSB_dragger=$this.find(".mCSB_dragger"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   543
				mCSB_container=$this.find(".mCSB_container"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   544
				mCustomScrollBox=$this.find(".mCustomScrollBox");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   545
			if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   546
				var draggerX=mCSB_dragger.position().left,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   547
					targX=-draggerX*$this.data("scrollAmount"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   548
					thisX=mCSB_container.position().left,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   549
					posX=Math.round(thisX-targX);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   550
			}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   551
				var draggerY=mCSB_dragger.position().top,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   552
					targY=-draggerY*$this.data("scrollAmount"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   553
					thisY=mCSB_container.position().top,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   554
					posY=Math.round(thisY-targY);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   555
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   556
			if($.browser.webkit){ /*fix webkit zoom and jquery animate*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   557
				var screenCssPixelRatio=(window.outerWidth-8)/window.innerWidth,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   558
					isZoomed=(screenCssPixelRatio<.98 || screenCssPixelRatio>1.02);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   559
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   560
			if($this.data("scrollInertia")===0 || isZoomed){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   561
				if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   562
					mCSB_container.css("left",targX);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   563
				}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   564
					mCSB_container.css("top",targY);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   565
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   566
				if(!updated){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   567
					$this.mCustomScrollbar("callbacks",mCustomScrollBox,mCSB_container); /*user custom callback functions*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   568
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   569
			}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   570
				if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   571
					mCSB_container.stop().animate({left: "-="+posX},$this.data("scrollInertia"),$this.data("scrollEasing"),function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   572
						if(!updated){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   573
							$this.mCustomScrollbar("callbacks",mCustomScrollBox,mCSB_container); /*user custom callback functions*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   574
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   575
					});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   576
				}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   577
					mCSB_container.stop().animate({top: "-="+posY},$this.data("scrollInertia"),$this.data("scrollEasing"),function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   578
						if(!updated){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   579
							$this.mCustomScrollbar("callbacks",mCustomScrollBox,mCSB_container); /*user custom callback functions*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   580
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   581
					});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   582
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   583
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   584
		},
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   585
		scrollTo:function(scrollTo,options){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   586
			var defaults={
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   587
				moveDragger:false,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   588
				callback:true
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   589
			},
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   590
				options=$.extend(defaults,options),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   591
				$this=$(this),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   592
				scrollToPos,
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   593
				mCustomScrollBox=$this.find(".mCustomScrollBox"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   594
				mCSB_container=mCustomScrollBox.children(".mCSB_container");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   595
			if(!$(document).data("mCS-is-touch-device")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   596
				var mCSB_draggerContainer=$this.find(".mCSB_draggerContainer"),
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   597
					mCSB_dragger=mCSB_draggerContainer.children(".mCSB_dragger");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   598
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   599
			var targetPos;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   600
			if(scrollTo){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   601
				if(typeof(scrollTo)==="number"){ /*if integer, scroll by number of pixels*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   602
					if(options.moveDragger){ /*scroll dragger*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   603
						scrollToPos=scrollTo;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   604
					}else{ /*scroll content by default*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   605
						targetPos=scrollTo;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   606
						scrollToPos=Math.round(targetPos/$this.data("scrollAmount"));
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   607
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   608
				}else if(typeof(scrollTo)==="string"){ /*if string, scroll by element position*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   609
					var target;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   610
					if(scrollTo==="top"){ /*scroll to top*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   611
						target=0;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   612
					}else if(scrollTo==="bottom" && !$this.data("horizontalScroll")){ /*scroll to bottom*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   613
						target=mCSB_container.outerHeight()-mCustomScrollBox.height();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   614
					}else if(scrollTo==="left"){ /*scroll to left*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   615
						target=0;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   616
					}else if(scrollTo==="right" && $this.data("horizontalScroll")){ /*scroll to right*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   617
						target=mCSB_container.outerWidth()-mCustomScrollBox.width();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   618
					}else if(scrollTo==="first"){ /*scroll to first element position*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   619
						target=$this.find(".mCSB_container").find(":first");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   620
					}else if(scrollTo==="last"){ /*scroll to last element position*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   621
						target=$this.find(".mCSB_container").find(":last");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   622
					}else{ /*scroll to element position*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   623
						target=$this.find(scrollTo);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   624
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   625
					if(target.length===1){ /*if such unique element exists, scroll to it*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   626
						if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   627
							targetPos=target.position().left;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   628
						}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   629
							targetPos=target.position().top;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   630
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   631
						if($(document).data("mCS-is-touch-device")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   632
							scrollToPos=targetPos;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   633
						}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   634
							scrollToPos=Math.ceil(targetPos/$this.data("scrollAmount"));
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   635
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   636
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   637
						scrollToPos=target;
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   638
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   639
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   640
				/*scroll to*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   641
				if($(document).data("mCS-is-touch-device")){ /*is touch device*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   642
					if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   643
						mCustomScrollBox.stop().animate({scrollLeft:scrollToPos},$this.data("scrollInertia"),$this.data("scrollEasing"),function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   644
							if(options.callback){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   645
								$this.mCustomScrollbar("callbacks",mCustomScrollBox,mCSB_container);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   646
							}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   647
						});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   648
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   649
						mCustomScrollBox.stop().animate({scrollTop:scrollToPos},$this.data("scrollInertia"),$this.data("scrollEasing"),function(){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   650
							if(options.callback){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   651
								$this.mCustomScrollbar("callbacks",mCustomScrollBox,mCSB_container);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   652
							}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   653
						});
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   654
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   655
				}else{ /*not touch device*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   656
					if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   657
						if(scrollToPos>=mCSB_draggerContainer.width()-mCSB_dragger.width()){ /*max dragger position is bottom*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   658
							scrollToPos=mCSB_draggerContainer.width()-mCSB_dragger.width();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   659
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   660
						mCSB_dragger.css("left",scrollToPos);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   661
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   662
						if(scrollToPos>=mCSB_draggerContainer.height()-mCSB_dragger.height()){ /*max dragger position is bottom*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   663
							scrollToPos=mCSB_draggerContainer.height()-mCSB_dragger.height();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   664
						}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   665
						mCSB_dragger.css("top",scrollToPos);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   666
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   667
					if(options.callback){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   668
						$this.mCustomScrollbar("scroll");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   669
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   670
						$this.mCustomScrollbar("scroll",true);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   671
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   672
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   673
					
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   674
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   675
		},
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   676
		callbacks:function(mCustomScrollBox,mCSB_container){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   677
			var $this=$(this);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   678
			if(!$(document).data("mCS-is-touch-device")){ /*not touch device*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   679
				if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   680
					var mCSB_containerX=Math.round(mCSB_container.position().left);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   681
					if(mCSB_containerX<0 && mCSB_containerX<=mCustomScrollBox.width()-mCSB_container.outerWidth()+$this.data("onTotalScroll-Offset")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   682
						$this.data("onTotalScroll-Callback").call();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   683
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   684
						$this.data("onScroll-Callback").call();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   685
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   686
				}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   687
					var mCSB_containerY=Math.round(mCSB_container.position().top);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   688
					if(mCSB_containerY<0 && mCSB_containerY<=mCustomScrollBox.height()-mCSB_container.outerHeight()+$this.data("onTotalScroll-Offset")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   689
						$this.data("onTotalScroll-Callback").call();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   690
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   691
						$this.data("onScroll-Callback").call();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   692
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   693
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   694
			}else{ /*is touch device*/
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   695
				if($this.data("horizontalScroll")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   696
					var mCustomScrollBoxX=Math.round(mCustomScrollBox.scrollLeft());
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   697
					if(mCustomScrollBoxX>0 && mCustomScrollBoxX>=mCSB_container.outerWidth()-$this.width()-$this.data("onTotalScroll-Offset")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   698
						$this.data("onTotalScroll-Callback").call();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   699
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   700
						$this.data("onScroll-Callback").call();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   701
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   702
				}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   703
					var mCustomScrollBoxY=Math.round(mCustomScrollBox.scrollTop());
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   704
					if(mCustomScrollBoxY>0 && mCustomScrollBoxY>=mCSB_container.outerHeight()-$this.height()-$this.data("onTotalScroll-Offset")){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   705
						$this.data("onTotalScroll-Callback").call();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   706
					}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   707
						$this.data("onScroll-Callback").call();
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   708
					}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   709
				}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   710
			}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   711
		}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   712
	}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   713
	$.fn.mCustomScrollbar=function(method){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   714
		if(methods[method]){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   715
			return methods[method].apply(this,Array.prototype.slice.call(arguments,1));
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   716
		}else if(typeof method==="object" || !method){
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   717
			return methods.init.apply(this,arguments);
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   718
		}else{
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   719
			$.error("Method "+method+" does not exist");
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   720
		}
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   721
	};
ca1b8c0fbe35 first commit. Integ from AC
cavaliet
parents:
diff changeset
   722
})(jQuery);