(function(n){function t(t,i){return this.$target=n(t),this.opts=n.extend({},s,i),this.isOpen===undefined&&this._init(),this}var u,f,e,o,i,r,s={loadingNotice:"Loading image",errorNotice:"The image could not be loaded",preventClicks:!0,onShow:undefined,onHide:undefined};t.prototype._init=function(){var t=this;this.$link=this.$target.find("a"),this.$image=this.$target.find("img"),this.$flyout=n('<div class="easyzoom-flyout" />'),this.$notice=n('<div class="easyzoom-notice" />'),this.removeNotices();this.$target.hammer().on("doubletap.easyzoom",function(n){Modernizr.touch&&(n.preventDefault(),t.show(n))}).on("click.easyzoom",function(n){Modernizr.touch||t.isOpen||(n.preventDefault(),t.show(n),t.justOpened=!0)}).on("mousemove.easyzoom touchmove.easyzoom",function(n){t.isOpen&&(n.preventDefault(),t._move(n))}).on("click.easyzoom",function(n){Modernizr.touch||!t.isOpen||t.justOpened||(n.preventDefault(),t.hide()),t.justOpened=!1}).on("touchend.easyzoom",function(){Modernizr.touch&&t.isOpen&&t.hide()});if(this.opts.preventClicks)this.$target.on("click.easyzoom","a",function(n){n.preventDefault()})},t.prototype.show=function(n){var t,i,r,s,h=this;if(!this.isReady){this._load(this.$link.attr("href"),function(){h.show(n)});return}this.$target.append(this.$flyout),t=this.$target.width(),i=this.$target.height(),r=this.$flyout.width(),s=this.$flyout.height(),u=this.$zoom.width()-r,f=this.$zoom.height()-s,e=u/t,o=f/i,this.$zoom.css({top:this.$zoom.height()/-2+i/2,left:this.$zoom.width()/-2+t/2}),this.isOpen=!0,this.opts.onShow&&this.opts.onShow.call(this)},t.prototype._load=function(t,i){var r=this,u=new Image;this.$target.addClass("is-loading").append(this.$notice.text(this.opts.loadingNotice)),this.$zoom=n(u),u.onerror=function(){r.removeNotices(),r.$target.removeClass("is-loading").addClass("is-error").append(r.$notice.text(r.opts.errorNotice))},u.onload=function(){u.width!==0&&(r.isReady=!0,r.$notice.detach(),r.$flyout.append(r.$zoom),r.$target.removeClass("is-loading").addClass("is-ready"),i())},u.style.position="absolute",u.src=t},t.prototype._move=function(n){var t;n.type.indexOf("touch")===0?(t=n.touches||n.originalEvent.touches,i=t[0].pageX,r=t[0].pageY):(i=n.pageX||i,r=n.pageY||r);var u=this.$target.offset(),f=r-u.top,s=i-u.left,h=f*o,c=s*e;this.$zoom.css({top:""+Math.ceil(h)*-1+"px",left:""+Math.ceil(c)*-1+"px"})},t.prototype.hide=function(){this.isOpen&&(this.$flyout.detach(),this.isOpen=!1,this.opts.onHide&&this.opts.onHide.call(this))},t.prototype.teardown=function(){this.hide(),this.$target.removeClass("is-loading is-ready is-error").off(".easyzoom"),delete this.$link,delete this.$zoom,delete this.$image,delete this.$notice,delete this.$flyout,delete this.isOpen,delete this.isReady},t.prototype.removeNotices=function(){this.$target.find("div.easyzoom-notice").remove()},n.fn.easyZoom=function(i){return this.each(function(){var r=n.data(this,"easyZoom");r?r.isOpen===undefined&&r._init():n.data(this,"easyZoom",new t(this,i))})},typeof define=="function"&&define.amd?define(function(){return t}):typeof module!="undefined"&&module.exports&&(module.exports=t)})(jQuery);
/*! Hammer.JS - v1.0.7dev - 2014-02-18
 * http://eightmedia.github.com/hammer.js
 *
 * Copyright (c) 2014 Jorik Tangelder <j.tangelder@gmail.com>;
 * Licensed under the MIT license */
(function(n,t){"use strict";function e(){if(!i.READY){i.event.determineEventTypes(),i.utils.each(i.gestures,function(n){i.detection.register(n)});i.event.onTouch(i.DOCUMENT,i.EVENT_MOVE,i.detection.detect);i.event.onTouch(i.DOCUMENT,i.EVENT_END,i.detection.detect);i.READY=!0}}var i=function(n,t){return new i.Instance(n,t||{})};i.defaults={stop_browser_behavior:{userSelect:"none",touchAction:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},i.HAS_POINTEREVENTS=n.navigator.pointerEnabled||n.navigator.msPointerEnabled,i.HAS_TOUCHEVENTS="ontouchstart"in n,i.MOBILE_REGEX=/mobile|tablet|ip(ad|hone|od)|android|silk/i,i.NO_MOUSEEVENTS=i.HAS_TOUCHEVENTS&&n.navigator.userAgent.match(i.MOBILE_REGEX),i.EVENT_TYPES={},i.DIRECTION_DOWN="down",i.DIRECTION_LEFT="left",i.DIRECTION_UP="up",i.DIRECTION_RIGHT="right",i.POINTER_MOUSE="mouse",i.POINTER_TOUCH="touch",i.POINTER_PEN="pen",i.UPDATE_VELOCITY_INTERVAL=20,i.EVENT_START="start",i.EVENT_MOVE="move",i.EVENT_END="end",i.DOCUMENT=n.document,i.plugins=i.plugins||{},i.gestures=i.gestures||{},i.READY=!1,i.utils={extend:function(n,i,r){for(var u in i)n[u]!==t&&r||(n[u]=i[u]);return n},each:function(n,i,r){var u,f;if("forEach"in n)n.forEach(i,r);else if(n.length!==t){for(u=0,f=n.length;u<f;u++)if(i.call(r,n[u],u,n)===!1)return}else for(u in n)if(n.hasOwnProperty(u)&&i.call(r,n[u],u,n)===!1)return},hasParent:function(n,t){while(n){if(n==t)return!0;n=n.parentNode}return!1},getCenter:function(n){var t=[],r=[];return i.utils.each(n,function(n){t.push(typeof n.clientX!="undefined"?n.clientX:n.pageX),r.push(typeof n.clientY!="undefined"?n.clientY:n.pageY)}),{pageX:(Math.min.apply(Math,t)+Math.max.apply(Math,t))/2,pageY:(Math.min.apply(Math,r)+Math.max.apply(Math,r))/2}},getVelocity:function(n,t,i){return{x:Math.abs(t/n)||0,y:Math.abs(i/n)||0}},getAngle:function(n,t){var i=t.pageY-n.pageY,r=t.pageX-n.pageX;return Math.atan2(i,r)*180/Math.PI},getDirection:function(n,t){var r=Math.abs(n.pageX-t.pageX),u=Math.abs(n.pageY-t.pageY);return r>=u?n.pageX-t.pageX>0?i.DIRECTION_LEFT:i.DIRECTION_RIGHT:n.pageY-t.pageY>0?i.DIRECTION_UP:i.DIRECTION_DOWN},getDistance:function(n,t){var i=t.pageX-n.pageX,r=t.pageY-n.pageY;return Math.sqrt(i*i+r*r)},getScale:function(n,t){return n.length>=2&&t.length>=2?this.getDistance(t[0],t[1])/this.getDistance(n[0],n[1]):1},getRotation:function(n,t){return n.length>=2&&t.length>=2?this.getAngle(t[1],t[0])-this.getAngle(n[1],n[0]):0},isVertical:function(n){return n==i.DIRECTION_UP||n==i.DIRECTION_DOWN},stopDefaultBrowserBehavior:function(n,t){t&&n&&n.style&&(i.utils.each(["webkit","khtml","moz","Moz","ms","o",""],function(r){i.utils.each(t,function(t,i){r&&(i=r+i.substring(0,1).toUpperCase()+i.substring(1)),i in n.style&&(n.style[i]=t)})}),t.userSelect=="none"&&(n.onselectstart=function(){return!1}),t.userDrag=="none"&&(n.ondragstart=function(){return!1}))},startDefaultBrowserBehavior:function(n,t){t&&n&&n.style&&(i.utils.each(["webkit","khtml","moz","Moz","ms","o",""],function(r){i.utils.each(t,function(t,i){r&&(i=r+i.substring(0,1).toUpperCase()+i.substring(1)),i in n.style&&(n.style[i]="")})}),t.userSelect=="none"&&(n.onselectstart=null),t.userDrag=="none"&&(n.ondragstart=null))}},i.Instance=function(n,t){var r=this;return e(),this.element=n,this.enabled=!0,this.options=i.utils.extend(i.utils.extend({},i.defaults),t||{}),this.options.stop_browser_behavior&&i.utils.stopDefaultBrowserBehavior(this.element,this.options.stop_browser_behavior),this._eventStartHandler=i.event.onTouch(n,i.EVENT_START,function(n){r.enabled&&i.detection.startDetect(r,n)}),this._eventHandler=[],this},i.Instance.prototype={on:function(n,t){var r=n.split(" ");return i.utils.each(r,function(n){this.element.addEventListener(n,t,!1),this._eventHandler.push({gesture:n,handler:t})},this),this},off:function(n,t){var r=n.split(" ");return i.utils.each(r,function(n){this.element.removeEventListener(n,t,!1);var r=-1;i.utils.each(this._eventHandler,function(i,u){r===-1&&i.gesture===n&&i.handler===t&&(r=u)},this),r>-1&&this._eventHandler.splice(r,1)},this),this},trigger:function(n,t){var r,u;return t||(t={}),r=i.DOCUMENT.createEvent("Event"),r.initEvent(n,!0,!0),r.gesture=t,u=this.element,i.utils.hasParent(t.target,u)&&(u=t.target),u.dispatchEvent(r),this},enable:function(n){return this.enabled=n,this},dispose:function(){return this.options.stop_browser_behavior&&i.utils.startDefaultBrowserBehavior(this.element,this.options.stop_browser_behavior),i.utils.each(this._eventHandler,function(n){this.element.removeEventListener(n.gesture,n.handler,!1)},this),this._eventHandler.length=0,i.event.unbindDom(this.element,i.EVENT_TYPES[i.EVENT_START],this._eventStartHandler),this}};var r=null,u=!1,f=!1;i.event={bindDom:function(n,t,r){var u=t.split(" ");i.utils.each(u,function(t){n.addEventListener(t,r,!1)})},unbindDom:function(n,t,r){var u=t.split(" ");i.utils.each(u,function(t){n.removeEventListener(t,r,!1)})},onTouch:function(n,t,e){var o=this,s=function(s){var c=s.type.toLowerCase(),h;c.match(/mouse/)&&f||(c.match(/touch/)||c.match(/pointerdown/)||c.match(/mouse/)&&s.which===1?u=!0:c.match(/mouse/)&&!s.which&&(u=!1),c.match(/touch|pointer/)&&(f=!0),h=0,u&&(i.HAS_POINTEREVENTS&&t!=i.EVENT_END?h=i.PointerEvent.updatePointer(t,s):c.match(/touch/)?h=s.touches.length:f||(h=c.match(/up/)?0:1),h>0&&t==i.EVENT_END?t=i.EVENT_MOVE:h||(t=i.EVENT_END),(h||r===null)&&(r=s),e.call(i.detection,o.collectEventData(n,t,o.getTouchList(r,t),s)),i.HAS_POINTEREVENTS&&t==i.EVENT_END&&(h=i.PointerEvent.updatePointer(t,s))),h||(r=null,u=!1,f=!1,i.PointerEvent.reset()))};return this.bindDom(n,i.EVENT_TYPES[t],s),s},determineEventTypes:function(){var n;n=i.HAS_POINTEREVENTS?i.PointerEvent.getEvents():i.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],i.EVENT_TYPES[i.EVENT_START]=n[0],i.EVENT_TYPES[i.EVENT_MOVE]=n[1],i.EVENT_TYPES[i.EVENT_END]=n[2]},getTouchList:function(n){return i.HAS_POINTEREVENTS?i.PointerEvent.getTouchList():n.touches?n.touches:(n.identifier=1,[n])},collectEventData:function(n,t,r,u){var f=i.POINTER_TOUCH;return(u.type.match(/mouse/)||i.PointerEvent.matchType(i.POINTER_MOUSE,u))&&(f=i.POINTER_MOUSE),{center:i.utils.getCenter(r),timeStamp:(new Date).getTime(),target:u.target,touches:r,eventType:t,pointerType:f,srcEvent:u,preventDefault:function(){this.srcEvent.preventManipulation&&this.srcEvent.preventManipulation(),this.srcEvent.preventDefault&&this.srcEvent.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return i.detection.stopDetect()}}}},i.PointerEvent={pointers:{},getTouchList:function(){var t=this,n=[];return i.utils.each(t.pointers,function(t){n.push(t)}),n},updatePointer:function(n,t){return n==i.EVENT_END?delete this.pointers[t.pointerId]:(t.identifier=t.pointerId,this.pointers[t.pointerId]=t),Object.keys(this.pointers).length},matchType:function(n,t){if(!t.pointerType)return!1;var r=t.pointerType,u={};return u[i.POINTER_MOUSE]=r===t.MSPOINTER_TYPE_MOUSE||r===i.POINTER_MOUSE,u[i.POINTER_TOUCH]=r===t.MSPOINTER_TYPE_TOUCH||r===i.POINTER_TOUCH,u[i.POINTER_PEN]=r===t.MSPOINTER_TYPE_PEN||r===i.POINTER_PEN,u[n]},getEvents:function(){return["pointerdown MSPointerDown","pointermove MSPointerMove","pointerup pointercancel MSPointerUp MSPointerCancel"]},reset:function(){this.pointers={}}},i.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(n,t){this.current||(this.stopped=!1,this.current={inst:n,startEvent:i.utils.extend({},t),lastEvent:!1,lastVEvent:!1,velocity:!1,name:""},this.detect(t))},detect:function(n){if(this.current&&!this.stopped){n=this.extendEventData(n);var t=this.current.inst.options;return i.utils.each(this.gestures,function(i){if(!this.stopped&&t[i.name]!==!1&&i.handler.call(i,n,this.current.inst)===!1)return this.stopDetect(),!1},this),this.current&&(this.current.lastEvent=n),n.eventType==i.EVENT_END&&!n.touches.length-1&&this.stopDetect(),n}},stopDetect:function(){this.previous=i.utils.extend({},this.current),this.current=null,this.stopped=!0},extendEventData:function(n){var t=this.current.startEvent,u=this.current.lastVEvent;t&&(n.touches.length!=t.touches.length||n.touches===t.touches)&&(t.touches=[],i.utils.each(n.touches,function(n){t.touches.push(i.utils.extend({},n))}));var o=n.timeStamp-t.timeStamp,s=n.center.pageX-t.center.pageX,h=n.center.pageY-t.center.pageY,f,e,r=this.current.velocity;return u!==!1&&n.timeStamp-u.timeStamp>i.UPDATE_VELOCITY_INTERVAL?(r=i.utils.getVelocity(n.timeStamp-u.timeStamp,n.center.pageX-u.center.pageX,n.center.pageY-u.center.pageY),this.current.lastVEvent=n,r.x>0&&r.y>0&&(this.current.velocity=r)):this.current.velocity===!1&&(r=i.utils.getVelocity(o,s,h),this.current.velocity=r,this.current.lastVEvent=n),n.eventType==="end"?(f=this.current.lastEvent&&this.current.lastEvent.interimAngle,e=this.current.lastEvent&&this.current.lastEvent.interimDirection):(f=this.current.lastEvent&&i.utils.getAngle(this.current.lastEvent.center,n.center),e=this.current.lastEvent&&i.utils.getDirection(this.current.lastEvent.center,n.center)),i.utils.extend(n,{deltaTime:o,deltaX:s,deltaY:h,velocityX:r.x,velocityY:r.y,distance:i.utils.getDistance(t.center,n.center),angle:i.utils.getAngle(t.center,n.center),interimAngle:f,direction:i.utils.getDirection(t.center,n.center),interimDirection:e,scale:i.utils.getScale(t.touches,n.touches),rotation:i.utils.getRotation(t.touches,n.touches),startEvent:t}),n},register:function(n){var r=n.defaults||{};return r[n.name]===t&&(r[n.name]=!0),i.utils.extend(i.defaults,r,!0),n.index=n.index||1e3,this.gestures.push(n),this.gestures.sort(function(n,t){return n.index<t.index?-1:n.index>t.index?1:0}),this.gestures}},i.gestures.Drag={name:"drag",index:50,defaults:{drag_min_distance:10,correct_for_drag_min_distance:!0,drag_max_touches:1,drag_block_horizontal:!1,drag_block_vertical:!1,drag_lock_to_axis:!1,drag_lock_min_distance:25},triggered:!1,handler:function(n,t){var r,u;if(i.detection.current.name!=this.name&&this.triggered){t.trigger(this.name+"end",n),this.triggered=!1;return}if(!(t.options.drag_max_touches>0)||!(n.touches.length>t.options.drag_max_touches))switch(n.eventType){case i.EVENT_START:this.triggered=!1;break;case i.EVENT_MOVE:if(n.distance<t.options.drag_min_distance&&i.detection.current.name!=this.name)return;i.detection.current.name!=this.name&&(i.detection.current.name=this.name,t.options.correct_for_drag_min_distance&&n.distance>0&&(r=Math.abs(t.options.drag_min_distance/n.distance),i.detection.current.startEvent.center.pageX+=n.deltaX*r,i.detection.current.startEvent.center.pageY+=n.deltaY*r,n=i.detection.extendEventData(n))),(i.detection.current.lastEvent.drag_locked_to_axis||t.options.drag_lock_to_axis&&t.options.drag_lock_min_distance<=n.distance)&&(n.drag_locked_to_axis=!0),u=i.detection.current.lastEvent.direction,n.drag_locked_to_axis&&u!==n.direction&&(n.direction=i.utils.isVertical(u)?n.deltaY<0?i.DIRECTION_UP:i.DIRECTION_DOWN:n.deltaX<0?i.DIRECTION_LEFT:i.DIRECTION_RIGHT),this.triggered||(t.trigger(this.name+"start",n),this.triggered=!0),t.trigger(this.name,n),t.trigger(this.name+n.direction,n),(t.options.drag_block_vertical&&i.utils.isVertical(n.direction)||t.options.drag_block_horizontal&&!i.utils.isVertical(n.direction))&&n.preventDefault();break;case i.EVENT_END:this.triggered&&t.trigger(this.name+"end",n),this.triggered=!1}}},i.gestures.Hold={name:"hold",index:10,defaults:{hold_timeout:500,hold_threshold:1},timer:null,handler:function(n,t){switch(n.eventType){case i.EVENT_START:clearTimeout(this.timer),i.detection.current.name=this.name,this.timer=setTimeout(function(){i.detection.current.name=="hold"&&t.trigger("hold",n)},t.options.hold_timeout);break;case i.EVENT_MOVE:n.distance>t.options.hold_threshold&&clearTimeout(this.timer);break;case i.EVENT_END:clearTimeout(this.timer)}}},i.gestures.Release={name:"release",index:Infinity,handler:function(n,t){n.eventType==i.EVENT_END&&t.trigger(this.name,n)}},i.gestures.Swipe={name:"swipe",index:40,defaults:{swipe_min_touches:1,swipe_max_touches:1,swipe_velocity:.7},handler:function(n,t){if(n.eventType==i.EVENT_END){if(t.options.swipe_max_touches>0&&n.touches.length<t.options.swipe_min_touches&&n.touches.length>t.options.swipe_max_touches)return;(n.velocityX>t.options.swipe_velocity||n.velocityY>t.options.swipe_velocity)&&(t.trigger(this.name,n),t.trigger(this.name+n.direction,n))}}},i.gestures.Tap={name:"tap",index:100,defaults:{tap_max_touchtime:250,tap_max_distance:10,tap_always:!0,doubletap_distance:20,doubletap_interval:300},handler:function(n,t){if(n.eventType!=i.EVENT_MOVE||i.detection.current.reachedTapMaxDistance){if(n.eventType==i.EVENT_END&&n.srcEvent.type!="touchcancel"){var r=i.detection.previous,u=!1;if(i.detection.current.reachedTapMaxDistance||n.deltaTime>t.options.tap_max_touchtime)return;r&&r.name=="tap"&&n.timeStamp-r.lastEvent.timeStamp<t.options.doubletap_interval&&n.distance<t.options.doubletap_distance&&(t.trigger("doubletap",n),u=!0),(!u||t.options.tap_always)&&(i.detection.current.name="tap",t.trigger(i.detection.current.name,n))}}else i.detection.current.reachedTapMaxDistance=n.distance>t.options.tap_max_distance}},i.gestures.Touch={name:"touch",index:-Infinity,defaults:{prevent_default:!1,prevent_mouseevents:!1},handler:function(n,t){if(t.options.prevent_mouseevents&&n.pointerType==i.POINTER_MOUSE){n.stopDetect();return}t.options.prevent_default&&n.preventDefault(),n.eventType==i.EVENT_START&&t.trigger(this.name,n)}},i.gestures.Transform={name:"transform",index:45,defaults:{transform_min_scale:.01,transform_min_rotation:1,transform_always_block:!1},triggered:!1,handler:function(n,t){if(i.detection.current.name!=this.name&&this.triggered){t.trigger(this.name+"end",n),this.triggered=!1;return}if(!(n.touches.length<2)){t.options.transform_always_block&&n.preventDefault();switch(n.eventType){case i.EVENT_START:this.triggered=!1;break;case i.EVENT_MOVE:var r=Math.abs(1-n.scale),u=Math.abs(n.rotation);if(r<t.options.transform_min_scale&&u<t.options.transform_min_rotation)return;i.detection.current.name=this.name,this.triggered||(t.trigger(this.name+"start",n),this.triggered=!0),t.trigger(this.name,n),u>t.options.transform_min_rotation&&t.trigger("rotate",n),r>t.options.transform_min_scale&&(t.trigger("pinch",n),t.trigger("pinch"+(n.scale<1?"in":"out"),n));break;case i.EVENT_END:this.triggered&&t.trigger(this.name+"end",n),this.triggered=!1}}}},typeof define=="function"&&define.amd?define(function(){return i}):typeof module=="object"&&module.exports?module.exports=i:n.Hammer=i})(window);
/*! jQuery plugin for Hammer.JS - v1.0.1 - 2014-02-03
 * http://eightmedia.github.com/hammer.js
 *
 * Copyright (c) 2014 Jorik Tangelder <j.tangelder@gmail.com>;
 * Licensed under the MIT license */
(function(n,t){"use strict";function i(n,i){n.event.bindDom=function(n,r,u){i(n).on(r,function(n){var i=n.originalEvent||n;i.pageX===t&&(i.pageX=n.pageX,i.pageY=n.pageY),i.target||(i.target=n.target),i.which===t&&(i.which=i.button),i.preventDefault||(i.preventDefault=n.preventDefault),i.stopPropagation||(i.stopPropagation=n.stopPropagation),u.call(this,i)})},n.Instance.prototype.on=function(n,t){return i(this.element).on(n,t)},n.Instance.prototype.off=function(n,t){return i(this.element).off(n,t)},n.Instance.prototype.trigger=function(n,t){var r=i(this.element);return r.has(t.target).length&&(r=i(t.target)),r.trigger({type:n,gesture:t})},i.fn.hammer=function(t){return this.each(function(){var u=i(this),r=u.data("hammer");r?r&&t&&n.utils.extend(r.options,t):u.data("hammer",new n(this,t||{}))})}}typeof define=="function"&&typeof define.amd=="object"&&define.amd?define(["hammerjs","jquery"],i):i(n.Hammer,n.jQuery||n.Zepto)})(this);
/*!
* jScrollPane - v2.0.0beta12 - 2012-07-24
* http://jscrollpane.kelvinluck.com/
*
* Copyright (c) 2010 Kelvin Luck
* Dual licensed under the MIT and GPL licenses.
*/
(function(n,t,i){n.fn.jScrollPane=function(r){function u(r,u){function li(t){var u,d,g,c,p,w,nt=!1,tt=!1;if(f=t,o===i)p=r.scrollTop(),w=r.scrollLeft(),r.css({overflow:"hidden",padding:0}),h=r.innerWidth()+ht,s=r.innerHeight(),r.width(h),o=n('<div class="jspPane" />').css("padding",yi).append(r.children()),e=n('<div class="jspContainer" />').css({width:h+"px",height:s+"px"}).append(o).appendTo(r);else{if(r.css("width",""),nt=f.stickToBottom&&or(),tt=f.stickToRight&&sr(),c=r.innerWidth()+ht!=h||r.outerHeight()!=s,c&&(h=r.innerWidth()+ht,s=r.innerHeight(),e.css({width:h+"px",height:s+"px"})),!c&&pi==y&&o.outerHeight()==v){r.width(h);return}pi=y,o.css("width",""),r.width(h),e.find(">.jspVerticalBar,>.jspHorizontalBar").remove().end()}o.css("overflow","auto"),y=t.contentWidth?t.contentWidth:o[0].scrollWidth,v=o[0].scrollHeight,o.css("overflow",""),oi=y/h,gt=v/s,k=gt>1,b=oi>1,b||k?(r.addClass("jspScrollable"),u=f.maintainPosition&&(l||a),u&&(d=et(),g=ot()),nr(),tr(),ir(),u&&(yt(tt?y-h:d,!1),ft(nt?v-s:g,!1)),lr(),hr(),br(),f.enableKeyboardNavigation&&vr(),f.clickOnTrack&&ur(),pr(),f.hijackInternalLinks&&wr()):(r.removeClass("jspScrollable"),o.css({top:0,width:e.width()-ht}),cr(),ar(),yr(),di()),f.autoReinitialise&&!at?at=setInterval(function(){li(f)},f.autoReinitialiseDelay):!f.autoReinitialise&&at&&clearInterval(at),p&&r.scrollTop(0)&&ft(p,!1),w&&r.scrollLeft(0)&&yt(w,!1),r.trigger("jsp-initialised",[b||k])}function nr(){k&&(e.append(n('<div class="jspVerticalBar" />').append(n('<div class="jspCap jspCapTop" />'),n('<div class="jspTrack" />').append(n('<div class="jspDrag" />').append(n('<div class="jspDragTop" />'),n('<div class="jspDragBottom" />'))),n('<div class="jspCap jspCapBottom" />'))),ni=e.find(">.jspVerticalBar"),g=ni.find(">.jspTrack"),p=g.find(">.jspDrag"),f.showArrows&&(wt=n('<a class="jspArrow jspArrowUp" />').bind("mousedown.jsp",ut(0,-1)).bind("click.jsp",pt),bt=n('<a class="jspArrow jspArrowDown" />').bind("mousedown.jsp",ut(0,1)).bind("click.jsp",pt),f.arrowScrollOnHover&&(wt.bind("mouseover.jsp",ut(0,-1,wt)),bt.bind("mouseover.jsp",ut(0,1,bt))),ki(g,f.verticalArrowPositions,wt,bt)),lt=s,e.find(">.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow").each(function(){lt-=n(this).outerHeight()}),p.hover(function(){p.addClass("jspHover")},function(){p.removeClass("jspHover")}).bind("mousedown.jsp",function(t){n("html").bind("dragstart.jsp selectstart.jsp",pt),p.addClass("jspActive");var i=t.pageY-p.position().top;return n("html").bind("mousemove.jsp",function(n){ct(n.pageY-i,!1)}).bind("mouseup.jsp mouseleave.jsp",gi),!1}),wi())}function wi(){g.height(lt+"px"),l=0,si=f.verticalGutter+g.outerWidth(),o.width(h-si-ht);try{ni.position().left===0&&o.css("margin-left",si+"px")}catch(n){}}function tr(){b&&(e.append(n('<div class="jspHorizontalBar" />').append(n('<div class="jspCap jspCapLeft" />'),n('<div class="jspTrack" />').append(n('<div class="jspDrag" />').append(n('<div class="jspDragLeft" />'),n('<div class="jspDragRight" />'))),n('<div class="jspCap jspCapRight" />'))),ti=e.find(">.jspHorizontalBar"),nt=ti.find(">.jspTrack"),w=nt.find(">.jspDrag"),f.showArrows&&(kt=n('<a class="jspArrow jspArrowLeft" />').bind("mousedown.jsp",ut(-1,0)).bind("click.jsp",pt),dt=n('<a class="jspArrow jspArrowRight" />').bind("mousedown.jsp",ut(1,0)).bind("click.jsp",pt),f.arrowScrollOnHover&&(kt.bind("mouseover.jsp",ut(-1,0,kt)),dt.bind("mouseover.jsp",ut(1,0,dt))),ki(nt,f.horizontalArrowPositions,kt,dt)),w.hover(function(){w.addClass("jspHover")},function(){w.removeClass("jspHover")}).bind("mousedown.jsp",function(t){n("html").bind("dragstart.jsp selectstart.jsp",pt),w.addClass("jspActive");var i=t.pageX-w.position().left;return n("html").bind("mousemove.jsp",function(n){vt(n.pageX-i,!1)}).bind("mouseup.jsp mouseleave.jsp",gi),!1}),st=e.innerWidth(),bi())}function bi(){e.find(">.jspHorizontalBar>.jspCap:visible,>.jspHorizontalBar>.jspArrow").each(function(){st-=n(this).outerWidth()}),nt.width(st+"px"),a=0}function ir(){if(b&&k){var t=nt.outerHeight(),i=g.outerWidth();lt-=t,n(ti).find(">.jspCap:visible,>.jspArrow").each(function(){st+=n(this).outerWidth()}),st-=i,s-=i,h-=t,nt.parent().append(n('<div class="jspCorner" />').css("width",t+"px")),wi(),bi()}b&&o.width(e.outerWidth()-ht+"px"),v=o.outerHeight(),gt=v/s,b&&(rt=Math.ceil(1/oi*st),rt>f.horizontalDragMaxWidth?rt=f.horizontalDragMaxWidth:rt<f.horizontalDragMinWidth&&(rt=f.horizontalDragMinWidth),w.width(rt+"px"),tt=st-rt,vi(a)),k&&(it=Math.ceil(1/gt*lt),it>f.verticalDragMaxHeight?it=f.verticalDragMaxHeight:it<f.verticalDragMinHeight&&(it=f.verticalDragMinHeight),p.height(it+"px"),d=lt-it,ai(l))}function ki(n,t,i,r){var u="before",f="after",e;t=="os"&&(t=/Mac/.test(navigator.platform)?"after":"split"),t==u?f=t:t==f&&(u=t,e=i,i=r,r=e),n[u](i)[f](r)}function ut(n,t,i){return function(){return rr(n,t,this,i),this.blur(),!1}}function rr(t,i,r,u){r=n(r).addClass("jspActive");var o,e,s=!0,h=function(){t!==0&&c.scrollByX(t*f.arrowButtonSpeed),i!==0&&c.scrollByY(i*f.arrowButtonSpeed),e=setTimeout(h,s?f.initialDelay:f.arrowRepeatFreq),s=!1};h(),o=u?"mouseout.jsp":"mouseup.jsp",u=u||n("html"),u.bind(o,function(){r.removeClass("jspActive"),e&&clearTimeout(e),e=null,u.unbind(o)})}function ur(){di(),k&&g.bind("mousedown.jsp",function(t){if(t.originalTarget===i||t.originalTarget==t.currentTarget){var e=n(this),y=e.offset(),o=t.pageY-y.top-l,r,h=!0,a=function(){var p=e.offset(),n=t.pageY-p.top-it/2,i=s*f.scrollPagePercent,y=d*i/(v-s);if(o<0)l-y>n?c.scrollByY(-i):ct(n);else if(o>0)l+y<n?c.scrollByY(i):ct(n);else{u();return}r=setTimeout(a,h?f.initialDelay:f.trackClickRepeatFreq),h=!1},u=function(){r&&clearTimeout(r),r=null,n(document).unbind("mouseup.jsp",u)};return a(),n(document).bind("mouseup.jsp",u),!1}}),b&&nt.bind("mousedown.jsp",function(t){if(t.originalTarget===i||t.originalTarget==t.currentTarget){var e=n(this),v=e.offset(),o=t.pageX-v.left-a,r,s=!0,l=function(){var p=e.offset(),n=t.pageX-p.left-rt/2,i=h*f.scrollPagePercent,v=tt*i/(y-h);if(o<0)a-v>n?c.scrollByX(-i):vt(n);else if(o>0)a+v<n?c.scrollByX(i):vt(n);else{u();return}r=setTimeout(l,s?f.initialDelay:f.trackClickRepeatFreq),s=!1},u=function(){r&&clearTimeout(r),r=null,n(document).unbind("mouseup.jsp",u)};return l(),n(document).bind("mouseup.jsp",u),!1}})}function di(){nt&&nt.unbind("mousedown.jsp"),g&&g.unbind("mousedown.jsp")}function gi(){n("html").unbind("dragstart.jsp selectstart.jsp mousemove.jsp mouseup.jsp mouseleave.jsp"),p&&p.removeClass("jspActive"),w&&w.removeClass("jspActive")}function ct(n,t){k&&(n<0?n=0:n>d&&(n=d),t===i&&(t=f.animateScroll),t?c.animate(p,"top",n,ai):(p.css("top",n),ai(n)))}function ai(n){n===i&&(n=p.position().top),e.scrollTop(0),l=n;var t=l===0,u=l==d,h=n/d,f=-h*(v-s);(ii!=t||ui!=u)&&(ii=t,ui=u,r.trigger("jsp-arrow-change",[ii,ui,ri,fi])),fr(t,u),o.css("top",f),r.trigger("jsp-scroll-y",[-f,t,u]).trigger("scroll")}function vt(n,t){b&&(n<0?n=0:n>tt&&(n=tt),t===i&&(t=f.animateScroll),t?c.animate(w,"left",n,vi):(w.css("left",n),vi(n)))}function vi(n){n===i&&(n=w.position().left),e.scrollTop(0),a=n;var t=a===0,u=a==tt,s=n/tt,f=-s*(y-h);(ri!=t||fi!=u)&&(ri=t,fi=u,r.trigger("jsp-arrow-change",[ii,ui,ri,fi])),er(t,u),o.css("left",f),r.trigger("jsp-scroll-x",[-f,t,u]).trigger("scroll")}function fr(n,t){f.showArrows&&(wt[n?"addClass":"removeClass"]("jspDisabled"),bt[t?"addClass":"removeClass"]("jspDisabled"))}function er(n,t){f.showArrows&&(kt[n?"addClass":"removeClass"]("jspDisabled"),dt[t?"addClass":"removeClass"]("jspDisabled"))}function ft(n,t){var i=n/(v-s);ct(i*d,t)}function yt(n,t){var i=n/(y-h);vt(i*tt,t)}function ei(t,i,r){var u,v,y,o=0,c=0,p,w,b,k,l,a;try{u=n(t)}catch(d){return}for(v=u.outerHeight(),y=u.outerWidth(),e.scrollTop(0),e.scrollLeft(0);!u.is(".jspPane");)if(o+=u.position().top,c+=u.position().left,u=u.offsetParent(),/^body|html$/i.test(u[0].nodeName))return;p=ot(),b=p+s,o<p||i?l=o-f.verticalGutter:o+v>b&&(l=o-s+v+f.verticalGutter),l&&ft(l,r),w=et(),k=w+h,c<w||i?a=c-f.horizontalGutter:c+y>k&&(a=c-h+y+f.horizontalGutter),a&&yt(a,r)}function et(){return-o.position().left}function ot(){return-o.position().top}function or(){var n=v-s;return n>20&&n-ot()<10}function sr(){var n=y-h;return n>20&&n-et()<10}function hr(){e.unbind(ci).bind(ci,function(n,t,i,r){var u=a,e=l;return c.scrollBy(i*f.mouseWheelSpeed,-r*f.mouseWheelSpeed,!1),u==a&&e==l})}function cr(){e.unbind(ci)}function pt(){return!1}function lr(){o.find(":input,a").unbind("focus.jsp").bind("focus.jsp",function(n){ei(n.target,!1)})}function ar(){o.find(":input,a").unbind("focus.jsp")}function vr(){function h(){var n=a,r=l;switch(t){case 40:c.scrollByY(f.keyboardSpeed,!1);break;case 38:c.scrollByY(-f.keyboardSpeed,!1);break;case 34:case 32:c.scrollByY(s*f.scrollPagePercent,!1);break;case 33:c.scrollByY(-s*f.scrollPagePercent,!1);break;case 39:c.scrollByX(f.keyboardSpeed,!1);break;case 37:c.scrollByX(-f.keyboardSpeed,!1)}return i=n!=a||r!=l}var t,i,u=[];b&&u.push(ti[0]),k&&u.push(ni[0]),o.focus(function(){r.focus()}),r.attr("tabindex",0).unbind("keydown.jsp keypress.jsp").bind("keydown.jsp",function(r){if(r.target===this||u.length&&n(r.target).closest(u).length){var f=a,e=l;switch(r.keyCode){case 40:case 38:case 34:case 32:case 33:case 39:case 37:t=r.keyCode,h();break;case 35:ft(v-s),t=null;break;case 36:ft(0),t=null}return i=r.keyCode==t&&f!=a||e!=l,!i}}).bind("keypress.jsp",function(n){return n.keyCode==t&&h(),!i}),f.hideFocus?(r.css("outline","none"),"hideFocus"in e[0]&&r.attr("hideFocus",!0)):(r.css("outline",""),"hideFocus"in e[0]&&r.attr("hideFocus",!1))}function yr(){r.attr("tabindex","-1").removeAttr("tabindex").unbind("keydown.jsp keypress.jsp")}function pr(){if(location.hash&&location.hash.length>1){var t,r,i=escape(location.hash.substr(1));try{t=n("#"+i+', a[name="'+i+'"]')}catch(u){return}t.length&&o.find(i)&&(e.scrollTop()===0?r=setInterval(function(){e.scrollTop()>0&&(ei(t,!0),n(document).scrollTop(e.position().top),clearInterval(r))},50):(ei(t,!0),n(document).scrollTop(e.position().top)))}}function wr(){n(document.body).data("jspHijack")||(n(document.body).data("jspHijack",!0),n(document.body).delegate("a[href*=#]","click",function(i){var c=this.href.substr(0,this.href.indexOf("#")),s=location.href,f,r,u,h,e,o;if(location.href.indexOf("#")!==-1&&(s=location.href.substr(0,location.href.indexOf("#"))),c===s){f=escape(this.href.substr(this.href.indexOf("#")+1)),r;try{r=n("#"+f+', a[name="'+f+'"]')}catch(l){return}r.length&&(u=r.closest(".jspScrollable"),h=u.data("jsp"),h.scrollToElement(r,!0),u[0].scrollIntoView&&(e=n(t).scrollTop(),o=r.offset().top,(o<e||o>e+n(t).height())&&u[0].scrollIntoView()),i.preventDefault())}}))}function br(){var u,f,t,i,n,r=!1;e.unbind("touchstart.jsp touchmove.jsp touchend.jsp click.jsp-touchclick").bind("touchstart.jsp",function(e){var o=e.originalEvent.touches[0];u=et(),f=ot(),t=o.pageX,i=o.pageY,n=!1,r=!0}).bind("touchmove.jsp",function(e){if(r){var o=e.originalEvent.touches[0],s=a,h=l;return c.scrollTo(u+t-o.pageX,f+i-o.pageY),n=n||Math.abs(t-o.pageX)>5||Math.abs(i-o.pageY)>5,s==a&&h==l}}).bind("touchend.jsp",function(){r=!1}).bind("click.jsp-touchclick",function(){if(n)return n=!1,!1})}function kr(){var n=ot(),t=et();r.removeClass("jspScrollable").unbind(".jsp"),r.replaceWith(hi.append(o.children())),hi.scrollTop(n),hi.scrollLeft(t),at&&clearInterval(at)}var f,c=this,o,h,s,e,y,v,oi,gt,k,b,p,d,l,w,tt,a,ni,g,si,lt,it,wt,bt,ti,nt,st,rt,kt,dt,at,yi,ht,pi,ii=!0,ri=!0,ui=!1,fi=!1,hi=r.clone(!1,!1).empty(),ci=n.fn.mwheelIntent?"mwheelIntent.jsp":"mousewheel.jsp";yi=r.css("paddingTop")+" "+r.css("paddingRight")+" "+r.css("paddingBottom")+" "+r.css("paddingLeft"),ht=(parseInt(r.css("paddingLeft"),10)||0)+(parseInt(r.css("paddingRight"),10)||0),n.extend(c,{reinitialise:function(t){t=n.extend({},f,t),li(t)},scrollToElement:function(n,t,i){ei(n,t,i)},scrollTo:function(n,t,i){yt(n,i),ft(t,i)},scrollToX:function(n,t){yt(n,t)},scrollToY:function(n,t){ft(n,t)},scrollToPercentX:function(n,t){yt(n*(y-h),t)},scrollToPercentY:function(n,t){ft(n*(v-s),t)},scrollBy:function(n,t,i){c.scrollByX(n,i),c.scrollByY(t,i)},scrollByX:function(n,t){var i=et()+Math[n<0?"floor":"ceil"](n),r=i/(y-h);vt(r*tt,t)},scrollByY:function(n,t){var i=ot()+Math[n<0?"floor":"ceil"](n),r=i/(v-s);ct(r*d,t)},positionDragX:function(n,t){vt(n,t)},positionDragY:function(n,t){ct(n,t)},animate:function(n,t,i,r){var u={};u[t]=i,n.animate(u,{duration:f.animateDuration,easing:f.animateEase,queue:!1,step:r})},getContentPositionX:function(){return et()},getContentPositionY:function(){return ot()},getContentWidth:function(){return y},getContentHeight:function(){return v},getPercentScrolledX:function(){return et()/(y-h)},getPercentScrolledY:function(){return ot()/(v-s)},getIsScrollableH:function(){return b},getIsScrollableV:function(){return k},getContentPane:function(){return o},scrollToBottom:function(n){ct(d,n)},hijackInternalLinks:n.noop,destroy:function(){kr()}}),li(u)}return r=n.extend({},n.fn.jScrollPane.defaults,r),n.each(["mouseWheelSpeed","arrowButtonSpeed","trackClickSpeed","keyboardSpeed"],function(){r[this]=r[this]||r.speed}),this.each(function(){var t=n(this),i=t.data("jsp");i?i.reinitialise(r):(n("script",t).filter('[type="text/javascript"],not([type])').remove(),i=new u(t,r),t.data("jsp",i))})},n.fn.jScrollPane.defaults={showArrows:!1,maintainPosition:!0,stickToBottom:!1,stickToRight:!1,clickOnTrack:!0,autoReinitialise:!1,autoReinitialiseDelay:500,verticalDragMinHeight:0,verticalDragMaxHeight:99999,horizontalDragMinWidth:0,horizontalDragMaxWidth:99999,contentWidth:i,animateScroll:!1,animateDuration:300,animateEase:"linear",hijackInternalLinks:!1,verticalGutter:4,horizontalGutter:4,mouseWheelSpeed:0,arrowButtonSpeed:0,arrowRepeatFreq:50,arrowScrollOnHover:!1,trackClickSpeed:0,trackClickRepeatFreq:70,verticalArrowPositions:"split",horizontalArrowPositions:"split",enableKeyboardNavigation:!0,hideFocus:!1,keyboardSpeed:0,initialDelay:300,speed:30,scrollPagePercent:.8}})(jQuery,this)