\").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,\"position\"),l=m(a),n={};\"static\"===k&&(a.style.position=\"relative\"),h=l.offset(),f=m.css(a,\"top\"),i=m.css(a,\"left\"),j=(\"absolute\"===k||\"fixed\"===k)&&m.inArray(\"auto\",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),\"using\"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return\"fixed\"===m.css(d,\"position\")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],\"html\")||(c=a.offset()),c.top+=m.css(a[0],\"borderTopWidth\",!0),c.left+=m.css(a[0],\"borderLeftWidth\",!0)),{top:b.top-c.top-m.css(d,\"marginTop\",!0),left:b.left-c.left-m.css(d,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,\"html\")&&\"static\"===m.css(a,\"position\"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each([\"top\",\"left\"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+\"px\":c):void 0})}),m.each({Height:\"height\",Width:\"width\"},function(a,b){m.each({padding:\"inner\"+a,content:b,\"\":\"outer\"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||\"boolean\"!=typeof d),g=c||(d===!0||e===!0?\"margin\":\"border\");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement[\"client\"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body[\"scroll\"+a],e[\"scroll\"+a],b.body[\"offset\"+a],e[\"offset\"+a],e[\"client\"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});\r\n","/*!\r\n * jQuery Cookie Plugin v1.4.1\r\n * https://github.com/carhartl/jquery-cookie\r\n *\r\n * Copyright 2006, 2014 Klaus Hartl\r\n * Released under the MIT license\r\n */\r\n(function (factory) {\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\t// AMD (Register as an anonymous module)\r\n\t\tdefine(['jquery'], factory);\r\n\t} else if (typeof exports === 'object') {\r\n\t\t// Node/CommonJS\r\n\t\tmodule.exports = factory(require('jquery'));\r\n\t} else {\r\n\t\t// Browser globals\r\n\t\tfactory(jQuery);\r\n\t}\r\n}(function ($) {\r\n\r\n\tvar pluses = /\\+/g;\r\n\r\n\tfunction encode(s) {\r\n\t\treturn config.raw ? s : encodeURIComponent(s);\r\n\t}\r\n\r\n\tfunction decode(s) {\r\n\t\treturn config.raw ? s : decodeURIComponent(s);\r\n\t}\r\n\r\n\tfunction stringifyCookieValue(value) {\r\n\t\treturn encode(config.json ? JSON.stringify(value) : String(value));\r\n\t}\r\n\r\n\tfunction parseCookieValue(s) {\r\n\t\tif (s.indexOf('\"') === 0) {\r\n\t\t\t// This is a quoted cookie as according to RFC2068, unescape...\r\n\t\t\ts = s.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\t// Replace server-side written pluses with spaces.\r\n\t\t\t// If we can't decode the cookie, ignore it, it's unusable.\r\n\t\t\t// If we can't parse the cookie, ignore it, it's unusable.\r\n\t\t\ts = decodeURIComponent(s.replace(pluses, ' '));\r\n\t\t\treturn config.json ? JSON.parse(s) : s;\r\n\t\t} catch(e) {}\r\n\t}\r\n\r\n\tfunction read(s, converter) {\r\n\t\tvar value = config.raw ? s : parseCookieValue(s);\r\n\t\treturn $.isFunction(converter) ? converter(value) : value;\r\n\t}\r\n\r\n\tvar config = $.cookie = function (key, value, options) {\r\n\r\n\t\t// Write\r\n\r\n\t\tif (arguments.length > 1 && !$.isFunction(value)) {\r\n\t\t\toptions = $.extend({}, config.defaults, options);\r\n\r\n\t\t\tif (typeof options.expires === 'number') {\r\n\t\t\t\tvar days = options.expires, t = options.expires = new Date();\r\n\t\t\t\tt.setMilliseconds(t.getMilliseconds() + days * 864e+5);\r\n\t\t\t}\r\n\r\n\t\t\treturn (document.cookie = [\r\n\t\t\t\tencode(key), '=', stringifyCookieValue(value),\r\n\t\t\t\toptions.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\r\n\t\t\t\toptions.path ? '; path=' + options.path : '',\r\n\t\t\t\toptions.domain ? '; domain=' + options.domain : '',\r\n\t\t\t\toptions.secure ? '; secure' : ''\r\n\t\t\t].join(''));\r\n\t\t}\r\n\r\n\t\t// Read\r\n\r\n\t\tvar result = key ? undefined : {},\r\n\t\t\t// To prevent the for loop in the first place assign an empty array\r\n\t\t\t// in case there are no cookies at all. Also prevents odd result when\r\n\t\t\t// calling $.cookie().\r\n\t\t\tcookies = document.cookie ? document.cookie.split('; ') : [],\r\n\t\t\ti = 0,\r\n\t\t\tl = cookies.length;\r\n\r\n\t\tfor (; i < l; i++) {\r\n\t\t\tvar parts = cookies[i].split('='),\r\n\t\t\t\tname = decode(parts.shift()),\r\n\t\t\t\tcookie = parts.join('=');\r\n\r\n\t\t\tif (key === name) {\r\n\t\t\t\t// If second argument (value) is a function it's a converter...\r\n\t\t\t\tresult = read(cookie, value);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// Prevent storing a cookie that we couldn't decode.\r\n\t\t\tif (!key && (cookie = read(cookie)) !== undefined) {\r\n\t\t\t\tresult[name] = cookie;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\r\n\tconfig.defaults = {};\r\n\r\n\t$.removeCookie = function (key, options) {\r\n\t\t// Must not alter options, thus extending a fresh object...\r\n\t\t$.cookie(key, '', $.extend({}, options, { expires: -1 }));\r\n\t\treturn !$.cookie(key);\r\n\t};\r\n\r\n}));\r\n","// jQuery Mask Plugin v1.11.4\r\n// github.com/igorescobar/jQuery-Mask-Plugin\r\n(function(b){\"function\"===typeof define&&define.amd?define([\"jquery\"],b):\"object\"===typeof exports?module.exports=b(require(\"jquery\")):b(jQuery||Zepto)})(function(b){var y=function(a,d,e){a=b(a);var g=this,k=a.val(),l;d=\"function\"===typeof d?d(a.val(),void 0,a,e):d;var c={invalid:[],getCaret:function(){try{var q,v=0,b=a.get(0),f=document.selection,c=b.selectionStart;if(f&&-1===navigator.appVersion.indexOf(\"MSIE 10\"))q=f.createRange(),q.moveStart(\"character\",a.is(\"input\")?-a.val().length:-a.text().length),\r\nv=q.text.length;else if(c||\"0\"===c)v=c;return v}catch(d){}},setCaret:function(q){try{if(a.is(\":focus\")){var b,c=a.get(0);c.setSelectionRange?c.setSelectionRange(q,q):c.createTextRange&&(b=c.createTextRange(),b.collapse(!0),b.moveEnd(\"character\",q),b.moveStart(\"character\",q),b.select())}}catch(f){}},events:function(){a.on(\"keyup.mask\",c.behaviour).on(\"paste.mask drop.mask\",function(){setTimeout(function(){a.keydown().keyup()},100)}).on(\"change.mask\",function(){a.data(\"changed\",!0)}).on(\"blur.mask\",\r\nfunction(){k===a.val()||a.data(\"changed\")||a.triggerHandler(\"change\");a.data(\"changed\",!1)}).on(\"keydown.mask, blur.mask\",function(){k=a.val()}).on(\"focus.mask\",function(a){!0===e.selectOnFocus&&b(a.target).select()}).on(\"focusout.mask\",function(){e.clearIfNotMatch&&!l.test(c.val())&&c.val(\"\")})},getRegexMask:function(){for(var a=[],b,c,f,e,h=0;h -1 ) {\r\n\t\tprops = mouseEventProps;\r\n\t}\r\n\r\n\t// copy original event properties over to the new event\r\n\t// this would happen if we could call $.event.fix instead of $.Event\r\n\t// but we don't have a way to force an event to be fixed multiple times\r\n\tif ( oe ) {\r\n\t\tfor ( i = props.length, prop; i; ) {\r\n\t\t\tprop = props[ --i ];\r\n\t\t\tevent[ prop ] = oe[ prop ];\r\n\t\t}\r\n\t}\r\n\r\n\t// make sure that if the mouse and click virtual events are generated\r\n\t// without a .which one is defined\r\n\tif ( t.search(/mouse(down|up)|click/) > -1 && !event.which ) {\r\n\t\tevent.which = 1;\r\n\t}\r\n\r\n\tif ( t.search(/^touch/) !== -1 ) {\r\n\t\tne = getNativeEvent( oe );\r\n\t\tt = ne.touches;\r\n\t\tct = ne.changedTouches;\r\n\t\ttouch = ( t && t.length ) ? t[0] : ( ( ct && ct.length ) ? ct[ 0 ] : undefined );\r\n\r\n\t\tif ( touch ) {\r\n\t\t\tfor ( j = 0, len = touchEventProps.length; j < len; j++) {\r\n\t\t\t\tprop = touchEventProps[ j ];\r\n\t\t\t\tevent[ prop ] = touch[ prop ];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn event;\r\n}\r\n\r\nfunction getVirtualBindingFlags( element ) {\r\n\r\n\tvar flags = {},\r\n\t\tb, k;\r\n\r\n\twhile ( element ) {\r\n\r\n\t\tb = $.data( element, dataPropertyName );\r\n\r\n\t\tfor ( k in b ) {\r\n\t\t\tif ( b[ k ] ) {\r\n\t\t\t\tflags[ k ] = flags.hasVirtualBinding = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\telement = element.parentNode;\r\n\t}\r\n\treturn flags;\r\n}\r\n\r\nfunction getClosestElementWithVirtualBinding( element, eventType ) {\r\n\tvar b;\r\n\twhile ( element ) {\r\n\r\n\t\tb = $.data( element, dataPropertyName );\r\n\r\n\t\tif ( b && ( !eventType || b[ eventType ] ) ) {\r\n\t\t\treturn element;\r\n\t\t}\r\n\t\telement = element.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\nfunction enableTouchBindings() {\r\n\tblockTouchTriggers = false;\r\n}\r\n\r\nfunction disableTouchBindings() {\r\n\tblockTouchTriggers = true;\r\n}\r\n\r\nfunction enableMouseBindings() {\r\n\tlastTouchID = 0;\r\n\tclickBlockList.length = 0;\r\n\tblockMouseTriggers = false;\r\n\r\n\t// When mouse bindings are enabled, our\r\n\t// touch bindings are disabled.\r\n\tdisableTouchBindings();\r\n}\r\n\r\nfunction disableMouseBindings() {\r\n\t// When mouse bindings are disabled, our\r\n\t// touch bindings are enabled.\r\n\tenableTouchBindings();\r\n}\r\n\r\nfunction startResetTimer() {\r\n\tclearResetTimer();\r\n\tresetTimerID = setTimeout( function() {\r\n\t\tresetTimerID = 0;\r\n\t\tenableMouseBindings();\r\n\t}, $.vmouse.resetTimerDuration );\r\n}\r\n\r\nfunction clearResetTimer() {\r\n\tif ( resetTimerID ) {\r\n\t\tclearTimeout( resetTimerID );\r\n\t\tresetTimerID = 0;\r\n\t}\r\n}\r\n\r\nfunction triggerVirtualEvent( eventType, event, flags ) {\r\n\tvar ve;\r\n\r\n\tif ( ( flags && flags[ eventType ] ) ||\r\n\t\t\t\t( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) {\r\n\r\n\t\tve = createVirtualEvent( event, eventType );\r\n\r\n\t\t$( event.target).trigger( ve );\r\n\t}\r\n\r\n\treturn ve;\r\n}\r\n\r\nfunction mouseEventCallback( event ) {\r\n\tvar touchID = $.data( event.target, touchTargetPropertyName ),\r\n\t\tve;\r\n\r\n\tif ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ) {\r\n\t\tve = triggerVirtualEvent( \"v\" + event.type, event );\r\n\t\tif ( ve ) {\r\n\t\t\tif ( ve.isDefaultPrevented() ) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t\tif ( ve.isPropagationStopped() ) {\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t}\r\n\t\t\tif ( ve.isImmediatePropagationStopped() ) {\r\n\t\t\t\tevent.stopImmediatePropagation();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction handleTouchStart( event ) {\r\n\r\n\tvar touches = getNativeEvent( event ).touches,\r\n\t\ttarget, flags, t;\r\n\r\n\tif ( touches && touches.length === 1 ) {\r\n\r\n\t\ttarget = event.target;\r\n\t\tflags = getVirtualBindingFlags( target );\r\n\r\n\t\tif ( flags.hasVirtualBinding ) {\r\n\r\n\t\t\tlastTouchID = nextTouchID++;\r\n\t\t\t$.data( target, touchTargetPropertyName, lastTouchID );\r\n\r\n\t\t\tclearResetTimer();\r\n\r\n\t\t\tdisableMouseBindings();\r\n\t\t\tdidScroll = false;\r\n\r\n\t\t\tt = getNativeEvent( event ).touches[ 0 ];\r\n\t\t\tstartX = t.pageX;\r\n\t\t\tstartY = t.pageY;\r\n\r\n\t\t\ttriggerVirtualEvent( \"vmouseover\", event, flags );\r\n\t\t\ttriggerVirtualEvent( \"vmousedown\", event, flags );\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction handleScroll( event ) {\r\n\tif ( blockTouchTriggers ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif ( !didScroll ) {\r\n\t\ttriggerVirtualEvent( \"vmousecancel\", event, getVirtualBindingFlags( event.target ) );\r\n\t}\r\n\r\n\tdidScroll = true;\r\n\tstartResetTimer();\r\n}\r\n\r\nfunction handleTouchMove( event ) {\r\n\tif ( blockTouchTriggers ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar t = getNativeEvent( event ).touches[ 0 ],\r\n\t\tdidCancel = didScroll,\r\n\t\tmoveThreshold = $.vmouse.moveDistanceThreshold,\r\n\t\tflags = getVirtualBindingFlags( event.target );\r\n\r\n\t\tdidScroll = didScroll ||\r\n\t\t\t( Math.abs( t.pageX - startX ) > moveThreshold ||\r\n\t\t\t\tMath.abs( t.pageY - startY ) > moveThreshold );\r\n\r\n\tif ( didScroll && !didCancel ) {\r\n\t\ttriggerVirtualEvent( \"vmousecancel\", event, flags );\r\n\t}\r\n\r\n\ttriggerVirtualEvent( \"vmousemove\", event, flags );\r\n\tstartResetTimer();\r\n}\r\n\r\nfunction handleTouchEnd( event ) {\r\n\tif ( blockTouchTriggers ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tdisableTouchBindings();\r\n\r\n\tvar flags = getVirtualBindingFlags( event.target ),\r\n\t\tve, t;\r\n\ttriggerVirtualEvent( \"vmouseup\", event, flags );\r\n\r\n\tif ( !didScroll ) {\r\n\t\tve = triggerVirtualEvent( \"vclick\", event, flags );\r\n\t\tif ( ve && ve.isDefaultPrevented() ) {\r\n\t\t\t// The target of the mouse events that follow the touchend\r\n\t\t\t// event don't necessarily match the target used during the\r\n\t\t\t// touch. This means we need to rely on coordinates for blocking\r\n\t\t\t// any click that is generated.\r\n\t\t\tt = getNativeEvent( event ).changedTouches[ 0 ];\r\n\t\t\tclickBlockList.push({\r\n\t\t\t\ttouchID: lastTouchID,\r\n\t\t\t\tx: t.clientX,\r\n\t\t\t\ty: t.clientY\r\n\t\t\t});\r\n\r\n\t\t\t// Prevent any mouse events that follow from triggering\r\n\t\t\t// virtual event notifications.\r\n\t\t\tblockMouseTriggers = true;\r\n\t\t}\r\n\t}\r\n\ttriggerVirtualEvent( \"vmouseout\", event, flags);\r\n\tdidScroll = false;\r\n\r\n\tstartResetTimer();\r\n}\r\n\r\nfunction hasVirtualBindings( ele ) {\r\n\tvar bindings = $.data( ele, dataPropertyName ),\r\n\t\tk;\r\n\r\n\tif ( bindings ) {\r\n\t\tfor ( k in bindings ) {\r\n\t\t\tif ( bindings[ k ] ) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\nfunction dummyMouseHandler() {}\r\n\r\nfunction getSpecialEventObject( eventType ) {\r\n\tvar realType = eventType.substr( 1 );\r\n\r\n\treturn {\r\n\t\tsetup: function(/* data, namespace */) {\r\n\t\t\t// If this is the first virtual mouse binding for this element,\r\n\t\t\t// add a bindings object to its data.\r\n\r\n\t\t\tif ( !hasVirtualBindings( this ) ) {\r\n\t\t\t\t$.data( this, dataPropertyName, {} );\r\n\t\t\t}\r\n\r\n\t\t\t// If setup is called, we know it is the first binding for this\r\n\t\t\t// eventType, so initialize the count for the eventType to zero.\r\n\t\t\tvar bindings = $.data( this, dataPropertyName );\r\n\t\t\tbindings[ eventType ] = true;\r\n\r\n\t\t\t// If this is the first virtual mouse event for this type,\r\n\t\t\t// register a global handler on the document.\r\n\r\n\t\t\tactiveDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1;\r\n\r\n\t\t\tif ( activeDocHandlers[ eventType ] === 1 ) {\r\n\t\t\t\t$document.bind( realType, mouseEventCallback );\r\n\t\t\t}\r\n\r\n\t\t\t// Some browsers, like Opera Mini, won't dispatch mouse/click events\r\n\t\t\t// for elements unless they actually have handlers registered on them.\r\n\t\t\t// To get around this, we register dummy handlers on the elements.\r\n\r\n\t\t\t$( this ).bind( realType, dummyMouseHandler );\r\n\r\n\t\t\t// For now, if event capture is not supported, we rely on mouse handlers.\r\n\t\t\tif ( eventCaptureSupported ) {\r\n\t\t\t\t// If this is the first virtual mouse binding for the document,\r\n\t\t\t\t// register our touchstart handler on the document.\r\n\r\n\t\t\t\tactiveDocHandlers[ \"touchstart\" ] = ( activeDocHandlers[ \"touchstart\" ] || 0) + 1;\r\n\r\n\t\t\t\tif ( activeDocHandlers[ \"touchstart\" ] === 1 ) {\r\n\t\t\t\t\t$document.bind( \"touchstart\", handleTouchStart )\r\n\t\t\t\t\t\t.bind( \"touchend\", handleTouchEnd )\r\n\r\n\t\t\t\t\t\t// On touch platforms, touching the screen and then dragging your finger\r\n\t\t\t\t\t\t// causes the window content to scroll after some distance threshold is\r\n\t\t\t\t\t\t// exceeded. On these platforms, a scroll prevents a click event from being\r\n\t\t\t\t\t\t// dispatched, and on some platforms, even the touchend is suppressed. To\r\n\t\t\t\t\t\t// mimic the suppression of the click event, we need to watch for a scroll\r\n\t\t\t\t\t\t// event. Unfortunately, some platforms like iOS don't dispatch scroll\r\n\t\t\t\t\t\t// events until *AFTER* the user lifts their finger (touchend). This means\r\n\t\t\t\t\t\t// we need to watch both scroll and touchmove events to figure out whether\r\n\t\t\t\t\t\t// or not a scroll happenens before the touchend event is fired.\r\n\r\n\t\t\t\t\t\t.bind( \"touchmove\", handleTouchMove )\r\n\t\t\t\t\t\t.bind( \"scroll\", handleScroll );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tteardown: function(/* data, namespace */) {\r\n\t\t\t// If this is the last virtual binding for this eventType,\r\n\t\t\t// remove its global handler from the document.\r\n\r\n\t\t\t--activeDocHandlers[ eventType ];\r\n\r\n\t\t\tif ( !activeDocHandlers[ eventType ] ) {\r\n\t\t\t\t$document.unbind( realType, mouseEventCallback );\r\n\t\t\t}\r\n\r\n\t\t\tif ( eventCaptureSupported ) {\r\n\t\t\t\t// If this is the last virtual mouse binding in existence,\r\n\t\t\t\t// remove our document touchstart listener.\r\n\r\n\t\t\t\t--activeDocHandlers[ \"touchstart\" ];\r\n\r\n\t\t\t\tif ( !activeDocHandlers[ \"touchstart\" ] ) {\r\n\t\t\t\t\t$document.unbind( \"touchstart\", handleTouchStart )\r\n\t\t\t\t\t\t.unbind( \"touchmove\", handleTouchMove )\r\n\t\t\t\t\t\t.unbind( \"touchend\", handleTouchEnd )\r\n\t\t\t\t\t\t.unbind( \"scroll\", handleScroll );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar $this = $( this ),\r\n\t\t\t\tbindings = $.data( this, dataPropertyName );\r\n\r\n\t\t\t// teardown may be called when an element was\r\n\t\t\t// removed from the DOM. If this is the case,\r\n\t\t\t// jQuery core may have already stripped the element\r\n\t\t\t// of any data bindings so we need to check it before\r\n\t\t\t// using it.\r\n\t\t\tif ( bindings ) {\r\n\t\t\t\tbindings[ eventType ] = false;\r\n\t\t\t}\r\n\r\n\t\t\t// Unregister the dummy event handler.\r\n\r\n\t\t\t$this.unbind( realType, dummyMouseHandler );\r\n\r\n\t\t\t// If this is the last virtual mouse binding on the\r\n\t\t\t// element, remove the binding data from the element.\r\n\r\n\t\t\tif ( !hasVirtualBindings( this ) ) {\r\n\t\t\t\t$this.removeData( dataPropertyName );\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// Expose our custom events to the jQuery bind/unbind mechanism.\r\n\r\nfor ( i = 0; i < virtualEventNames.length; i++ ) {\r\n\t$.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] );\r\n}\r\n\r\n// Add a capture click handler to block clicks.\r\n// Note that we require event capture support for this so if the device\r\n// doesn't support it, we punt for now and rely solely on mouse events.\r\nif ( eventCaptureSupported ) {\r\n\tdocument.addEventListener( \"click\", function( e ) {\r\n\t\tvar cnt = clickBlockList.length,\r\n\t\t\ttarget = e.target,\r\n\t\t\tx, y, ele, i, o, touchID;\r\n\r\n\t\tif ( cnt ) {\r\n\t\t\tx = e.clientX;\r\n\t\t\ty = e.clientY;\r\n\t\t\tthreshold = $.vmouse.clickDistanceThreshold;\r\n\r\n\t\t\t// The idea here is to run through the clickBlockList to see if\r\n\t\t\t// the current click event is in the proximity of one of our\r\n\t\t\t// vclick events that had preventDefault() called on it. If we find\r\n\t\t\t// one, then we block the click.\r\n\t\t\t//\r\n\t\t\t// Why do we have to rely on proximity?\r\n\t\t\t//\r\n\t\t\t// Because the target of the touch event that triggered the vclick\r\n\t\t\t// can be different from the target of the click event synthesized\r\n\t\t\t// by the browser. The target of a mouse/click event that is synthesized\r\n\t\t\t// from a touch event seems to be implementation specific. For example,\r\n\t\t\t// some browsers will fire mouse/click events for a link that is near\r\n\t\t\t// a touch event, even though the target of the touchstart/touchend event\r\n\t\t\t// says the user touched outside the link. Also, it seems that with most\r\n\t\t\t// browsers, the target of the mouse/click event is not calculated until the\r\n\t\t\t// time it is dispatched, so if you replace an element that you touched\r\n\t\t\t// with another element, the target of the mouse/click will be the new\r\n\t\t\t// element underneath that point.\r\n\t\t\t//\r\n\t\t\t// Aside from proximity, we also check to see if the target and any\r\n\t\t\t// of its ancestors were the ones that blocked a click. This is necessary\r\n\t\t\t// because of the strange mouse/click target calculation done in the\r\n\t\t\t// Android 2.1 browser, where if you click on an element, and there is a\r\n\t\t\t// mouse/click handler on one of its ancestors, the target will be the\r\n\t\t\t// innermost child of the touched element, even if that child is no where\r\n\t\t\t// near the point of touch.\r\n\r\n\t\t\tele = target;\r\n\r\n\t\t\twhile ( ele ) {\r\n\t\t\t\tfor ( i = 0; i < cnt; i++ ) {\r\n\t\t\t\t\to = clickBlockList[ i ];\r\n\t\t\t\t\ttouchID = 0;\r\n\r\n\t\t\t\t\tif ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) ||\r\n\t\t\t\t\t\t\t\t$.data( ele, touchTargetPropertyName ) === o.touchID ) {\r\n\t\t\t\t\t\t// XXX: We may want to consider removing matches from the block list\r\n\t\t\t\t\t\t// instead of waiting for the reset timer to fire.\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tele = ele.parentNode;\r\n\t\t\t}\r\n\t\t}\r\n\t}, true);\r\n}\r\n})( jQuery, window, document );\r\n\r\n(function( $ ) {\r\n\t$.mobile = {};\r\n}( jQuery ));\r\n\r\n\t(function( $, undefined ) {\r\n\t\tvar support = {\r\n\t\t\ttouch: \"ontouchend\" in document\r\n\t\t};\r\n\r\n\t\t$.mobile.support = $.mobile.support || {};\r\n\t\t$.extend( $.support, support );\r\n\t\t$.extend( $.mobile.support, support );\r\n\t}( jQuery ));\r\n\r\n\r\n(function( $, window, undefined ) {\r\n\tvar $document = $( document ),\r\n\t\tsupportTouch = $.mobile.support.touch,\r\n\t\tscrollEvent = \"touchmove scroll\",\r\n\t\ttouchStartEvent = supportTouch ? \"touchstart\" : \"mousedown\",\r\n\t\ttouchStopEvent = supportTouch ? \"touchend\" : \"mouseup\",\r\n\t\ttouchMoveEvent = supportTouch ? \"touchmove\" : \"mousemove\";\r\n\r\n\t// setup new event shortcuts\r\n\t$.each( ( \"touchstart touchmove touchend \" +\r\n\t\t\"tap taphold \" +\r\n\t\t\"swipe swipeleft swiperight \" +\r\n\t\t\"scrollstart scrollstop\" ).split( \" \" ), function( i, name ) {\r\n\r\n\t\t$.fn[ name ] = function( fn ) {\r\n\t\t\treturn fn ? this.bind( name, fn ) : this.trigger( name );\r\n\t\t};\r\n\r\n\t\t// jQuery < 1.8\r\n\t\tif ( $.attrFn ) {\r\n\t\t\t$.attrFn[ name ] = true;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction triggerCustomEvent( obj, eventType, event, bubble ) {\r\n\t\tvar originalType = event.type;\r\n\t\tevent.type = eventType;\r\n\t\tif ( bubble ) {\r\n\t\t\t$.event.trigger( event, undefined, obj );\r\n\t\t} else {\r\n\t\t\t$.event.dispatch.call( obj, event );\r\n\t\t}\r\n\t\tevent.type = originalType;\r\n\t}\r\n\r\n\t// also handles scrollstop\r\n\t$.event.special.scrollstart = {\r\n\r\n\t\tenabled: true,\r\n\t\tsetup: function() {\r\n\r\n\t\t\tvar thisObject = this,\r\n\t\t\t\t$this = $( thisObject ),\r\n\t\t\t\tscrolling,\r\n\t\t\t\ttimer;\r\n\r\n\t\t\tfunction trigger( event, state ) {\r\n\t\t\t\tscrolling = state;\r\n\t\t\t\ttriggerCustomEvent( thisObject, scrolling ? \"scrollstart\" : \"scrollstop\", event );\r\n\t\t\t}\r\n\r\n\t\t\t// iPhone triggers scroll after a small delay; use touchmove instead\r\n\t\t\t$this.bind( scrollEvent, function( event ) {\r\n\r\n\t\t\t\tif ( !$.event.special.scrollstart.enabled ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( !scrolling ) {\r\n\t\t\t\t\ttrigger( event, true );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclearTimeout( timer );\r\n\t\t\t\ttimer = setTimeout( function() {\r\n\t\t\t\t\ttrigger( event, false );\r\n\t\t\t\t}, 50 );\r\n\t\t\t});\r\n\t\t},\r\n\t\tteardown: function() {\r\n\t\t\t$( this ).unbind( scrollEvent );\r\n\t\t}\r\n\t};\r\n\r\n\t// also handles taphold\r\n\t$.event.special.tap = {\r\n\t\ttapholdThreshold: 750,\r\n\t\temitTapOnTaphold: true,\r\n\t\tsetup: function() {\r\n\t\t\tvar thisObject = this,\r\n\t\t\t\t$this = $( thisObject ),\r\n\t\t\t\tisTaphold = false;\r\n\r\n\t\t\t$this.bind( \"vmousedown\", function( event ) {\r\n\t\t\t\tisTaphold = false;\r\n\t\t\t\tif ( event.which && event.which !== 1 ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar origTarget = event.target,\r\n\t\t\t\t\ttimer;\r\n\r\n\t\t\t\tfunction clearTapTimer() {\r\n\t\t\t\t\tclearTimeout( timer );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction clearTapHandlers() {\r\n\t\t\t\t\tclearTapTimer();\r\n\r\n\t\t\t\t\t$this.unbind( \"vclick\", clickHandler )\r\n\t\t\t\t\t\t.unbind( \"vmouseup\", clearTapTimer );\r\n\t\t\t\t\t$document.unbind( \"vmousecancel\", clearTapHandlers );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction clickHandler( event ) {\r\n\t\t\t\t\tclearTapHandlers();\r\n\r\n\t\t\t\t\t// ONLY trigger a 'tap' event if the start target is\r\n\t\t\t\t\t// the same as the stop target.\r\n\t\t\t\t\tif ( !isTaphold && origTarget === event.target ) {\r\n\t\t\t\t\t\ttriggerCustomEvent( thisObject, \"tap\", event );\r\n\t\t\t\t\t} else if ( isTaphold ) {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$this.bind( \"vmouseup\", clearTapTimer )\r\n\t\t\t\t\t.bind( \"vclick\", clickHandler );\r\n\t\t\t\t$document.bind( \"vmousecancel\", clearTapHandlers );\r\n\r\n\t\t\t\ttimer = setTimeout( function() {\r\n\t\t\t\t\tif ( !$.event.special.tap.emitTapOnTaphold ) {\r\n\t\t\t\t\t\tisTaphold = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttriggerCustomEvent( thisObject, \"taphold\", $.Event( \"taphold\", { target: origTarget } ) );\r\n\t\t\t\t}, $.event.special.tap.tapholdThreshold );\r\n\t\t\t});\r\n\t\t},\r\n\t\tteardown: function() {\r\n\t\t\t$( this ).unbind( \"vmousedown\" ).unbind( \"vclick\" ).unbind( \"vmouseup\" );\r\n\t\t\t$document.unbind( \"vmousecancel\" );\r\n\t\t}\r\n\t};\r\n\r\n\t// Also handles swipeleft, swiperight\r\n\t$.event.special.swipe = {\r\n\r\n\t\t// More than this horizontal displacement, and we will suppress scrolling.\r\n\t\tscrollSupressionThreshold: 30,\r\n\r\n\t\t// More time than this, and it isn't a swipe.\r\n\t\tdurationThreshold: 1000,\r\n\r\n\t\t// Swipe horizontal displacement must be more than this.\r\n\t\thorizontalDistanceThreshold: 30,\r\n\r\n\t\t// Swipe vertical displacement must be less than this.\r\n\t\tverticalDistanceThreshold: 30,\r\n\r\n\t\tgetLocation: function ( event ) {\r\n\t\t\tvar winPageX = window.pageXOffset,\r\n\t\t\t\twinPageY = window.pageYOffset,\r\n\t\t\t\tx = event.clientX,\r\n\t\t\t\ty = event.clientY;\r\n\r\n\t\t\tif ( event.pageY === 0 && Math.floor( y ) > Math.floor( event.pageY ) ||\r\n\t\t\t\tevent.pageX === 0 && Math.floor( x ) > Math.floor( event.pageX ) ) {\r\n\r\n\t\t\t\t// iOS4 clientX/clientY have the value that should have been\r\n\t\t\t\t// in pageX/pageY. While pageX/page/ have the value 0\r\n\t\t\t\tx = x - winPageX;\r\n\t\t\t\ty = y - winPageY;\r\n\t\t\t} else if ( y < ( event.pageY - winPageY) || x < ( event.pageX - winPageX ) ) {\r\n\r\n\t\t\t\t// Some Android browsers have totally bogus values for clientX/Y\r\n\t\t\t\t// when scrolling/zooming a page. Detectable since clientX/clientY\r\n\t\t\t\t// should never be smaller than pageX/pageY minus page scroll\r\n\t\t\t\tx = event.pageX - winPageX;\r\n\t\t\t\ty = event.pageY - winPageY;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tstart: function( event ) {\r\n\t\t\tvar data = event.originalEvent.touches ?\r\n\t\t\t\t\tevent.originalEvent.touches[ 0 ] : event,\r\n\t\t\t\tlocation = $.event.special.swipe.getLocation( data );\r\n\t\t\treturn {\r\n\t\t\t\t\t\ttime: ( new Date() ).getTime(),\r\n\t\t\t\t\t\tcoords: [ location.x, location.y ],\r\n\t\t\t\t\t\torigin: $( event.target )\r\n\t\t\t\t\t};\r\n\t\t},\r\n\r\n\t\tstop: function( event ) {\r\n\t\t\tvar data = event.originalEvent.touches ?\r\n\t\t\t\t\tevent.originalEvent.touches[ 0 ] : event,\r\n\t\t\t\tlocation = $.event.special.swipe.getLocation( data );\r\n\t\t\treturn {\r\n\t\t\t\t\t\ttime: ( new Date() ).getTime(),\r\n\t\t\t\t\t\tcoords: [ location.x, location.y ]\r\n\t\t\t\t\t};\r\n\t\t},\r\n\r\n\t\thandleSwipe: function( start, stop, thisObject, origTarget ) {\r\n\t\t\tif ( stop.time - start.time < $.event.special.swipe.durationThreshold &&\r\n\t\t\t\tMath.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold &&\r\n\t\t\t\tMath.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) {\r\n\t\t\t\tvar direction = start.coords[0] > stop.coords[ 0 ] ? \"swipeleft\" : \"swiperight\";\r\n\r\n\t\t\t\ttriggerCustomEvent( thisObject, \"swipe\", $.Event( \"swipe\", { target: origTarget, swipestart: start, swipestop: stop }), true );\r\n\t\t\t\ttriggerCustomEvent( thisObject, direction,$.Event( direction, { target: origTarget, swipestart: start, swipestop: stop } ), true );\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\r\n\t\t},\r\n\r\n\t\t// This serves as a flag to ensure that at most one swipe event event is\r\n\t\t// in work at any given time\r\n\t\teventInProgress: false,\r\n\r\n\t\tsetup: function() {\r\n\t\t\tvar events,\r\n\t\t\t\tthisObject = this,\r\n\t\t\t\t$this = $( thisObject ),\r\n\t\t\t\tcontext = {};\r\n\r\n\t\t\t// Retrieve the events data for this element and add the swipe context\r\n\t\t\tevents = $.data( this, \"mobile-events\" );\r\n\t\t\tif ( !events ) {\r\n\t\t\t\tevents = { length: 0 };\r\n\t\t\t\t$.data( this, \"mobile-events\", events );\r\n\t\t\t}\r\n\t\t\tevents.length++;\r\n\t\t\tevents.swipe = context;\r\n\r\n\t\t\tcontext.start = function( event ) {\r\n\r\n\t\t\t\t// Bail if we're already working on a swipe event\r\n\t\t\t\tif ( $.event.special.swipe.eventInProgress ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t$.event.special.swipe.eventInProgress = true;\r\n\r\n\t\t\t\tvar stop,\r\n\t\t\t\t\tstart = $.event.special.swipe.start( event ),\r\n\t\t\t\t\torigTarget = event.target,\r\n\t\t\t\t\temitted = false;\r\n\r\n\t\t\t\tcontext.move = function( event ) {\r\n\t\t\t\t\tif ( !start || event.isDefaultPrevented() ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tstop = $.event.special.swipe.stop( event );\r\n\t\t\t\t\tif ( !emitted ) {\r\n\t\t\t\t\t\temitted = $.event.special.swipe.handleSwipe( start, stop, thisObject, origTarget );\r\n\t\t\t\t\t\tif ( emitted ) {\r\n\r\n\t\t\t\t\t\t\t// Reset the context to make way for the next swipe event\r\n\t\t\t\t\t\t\t$.event.special.swipe.eventInProgress = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// prevent scrolling\r\n\t\t\t\t\tif ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcontext.stop = function() {\r\n\t\t\t\t\t\temitted = true;\r\n\r\n\t\t\t\t\t\t// Reset the context to make way for the next swipe event\r\n\t\t\t\t\t\t$.event.special.swipe.eventInProgress = false;\r\n\t\t\t\t\t\t$document.off( touchMoveEvent, context.move );\r\n\t\t\t\t\t\tcontext.move = null;\r\n\t\t\t\t};\r\n\r\n\t\t\t\t$document.on( touchMoveEvent, context.move )\r\n\t\t\t\t\t.one( touchStopEvent, context.stop );\r\n\t\t\t};\r\n\t\t\t$this.on( touchStartEvent, context.start );\r\n\t\t},\r\n\r\n\t\tteardown: function() {\r\n\t\t\tvar events, context;\r\n\r\n\t\t\tevents = $.data( this, \"mobile-events\" );\r\n\t\t\tif ( events ) {\r\n\t\t\t\tcontext = events.swipe;\r\n\t\t\t\tdelete events.swipe;\r\n\t\t\t\tevents.length--;\r\n\t\t\t\tif ( events.length === 0 ) {\r\n\t\t\t\t\t$.removeData( this, \"mobile-events\" );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( context ) {\r\n\t\t\t\tif ( context.start ) {\r\n\t\t\t\t\t$( this ).off( touchStartEvent, context.start );\r\n\t\t\t\t}\r\n\t\t\t\tif ( context.move ) {\r\n\t\t\t\t\t$document.off( touchMoveEvent, context.move );\r\n\t\t\t\t}\r\n\t\t\t\tif ( context.stop ) {\r\n\t\t\t\t\t$document.off( touchStopEvent, context.stop );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t$.each({\r\n\t\tscrollstop: \"scrollstart\",\r\n\t\ttaphold: \"tap\",\r\n\t\tswipeleft: \"swipe.left\",\r\n\t\tswiperight: \"swipe.right\"\r\n\t}, function( event, sourceEvent ) {\r\n\r\n\t\t$.event.special[ event ] = {\r\n\t\t\tsetup: function() {\r\n\t\t\t\t$( this ).bind( sourceEvent, $.noop );\r\n\t\t\t},\r\n\t\t\tteardown: function() {\r\n\t\t\t\t$( this ).unbind( sourceEvent );\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n})( jQuery, this );\r\n\r\n\r\n}));\r\n","/*! jQuery UI - v1.10.4 - 2014-01-26\r\n* http://jqueryui.com\r\n* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.autocomplete.js, jquery.ui.menu.js\r\n* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */\r\n\r\n(function( $, undefined ) {\r\n\r\nvar uuid = 0,\r\n\truniqueId = /^ui-id-\\d+$/;\r\n\r\n// $.ui might exist from components with no dependencies, e.g., $.ui.position\r\n$.ui = $.ui || {};\r\n\r\n$.extend( $.ui, {\r\n\tversion: \"1.10.4\",\r\n\r\n\tkeyCode: {\r\n\t\tBACKSPACE: 8,\r\n\t\tCOMMA: 188,\r\n\t\tDELETE: 46,\r\n\t\tDOWN: 40,\r\n\t\tEND: 35,\r\n\t\tENTER: 13,\r\n\t\tESCAPE: 27,\r\n\t\tHOME: 36,\r\n\t\tLEFT: 37,\r\n\t\tNUMPAD_ADD: 107,\r\n\t\tNUMPAD_DECIMAL: 110,\r\n\t\tNUMPAD_DIVIDE: 111,\r\n\t\tNUMPAD_ENTER: 108,\r\n\t\tNUMPAD_MULTIPLY: 106,\r\n\t\tNUMPAD_SUBTRACT: 109,\r\n\t\tPAGE_DOWN: 34,\r\n\t\tPAGE_UP: 33,\r\n\t\tPERIOD: 190,\r\n\t\tRIGHT: 39,\r\n\t\tSPACE: 32,\r\n\t\tTAB: 9,\r\n\t\tUP: 38\r\n\t}\r\n});\r\n\r\n// plugins\r\n$.fn.extend({\r\n\tfocus: (function( orig ) {\r\n\t\treturn function( delay, fn ) {\r\n\t\t\treturn typeof delay === \"number\" ?\r\n\t\t\t\tthis.each(function() {\r\n\t\t\t\t\tvar elem = this;\r\n\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t$( elem ).focus();\r\n\t\t\t\t\t\tif ( fn ) {\r\n\t\t\t\t\t\t\tfn.call( elem );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, delay );\r\n\t\t\t\t}) :\r\n\t\t\t\torig.apply( this, arguments );\r\n\t\t};\r\n\t})( $.fn.focus ),\r\n\r\n\tscrollParent: function() {\r\n\t\tvar scrollParent;\r\n\t\tif (($.ui.ie && (/(static|relative)/).test(this.css(\"position\"))) || (/absolute/).test(this.css(\"position\"))) {\r\n\t\t\tscrollParent = this.parents().filter(function() {\r\n\t\t\t\treturn (/(relative|absolute|fixed)/).test($.css(this,\"position\")) && (/(auto|scroll)/).test($.css(this,\"overflow\")+$.css(this,\"overflow-y\")+$.css(this,\"overflow-x\"));\r\n\t\t\t}).eq(0);\r\n\t\t} else {\r\n\t\t\tscrollParent = this.parents().filter(function() {\r\n\t\t\t\treturn (/(auto|scroll)/).test($.css(this,\"overflow\")+$.css(this,\"overflow-y\")+$.css(this,\"overflow-x\"));\r\n\t\t\t}).eq(0);\r\n\t\t}\r\n\r\n\t\treturn (/fixed/).test(this.css(\"position\")) || !scrollParent.length ? $(document) : scrollParent;\r\n\t},\r\n\r\n\tzIndex: function( zIndex ) {\r\n\t\tif ( zIndex !== undefined ) {\r\n\t\t\treturn this.css( \"zIndex\", zIndex );\r\n\t\t}\r\n\r\n\t\tif ( this.length ) {\r\n\t\t\tvar elem = $( this[ 0 ] ), position, value;\r\n\t\t\twhile ( elem.length && elem[ 0 ] !== document ) {\r\n\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\r\n\t\t\t\t// This makes behavior of this function consistent across browsers\r\n\t\t\t\t// WebKit always returns auto if the element is positioned\r\n\t\t\t\tposition = elem.css( \"position\" );\r\n\t\t\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\r\n\t\t\t\t\t// IE returns 0 when zIndex is not specified\r\n\t\t\t\t\t// other browsers return a string\r\n\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\r\n\t\t\t\t\t//