/*
 * jScrollPane - v2.0.0beta11 - 2011-07-04
 * http://jscrollpane.kelvinluck.com/
 *
 * Copyright (c) 2010 Kelvin Luck
 * Dual licensed under the MIT and GPL licenses.
 */
(function(b, a, c) {
	b.fn.jScrollPane = function(e) {
		function d(D, O) {
			var az, Q = this, Y, ak, v, am, T, Z, y, q, aA, aF, av, i, I, h, j, aa, U, aq, X, t, A, ar, af, an, G, l, au, ay, x, aw, aI, f, L, aj = true, P = true, aH = false, k = false, ap = D.clone(false, false).empty(), ac = b.fn.mwheelIntent ? "mwheelIntent.jsp" : "mousewheel.jsp";
			aI = D.css("paddingTop") + " " + D.css("paddingRight") + " " + D.css("paddingBottom") + " " + D.css("paddingLeft");
			f = (parseInt(D.css("paddingLeft"), 10) || 0) + (parseInt(D.css("paddingRight"), 10) || 0);
			function at(aR) {
				var aM, aO, aN, aK, aJ, aQ, aP = false, aL = false;
				az = aR;
				if(Y === c) {
					aJ = D.scrollTop();
					aQ = D.scrollLeft();
					D.css({
						overflow : "hidden",
						padding : 0
					});
					ak = D.innerWidth() + f;
					v = D.innerHeight();
					D.width(ak);
					Y = b('<div class="jspPane" />').css("padding", aI).append(D.children());
					am = b('<div class="jspContainer" />').css({
						width : ak + "px",
						height : v + "px"
					}).append(Y).appendTo(D)
				} else {
					D.css("width", "");
					aP = az.stickToBottom && K();
					aL = az.stickToRight && B();
					aK = D.innerWidth() + f != ak || D.outerHeight() != v;
					if(aK) {
						ak = D.innerWidth() + f;
						v = D.innerHeight();
						am.css({
							width : ak + "px",
							height : v + "px"
						})
					}
					if(!aK && L == T && Y.outerHeight() == Z) {
						D.width(ak);
						return
					}
					L = T;
					Y.css("width", "");
					D.width(ak);
					am.find(">.jspVerticalBar,>.jspHorizontalBar").remove().end()
				}
				Y.css("overflow", "auto");
				if(aR.contentWidth) {
					T = aR.contentWidth
				} else {
					T = Y[0].scrollWidth
				}
				Z = Y[0].scrollHeight;
				Y.css("overflow", "");
				y = T / ak;
				q = Z / v;
				aA = q > 1;
				aF = y > 1;
				if(!(aF || aA)) {
					D.removeClass("jspScrollable");
					Y.css({
						top : 0,
						width : am.width() - f
					});
					n();
					E();
					R();
					w();
					ai()
				} else {
					D.addClass("jspScrollable");
					aM = az.maintainPosition && (I || aa);
					if(aM) {
						aO = aD();
						aN = aB()
					}aG();
					z();
					F();
					if(aM) {N( aL ? (T - ak) : aO, false);
						M( aP ? (Z - v) : aN, false)
					}J();
					ag();
					ao();
					if(az.enableKeyboardNavigation) {S()
					}
					if(az.clickOnTrack) {p()
					}C();
					if(az.hijackInternalLinks) {m()
					}
				}
				if(az.autoReinitialise && !aw) {
					aw = setInterval(function() {at(az)
					}, az.autoReinitialiseDelay)
				} else {
					if(!az.autoReinitialise && aw) {clearInterval(aw)
					}
				}aJ && D.scrollTop(0) && M(aJ, false);
				aQ && D.scrollLeft(0) && N(aQ, false);
				D.trigger("jsp-initialised", [aF || aA])
			}

			function aG() {
				if(aA) {
					am.append(b('<div class="jspVerticalBar" />').append(b('<div class="jspCap jspCapTop" />'), b('<div class="jspTrack" />').append(b('<div class="jspDrag" />').append(b('<div class="jspDragTop" />'),b('<div class="jspDragMiddle" />'), b('<div class="jspDragBottom" />'))), b('<div class="jspCap jspCapBottom" />')));
					U = am.find(">.jspVerticalBar");
					aq = U.find(">.jspTrack");
					av = aq.find(">.jspDrag");
					if(az.showArrows) {
						ar = b('<a class="jspArrow jspArrowUp" />').bind("mousedown.jsp", aE(0, -1)).bind("click.jsp", aC);
						af = b('<a class="jspArrow jspArrowDown" />').bind("mousedown.jsp", aE(0, 1)).bind("click.jsp", aC);
						if(az.arrowScrollOnHover) {
							ar.bind("mouseover.jsp", aE(0, -1, ar));
							af.bind("mouseover.jsp", aE(0, 1, af))
						}al(aq, az.verticalArrowPositions, ar, af)
					}
					t = v;
					am.find(">.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow").each(function() {
						t -= b(this).outerHeight()
					});
					av.hover(function() {
						av.addClass("jspHover")
					}, function() {
						av.removeClass("jspHover")
					}).bind("mousedown.jsp", function(aJ) {
						b("html").bind("dragstart.jsp selectstart.jsp", aC);
						av.addClass("jspActive");
						var s = aJ.pageY - av.position().top;
						b("html").bind("mousemove.jsp", function(aK) {V(aK.pageY - s, false)
						}).bind("mouseup.jsp mouseleave.jsp", ax);
						return false
					});
					o()
				}
			}

			function o() {
				aq.height(t + "px");
				I = 0;
				X = az.verticalGutter + aq.outerWidth();
				Y.width(ak - X - f);
				try {
					if(U.position().left === 0) {
						Y.css("margin-left", X + "px")
					}
				} catch(s) {
				}
			}

			function z() {
				if(aF) {
					am.append(b('<div class="jspHorizontalBar" />').append(b('<div class="jspCap jspCapLeft" />'), b('<div class="jspTrack" />').append(b('<div class="jspDrag" />').append(b('<div class="jspDragLeft" />'),b('<div class="jspDragMiddle" />'), b('<div class="jspDragRight" />'))), b('<div class="jspCap jspCapRight" />')));
					an = am.find(">.jspHorizontalBar");
					G = an.find(">.jspTrack");
					h = G.find(">.jspDrag");
					if(az.showArrows) {
						ay = b('<a class="jspArrow jspArrowLeft" />').bind("mousedown.jsp", aE(-1, 0)).bind("click.jsp", aC);
						x = b('<a class="jspArrow jspArrowRight" />').bind("mousedown.jsp", aE(1, 0)).bind("click.jsp", aC);
						if(az.arrowScrollOnHover) {
							ay.bind("mouseover.jsp", aE(-1, 0, ay));
							x.bind("mouseover.jsp", aE(1, 0, x))
						}al(G, az.horizontalArrowPositions, ay, x)
					}
					h.hover(function() {
						h.addClass("jspHover")
					}, function() {
						h.removeClass("jspHover")
					}).bind("mousedown.jsp", function(aJ) {
						b("html").bind("dragstart.jsp selectstart.jsp", aC);
						h.addClass("jspActive");
						var s = aJ.pageX - h.position().left;
						b("html").bind("mousemove.jsp", function(aK) {W(aK.pageX - s, false)
						}).bind("mouseup.jsp mouseleave.jsp", ax);
						return false
					});
					l = am.innerWidth();
					ah()
				}
			}

			function ah() {
				am.find(">.jspHorizontalBar>.jspCap:visible,>.jspHorizontalBar>.jspArrow").each(function() {
					l -= b(this).outerWidth()
				});
				G.width(l + "px");
				aa = 0
			}

			function F() {
				if(aF && aA) {
					var aJ = G.outerHeight(), s = aq.outerWidth();
					t -= aJ;
					b(an).find(">.jspCap:visible,>.jspArrow").each(function() {
						l += b(this).outerWidth()
					});
					l -= s;
					v -= s;
					ak -= aJ;
					G.parent().append(b('<div class="jspCorner" />').css("width", aJ + "px"));
					o();
					ah()
				}
				if(aF) {
					Y.width((am.outerWidth() - f) + "px")
				}
				Z = Y.outerHeight();
				q = Z / v;
				if(aF) {
					au = Math.ceil(1 / y * l);
					if(au > az.horizontalDragMaxWidth) {
						au = az.horizontalDragMaxWidth
					} else {
						if(au < az.horizontalDragMinWidth) {
							au = az.horizontalDragMinWidth
						}
					}
					h.width(au + "px");
					j = l - au;
					ae(aa)
				}
				if(aA) {
					A = Math.ceil(1 / q * t);
					if(A > az.verticalDragMaxHeight) {
						A = az.verticalDragMaxHeight
					} else {
						if(A < az.verticalDragMinHeight) {
							A = az.verticalDragMinHeight
						}
					}
					av.height(A + "px");
					i = t - A;
					ad(I)
				}
			}

			function al(aK, aM, aJ, s) {
				var aO = "before", aL = "after", aN;
				if(aM == "os") {
					aM = /Mac/.test(navigator.platform) ? "after" : "split"
				}
				if(aM == aO) {
					aL = aM
				} else {
					if(aM == aL) {
						aO = aM;
						aN = aJ;
						aJ = s;
						s = aN
					}
				}aK[aO](aJ)[aL](s)
			}

			function aE(aJ, s, aK) {
				return function() {H(aJ, s, this, aK);
					this.blur();
					return false
				}
			}

			function H(aM, aL, aP, aO) {
				aP = b(aP).addClass("jspActive");
				var aN, aK, aJ = true, s = function() {
					if(aM !== 0) {
						Q.scrollByX(aM * az.arrowButtonSpeed)
					}
					if(aL !== 0) {
						Q.scrollByY(aL * az.arrowButtonSpeed)
					}
					aK = setTimeout(s, aJ ? az.initialDelay : az.arrowRepeatFreq);
					aJ = false
				};
				s();
				aN = aO ? "mouseout.jsp" : "mouseup.jsp";
				aO = aO || b("html");
				aO.bind(aN, function() {
					aP.removeClass("jspActive");
					aK && clearTimeout(aK);
					aK = null;
					aO.unbind(aN)
				})
			}

			function p() {w();
				if(aA) {
					aq.bind("mousedown.jsp", function(aO) {
						if(aO.originalTarget === c || aO.originalTarget == aO.currentTarget) {
							var aM = b(this), aP = aM.offset(), aN = aO.pageY - aP.top - I, aK, aJ = true, s = function() {
								var aS = aM.offset(), aT = aO.pageY - aS.top - A / 2, aQ = v * az.scrollPagePercent, aR = i * aQ / (Z - v);
								if(aN < 0) {
									if(I - aR > aT) {
										Q.scrollByY(-aQ)
									} else {V(aT)
									}
								} else {
									if(aN > 0) {
										if(I + aR < aT) {
											Q.scrollByY(aQ)
										} else {V(aT)
										}
									} else {aL();
										return
									}
								}
								aK = setTimeout(s, aJ ? az.initialDelay : az.trackClickRepeatFreq);
								aJ = false
							}, aL = function() {
								aK && clearTimeout(aK);
								aK = null;
								b(document).unbind("mouseup.jsp", aL)
							};
							s();
							b(document).bind("mouseup.jsp", aL);
							return false
						}
					})
				}
				if(aF) {
					G.bind("mousedown.jsp", function(aO) {
						if(aO.originalTarget === c || aO.originalTarget == aO.currentTarget) {
							var aM = b(this), aP = aM.offset(), aN = aO.pageX - aP.left - aa, aK, aJ = true, s = function() {
								var aS = aM.offset(), aT = aO.pageX - aS.left - au / 2, aQ = ak * az.scrollPagePercent, aR = j * aQ / (T - ak);
								if(aN < 0) {
									if(aa - aR > aT) {
										Q.scrollByX(-aQ)
									} else {W(aT)
									}
								} else {
									if(aN > 0) {
										if(aa + aR < aT) {
											Q.scrollByX(aQ)
										} else {W(aT)
										}
									} else {aL();
										return
									}
								}
								aK = setTimeout(s, aJ ? az.initialDelay : az.trackClickRepeatFreq);
								aJ = false
							}, aL = function() {
								aK && clearTimeout(aK);
								aK = null;
								b(document).unbind("mouseup.jsp", aL)
							};
							s();
							b(document).bind("mouseup.jsp", aL);
							return false
						}
					})
				}
			}

			function w() {
				if(G) {
					G.unbind("mousedown.jsp")
				}
				if(aq) {
					aq.unbind("mousedown.jsp")
				}
			}

			function ax() {
				b("html").unbind("dragstart.jsp selectstart.jsp mousemove.jsp mouseup.jsp mouseleave.jsp");
				if(av) {
					av.removeClass("jspActive")
				}
				if(h) {
					h.removeClass("jspActive")
				}
			}

			function V(s, aJ) {
				if(!aA) {
					return
				}
				if(s < 0) {
					s = 0
				} else {
					if(s > i) {
						s = i
					}
				}
				if(aJ === c) {
					aJ = az.animateScroll
				}
				if(aJ) {
					Q.animate(av, "top", s, ad)
				} else {
					av.css("top", s);
					ad(s)
				}
			}

			function ad(aJ) {
				if(aJ === c) {
					aJ = av.position().top
				}
				am.scrollTop(0);
				I = aJ;
				var aM = I === 0, aK = I == i, aL = aJ / i, s = -aL * (Z - v);
				if(aj != aM || aH != aK) {
					aj = aM;
					aH = aK;
					D.trigger("jsp-arrow-change", [aj, aH, P, k])
				}u(aM, aK);
				Y.css("top", s);
				D.trigger("jsp-scroll-y", [-s, aM, aK]).trigger("scroll")
			}

			function W(aJ, s) {
				if(!aF) {
					return
				}
				if(aJ < 0) {
					aJ = 0
				} else {
					if(aJ > j) {
						aJ = j
					}
				}
				if(s === c) {
					s = az.animateScroll
				}
				if(s) {
					Q.animate(h, "left", aJ, ae)
				} else {
					h.css("left", aJ);
					ae(aJ)
				}
			}

			function ae(aJ) {
				if(aJ === c) {
					aJ = h.position().left
				}
				am.scrollTop(0);
				aa = aJ;
				var aM = aa === 0, aL = aa == j, aK = aJ / j, s = -aK * (T - ak);
				if(P != aM || k != aL) {
					P = aM;
					k = aL;
					D.trigger("jsp-arrow-change", [aj, aH, P, k])
				}r(aM, aL);
				Y.css("left", s);
				D.trigger("jsp-scroll-x", [-s, aM, aL]).trigger("scroll")
			}

			function u(aJ, s) {
				if(az.showArrows) {ar[aJ?"addClass":"removeClass"]("jspDisabled");
					af[s?"addClass":"removeClass"]("jspDisabled")
				}
			}

			function r(aJ, s) {
				if(az.showArrows) {ay[aJ?"addClass":"removeClass"]("jspDisabled");
					x[s?"addClass":"removeClass"]("jspDisabled")
				}
			}

			function M(s, aJ) {
				var aK = s / (Z - v);
				V(aK * i, aJ)
			}

			function N(aJ, s) {
				var aK = aJ / (T - ak);
				W(aK * j, s)
			}

			function ab(aW, aR, aK) {
				var aO, aL, aM, s = 0, aV = 0, aJ, aQ, aP, aT, aS, aU;
				try {
					aO = b(aW)
				} catch(aN) {
					return
				}
				aL = aO.outerHeight();
				aM = aO.outerWidth();
				am.scrollTop(0);
				am.scrollLeft(0);
				while(!aO.is(".jspPane")) {
					s += aO.position().top;
					aV += aO.position().left;
					aO = aO.offsetParent();
					if(/^body|html$/i.test(aO[0].nodeName)) {
						return
					}
				}
				aJ = aB();
				aP = aJ + v;
				if(s < aJ || aR) {
					aS = s - az.verticalGutter
				} else {
					if(s + aL > aP) {
						aS = s - v + aL + az.verticalGutter
					}
				}
				if(aS) {M(aS, aK)
				}
				aQ = aD();
				aT = aQ + ak;
				if(aV < aQ || aR) {
					aU = aV - az.horizontalGutter
				} else {
					if(aV + aM > aT) {
						aU = aV - ak + aM + az.horizontalGutter
					}
				}
				if(aU) {N(aU, aK)
				}
			}

			function aD() {
				return -Y.position().left
			}

			function aB() {
				return -Y.position().top
			}

			function K() {
				var s = Z - v;
				return (s > 20) && (s - aB() < 10)
			}

			function B() {
				var s = T - ak;
				return (s > 20) && (s - aD() < 10)
			}

			function ag() {
				am.unbind(ac).bind(ac, function(aM, aN, aL, aJ) {
					var aK = aa, s = I;
					Q.scrollBy(aL * az.mouseWheelSpeed, -aJ * az.mouseWheelSpeed, false);
					return aK == aa && s == I
				})
			}

			function n() {
				am.unbind(ac)
			}

			function aC() {
				return false
			}

			function J() {
				Y.find(":input,a").unbind("focus.jsp").bind("focus.jsp", function(s) {ab(s.target, false)
				})
			}

			function E() {
				Y.find(":input,a").unbind("focus.jsp")
			}

			function S() {
				var s, aJ, aL = [];
				aF && aL.push(an[0]);
				aA && aL.push(U[0]);
				Y.focus(function() {
					D.focus()
				});
				D.attr("tabindex", 0).unbind("keydown.jsp keypress.jsp").bind("keydown.jsp", function(aO) {
					if(aO.target !== this && !(aL.length && b(aO.target).closest(aL).length)) {
						return
					}
					var aN = aa, aM = I;
					switch(aO.keyCode) {
						case 40:
						case 38:
						case 34:
						case 32:
						case 33:
						case 39:
						case 37:
							s = aO.keyCode;
							aK();
							break;
						case 35:
							M(Z - v);
							s = null;
							break;
						case 36:
							M(0);
							s = null;
							break
					}
					aJ = aO.keyCode == s && aN != aa || aM != I;
					return !aJ
				}).bind("keypress.jsp", function(aM) {
					if(aM.keyCode == s) {aK()
					}
					return !aJ
				});
				if(az.hideFocus) {
					D.css("outline", "none");
					if("hideFocus" in am[0]) {
						D.attr("hideFocus", true)
					}
				} else {
					D.css("outline", "");
					if("hideFocus" in am[0]) {
						D.attr("hideFocus", false)
					}
				}
				function aK() {
					var aN = aa, aM = I;
					switch(s) {
						case 40:
							Q.scrollByY(az.keyboardSpeed, false);
							break;
						case 38:
							Q.scrollByY(-az.keyboardSpeed, false);
							break;
						case 34:
						case 32:
							Q.scrollByY(v * az.scrollPagePercent, false);
							break;
						case 33:
							Q.scrollByY(-v * az.scrollPagePercent, false);
							break;
						case 39:
							Q.scrollByX(az.keyboardSpeed, false);
							break;
						case 37:
							Q.scrollByX(-az.keyboardSpeed, false);
							break
					}
					aJ = aN != aa || aM != I;
					return aJ
				}

			}

			function R() {
				D.attr("tabindex", "-1").removeAttr("tabindex").unbind("keydown.jsp keypress.jsp")
			}

			function C() {
				if(location.hash && location.hash.length > 1) {
					var aL, aJ, aK = escape(location.hash);
					try {
						aL = b(aK)
					} catch(s) {
						return
					}
					if(aL.length && Y.find(aK)) {
						if(am.scrollTop() === 0) {
							aJ = setInterval(function() {
								if(am.scrollTop() > 0) {ab(aK, true);
									b(document).scrollTop(am.position().top);
									clearInterval(aJ)
								}
							}, 50)
						} else {ab(aK, true);
							b(document).scrollTop(am.position().top)
						}
					}
				}
			}

			function ai() {
				b("a.jspHijack").unbind("click.jsp-hijack").removeClass("jspHijack")
			}

			function m() {ai();
				b("a[href^=#]").addClass("jspHijack").bind("click.jsp-hijack", function() {
					var s = this.href.split("#"), aJ;
					if(s.length > 1) {
						aJ = s[1];
						if(aJ.length > 0 && Y.find("#" + aJ).length > 0) {ab("#" + aJ, true);
							return false
						}
					}
				})
			}

			function ao() {
				var aK, aJ, aM, aL, aN, s = false;
				am.unbind("touchstart.jsp touchmove.jsp touchend.jsp click.jsp-touchclick").bind("touchstart.jsp", function(aO) {
					var aP = aO.originalEvent.touches[0];
					aK = aD();
					aJ = aB();
					aM = aP.pageX;
					aL = aP.pageY;
					aN = false;
					s = true
				}).bind("touchmove.jsp", function(aR) {
					if(!s) {
						return
					}
					var aQ = aR.originalEvent.touches[0], aP = aa, aO = I;
					Q.scrollTo(aK + aM - aQ.pageX, aJ + aL - aQ.pageY);
					aN = aN || Math.abs(aM - aQ.pageX) > 5 || Math.abs(aL - aQ.pageY) > 5;
					return aP == aa && aO == I
				}).bind("touchend.jsp", function(aO) {
					s = false
				}).bind("click.jsp-touchclick", function(aO) {
					if(aN) {
						aN = false;
						return false
					}
				})
			}

			function g() {
				var s = aB(), aJ = aD();
				D.removeClass("jspScrollable").unbind(".jsp");
				D.replaceWith(ap.append(Y.children()));
				ap.scrollTop(s);
				ap.scrollLeft(aJ)
			}
			b.extend(Q, {
				reinitialise : function(aJ) {
					aJ = b.extend({}, az, aJ);
					at(aJ)
				},
				scrollToElement : function(aK, aJ, s) {ab(aK, aJ, s)
				},
				scrollTo : function(aK, s, aJ) {N(aK, aJ);
					M(s, aJ)
				},
				scrollToX : function(aJ, s) {N(aJ, s)
				},
				scrollToY : function(s, aJ) {M(s, aJ)
				},
				scrollToPercentX : function(aJ, s) {N(aJ * (T - ak), s)
				},
				scrollToPercentY : function(aJ, s) {M(aJ * (Z - v), s)
				},
				scrollBy : function(aJ, s, aK) {
					Q.scrollByX(aJ, aK);
					Q.scrollByY(s, aK)
				},
				scrollByX : function(s, aK) {
					var aJ = aD() + Math[s<0?"floor":"ceil"](s), aL = aJ / (T - ak);
					W(aL * j, aK)
				},
				scrollByY : function(s, aK) {
					var aJ = aB() + Math[s<0?"floor":"ceil"](s), aL = aJ / (Z - v);
					V(aL * i, aK)
				},
				positionDragX : function(s, aJ) {W(s, aJ)
				},
				positionDragY : function(aJ, s) {V(aJ, s)
				},
				animate : function(aJ, aM, s, aL) {
					var aK = {};
					aK[aM] = s;
					aJ.animate(aK, {
						duration : az.animateDuration,
						easing : az.animateEase,
						queue : false,
						step : aL
					})
				},
				getContentPositionX : function() {
					return aD()
				},
				getContentPositionY : function() {
					return aB()
				},
				getContentWidth : function() {
					return T
				},
				getContentHeight : function() {
					return Z
				},
				getPercentScrolledX : function() {
					return aD() / (T - ak)
				},
				getPercentScrolledY : function() {
					return aB() / (Z - v)
				},
				getIsScrollableH : function() {
					return aF
				},
				getIsScrollableV : function() {
					return aA
				},
				getContentPane : function() {
					return Y
				},
				scrollToBottom : function(s) {V(i, s)
				},
				hijackInternalLinks : function() {m()
				},
				destroy : function() {g()
				}
			});
			at(O)
		}

		e = b.extend({}, b.fn.jScrollPane.defaults, e);
		b.each(["mouseWheelSpeed", "arrowButtonSpeed", "trackClickSpeed", "keyboardSpeed"], function() {
			e[this] = e[this] || e.speed
		});
		return this.each(function() {
			var f = b(this), g = f.data("jsp");
			if(g) {
				g.reinitialise(e)
			} else {
				g = new d(f, e);
				f.data("jsp", g)
			}
		})
	};
	b.fn.jScrollPane.defaults = {
		showArrows : false,
		maintainPosition : true,
		stickToBottom : false,
		stickToRight : false,
		clickOnTrack : true,
		autoReinitialise : false,
		autoReinitialiseDelay : 500,
		verticalDragMinHeight : 0,
		verticalDragMaxHeight : 99999,
		horizontalDragMinWidth : 0,
		horizontalDragMaxWidth : 99999,
		contentWidth : c,
		animateScroll : false,
		animateDuration : 300,
		animateEase : "linear",
		hijackInternalLinks : false,
		verticalGutter : 4,
		horizontalGutter : 4,
		mouseWheelSpeed : 0,
		arrowButtonSpeed : 0,
		arrowRepeatFreq : 50,
		arrowScrollOnHover : false,
		trackClickSpeed : 0,
		trackClickRepeatFreq : 70,
		verticalArrowPositions : "split",
		horizontalArrowPositions : "split",
		enableKeyboardNavigation : true,
		hideFocus : false,
		keyboardSpeed : 0,
		initialDelay : 300,
		speed : 30,
		scrollPagePercent : 0.8
	}
})(jQuery, this);

