removed jquery and jqueryUI from webinterface
Bernd Wurst

Bernd Wurst commited on 2023-04-29 11:47:42
Zeige 62 geänderte Dateien mit 409 Einfügungen und 22080 Löschungen.

... ...
@@ -35,6 +35,5 @@ $config['mime_type'] = 'text/html';
35 35
 
36 36
 $config['session_name'] = 'CONFIG_SCHOKOKEKS_ORG';
37 37
 $config['theme'] = 'default';
38
-$config['jquery_ui_path'] = '/external/jquery';
39 38
 
40 39
 ini_set('display_errors', 'On');
... ...
@@ -1,2 +0,0 @@
1
-/*! jQuery v3.6.4 | (c) OpenJS Foundation and other contributors | jquery.org/license */
2
-!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.4",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=y.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:v}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,y,s,c,v,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssHas=ce(function(){try{return C.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssHas||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),v(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace($," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,y){var v="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===y?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=v!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(v){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=y)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ye(function(){return[0]}),last:ye(function(e,t){return[t-1]}),eq:ye(function(e,t,n){return[n<0?n+t:n]}),even:ye(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ye(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ye(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ye(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,y,v,e){return y&&!y[S]&&(y=Ce(y)),v&&!v[S]&&(v=Ce(v,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?v||(e?d:l||y)?[]:t:f;if(g&&g(f,p,n,r),y){i=Te(p,u),y(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(v||d){if(v){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);v(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=v?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),v?v(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,y,v,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(y=o,m=0<(v=i).length,x=0<y.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=y[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=v[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+v.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ve(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ve(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function $(){E.removeEventListener("DOMContentLoaded",$),C.removeEventListener("load",$),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",$),C.addEventListener("load",$));var B=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)B(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):B(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",v.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,v.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=y.events)||(u=y.events=Object.create(null)),(a=y.handle)||(a=y.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=Y.hasData(e)&&Y.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||S.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(t,e){S.event.special[t]={setup:function(){return Se(this,t,Ce),!1},trigger:function(){return Se(this,t),!0},_default:function(e){return Y.get(e.target,t)},delegateType:e}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!v.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ye(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ye(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ye(r)),r.parentNode&&(n&&ie(r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(v.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ye(c),r=0,i=(o=ye(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ye(e),a=a||ye(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ye(c,"script")).length&&ve(a,!f&&ye(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return B(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return B(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ye(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=/^--/,Me=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Ie=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},We=new RegExp(ne.join("|"),"i"),Fe="[\\x20\\t\\r\\n\\f]",$e=new RegExp("^"+Fe+"+|((?:^|[^\\\\])(?:\\\\.)*)"+Fe+"+$","g");function Be(e,t,n){var r,i,o,a,s=Re.test(t),u=e.style;return(n=n||Me(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace($e,"$1")||void 0),""!==a||ie(e)||(a=S.style(e,t)),!v.pixelBoxStyles()&&Pe.test(a)&&We.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",v.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(v,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var ze=["Webkit","Moz","ms"],Ue=E.createElement("div").style,Xe={};function Ve(e){var t=S.cssProps[e]||Xe[e];return t||(e in Ue?e:Xe[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=ze.length;while(n--)if((e=ze[n]+t)in Ue)return e}(e)||e)}var Ge=/^(none|table(?!-c[ea]).+)/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Me(e),i=(!v.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!v.boxSizingReliable()&&i||!v.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Re.test(t),l=e.style;if(u||(t=Ve(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),v.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Re.test(t)||(t=Ve(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ge.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):Ie(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Me(e),o=!v.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Je(0,t,s)}}}),S.cssHooks.marginLeft=_e(v.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-Ie(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Je)}),S.fn.extend({css:function(e,t){return B(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Me(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Ve(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=et.prototype.init,S.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,S.fx.interval),S.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(y?"hidden"in y&&(g=y.hidden):y=Y.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ct(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=ft(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),S.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),tt=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){nt||(nt=!0,st())},S.fx.stop=function(){nt=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=E.createElement("input"),it=E.createElement("select").appendChild(E.createElement("option")),rt.type="checkbox",v.checkOn=""!==rt.value,v.optSelected=it.selected,(rt=E.createElement("input")).value="t",rt.type="radio",v.radioValue="t"===rt.value;var pt,dt=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return B(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!v.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||S.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function yt(e){return(e.match(P)||[]).join(" ")}function vt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return B(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),v.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a;return m(t)?this.each(function(e){S(this).addClass(t.call(this,e,vt(this)))}):(e=mt(t)).length?this.each(function(){if(r=vt(this),n=1===this.nodeType&&" "+yt(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=yt(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return m(t)?this.each(function(e){S(this).removeClass(t.call(this,e,vt(this)))}):arguments.length?(e=mt(t)).length?this.each(function(){if(r=vt(this),n=1===this.nodeType&&" "+yt(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=yt(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return m(t)?this.each(function(e){S(this).toggleClass(t.call(this,e,vt(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=mt(t),this.each(function(){if(s)for(o=S(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=vt(this))&&Y.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":Y.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+yt(vt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:yt(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},v.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),v.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=y.call(e,"type")?e.type:e,h=y.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),v.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},Et=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var St=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function jt(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||St.test(n)?i(n,t):jt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)jt(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var Dt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=E.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function $t(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Bt(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Wt.href=Tt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Bt(Bt(e,S.ajaxSettings),t):Bt(S.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,y=S.ajaxSetup({},t),v=y.context||y,m=y.context&&(v.nodeType||v.jquery)?S(v):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=y.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(y.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),y.url=((e||y.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),y.type=t.method||t.type||y.method||y.type,y.dataTypes=(y.dataType||"*").toLowerCase().match(P)||[""],null==y.crossDomain){r=E.createElement("a");try{r.href=y.url,r.href=r.href,y.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){y.crossDomain=!0}}if(y.data&&y.processData&&"string"!=typeof y.data&&(y.data=S.param(y.data,y.traditional)),$t(Rt,y,t,T),h)return T;for(i in(g=S.event&&y.global)&&0==S.active++&&S.event.trigger("ajaxStart"),y.type=y.type.toUpperCase(),y.hasContent=!Ot.test(y.type),f=y.url.replace(qt,""),y.hasContent?y.data&&y.processData&&0===(y.contentType||"").indexOf("application/x-www-form-urlencoded")&&(y.data=y.data.replace(Dt,"+")):(o=y.url.slice(f.length),y.data&&(y.processData||"string"==typeof y.data)&&(f+=(Et.test(f)?"&":"?")+y.data,delete y.data),!1===y.cache&&(f=f.replace(Lt,"$1"),o=(Et.test(f)?"&":"?")+"_="+Ct.guid+++o),y.url=f+o),y.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(y.data&&y.hasContent&&!1!==y.contentType||t.contentType)&&T.setRequestHeader("Content-Type",y.contentType),T.setRequestHeader("Accept",y.dataTypes[0]&&y.accepts[y.dataTypes[0]]?y.accepts[y.dataTypes[0]]+("*"!==y.dataTypes[0]?", "+It+"; q=0.01":""):y.accepts["*"]),y.headers)T.setRequestHeader(i,y.headers[i]);if(y.beforeSend&&(!1===y.beforeSend.call(v,T,y)||h))return T.abort();if(u="abort",b.add(y.complete),T.done(y.success),T.fail(y.error),c=$t(Mt,y,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,y]),h)return T;y.async&&0<y.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},y.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(y,T,n)),!i&&-1<S.inArray("script",y.dataTypes)&&S.inArray("json",y.dataTypes)<0&&(y.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(y,s,T,i),i?(y.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===y.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(v,[o,l,T]):x.rejectWith(v,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,y,i?o:a]),b.fireWith(v,[T,l]),g&&(m.trigger("ajaxComplete",[T,y]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=S.ajaxSettings.xhr();v.cors=!!zt&&"withCredentials"in zt,v.ajax=zt=!!zt,S.ajaxTransport(function(i){var o,a;if(v.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=yt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Gt,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Yt=C.jQuery,Qt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Qt),e&&C.jQuery===S&&(C.jQuery=Yt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
... ...
@@ -1,1315 +0,0 @@
1
-/*! jQuery UI - v1.13.2 - 2022-07-14
2
-* http://jqueryui.com
3
-* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
4
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
5
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
6
-
7
-/* Layout helpers
8
-----------------------------------*/
9
-.ui-helper-hidden {
10
-	display: none;
11
-}
12
-.ui-helper-hidden-accessible {
13
-	border: 0;
14
-	clip: rect(0 0 0 0);
15
-	height: 1px;
16
-	margin: -1px;
17
-	overflow: hidden;
18
-	padding: 0;
19
-	position: absolute;
20
-	width: 1px;
21
-}
22
-.ui-helper-reset {
23
-	margin: 0;
24
-	padding: 0;
25
-	border: 0;
26
-	outline: 0;
27
-	line-height: 1.3;
28
-	text-decoration: none;
29
-	font-size: 100%;
30
-	list-style: none;
31
-}
32
-.ui-helper-clearfix:before,
33
-.ui-helper-clearfix:after {
34
-	content: "";
35
-	display: table;
36
-	border-collapse: collapse;
37
-}
38
-.ui-helper-clearfix:after {
39
-	clear: both;
40
-}
41
-.ui-helper-zfix {
42
-	width: 100%;
43
-	height: 100%;
44
-	top: 0;
45
-	left: 0;
46
-	position: absolute;
47
-	opacity: 0;
48
-	-ms-filter: "alpha(opacity=0)"; /* support: IE8 */
49
-}
50
-
51
-.ui-front {
52
-	z-index: 100;
53
-}
54
-
55
-
56
-/* Interaction Cues
57
-----------------------------------*/
58
-.ui-state-disabled {
59
-	cursor: default !important;
60
-	pointer-events: none;
61
-}
62
-
63
-
64
-/* Icons
65
-----------------------------------*/
66
-.ui-icon {
67
-	display: inline-block;
68
-	vertical-align: middle;
69
-	margin-top: -.25em;
70
-	position: relative;
71
-	text-indent: -99999px;
72
-	overflow: hidden;
73
-	background-repeat: no-repeat;
74
-}
75
-
76
-.ui-widget-icon-block {
77
-	left: 50%;
78
-	margin-left: -8px;
79
-	display: block;
80
-}
81
-
82
-/* Misc visuals
83
-----------------------------------*/
84
-
85
-/* Overlays */
86
-.ui-widget-overlay {
87
-	position: fixed;
88
-	top: 0;
89
-	left: 0;
90
-	width: 100%;
91
-	height: 100%;
92
-}
93
-.ui-accordion .ui-accordion-header {
94
-	display: block;
95
-	cursor: pointer;
96
-	position: relative;
97
-	margin: 2px 0 0 0;
98
-	padding: .5em .5em .5em .7em;
99
-	font-size: 100%;
100
-}
101
-.ui-accordion .ui-accordion-content {
102
-	padding: 1em 2.2em;
103
-	border-top: 0;
104
-	overflow: auto;
105
-}
106
-.ui-autocomplete {
107
-	position: absolute;
108
-	top: 0;
109
-	left: 0;
110
-	cursor: default;
111
-}
112
-.ui-menu {
113
-	list-style: none;
114
-	padding: 0;
115
-	margin: 0;
116
-	display: block;
117
-	outline: 0;
118
-}
119
-.ui-menu .ui-menu {
120
-	position: absolute;
121
-}
122
-.ui-menu .ui-menu-item {
123
-	margin: 0;
124
-	cursor: pointer;
125
-	/* support: IE10, see #8844 */
126
-	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
127
-}
128
-.ui-menu .ui-menu-item-wrapper {
129
-	position: relative;
130
-	padding: 3px 1em 3px .4em;
131
-}
132
-.ui-menu .ui-menu-divider {
133
-	margin: 5px 0;
134
-	height: 0;
135
-	font-size: 0;
136
-	line-height: 0;
137
-	border-width: 1px 0 0 0;
138
-}
139
-.ui-menu .ui-state-focus,
140
-.ui-menu .ui-state-active {
141
-	margin: -1px;
142
-}
143
-
144
-/* icon support */
145
-.ui-menu-icons {
146
-	position: relative;
147
-}
148
-.ui-menu-icons .ui-menu-item-wrapper {
149
-	padding-left: 2em;
150
-}
151
-
152
-/* left-aligned */
153
-.ui-menu .ui-icon {
154
-	position: absolute;
155
-	top: 0;
156
-	bottom: 0;
157
-	left: .2em;
158
-	margin: auto 0;
159
-}
160
-
161
-/* right-aligned */
162
-.ui-menu .ui-menu-icon {
163
-	left: auto;
164
-	right: 0;
165
-}
166
-.ui-button {
167
-	padding: .4em 1em;
168
-	display: inline-block;
169
-	position: relative;
170
-	line-height: normal;
171
-	margin-right: .1em;
172
-	cursor: pointer;
173
-	vertical-align: middle;
174
-	text-align: center;
175
-	-webkit-user-select: none;
176
-	-moz-user-select: none;
177
-	-ms-user-select: none;
178
-	user-select: none;
179
-
180
-	/* Support: IE <= 11 */
181
-	overflow: visible;
182
-}
183
-
184
-.ui-button,
185
-.ui-button:link,
186
-.ui-button:visited,
187
-.ui-button:hover,
188
-.ui-button:active {
189
-	text-decoration: none;
190
-}
191
-
192
-/* to make room for the icon, a width needs to be set here */
193
-.ui-button-icon-only {
194
-	width: 2em;
195
-	box-sizing: border-box;
196
-	text-indent: -9999px;
197
-	white-space: nowrap;
198
-}
199
-
200
-/* no icon support for input elements */
201
-input.ui-button.ui-button-icon-only {
202
-	text-indent: 0;
203
-}
204
-
205
-/* button icon element(s) */
206
-.ui-button-icon-only .ui-icon {
207
-	position: absolute;
208
-	top: 50%;
209
-	left: 50%;
210
-	margin-top: -8px;
211
-	margin-left: -8px;
212
-}
213
-
214
-.ui-button.ui-icon-notext .ui-icon {
215
-	padding: 0;
216
-	width: 2.1em;
217
-	height: 2.1em;
218
-	text-indent: -9999px;
219
-	white-space: nowrap;
220
-
221
-}
222
-
223
-input.ui-button.ui-icon-notext .ui-icon {
224
-	width: auto;
225
-	height: auto;
226
-	text-indent: 0;
227
-	white-space: normal;
228
-	padding: .4em 1em;
229
-}
230
-
231
-/* workarounds */
232
-/* Support: Firefox 5 - 40 */
233
-input.ui-button::-moz-focus-inner,
234
-button.ui-button::-moz-focus-inner {
235
-	border: 0;
236
-	padding: 0;
237
-}
238
-.ui-controlgroup {
239
-	vertical-align: middle;
240
-	display: inline-block;
241
-}
242
-.ui-controlgroup > .ui-controlgroup-item {
243
-	float: left;
244
-	margin-left: 0;
245
-	margin-right: 0;
246
-}
247
-.ui-controlgroup > .ui-controlgroup-item:focus,
248
-.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
249
-	z-index: 9999;
250
-}
251
-.ui-controlgroup-vertical > .ui-controlgroup-item {
252
-	display: block;
253
-	float: none;
254
-	width: 100%;
255
-	margin-top: 0;
256
-	margin-bottom: 0;
257
-	text-align: left;
258
-}
259
-.ui-controlgroup-vertical .ui-controlgroup-item {
260
-	box-sizing: border-box;
261
-}
262
-.ui-controlgroup .ui-controlgroup-label {
263
-	padding: .4em 1em;
264
-}
265
-.ui-controlgroup .ui-controlgroup-label span {
266
-	font-size: 80%;
267
-}
268
-.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
269
-	border-left: none;
270
-}
271
-.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
272
-	border-top: none;
273
-}
274
-.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
275
-	border-right: none;
276
-}
277
-.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
278
-	border-bottom: none;
279
-}
280
-
281
-/* Spinner specific style fixes */
282
-.ui-controlgroup-vertical .ui-spinner-input {
283
-
284
-	/* Support: IE8 only, Android < 4.4 only */
285
-	width: 75%;
286
-	width: calc( 100% - 2.4em );
287
-}
288
-.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
289
-	border-top-style: solid;
290
-}
291
-
292
-.ui-checkboxradio-label .ui-icon-background {
293
-	box-shadow: inset 1px 1px 1px #ccc;
294
-	border-radius: .12em;
295
-	border: none;
296
-}
297
-.ui-checkboxradio-radio-label .ui-icon-background {
298
-	width: 16px;
299
-	height: 16px;
300
-	border-radius: 1em;
301
-	overflow: visible;
302
-	border: none;
303
-}
304
-.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
305
-.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
306
-	background-image: none;
307
-	width: 8px;
308
-	height: 8px;
309
-	border-width: 4px;
310
-	border-style: solid;
311
-}
312
-.ui-checkboxradio-disabled {
313
-	pointer-events: none;
314
-}
315
-.ui-datepicker {
316
-	width: 17em;
317
-	padding: .2em .2em 0;
318
-	display: none;
319
-}
320
-.ui-datepicker .ui-datepicker-header {
321
-	position: relative;
322
-	padding: .2em 0;
323
-}
324
-.ui-datepicker .ui-datepicker-prev,
325
-.ui-datepicker .ui-datepicker-next {
326
-	position: absolute;
327
-	top: 2px;
328
-	width: 1.8em;
329
-	height: 1.8em;
330
-}
331
-.ui-datepicker .ui-datepicker-prev-hover,
332
-.ui-datepicker .ui-datepicker-next-hover {
333
-	top: 1px;
334
-}
335
-.ui-datepicker .ui-datepicker-prev {
336
-	left: 2px;
337
-}
338
-.ui-datepicker .ui-datepicker-next {
339
-	right: 2px;
340
-}
341
-.ui-datepicker .ui-datepicker-prev-hover {
342
-	left: 1px;
343
-}
344
-.ui-datepicker .ui-datepicker-next-hover {
345
-	right: 1px;
346
-}
347
-.ui-datepicker .ui-datepicker-prev span,
348
-.ui-datepicker .ui-datepicker-next span {
349
-	display: block;
350
-	position: absolute;
351
-	left: 50%;
352
-	margin-left: -8px;
353
-	top: 50%;
354
-	margin-top: -8px;
355
-}
356
-.ui-datepicker .ui-datepicker-title {
357
-	margin: 0 2.3em;
358
-	line-height: 1.8em;
359
-	text-align: center;
360
-}
361
-.ui-datepicker .ui-datepicker-title select {
362
-	font-size: 1em;
363
-	margin: 1px 0;
364
-}
365
-.ui-datepicker select.ui-datepicker-month,
366
-.ui-datepicker select.ui-datepicker-year {
367
-	width: 45%;
368
-}
369
-.ui-datepicker table {
370
-	width: 100%;
371
-	font-size: .9em;
372
-	border-collapse: collapse;
373
-	margin: 0 0 .4em;
374
-}
375
-.ui-datepicker th {
376
-	padding: .7em .3em;
377
-	text-align: center;
378
-	font-weight: bold;
379
-	border: 0;
380
-}
381
-.ui-datepicker td {
382
-	border: 0;
383
-	padding: 1px;
384
-}
385
-.ui-datepicker td span,
386
-.ui-datepicker td a {
387
-	display: block;
388
-	padding: .2em;
389
-	text-align: right;
390
-	text-decoration: none;
391
-}
392
-.ui-datepicker .ui-datepicker-buttonpane {
393
-	background-image: none;
394
-	margin: .7em 0 0 0;
395
-	padding: 0 .2em;
396
-	border-left: 0;
397
-	border-right: 0;
398
-	border-bottom: 0;
399
-}
400
-.ui-datepicker .ui-datepicker-buttonpane button {
401
-	float: right;
402
-	margin: .5em .2em .4em;
403
-	cursor: pointer;
404
-	padding: .2em .6em .3em .6em;
405
-	width: auto;
406
-	overflow: visible;
407
-}
408
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
409
-	float: left;
410
-}
411
-
412
-/* with multiple calendars */
413
-.ui-datepicker.ui-datepicker-multi {
414
-	width: auto;
415
-}
416
-.ui-datepicker-multi .ui-datepicker-group {
417
-	float: left;
418
-}
419
-.ui-datepicker-multi .ui-datepicker-group table {
420
-	width: 95%;
421
-	margin: 0 auto .4em;
422
-}
423
-.ui-datepicker-multi-2 .ui-datepicker-group {
424
-	width: 50%;
425
-}
426
-.ui-datepicker-multi-3 .ui-datepicker-group {
427
-	width: 33.3%;
428
-}
429
-.ui-datepicker-multi-4 .ui-datepicker-group {
430
-	width: 25%;
431
-}
432
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
433
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
434
-	border-left-width: 0;
435
-}
436
-.ui-datepicker-multi .ui-datepicker-buttonpane {
437
-	clear: left;
438
-}
439
-.ui-datepicker-row-break {
440
-	clear: both;
441
-	width: 100%;
442
-	font-size: 0;
443
-}
444
-
445
-/* RTL support */
446
-.ui-datepicker-rtl {
447
-	direction: rtl;
448
-}
449
-.ui-datepicker-rtl .ui-datepicker-prev {
450
-	right: 2px;
451
-	left: auto;
452
-}
453
-.ui-datepicker-rtl .ui-datepicker-next {
454
-	left: 2px;
455
-	right: auto;
456
-}
457
-.ui-datepicker-rtl .ui-datepicker-prev:hover {
458
-	right: 1px;
459
-	left: auto;
460
-}
461
-.ui-datepicker-rtl .ui-datepicker-next:hover {
462
-	left: 1px;
463
-	right: auto;
464
-}
465
-.ui-datepicker-rtl .ui-datepicker-buttonpane {
466
-	clear: right;
467
-}
468
-.ui-datepicker-rtl .ui-datepicker-buttonpane button {
469
-	float: left;
470
-}
471
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
472
-.ui-datepicker-rtl .ui-datepicker-group {
473
-	float: right;
474
-}
475
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
476
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
477
-	border-right-width: 0;
478
-	border-left-width: 1px;
479
-}
480
-
481
-/* Icons */
482
-.ui-datepicker .ui-icon {
483
-	display: block;
484
-	text-indent: -99999px;
485
-	overflow: hidden;
486
-	background-repeat: no-repeat;
487
-	left: .5em;
488
-	top: .3em;
489
-}
490
-.ui-dialog {
491
-	position: absolute;
492
-	top: 0;
493
-	left: 0;
494
-	padding: .2em;
495
-	outline: 0;
496
-}
497
-.ui-dialog .ui-dialog-titlebar {
498
-	padding: .4em 1em;
499
-	position: relative;
500
-}
501
-.ui-dialog .ui-dialog-title {
502
-	float: left;
503
-	margin: .1em 0;
504
-	white-space: nowrap;
505
-	width: 90%;
506
-	overflow: hidden;
507
-	text-overflow: ellipsis;
508
-}
509
-.ui-dialog .ui-dialog-titlebar-close {
510
-	position: absolute;
511
-	right: .3em;
512
-	top: 50%;
513
-	width: 20px;
514
-	margin: -10px 0 0 0;
515
-	padding: 1px;
516
-	height: 20px;
517
-}
518
-.ui-dialog .ui-dialog-content {
519
-	position: relative;
520
-	border: 0;
521
-	padding: .5em 1em;
522
-	background: none;
523
-	overflow: auto;
524
-}
525
-.ui-dialog .ui-dialog-buttonpane {
526
-	text-align: left;
527
-	border-width: 1px 0 0 0;
528
-	background-image: none;
529
-	margin-top: .5em;
530
-	padding: .3em 1em .5em .4em;
531
-}
532
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
533
-	float: right;
534
-}
535
-.ui-dialog .ui-dialog-buttonpane button {
536
-	margin: .5em .4em .5em 0;
537
-	cursor: pointer;
538
-}
539
-.ui-dialog .ui-resizable-n {
540
-	height: 2px;
541
-	top: 0;
542
-}
543
-.ui-dialog .ui-resizable-e {
544
-	width: 2px;
545
-	right: 0;
546
-}
547
-.ui-dialog .ui-resizable-s {
548
-	height: 2px;
549
-	bottom: 0;
550
-}
551
-.ui-dialog .ui-resizable-w {
552
-	width: 2px;
553
-	left: 0;
554
-}
555
-.ui-dialog .ui-resizable-se,
556
-.ui-dialog .ui-resizable-sw,
557
-.ui-dialog .ui-resizable-ne,
558
-.ui-dialog .ui-resizable-nw {
559
-	width: 7px;
560
-	height: 7px;
561
-}
562
-.ui-dialog .ui-resizable-se {
563
-	right: 0;
564
-	bottom: 0;
565
-}
566
-.ui-dialog .ui-resizable-sw {
567
-	left: 0;
568
-	bottom: 0;
569
-}
570
-.ui-dialog .ui-resizable-ne {
571
-	right: 0;
572
-	top: 0;
573
-}
574
-.ui-dialog .ui-resizable-nw {
575
-	left: 0;
576
-	top: 0;
577
-}
578
-.ui-draggable .ui-dialog-titlebar {
579
-	cursor: move;
580
-}
581
-.ui-draggable-handle {
582
-	-ms-touch-action: none;
583
-	touch-action: none;
584
-}
585
-.ui-resizable {
586
-	position: relative;
587
-}
588
-.ui-resizable-handle {
589
-	position: absolute;
590
-	font-size: 0.1px;
591
-	display: block;
592
-	-ms-touch-action: none;
593
-	touch-action: none;
594
-}
595
-.ui-resizable-disabled .ui-resizable-handle,
596
-.ui-resizable-autohide .ui-resizable-handle {
597
-	display: none;
598
-}
599
-.ui-resizable-n {
600
-	cursor: n-resize;
601
-	height: 7px;
602
-	width: 100%;
603
-	top: -5px;
604
-	left: 0;
605
-}
606
-.ui-resizable-s {
607
-	cursor: s-resize;
608
-	height: 7px;
609
-	width: 100%;
610
-	bottom: -5px;
611
-	left: 0;
612
-}
613
-.ui-resizable-e {
614
-	cursor: e-resize;
615
-	width: 7px;
616
-	right: -5px;
617
-	top: 0;
618
-	height: 100%;
619
-}
620
-.ui-resizable-w {
621
-	cursor: w-resize;
622
-	width: 7px;
623
-	left: -5px;
624
-	top: 0;
625
-	height: 100%;
626
-}
627
-.ui-resizable-se {
628
-	cursor: se-resize;
629
-	width: 12px;
630
-	height: 12px;
631
-	right: 1px;
632
-	bottom: 1px;
633
-}
634
-.ui-resizable-sw {
635
-	cursor: sw-resize;
636
-	width: 9px;
637
-	height: 9px;
638
-	left: -5px;
639
-	bottom: -5px;
640
-}
641
-.ui-resizable-nw {
642
-	cursor: nw-resize;
643
-	width: 9px;
644
-	height: 9px;
645
-	left: -5px;
646
-	top: -5px;
647
-}
648
-.ui-resizable-ne {
649
-	cursor: ne-resize;
650
-	width: 9px;
651
-	height: 9px;
652
-	right: -5px;
653
-	top: -5px;
654
-}
655
-.ui-progressbar {
656
-	height: 2em;
657
-	text-align: left;
658
-	overflow: hidden;
659
-}
660
-.ui-progressbar .ui-progressbar-value {
661
-	margin: -1px;
662
-	height: 100%;
663
-}
664
-.ui-progressbar .ui-progressbar-overlay {
665
-	background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
666
-	height: 100%;
667
-	-ms-filter: "alpha(opacity=25)"; /* support: IE8 */
668
-	opacity: 0.25;
669
-}
670
-.ui-progressbar-indeterminate .ui-progressbar-value {
671
-	background-image: none;
672
-}
673
-.ui-selectable {
674
-	-ms-touch-action: none;
675
-	touch-action: none;
676
-}
677
-.ui-selectable-helper {
678
-	position: absolute;
679
-	z-index: 100;
680
-	border: 1px dotted black;
681
-}
682
-.ui-selectmenu-menu {
683
-	padding: 0;
684
-	margin: 0;
685
-	position: absolute;
686
-	top: 0;
687
-	left: 0;
688
-	display: none;
689
-}
690
-.ui-selectmenu-menu .ui-menu {
691
-	overflow: auto;
692
-	overflow-x: hidden;
693
-	padding-bottom: 1px;
694
-}
695
-.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
696
-	font-size: 1em;
697
-	font-weight: bold;
698
-	line-height: 1.5;
699
-	padding: 2px 0.4em;
700
-	margin: 0.5em 0 0 0;
701
-	height: auto;
702
-	border: 0;
703
-}
704
-.ui-selectmenu-open {
705
-	display: block;
706
-}
707
-.ui-selectmenu-text {
708
-	display: block;
709
-	margin-right: 20px;
710
-	overflow: hidden;
711
-	text-overflow: ellipsis;
712
-}
713
-.ui-selectmenu-button.ui-button {
714
-	text-align: left;
715
-	white-space: nowrap;
716
-	width: 14em;
717
-}
718
-.ui-selectmenu-icon.ui-icon {
719
-	float: right;
720
-	margin-top: 0;
721
-}
722
-.ui-slider {
723
-	position: relative;
724
-	text-align: left;
725
-}
726
-.ui-slider .ui-slider-handle {
727
-	position: absolute;
728
-	z-index: 2;
729
-	width: 1.2em;
730
-	height: 1.2em;
731
-	cursor: pointer;
732
-	-ms-touch-action: none;
733
-	touch-action: none;
734
-}
735
-.ui-slider .ui-slider-range {
736
-	position: absolute;
737
-	z-index: 1;
738
-	font-size: .7em;
739
-	display: block;
740
-	border: 0;
741
-	background-position: 0 0;
742
-}
743
-
744
-/* support: IE8 - See #6727 */
745
-.ui-slider.ui-state-disabled .ui-slider-handle,
746
-.ui-slider.ui-state-disabled .ui-slider-range {
747
-	filter: inherit;
748
-}
749
-
750
-.ui-slider-horizontal {
751
-	height: .8em;
752
-}
753
-.ui-slider-horizontal .ui-slider-handle {
754
-	top: -.3em;
755
-	margin-left: -.6em;
756
-}
757
-.ui-slider-horizontal .ui-slider-range {
758
-	top: 0;
759
-	height: 100%;
760
-}
761
-.ui-slider-horizontal .ui-slider-range-min {
762
-	left: 0;
763
-}
764
-.ui-slider-horizontal .ui-slider-range-max {
765
-	right: 0;
766
-}
767
-
768
-.ui-slider-vertical {
769
-	width: .8em;
770
-	height: 100px;
771
-}
772
-.ui-slider-vertical .ui-slider-handle {
773
-	left: -.3em;
774
-	margin-left: 0;
775
-	margin-bottom: -.6em;
776
-}
777
-.ui-slider-vertical .ui-slider-range {
778
-	left: 0;
779
-	width: 100%;
780
-}
781
-.ui-slider-vertical .ui-slider-range-min {
782
-	bottom: 0;
783
-}
784
-.ui-slider-vertical .ui-slider-range-max {
785
-	top: 0;
786
-}
787
-.ui-sortable-handle {
788
-	-ms-touch-action: none;
789
-	touch-action: none;
790
-}
791
-.ui-spinner {
792
-	position: relative;
793
-	display: inline-block;
794
-	overflow: hidden;
795
-	padding: 0;
796
-	vertical-align: middle;
797
-}
798
-.ui-spinner-input {
799
-	border: none;
800
-	background: none;
801
-	color: inherit;
802
-	padding: .222em 0;
803
-	margin: .2em 0;
804
-	vertical-align: middle;
805
-	margin-left: .4em;
806
-	margin-right: 2em;
807
-}
808
-.ui-spinner-button {
809
-	width: 1.6em;
810
-	height: 50%;
811
-	font-size: .5em;
812
-	padding: 0;
813
-	margin: 0;
814
-	text-align: center;
815
-	position: absolute;
816
-	cursor: default;
817
-	display: block;
818
-	overflow: hidden;
819
-	right: 0;
820
-}
821
-/* more specificity required here to override default borders */
822
-.ui-spinner a.ui-spinner-button {
823
-	border-top-style: none;
824
-	border-bottom-style: none;
825
-	border-right-style: none;
826
-}
827
-.ui-spinner-up {
828
-	top: 0;
829
-}
830
-.ui-spinner-down {
831
-	bottom: 0;
832
-}
833
-.ui-tabs {
834
-	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
835
-	padding: .2em;
836
-}
837
-.ui-tabs .ui-tabs-nav {
838
-	margin: 0;
839
-	padding: .2em .2em 0;
840
-}
841
-.ui-tabs .ui-tabs-nav li {
842
-	list-style: none;
843
-	float: left;
844
-	position: relative;
845
-	top: 0;
846
-	margin: 1px .2em 0 0;
847
-	border-bottom-width: 0;
848
-	padding: 0;
849
-	white-space: nowrap;
850
-}
851
-.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
852
-	float: left;
853
-	padding: .5em 1em;
854
-	text-decoration: none;
855
-}
856
-.ui-tabs .ui-tabs-nav li.ui-tabs-active {
857
-	margin-bottom: -1px;
858
-	padding-bottom: 1px;
859
-}
860
-.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
861
-.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
862
-.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
863
-	cursor: text;
864
-}
865
-.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
866
-	cursor: pointer;
867
-}
868
-.ui-tabs .ui-tabs-panel {
869
-	display: block;
870
-	border-width: 0;
871
-	padding: 1em 1.4em;
872
-	background: none;
873
-}
874
-.ui-tooltip {
875
-	padding: 8px;
876
-	position: absolute;
877
-	z-index: 9999;
878
-	max-width: 300px;
879
-}
880
-body .ui-tooltip {
881
-	border-width: 2px;
882
-}
883
-
884
-/* Component containers
885
-----------------------------------*/
886
-.ui-widget {
887
-	font-family: Arial,Helvetica,sans-serif;
888
-	font-size: 1em;
889
-}
890
-.ui-widget .ui-widget {
891
-	font-size: 1em;
892
-}
893
-.ui-widget input,
894
-.ui-widget select,
895
-.ui-widget textarea,
896
-.ui-widget button {
897
-	font-family: Arial,Helvetica,sans-serif;
898
-	font-size: 1em;
899
-}
900
-.ui-widget.ui-widget-content {
901
-	border: 1px solid #c5c5c5;
902
-}
903
-.ui-widget-content {
904
-	border: 1px solid #dddddd;
905
-	background: #ffffff;
906
-	color: #333333;
907
-}
908
-.ui-widget-content a {
909
-	color: #333333;
910
-}
911
-.ui-widget-header {
912
-	border: 1px solid #dddddd;
913
-	background: #e9e9e9;
914
-	color: #333333;
915
-	font-weight: bold;
916
-}
917
-.ui-widget-header a {
918
-	color: #333333;
919
-}
920
-
921
-/* Interaction states
922
-----------------------------------*/
923
-.ui-state-default,
924
-.ui-widget-content .ui-state-default,
925
-.ui-widget-header .ui-state-default,
926
-.ui-button,
927
-
928
-/* We use html here because we need a greater specificity to make sure disabled
929
-works properly when clicked or hovered */
930
-html .ui-button.ui-state-disabled:hover,
931
-html .ui-button.ui-state-disabled:active {
932
-	border: 1px solid #c5c5c5;
933
-	background: #f6f6f6;
934
-	font-weight: normal;
935
-	color: #454545;
936
-}
937
-.ui-state-default a,
938
-.ui-state-default a:link,
939
-.ui-state-default a:visited,
940
-a.ui-button,
941
-a:link.ui-button,
942
-a:visited.ui-button,
943
-.ui-button {
944
-	color: #454545;
945
-	text-decoration: none;
946
-}
947
-.ui-state-hover,
948
-.ui-widget-content .ui-state-hover,
949
-.ui-widget-header .ui-state-hover,
950
-.ui-state-focus,
951
-.ui-widget-content .ui-state-focus,
952
-.ui-widget-header .ui-state-focus,
953
-.ui-button:hover,
954
-.ui-button:focus {
955
-	border: 1px solid #cccccc;
956
-	background: #ededed;
957
-	font-weight: normal;
958
-	color: #2b2b2b;
959
-}
960
-.ui-state-hover a,
961
-.ui-state-hover a:hover,
962
-.ui-state-hover a:link,
963
-.ui-state-hover a:visited,
964
-.ui-state-focus a,
965
-.ui-state-focus a:hover,
966
-.ui-state-focus a:link,
967
-.ui-state-focus a:visited,
968
-a.ui-button:hover,
969
-a.ui-button:focus {
970
-	color: #2b2b2b;
971
-	text-decoration: none;
972
-}
973
-
974
-.ui-visual-focus {
975
-	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
976
-}
977
-.ui-state-active,
978
-.ui-widget-content .ui-state-active,
979
-.ui-widget-header .ui-state-active,
980
-a.ui-button:active,
981
-.ui-button:active,
982
-.ui-button.ui-state-active:hover {
983
-	border: 1px solid #003eff;
984
-	background: #007fff;
985
-	font-weight: normal;
986
-	color: #ffffff;
987
-}
988
-.ui-icon-background,
989
-.ui-state-active .ui-icon-background {
990
-	border: #003eff;
991
-	background-color: #ffffff;
992
-}
993
-.ui-state-active a,
994
-.ui-state-active a:link,
995
-.ui-state-active a:visited {
996
-	color: #ffffff;
997
-	text-decoration: none;
998
-}
999
-
1000
-/* Interaction Cues
1001
-----------------------------------*/
1002
-.ui-state-highlight,
1003
-.ui-widget-content .ui-state-highlight,
1004
-.ui-widget-header .ui-state-highlight {
1005
-	border: 1px solid #dad55e;
1006
-	background: #fffa90;
1007
-	color: #777620;
1008
-}
1009
-.ui-state-checked {
1010
-	border: 1px solid #dad55e;
1011
-	background: #fffa90;
1012
-}
1013
-.ui-state-highlight a,
1014
-.ui-widget-content .ui-state-highlight a,
1015
-.ui-widget-header .ui-state-highlight a {
1016
-	color: #777620;
1017
-}
1018
-.ui-state-error,
1019
-.ui-widget-content .ui-state-error,
1020
-.ui-widget-header .ui-state-error {
1021
-	border: 1px solid #f1a899;
1022
-	background: #fddfdf;
1023
-	color: #5f3f3f;
1024
-}
1025
-.ui-state-error a,
1026
-.ui-widget-content .ui-state-error a,
1027
-.ui-widget-header .ui-state-error a {
1028
-	color: #5f3f3f;
1029
-}
1030
-.ui-state-error-text,
1031
-.ui-widget-content .ui-state-error-text,
1032
-.ui-widget-header .ui-state-error-text {
1033
-	color: #5f3f3f;
1034
-}
1035
-.ui-priority-primary,
1036
-.ui-widget-content .ui-priority-primary,
1037
-.ui-widget-header .ui-priority-primary {
1038
-	font-weight: bold;
1039
-}
1040
-.ui-priority-secondary,
1041
-.ui-widget-content .ui-priority-secondary,
1042
-.ui-widget-header .ui-priority-secondary {
1043
-	opacity: .7;
1044
-	-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
1045
-	font-weight: normal;
1046
-}
1047
-.ui-state-disabled,
1048
-.ui-widget-content .ui-state-disabled,
1049
-.ui-widget-header .ui-state-disabled {
1050
-	opacity: .35;
1051
-	-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
1052
-	background-image: none;
1053
-}
1054
-.ui-state-disabled .ui-icon {
1055
-	-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
1056
-}
1057
-
1058
-/* Icons
1059
-----------------------------------*/
1060
-
1061
-/* states and images */
1062
-.ui-icon {
1063
-	width: 16px;
1064
-	height: 16px;
1065
-}
1066
-.ui-icon,
1067
-.ui-widget-content .ui-icon {
1068
-	background-image: url("images/ui-icons_444444_256x240.png");
1069
-}
1070
-.ui-widget-header .ui-icon {
1071
-	background-image: url("images/ui-icons_444444_256x240.png");
1072
-}
1073
-.ui-state-hover .ui-icon,
1074
-.ui-state-focus .ui-icon,
1075
-.ui-button:hover .ui-icon,
1076
-.ui-button:focus .ui-icon {
1077
-	background-image: url("images/ui-icons_555555_256x240.png");
1078
-}
1079
-.ui-state-active .ui-icon,
1080
-.ui-button:active .ui-icon {
1081
-	background-image: url("images/ui-icons_ffffff_256x240.png");
1082
-}
1083
-.ui-state-highlight .ui-icon,
1084
-.ui-button .ui-state-highlight.ui-icon {
1085
-	background-image: url("images/ui-icons_777620_256x240.png");
1086
-}
1087
-.ui-state-error .ui-icon,
1088
-.ui-state-error-text .ui-icon {
1089
-	background-image: url("images/ui-icons_cc0000_256x240.png");
1090
-}
1091
-.ui-button .ui-icon {
1092
-	background-image: url("images/ui-icons_777777_256x240.png");
1093
-}
1094
-
1095
-/* positioning */
1096
-/* Three classes needed to override `.ui-button:hover .ui-icon` */
1097
-.ui-icon-blank.ui-icon-blank.ui-icon-blank {
1098
-	background-image: none;
1099
-}
1100
-.ui-icon-caret-1-n { background-position: 0 0; }
1101
-.ui-icon-caret-1-ne { background-position: -16px 0; }
1102
-.ui-icon-caret-1-e { background-position: -32px 0; }
1103
-.ui-icon-caret-1-se { background-position: -48px 0; }
1104
-.ui-icon-caret-1-s { background-position: -65px 0; }
1105
-.ui-icon-caret-1-sw { background-position: -80px 0; }
1106
-.ui-icon-caret-1-w { background-position: -96px 0; }
1107
-.ui-icon-caret-1-nw { background-position: -112px 0; }
1108
-.ui-icon-caret-2-n-s { background-position: -128px 0; }
1109
-.ui-icon-caret-2-e-w { background-position: -144px 0; }
1110
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
1111
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
1112
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
1113
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
1114
-.ui-icon-triangle-1-s { background-position: -65px -16px; }
1115
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
1116
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
1117
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
1118
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
1119
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
1120
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
1121
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
1122
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
1123
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
1124
-.ui-icon-arrow-1-s { background-position: -65px -32px; }
1125
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
1126
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
1127
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
1128
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
1129
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
1130
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
1131
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
1132
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
1133
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
1134
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
1135
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
1136
-.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
1137
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
1138
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
1139
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
1140
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
1141
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
1142
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
1143
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
1144
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
1145
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
1146
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
1147
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
1148
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
1149
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
1150
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
1151
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
1152
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
1153
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
1154
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
1155
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
1156
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
1157
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
1158
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
1159
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
1160
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
1161
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
1162
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
1163
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
1164
-.ui-icon-arrow-4 { background-position: 0 -80px; }
1165
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
1166
-.ui-icon-extlink { background-position: -32px -80px; }
1167
-.ui-icon-newwin { background-position: -48px -80px; }
1168
-.ui-icon-refresh { background-position: -64px -80px; }
1169
-.ui-icon-shuffle { background-position: -80px -80px; }
1170
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
1171
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
1172
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
1173
-.ui-icon-folder-open { background-position: -16px -96px; }
1174
-.ui-icon-document { background-position: -32px -96px; }
1175
-.ui-icon-document-b { background-position: -48px -96px; }
1176
-.ui-icon-note { background-position: -64px -96px; }
1177
-.ui-icon-mail-closed { background-position: -80px -96px; }
1178
-.ui-icon-mail-open { background-position: -96px -96px; }
1179
-.ui-icon-suitcase { background-position: -112px -96px; }
1180
-.ui-icon-comment { background-position: -128px -96px; }
1181
-.ui-icon-person { background-position: -144px -96px; }
1182
-.ui-icon-print { background-position: -160px -96px; }
1183
-.ui-icon-trash { background-position: -176px -96px; }
1184
-.ui-icon-locked { background-position: -192px -96px; }
1185
-.ui-icon-unlocked { background-position: -208px -96px; }
1186
-.ui-icon-bookmark { background-position: -224px -96px; }
1187
-.ui-icon-tag { background-position: -240px -96px; }
1188
-.ui-icon-home { background-position: 0 -112px; }
1189
-.ui-icon-flag { background-position: -16px -112px; }
1190
-.ui-icon-calendar { background-position: -32px -112px; }
1191
-.ui-icon-cart { background-position: -48px -112px; }
1192
-.ui-icon-pencil { background-position: -64px -112px; }
1193
-.ui-icon-clock { background-position: -80px -112px; }
1194
-.ui-icon-disk { background-position: -96px -112px; }
1195
-.ui-icon-calculator { background-position: -112px -112px; }
1196
-.ui-icon-zoomin { background-position: -128px -112px; }
1197
-.ui-icon-zoomout { background-position: -144px -112px; }
1198
-.ui-icon-search { background-position: -160px -112px; }
1199
-.ui-icon-wrench { background-position: -176px -112px; }
1200
-.ui-icon-gear { background-position: -192px -112px; }
1201
-.ui-icon-heart { background-position: -208px -112px; }
1202
-.ui-icon-star { background-position: -224px -112px; }
1203
-.ui-icon-link { background-position: -240px -112px; }
1204
-.ui-icon-cancel { background-position: 0 -128px; }
1205
-.ui-icon-plus { background-position: -16px -128px; }
1206
-.ui-icon-plusthick { background-position: -32px -128px; }
1207
-.ui-icon-minus { background-position: -48px -128px; }
1208
-.ui-icon-minusthick { background-position: -64px -128px; }
1209
-.ui-icon-close { background-position: -80px -128px; }
1210
-.ui-icon-closethick { background-position: -96px -128px; }
1211
-.ui-icon-key { background-position: -112px -128px; }
1212
-.ui-icon-lightbulb { background-position: -128px -128px; }
1213
-.ui-icon-scissors { background-position: -144px -128px; }
1214
-.ui-icon-clipboard { background-position: -160px -128px; }
1215
-.ui-icon-copy { background-position: -176px -128px; }
1216
-.ui-icon-contact { background-position: -192px -128px; }
1217
-.ui-icon-image { background-position: -208px -128px; }
1218
-.ui-icon-video { background-position: -224px -128px; }
1219
-.ui-icon-script { background-position: -240px -128px; }
1220
-.ui-icon-alert { background-position: 0 -144px; }
1221
-.ui-icon-info { background-position: -16px -144px; }
1222
-.ui-icon-notice { background-position: -32px -144px; }
1223
-.ui-icon-help { background-position: -48px -144px; }
1224
-.ui-icon-check { background-position: -64px -144px; }
1225
-.ui-icon-bullet { background-position: -80px -144px; }
1226
-.ui-icon-radio-on { background-position: -96px -144px; }
1227
-.ui-icon-radio-off { background-position: -112px -144px; }
1228
-.ui-icon-pin-w { background-position: -128px -144px; }
1229
-.ui-icon-pin-s { background-position: -144px -144px; }
1230
-.ui-icon-play { background-position: 0 -160px; }
1231
-.ui-icon-pause { background-position: -16px -160px; }
1232
-.ui-icon-seek-next { background-position: -32px -160px; }
1233
-.ui-icon-seek-prev { background-position: -48px -160px; }
1234
-.ui-icon-seek-end { background-position: -64px -160px; }
1235
-.ui-icon-seek-start { background-position: -80px -160px; }
1236
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
1237
-.ui-icon-seek-first { background-position: -80px -160px; }
1238
-.ui-icon-stop { background-position: -96px -160px; }
1239
-.ui-icon-eject { background-position: -112px -160px; }
1240
-.ui-icon-volume-off { background-position: -128px -160px; }
1241
-.ui-icon-volume-on { background-position: -144px -160px; }
1242
-.ui-icon-power { background-position: 0 -176px; }
1243
-.ui-icon-signal-diag { background-position: -16px -176px; }
1244
-.ui-icon-signal { background-position: -32px -176px; }
1245
-.ui-icon-battery-0 { background-position: -48px -176px; }
1246
-.ui-icon-battery-1 { background-position: -64px -176px; }
1247
-.ui-icon-battery-2 { background-position: -80px -176px; }
1248
-.ui-icon-battery-3 { background-position: -96px -176px; }
1249
-.ui-icon-circle-plus { background-position: 0 -192px; }
1250
-.ui-icon-circle-minus { background-position: -16px -192px; }
1251
-.ui-icon-circle-close { background-position: -32px -192px; }
1252
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
1253
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
1254
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
1255
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
1256
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
1257
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
1258
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
1259
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
1260
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
1261
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
1262
-.ui-icon-circle-check { background-position: -208px -192px; }
1263
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
1264
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
1265
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
1266
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
1267
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
1268
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
1269
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
1270
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
1271
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
1272
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
1273
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
1274
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
1275
-
1276
-
1277
-/* Misc visuals
1278
-----------------------------------*/
1279
-
1280
-/* Corner radius */
1281
-.ui-corner-all,
1282
-.ui-corner-top,
1283
-.ui-corner-left,
1284
-.ui-corner-tl {
1285
-	border-top-left-radius: 3px;
1286
-}
1287
-.ui-corner-all,
1288
-.ui-corner-top,
1289
-.ui-corner-right,
1290
-.ui-corner-tr {
1291
-	border-top-right-radius: 3px;
1292
-}
1293
-.ui-corner-all,
1294
-.ui-corner-bottom,
1295
-.ui-corner-left,
1296
-.ui-corner-bl {
1297
-	border-bottom-left-radius: 3px;
1298
-}
1299
-.ui-corner-all,
1300
-.ui-corner-bottom,
1301
-.ui-corner-right,
1302
-.ui-corner-br {
1303
-	border-bottom-right-radius: 3px;
1304
-}
1305
-
1306
-/* Overlays */
1307
-.ui-widget-overlay {
1308
-	background: #aaaaaa;
1309
-	opacity: .003;
1310
-	-ms-filter: Alpha(Opacity=.3); /* support: IE8 */
1311
-}
1312
-.ui-widget-shadow {
1313
-	-webkit-box-shadow: 0px 0px 5px #666666;
1314
-	box-shadow: 0px 0px 5px #666666;
1315
-}
... ...
@@ -1,19062 +0,0 @@
1
-/*! jQuery UI - v1.13.2 - 2022-07-14
2
-* http://jqueryui.com
3
-* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
4
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
5
-
6
-( function( factory ) {
7
-	"use strict";
8
-	
9
-	if ( typeof define === "function" && define.amd ) {
10
-
11
-		// AMD. Register as an anonymous module.
12
-		define( [ "jquery" ], factory );
13
-	} else {
14
-
15
-		// Browser globals
16
-		factory( jQuery );
17
-	}
18
-} )( function( $ ) {
19
-"use strict";
20
-
21
-$.ui = $.ui || {};
22
-
23
-var version = $.ui.version = "1.13.2";
24
-
25
-
26
-/*!
27
- * jQuery UI Widget 1.13.2
28
- * http://jqueryui.com
29
- *
30
- * Copyright jQuery Foundation and other contributors
31
- * Released under the MIT license.
32
- * http://jquery.org/license
33
- */
34
-
35
-//>>label: Widget
36
-//>>group: Core
37
-//>>description: Provides a factory for creating stateful widgets with a common API.
38
-//>>docs: http://api.jqueryui.com/jQuery.widget/
39
-//>>demos: http://jqueryui.com/widget/
40
-
41
-
42
-var widgetUuid = 0;
43
-var widgetHasOwnProperty = Array.prototype.hasOwnProperty;
44
-var widgetSlice = Array.prototype.slice;
45
-
46
-$.cleanData = ( function( orig ) {
47
-	return function( elems ) {
48
-		var events, elem, i;
49
-		for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
50
-
51
-			// Only trigger remove when necessary to save time
52
-			events = $._data( elem, "events" );
53
-			if ( events && events.remove ) {
54
-				$( elem ).triggerHandler( "remove" );
55
-			}
56
-		}
57
-		orig( elems );
58
-	};
59
-} )( $.cleanData );
60
-
61
-$.widget = function( name, base, prototype ) {
62
-	var existingConstructor, constructor, basePrototype;
63
-
64
-	// ProxiedPrototype allows the provided prototype to remain unmodified
65
-	// so that it can be used as a mixin for multiple widgets (#8876)
66
-	var proxiedPrototype = {};
67
-
68
-	var namespace = name.split( "." )[ 0 ];
69
-	name = name.split( "." )[ 1 ];
70
-	var fullName = namespace + "-" + name;
71
-
72
-	if ( !prototype ) {
73
-		prototype = base;
74
-		base = $.Widget;
75
-	}
76
-
77
-	if ( Array.isArray( prototype ) ) {
78
-		prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
79
-	}
80
-
81
-	// Create selector for plugin
82
-	$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {
83
-		return !!$.data( elem, fullName );
84
-	};
85
-
86
-	$[ namespace ] = $[ namespace ] || {};
87
-	existingConstructor = $[ namespace ][ name ];
88
-	constructor = $[ namespace ][ name ] = function( options, element ) {
89
-
90
-		// Allow instantiation without "new" keyword
91
-		if ( !this || !this._createWidget ) {
92
-			return new constructor( options, element );
93
-		}
94
-
95
-		// Allow instantiation without initializing for simple inheritance
96
-		// must use "new" keyword (the code above always passes args)
97
-		if ( arguments.length ) {
98
-			this._createWidget( options, element );
99
-		}
100
-	};
101
-
102
-	// Extend with the existing constructor to carry over any static properties
103
-	$.extend( constructor, existingConstructor, {
104
-		version: prototype.version,
105
-
106
-		// Copy the object used to create the prototype in case we need to
107
-		// redefine the widget later
108
-		_proto: $.extend( {}, prototype ),
109
-
110
-		// Track widgets that inherit from this widget in case this widget is
111
-		// redefined after a widget inherits from it
112
-		_childConstructors: []
113
-	} );
114
-
115
-	basePrototype = new base();
116
-
117
-	// We need to make the options hash a property directly on the new instance
118
-	// otherwise we'll modify the options hash on the prototype that we're
119
-	// inheriting from
120
-	basePrototype.options = $.widget.extend( {}, basePrototype.options );
121
-	$.each( prototype, function( prop, value ) {
122
-		if ( typeof value !== "function" ) {
123
-			proxiedPrototype[ prop ] = value;
124
-			return;
125
-		}
126
-		proxiedPrototype[ prop ] = ( function() {
127
-			function _super() {
128
-				return base.prototype[ prop ].apply( this, arguments );
129
-			}
130
-
131
-			function _superApply( args ) {
132
-				return base.prototype[ prop ].apply( this, args );
133
-			}
134
-
135
-			return function() {
136
-				var __super = this._super;
137
-				var __superApply = this._superApply;
138
-				var returnValue;
139
-
140
-				this._super = _super;
141
-				this._superApply = _superApply;
142
-
143
-				returnValue = value.apply( this, arguments );
144
-
145
-				this._super = __super;
146
-				this._superApply = __superApply;
147
-
148
-				return returnValue;
149
-			};
150
-		} )();
151
-	} );
152
-	constructor.prototype = $.widget.extend( basePrototype, {
153
-
154
-		// TODO: remove support for widgetEventPrefix
155
-		// always use the name + a colon as the prefix, e.g., draggable:start
156
-		// don't prefix for widgets that aren't DOM-based
157
-		widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name
158
-	}, proxiedPrototype, {
159
-		constructor: constructor,
160
-		namespace: namespace,
161
-		widgetName: name,
162
-		widgetFullName: fullName
163
-	} );
164
-
165
-	// If this widget is being redefined then we need to find all widgets that
166
-	// are inheriting from it and redefine all of them so that they inherit from
167
-	// the new version of this widget. We're essentially trying to replace one
168
-	// level in the prototype chain.
169
-	if ( existingConstructor ) {
170
-		$.each( existingConstructor._childConstructors, function( i, child ) {
171
-			var childPrototype = child.prototype;
172
-
173
-			// Redefine the child widget using the same prototype that was
174
-			// originally used, but inherit from the new version of the base
175
-			$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor,
176
-				child._proto );
177
-		} );
178
-
179
-		// Remove the list of existing child constructors from the old constructor
180
-		// so the old child constructors can be garbage collected
181
-		delete existingConstructor._childConstructors;
182
-	} else {
183
-		base._childConstructors.push( constructor );
184
-	}
185
-
186
-	$.widget.bridge( name, constructor );
187
-
188
-	return constructor;
189
-};
190
-
191
-$.widget.extend = function( target ) {
192
-	var input = widgetSlice.call( arguments, 1 );
193
-	var inputIndex = 0;
194
-	var inputLength = input.length;
195
-	var key;
196
-	var value;
197
-
198
-	for ( ; inputIndex < inputLength; inputIndex++ ) {
199
-		for ( key in input[ inputIndex ] ) {
200
-			value = input[ inputIndex ][ key ];
201
-			if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {
202
-
203
-				// Clone objects
204
-				if ( $.isPlainObject( value ) ) {
205
-					target[ key ] = $.isPlainObject( target[ key ] ) ?
206
-						$.widget.extend( {}, target[ key ], value ) :
207
-
208
-						// Don't extend strings, arrays, etc. with objects
209
-						$.widget.extend( {}, value );
210
-
211
-				// Copy everything else by reference
212
-				} else {
213
-					target[ key ] = value;
214
-				}
215
-			}
216
-		}
217
-	}
218
-	return target;
219
-};
220
-
221
-$.widget.bridge = function( name, object ) {
222
-	var fullName = object.prototype.widgetFullName || name;
223
-	$.fn[ name ] = function( options ) {
224
-		var isMethodCall = typeof options === "string";
225
-		var args = widgetSlice.call( arguments, 1 );
226
-		var returnValue = this;
227
-
228
-		if ( isMethodCall ) {
229
-
230
-			// If this is an empty collection, we need to have the instance method
231
-			// return undefined instead of the jQuery instance
232
-			if ( !this.length && options === "instance" ) {
233
-				returnValue = undefined;
234
-			} else {
235
-				this.each( function() {
236
-					var methodValue;
237
-					var instance = $.data( this, fullName );
238
-
239
-					if ( options === "instance" ) {
240
-						returnValue = instance;
241
-						return false;
242
-					}
243
-
244
-					if ( !instance ) {
245
-						return $.error( "cannot call methods on " + name +
246
-							" prior to initialization; " +
247
-							"attempted to call method '" + options + "'" );
248
-					}
249
-
250
-					if ( typeof instance[ options ] !== "function" ||
251
-						options.charAt( 0 ) === "_" ) {
252
-						return $.error( "no such method '" + options + "' for " + name +
253
-							" widget instance" );
254
-					}
255
-
256
-					methodValue = instance[ options ].apply( instance, args );
257
-
258
-					if ( methodValue !== instance && methodValue !== undefined ) {
259
-						returnValue = methodValue && methodValue.jquery ?
260
-							returnValue.pushStack( methodValue.get() ) :
261
-							methodValue;
262
-						return false;
263
-					}
264
-				} );
265
-			}
266
-		} else {
267
-
268
-			// Allow multiple hashes to be passed on init
269
-			if ( args.length ) {
270
-				options = $.widget.extend.apply( null, [ options ].concat( args ) );
271
-			}
272
-
273
-			this.each( function() {
274
-				var instance = $.data( this, fullName );
275
-				if ( instance ) {
276
-					instance.option( options || {} );
277
-					if ( instance._init ) {
278
-						instance._init();
279
-					}
280
-				} else {
281
-					$.data( this, fullName, new object( options, this ) );
282
-				}
283
-			} );
284
-		}
285
-
286
-		return returnValue;
287
-	};
288
-};
289
-
290
-$.Widget = function( /* options, element */ ) {};
291
-$.Widget._childConstructors = [];
292
-
293
-$.Widget.prototype = {
294
-	widgetName: "widget",
295
-	widgetEventPrefix: "",
296
-	defaultElement: "<div>",
297
-
298
-	options: {
299
-		classes: {},
300
-		disabled: false,
301
-
302
-		// Callbacks
303
-		create: null
304
-	},
305
-
306
-	_createWidget: function( options, element ) {
307
-		element = $( element || this.defaultElement || this )[ 0 ];
308
-		this.element = $( element );
309
-		this.uuid = widgetUuid++;
310
-		this.eventNamespace = "." + this.widgetName + this.uuid;
311
-
312
-		this.bindings = $();
313
-		this.hoverable = $();
314
-		this.focusable = $();
315
-		this.classesElementLookup = {};
316
-
317
-		if ( element !== this ) {
318
-			$.data( element, this.widgetFullName, this );
319
-			this._on( true, this.element, {
320
-				remove: function( event ) {
321
-					if ( event.target === element ) {
322
-						this.destroy();
323
-					}
324
-				}
325
-			} );
326
-			this.document = $( element.style ?
327
-
328
-				// Element within the document
329
-				element.ownerDocument :
330
-
331
-				// Element is window or document
332
-				element.document || element );
333
-			this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );
334
-		}
335
-
336
-		this.options = $.widget.extend( {},
337
-			this.options,
338
-			this._getCreateOptions(),
339
-			options );
340
-
341
-		this._create();
342
-
343
-		if ( this.options.disabled ) {
344
-			this._setOptionDisabled( this.options.disabled );
345
-		}
346
-
347
-		this._trigger( "create", null, this._getCreateEventData() );
348
-		this._init();
349
-	},
350
-
351
-	_getCreateOptions: function() {
352
-		return {};
353
-	},
354
-
355
-	_getCreateEventData: $.noop,
356
-
357
-	_create: $.noop,
358
-
359
-	_init: $.noop,
360
-
361
-	destroy: function() {
362
-		var that = this;
363
-
364
-		this._destroy();
365
-		$.each( this.classesElementLookup, function( key, value ) {
366
-			that._removeClass( value, key );
367
-		} );
368
-
369
-		// We can probably remove the unbind calls in 2.0
370
-		// all event bindings should go through this._on()
371
-		this.element
372
-			.off( this.eventNamespace )
373
-			.removeData( this.widgetFullName );
374
-		this.widget()
375
-			.off( this.eventNamespace )
376
-			.removeAttr( "aria-disabled" );
377
-
378
-		// Clean up events and states
379
-		this.bindings.off( this.eventNamespace );
380
-	},
381
-
382
-	_destroy: $.noop,
383
-
384
-	widget: function() {
385
-		return this.element;
386
-	},
387
-
388
-	option: function( key, value ) {
389
-		var options = key;
390
-		var parts;
391
-		var curOption;
392
-		var i;
393
-
394
-		if ( arguments.length === 0 ) {
395
-
396
-			// Don't return a reference to the internal hash
397
-			return $.widget.extend( {}, this.options );
398
-		}
399
-
400
-		if ( typeof key === "string" ) {
401
-
402
-			// Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
403
-			options = {};
404
-			parts = key.split( "." );
405
-			key = parts.shift();
406
-			if ( parts.length ) {
407
-				curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
408
-				for ( i = 0; i < parts.length - 1; i++ ) {
409
-					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
410
-					curOption = curOption[ parts[ i ] ];
411
-				}
412
-				key = parts.pop();
413
-				if ( arguments.length === 1 ) {
414
-					return curOption[ key ] === undefined ? null : curOption[ key ];
415
-				}
416
-				curOption[ key ] = value;
417
-			} else {
418
-				if ( arguments.length === 1 ) {
419
-					return this.options[ key ] === undefined ? null : this.options[ key ];
420
-				}
421
-				options[ key ] = value;
422
-			}
423
-		}
424
-
425
-		this._setOptions( options );
426
-
427
-		return this;
428
-	},
429
-
430
-	_setOptions: function( options ) {
431
-		var key;
432
-
433
-		for ( key in options ) {
434
-			this._setOption( key, options[ key ] );
435
-		}
436
-
437
-		return this;
438
-	},
439
-
440
-	_setOption: function( key, value ) {
441
-		if ( key === "classes" ) {
442
-			this._setOptionClasses( value );
443
-		}
444
-
445
-		this.options[ key ] = value;
446
-
447
-		if ( key === "disabled" ) {
448
-			this._setOptionDisabled( value );
449
-		}
450
-
451
-		return this;
452
-	},
453
-
454
-	_setOptionClasses: function( value ) {
455
-		var classKey, elements, currentElements;
456
-
457
-		for ( classKey in value ) {
458
-			currentElements = this.classesElementLookup[ classKey ];
459
-			if ( value[ classKey ] === this.options.classes[ classKey ] ||
460
-					!currentElements ||
461
-					!currentElements.length ) {
462
-				continue;
463
-			}
464
-
465
-			// We are doing this to create a new jQuery object because the _removeClass() call
466
-			// on the next line is going to destroy the reference to the current elements being
467
-			// tracked. We need to save a copy of this collection so that we can add the new classes
468
-			// below.
469
-			elements = $( currentElements.get() );
470
-			this._removeClass( currentElements, classKey );
471
-
472
-			// We don't use _addClass() here, because that uses this.options.classes
473
-			// for generating the string of classes. We want to use the value passed in from
474
-			// _setOption(), this is the new value of the classes option which was passed to
475
-			// _setOption(). We pass this value directly to _classes().
476
-			elements.addClass( this._classes( {
477
-				element: elements,
478
-				keys: classKey,
479
-				classes: value,
480
-				add: true
481
-			} ) );
482
-		}
483
-	},
484
-
485
-	_setOptionDisabled: function( value ) {
486
-		this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value );
487
-
488
-		// If the widget is becoming disabled, then nothing is interactive
489
-		if ( value ) {
490
-			this._removeClass( this.hoverable, null, "ui-state-hover" );
491
-			this._removeClass( this.focusable, null, "ui-state-focus" );
492
-		}
493
-	},
494
-
495
-	enable: function() {
496
-		return this._setOptions( { disabled: false } );
497
-	},
498
-
499
-	disable: function() {
500
-		return this._setOptions( { disabled: true } );
501
-	},
502
-
503
-	_classes: function( options ) {
504
-		var full = [];
505
-		var that = this;
506
-
507
-		options = $.extend( {
508
-			element: this.element,
509
-			classes: this.options.classes || {}
510
-		}, options );
511
-
512
-		function bindRemoveEvent() {
513
-			var nodesToBind = [];
514
-
515
-			options.element.each( function( _, element ) {
516
-				var isTracked = $.map( that.classesElementLookup, function( elements ) {
517
-					return elements;
518
-				} )
519
-					.some( function( elements ) {
520
-						return elements.is( element );
521
-					} );
522
-
523
-				if ( !isTracked ) {
524
-					nodesToBind.push( element );
525
-				}
526
-			} );
527
-
528
-			that._on( $( nodesToBind ), {
529
-				remove: "_untrackClassesElement"
530
-			} );
531
-		}
532
-
533
-		function processClassString( classes, checkOption ) {
534
-			var current, i;
535
-			for ( i = 0; i < classes.length; i++ ) {
536
-				current = that.classesElementLookup[ classes[ i ] ] || $();
537
-				if ( options.add ) {
538
-					bindRemoveEvent();
539
-					current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );
540
-				} else {
541
-					current = $( current.not( options.element ).get() );
542
-				}
543
-				that.classesElementLookup[ classes[ i ] ] = current;
544
-				full.push( classes[ i ] );
545
-				if ( checkOption && options.classes[ classes[ i ] ] ) {
546
-					full.push( options.classes[ classes[ i ] ] );
547
-				}
548
-			}
549
-		}
550
-
551
-		if ( options.keys ) {
552
-			processClassString( options.keys.match( /\S+/g ) || [], true );
553
-		}
554
-		if ( options.extra ) {
555
-			processClassString( options.extra.match( /\S+/g ) || [] );
556
-		}
557
-
558
-		return full.join( " " );
559
-	},
560
-
561
-	_untrackClassesElement: function( event ) {
562
-		var that = this;
563
-		$.each( that.classesElementLookup, function( key, value ) {
564
-			if ( $.inArray( event.target, value ) !== -1 ) {
565
-				that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
566
-			}
567
-		} );
568
-
569
-		this._off( $( event.target ) );
570
-	},
571
-
572
-	_removeClass: function( element, keys, extra ) {
573
-		return this._toggleClass( element, keys, extra, false );
574
-	},
575
-
576
-	_addClass: function( element, keys, extra ) {
577
-		return this._toggleClass( element, keys, extra, true );
578
-	},
579
-
580
-	_toggleClass: function( element, keys, extra, add ) {
581
-		add = ( typeof add === "boolean" ) ? add : extra;
582
-		var shift = ( typeof element === "string" || element === null ),
583
-			options = {
584
-				extra: shift ? keys : extra,
585
-				keys: shift ? element : keys,
586
-				element: shift ? this.element : element,
587
-				add: add
588
-			};
589
-		options.element.toggleClass( this._classes( options ), add );
590
-		return this;
591
-	},
592
-
593
-	_on: function( suppressDisabledCheck, element, handlers ) {
594
-		var delegateElement;
595
-		var instance = this;
596
-
597
-		// No suppressDisabledCheck flag, shuffle arguments
598
-		if ( typeof suppressDisabledCheck !== "boolean" ) {
599
-			handlers = element;
600
-			element = suppressDisabledCheck;
601
-			suppressDisabledCheck = false;
602
-		}
603
-
604
-		// No element argument, shuffle and use this.element
605
-		if ( !handlers ) {
606
-			handlers = element;
607
-			element = this.element;
608
-			delegateElement = this.widget();
609
-		} else {
610
-			element = delegateElement = $( element );
611
-			this.bindings = this.bindings.add( element );
612
-		}
613
-
614
-		$.each( handlers, function( event, handler ) {
615
-			function handlerProxy() {
616
-
617
-				// Allow widgets to customize the disabled handling
618
-				// - disabled as an array instead of boolean
619
-				// - disabled class as method for disabling individual parts
620
-				if ( !suppressDisabledCheck &&
621
-						( instance.options.disabled === true ||
622
-						$( this ).hasClass( "ui-state-disabled" ) ) ) {
623
-					return;
624
-				}
625
-				return ( typeof handler === "string" ? instance[ handler ] : handler )
626
-					.apply( instance, arguments );
627
-			}
628
-
629
-			// Copy the guid so direct unbinding works
630
-			if ( typeof handler !== "string" ) {
631
-				handlerProxy.guid = handler.guid =
632
-					handler.guid || handlerProxy.guid || $.guid++;
633
-			}
634
-
635
-			var match = event.match( /^([\w:-]*)\s*(.*)$/ );
636
-			var eventName = match[ 1 ] + instance.eventNamespace;
637
-			var selector = match[ 2 ];
638
-
639
-			if ( selector ) {
640
-				delegateElement.on( eventName, selector, handlerProxy );
641
-			} else {
642
-				element.on( eventName, handlerProxy );
643
-			}
644
-		} );
645
-	},
646
-
647
-	_off: function( element, eventName ) {
648
-		eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
649
-			this.eventNamespace;
650
-		element.off( eventName );
651
-
652
-		// Clear the stack to avoid memory leaks (#10056)
653
-		this.bindings = $( this.bindings.not( element ).get() );
654
-		this.focusable = $( this.focusable.not( element ).get() );
655
-		this.hoverable = $( this.hoverable.not( element ).get() );
656
-	},
657
-
658
-	_delay: function( handler, delay ) {
659
-		function handlerProxy() {
660
-			return ( typeof handler === "string" ? instance[ handler ] : handler )
661
-				.apply( instance, arguments );
662
-		}
663
-		var instance = this;
664
-		return setTimeout( handlerProxy, delay || 0 );
665
-	},
666
-
667
-	_hoverable: function( element ) {
668
-		this.hoverable = this.hoverable.add( element );
669
-		this._on( element, {
670
-			mouseenter: function( event ) {
671
-				this._addClass( $( event.currentTarget ), null, "ui-state-hover" );
672
-			},
673
-			mouseleave: function( event ) {
674
-				this._removeClass( $( event.currentTarget ), null, "ui-state-hover" );
675
-			}
676
-		} );
677
-	},
678
-
679
-	_focusable: function( element ) {
680
-		this.focusable = this.focusable.add( element );
681
-		this._on( element, {
682
-			focusin: function( event ) {
683
-				this._addClass( $( event.currentTarget ), null, "ui-state-focus" );
684
-			},
685
-			focusout: function( event ) {
686
-				this._removeClass( $( event.currentTarget ), null, "ui-state-focus" );
687
-			}
688
-		} );
689
-	},
690
-
691
-	_trigger: function( type, event, data ) {
692
-		var prop, orig;
693
-		var callback = this.options[ type ];
694
-
695
-		data = data || {};
696
-		event = $.Event( event );
697
-		event.type = ( type === this.widgetEventPrefix ?
698
-			type :
699
-			this.widgetEventPrefix + type ).toLowerCase();
700
-
701
-		// The original event may come from any element
702
-		// so we need to reset the target on the new event
703
-		event.target = this.element[ 0 ];
704
-
705
-		// Copy original event properties over to the new event
706
-		orig = event.originalEvent;
707
-		if ( orig ) {
708
-			for ( prop in orig ) {
709
-				if ( !( prop in event ) ) {
710
-					event[ prop ] = orig[ prop ];
711
-				}
712
-			}
713
-		}
714
-
715
-		this.element.trigger( event, data );
716
-		return !( typeof callback === "function" &&
717
-			callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
718
-			event.isDefaultPrevented() );
719
-	}
720
-};
721
-
722
-$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
723
-	$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
724
-		if ( typeof options === "string" ) {
725
-			options = { effect: options };
726
-		}
727
-
728
-		var hasOptions;
729
-		var effectName = !options ?
730
-			method :
731
-			options === true || typeof options === "number" ?
732
-				defaultEffect :
733
-				options.effect || defaultEffect;
734
-
735
-		options = options || {};
736
-		if ( typeof options === "number" ) {
737
-			options = { duration: options };
738
-		} else if ( options === true ) {
739
-			options = {};
740
-		}
741
-
742
-		hasOptions = !$.isEmptyObject( options );
743
-		options.complete = callback;
744
-
745
-		if ( options.delay ) {
746
-			element.delay( options.delay );
747
-		}
748
-
749
-		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
750
-			element[ method ]( options );
751
-		} else if ( effectName !== method && element[ effectName ] ) {
752
-			element[ effectName ]( options.duration, options.easing, callback );
753
-		} else {
754
-			element.queue( function( next ) {
755
-				$( this )[ method ]();
756
-				if ( callback ) {
757
-					callback.call( element[ 0 ] );
758
-				}
759
-				next();
760
-			} );
761
-		}
762
-	};
763
-} );
764
-
765
-var widget = $.widget;
766
-
767
-
768
-/*!
769
- * jQuery UI Position 1.13.2
770
- * http://jqueryui.com
771
- *
772
- * Copyright jQuery Foundation and other contributors
773
- * Released under the MIT license.
774
- * http://jquery.org/license
775
- *
776
- * http://api.jqueryui.com/position/
777
- */
778
-
779
-//>>label: Position
780
-//>>group: Core
781
-//>>description: Positions elements relative to other elements.
782
-//>>docs: http://api.jqueryui.com/position/
783
-//>>demos: http://jqueryui.com/position/
784
-
785
-
786
-( function() {
787
-var cachedScrollbarWidth,
788
-	max = Math.max,
789
-	abs = Math.abs,
790
-	rhorizontal = /left|center|right/,
791
-	rvertical = /top|center|bottom/,
792
-	roffset = /[\+\-]\d+(\.[\d]+)?%?/,
793
-	rposition = /^\w+/,
794
-	rpercent = /%$/,
795
-	_position = $.fn.position;
796
-
797
-function getOffsets( offsets, width, height ) {
798
-	return [
799
-		parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
800
-		parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
801
-	];
802
-}
803
-
804
-function parseCss( element, property ) {
805
-	return parseInt( $.css( element, property ), 10 ) || 0;
806
-}
807
-
808
-function isWindow( obj ) {
809
-	return obj != null && obj === obj.window;
810
-}
811
-
812
-function getDimensions( elem ) {
813
-	var raw = elem[ 0 ];
814
-	if ( raw.nodeType === 9 ) {
815
-		return {
816
-			width: elem.width(),
817
-			height: elem.height(),
818
-			offset: { top: 0, left: 0 }
819
-		};
820
-	}
821
-	if ( isWindow( raw ) ) {
822
-		return {
823
-			width: elem.width(),
824
-			height: elem.height(),
825
-			offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
826
-		};
827
-	}
828
-	if ( raw.preventDefault ) {
829
-		return {
830
-			width: 0,
831
-			height: 0,
832
-			offset: { top: raw.pageY, left: raw.pageX }
833
-		};
834
-	}
835
-	return {
836
-		width: elem.outerWidth(),
837
-		height: elem.outerHeight(),
838
-		offset: elem.offset()
839
-	};
840
-}
841
-
842
-$.position = {
843
-	scrollbarWidth: function() {
844
-		if ( cachedScrollbarWidth !== undefined ) {
845
-			return cachedScrollbarWidth;
846
-		}
847
-		var w1, w2,
848
-			div = $( "<div style=" +
849
-				"'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" +
850
-				"<div style='height:300px;width:auto;'></div></div>" ),
851
-			innerDiv = div.children()[ 0 ];
852
-
853
-		$( "body" ).append( div );
854
-		w1 = innerDiv.offsetWidth;
855
-		div.css( "overflow", "scroll" );
856
-
857
-		w2 = innerDiv.offsetWidth;
858
-
859
-		if ( w1 === w2 ) {
860
-			w2 = div[ 0 ].clientWidth;
861
-		}
862
-
863
-		div.remove();
864
-
865
-		return ( cachedScrollbarWidth = w1 - w2 );
866
-	},
867
-	getScrollInfo: function( within ) {
868
-		var overflowX = within.isWindow || within.isDocument ? "" :
869
-				within.element.css( "overflow-x" ),
870
-			overflowY = within.isWindow || within.isDocument ? "" :
871
-				within.element.css( "overflow-y" ),
872
-			hasOverflowX = overflowX === "scroll" ||
873
-				( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ),
874
-			hasOverflowY = overflowY === "scroll" ||
875
-				( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight );
876
-		return {
877
-			width: hasOverflowY ? $.position.scrollbarWidth() : 0,
878
-			height: hasOverflowX ? $.position.scrollbarWidth() : 0
879
-		};
880
-	},
881
-	getWithinInfo: function( element ) {
882
-		var withinElement = $( element || window ),
883
-			isElemWindow = isWindow( withinElement[ 0 ] ),
884
-			isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
885
-			hasOffset = !isElemWindow && !isDocument;
886
-		return {
887
-			element: withinElement,
888
-			isWindow: isElemWindow,
889
-			isDocument: isDocument,
890
-			offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
891
-			scrollLeft: withinElement.scrollLeft(),
892
-			scrollTop: withinElement.scrollTop(),
893
-			width: withinElement.outerWidth(),
894
-			height: withinElement.outerHeight()
895
-		};
896
-	}
897
-};
898
-
899
-$.fn.position = function( options ) {
900
-	if ( !options || !options.of ) {
901
-		return _position.apply( this, arguments );
902
-	}
903
-
904
-	// Make a copy, we don't want to modify arguments
905
-	options = $.extend( {}, options );
906
-
907
-	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
908
-
909
-		// Make sure string options are treated as CSS selectors
910
-		target = typeof options.of === "string" ?
911
-			$( document ).find( options.of ) :
912
-			$( options.of ),
913
-
914
-		within = $.position.getWithinInfo( options.within ),
915
-		scrollInfo = $.position.getScrollInfo( within ),
916
-		collision = ( options.collision || "flip" ).split( " " ),
917
-		offsets = {};
918
-
919
-	dimensions = getDimensions( target );
920
-	if ( target[ 0 ].preventDefault ) {
921
-
922
-		// Force left top to allow flipping
923
-		options.at = "left top";
924
-	}
925
-	targetWidth = dimensions.width;
926
-	targetHeight = dimensions.height;
927
-	targetOffset = dimensions.offset;
928
-
929
-	// Clone to reuse original targetOffset later
930
-	basePosition = $.extend( {}, targetOffset );
931
-
932
-	// Force my and at to have valid horizontal and vertical positions
933
-	// if a value is missing or invalid, it will be converted to center
934
-	$.each( [ "my", "at" ], function() {
935
-		var pos = ( options[ this ] || "" ).split( " " ),
936
-			horizontalOffset,
937
-			verticalOffset;
938
-
939
-		if ( pos.length === 1 ) {
940
-			pos = rhorizontal.test( pos[ 0 ] ) ?
941
-				pos.concat( [ "center" ] ) :
942
-				rvertical.test( pos[ 0 ] ) ?
943
-					[ "center" ].concat( pos ) :
944
-					[ "center", "center" ];
945
-		}
946
-		pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
947
-		pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
948
-
949
-		// Calculate offsets
950
-		horizontalOffset = roffset.exec( pos[ 0 ] );
951
-		verticalOffset = roffset.exec( pos[ 1 ] );
952
-		offsets[ this ] = [
953
-			horizontalOffset ? horizontalOffset[ 0 ] : 0,
954
-			verticalOffset ? verticalOffset[ 0 ] : 0
955
-		];
956
-
957
-		// Reduce to just the positions without the offsets
958
-		options[ this ] = [
959
-			rposition.exec( pos[ 0 ] )[ 0 ],
960
-			rposition.exec( pos[ 1 ] )[ 0 ]
961
-		];
962
-	} );
963
-
964
-	// Normalize collision option
965
-	if ( collision.length === 1 ) {
966
-		collision[ 1 ] = collision[ 0 ];
967
-	}
968
-
969
-	if ( options.at[ 0 ] === "right" ) {
970
-		basePosition.left += targetWidth;
971
-	} else if ( options.at[ 0 ] === "center" ) {
972
-		basePosition.left += targetWidth / 2;
973
-	}
974
-
975
-	if ( options.at[ 1 ] === "bottom" ) {
976
-		basePosition.top += targetHeight;
977
-	} else if ( options.at[ 1 ] === "center" ) {
978
-		basePosition.top += targetHeight / 2;
979
-	}
980
-
981
-	atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
982
-	basePosition.left += atOffset[ 0 ];
983
-	basePosition.top += atOffset[ 1 ];
984
-
985
-	return this.each( function() {
986
-		var collisionPosition, using,
987
-			elem = $( this ),
988
-			elemWidth = elem.outerWidth(),
989
-			elemHeight = elem.outerHeight(),
990
-			marginLeft = parseCss( this, "marginLeft" ),
991
-			marginTop = parseCss( this, "marginTop" ),
992
-			collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) +
993
-				scrollInfo.width,
994
-			collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) +
995
-				scrollInfo.height,
996
-			position = $.extend( {}, basePosition ),
997
-			myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
998
-
999
-		if ( options.my[ 0 ] === "right" ) {
1000
-			position.left -= elemWidth;
1001
-		} else if ( options.my[ 0 ] === "center" ) {
1002
-			position.left -= elemWidth / 2;
1003
-		}
1004
-
1005
-		if ( options.my[ 1 ] === "bottom" ) {
1006
-			position.top -= elemHeight;
1007
-		} else if ( options.my[ 1 ] === "center" ) {
1008
-			position.top -= elemHeight / 2;
1009
-		}
1010
-
1011
-		position.left += myOffset[ 0 ];
1012
-		position.top += myOffset[ 1 ];
1013
-
1014
-		collisionPosition = {
1015
-			marginLeft: marginLeft,
1016
-			marginTop: marginTop
1017
-		};
1018
-
1019
-		$.each( [ "left", "top" ], function( i, dir ) {
1020
-			if ( $.ui.position[ collision[ i ] ] ) {
1021
-				$.ui.position[ collision[ i ] ][ dir ]( position, {
1022
-					targetWidth: targetWidth,
1023
-					targetHeight: targetHeight,
1024
-					elemWidth: elemWidth,
1025
-					elemHeight: elemHeight,
1026
-					collisionPosition: collisionPosition,
1027
-					collisionWidth: collisionWidth,
1028
-					collisionHeight: collisionHeight,
1029
-					offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
1030
-					my: options.my,
1031
-					at: options.at,
1032
-					within: within,
1033
-					elem: elem
1034
-				} );
1035
-			}
1036
-		} );
1037
-
1038
-		if ( options.using ) {
1039
-
1040
-			// Adds feedback as second argument to using callback, if present
1041
-			using = function( props ) {
1042
-				var left = targetOffset.left - position.left,
1043
-					right = left + targetWidth - elemWidth,
1044
-					top = targetOffset.top - position.top,
1045
-					bottom = top + targetHeight - elemHeight,
1046
-					feedback = {
1047
-						target: {
1048
-							element: target,
1049
-							left: targetOffset.left,
1050
-							top: targetOffset.top,
1051
-							width: targetWidth,
1052
-							height: targetHeight
1053
-						},
1054
-						element: {
1055
-							element: elem,
1056
-							left: position.left,
1057
-							top: position.top,
1058
-							width: elemWidth,
1059
-							height: elemHeight
1060
-						},
1061
-						horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
1062
-						vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
1063
-					};
1064
-				if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
1065
-					feedback.horizontal = "center";
1066
-				}
1067
-				if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
1068
-					feedback.vertical = "middle";
1069
-				}
1070
-				if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
1071
-					feedback.important = "horizontal";
1072
-				} else {
1073
-					feedback.important = "vertical";
1074
-				}
1075
-				options.using.call( this, props, feedback );
1076
-			};
1077
-		}
1078
-
1079
-		elem.offset( $.extend( position, { using: using } ) );
1080
-	} );
1081
-};
1082
-
1083
-$.ui.position = {
1084
-	fit: {
1085
-		left: function( position, data ) {
1086
-			var within = data.within,
1087
-				withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
1088
-				outerWidth = within.width,
1089
-				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
1090
-				overLeft = withinOffset - collisionPosLeft,
1091
-				overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
1092
-				newOverRight;
1093
-
1094
-			// Element is wider than within
1095
-			if ( data.collisionWidth > outerWidth ) {
1096
-
1097
-				// Element is initially over the left side of within
1098
-				if ( overLeft > 0 && overRight <= 0 ) {
1099
-					newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
1100
-						withinOffset;
1101
-					position.left += overLeft - newOverRight;
1102
-
1103
-				// Element is initially over right side of within
1104
-				} else if ( overRight > 0 && overLeft <= 0 ) {
1105
-					position.left = withinOffset;
1106
-
1107
-				// Element is initially over both left and right sides of within
1108
-				} else {
1109
-					if ( overLeft > overRight ) {
1110
-						position.left = withinOffset + outerWidth - data.collisionWidth;
1111
-					} else {
1112
-						position.left = withinOffset;
1113
-					}
1114
-				}
1115
-
1116
-			// Too far left -> align with left edge
1117
-			} else if ( overLeft > 0 ) {
1118
-				position.left += overLeft;
1119
-
1120
-			// Too far right -> align with right edge
1121
-			} else if ( overRight > 0 ) {
1122
-				position.left -= overRight;
1123
-
1124
-			// Adjust based on position and margin
1125
-			} else {
1126
-				position.left = max( position.left - collisionPosLeft, position.left );
1127
-			}
1128
-		},
1129
-		top: function( position, data ) {
1130
-			var within = data.within,
1131
-				withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
1132
-				outerHeight = data.within.height,
1133
-				collisionPosTop = position.top - data.collisionPosition.marginTop,
1134
-				overTop = withinOffset - collisionPosTop,
1135
-				overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
1136
-				newOverBottom;
1137
-
1138
-			// Element is taller than within
1139
-			if ( data.collisionHeight > outerHeight ) {
1140
-
1141
-				// Element is initially over the top of within
1142
-				if ( overTop > 0 && overBottom <= 0 ) {
1143
-					newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
1144
-						withinOffset;
1145
-					position.top += overTop - newOverBottom;
1146
-
1147
-				// Element is initially over bottom of within
1148
-				} else if ( overBottom > 0 && overTop <= 0 ) {
1149
-					position.top = withinOffset;
1150
-
1151
-				// Element is initially over both top and bottom of within
1152
-				} else {
1153
-					if ( overTop > overBottom ) {
1154
-						position.top = withinOffset + outerHeight - data.collisionHeight;
1155
-					} else {
1156
-						position.top = withinOffset;
1157
-					}
1158
-				}
1159
-
1160
-			// Too far up -> align with top
1161
-			} else if ( overTop > 0 ) {
1162
-				position.top += overTop;
1163
-
1164
-			// Too far down -> align with bottom edge
1165
-			} else if ( overBottom > 0 ) {
1166
-				position.top -= overBottom;
1167
-
1168
-			// Adjust based on position and margin
1169
-			} else {
1170
-				position.top = max( position.top - collisionPosTop, position.top );
1171
-			}
1172
-		}
1173
-	},
1174
-	flip: {
1175
-		left: function( position, data ) {
1176
-			var within = data.within,
1177
-				withinOffset = within.offset.left + within.scrollLeft,
1178
-				outerWidth = within.width,
1179
-				offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
1180
-				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
1181
-				overLeft = collisionPosLeft - offsetLeft,
1182
-				overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
1183
-				myOffset = data.my[ 0 ] === "left" ?
1184
-					-data.elemWidth :
1185
-					data.my[ 0 ] === "right" ?
1186
-						data.elemWidth :
1187
-						0,
1188
-				atOffset = data.at[ 0 ] === "left" ?
1189
-					data.targetWidth :
1190
-					data.at[ 0 ] === "right" ?
1191
-						-data.targetWidth :
1192
-						0,
1193
-				offset = -2 * data.offset[ 0 ],
1194
-				newOverRight,
1195
-				newOverLeft;
1196
-
1197
-			if ( overLeft < 0 ) {
1198
-				newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
1199
-					outerWidth - withinOffset;
1200
-				if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
1201
-					position.left += myOffset + atOffset + offset;
1202
-				}
1203
-			} else if ( overRight > 0 ) {
1204
-				newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
1205
-					atOffset + offset - offsetLeft;
1206
-				if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
1207
-					position.left += myOffset + atOffset + offset;
1208
-				}
1209
-			}
1210
-		},
1211
-		top: function( position, data ) {
1212
-			var within = data.within,
1213
-				withinOffset = within.offset.top + within.scrollTop,
1214
-				outerHeight = within.height,
1215
-				offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
1216
-				collisionPosTop = position.top - data.collisionPosition.marginTop,
1217
-				overTop = collisionPosTop - offsetTop,
1218
-				overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
1219
-				top = data.my[ 1 ] === "top",
1220
-				myOffset = top ?
1221
-					-data.elemHeight :
1222
-					data.my[ 1 ] === "bottom" ?
1223
-						data.elemHeight :
1224
-						0,
1225
-				atOffset = data.at[ 1 ] === "top" ?
1226
-					data.targetHeight :
1227
-					data.at[ 1 ] === "bottom" ?
1228
-						-data.targetHeight :
1229
-						0,
1230
-				offset = -2 * data.offset[ 1 ],
1231
-				newOverTop,
1232
-				newOverBottom;
1233
-			if ( overTop < 0 ) {
1234
-				newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
1235
-					outerHeight - withinOffset;
1236
-				if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
1237
-					position.top += myOffset + atOffset + offset;
1238
-				}
1239
-			} else if ( overBottom > 0 ) {
1240
-				newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
1241
-					offset - offsetTop;
1242
-				if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
1243
-					position.top += myOffset + atOffset + offset;
1244
-				}
1245
-			}
1246
-		}
1247
-	},
1248
-	flipfit: {
1249
-		left: function() {
1250
-			$.ui.position.flip.left.apply( this, arguments );
1251
-			$.ui.position.fit.left.apply( this, arguments );
1252
-		},
1253
-		top: function() {
1254
-			$.ui.position.flip.top.apply( this, arguments );
1255
-			$.ui.position.fit.top.apply( this, arguments );
1256
-		}
1257
-	}
1258
-};
1259
-
1260
-} )();
1261
-
1262
-var position = $.ui.position;
1263
-
1264
-
1265
-/*!
1266
- * jQuery UI :data 1.13.2
1267
- * http://jqueryui.com
1268
- *
1269
- * Copyright jQuery Foundation and other contributors
1270
- * Released under the MIT license.
1271
- * http://jquery.org/license
1272
- */
1273
-
1274
-//>>label: :data Selector
1275
-//>>group: Core
1276
-//>>description: Selects elements which have data stored under the specified key.
1277
-//>>docs: http://api.jqueryui.com/data-selector/
1278
-
1279
-
1280
-var data = $.extend( $.expr.pseudos, {
1281
-	data: $.expr.createPseudo ?
1282
-		$.expr.createPseudo( function( dataName ) {
1283
-			return function( elem ) {
1284
-				return !!$.data( elem, dataName );
1285
-			};
1286
-		} ) :
1287
-
1288
-		// Support: jQuery <1.8
1289
-		function( elem, i, match ) {
1290
-			return !!$.data( elem, match[ 3 ] );
1291
-		}
1292
-} );
1293
-
1294
-/*!
1295
- * jQuery UI Disable Selection 1.13.2
1296
- * http://jqueryui.com
1297
- *
1298
- * Copyright jQuery Foundation and other contributors
1299
- * Released under the MIT license.
1300
- * http://jquery.org/license
1301
- */
1302
-
1303
-//>>label: disableSelection
1304
-//>>group: Core
1305
-//>>description: Disable selection of text content within the set of matched elements.
1306
-//>>docs: http://api.jqueryui.com/disableSelection/
1307
-
1308
-// This file is deprecated
1309
-
1310
-var disableSelection = $.fn.extend( {
1311
-	disableSelection: ( function() {
1312
-		var eventType = "onselectstart" in document.createElement( "div" ) ?
1313
-			"selectstart" :
1314
-			"mousedown";
1315
-
1316
-		return function() {
1317
-			return this.on( eventType + ".ui-disableSelection", function( event ) {
1318
-				event.preventDefault();
1319
-			} );
1320
-		};
1321
-	} )(),
1322
-
1323
-	enableSelection: function() {
1324
-		return this.off( ".ui-disableSelection" );
1325
-	}
1326
-} );
1327
-
1328
-
1329
-
1330
-// Create a local jQuery because jQuery Color relies on it and the
1331
-// global may not exist with AMD and a custom build (#10199).
1332
-// This module is a noop if used as a regular AMD module.
1333
-// eslint-disable-next-line no-unused-vars
1334
-var jQuery = $;
1335
-
1336
-
1337
-/*!
1338
- * jQuery Color Animations v2.2.0
1339
- * https://github.com/jquery/jquery-color
1340
- *
1341
- * Copyright OpenJS Foundation and other contributors
1342
- * Released under the MIT license.
1343
- * http://jquery.org/license
1344
- *
1345
- * Date: Sun May 10 09:02:36 2020 +0200
1346
- */
1347
-
1348
-
1349
-
1350
-	var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " +
1351
-		"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
1352
-
1353
-	class2type = {},
1354
-	toString = class2type.toString,
1355
-
1356
-	// plusequals test for += 100 -= 100
1357
-	rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
1358
-
1359
-	// a set of RE's that can match strings and generate color tuples.
1360
-	stringParsers = [ {
1361
-			re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
1362
-			parse: function( execResult ) {
1363
-				return [
1364
-					execResult[ 1 ],
1365
-					execResult[ 2 ],
1366
-					execResult[ 3 ],
1367
-					execResult[ 4 ]
1368
-				];
1369
-			}
1370
-		}, {
1371
-			re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
1372
-			parse: function( execResult ) {
1373
-				return [
1374
-					execResult[ 1 ] * 2.55,
1375
-					execResult[ 2 ] * 2.55,
1376
-					execResult[ 3 ] * 2.55,
1377
-					execResult[ 4 ]
1378
-				];
1379
-			}
1380
-		}, {
1381
-
1382
-			// this regex ignores A-F because it's compared against an already lowercased string
1383
-			re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,
1384
-			parse: function( execResult ) {
1385
-				return [
1386
-					parseInt( execResult[ 1 ], 16 ),
1387
-					parseInt( execResult[ 2 ], 16 ),
1388
-					parseInt( execResult[ 3 ], 16 ),
1389
-					execResult[ 4 ] ?
1390
-						( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) :
1391
-						1
1392
-				];
1393
-			}
1394
-		}, {
1395
-
1396
-			// this regex ignores A-F because it's compared against an already lowercased string
1397
-			re: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,
1398
-			parse: function( execResult ) {
1399
-				return [
1400
-					parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
1401
-					parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
1402
-					parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ),
1403
-					execResult[ 4 ] ?
1404
-						( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 )
1405
-							.toFixed( 2 ) :
1406
-						1
1407
-				];
1408
-			}
1409
-		}, {
1410
-			re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
1411
-			space: "hsla",
1412
-			parse: function( execResult ) {
1413
-				return [
1414
-					execResult[ 1 ],
1415
-					execResult[ 2 ] / 100,
1416
-					execResult[ 3 ] / 100,
1417
-					execResult[ 4 ]
1418
-				];
1419
-			}
1420
-		} ],
1421
-
1422
-	// jQuery.Color( )
1423
-	color = jQuery.Color = function( color, green, blue, alpha ) {
1424
-		return new jQuery.Color.fn.parse( color, green, blue, alpha );
1425
-	},
1426
-	spaces = {
1427
-		rgba: {
1428
-			props: {
1429
-				red: {
1430
-					idx: 0,
1431
-					type: "byte"
1432
-				},
1433
-				green: {
1434
-					idx: 1,
1435
-					type: "byte"
1436
-				},
1437
-				blue: {
1438
-					idx: 2,
1439
-					type: "byte"
1440
-				}
1441
-			}
1442
-		},
1443
-
1444
-		hsla: {
1445
-			props: {
1446
-				hue: {
1447
-					idx: 0,
1448
-					type: "degrees"
1449
-				},
1450
-				saturation: {
1451
-					idx: 1,
1452
-					type: "percent"
1453
-				},
1454
-				lightness: {
1455
-					idx: 2,
1456
-					type: "percent"
1457
-				}
1458
-			}
1459
-		}
1460
-	},
1461
-	propTypes = {
1462
-		"byte": {
1463
-			floor: true,
1464
-			max: 255
1465
-		},
1466
-		"percent": {
1467
-			max: 1
1468
-		},
1469
-		"degrees": {
1470
-			mod: 360,
1471
-			floor: true
1472
-		}
1473
-	},
1474
-	support = color.support = {},
1475
-
1476
-	// element for support tests
1477
-	supportElem = jQuery( "<p>" )[ 0 ],
1478
-
1479
-	// colors = jQuery.Color.names
1480
-	colors,
1481
-
1482
-	// local aliases of functions called often
1483
-	each = jQuery.each;
1484
-
1485
-// determine rgba support immediately
1486
-supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
1487
-support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
1488
-
1489
-// define cache name and alpha properties
1490
-// for rgba and hsla spaces
1491
-each( spaces, function( spaceName, space ) {
1492
-	space.cache = "_" + spaceName;
1493
-	space.props.alpha = {
1494
-		idx: 3,
1495
-		type: "percent",
1496
-		def: 1
1497
-	};
1498
-} );
1499
-
1500
-// Populate the class2type map
1501
-jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
1502
-	function( _i, name ) {
1503
-		class2type[ "[object " + name + "]" ] = name.toLowerCase();
1504
-	} );
1505
-
1506
-function getType( obj ) {
1507
-	if ( obj == null ) {
1508
-		return obj + "";
1509
-	}
1510
-
1511
-	return typeof obj === "object" ?
1512
-		class2type[ toString.call( obj ) ] || "object" :
1513
-		typeof obj;
1514
-}
1515
-
1516
-function clamp( value, prop, allowEmpty ) {
1517
-	var type = propTypes[ prop.type ] || {};
1518
-
1519
-	if ( value == null ) {
1520
-		return ( allowEmpty || !prop.def ) ? null : prop.def;
1521
-	}
1522
-
1523
-	// ~~ is an short way of doing floor for positive numbers
1524
-	value = type.floor ? ~~value : parseFloat( value );
1525
-
1526
-	// IE will pass in empty strings as value for alpha,
1527
-	// which will hit this case
1528
-	if ( isNaN( value ) ) {
1529
-		return prop.def;
1530
-	}
1531
-
1532
-	if ( type.mod ) {
1533
-
1534
-		// we add mod before modding to make sure that negatives values
1535
-		// get converted properly: -10 -> 350
1536
-		return ( value + type.mod ) % type.mod;
1537
-	}
1538
-
1539
-	// for now all property types without mod have min and max
1540
-	return Math.min( type.max, Math.max( 0, value ) );
1541
-}
1542
-
1543
-function stringParse( string ) {
1544
-	var inst = color(),
1545
-		rgba = inst._rgba = [];
1546
-
1547
-	string = string.toLowerCase();
1548
-
1549
-	each( stringParsers, function( _i, parser ) {
1550
-		var parsed,
1551
-			match = parser.re.exec( string ),
1552
-			values = match && parser.parse( match ),
1553
-			spaceName = parser.space || "rgba";
1554
-
1555
-		if ( values ) {
1556
-			parsed = inst[ spaceName ]( values );
1557
-
1558
-			// if this was an rgba parse the assignment might happen twice
1559
-			// oh well....
1560
-			inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
1561
-			rgba = inst._rgba = parsed._rgba;
1562
-
1563
-			// exit each( stringParsers ) here because we matched
1564
-			return false;
1565
-		}
1566
-	} );
1567
-
1568
-	// Found a stringParser that handled it
1569
-	if ( rgba.length ) {
1570
-
1571
-		// if this came from a parsed string, force "transparent" when alpha is 0
1572
-		// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
1573
-		if ( rgba.join() === "0,0,0,0" ) {
1574
-			jQuery.extend( rgba, colors.transparent );
1575
-		}
1576
-		return inst;
1577
-	}
1578
-
1579
-	// named colors
1580
-	return colors[ string ];
1581
-}
1582
-
1583
-color.fn = jQuery.extend( color.prototype, {
1584
-	parse: function( red, green, blue, alpha ) {
1585
-		if ( red === undefined ) {
1586
-			this._rgba = [ null, null, null, null ];
1587
-			return this;
1588
-		}
1589
-		if ( red.jquery || red.nodeType ) {
1590
-			red = jQuery( red ).css( green );
1591
-			green = undefined;
1592
-		}
1593
-
1594
-		var inst = this,
1595
-			type = getType( red ),
1596
-			rgba = this._rgba = [];
1597
-
1598
-		// more than 1 argument specified - assume ( red, green, blue, alpha )
1599
-		if ( green !== undefined ) {
1600
-			red = [ red, green, blue, alpha ];
1601
-			type = "array";
1602
-		}
1603
-
1604
-		if ( type === "string" ) {
1605
-			return this.parse( stringParse( red ) || colors._default );
1606
-		}
1607
-
1608
-		if ( type === "array" ) {
1609
-			each( spaces.rgba.props, function( _key, prop ) {
1610
-				rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
1611
-			} );
1612
-			return this;
1613
-		}
1614
-
1615
-		if ( type === "object" ) {
1616
-			if ( red instanceof color ) {
1617
-				each( spaces, function( _spaceName, space ) {
1618
-					if ( red[ space.cache ] ) {
1619
-						inst[ space.cache ] = red[ space.cache ].slice();
1620
-					}
1621
-				} );
1622
-			} else {
1623
-				each( spaces, function( _spaceName, space ) {
1624
-					var cache = space.cache;
1625
-					each( space.props, function( key, prop ) {
1626
-
1627
-						// if the cache doesn't exist, and we know how to convert
1628
-						if ( !inst[ cache ] && space.to ) {
1629
-
1630
-							// if the value was null, we don't need to copy it
1631
-							// if the key was alpha, we don't need to copy it either
1632
-							if ( key === "alpha" || red[ key ] == null ) {
1633
-								return;
1634
-							}
1635
-							inst[ cache ] = space.to( inst._rgba );
1636
-						}
1637
-
1638
-						// this is the only case where we allow nulls for ALL properties.
1639
-						// call clamp with alwaysAllowEmpty
1640
-						inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
1641
-					} );
1642
-
1643
-					// everything defined but alpha?
1644
-					if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
1645
-
1646
-						// use the default of 1
1647
-						if ( inst[ cache ][ 3 ] == null ) {
1648
-							inst[ cache ][ 3 ] = 1;
1649
-						}
1650
-
1651
-						if ( space.from ) {
1652
-							inst._rgba = space.from( inst[ cache ] );
1653
-						}
1654
-					}
1655
-				} );
1656
-			}
1657
-			return this;
1658
-		}
1659
-	},
1660
-	is: function( compare ) {
1661
-		var is = color( compare ),
1662
-			same = true,
1663
-			inst = this;
1664
-
1665
-		each( spaces, function( _, space ) {
1666
-			var localCache,
1667
-				isCache = is[ space.cache ];
1668
-			if ( isCache ) {
1669
-				localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
1670
-				each( space.props, function( _, prop ) {
1671
-					if ( isCache[ prop.idx ] != null ) {
1672
-						same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
1673
-						return same;
1674
-					}
1675
-				} );
1676
-			}
1677
-			return same;
1678
-		} );
1679
-		return same;
1680
-	},
1681
-	_space: function() {
1682
-		var used = [],
1683
-			inst = this;
1684
-		each( spaces, function( spaceName, space ) {
1685
-			if ( inst[ space.cache ] ) {
1686
-				used.push( spaceName );
1687
-			}
1688
-		} );
1689
-		return used.pop();
1690
-	},
1691
-	transition: function( other, distance ) {
1692
-		var end = color( other ),
1693
-			spaceName = end._space(),
1694
-			space = spaces[ spaceName ],
1695
-			startColor = this.alpha() === 0 ? color( "transparent" ) : this,
1696
-			start = startColor[ space.cache ] || space.to( startColor._rgba ),
1697
-			result = start.slice();
1698
-
1699
-		end = end[ space.cache ];
1700
-		each( space.props, function( _key, prop ) {
1701
-			var index = prop.idx,
1702
-				startValue = start[ index ],
1703
-				endValue = end[ index ],
1704
-				type = propTypes[ prop.type ] || {};
1705
-
1706
-			// if null, don't override start value
1707
-			if ( endValue === null ) {
1708
-				return;
1709
-			}
1710
-
1711
-			// if null - use end
1712
-			if ( startValue === null ) {
1713
-				result[ index ] = endValue;
1714
-			} else {
1715
-				if ( type.mod ) {
1716
-					if ( endValue - startValue > type.mod / 2 ) {
1717
-						startValue += type.mod;
1718
-					} else if ( startValue - endValue > type.mod / 2 ) {
1719
-						startValue -= type.mod;
1720
-					}
1721
-				}
1722
-				result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
1723
-			}
1724
-		} );
1725
-		return this[ spaceName ]( result );
1726
-	},
1727
-	blend: function( opaque ) {
1728
-
1729
-		// if we are already opaque - return ourself
1730
-		if ( this._rgba[ 3 ] === 1 ) {
1731
-			return this;
1732
-		}
1733
-
1734
-		var rgb = this._rgba.slice(),
1735
-			a = rgb.pop(),
1736
-			blend = color( opaque )._rgba;
1737
-
1738
-		return color( jQuery.map( rgb, function( v, i ) {
1739
-			return ( 1 - a ) * blend[ i ] + a * v;
1740
-		} ) );
1741
-	},
1742
-	toRgbaString: function() {
1743
-		var prefix = "rgba(",
1744
-			rgba = jQuery.map( this._rgba, function( v, i ) {
1745
-				if ( v != null ) {
1746
-					return v;
1747
-				}
1748
-				return i > 2 ? 1 : 0;
1749
-			} );
1750
-
1751
-		if ( rgba[ 3 ] === 1 ) {
1752
-			rgba.pop();
1753
-			prefix = "rgb(";
1754
-		}
1755
-
1756
-		return prefix + rgba.join() + ")";
1757
-	},
1758
-	toHslaString: function() {
1759
-		var prefix = "hsla(",
1760
-			hsla = jQuery.map( this.hsla(), function( v, i ) {
1761
-				if ( v == null ) {
1762
-					v = i > 2 ? 1 : 0;
1763
-				}
1764
-
1765
-				// catch 1 and 2
1766
-				if ( i && i < 3 ) {
1767
-					v = Math.round( v * 100 ) + "%";
1768
-				}
1769
-				return v;
1770
-			} );
1771
-
1772
-		if ( hsla[ 3 ] === 1 ) {
1773
-			hsla.pop();
1774
-			prefix = "hsl(";
1775
-		}
1776
-		return prefix + hsla.join() + ")";
1777
-	},
1778
-	toHexString: function( includeAlpha ) {
1779
-		var rgba = this._rgba.slice(),
1780
-			alpha = rgba.pop();
1781
-
1782
-		if ( includeAlpha ) {
1783
-			rgba.push( ~~( alpha * 255 ) );
1784
-		}
1785
-
1786
-		return "#" + jQuery.map( rgba, function( v ) {
1787
-
1788
-			// default to 0 when nulls exist
1789
-			v = ( v || 0 ).toString( 16 );
1790
-			return v.length === 1 ? "0" + v : v;
1791
-		} ).join( "" );
1792
-	},
1793
-	toString: function() {
1794
-		return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
1795
-	}
1796
-} );
1797
-color.fn.parse.prototype = color.fn;
1798
-
1799
-// hsla conversions adapted from:
1800
-// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
1801
-
1802
-function hue2rgb( p, q, h ) {
1803
-	h = ( h + 1 ) % 1;
1804
-	if ( h * 6 < 1 ) {
1805
-		return p + ( q - p ) * h * 6;
1806
-	}
1807
-	if ( h * 2 < 1 ) {
1808
-		return q;
1809
-	}
1810
-	if ( h * 3 < 2 ) {
1811
-		return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;
1812
-	}
1813
-	return p;
1814
-}
1815
-
1816
-spaces.hsla.to = function( rgba ) {
1817
-	if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
1818
-		return [ null, null, null, rgba[ 3 ] ];
1819
-	}
1820
-	var r = rgba[ 0 ] / 255,
1821
-		g = rgba[ 1 ] / 255,
1822
-		b = rgba[ 2 ] / 255,
1823
-		a = rgba[ 3 ],
1824
-		max = Math.max( r, g, b ),
1825
-		min = Math.min( r, g, b ),
1826
-		diff = max - min,
1827
-		add = max + min,
1828
-		l = add * 0.5,
1829
-		h, s;
1830
-
1831
-	if ( min === max ) {
1832
-		h = 0;
1833
-	} else if ( r === max ) {
1834
-		h = ( 60 * ( g - b ) / diff ) + 360;
1835
-	} else if ( g === max ) {
1836
-		h = ( 60 * ( b - r ) / diff ) + 120;
1837
-	} else {
1838
-		h = ( 60 * ( r - g ) / diff ) + 240;
1839
-	}
1840
-
1841
-	// chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
1842
-	// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
1843
-	if ( diff === 0 ) {
1844
-		s = 0;
1845
-	} else if ( l <= 0.5 ) {
1846
-		s = diff / add;
1847
-	} else {
1848
-		s = diff / ( 2 - add );
1849
-	}
1850
-	return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];
1851
-};
1852
-
1853
-spaces.hsla.from = function( hsla ) {
1854
-	if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
1855
-		return [ null, null, null, hsla[ 3 ] ];
1856
-	}
1857
-	var h = hsla[ 0 ] / 360,
1858
-		s = hsla[ 1 ],
1859
-		l = hsla[ 2 ],
1860
-		a = hsla[ 3 ],
1861
-		q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
1862
-		p = 2 * l - q;
1863
-
1864
-	return [
1865
-		Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
1866
-		Math.round( hue2rgb( p, q, h ) * 255 ),
1867
-		Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
1868
-		a
1869
-	];
1870
-};
1871
-
1872
-
1873
-each( spaces, function( spaceName, space ) {
1874
-	var props = space.props,
1875
-		cache = space.cache,
1876
-		to = space.to,
1877
-		from = space.from;
1878
-
1879
-	// makes rgba() and hsla()
1880
-	color.fn[ spaceName ] = function( value ) {
1881
-
1882
-		// generate a cache for this space if it doesn't exist
1883
-		if ( to && !this[ cache ] ) {
1884
-			this[ cache ] = to( this._rgba );
1885
-		}
1886
-		if ( value === undefined ) {
1887
-			return this[ cache ].slice();
1888
-		}
1889
-
1890
-		var ret,
1891
-			type = getType( value ),
1892
-			arr = ( type === "array" || type === "object" ) ? value : arguments,
1893
-			local = this[ cache ].slice();
1894
-
1895
-		each( props, function( key, prop ) {
1896
-			var val = arr[ type === "object" ? key : prop.idx ];
1897
-			if ( val == null ) {
1898
-				val = local[ prop.idx ];
1899
-			}
1900
-			local[ prop.idx ] = clamp( val, prop );
1901
-		} );
1902
-
1903
-		if ( from ) {
1904
-			ret = color( from( local ) );
1905
-			ret[ cache ] = local;
1906
-			return ret;
1907
-		} else {
1908
-			return color( local );
1909
-		}
1910
-	};
1911
-
1912
-	// makes red() green() blue() alpha() hue() saturation() lightness()
1913
-	each( props, function( key, prop ) {
1914
-
1915
-		// alpha is included in more than one space
1916
-		if ( color.fn[ key ] ) {
1917
-			return;
1918
-		}
1919
-		color.fn[ key ] = function( value ) {
1920
-			var local, cur, match, fn,
1921
-				vtype = getType( value );
1922
-
1923
-			if ( key === "alpha" ) {
1924
-				fn = this._hsla ? "hsla" : "rgba";
1925
-			} else {
1926
-				fn = spaceName;
1927
-			}
1928
-			local = this[ fn ]();
1929
-			cur = local[ prop.idx ];
1930
-
1931
-			if ( vtype === "undefined" ) {
1932
-				return cur;
1933
-			}
1934
-
1935
-			if ( vtype === "function" ) {
1936
-				value = value.call( this, cur );
1937
-				vtype = getType( value );
1938
-			}
1939
-			if ( value == null && prop.empty ) {
1940
-				return this;
1941
-			}
1942
-			if ( vtype === "string" ) {
1943
-				match = rplusequals.exec( value );
1944
-				if ( match ) {
1945
-					value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
1946
-				}
1947
-			}
1948
-			local[ prop.idx ] = value;
1949
-			return this[ fn ]( local );
1950
-		};
1951
-	} );
1952
-} );
1953
-
1954
-// add cssHook and .fx.step function for each named hook.
1955
-// accept a space separated string of properties
1956
-color.hook = function( hook ) {
1957
-	var hooks = hook.split( " " );
1958
-	each( hooks, function( _i, hook ) {
1959
-		jQuery.cssHooks[ hook ] = {
1960
-			set: function( elem, value ) {
1961
-				var parsed, curElem,
1962
-					backgroundColor = "";
1963
-
1964
-				if ( value !== "transparent" && ( getType( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) {
1965
-					value = color( parsed || value );
1966
-					if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
1967
-						curElem = hook === "backgroundColor" ? elem.parentNode : elem;
1968
-						while (
1969
-							( backgroundColor === "" || backgroundColor === "transparent" ) &&
1970
-							curElem && curElem.style
1971
-						) {
1972
-							try {
1973
-								backgroundColor = jQuery.css( curElem, "backgroundColor" );
1974
-								curElem = curElem.parentNode;
1975
-							} catch ( e ) {
1976
-							}
1977
-						}
1978
-
1979
-						value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
1980
-							backgroundColor :
1981
-							"_default" );
1982
-					}
1983
-
1984
-					value = value.toRgbaString();
1985
-				}
1986
-				try {
1987
-					elem.style[ hook ] = value;
1988
-				} catch ( e ) {
1989
-
1990
-					// wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
1991
-				}
1992
-			}
1993
-		};
1994
-		jQuery.fx.step[ hook ] = function( fx ) {
1995
-			if ( !fx.colorInit ) {
1996
-				fx.start = color( fx.elem, hook );
1997
-				fx.end = color( fx.end );
1998
-				fx.colorInit = true;
1999
-			}
2000
-			jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
2001
-		};
2002
-	} );
2003
-
2004
-};
2005
-
2006
-color.hook( stepHooks );
2007
-
2008
-jQuery.cssHooks.borderColor = {
2009
-	expand: function( value ) {
2010
-		var expanded = {};
2011
-
2012
-		each( [ "Top", "Right", "Bottom", "Left" ], function( _i, part ) {
2013
-			expanded[ "border" + part + "Color" ] = value;
2014
-		} );
2015
-		return expanded;
2016
-	}
2017
-};
2018
-
2019
-// Basic color names only.
2020
-// Usage of any of the other color names requires adding yourself or including
2021
-// jquery.color.svg-names.js.
2022
-colors = jQuery.Color.names = {
2023
-
2024
-	// 4.1. Basic color keywords
2025
-	aqua: "#00ffff",
2026
-	black: "#000000",
2027
-	blue: "#0000ff",
2028
-	fuchsia: "#ff00ff",
2029
-	gray: "#808080",
2030
-	green: "#008000",
2031
-	lime: "#00ff00",
2032
-	maroon: "#800000",
2033
-	navy: "#000080",
2034
-	olive: "#808000",
2035
-	purple: "#800080",
2036
-	red: "#ff0000",
2037
-	silver: "#c0c0c0",
2038
-	teal: "#008080",
2039
-	white: "#ffffff",
2040
-	yellow: "#ffff00",
2041
-
2042
-	// 4.2.3. "transparent" color keyword
2043
-	transparent: [ null, null, null, 0 ],
2044
-
2045
-	_default: "#ffffff"
2046
-};
2047
-
2048
-
2049
-/*!
2050
- * jQuery UI Effects 1.13.2
2051
- * http://jqueryui.com
2052
- *
2053
- * Copyright jQuery Foundation and other contributors
2054
- * Released under the MIT license.
2055
- * http://jquery.org/license
2056
- */
2057
-
2058
-//>>label: Effects Core
2059
-//>>group: Effects
2060
-/* eslint-disable max-len */
2061
-//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
2062
-/* eslint-enable max-len */
2063
-//>>docs: http://api.jqueryui.com/category/effects-core/
2064
-//>>demos: http://jqueryui.com/effect/
2065
-
2066
-
2067
-var dataSpace = "ui-effects-",
2068
-	dataSpaceStyle = "ui-effects-style",
2069
-	dataSpaceAnimated = "ui-effects-animated";
2070
-
2071
-$.effects = {
2072
-	effect: {}
2073
-};
2074
-
2075
-/******************************************************************************/
2076
-/****************************** CLASS ANIMATIONS ******************************/
2077
-/******************************************************************************/
2078
-( function() {
2079
-
2080
-var classAnimationActions = [ "add", "remove", "toggle" ],
2081
-	shorthandStyles = {
2082
-		border: 1,
2083
-		borderBottom: 1,
2084
-		borderColor: 1,
2085
-		borderLeft: 1,
2086
-		borderRight: 1,
2087
-		borderTop: 1,
2088
-		borderWidth: 1,
2089
-		margin: 1,
2090
-		padding: 1
2091
-	};
2092
-
2093
-$.each(
2094
-	[ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ],
2095
-	function( _, prop ) {
2096
-		$.fx.step[ prop ] = function( fx ) {
2097
-			if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
2098
-				jQuery.style( fx.elem, prop, fx.end );
2099
-				fx.setAttr = true;
2100
-			}
2101
-		};
2102
-	}
2103
-);
2104
-
2105
-function camelCase( string ) {
2106
-	return string.replace( /-([\da-z])/gi, function( all, letter ) {
2107
-		return letter.toUpperCase();
2108
-	} );
2109
-}
2110
-
2111
-function getElementStyles( elem ) {
2112
-	var key, len,
2113
-		style = elem.ownerDocument.defaultView ?
2114
-			elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
2115
-			elem.currentStyle,
2116
-		styles = {};
2117
-
2118
-	if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
2119
-		len = style.length;
2120
-		while ( len-- ) {
2121
-			key = style[ len ];
2122
-			if ( typeof style[ key ] === "string" ) {
2123
-				styles[ camelCase( key ) ] = style[ key ];
2124
-			}
2125
-		}
2126
-
2127
-	// Support: Opera, IE <9
2128
-	} else {
2129
-		for ( key in style ) {
2130
-			if ( typeof style[ key ] === "string" ) {
2131
-				styles[ key ] = style[ key ];
2132
-			}
2133
-		}
2134
-	}
2135
-
2136
-	return styles;
2137
-}
2138
-
2139
-function styleDifference( oldStyle, newStyle ) {
2140
-	var diff = {},
2141
-		name, value;
2142
-
2143
-	for ( name in newStyle ) {
2144
-		value = newStyle[ name ];
2145
-		if ( oldStyle[ name ] !== value ) {
2146
-			if ( !shorthandStyles[ name ] ) {
2147
-				if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
2148
-					diff[ name ] = value;
2149
-				}
2150
-			}
2151
-		}
2152
-	}
2153
-
2154
-	return diff;
2155
-}
2156
-
2157
-// Support: jQuery <1.8
2158
-if ( !$.fn.addBack ) {
2159
-	$.fn.addBack = function( selector ) {
2160
-		return this.add( selector == null ?
2161
-			this.prevObject : this.prevObject.filter( selector )
2162
-		);
2163
-	};
2164
-}
2165
-
2166
-$.effects.animateClass = function( value, duration, easing, callback ) {
2167
-	var o = $.speed( duration, easing, callback );
2168
-
2169
-	return this.queue( function() {
2170
-		var animated = $( this ),
2171
-			baseClass = animated.attr( "class" ) || "",
2172
-			applyClassChange,
2173
-			allAnimations = o.children ? animated.find( "*" ).addBack() : animated;
2174
-
2175
-		// Map the animated objects to store the original styles.
2176
-		allAnimations = allAnimations.map( function() {
2177
-			var el = $( this );
2178
-			return {
2179
-				el: el,
2180
-				start: getElementStyles( this )
2181
-			};
2182
-		} );
2183
-
2184
-		// Apply class change
2185
-		applyClassChange = function() {
2186
-			$.each( classAnimationActions, function( i, action ) {
2187
-				if ( value[ action ] ) {
2188
-					animated[ action + "Class" ]( value[ action ] );
2189
-				}
2190
-			} );
2191
-		};
2192
-		applyClassChange();
2193
-
2194
-		// Map all animated objects again - calculate new styles and diff
2195
-		allAnimations = allAnimations.map( function() {
2196
-			this.end = getElementStyles( this.el[ 0 ] );
2197
-			this.diff = styleDifference( this.start, this.end );
2198
-			return this;
2199
-		} );
2200
-
2201
-		// Apply original class
2202
-		animated.attr( "class", baseClass );
2203
-
2204
-		// Map all animated objects again - this time collecting a promise
2205
-		allAnimations = allAnimations.map( function() {
2206
-			var styleInfo = this,
2207
-				dfd = $.Deferred(),
2208
-				opts = $.extend( {}, o, {
2209
-					queue: false,
2210
-					complete: function() {
2211
-						dfd.resolve( styleInfo );
2212
-					}
2213
-				} );
2214
-
2215
-			this.el.animate( this.diff, opts );
2216
-			return dfd.promise();
2217
-		} );
2218
-
2219
-		// Once all animations have completed:
2220
-		$.when.apply( $, allAnimations.get() ).done( function() {
2221
-
2222
-			// Set the final class
2223
-			applyClassChange();
2224
-
2225
-			// For each animated element,
2226
-			// clear all css properties that were animated
2227
-			$.each( arguments, function() {
2228
-				var el = this.el;
2229
-				$.each( this.diff, function( key ) {
2230
-					el.css( key, "" );
2231
-				} );
2232
-			} );
2233
-
2234
-			// This is guarnteed to be there if you use jQuery.speed()
2235
-			// it also handles dequeuing the next anim...
2236
-			o.complete.call( animated[ 0 ] );
2237
-		} );
2238
-	} );
2239
-};
2240
-
2241
-$.fn.extend( {
2242
-	addClass: ( function( orig ) {
2243
-		return function( classNames, speed, easing, callback ) {
2244
-			return speed ?
2245
-				$.effects.animateClass.call( this,
2246
-					{ add: classNames }, speed, easing, callback ) :
2247
-				orig.apply( this, arguments );
2248
-		};
2249
-	} )( $.fn.addClass ),
2250
-
2251
-	removeClass: ( function( orig ) {
2252
-		return function( classNames, speed, easing, callback ) {
2253
-			return arguments.length > 1 ?
2254
-				$.effects.animateClass.call( this,
2255
-					{ remove: classNames }, speed, easing, callback ) :
2256
-				orig.apply( this, arguments );
2257
-		};
2258
-	} )( $.fn.removeClass ),
2259
-
2260
-	toggleClass: ( function( orig ) {
2261
-		return function( classNames, force, speed, easing, callback ) {
2262
-			if ( typeof force === "boolean" || force === undefined ) {
2263
-				if ( !speed ) {
2264
-
2265
-					// Without speed parameter
2266
-					return orig.apply( this, arguments );
2267
-				} else {
2268
-					return $.effects.animateClass.call( this,
2269
-						( force ? { add: classNames } : { remove: classNames } ),
2270
-						speed, easing, callback );
2271
-				}
2272
-			} else {
2273
-
2274
-				// Without force parameter
2275
-				return $.effects.animateClass.call( this,
2276
-					{ toggle: classNames }, force, speed, easing );
2277
-			}
2278
-		};
2279
-	} )( $.fn.toggleClass ),
2280
-
2281
-	switchClass: function( remove, add, speed, easing, callback ) {
2282
-		return $.effects.animateClass.call( this, {
2283
-			add: add,
2284
-			remove: remove
2285
-		}, speed, easing, callback );
2286
-	}
2287
-} );
2288
-
2289
-} )();
2290
-
2291
-/******************************************************************************/
2292
-/*********************************** EFFECTS **********************************/
2293
-/******************************************************************************/
2294
-
2295
-( function() {
2296
-
2297
-if ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) {
2298
-	$.expr.pseudos.animated = ( function( orig ) {
2299
-		return function( elem ) {
2300
-			return !!$( elem ).data( dataSpaceAnimated ) || orig( elem );
2301
-		};
2302
-	} )( $.expr.pseudos.animated );
2303
-}
2304
-
2305
-if ( $.uiBackCompat !== false ) {
2306
-	$.extend( $.effects, {
2307
-
2308
-		// Saves a set of properties in a data storage
2309
-		save: function( element, set ) {
2310
-			var i = 0, length = set.length;
2311
-			for ( ; i < length; i++ ) {
2312
-				if ( set[ i ] !== null ) {
2313
-					element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
2314
-				}
2315
-			}
2316
-		},
2317
-
2318
-		// Restores a set of previously saved properties from a data storage
2319
-		restore: function( element, set ) {
2320
-			var val, i = 0, length = set.length;
2321
-			for ( ; i < length; i++ ) {
2322
-				if ( set[ i ] !== null ) {
2323
-					val = element.data( dataSpace + set[ i ] );
2324
-					element.css( set[ i ], val );
2325
-				}
2326
-			}
2327
-		},
2328
-
2329
-		setMode: function( el, mode ) {
2330
-			if ( mode === "toggle" ) {
2331
-				mode = el.is( ":hidden" ) ? "show" : "hide";
2332
-			}
2333
-			return mode;
2334
-		},
2335
-
2336
-		// Wraps the element around a wrapper that copies position properties
2337
-		createWrapper: function( element ) {
2338
-
2339
-			// If the element is already wrapped, return it
2340
-			if ( element.parent().is( ".ui-effects-wrapper" ) ) {
2341
-				return element.parent();
2342
-			}
2343
-
2344
-			// Wrap the element
2345
-			var props = {
2346
-					width: element.outerWidth( true ),
2347
-					height: element.outerHeight( true ),
2348
-					"float": element.css( "float" )
2349
-				},
2350
-				wrapper = $( "<div></div>" )
2351
-					.addClass( "ui-effects-wrapper" )
2352
-					.css( {
2353
-						fontSize: "100%",
2354
-						background: "transparent",
2355
-						border: "none",
2356
-						margin: 0,
2357
-						padding: 0
2358
-					} ),
2359
-
2360
-				// Store the size in case width/height are defined in % - Fixes #5245
2361
-				size = {
2362
-					width: element.width(),
2363
-					height: element.height()
2364
-				},
2365
-				active = document.activeElement;
2366
-
2367
-			// Support: Firefox
2368
-			// Firefox incorrectly exposes anonymous content
2369
-			// https://bugzilla.mozilla.org/show_bug.cgi?id=561664
2370
-			try {
2371
-				// eslint-disable-next-line no-unused-expressions
2372
-				active.id;
2373
-			} catch ( e ) {
2374
-				active = document.body;
2375
-			}
2376
-
2377
-			element.wrap( wrapper );
2378
-
2379
-			// Fixes #7595 - Elements lose focus when wrapped.
2380
-			if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
2381
-				$( active ).trigger( "focus" );
2382
-			}
2383
-
2384
-			// Hotfix for jQuery 1.4 since some change in wrap() seems to actually
2385
-			// lose the reference to the wrapped element
2386
-			wrapper = element.parent();
2387
-
2388
-			// Transfer positioning properties to the wrapper
2389
-			if ( element.css( "position" ) === "static" ) {
2390
-				wrapper.css( { position: "relative" } );
2391
-				element.css( { position: "relative" } );
2392
-			} else {
2393
-				$.extend( props, {
2394
-					position: element.css( "position" ),
2395
-					zIndex: element.css( "z-index" )
2396
-				} );
2397
-				$.each( [ "top", "left", "bottom", "right" ], function( i, pos ) {
2398
-					props[ pos ] = element.css( pos );
2399
-					if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
2400
-						props[ pos ] = "auto";
2401
-					}
2402
-				} );
2403
-				element.css( {
2404
-					position: "relative",
2405
-					top: 0,
2406
-					left: 0,
2407
-					right: "auto",
2408
-					bottom: "auto"
2409
-				} );
2410
-			}
2411
-			element.css( size );
2412
-
2413
-			return wrapper.css( props ).show();
2414
-		},
2415
-
2416
-		removeWrapper: function( element ) {
2417
-			var active = document.activeElement;
2418
-
2419
-			if ( element.parent().is( ".ui-effects-wrapper" ) ) {
2420
-				element.parent().replaceWith( element );
2421
-
2422
-				// Fixes #7595 - Elements lose focus when wrapped.
2423
-				if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
2424
-					$( active ).trigger( "focus" );
2425
-				}
2426
-			}
2427
-
2428
-			return element;
2429
-		}
2430
-	} );
2431
-}
2432
-
2433
-$.extend( $.effects, {
2434
-	version: "1.13.2",
2435
-
2436
-	define: function( name, mode, effect ) {
2437
-		if ( !effect ) {
2438
-			effect = mode;
2439
-			mode = "effect";
2440
-		}
2441
-
2442
-		$.effects.effect[ name ] = effect;
2443
-		$.effects.effect[ name ].mode = mode;
2444
-
2445
-		return effect;
2446
-	},
2447
-
2448
-	scaledDimensions: function( element, percent, direction ) {
2449
-		if ( percent === 0 ) {
2450
-			return {
2451
-				height: 0,
2452
-				width: 0,
2453
-				outerHeight: 0,
2454
-				outerWidth: 0
2455
-			};
2456
-		}
2457
-
2458
-		var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1,
2459
-			y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1;
2460
-
2461
-		return {
2462
-			height: element.height() * y,
2463
-			width: element.width() * x,
2464
-			outerHeight: element.outerHeight() * y,
2465
-			outerWidth: element.outerWidth() * x
2466
-		};
2467
-
2468
-	},
2469
-
2470
-	clipToBox: function( animation ) {
2471
-		return {
2472
-			width: animation.clip.right - animation.clip.left,
2473
-			height: animation.clip.bottom - animation.clip.top,
2474
-			left: animation.clip.left,
2475
-			top: animation.clip.top
2476
-		};
2477
-	},
2478
-
2479
-	// Injects recently queued functions to be first in line (after "inprogress")
2480
-	unshift: function( element, queueLength, count ) {
2481
-		var queue = element.queue();
2482
-
2483
-		if ( queueLength > 1 ) {
2484
-			queue.splice.apply( queue,
2485
-				[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );
2486
-		}
2487
-		element.dequeue();
2488
-	},
2489
-
2490
-	saveStyle: function( element ) {
2491
-		element.data( dataSpaceStyle, element[ 0 ].style.cssText );
2492
-	},
2493
-
2494
-	restoreStyle: function( element ) {
2495
-		element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || "";
2496
-		element.removeData( dataSpaceStyle );
2497
-	},
2498
-
2499
-	mode: function( element, mode ) {
2500
-		var hidden = element.is( ":hidden" );
2501
-
2502
-		if ( mode === "toggle" ) {
2503
-			mode = hidden ? "show" : "hide";
2504
-		}
2505
-		if ( hidden ? mode === "hide" : mode === "show" ) {
2506
-			mode = "none";
2507
-		}
2508
-		return mode;
2509
-	},
2510
-
2511
-	// Translates a [top,left] array into a baseline value
2512
-	getBaseline: function( origin, original ) {
2513
-		var y, x;
2514
-
2515
-		switch ( origin[ 0 ] ) {
2516
-		case "top":
2517
-			y = 0;
2518
-			break;
2519
-		case "middle":
2520
-			y = 0.5;
2521
-			break;
2522
-		case "bottom":
2523
-			y = 1;
2524
-			break;
2525
-		default:
2526
-			y = origin[ 0 ] / original.height;
2527
-		}
2528
-
2529
-		switch ( origin[ 1 ] ) {
2530
-		case "left":
2531
-			x = 0;
2532
-			break;
2533
-		case "center":
2534
-			x = 0.5;
2535
-			break;
2536
-		case "right":
2537
-			x = 1;
2538
-			break;
2539
-		default:
2540
-			x = origin[ 1 ] / original.width;
2541
-		}
2542
-
2543
-		return {
2544
-			x: x,
2545
-			y: y
2546
-		};
2547
-	},
2548
-
2549
-	// Creates a placeholder element so that the original element can be made absolute
2550
-	createPlaceholder: function( element ) {
2551
-		var placeholder,
2552
-			cssPosition = element.css( "position" ),
2553
-			position = element.position();
2554
-
2555
-		// Lock in margins first to account for form elements, which
2556
-		// will change margin if you explicitly set height
2557
-		// see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380
2558
-		// Support: Safari
2559
-		element.css( {
2560
-			marginTop: element.css( "marginTop" ),
2561
-			marginBottom: element.css( "marginBottom" ),
2562
-			marginLeft: element.css( "marginLeft" ),
2563
-			marginRight: element.css( "marginRight" )
2564
-		} )
2565
-		.outerWidth( element.outerWidth() )
2566
-		.outerHeight( element.outerHeight() );
2567
-
2568
-		if ( /^(static|relative)/.test( cssPosition ) ) {
2569
-			cssPosition = "absolute";
2570
-
2571
-			placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( {
2572
-
2573
-				// Convert inline to inline block to account for inline elements
2574
-				// that turn to inline block based on content (like img)
2575
-				display: /^(inline|ruby)/.test( element.css( "display" ) ) ?
2576
-					"inline-block" :
2577
-					"block",
2578
-				visibility: "hidden",
2579
-
2580
-				// Margins need to be set to account for margin collapse
2581
-				marginTop: element.css( "marginTop" ),
2582
-				marginBottom: element.css( "marginBottom" ),
2583
-				marginLeft: element.css( "marginLeft" ),
2584
-				marginRight: element.css( "marginRight" ),
2585
-				"float": element.css( "float" )
2586
-			} )
2587
-			.outerWidth( element.outerWidth() )
2588
-			.outerHeight( element.outerHeight() )
2589
-			.addClass( "ui-effects-placeholder" );
2590
-
2591
-			element.data( dataSpace + "placeholder", placeholder );
2592
-		}
2593
-
2594
-		element.css( {
2595
-			position: cssPosition,
2596
-			left: position.left,
2597
-			top: position.top
2598
-		} );
2599
-
2600
-		return placeholder;
2601
-	},
2602
-
2603
-	removePlaceholder: function( element ) {
2604
-		var dataKey = dataSpace + "placeholder",
2605
-				placeholder = element.data( dataKey );
2606
-
2607
-		if ( placeholder ) {
2608
-			placeholder.remove();
2609
-			element.removeData( dataKey );
2610
-		}
2611
-	},
2612
-
2613
-	// Removes a placeholder if it exists and restores
2614
-	// properties that were modified during placeholder creation
2615
-	cleanUp: function( element ) {
2616
-		$.effects.restoreStyle( element );
2617
-		$.effects.removePlaceholder( element );
2618
-	},
2619
-
2620
-	setTransition: function( element, list, factor, value ) {
2621
-		value = value || {};
2622
-		$.each( list, function( i, x ) {
2623
-			var unit = element.cssUnit( x );
2624
-			if ( unit[ 0 ] > 0 ) {
2625
-				value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
2626
-			}
2627
-		} );
2628
-		return value;
2629
-	}
2630
-} );
2631
-
2632
-// Return an effect options object for the given parameters:
2633
-function _normalizeArguments( effect, options, speed, callback ) {
2634
-
2635
-	// Allow passing all options as the first parameter
2636
-	if ( $.isPlainObject( effect ) ) {
2637
-		options = effect;
2638
-		effect = effect.effect;
2639
-	}
2640
-
2641
-	// Convert to an object
2642
-	effect = { effect: effect };
2643
-
2644
-	// Catch (effect, null, ...)
2645
-	if ( options == null ) {
2646
-		options = {};
2647
-	}
2648
-
2649
-	// Catch (effect, callback)
2650
-	if ( typeof options === "function" ) {
2651
-		callback = options;
2652
-		speed = null;
2653
-		options = {};
2654
-	}
2655
-
2656
-	// Catch (effect, speed, ?)
2657
-	if ( typeof options === "number" || $.fx.speeds[ options ] ) {
2658
-		callback = speed;
2659
-		speed = options;
2660
-		options = {};
2661
-	}
2662
-
2663
-	// Catch (effect, options, callback)
2664
-	if ( typeof speed === "function" ) {
2665
-		callback = speed;
2666
-		speed = null;
2667
-	}
2668
-
2669
-	// Add options to effect
2670
-	if ( options ) {
2671
-		$.extend( effect, options );
2672
-	}
2673
-
2674
-	speed = speed || options.duration;
2675
-	effect.duration = $.fx.off ? 0 :
2676
-		typeof speed === "number" ? speed :
2677
-		speed in $.fx.speeds ? $.fx.speeds[ speed ] :
2678
-		$.fx.speeds._default;
2679
-
2680
-	effect.complete = callback || options.complete;
2681
-
2682
-	return effect;
2683
-}
2684
-
2685
-function standardAnimationOption( option ) {
2686
-
2687
-	// Valid standard speeds (nothing, number, named speed)
2688
-	if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
2689
-		return true;
2690
-	}
2691
-
2692
-	// Invalid strings - treat as "normal" speed
2693
-	if ( typeof option === "string" && !$.effects.effect[ option ] ) {
2694
-		return true;
2695
-	}
2696
-
2697
-	// Complete callback
2698
-	if ( typeof option === "function" ) {
2699
-		return true;
2700
-	}
2701
-
2702
-	// Options hash (but not naming an effect)
2703
-	if ( typeof option === "object" && !option.effect ) {
2704
-		return true;
2705
-	}
2706
-
2707
-	// Didn't match any standard API
2708
-	return false;
2709
-}
2710
-
2711
-$.fn.extend( {
2712
-	effect: function( /* effect, options, speed, callback */ ) {
2713
-		var args = _normalizeArguments.apply( this, arguments ),
2714
-			effectMethod = $.effects.effect[ args.effect ],
2715
-			defaultMode = effectMethod.mode,
2716
-			queue = args.queue,
2717
-			queueName = queue || "fx",
2718
-			complete = args.complete,
2719
-			mode = args.mode,
2720
-			modes = [],
2721
-			prefilter = function( next ) {
2722
-				var el = $( this ),
2723
-					normalizedMode = $.effects.mode( el, mode ) || defaultMode;
2724
-
2725
-				// Sentinel for duck-punching the :animated pseudo-selector
2726
-				el.data( dataSpaceAnimated, true );
2727
-
2728
-				// Save effect mode for later use,
2729
-				// we can't just call $.effects.mode again later,
2730
-				// as the .show() below destroys the initial state
2731
-				modes.push( normalizedMode );
2732
-
2733
-				// See $.uiBackCompat inside of run() for removal of defaultMode in 1.14
2734
-				if ( defaultMode && ( normalizedMode === "show" ||
2735
-						( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) {
2736
-					el.show();
2737
-				}
2738
-
2739
-				if ( !defaultMode || normalizedMode !== "none" ) {
2740
-					$.effects.saveStyle( el );
2741
-				}
2742
-
2743
-				if ( typeof next === "function" ) {
2744
-					next();
2745
-				}
2746
-			};
2747
-
2748
-		if ( $.fx.off || !effectMethod ) {
2749
-
2750
-			// Delegate to the original method (e.g., .show()) if possible
2751
-			if ( mode ) {
2752
-				return this[ mode ]( args.duration, complete );
2753
-			} else {
2754
-				return this.each( function() {
2755
-					if ( complete ) {
2756
-						complete.call( this );
2757
-					}
2758
-				} );
2759
-			}
2760
-		}
2761
-
2762
-		function run( next ) {
2763
-			var elem = $( this );
2764
-
2765
-			function cleanup() {
2766
-				elem.removeData( dataSpaceAnimated );
2767
-
2768
-				$.effects.cleanUp( elem );
2769
-
2770
-				if ( args.mode === "hide" ) {
2771
-					elem.hide();
2772
-				}
2773
-
2774
-				done();
2775
-			}
2776
-
2777
-			function done() {
2778
-				if ( typeof complete === "function" ) {
2779
-					complete.call( elem[ 0 ] );
2780
-				}
2781
-
2782
-				if ( typeof next === "function" ) {
2783
-					next();
2784
-				}
2785
-			}
2786
-
2787
-			// Override mode option on a per element basis,
2788
-			// as toggle can be either show or hide depending on element state
2789
-			args.mode = modes.shift();
2790
-
2791
-			if ( $.uiBackCompat !== false && !defaultMode ) {
2792
-				if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
2793
-
2794
-					// Call the core method to track "olddisplay" properly
2795
-					elem[ mode ]();
2796
-					done();
2797
-				} else {
2798
-					effectMethod.call( elem[ 0 ], args, done );
2799
-				}
2800
-			} else {
2801
-				if ( args.mode === "none" ) {
2802
-
2803
-					// Call the core method to track "olddisplay" properly
2804
-					elem[ mode ]();
2805
-					done();
2806
-				} else {
2807
-					effectMethod.call( elem[ 0 ], args, cleanup );
2808
-				}
2809
-			}
2810
-		}
2811
-
2812
-		// Run prefilter on all elements first to ensure that
2813
-		// any showing or hiding happens before placeholder creation,
2814
-		// which ensures that any layout changes are correctly captured.
2815
-		return queue === false ?
2816
-			this.each( prefilter ).each( run ) :
2817
-			this.queue( queueName, prefilter ).queue( queueName, run );
2818
-	},
2819
-
2820
-	show: ( function( orig ) {
2821
-		return function( option ) {
2822
-			if ( standardAnimationOption( option ) ) {
2823
-				return orig.apply( this, arguments );
2824
-			} else {
2825
-				var args = _normalizeArguments.apply( this, arguments );
2826
-				args.mode = "show";
2827
-				return this.effect.call( this, args );
2828
-			}
2829
-		};
2830
-	} )( $.fn.show ),
2831
-
2832
-	hide: ( function( orig ) {
2833
-		return function( option ) {
2834
-			if ( standardAnimationOption( option ) ) {
2835
-				return orig.apply( this, arguments );
2836
-			} else {
2837
-				var args = _normalizeArguments.apply( this, arguments );
2838
-				args.mode = "hide";
2839
-				return this.effect.call( this, args );
2840
-			}
2841
-		};
2842
-	} )( $.fn.hide ),
2843
-
2844
-	toggle: ( function( orig ) {
2845
-		return function( option ) {
2846
-			if ( standardAnimationOption( option ) || typeof option === "boolean" ) {
2847
-				return orig.apply( this, arguments );
2848
-			} else {
2849
-				var args = _normalizeArguments.apply( this, arguments );
2850
-				args.mode = "toggle";
2851
-				return this.effect.call( this, args );
2852
-			}
2853
-		};
2854
-	} )( $.fn.toggle ),
2855
-
2856
-	cssUnit: function( key ) {
2857
-		var style = this.css( key ),
2858
-			val = [];
2859
-
2860
-		$.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
2861
-			if ( style.indexOf( unit ) > 0 ) {
2862
-				val = [ parseFloat( style ), unit ];
2863
-			}
2864
-		} );
2865
-		return val;
2866
-	},
2867
-
2868
-	cssClip: function( clipObj ) {
2869
-		if ( clipObj ) {
2870
-			return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " +
2871
-				clipObj.bottom + "px " + clipObj.left + "px)" );
2872
-		}
2873
-		return parseClip( this.css( "clip" ), this );
2874
-	},
2875
-
2876
-	transfer: function( options, done ) {
2877
-		var element = $( this ),
2878
-			target = $( options.to ),
2879
-			targetFixed = target.css( "position" ) === "fixed",
2880
-			body = $( "body" ),
2881
-			fixTop = targetFixed ? body.scrollTop() : 0,
2882
-			fixLeft = targetFixed ? body.scrollLeft() : 0,
2883
-			endPosition = target.offset(),
2884
-			animation = {
2885
-				top: endPosition.top - fixTop,
2886
-				left: endPosition.left - fixLeft,
2887
-				height: target.innerHeight(),
2888
-				width: target.innerWidth()
2889
-			},
2890
-			startPosition = element.offset(),
2891
-			transfer = $( "<div class='ui-effects-transfer'></div>" );
2892
-
2893
-		transfer
2894
-			.appendTo( "body" )
2895
-			.addClass( options.className )
2896
-			.css( {
2897
-				top: startPosition.top - fixTop,
2898
-				left: startPosition.left - fixLeft,
2899
-				height: element.innerHeight(),
2900
-				width: element.innerWidth(),
2901
-				position: targetFixed ? "fixed" : "absolute"
2902
-			} )
2903
-			.animate( animation, options.duration, options.easing, function() {
2904
-				transfer.remove();
2905
-				if ( typeof done === "function" ) {
2906
-					done();
2907
-				}
2908
-			} );
2909
-	}
2910
-} );
2911
-
2912
-function parseClip( str, element ) {
2913
-		var outerWidth = element.outerWidth(),
2914
-			outerHeight = element.outerHeight(),
2915
-			clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,
2916
-			values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ];
2917
-
2918
-		return {
2919
-			top: parseFloat( values[ 1 ] ) || 0,
2920
-			right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ),
2921
-			bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ),
2922
-			left: parseFloat( values[ 4 ] ) || 0
2923
-		};
2924
-}
2925
-
2926
-$.fx.step.clip = function( fx ) {
2927
-	if ( !fx.clipInit ) {
2928
-		fx.start = $( fx.elem ).cssClip();
2929
-		if ( typeof fx.end === "string" ) {
2930
-			fx.end = parseClip( fx.end, fx.elem );
2931
-		}
2932
-		fx.clipInit = true;
2933
-	}
2934
-
2935
-	$( fx.elem ).cssClip( {
2936
-		top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,
2937
-		right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,
2938
-		bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,
2939
-		left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left
2940
-	} );
2941
-};
2942
-
2943
-} )();
2944
-
2945
-/******************************************************************************/
2946
-/*********************************** EASING ***********************************/
2947
-/******************************************************************************/
2948
-
2949
-( function() {
2950
-
2951
-// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
2952
-
2953
-var baseEasings = {};
2954
-
2955
-$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
2956
-	baseEasings[ name ] = function( p ) {
2957
-		return Math.pow( p, i + 2 );
2958
-	};
2959
-} );
2960
-
2961
-$.extend( baseEasings, {
2962
-	Sine: function( p ) {
2963
-		return 1 - Math.cos( p * Math.PI / 2 );
2964
-	},
2965
-	Circ: function( p ) {
2966
-		return 1 - Math.sqrt( 1 - p * p );
2967
-	},
2968
-	Elastic: function( p ) {
2969
-		return p === 0 || p === 1 ? p :
2970
-			-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );
2971
-	},
2972
-	Back: function( p ) {
2973
-		return p * p * ( 3 * p - 2 );
2974
-	},
2975
-	Bounce: function( p ) {
2976
-		var pow2,
2977
-			bounce = 4;
2978
-
2979
-		while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
2980
-		return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
2981
-	}
2982
-} );
2983
-
2984
-$.each( baseEasings, function( name, easeIn ) {
2985
-	$.easing[ "easeIn" + name ] = easeIn;
2986
-	$.easing[ "easeOut" + name ] = function( p ) {
2987
-		return 1 - easeIn( 1 - p );
2988
-	};
2989
-	$.easing[ "easeInOut" + name ] = function( p ) {
2990
-		return p < 0.5 ?
2991
-			easeIn( p * 2 ) / 2 :
2992
-			1 - easeIn( p * -2 + 2 ) / 2;
2993
-	};
2994
-} );
2995
-
2996
-} )();
2997
-
2998
-var effect = $.effects;
2999
-
3000
-
3001
-/*!
3002
- * jQuery UI Effects Blind 1.13.2
3003
- * http://jqueryui.com
3004
- *
3005
- * Copyright jQuery Foundation and other contributors
3006
- * Released under the MIT license.
3007
- * http://jquery.org/license
3008
- */
3009
-
3010
-//>>label: Blind Effect
3011
-//>>group: Effects
3012
-//>>description: Blinds the element.
3013
-//>>docs: http://api.jqueryui.com/blind-effect/
3014
-//>>demos: http://jqueryui.com/effect/
3015
-
3016
-
3017
-var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) {
3018
-	var map = {
3019
-			up: [ "bottom", "top" ],
3020
-			vertical: [ "bottom", "top" ],
3021
-			down: [ "top", "bottom" ],
3022
-			left: [ "right", "left" ],
3023
-			horizontal: [ "right", "left" ],
3024
-			right: [ "left", "right" ]
3025
-		},
3026
-		element = $( this ),
3027
-		direction = options.direction || "up",
3028
-		start = element.cssClip(),
3029
-		animate = { clip: $.extend( {}, start ) },
3030
-		placeholder = $.effects.createPlaceholder( element );
3031
-
3032
-	animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ];
3033
-
3034
-	if ( options.mode === "show" ) {
3035
-		element.cssClip( animate.clip );
3036
-		if ( placeholder ) {
3037
-			placeholder.css( $.effects.clipToBox( animate ) );
3038
-		}
3039
-
3040
-		animate.clip = start;
3041
-	}
3042
-
3043
-	if ( placeholder ) {
3044
-		placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing );
3045
-	}
3046
-
3047
-	element.animate( animate, {
3048
-		queue: false,
3049
-		duration: options.duration,
3050
-		easing: options.easing,
3051
-		complete: done
3052
-	} );
3053
-} );
3054
-
3055
-
3056
-/*!
3057
- * jQuery UI Effects Bounce 1.13.2
3058
- * http://jqueryui.com
3059
- *
3060
- * Copyright jQuery Foundation and other contributors
3061
- * Released under the MIT license.
3062
- * http://jquery.org/license
3063
- */
3064
-
3065
-//>>label: Bounce Effect
3066
-//>>group: Effects
3067
-//>>description: Bounces an element horizontally or vertically n times.
3068
-//>>docs: http://api.jqueryui.com/bounce-effect/
3069
-//>>demos: http://jqueryui.com/effect/
3070
-
3071
-
3072
-var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) {
3073
-	var upAnim, downAnim, refValue,
3074
-		element = $( this ),
3075
-
3076
-		// Defaults:
3077
-		mode = options.mode,
3078
-		hide = mode === "hide",
3079
-		show = mode === "show",
3080
-		direction = options.direction || "up",
3081
-		distance = options.distance,
3082
-		times = options.times || 5,
3083
-
3084
-		// Number of internal animations
3085
-		anims = times * 2 + ( show || hide ? 1 : 0 ),
3086
-		speed = options.duration / anims,
3087
-		easing = options.easing,
3088
-
3089
-		// Utility:
3090
-		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
3091
-		motion = ( direction === "up" || direction === "left" ),
3092
-		i = 0,
3093
-
3094
-		queuelen = element.queue().length;
3095
-
3096
-	$.effects.createPlaceholder( element );
3097
-
3098
-	refValue = element.css( ref );
3099
-
3100
-	// Default distance for the BIGGEST bounce is the outer Distance / 3
3101
-	if ( !distance ) {
3102
-		distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
3103
-	}
3104
-
3105
-	if ( show ) {
3106
-		downAnim = { opacity: 1 };
3107
-		downAnim[ ref ] = refValue;
3108
-
3109
-		// If we are showing, force opacity 0 and set the initial position
3110
-		// then do the "first" animation
3111
-		element
3112
-			.css( "opacity", 0 )
3113
-			.css( ref, motion ? -distance * 2 : distance * 2 )
3114
-			.animate( downAnim, speed, easing );
3115
-	}
3116
-
3117
-	// Start at the smallest distance if we are hiding
3118
-	if ( hide ) {
3119
-		distance = distance / Math.pow( 2, times - 1 );
3120
-	}
3121
-
3122
-	downAnim = {};
3123
-	downAnim[ ref ] = refValue;
3124
-
3125
-	// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
3126
-	for ( ; i < times; i++ ) {
3127
-		upAnim = {};
3128
-		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
3129
-
3130
-		element
3131
-			.animate( upAnim, speed, easing )
3132
-			.animate( downAnim, speed, easing );
3133
-
3134
-		distance = hide ? distance * 2 : distance / 2;
3135
-	}
3136
-
3137
-	// Last Bounce when Hiding
3138
-	if ( hide ) {
3139
-		upAnim = { opacity: 0 };
3140
-		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
3141
-
3142
-		element.animate( upAnim, speed, easing );
3143
-	}
3144
-
3145
-	element.queue( done );
3146
-
3147
-	$.effects.unshift( element, queuelen, anims + 1 );
3148
-} );
3149
-
3150
-
3151
-/*!
3152
- * jQuery UI Effects Clip 1.13.2
3153
- * http://jqueryui.com
3154
- *
3155
- * Copyright jQuery Foundation and other contributors
3156
- * Released under the MIT license.
3157
- * http://jquery.org/license
3158
- */
3159
-
3160
-//>>label: Clip Effect
3161
-//>>group: Effects
3162
-//>>description: Clips the element on and off like an old TV.
3163
-//>>docs: http://api.jqueryui.com/clip-effect/
3164
-//>>demos: http://jqueryui.com/effect/
3165
-
3166
-
3167
-var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) {
3168
-	var start,
3169
-		animate = {},
3170
-		element = $( this ),
3171
-		direction = options.direction || "vertical",
3172
-		both = direction === "both",
3173
-		horizontal = both || direction === "horizontal",
3174
-		vertical = both || direction === "vertical";
3175
-
3176
-	start = element.cssClip();
3177
-	animate.clip = {
3178
-		top: vertical ? ( start.bottom - start.top ) / 2 : start.top,
3179
-		right: horizontal ? ( start.right - start.left ) / 2 : start.right,
3180
-		bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom,
3181
-		left: horizontal ? ( start.right - start.left ) / 2 : start.left
3182
-	};
3183
-
3184
-	$.effects.createPlaceholder( element );
3185
-
3186
-	if ( options.mode === "show" ) {
3187
-		element.cssClip( animate.clip );
3188
-		animate.clip = start;
3189
-	}
3190
-
3191
-	element.animate( animate, {
3192
-		queue: false,
3193
-		duration: options.duration,
3194
-		easing: options.easing,
3195
-		complete: done
3196
-	} );
3197
-
3198
-} );
3199
-
3200
-
3201
-/*!
3202
- * jQuery UI Effects Drop 1.13.2
3203
- * http://jqueryui.com
3204
- *
3205
- * Copyright jQuery Foundation and other contributors
3206
- * Released under the MIT license.
3207
- * http://jquery.org/license
3208
- */
3209
-
3210
-//>>label: Drop Effect
3211
-//>>group: Effects
3212
-//>>description: Moves an element in one direction and hides it at the same time.
3213
-//>>docs: http://api.jqueryui.com/drop-effect/
3214
-//>>demos: http://jqueryui.com/effect/
3215
-
3216
-
3217
-var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) {
3218
-
3219
-	var distance,
3220
-		element = $( this ),
3221
-		mode = options.mode,
3222
-		show = mode === "show",
3223
-		direction = options.direction || "left",
3224
-		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
3225
-		motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=",
3226
-		oppositeMotion = ( motion === "+=" ) ? "-=" : "+=",
3227
-		animation = {
3228
-			opacity: 0
3229
-		};
3230
-
3231
-	$.effects.createPlaceholder( element );
3232
-
3233
-	distance = options.distance ||
3234
-		element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2;
3235
-
3236
-	animation[ ref ] = motion + distance;
3237
-
3238
-	if ( show ) {
3239
-		element.css( animation );
3240
-
3241
-		animation[ ref ] = oppositeMotion + distance;
3242
-		animation.opacity = 1;
3243
-	}
3244
-
3245
-	// Animate
3246
-	element.animate( animation, {
3247
-		queue: false,
3248
-		duration: options.duration,
3249
-		easing: options.easing,
3250
-		complete: done
3251
-	} );
3252
-} );
3253
-
3254
-
3255
-/*!
3256
- * jQuery UI Effects Explode 1.13.2
3257
- * http://jqueryui.com
3258
- *
3259
- * Copyright jQuery Foundation and other contributors
3260
- * Released under the MIT license.
3261
- * http://jquery.org/license
3262
- */
3263
-
3264
-//>>label: Explode Effect
3265
-//>>group: Effects
3266
-/* eslint-disable max-len */
3267
-//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
3268
-/* eslint-enable max-len */
3269
-//>>docs: http://api.jqueryui.com/explode-effect/
3270
-//>>demos: http://jqueryui.com/effect/
3271
-
3272
-
3273
-var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) {
3274
-
3275
-	var i, j, left, top, mx, my,
3276
-		rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3,
3277
-		cells = rows,
3278
-		element = $( this ),
3279
-		mode = options.mode,
3280
-		show = mode === "show",
3281
-
3282
-		// Show and then visibility:hidden the element before calculating offset
3283
-		offset = element.show().css( "visibility", "hidden" ).offset(),
3284
-
3285
-		// Width and height of a piece
3286
-		width = Math.ceil( element.outerWidth() / cells ),
3287
-		height = Math.ceil( element.outerHeight() / rows ),
3288
-		pieces = [];
3289
-
3290
-	// Children animate complete:
3291
-	function childComplete() {
3292
-		pieces.push( this );
3293
-		if ( pieces.length === rows * cells ) {
3294
-			animComplete();
3295
-		}
3296
-	}
3297
-
3298
-	// Clone the element for each row and cell.
3299
-	for ( i = 0; i < rows; i++ ) { // ===>
3300
-		top = offset.top + i * height;
3301
-		my = i - ( rows - 1 ) / 2;
3302
-
3303
-		for ( j = 0; j < cells; j++ ) { // |||
3304
-			left = offset.left + j * width;
3305
-			mx = j - ( cells - 1 ) / 2;
3306
-
3307
-			// Create a clone of the now hidden main element that will be absolute positioned
3308
-			// within a wrapper div off the -left and -top equal to size of our pieces
3309
-			element
3310
-				.clone()
3311
-				.appendTo( "body" )
3312
-				.wrap( "<div></div>" )
3313
-				.css( {
3314
-					position: "absolute",
3315
-					visibility: "visible",
3316
-					left: -j * width,
3317
-					top: -i * height
3318
-				} )
3319
-
3320
-				// Select the wrapper - make it overflow: hidden and absolute positioned based on
3321
-				// where the original was located +left and +top equal to the size of pieces
3322
-				.parent()
3323
-					.addClass( "ui-effects-explode" )
3324
-					.css( {
3325
-						position: "absolute",
3326
-						overflow: "hidden",
3327
-						width: width,
3328
-						height: height,
3329
-						left: left + ( show ? mx * width : 0 ),
3330
-						top: top + ( show ? my * height : 0 ),
3331
-						opacity: show ? 0 : 1
3332
-					} )
3333
-					.animate( {
3334
-						left: left + ( show ? 0 : mx * width ),
3335
-						top: top + ( show ? 0 : my * height ),
3336
-						opacity: show ? 1 : 0
3337
-					}, options.duration || 500, options.easing, childComplete );
3338
-		}
3339
-	}
3340
-
3341
-	function animComplete() {
3342
-		element.css( {
3343
-			visibility: "visible"
3344
-		} );
3345
-		$( pieces ).remove();
3346
-		done();
3347
-	}
3348
-} );
3349
-
3350
-
3351
-/*!
3352
- * jQuery UI Effects Fade 1.13.2
3353
- * http://jqueryui.com
3354
- *
3355
- * Copyright jQuery Foundation and other contributors
3356
- * Released under the MIT license.
3357
- * http://jquery.org/license
3358
- */
3359
-
3360
-//>>label: Fade Effect
3361
-//>>group: Effects
3362
-//>>description: Fades the element.
3363
-//>>docs: http://api.jqueryui.com/fade-effect/
3364
-//>>demos: http://jqueryui.com/effect/
3365
-
3366
-
3367
-var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) {
3368
-	var show = options.mode === "show";
3369
-
3370
-	$( this )
3371
-		.css( "opacity", show ? 0 : 1 )
3372
-		.animate( {
3373
-			opacity: show ? 1 : 0
3374
-		}, {
3375
-			queue: false,
3376
-			duration: options.duration,
3377
-			easing: options.easing,
3378
-			complete: done
3379
-		} );
3380
-} );
3381
-
3382
-
3383
-/*!
3384
- * jQuery UI Effects Fold 1.13.2
3385
- * http://jqueryui.com
3386
- *
3387
- * Copyright jQuery Foundation and other contributors
3388
- * Released under the MIT license.
3389
- * http://jquery.org/license
3390
- */
3391
-
3392
-//>>label: Fold Effect
3393
-//>>group: Effects
3394
-//>>description: Folds an element first horizontally and then vertically.
3395
-//>>docs: http://api.jqueryui.com/fold-effect/
3396
-//>>demos: http://jqueryui.com/effect/
3397
-
3398
-
3399
-var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) {
3400
-
3401
-	// Create element
3402
-	var element = $( this ),
3403
-		mode = options.mode,
3404
-		show = mode === "show",
3405
-		hide = mode === "hide",
3406
-		size = options.size || 15,
3407
-		percent = /([0-9]+)%/.exec( size ),
3408
-		horizFirst = !!options.horizFirst,
3409
-		ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ],
3410
-		duration = options.duration / 2,
3411
-
3412
-		placeholder = $.effects.createPlaceholder( element ),
3413
-
3414
-		start = element.cssClip(),
3415
-		animation1 = { clip: $.extend( {}, start ) },
3416
-		animation2 = { clip: $.extend( {}, start ) },
3417
-
3418
-		distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ],
3419
-
3420
-		queuelen = element.queue().length;
3421
-
3422
-	if ( percent ) {
3423
-		size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
3424
-	}
3425
-	animation1.clip[ ref[ 0 ] ] = size;
3426
-	animation2.clip[ ref[ 0 ] ] = size;
3427
-	animation2.clip[ ref[ 1 ] ] = 0;
3428
-
3429
-	if ( show ) {
3430
-		element.cssClip( animation2.clip );
3431
-		if ( placeholder ) {
3432
-			placeholder.css( $.effects.clipToBox( animation2 ) );
3433
-		}
3434
-
3435
-		animation2.clip = start;
3436
-	}
3437
-
3438
-	// Animate
3439
-	element
3440
-		.queue( function( next ) {
3441
-			if ( placeholder ) {
3442
-				placeholder
3443
-					.animate( $.effects.clipToBox( animation1 ), duration, options.easing )
3444
-					.animate( $.effects.clipToBox( animation2 ), duration, options.easing );
3445
-			}
3446
-
3447
-			next();
3448
-		} )
3449
-		.animate( animation1, duration, options.easing )
3450
-		.animate( animation2, duration, options.easing )
3451
-		.queue( done );
3452
-
3453
-	$.effects.unshift( element, queuelen, 4 );
3454
-} );
3455
-
3456
-
3457
-/*!
3458
- * jQuery UI Effects Highlight 1.13.2
3459
- * http://jqueryui.com
3460
- *
3461
- * Copyright jQuery Foundation and other contributors
3462
- * Released under the MIT license.
3463
- * http://jquery.org/license
3464
- */
3465
-
3466
-//>>label: Highlight Effect
3467
-//>>group: Effects
3468
-//>>description: Highlights the background of an element in a defined color for a custom duration.
3469
-//>>docs: http://api.jqueryui.com/highlight-effect/
3470
-//>>demos: http://jqueryui.com/effect/
3471
-
3472
-
3473
-var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) {
3474
-	var element = $( this ),
3475
-		animation = {
3476
-			backgroundColor: element.css( "backgroundColor" )
3477
-		};
3478
-
3479
-	if ( options.mode === "hide" ) {
3480
-		animation.opacity = 0;
3481
-	}
3482
-
3483
-	$.effects.saveStyle( element );
3484
-
3485
-	element
3486
-		.css( {
3487
-			backgroundImage: "none",
3488
-			backgroundColor: options.color || "#ffff99"
3489
-		} )
3490
-		.animate( animation, {
3491
-			queue: false,
3492
-			duration: options.duration,
3493
-			easing: options.easing,
3494
-			complete: done
3495
-		} );
3496
-} );
3497
-
3498
-
3499
-/*!
3500
- * jQuery UI Effects Size 1.13.2
3501
- * http://jqueryui.com
3502
- *
3503
- * Copyright jQuery Foundation and other contributors
3504
- * Released under the MIT license.
3505
- * http://jquery.org/license
3506
- */
3507
-
3508
-//>>label: Size Effect
3509
-//>>group: Effects
3510
-//>>description: Resize an element to a specified width and height.
3511
-//>>docs: http://api.jqueryui.com/size-effect/
3512
-//>>demos: http://jqueryui.com/effect/
3513
-
3514
-
3515
-var effectsEffectSize = $.effects.define( "size", function( options, done ) {
3516
-
3517
-	// Create element
3518
-	var baseline, factor, temp,
3519
-		element = $( this ),
3520
-
3521
-		// Copy for children
3522
-		cProps = [ "fontSize" ],
3523
-		vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
3524
-		hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],
3525
-
3526
-		// Set options
3527
-		mode = options.mode,
3528
-		restore = mode !== "effect",
3529
-		scale = options.scale || "both",
3530
-		origin = options.origin || [ "middle", "center" ],
3531
-		position = element.css( "position" ),
3532
-		pos = element.position(),
3533
-		original = $.effects.scaledDimensions( element ),
3534
-		from = options.from || original,
3535
-		to = options.to || $.effects.scaledDimensions( element, 0 );
3536
-
3537
-	$.effects.createPlaceholder( element );
3538
-
3539
-	if ( mode === "show" ) {
3540
-		temp = from;
3541
-		from = to;
3542
-		to = temp;
3543
-	}
3544
-
3545
-	// Set scaling factor
3546
-	factor = {
3547
-		from: {
3548
-			y: from.height / original.height,
3549
-			x: from.width / original.width
3550
-		},
3551
-		to: {
3552
-			y: to.height / original.height,
3553
-			x: to.width / original.width
3554
-		}
3555
-	};
3556
-
3557
-	// Scale the css box
3558
-	if ( scale === "box" || scale === "both" ) {
3559
-
3560
-		// Vertical props scaling
3561
-		if ( factor.from.y !== factor.to.y ) {
3562
-			from = $.effects.setTransition( element, vProps, factor.from.y, from );
3563
-			to = $.effects.setTransition( element, vProps, factor.to.y, to );
3564
-		}
3565
-
3566
-		// Horizontal props scaling
3567
-		if ( factor.from.x !== factor.to.x ) {
3568
-			from = $.effects.setTransition( element, hProps, factor.from.x, from );
3569
-			to = $.effects.setTransition( element, hProps, factor.to.x, to );
3570
-		}
3571
-	}
3572
-
3573
-	// Scale the content
3574
-	if ( scale === "content" || scale === "both" ) {
3575
-
3576
-		// Vertical props scaling
3577
-		if ( factor.from.y !== factor.to.y ) {
3578
-			from = $.effects.setTransition( element, cProps, factor.from.y, from );
3579
-			to = $.effects.setTransition( element, cProps, factor.to.y, to );
3580
-		}
3581
-	}
3582
-
3583
-	// Adjust the position properties based on the provided origin points
3584
-	if ( origin ) {
3585
-		baseline = $.effects.getBaseline( origin, original );
3586
-		from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;
3587
-		from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;
3588
-		to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;
3589
-		to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;
3590
-	}
3591
-	delete from.outerHeight;
3592
-	delete from.outerWidth;
3593
-	element.css( from );
3594
-
3595
-	// Animate the children if desired
3596
-	if ( scale === "content" || scale === "both" ) {
3597
-
3598
-		vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps );
3599
-		hProps = hProps.concat( [ "marginLeft", "marginRight" ] );
3600
-
3601
-		// Only animate children with width attributes specified
3602
-		// TODO: is this right? should we include anything with css width specified as well
3603
-		element.find( "*[width]" ).each( function() {
3604
-			var child = $( this ),
3605
-				childOriginal = $.effects.scaledDimensions( child ),
3606
-				childFrom = {
3607
-					height: childOriginal.height * factor.from.y,
3608
-					width: childOriginal.width * factor.from.x,
3609
-					outerHeight: childOriginal.outerHeight * factor.from.y,
3610
-					outerWidth: childOriginal.outerWidth * factor.from.x
3611
-				},
3612
-				childTo = {
3613
-					height: childOriginal.height * factor.to.y,
3614
-					width: childOriginal.width * factor.to.x,
3615
-					outerHeight: childOriginal.height * factor.to.y,
3616
-					outerWidth: childOriginal.width * factor.to.x
3617
-				};
3618
-
3619
-			// Vertical props scaling
3620
-			if ( factor.from.y !== factor.to.y ) {
3621
-				childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );
3622
-				childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );
3623
-			}
3624
-
3625
-			// Horizontal props scaling
3626
-			if ( factor.from.x !== factor.to.x ) {
3627
-				childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );
3628
-				childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );
3629
-			}
3630
-
3631
-			if ( restore ) {
3632
-				$.effects.saveStyle( child );
3633
-			}
3634
-
3635
-			// Animate children
3636
-			child.css( childFrom );
3637
-			child.animate( childTo, options.duration, options.easing, function() {
3638
-
3639
-				// Restore children
3640
-				if ( restore ) {
3641
-					$.effects.restoreStyle( child );
3642
-				}
3643
-			} );
3644
-		} );
3645
-	}
3646
-
3647
-	// Animate
3648
-	element.animate( to, {
3649
-		queue: false,
3650
-		duration: options.duration,
3651
-		easing: options.easing,
3652
-		complete: function() {
3653
-
3654
-			var offset = element.offset();
3655
-
3656
-			if ( to.opacity === 0 ) {
3657
-				element.css( "opacity", from.opacity );
3658
-			}
3659
-
3660
-			if ( !restore ) {
3661
-				element
3662
-					.css( "position", position === "static" ? "relative" : position )
3663
-					.offset( offset );
3664
-
3665
-				// Need to save style here so that automatic style restoration
3666
-				// doesn't restore to the original styles from before the animation.
3667
-				$.effects.saveStyle( element );
3668
-			}
3669
-
3670
-			done();
3671
-		}
3672
-	} );
3673
-
3674
-} );
3675
-
3676
-
3677
-/*!
3678
- * jQuery UI Effects Scale 1.13.2
3679
- * http://jqueryui.com
3680
- *
3681
- * Copyright jQuery Foundation and other contributors
3682
- * Released under the MIT license.
3683
- * http://jquery.org/license
3684
- */
3685
-
3686
-//>>label: Scale Effect
3687
-//>>group: Effects
3688
-//>>description: Grows or shrinks an element and its content.
3689
-//>>docs: http://api.jqueryui.com/scale-effect/
3690
-//>>demos: http://jqueryui.com/effect/
3691
-
3692
-
3693
-var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
3694
-
3695
-	// Create element
3696
-	var el = $( this ),
3697
-		mode = options.mode,
3698
-		percent = parseInt( options.percent, 10 ) ||
3699
-			( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ),
3700
-
3701
-		newOptions = $.extend( true, {
3702
-			from: $.effects.scaledDimensions( el ),
3703
-			to: $.effects.scaledDimensions( el, percent, options.direction || "both" ),
3704
-			origin: options.origin || [ "middle", "center" ]
3705
-		}, options );
3706
-
3707
-	// Fade option to support puff
3708
-	if ( options.fade ) {
3709
-		newOptions.from.opacity = 1;
3710
-		newOptions.to.opacity = 0;
3711
-	}
3712
-
3713
-	$.effects.effect.size.call( this, newOptions, done );
3714
-} );
3715
-
3716
-
3717
-/*!
3718
- * jQuery UI Effects Puff 1.13.2
3719
- * http://jqueryui.com
3720
- *
3721
- * Copyright jQuery Foundation and other contributors
3722
- * Released under the MIT license.
3723
- * http://jquery.org/license
3724
- */
3725
-
3726
-//>>label: Puff Effect
3727
-//>>group: Effects
3728
-//>>description: Creates a puff effect by scaling the element up and hiding it at the same time.
3729
-//>>docs: http://api.jqueryui.com/puff-effect/
3730
-//>>demos: http://jqueryui.com/effect/
3731
-
3732
-
3733
-var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) {
3734
-	var newOptions = $.extend( true, {}, options, {
3735
-		fade: true,
3736
-		percent: parseInt( options.percent, 10 ) || 150
3737
-	} );
3738
-
3739
-	$.effects.effect.scale.call( this, newOptions, done );
3740
-} );
3741
-
3742
-
3743
-/*!
3744
- * jQuery UI Effects Pulsate 1.13.2
3745
- * http://jqueryui.com
3746
- *
3747
- * Copyright jQuery Foundation and other contributors
3748
- * Released under the MIT license.
3749
- * http://jquery.org/license
3750
- */
3751
-
3752
-//>>label: Pulsate Effect
3753
-//>>group: Effects
3754
-//>>description: Pulsates an element n times by changing the opacity to zero and back.
3755
-//>>docs: http://api.jqueryui.com/pulsate-effect/
3756
-//>>demos: http://jqueryui.com/effect/
3757
-
3758
-
3759
-var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) {
3760
-	var element = $( this ),
3761
-		mode = options.mode,
3762
-		show = mode === "show",
3763
-		hide = mode === "hide",
3764
-		showhide = show || hide,
3765
-
3766
-		// Showing or hiding leaves off the "last" animation
3767
-		anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
3768
-		duration = options.duration / anims,
3769
-		animateTo = 0,
3770
-		i = 1,
3771
-		queuelen = element.queue().length;
3772
-
3773
-	if ( show || !element.is( ":visible" ) ) {
3774
-		element.css( "opacity", 0 ).show();
3775
-		animateTo = 1;
3776
-	}
3777
-
3778
-	// Anims - 1 opacity "toggles"
3779
-	for ( ; i < anims; i++ ) {
3780
-		element.animate( { opacity: animateTo }, duration, options.easing );
3781
-		animateTo = 1 - animateTo;
3782
-	}
3783
-
3784
-	element.animate( { opacity: animateTo }, duration, options.easing );
3785
-
3786
-	element.queue( done );
3787
-
3788
-	$.effects.unshift( element, queuelen, anims + 1 );
3789
-} );
3790
-
3791
-
3792
-/*!
3793
- * jQuery UI Effects Shake 1.13.2
3794
- * http://jqueryui.com
3795
- *
3796
- * Copyright jQuery Foundation and other contributors
3797
- * Released under the MIT license.
3798
- * http://jquery.org/license
3799
- */
3800
-
3801
-//>>label: Shake Effect
3802
-//>>group: Effects
3803
-//>>description: Shakes an element horizontally or vertically n times.
3804
-//>>docs: http://api.jqueryui.com/shake-effect/
3805
-//>>demos: http://jqueryui.com/effect/
3806
-
3807
-
3808
-var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
3809
-
3810
-	var i = 1,
3811
-		element = $( this ),
3812
-		direction = options.direction || "left",
3813
-		distance = options.distance || 20,
3814
-		times = options.times || 3,
3815
-		anims = times * 2 + 1,
3816
-		speed = Math.round( options.duration / anims ),
3817
-		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
3818
-		positiveMotion = ( direction === "up" || direction === "left" ),
3819
-		animation = {},
3820
-		animation1 = {},
3821
-		animation2 = {},
3822
-
3823
-		queuelen = element.queue().length;
3824
-
3825
-	$.effects.createPlaceholder( element );
3826
-
3827
-	// Animation
3828
-	animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
3829
-	animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
3830
-	animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
3831
-
3832
-	// Animate
3833
-	element.animate( animation, speed, options.easing );
3834
-
3835
-	// Shakes
3836
-	for ( ; i < times; i++ ) {
3837
-		element
3838
-			.animate( animation1, speed, options.easing )
3839
-			.animate( animation2, speed, options.easing );
3840
-	}
3841
-
3842
-	element
3843
-		.animate( animation1, speed, options.easing )
3844
-		.animate( animation, speed / 2, options.easing )
3845
-		.queue( done );
3846
-
3847
-	$.effects.unshift( element, queuelen, anims + 1 );
3848
-} );
3849
-
3850
-
3851
-/*!
3852
- * jQuery UI Effects Slide 1.13.2
3853
- * http://jqueryui.com
3854
- *
3855
- * Copyright jQuery Foundation and other contributors
3856
- * Released under the MIT license.
3857
- * http://jquery.org/license
3858
- */
3859
-
3860
-//>>label: Slide Effect
3861
-//>>group: Effects
3862
-//>>description: Slides an element in and out of the viewport.
3863
-//>>docs: http://api.jqueryui.com/slide-effect/
3864
-//>>demos: http://jqueryui.com/effect/
3865
-
3866
-
3867
-var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) {
3868
-	var startClip, startRef,
3869
-		element = $( this ),
3870
-		map = {
3871
-			up: [ "bottom", "top" ],
3872
-			down: [ "top", "bottom" ],
3873
-			left: [ "right", "left" ],
3874
-			right: [ "left", "right" ]
3875
-		},
3876
-		mode = options.mode,
3877
-		direction = options.direction || "left",
3878
-		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
3879
-		positiveMotion = ( direction === "up" || direction === "left" ),
3880
-		distance = options.distance ||
3881
-			element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ),
3882
-		animation = {};
3883
-
3884
-	$.effects.createPlaceholder( element );
3885
-
3886
-	startClip = element.cssClip();
3887
-	startRef = element.position()[ ref ];
3888
-
3889
-	// Define hide animation
3890
-	animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef;
3891
-	animation.clip = element.cssClip();
3892
-	animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ];
3893
-
3894
-	// Reverse the animation if we're showing
3895
-	if ( mode === "show" ) {
3896
-		element.cssClip( animation.clip );
3897
-		element.css( ref, animation[ ref ] );
3898
-		animation.clip = startClip;
3899
-		animation[ ref ] = startRef;
3900
-	}
3901
-
3902
-	// Actually animate
3903
-	element.animate( animation, {
3904
-		queue: false,
3905
-		duration: options.duration,
3906
-		easing: options.easing,
3907
-		complete: done
3908
-	} );
3909
-} );
3910
-
3911
-
3912
-/*!
3913
- * jQuery UI Effects Transfer 1.13.2
3914
- * http://jqueryui.com
3915
- *
3916
- * Copyright jQuery Foundation and other contributors
3917
- * Released under the MIT license.
3918
- * http://jquery.org/license
3919
- */
3920
-
3921
-//>>label: Transfer Effect
3922
-//>>group: Effects
3923
-//>>description: Displays a transfer effect from one element to another.
3924
-//>>docs: http://api.jqueryui.com/transfer-effect/
3925
-//>>demos: http://jqueryui.com/effect/
3926
-
3927
-
3928
-var effect;
3929
-if ( $.uiBackCompat !== false ) {
3930
-	effect = $.effects.define( "transfer", function( options, done ) {
3931
-		$( this ).transfer( options, done );
3932
-	} );
3933
-}
3934
-var effectsEffectTransfer = effect;
3935
-
3936
-
3937
-/*!
3938
- * jQuery UI Focusable 1.13.2
3939
- * http://jqueryui.com
3940
- *
3941
- * Copyright jQuery Foundation and other contributors
3942
- * Released under the MIT license.
3943
- * http://jquery.org/license
3944
- */
3945
-
3946
-//>>label: :focusable Selector
3947
-//>>group: Core
3948
-//>>description: Selects elements which can be focused.
3949
-//>>docs: http://api.jqueryui.com/focusable-selector/
3950
-
3951
-
3952
-// Selectors
3953
-$.ui.focusable = function( element, hasTabindex ) {
3954
-	var map, mapName, img, focusableIfVisible, fieldset,
3955
-		nodeName = element.nodeName.toLowerCase();
3956
-
3957
-	if ( "area" === nodeName ) {
3958
-		map = element.parentNode;
3959
-		mapName = map.name;
3960
-		if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
3961
-			return false;
3962
-		}
3963
-		img = $( "img[usemap='#" + mapName + "']" );
3964
-		return img.length > 0 && img.is( ":visible" );
3965
-	}
3966
-
3967
-	if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {
3968
-		focusableIfVisible = !element.disabled;
3969
-
3970
-		if ( focusableIfVisible ) {
3971
-
3972
-			// Form controls within a disabled fieldset are disabled.
3973
-			// However, controls within the fieldset's legend do not get disabled.
3974
-			// Since controls generally aren't placed inside legends, we skip
3975
-			// this portion of the check.
3976
-			fieldset = $( element ).closest( "fieldset" )[ 0 ];
3977
-			if ( fieldset ) {
3978
-				focusableIfVisible = !fieldset.disabled;
3979
-			}
3980
-		}
3981
-	} else if ( "a" === nodeName ) {
3982
-		focusableIfVisible = element.href || hasTabindex;
3983
-	} else {
3984
-		focusableIfVisible = hasTabindex;
3985
-	}
3986
-
3987
-	return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) );
3988
-};
3989
-
3990
-// Support: IE 8 only
3991
-// IE 8 doesn't resolve inherit to visible/hidden for computed values
3992
-function visible( element ) {
3993
-	var visibility = element.css( "visibility" );
3994
-	while ( visibility === "inherit" ) {
3995
-		element = element.parent();
3996
-		visibility = element.css( "visibility" );
3997
-	}
3998
-	return visibility === "visible";
3999
-}
4000
-
4001
-$.extend( $.expr.pseudos, {
4002
-	focusable: function( element ) {
4003
-		return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
4004
-	}
4005
-} );
4006
-
4007
-var focusable = $.ui.focusable;
4008
-
4009
-
4010
-
4011
-// Support: IE8 Only
4012
-// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
4013
-// with a string, so we need to find the proper form.
4014
-var form = $.fn._form = function() {
4015
-	return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
4016
-};
4017
-
4018
-
4019
-/*!
4020
- * jQuery UI Form Reset Mixin 1.13.2
4021
- * http://jqueryui.com
4022
- *
4023
- * Copyright jQuery Foundation and other contributors
4024
- * Released under the MIT license.
4025
- * http://jquery.org/license
4026
- */
4027
-
4028
-//>>label: Form Reset Mixin
4029
-//>>group: Core
4030
-//>>description: Refresh input widgets when their form is reset
4031
-//>>docs: http://api.jqueryui.com/form-reset-mixin/
4032
-
4033
-
4034
-var formResetMixin = $.ui.formResetMixin = {
4035
-	_formResetHandler: function() {
4036
-		var form = $( this );
4037
-
4038
-		// Wait for the form reset to actually happen before refreshing
4039
-		setTimeout( function() {
4040
-			var instances = form.data( "ui-form-reset-instances" );
4041
-			$.each( instances, function() {
4042
-				this.refresh();
4043
-			} );
4044
-		} );
4045
-	},
4046
-
4047
-	_bindFormResetHandler: function() {
4048
-		this.form = this.element._form();
4049
-		if ( !this.form.length ) {
4050
-			return;
4051
-		}
4052
-
4053
-		var instances = this.form.data( "ui-form-reset-instances" ) || [];
4054
-		if ( !instances.length ) {
4055
-
4056
-			// We don't use _on() here because we use a single event handler per form
4057
-			this.form.on( "reset.ui-form-reset", this._formResetHandler );
4058
-		}
4059
-		instances.push( this );
4060
-		this.form.data( "ui-form-reset-instances", instances );
4061
-	},
4062
-
4063
-	_unbindFormResetHandler: function() {
4064
-		if ( !this.form.length ) {
4065
-			return;
4066
-		}
4067
-
4068
-		var instances = this.form.data( "ui-form-reset-instances" );
4069
-		instances.splice( $.inArray( this, instances ), 1 );
4070
-		if ( instances.length ) {
4071
-			this.form.data( "ui-form-reset-instances", instances );
4072
-		} else {
4073
-			this.form
4074
-				.removeData( "ui-form-reset-instances" )
4075
-				.off( "reset.ui-form-reset" );
4076
-		}
4077
-	}
4078
-};
4079
-
4080
-
4081
-/*!
4082
- * jQuery UI Support for jQuery core 1.8.x and newer 1.13.2
4083
- * http://jqueryui.com
4084
- *
4085
- * Copyright jQuery Foundation and other contributors
4086
- * Released under the MIT license.
4087
- * http://jquery.org/license
4088
- *
4089
- */
4090
-
4091
-//>>label: jQuery 1.8+ Support
4092
-//>>group: Core
4093
-//>>description: Support version 1.8.x and newer of jQuery core
4094
-
4095
-
4096
-// Support: jQuery 1.9.x or older
4097
-// $.expr[ ":" ] is deprecated.
4098
-if ( !$.expr.pseudos ) {
4099
-	$.expr.pseudos = $.expr[ ":" ];
4100
-}
4101
-
4102
-// Support: jQuery 1.11.x or older
4103
-// $.unique has been renamed to $.uniqueSort
4104
-if ( !$.uniqueSort ) {
4105
-	$.uniqueSort = $.unique;
4106
-}
4107
-
4108
-// Support: jQuery 2.2.x or older.
4109
-// This method has been defined in jQuery 3.0.0.
4110
-// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js
4111
-if ( !$.escapeSelector ) {
4112
-
4113
-	// CSS string/identifier serialization
4114
-	// https://drafts.csswg.org/cssom/#common-serializing-idioms
4115
-	var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
4116
-
4117
-	var fcssescape = function( ch, asCodePoint ) {
4118
-		if ( asCodePoint ) {
4119
-
4120
-			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
4121
-			if ( ch === "\0" ) {
4122
-				return "\uFFFD";
4123
-			}
4124
-
4125
-			// Control characters and (dependent upon position) numbers get escaped as code points
4126
-			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
4127
-		}
4128
-
4129
-		// Other potentially-special ASCII characters get backslash-escaped
4130
-		return "\\" + ch;
4131
-	};
4132
-
4133
-	$.escapeSelector = function( sel ) {
4134
-		return ( sel + "" ).replace( rcssescape, fcssescape );
4135
-	};
4136
-}
4137
-
4138
-// Support: jQuery 3.4.x or older
4139
-// These methods have been defined in jQuery 3.5.0.
4140
-if ( !$.fn.even || !$.fn.odd ) {
4141
-	$.fn.extend( {
4142
-		even: function() {
4143
-			return this.filter( function( i ) {
4144
-				return i % 2 === 0;
4145
-			} );
4146
-		},
4147
-		odd: function() {
4148
-			return this.filter( function( i ) {
4149
-				return i % 2 === 1;
4150
-			} );
4151
-		}
4152
-	} );
4153
-}
4154
-
4155
-;
4156
-/*!
4157
- * jQuery UI Keycode 1.13.2
4158
- * http://jqueryui.com
4159
- *
4160
- * Copyright jQuery Foundation and other contributors
4161
- * Released under the MIT license.
4162
- * http://jquery.org/license
4163
- */
4164
-
4165
-//>>label: Keycode
4166
-//>>group: Core
4167
-//>>description: Provide keycodes as keynames
4168
-//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/
4169
-
4170
-
4171
-var keycode = $.ui.keyCode = {
4172
-	BACKSPACE: 8,
4173
-	COMMA: 188,
4174
-	DELETE: 46,
4175
-	DOWN: 40,
4176
-	END: 35,
4177
-	ENTER: 13,
4178
-	ESCAPE: 27,
4179
-	HOME: 36,
4180
-	LEFT: 37,
4181
-	PAGE_DOWN: 34,
4182
-	PAGE_UP: 33,
4183
-	PERIOD: 190,
4184
-	RIGHT: 39,
4185
-	SPACE: 32,
4186
-	TAB: 9,
4187
-	UP: 38
4188
-};
4189
-
4190
-
4191
-/*!
4192
- * jQuery UI Labels 1.13.2
4193
- * http://jqueryui.com
4194
- *
4195
- * Copyright jQuery Foundation and other contributors
4196
- * Released under the MIT license.
4197
- * http://jquery.org/license
4198
- */
4199
-
4200
-//>>label: labels
4201
-//>>group: Core
4202
-//>>description: Find all the labels associated with a given input
4203
-//>>docs: http://api.jqueryui.com/labels/
4204
-
4205
-
4206
-var labels = $.fn.labels = function() {
4207
-	var ancestor, selector, id, labels, ancestors;
4208
-
4209
-	if ( !this.length ) {
4210
-		return this.pushStack( [] );
4211
-	}
4212
-
4213
-	// Check control.labels first
4214
-	if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
4215
-		return this.pushStack( this[ 0 ].labels );
4216
-	}
4217
-
4218
-	// Support: IE <= 11, FF <= 37, Android <= 2.3 only
4219
-	// Above browsers do not support control.labels. Everything below is to support them
4220
-	// as well as document fragments. control.labels does not work on document fragments
4221
-	labels = this.eq( 0 ).parents( "label" );
4222
-
4223
-	// Look for the label based on the id
4224
-	id = this.attr( "id" );
4225
-	if ( id ) {
4226
-
4227
-		// We don't search against the document in case the element
4228
-		// is disconnected from the DOM
4229
-		ancestor = this.eq( 0 ).parents().last();
4230
-
4231
-		// Get a full set of top level ancestors
4232
-		ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
4233
-
4234
-		// Create a selector for the label based on the id
4235
-		selector = "label[for='" + $.escapeSelector( id ) + "']";
4236
-
4237
-		labels = labels.add( ancestors.find( selector ).addBack( selector ) );
4238
-
4239
-	}
4240
-
4241
-	// Return whatever we have found for labels
4242
-	return this.pushStack( labels );
4243
-};
4244
-
4245
-
4246
-/*!
4247
- * jQuery UI Scroll Parent 1.13.2
4248
- * http://jqueryui.com
4249
- *
4250
- * Copyright jQuery Foundation and other contributors
4251
- * Released under the MIT license.
4252
- * http://jquery.org/license
4253
- */
4254
-
4255
-//>>label: scrollParent
4256
-//>>group: Core
4257
-//>>description: Get the closest ancestor element that is scrollable.
4258
-//>>docs: http://api.jqueryui.com/scrollParent/
4259
-
4260
-
4261
-var scrollParent = $.fn.scrollParent = function( includeHidden ) {
4262
-	var position = this.css( "position" ),
4263
-		excludeStaticParent = position === "absolute",
4264
-		overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
4265
-		scrollParent = this.parents().filter( function() {
4266
-			var parent = $( this );
4267
-			if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
4268
-				return false;
4269
-			}
4270
-			return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) +
4271
-				parent.css( "overflow-x" ) );
4272
-		} ).eq( 0 );
4273
-
4274
-	return position === "fixed" || !scrollParent.length ?
4275
-		$( this[ 0 ].ownerDocument || document ) :
4276
-		scrollParent;
4277
-};
4278
-
4279
-
4280
-/*!
4281
- * jQuery UI Tabbable 1.13.2
4282
- * http://jqueryui.com
4283
- *
4284
- * Copyright jQuery Foundation and other contributors
4285
- * Released under the MIT license.
4286
- * http://jquery.org/license
4287
- */
4288
-
4289
-//>>label: :tabbable Selector
4290
-//>>group: Core
4291
-//>>description: Selects elements which can be tabbed to.
4292
-//>>docs: http://api.jqueryui.com/tabbable-selector/
4293
-
4294
-
4295
-var tabbable = $.extend( $.expr.pseudos, {
4296
-	tabbable: function( element ) {
4297
-		var tabIndex = $.attr( element, "tabindex" ),
4298
-			hasTabindex = tabIndex != null;
4299
-		return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );
4300
-	}
4301
-} );
4302
-
4303
-
4304
-/*!
4305
- * jQuery UI Unique ID 1.13.2
4306
- * http://jqueryui.com
4307
- *
4308
- * Copyright jQuery Foundation and other contributors
4309
- * Released under the MIT license.
4310
- * http://jquery.org/license
4311
- */
4312
-
4313
-//>>label: uniqueId
4314
-//>>group: Core
4315
-//>>description: Functions to generate and remove uniqueId's
4316
-//>>docs: http://api.jqueryui.com/uniqueId/
4317
-
4318
-
4319
-var uniqueId = $.fn.extend( {
4320
-	uniqueId: ( function() {
4321
-		var uuid = 0;
4322
-
4323
-		return function() {
4324
-			return this.each( function() {
4325
-				if ( !this.id ) {
4326
-					this.id = "ui-id-" + ( ++uuid );
4327
-				}
4328
-			} );
4329
-		};
4330
-	} )(),
4331
-
4332
-	removeUniqueId: function() {
4333
-		return this.each( function() {
4334
-			if ( /^ui-id-\d+$/.test( this.id ) ) {
4335
-				$( this ).removeAttr( "id" );
4336
-			}
4337
-		} );
4338
-	}
4339
-} );
4340
-
4341
-
4342
-/*!
4343
- * jQuery UI Accordion 1.13.2
4344
- * http://jqueryui.com
4345
- *
4346
- * Copyright jQuery Foundation and other contributors
4347
- * Released under the MIT license.
4348
- * http://jquery.org/license
4349
- */
4350
-
4351
-//>>label: Accordion
4352
-//>>group: Widgets
4353
-/* eslint-disable max-len */
4354
-//>>description: Displays collapsible content panels for presenting information in a limited amount of space.
4355
-/* eslint-enable max-len */
4356
-//>>docs: http://api.jqueryui.com/accordion/
4357
-//>>demos: http://jqueryui.com/accordion/
4358
-//>>css.structure: ../../themes/base/core.css
4359
-//>>css.structure: ../../themes/base/accordion.css
4360
-//>>css.theme: ../../themes/base/theme.css
4361
-
4362
-
4363
-var widgetsAccordion = $.widget( "ui.accordion", {
4364
-	version: "1.13.2",
4365
-	options: {
4366
-		active: 0,
4367
-		animate: {},
4368
-		classes: {
4369
-			"ui-accordion-header": "ui-corner-top",
4370
-			"ui-accordion-header-collapsed": "ui-corner-all",
4371
-			"ui-accordion-content": "ui-corner-bottom"
4372
-		},
4373
-		collapsible: false,
4374
-		event: "click",
4375
-		header: function( elem ) {
4376
-			return elem.find( "> li > :first-child" ).add( elem.find( "> :not(li)" ).even() );
4377
-		},
4378
-		heightStyle: "auto",
4379
-		icons: {
4380
-			activeHeader: "ui-icon-triangle-1-s",
4381
-			header: "ui-icon-triangle-1-e"
4382
-		},
4383
-
4384
-		// Callbacks
4385
-		activate: null,
4386
-		beforeActivate: null
4387
-	},
4388
-
4389
-	hideProps: {
4390
-		borderTopWidth: "hide",
4391
-		borderBottomWidth: "hide",
4392
-		paddingTop: "hide",
4393
-		paddingBottom: "hide",
4394
-		height: "hide"
4395
-	},
4396
-
4397
-	showProps: {
4398
-		borderTopWidth: "show",
4399
-		borderBottomWidth: "show",
4400
-		paddingTop: "show",
4401
-		paddingBottom: "show",
4402
-		height: "show"
4403
-	},
4404
-
4405
-	_create: function() {
4406
-		var options = this.options;
4407
-
4408
-		this.prevShow = this.prevHide = $();
4409
-		this._addClass( "ui-accordion", "ui-widget ui-helper-reset" );
4410
-		this.element.attr( "role", "tablist" );
4411
-
4412
-		// Don't allow collapsible: false and active: false / null
4413
-		if ( !options.collapsible && ( options.active === false || options.active == null ) ) {
4414
-			options.active = 0;
4415
-		}
4416
-
4417
-		this._processPanels();
4418
-
4419
-		// handle negative values
4420
-		if ( options.active < 0 ) {
4421
-			options.active += this.headers.length;
4422
-		}
4423
-		this._refresh();
4424
-	},
4425
-
4426
-	_getCreateEventData: function() {
4427
-		return {
4428
-			header: this.active,
4429
-			panel: !this.active.length ? $() : this.active.next()
4430
-		};
4431
-	},
4432
-
4433
-	_createIcons: function() {
4434
-		var icon, children,
4435
-			icons = this.options.icons;
4436
-
4437
-		if ( icons ) {
4438
-			icon = $( "<span>" );
4439
-			this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header );
4440
-			icon.prependTo( this.headers );
4441
-			children = this.active.children( ".ui-accordion-header-icon" );
4442
-			this._removeClass( children, icons.header )
4443
-				._addClass( children, null, icons.activeHeader )
4444
-				._addClass( this.headers, "ui-accordion-icons" );
4445
-		}
4446
-	},
4447
-
4448
-	_destroyIcons: function() {
4449
-		this._removeClass( this.headers, "ui-accordion-icons" );
4450
-		this.headers.children( ".ui-accordion-header-icon" ).remove();
4451
-	},
4452
-
4453
-	_destroy: function() {
4454
-		var contents;
4455
-
4456
-		// Clean up main element
4457
-		this.element.removeAttr( "role" );
4458
-
4459
-		// Clean up headers
4460
-		this.headers
4461
-			.removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" )
4462
-			.removeUniqueId();
4463
-
4464
-		this._destroyIcons();
4465
-
4466
-		// Clean up content panels
4467
-		contents = this.headers.next()
4468
-			.css( "display", "" )
4469
-			.removeAttr( "role aria-hidden aria-labelledby" )
4470
-			.removeUniqueId();
4471
-
4472
-		if ( this.options.heightStyle !== "content" ) {
4473
-			contents.css( "height", "" );
4474
-		}
4475
-	},
4476
-
4477
-	_setOption: function( key, value ) {
4478
-		if ( key === "active" ) {
4479
-
4480
-			// _activate() will handle invalid values and update this.options
4481
-			this._activate( value );
4482
-			return;
4483
-		}
4484
-
4485
-		if ( key === "event" ) {
4486
-			if ( this.options.event ) {
4487
-				this._off( this.headers, this.options.event );
4488
-			}
4489
-			this._setupEvents( value );
4490
-		}
4491
-
4492
-		this._super( key, value );
4493
-
4494
-		// Setting collapsible: false while collapsed; open first panel
4495
-		if ( key === "collapsible" && !value && this.options.active === false ) {
4496
-			this._activate( 0 );
4497
-		}
4498
-
4499
-		if ( key === "icons" ) {
4500
-			this._destroyIcons();
4501
-			if ( value ) {
4502
-				this._createIcons();
4503
-			}
4504
-		}
4505
-	},
4506
-
4507
-	_setOptionDisabled: function( value ) {
4508
-		this._super( value );
4509
-
4510
-		this.element.attr( "aria-disabled", value );
4511
-
4512
-		// Support: IE8 Only
4513
-		// #5332 / #6059 - opacity doesn't cascade to positioned elements in IE
4514
-		// so we need to add the disabled class to the headers and panels
4515
-		this._toggleClass( null, "ui-state-disabled", !!value );
4516
-		this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled",
4517
-			!!value );
4518
-	},
4519
-
4520
-	_keydown: function( event ) {
4521
-		if ( event.altKey || event.ctrlKey ) {
4522
-			return;
4523
-		}
4524
-
4525
-		var keyCode = $.ui.keyCode,
4526
-			length = this.headers.length,
4527
-			currentIndex = this.headers.index( event.target ),
4528
-			toFocus = false;
4529
-
4530
-		switch ( event.keyCode ) {
4531
-		case keyCode.RIGHT:
4532
-		case keyCode.DOWN:
4533
-			toFocus = this.headers[ ( currentIndex + 1 ) % length ];
4534
-			break;
4535
-		case keyCode.LEFT:
4536
-		case keyCode.UP:
4537
-			toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
4538
-			break;
4539
-		case keyCode.SPACE:
4540
-		case keyCode.ENTER:
4541
-			this._eventHandler( event );
4542
-			break;
4543
-		case keyCode.HOME:
4544
-			toFocus = this.headers[ 0 ];
4545
-			break;
4546
-		case keyCode.END:
4547
-			toFocus = this.headers[ length - 1 ];
4548
-			break;
4549
-		}
4550
-
4551
-		if ( toFocus ) {
4552
-			$( event.target ).attr( "tabIndex", -1 );
4553
-			$( toFocus ).attr( "tabIndex", 0 );
4554
-			$( toFocus ).trigger( "focus" );
4555
-			event.preventDefault();
4556
-		}
4557
-	},
4558
-
4559
-	_panelKeyDown: function( event ) {
4560
-		if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
4561
-			$( event.currentTarget ).prev().trigger( "focus" );
4562
-		}
4563
-	},
4564
-
4565
-	refresh: function() {
4566
-		var options = this.options;
4567
-		this._processPanels();
4568
-
4569
-		// Was collapsed or no panel
4570
-		if ( ( options.active === false && options.collapsible === true ) ||
4571
-				!this.headers.length ) {
4572
-			options.active = false;
4573
-			this.active = $();
4574
-
4575
-		// active false only when collapsible is true
4576
-		} else if ( options.active === false ) {
4577
-			this._activate( 0 );
4578
-
4579
-		// was active, but active panel is gone
4580
-		} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
4581
-
4582
-			// all remaining panel are disabled
4583
-			if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) {
4584
-				options.active = false;
4585
-				this.active = $();
4586
-
4587
-			// activate previous panel
4588
-			} else {
4589
-				this._activate( Math.max( 0, options.active - 1 ) );
4590
-			}
4591
-
4592
-		// was active, active panel still exists
4593
-		} else {
4594
-
4595
-			// make sure active index is correct
4596
-			options.active = this.headers.index( this.active );
4597
-		}
4598
-
4599
-		this._destroyIcons();
4600
-
4601
-		this._refresh();
4602
-	},
4603
-
4604
-	_processPanels: function() {
4605
-		var prevHeaders = this.headers,
4606
-			prevPanels = this.panels;
4607
-
4608
-		if ( typeof this.options.header === "function" ) {
4609
-			this.headers = this.options.header( this.element );
4610
-		} else {
4611
-			this.headers = this.element.find( this.options.header );
4612
-		}
4613
-		this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed",
4614
-			"ui-state-default" );
4615
-
4616
-		this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide();
4617
-		this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" );
4618
-
4619
-		// Avoid memory leaks (#10056)
4620
-		if ( prevPanels ) {
4621
-			this._off( prevHeaders.not( this.headers ) );
4622
-			this._off( prevPanels.not( this.panels ) );
4623
-		}
4624
-	},
4625
-
4626
-	_refresh: function() {
4627
-		var maxHeight,
4628
-			options = this.options,
4629
-			heightStyle = options.heightStyle,
4630
-			parent = this.element.parent();
4631
-
4632
-		this.active = this._findActive( options.active );
4633
-		this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" )
4634
-			._removeClass( this.active, "ui-accordion-header-collapsed" );
4635
-		this._addClass( this.active.next(), "ui-accordion-content-active" );
4636
-		this.active.next().show();
4637
-
4638
-		this.headers
4639
-			.attr( "role", "tab" )
4640
-			.each( function() {
4641
-				var header = $( this ),
4642
-					headerId = header.uniqueId().attr( "id" ),
4643
-					panel = header.next(),
4644
-					panelId = panel.uniqueId().attr( "id" );
4645
-				header.attr( "aria-controls", panelId );
4646
-				panel.attr( "aria-labelledby", headerId );
4647
-			} )
4648
-			.next()
4649
-				.attr( "role", "tabpanel" );
4650
-
4651
-		this.headers
4652
-			.not( this.active )
4653
-				.attr( {
4654
-					"aria-selected": "false",
4655
-					"aria-expanded": "false",
4656
-					tabIndex: -1
4657
-				} )
4658
-				.next()
4659
-					.attr( {
4660
-						"aria-hidden": "true"
4661
-					} )
4662
-					.hide();
4663
-
4664
-		// Make sure at least one header is in the tab order
4665
-		if ( !this.active.length ) {
4666
-			this.headers.eq( 0 ).attr( "tabIndex", 0 );
4667
-		} else {
4668
-			this.active.attr( {
4669
-				"aria-selected": "true",
4670
-				"aria-expanded": "true",
4671
-				tabIndex: 0
4672
-			} )
4673
-				.next()
4674
-					.attr( {
4675
-						"aria-hidden": "false"
4676
-					} );
4677
-		}
4678
-
4679
-		this._createIcons();
4680
-
4681
-		this._setupEvents( options.event );
4682
-
4683
-		if ( heightStyle === "fill" ) {
4684
-			maxHeight = parent.height();
4685
-			this.element.siblings( ":visible" ).each( function() {
4686
-				var elem = $( this ),
4687
-					position = elem.css( "position" );
4688
-
4689
-				if ( position === "absolute" || position === "fixed" ) {
4690
-					return;
4691
-				}
4692
-				maxHeight -= elem.outerHeight( true );
4693
-			} );
4694
-
4695
-			this.headers.each( function() {
4696
-				maxHeight -= $( this ).outerHeight( true );
4697
-			} );
4698
-
4699
-			this.headers.next()
4700
-				.each( function() {
4701
-					$( this ).height( Math.max( 0, maxHeight -
4702
-						$( this ).innerHeight() + $( this ).height() ) );
4703
-				} )
4704
-				.css( "overflow", "auto" );
4705
-		} else if ( heightStyle === "auto" ) {
4706
-			maxHeight = 0;
4707
-			this.headers.next()
4708
-				.each( function() {
4709
-					var isVisible = $( this ).is( ":visible" );
4710
-					if ( !isVisible ) {
4711
-						$( this ).show();
4712
-					}
4713
-					maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
4714
-					if ( !isVisible ) {
4715
-						$( this ).hide();
4716
-					}
4717
-				} )
4718
-				.height( maxHeight );
4719
-		}
4720
-	},
4721
-
4722
-	_activate: function( index ) {
4723
-		var active = this._findActive( index )[ 0 ];
4724
-
4725
-		// Trying to activate the already active panel
4726
-		if ( active === this.active[ 0 ] ) {
4727
-			return;
4728
-		}
4729
-
4730
-		// Trying to collapse, simulate a click on the currently active header
4731
-		active = active || this.active[ 0 ];
4732
-
4733
-		this._eventHandler( {
4734
-			target: active,
4735
-			currentTarget: active,
4736
-			preventDefault: $.noop
4737
-		} );
4738
-	},
4739
-
4740
-	_findActive: function( selector ) {
4741
-		return typeof selector === "number" ? this.headers.eq( selector ) : $();
4742
-	},
4743
-
4744
-	_setupEvents: function( event ) {
4745
-		var events = {
4746
-			keydown: "_keydown"
4747
-		};
4748
-		if ( event ) {
4749
-			$.each( event.split( " " ), function( index, eventName ) {
4750
-				events[ eventName ] = "_eventHandler";
4751
-			} );
4752
-		}
4753
-
4754
-		this._off( this.headers.add( this.headers.next() ) );
4755
-		this._on( this.headers, events );
4756
-		this._on( this.headers.next(), { keydown: "_panelKeyDown" } );
4757
-		this._hoverable( this.headers );
4758
-		this._focusable( this.headers );
4759
-	},
4760
-
4761
-	_eventHandler: function( event ) {
4762
-		var activeChildren, clickedChildren,
4763
-			options = this.options,
4764
-			active = this.active,
4765
-			clicked = $( event.currentTarget ),
4766
-			clickedIsActive = clicked[ 0 ] === active[ 0 ],
4767
-			collapsing = clickedIsActive && options.collapsible,
4768
-			toShow = collapsing ? $() : clicked.next(),
4769
-			toHide = active.next(),
4770
-			eventData = {
4771
-				oldHeader: active,
4772
-				oldPanel: toHide,
4773
-				newHeader: collapsing ? $() : clicked,
4774
-				newPanel: toShow
4775
-			};
4776
-
4777
-		event.preventDefault();
4778
-
4779
-		if (
4780
-
4781
-				// click on active header, but not collapsible
4782
-				( clickedIsActive && !options.collapsible ) ||
4783
-
4784
-				// allow canceling activation
4785
-				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
4786
-			return;
4787
-		}
4788
-
4789
-		options.active = collapsing ? false : this.headers.index( clicked );
4790
-
4791
-		// When the call to ._toggle() comes after the class changes
4792
-		// it causes a very odd bug in IE 8 (see #6720)
4793
-		this.active = clickedIsActive ? $() : clicked;
4794
-		this._toggle( eventData );
4795
-
4796
-		// Switch classes
4797
-		// corner classes on the previously active header stay after the animation
4798
-		this._removeClass( active, "ui-accordion-header-active", "ui-state-active" );
4799
-		if ( options.icons ) {
4800
-			activeChildren = active.children( ".ui-accordion-header-icon" );
4801
-			this._removeClass( activeChildren, null, options.icons.activeHeader )
4802
-				._addClass( activeChildren, null, options.icons.header );
4803
-		}
4804
-
4805
-		if ( !clickedIsActive ) {
4806
-			this._removeClass( clicked, "ui-accordion-header-collapsed" )
4807
-				._addClass( clicked, "ui-accordion-header-active", "ui-state-active" );
4808
-			if ( options.icons ) {
4809
-				clickedChildren = clicked.children( ".ui-accordion-header-icon" );
4810
-				this._removeClass( clickedChildren, null, options.icons.header )
4811
-					._addClass( clickedChildren, null, options.icons.activeHeader );
4812
-			}
4813
-
4814
-			this._addClass( clicked.next(), "ui-accordion-content-active" );
4815
-		}
4816
-	},
4817
-
4818
-	_toggle: function( data ) {
4819
-		var toShow = data.newPanel,
4820
-			toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
4821
-
4822
-		// Handle activating a panel during the animation for another activation
4823
-		this.prevShow.add( this.prevHide ).stop( true, true );
4824
-		this.prevShow = toShow;
4825
-		this.prevHide = toHide;
4826
-
4827
-		if ( this.options.animate ) {
4828
-			this._animate( toShow, toHide, data );
4829
-		} else {
4830
-			toHide.hide();
4831
-			toShow.show();
4832
-			this._toggleComplete( data );
4833
-		}
4834
-
4835
-		toHide.attr( {
4836
-			"aria-hidden": "true"
4837
-		} );
4838
-		toHide.prev().attr( {
4839
-			"aria-selected": "false",
4840
-			"aria-expanded": "false"
4841
-		} );
4842
-
4843
-		// if we're switching panels, remove the old header from the tab order
4844
-		// if we're opening from collapsed state, remove the previous header from the tab order
4845
-		// if we're collapsing, then keep the collapsing header in the tab order
4846
-		if ( toShow.length && toHide.length ) {
4847
-			toHide.prev().attr( {
4848
-				"tabIndex": -1,
4849
-				"aria-expanded": "false"
4850
-			} );
4851
-		} else if ( toShow.length ) {
4852
-			this.headers.filter( function() {
4853
-				return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0;
4854
-			} )
4855
-				.attr( "tabIndex", -1 );
4856
-		}
4857
-
4858
-		toShow
4859
-			.attr( "aria-hidden", "false" )
4860
-			.prev()
4861
-				.attr( {
4862
-					"aria-selected": "true",
4863
-					"aria-expanded": "true",
4864
-					tabIndex: 0
4865
-				} );
4866
-	},
4867
-
4868
-	_animate: function( toShow, toHide, data ) {
4869
-		var total, easing, duration,
4870
-			that = this,
4871
-			adjust = 0,
4872
-			boxSizing = toShow.css( "box-sizing" ),
4873
-			down = toShow.length &&
4874
-				( !toHide.length || ( toShow.index() < toHide.index() ) ),
4875
-			animate = this.options.animate || {},
4876
-			options = down && animate.down || animate,
4877
-			complete = function() {
4878
-				that._toggleComplete( data );
4879
-			};
4880
-
4881
-		if ( typeof options === "number" ) {
4882
-			duration = options;
4883
-		}
4884
-		if ( typeof options === "string" ) {
4885
-			easing = options;
4886
-		}
4887
-
4888
-		// fall back from options to animation in case of partial down settings
4889
-		easing = easing || options.easing || animate.easing;
4890
-		duration = duration || options.duration || animate.duration;
4891
-
4892
-		if ( !toHide.length ) {
4893
-			return toShow.animate( this.showProps, duration, easing, complete );
4894
-		}
4895
-		if ( !toShow.length ) {
4896
-			return toHide.animate( this.hideProps, duration, easing, complete );
4897
-		}
4898
-
4899
-		total = toShow.show().outerHeight();
4900
-		toHide.animate( this.hideProps, {
4901
-			duration: duration,
4902
-			easing: easing,
4903
-			step: function( now, fx ) {
4904
-				fx.now = Math.round( now );
4905
-			}
4906
-		} );
4907
-		toShow
4908
-			.hide()
4909
-			.animate( this.showProps, {
4910
-				duration: duration,
4911
-				easing: easing,
4912
-				complete: complete,
4913
-				step: function( now, fx ) {
4914
-					fx.now = Math.round( now );
4915
-					if ( fx.prop !== "height" ) {
4916
-						if ( boxSizing === "content-box" ) {
4917
-							adjust += fx.now;
4918
-						}
4919
-					} else if ( that.options.heightStyle !== "content" ) {
4920
-						fx.now = Math.round( total - toHide.outerHeight() - adjust );
4921
-						adjust = 0;
4922
-					}
4923
-				}
4924
-			} );
4925
-	},
4926
-
4927
-	_toggleComplete: function( data ) {
4928
-		var toHide = data.oldPanel,
4929
-			prev = toHide.prev();
4930
-
4931
-		this._removeClass( toHide, "ui-accordion-content-active" );
4932
-		this._removeClass( prev, "ui-accordion-header-active" )
4933
-			._addClass( prev, "ui-accordion-header-collapsed" );
4934
-
4935
-		// Work around for rendering bug in IE (#5421)
4936
-		if ( toHide.length ) {
4937
-			toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;
4938
-		}
4939
-		this._trigger( "activate", null, data );
4940
-	}
4941
-} );
4942
-
4943
-
4944
-
4945
-var safeActiveElement = $.ui.safeActiveElement = function( document ) {
4946
-	var activeElement;
4947
-
4948
-	// Support: IE 9 only
4949
-	// IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
4950
-	try {
4951
-		activeElement = document.activeElement;
4952
-	} catch ( error ) {
4953
-		activeElement = document.body;
4954
-	}
4955
-
4956
-	// Support: IE 9 - 11 only
4957
-	// IE may return null instead of an element
4958
-	// Interestingly, this only seems to occur when NOT in an iframe
4959
-	if ( !activeElement ) {
4960
-		activeElement = document.body;
4961
-	}
4962
-
4963
-	// Support: IE 11 only
4964
-	// IE11 returns a seemingly empty object in some cases when accessing
4965
-	// document.activeElement from an <iframe>
4966
-	if ( !activeElement.nodeName ) {
4967
-		activeElement = document.body;
4968
-	}
4969
-
4970
-	return activeElement;
4971
-};
4972
-
4973
-
4974
-/*!
4975
- * jQuery UI Menu 1.13.2
4976
- * http://jqueryui.com
4977
- *
4978
- * Copyright jQuery Foundation and other contributors
4979
- * Released under the MIT license.
4980
- * http://jquery.org/license
4981
- */
4982
-
4983
-//>>label: Menu
4984
-//>>group: Widgets
4985
-//>>description: Creates nestable menus.
4986
-//>>docs: http://api.jqueryui.com/menu/
4987
-//>>demos: http://jqueryui.com/menu/
4988
-//>>css.structure: ../../themes/base/core.css
4989
-//>>css.structure: ../../themes/base/menu.css
4990
-//>>css.theme: ../../themes/base/theme.css
4991
-
4992
-
4993
-var widgetsMenu = $.widget( "ui.menu", {
4994
-	version: "1.13.2",
4995
-	defaultElement: "<ul>",
4996
-	delay: 300,
4997
-	options: {
4998
-		icons: {
4999
-			submenu: "ui-icon-caret-1-e"
5000
-		},
5001
-		items: "> *",
5002
-		menus: "ul",
5003
-		position: {
5004
-			my: "left top",
5005
-			at: "right top"
5006
-		},
5007
-		role: "menu",
5008
-
5009
-		// Callbacks
5010
-		blur: null,
5011
-		focus: null,
5012
-		select: null
5013
-	},
5014
-
5015
-	_create: function() {
5016
-		this.activeMenu = this.element;
5017
-
5018
-		// Flag used to prevent firing of the click handler
5019
-		// as the event bubbles up through nested menus
5020
-		this.mouseHandled = false;
5021
-		this.lastMousePosition = { x: null, y: null };
5022
-		this.element
5023
-			.uniqueId()
5024
-			.attr( {
5025
-				role: this.options.role,
5026
-				tabIndex: 0
5027
-			} );
5028
-
5029
-		this._addClass( "ui-menu", "ui-widget ui-widget-content" );
5030
-		this._on( {
5031
-
5032
-			// Prevent focus from sticking to links inside menu after clicking
5033
-			// them (focus should always stay on UL during navigation).
5034
-			"mousedown .ui-menu-item": function( event ) {
5035
-				event.preventDefault();
5036
-
5037
-				this._activateItem( event );
5038
-			},
5039
-			"click .ui-menu-item": function( event ) {
5040
-				var target = $( event.target );
5041
-				var active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
5042
-				if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
5043
-					this.select( event );
5044
-
5045
-					// Only set the mouseHandled flag if the event will bubble, see #9469.
5046
-					if ( !event.isPropagationStopped() ) {
5047
-						this.mouseHandled = true;
5048
-					}
5049
-
5050
-					// Open submenu on click
5051
-					if ( target.has( ".ui-menu" ).length ) {
5052
-						this.expand( event );
5053
-					} else if ( !this.element.is( ":focus" ) &&
5054
-							active.closest( ".ui-menu" ).length ) {
5055
-
5056
-						// Redirect focus to the menu
5057
-						this.element.trigger( "focus", [ true ] );
5058
-
5059
-						// If the active item is on the top level, let it stay active.
5060
-						// Otherwise, blur the active item since it is no longer visible.
5061
-						if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
5062
-							clearTimeout( this.timer );
5063
-						}
5064
-					}
5065
-				}
5066
-			},
5067
-			"mouseenter .ui-menu-item": "_activateItem",
5068
-			"mousemove .ui-menu-item": "_activateItem",
5069
-			mouseleave: "collapseAll",
5070
-			"mouseleave .ui-menu": "collapseAll",
5071
-			focus: function( event, keepActiveItem ) {
5072
-
5073
-				// If there's already an active item, keep it active
5074
-				// If not, activate the first item
5075
-				var item = this.active || this._menuItems().first();
5076
-
5077
-				if ( !keepActiveItem ) {
5078
-					this.focus( event, item );
5079
-				}
5080
-			},
5081
-			blur: function( event ) {
5082
-				this._delay( function() {
5083
-					var notContained = !$.contains(
5084
-						this.element[ 0 ],
5085
-						$.ui.safeActiveElement( this.document[ 0 ] )
5086
-					);
5087
-					if ( notContained ) {
5088
-						this.collapseAll( event );
5089
-					}
5090
-				} );
5091
-			},
5092
-			keydown: "_keydown"
5093
-		} );
5094
-
5095
-		this.refresh();
5096
-
5097
-		// Clicks outside of a menu collapse any open menus
5098
-		this._on( this.document, {
5099
-			click: function( event ) {
5100
-				if ( this._closeOnDocumentClick( event ) ) {
5101
-					this.collapseAll( event, true );
5102
-				}
5103
-
5104
-				// Reset the mouseHandled flag
5105
-				this.mouseHandled = false;
5106
-			}
5107
-		} );
5108
-	},
5109
-
5110
-	_activateItem: function( event ) {
5111
-
5112
-		// Ignore mouse events while typeahead is active, see #10458.
5113
-		// Prevents focusing the wrong item when typeahead causes a scroll while the mouse
5114
-		// is over an item in the menu
5115
-		if ( this.previousFilter ) {
5116
-			return;
5117
-		}
5118
-
5119
-		// If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356)
5120
-		if ( event.clientX === this.lastMousePosition.x &&
5121
-				event.clientY === this.lastMousePosition.y ) {
5122
-			return;
5123
-		}
5124
-
5125
-		this.lastMousePosition = {
5126
-			x: event.clientX,
5127
-			y: event.clientY
5128
-		};
5129
-
5130
-		var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
5131
-			target = $( event.currentTarget );
5132
-
5133
-		// Ignore bubbled events on parent items, see #11641
5134
-		if ( actualTarget[ 0 ] !== target[ 0 ] ) {
5135
-			return;
5136
-		}
5137
-
5138
-		// If the item is already active, there's nothing to do
5139
-		if ( target.is( ".ui-state-active" ) ) {
5140
-			return;
5141
-		}
5142
-
5143
-		// Remove ui-state-active class from siblings of the newly focused menu item
5144
-		// to avoid a jump caused by adjacent elements both having a class with a border
5145
-		this._removeClass( target.siblings().children( ".ui-state-active" ),
5146
-			null, "ui-state-active" );
5147
-		this.focus( event, target );
5148
-	},
5149
-
5150
-	_destroy: function() {
5151
-		var items = this.element.find( ".ui-menu-item" )
5152
-				.removeAttr( "role aria-disabled" ),
5153
-			submenus = items.children( ".ui-menu-item-wrapper" )
5154
-				.removeUniqueId()
5155
-				.removeAttr( "tabIndex role aria-haspopup" );
5156
-
5157
-		// Destroy (sub)menus
5158
-		this.element
5159
-			.removeAttr( "aria-activedescendant" )
5160
-			.find( ".ui-menu" ).addBack()
5161
-				.removeAttr( "role aria-labelledby aria-expanded aria-hidden aria-disabled " +
5162
-					"tabIndex" )
5163
-				.removeUniqueId()
5164
-				.show();
5165
-
5166
-		submenus.children().each( function() {
5167
-			var elem = $( this );
5168
-			if ( elem.data( "ui-menu-submenu-caret" ) ) {
5169
-				elem.remove();
5170
-			}
5171
-		} );
5172
-	},
5173
-
5174
-	_keydown: function( event ) {
5175
-		var match, prev, character, skip,
5176
-			preventDefault = true;
5177
-
5178
-		switch ( event.keyCode ) {
5179
-		case $.ui.keyCode.PAGE_UP:
5180
-			this.previousPage( event );
5181
-			break;
5182
-		case $.ui.keyCode.PAGE_DOWN:
5183
-			this.nextPage( event );
5184
-			break;
5185
-		case $.ui.keyCode.HOME:
5186
-			this._move( "first", "first", event );
5187
-			break;
5188
-		case $.ui.keyCode.END:
5189
-			this._move( "last", "last", event );
5190
-			break;
5191
-		case $.ui.keyCode.UP:
5192
-			this.previous( event );
5193
-			break;
5194
-		case $.ui.keyCode.DOWN:
5195
-			this.next( event );
5196
-			break;
5197
-		case $.ui.keyCode.LEFT:
5198
-			this.collapse( event );
5199
-			break;
5200
-		case $.ui.keyCode.RIGHT:
5201
-			if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
5202
-				this.expand( event );
5203
-			}
5204
-			break;
5205
-		case $.ui.keyCode.ENTER:
5206
-		case $.ui.keyCode.SPACE:
5207
-			this._activate( event );
5208
-			break;
5209
-		case $.ui.keyCode.ESCAPE:
5210
-			this.collapse( event );
5211
-			break;
5212
-		default:
5213
-			preventDefault = false;
5214
-			prev = this.previousFilter || "";
5215
-			skip = false;
5216
-
5217
-			// Support number pad values
5218
-			character = event.keyCode >= 96 && event.keyCode <= 105 ?
5219
-				( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );
5220
-
5221
-			clearTimeout( this.filterTimer );
5222
-
5223
-			if ( character === prev ) {
5224
-				skip = true;
5225
-			} else {
5226
-				character = prev + character;
5227
-			}
5228
-
5229
-			match = this._filterMenuItems( character );
5230
-			match = skip && match.index( this.active.next() ) !== -1 ?
5231
-				this.active.nextAll( ".ui-menu-item" ) :
5232
-				match;
5233
-
5234
-			// If no matches on the current filter, reset to the last character pressed
5235
-			// to move down the menu to the first item that starts with that character
5236
-			if ( !match.length ) {
5237
-				character = String.fromCharCode( event.keyCode );
5238
-				match = this._filterMenuItems( character );
5239
-			}
5240
-
5241
-			if ( match.length ) {
5242
-				this.focus( event, match );
5243
-				this.previousFilter = character;
5244
-				this.filterTimer = this._delay( function() {
5245
-					delete this.previousFilter;
5246
-				}, 1000 );
5247
-			} else {
5248
-				delete this.previousFilter;
5249
-			}
5250
-		}
5251
-
5252
-		if ( preventDefault ) {
5253
-			event.preventDefault();
5254
-		}
5255
-	},
5256
-
5257
-	_activate: function( event ) {
5258
-		if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
5259
-			if ( this.active.children( "[aria-haspopup='true']" ).length ) {
5260
-				this.expand( event );
5261
-			} else {
5262
-				this.select( event );
5263
-			}
5264
-		}
5265
-	},
5266
-
5267
-	refresh: function() {
5268
-		var menus, items, newSubmenus, newItems, newWrappers,
5269
-			that = this,
5270
-			icon = this.options.icons.submenu,
5271
-			submenus = this.element.find( this.options.menus );
5272
-
5273
-		this._toggleClass( "ui-menu-icons", null, !!this.element.find( ".ui-icon" ).length );
5274
-
5275
-		// Initialize nested menus
5276
-		newSubmenus = submenus.filter( ":not(.ui-menu)" )
5277
-			.hide()
5278
-			.attr( {
5279
-				role: this.options.role,
5280
-				"aria-hidden": "true",
5281
-				"aria-expanded": "false"
5282
-			} )
5283
-			.each( function() {
5284
-				var menu = $( this ),
5285
-					item = menu.prev(),
5286
-					submenuCaret = $( "<span>" ).data( "ui-menu-submenu-caret", true );
5287
-
5288
-				that._addClass( submenuCaret, "ui-menu-icon", "ui-icon " + icon );
5289
-				item
5290
-					.attr( "aria-haspopup", "true" )
5291
-					.prepend( submenuCaret );
5292
-				menu.attr( "aria-labelledby", item.attr( "id" ) );
5293
-			} );
5294
-
5295
-		this._addClass( newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front" );
5296
-
5297
-		menus = submenus.add( this.element );
5298
-		items = menus.find( this.options.items );
5299
-
5300
-		// Initialize menu-items containing spaces and/or dashes only as dividers
5301
-		items.not( ".ui-menu-item" ).each( function() {
5302
-			var item = $( this );
5303
-			if ( that._isDivider( item ) ) {
5304
-				that._addClass( item, "ui-menu-divider", "ui-widget-content" );
5305
-			}
5306
-		} );
5307
-
5308
-		// Don't refresh list items that are already adapted
5309
-		newItems = items.not( ".ui-menu-item, .ui-menu-divider" );
5310
-		newWrappers = newItems.children()
5311
-			.not( ".ui-menu" )
5312
-				.uniqueId()
5313
-				.attr( {
5314
-					tabIndex: -1,
5315
-					role: this._itemRole()
5316
-				} );
5317
-		this._addClass( newItems, "ui-menu-item" )
5318
-			._addClass( newWrappers, "ui-menu-item-wrapper" );
5319
-
5320
-		// Add aria-disabled attribute to any disabled menu item
5321
-		items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
5322
-
5323
-		// If the active item has been removed, blur the menu
5324
-		if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
5325
-			this.blur();
5326
-		}
5327
-	},
5328
-
5329
-	_itemRole: function() {
5330
-		return {
5331
-			menu: "menuitem",
5332
-			listbox: "option"
5333
-		}[ this.options.role ];
5334
-	},
5335
-
5336
-	_setOption: function( key, value ) {
5337
-		if ( key === "icons" ) {
5338
-			var icons = this.element.find( ".ui-menu-icon" );
5339
-			this._removeClass( icons, null, this.options.icons.submenu )
5340
-				._addClass( icons, null, value.submenu );
5341
-		}
5342
-		this._super( key, value );
5343
-	},
5344
-
5345
-	_setOptionDisabled: function( value ) {
5346
-		this._super( value );
5347
-
5348
-		this.element.attr( "aria-disabled", String( value ) );
5349
-		this._toggleClass( null, "ui-state-disabled", !!value );
5350
-	},
5351
-
5352
-	focus: function( event, item ) {
5353
-		var nested, focused, activeParent;
5354
-		this.blur( event, event && event.type === "focus" );
5355
-
5356
-		this._scrollIntoView( item );
5357
-
5358
-		this.active = item.first();
5359
-
5360
-		focused = this.active.children( ".ui-menu-item-wrapper" );
5361
-		this._addClass( focused, null, "ui-state-active" );
5362
-
5363
-		// Only update aria-activedescendant if there's a role
5364
-		// otherwise we assume focus is managed elsewhere
5365
-		if ( this.options.role ) {
5366
-			this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
5367
-		}
5368
-
5369
-		// Highlight active parent menu item, if any
5370
-		activeParent = this.active
5371
-			.parent()
5372
-				.closest( ".ui-menu-item" )
5373
-					.children( ".ui-menu-item-wrapper" );
5374
-		this._addClass( activeParent, null, "ui-state-active" );
5375
-
5376
-		if ( event && event.type === "keydown" ) {
5377
-			this._close();
5378
-		} else {
5379
-			this.timer = this._delay( function() {
5380
-				this._close();
5381
-			}, this.delay );
5382
-		}
5383
-
5384
-		nested = item.children( ".ui-menu" );
5385
-		if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
5386
-			this._startOpening( nested );
5387
-		}
5388
-		this.activeMenu = item.parent();
5389
-
5390
-		this._trigger( "focus", event, { item: item } );
5391
-	},
5392
-
5393
-	_scrollIntoView: function( item ) {
5394
-		var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
5395
-		if ( this._hasScroll() ) {
5396
-			borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
5397
-			paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
5398
-			offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
5399
-			scroll = this.activeMenu.scrollTop();
5400
-			elementHeight = this.activeMenu.height();
5401
-			itemHeight = item.outerHeight();
5402
-
5403
-			if ( offset < 0 ) {
5404
-				this.activeMenu.scrollTop( scroll + offset );
5405
-			} else if ( offset + itemHeight > elementHeight ) {
5406
-				this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
5407
-			}
5408
-		}
5409
-	},
5410
-
5411
-	blur: function( event, fromFocus ) {
5412
-		if ( !fromFocus ) {
5413
-			clearTimeout( this.timer );
5414
-		}
5415
-
5416
-		if ( !this.active ) {
5417
-			return;
5418
-		}
5419
-
5420
-		this._removeClass( this.active.children( ".ui-menu-item-wrapper" ),
5421
-			null, "ui-state-active" );
5422
-
5423
-		this._trigger( "blur", event, { item: this.active } );
5424
-		this.active = null;
5425
-	},
5426
-
5427
-	_startOpening: function( submenu ) {
5428
-		clearTimeout( this.timer );
5429
-
5430
-		// Don't open if already open fixes a Firefox bug that caused a .5 pixel
5431
-		// shift in the submenu position when mousing over the caret icon
5432
-		if ( submenu.attr( "aria-hidden" ) !== "true" ) {
5433
-			return;
5434
-		}
5435
-
5436
-		this.timer = this._delay( function() {
5437
-			this._close();
5438
-			this._open( submenu );
5439
-		}, this.delay );
5440
-	},
5441
-
5442
-	_open: function( submenu ) {
5443
-		var position = $.extend( {
5444
-			of: this.active
5445
-		}, this.options.position );
5446
-
5447
-		clearTimeout( this.timer );
5448
-		this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
5449
-			.hide()
5450
-			.attr( "aria-hidden", "true" );
5451
-
5452
-		submenu
5453
-			.show()
5454
-			.removeAttr( "aria-hidden" )
5455
-			.attr( "aria-expanded", "true" )
5456
-			.position( position );
5457
-	},
5458
-
5459
-	collapseAll: function( event, all ) {
5460
-		clearTimeout( this.timer );
5461
-		this.timer = this._delay( function() {
5462
-
5463
-			// If we were passed an event, look for the submenu that contains the event
5464
-			var currentMenu = all ? this.element :
5465
-				$( event && event.target ).closest( this.element.find( ".ui-menu" ) );
5466
-
5467
-			// If we found no valid submenu ancestor, use the main menu to close all
5468
-			// sub menus anyway
5469
-			if ( !currentMenu.length ) {
5470
-				currentMenu = this.element;
5471
-			}
5472
-
5473
-			this._close( currentMenu );
5474
-
5475
-			this.blur( event );
5476
-
5477
-			// Work around active item staying active after menu is blurred
5478
-			this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );
5479
-
5480
-			this.activeMenu = currentMenu;
5481
-		}, all ? 0 : this.delay );
5482
-	},
5483
-
5484
-	// With no arguments, closes the currently active menu - if nothing is active
5485
-	// it closes all menus.  If passed an argument, it will search for menus BELOW
5486
-	_close: function( startMenu ) {
5487
-		if ( !startMenu ) {
5488
-			startMenu = this.active ? this.active.parent() : this.element;
5489
-		}
5490
-
5491
-		startMenu.find( ".ui-menu" )
5492
-			.hide()
5493
-			.attr( "aria-hidden", "true" )
5494
-			.attr( "aria-expanded", "false" );
5495
-	},
5496
-
5497
-	_closeOnDocumentClick: function( event ) {
5498
-		return !$( event.target ).closest( ".ui-menu" ).length;
5499
-	},
5500
-
5501
-	_isDivider: function( item ) {
5502
-
5503
-		// Match hyphen, em dash, en dash
5504
-		return !/[^\-\u2014\u2013\s]/.test( item.text() );
5505
-	},
5506
-
5507
-	collapse: function( event ) {
5508
-		var newItem = this.active &&
5509
-			this.active.parent().closest( ".ui-menu-item", this.element );
5510
-		if ( newItem && newItem.length ) {
5511
-			this._close();
5512
-			this.focus( event, newItem );
5513
-		}
5514
-	},
5515
-
5516
-	expand: function( event ) {
5517
-		var newItem = this.active && this._menuItems( this.active.children( ".ui-menu" ) ).first();
5518
-
5519
-		if ( newItem && newItem.length ) {
5520
-			this._open( newItem.parent() );
5521
-
5522
-			// Delay so Firefox will not hide activedescendant change in expanding submenu from AT
5523
-			this._delay( function() {
5524
-				this.focus( event, newItem );
5525
-			} );
5526
-		}
5527
-	},
5528
-
5529
-	next: function( event ) {
5530
-		this._move( "next", "first", event );
5531
-	},
5532
-
5533
-	previous: function( event ) {
5534
-		this._move( "prev", "last", event );
5535
-	},
5536
-
5537
-	isFirstItem: function() {
5538
-		return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
5539
-	},
5540
-
5541
-	isLastItem: function() {
5542
-		return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
5543
-	},
5544
-
5545
-	_menuItems: function( menu ) {
5546
-		return ( menu || this.element )
5547
-			.find( this.options.items )
5548
-			.filter( ".ui-menu-item" );
5549
-	},
5550
-
5551
-	_move: function( direction, filter, event ) {
5552
-		var next;
5553
-		if ( this.active ) {
5554
-			if ( direction === "first" || direction === "last" ) {
5555
-				next = this.active
5556
-					[ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
5557
-					.last();
5558
-			} else {
5559
-				next = this.active
5560
-					[ direction + "All" ]( ".ui-menu-item" )
5561
-					.first();
5562
-			}
5563
-		}
5564
-		if ( !next || !next.length || !this.active ) {
5565
-			next = this._menuItems( this.activeMenu )[ filter ]();
5566
-		}
5567
-
5568
-		this.focus( event, next );
5569
-	},
5570
-
5571
-	nextPage: function( event ) {
5572
-		var item, base, height;
5573
-
5574
-		if ( !this.active ) {
5575
-			this.next( event );
5576
-			return;
5577
-		}
5578
-		if ( this.isLastItem() ) {
5579
-			return;
5580
-		}
5581
-		if ( this._hasScroll() ) {
5582
-			base = this.active.offset().top;
5583
-			height = this.element.innerHeight();
5584
-
5585
-			// jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
5586
-			if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
5587
-				height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
5588
-			}
5589
-
5590
-			this.active.nextAll( ".ui-menu-item" ).each( function() {
5591
-				item = $( this );
5592
-				return item.offset().top - base - height < 0;
5593
-			} );
5594
-
5595
-			this.focus( event, item );
5596
-		} else {
5597
-			this.focus( event, this._menuItems( this.activeMenu )
5598
-				[ !this.active ? "first" : "last" ]() );
5599
-		}
5600
-	},
5601
-
5602
-	previousPage: function( event ) {
5603
-		var item, base, height;
5604
-		if ( !this.active ) {
5605
-			this.next( event );
5606
-			return;
5607
-		}
5608
-		if ( this.isFirstItem() ) {
5609
-			return;
5610
-		}
5611
-		if ( this._hasScroll() ) {
5612
-			base = this.active.offset().top;
5613
-			height = this.element.innerHeight();
5614
-
5615
-			// jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
5616
-			if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
5617
-				height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
5618
-			}
5619
-
5620
-			this.active.prevAll( ".ui-menu-item" ).each( function() {
5621
-				item = $( this );
5622
-				return item.offset().top - base + height > 0;
5623
-			} );
5624
-
5625
-			this.focus( event, item );
5626
-		} else {
5627
-			this.focus( event, this._menuItems( this.activeMenu ).first() );
5628
-		}
5629
-	},
5630
-
5631
-	_hasScroll: function() {
5632
-		return this.element.outerHeight() < this.element.prop( "scrollHeight" );
5633
-	},
5634
-
5635
-	select: function( event ) {
5636
-
5637
-		// TODO: It should never be possible to not have an active item at this
5638
-		// point, but the tests don't trigger mouseenter before click.
5639
-		this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
5640
-		var ui = { item: this.active };
5641
-		if ( !this.active.has( ".ui-menu" ).length ) {
5642
-			this.collapseAll( event, true );
5643
-		}
5644
-		this._trigger( "select", event, ui );
5645
-	},
5646
-
5647
-	_filterMenuItems: function( character ) {
5648
-		var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ),
5649
-			regex = new RegExp( "^" + escapedCharacter, "i" );
5650
-
5651
-		return this.activeMenu
5652
-			.find( this.options.items )
5653
-
5654
-				// Only match on items, not dividers or other content (#10571)
5655
-				.filter( ".ui-menu-item" )
5656
-					.filter( function() {
5657
-						return regex.test(
5658
-							String.prototype.trim.call(
5659
-								$( this ).children( ".ui-menu-item-wrapper" ).text() ) );
5660
-					} );
5661
-	}
5662
-} );
5663
-
5664
-
5665
-/*!
5666
- * jQuery UI Autocomplete 1.13.2
5667
- * http://jqueryui.com
5668
- *
5669
- * Copyright jQuery Foundation and other contributors
5670
- * Released under the MIT license.
5671
- * http://jquery.org/license
5672
- */
5673
-
5674
-//>>label: Autocomplete
5675
-//>>group: Widgets
5676
-//>>description: Lists suggested words as the user is typing.
5677
-//>>docs: http://api.jqueryui.com/autocomplete/
5678
-//>>demos: http://jqueryui.com/autocomplete/
5679
-//>>css.structure: ../../themes/base/core.css
5680
-//>>css.structure: ../../themes/base/autocomplete.css
5681
-//>>css.theme: ../../themes/base/theme.css
5682
-
5683
-
5684
-$.widget( "ui.autocomplete", {
5685
-	version: "1.13.2",
5686
-	defaultElement: "<input>",
5687
-	options: {
5688
-		appendTo: null,
5689
-		autoFocus: false,
5690
-		delay: 300,
5691
-		minLength: 1,
5692
-		position: {
5693
-			my: "left top",
5694
-			at: "left bottom",
5695
-			collision: "none"
5696
-		},
5697
-		source: null,
5698
-
5699
-		// Callbacks
5700
-		change: null,
5701
-		close: null,
5702
-		focus: null,
5703
-		open: null,
5704
-		response: null,
5705
-		search: null,
5706
-		select: null
5707
-	},
5708
-
5709
-	requestIndex: 0,
5710
-	pending: 0,
5711
-	liveRegionTimer: null,
5712
-
5713
-	_create: function() {
5714
-
5715
-		// Some browsers only repeat keydown events, not keypress events,
5716
-		// so we use the suppressKeyPress flag to determine if we've already
5717
-		// handled the keydown event. #7269
5718
-		// Unfortunately the code for & in keypress is the same as the up arrow,
5719
-		// so we use the suppressKeyPressRepeat flag to avoid handling keypress
5720
-		// events when we know the keydown event was used to modify the
5721
-		// search term. #7799
5722
-		var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
5723
-			nodeName = this.element[ 0 ].nodeName.toLowerCase(),
5724
-			isTextarea = nodeName === "textarea",
5725
-			isInput = nodeName === "input";
5726
-
5727
-		// Textareas are always multi-line
5728
-		// Inputs are always single-line, even if inside a contentEditable element
5729
-		// IE also treats inputs as contentEditable
5730
-		// All other element types are determined by whether or not they're contentEditable
5731
-		this.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );
5732
-
5733
-		this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
5734
-		this.isNewMenu = true;
5735
-
5736
-		this._addClass( "ui-autocomplete-input" );
5737
-		this.element.attr( "autocomplete", "off" );
5738
-
5739
-		this._on( this.element, {
5740
-			keydown: function( event ) {
5741
-				if ( this.element.prop( "readOnly" ) ) {
5742
-					suppressKeyPress = true;
5743
-					suppressInput = true;
5744
-					suppressKeyPressRepeat = true;
5745
-					return;
5746
-				}
5747
-
5748
-				suppressKeyPress = false;
5749
-				suppressInput = false;
5750
-				suppressKeyPressRepeat = false;
5751
-				var keyCode = $.ui.keyCode;
5752
-				switch ( event.keyCode ) {
5753
-				case keyCode.PAGE_UP:
5754
-					suppressKeyPress = true;
5755
-					this._move( "previousPage", event );
5756
-					break;
5757
-				case keyCode.PAGE_DOWN:
5758
-					suppressKeyPress = true;
5759
-					this._move( "nextPage", event );
5760
-					break;
5761
-				case keyCode.UP:
5762
-					suppressKeyPress = true;
5763
-					this._keyEvent( "previous", event );
5764
-					break;
5765
-				case keyCode.DOWN:
5766
-					suppressKeyPress = true;
5767
-					this._keyEvent( "next", event );
5768
-					break;
5769
-				case keyCode.ENTER:
5770
-
5771
-					// when menu is open and has focus
5772
-					if ( this.menu.active ) {
5773
-
5774
-						// #6055 - Opera still allows the keypress to occur
5775
-						// which causes forms to submit
5776
-						suppressKeyPress = true;
5777
-						event.preventDefault();
5778
-						this.menu.select( event );
5779
-					}
5780
-					break;
5781
-				case keyCode.TAB:
5782
-					if ( this.menu.active ) {
5783
-						this.menu.select( event );
5784
-					}
5785
-					break;
5786
-				case keyCode.ESCAPE:
5787
-					if ( this.menu.element.is( ":visible" ) ) {
5788
-						if ( !this.isMultiLine ) {
5789
-							this._value( this.term );
5790
-						}
5791
-						this.close( event );
5792
-
5793
-						// Different browsers have different default behavior for escape
5794
-						// Single press can mean undo or clear
5795
-						// Double press in IE means clear the whole form
5796
-						event.preventDefault();
5797
-					}
5798
-					break;
5799
-				default:
5800
-					suppressKeyPressRepeat = true;
5801
-
5802
-					// search timeout should be triggered before the input value is changed
5803
-					this._searchTimeout( event );
5804
-					break;
5805
-				}
5806
-			},
5807
-			keypress: function( event ) {
5808
-				if ( suppressKeyPress ) {
5809
-					suppressKeyPress = false;
5810
-					if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
5811
-						event.preventDefault();
5812
-					}
5813
-					return;
5814
-				}
5815
-				if ( suppressKeyPressRepeat ) {
5816
-					return;
5817
-				}
5818
-
5819
-				// Replicate some key handlers to allow them to repeat in Firefox and Opera
5820
-				var keyCode = $.ui.keyCode;
5821
-				switch ( event.keyCode ) {
5822
-				case keyCode.PAGE_UP:
5823
-					this._move( "previousPage", event );
5824
-					break;
5825
-				case keyCode.PAGE_DOWN:
5826
-					this._move( "nextPage", event );
5827
-					break;
5828
-				case keyCode.UP:
5829
-					this._keyEvent( "previous", event );
5830
-					break;
5831
-				case keyCode.DOWN:
5832
-					this._keyEvent( "next", event );
5833
-					break;
5834
-				}
5835
-			},
5836
-			input: function( event ) {
5837
-				if ( suppressInput ) {
5838
-					suppressInput = false;
5839
-					event.preventDefault();
5840
-					return;
5841
-				}
5842
-				this._searchTimeout( event );
5843
-			},
5844
-			focus: function() {
5845
-				this.selectedItem = null;
5846
-				this.previous = this._value();
5847
-			},
5848
-			blur: function( event ) {
5849
-				clearTimeout( this.searching );
5850
-				this.close( event );
5851
-				this._change( event );
5852
-			}
5853
-		} );
5854
-
5855
-		this._initSource();
5856
-		this.menu = $( "<ul>" )
5857
-			.appendTo( this._appendTo() )
5858
-			.menu( {
5859
-
5860
-				// disable ARIA support, the live region takes care of that
5861
-				role: null
5862
-			} )
5863
-			.hide()
5864
-
5865
-			// Support: IE 11 only, Edge <= 14
5866
-			// For other browsers, we preventDefault() on the mousedown event
5867
-			// to keep the dropdown from taking focus from the input. This doesn't
5868
-			// work for IE/Edge, causing problems with selection and scrolling (#9638)
5869
-			// Happily, IE and Edge support an "unselectable" attribute that
5870
-			// prevents an element from receiving focus, exactly what we want here.
5871
-			.attr( {
5872
-				"unselectable": "on"
5873
-			} )
5874
-			.menu( "instance" );
5875
-
5876
-		this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
5877
-		this._on( this.menu.element, {
5878
-			mousedown: function( event ) {
5879
-
5880
-				// Prevent moving focus out of the text field
5881
-				event.preventDefault();
5882
-			},
5883
-			menufocus: function( event, ui ) {
5884
-				var label, item;
5885
-
5886
-				// support: Firefox
5887
-				// Prevent accidental activation of menu items in Firefox (#7024 #9118)
5888
-				if ( this.isNewMenu ) {
5889
-					this.isNewMenu = false;
5890
-					if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
5891
-						this.menu.blur();
5892
-
5893
-						this.document.one( "mousemove", function() {
5894
-							$( event.target ).trigger( event.originalEvent );
5895
-						} );
5896
-
5897
-						return;
5898
-					}
5899
-				}
5900
-
5901
-				item = ui.item.data( "ui-autocomplete-item" );
5902
-				if ( false !== this._trigger( "focus", event, { item: item } ) ) {
5903
-
5904
-					// use value to match what will end up in the input, if it was a key event
5905
-					if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
5906
-						this._value( item.value );
5907
-					}
5908
-				}
5909
-
5910
-				// Announce the value in the liveRegion
5911
-				label = ui.item.attr( "aria-label" ) || item.value;
5912
-				if ( label && String.prototype.trim.call( label ).length ) {
5913
-					clearTimeout( this.liveRegionTimer );
5914
-					this.liveRegionTimer = this._delay( function() {
5915
-						this.liveRegion.html( $( "<div>" ).text( label ) );
5916
-					}, 100 );
5917
-				}
5918
-			},
5919
-			menuselect: function( event, ui ) {
5920
-				var item = ui.item.data( "ui-autocomplete-item" ),
5921
-					previous = this.previous;
5922
-
5923
-				// Only trigger when focus was lost (click on menu)
5924
-				if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
5925
-					this.element.trigger( "focus" );
5926
-					this.previous = previous;
5927
-
5928
-					// #6109 - IE triggers two focus events and the second
5929
-					// is asynchronous, so we need to reset the previous
5930
-					// term synchronously and asynchronously :-(
5931
-					this._delay( function() {
5932
-						this.previous = previous;
5933
-						this.selectedItem = item;
5934
-					} );
5935
-				}
5936
-
5937
-				if ( false !== this._trigger( "select", event, { item: item } ) ) {
5938
-					this._value( item.value );
5939
-				}
5940
-
5941
-				// reset the term after the select event
5942
-				// this allows custom select handling to work properly
5943
-				this.term = this._value();
5944
-
5945
-				this.close( event );
5946
-				this.selectedItem = item;
5947
-			}
5948
-		} );
5949
-
5950
-		this.liveRegion = $( "<div>", {
5951
-			role: "status",
5952
-			"aria-live": "assertive",
5953
-			"aria-relevant": "additions"
5954
-		} )
5955
-			.appendTo( this.document[ 0 ].body );
5956
-
5957
-		this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );
5958
-
5959
-		// Turning off autocomplete prevents the browser from remembering the
5960
-		// value when navigating through history, so we re-enable autocomplete
5961
-		// if the page is unloaded before the widget is destroyed. #7790
5962
-		this._on( this.window, {
5963
-			beforeunload: function() {
5964
-				this.element.removeAttr( "autocomplete" );
5965
-			}
5966
-		} );
5967
-	},
5968
-
5969
-	_destroy: function() {
5970
-		clearTimeout( this.searching );
5971
-		this.element.removeAttr( "autocomplete" );
5972
-		this.menu.element.remove();
5973
-		this.liveRegion.remove();
5974
-	},
5975
-
5976
-	_setOption: function( key, value ) {
5977
-		this._super( key, value );
5978
-		if ( key === "source" ) {
5979
-			this._initSource();
5980
-		}
5981
-		if ( key === "appendTo" ) {
5982
-			this.menu.element.appendTo( this._appendTo() );
5983
-		}
5984
-		if ( key === "disabled" && value && this.xhr ) {
5985
-			this.xhr.abort();
5986
-		}
5987
-	},
5988
-
5989
-	_isEventTargetInWidget: function( event ) {
5990
-		var menuElement = this.menu.element[ 0 ];
5991
-
5992
-		return event.target === this.element[ 0 ] ||
5993
-			event.target === menuElement ||
5994
-			$.contains( menuElement, event.target );
5995
-	},
5996
-
5997
-	_closeOnClickOutside: function( event ) {
5998
-		if ( !this._isEventTargetInWidget( event ) ) {
5999
-			this.close();
6000
-		}
6001
-	},
6002
-
6003
-	_appendTo: function() {
6004
-		var element = this.options.appendTo;
6005
-
6006
-		if ( element ) {
6007
-			element = element.jquery || element.nodeType ?
6008
-				$( element ) :
6009
-				this.document.find( element ).eq( 0 );
6010
-		}
6011
-
6012
-		if ( !element || !element[ 0 ] ) {
6013
-			element = this.element.closest( ".ui-front, dialog" );
6014
-		}
6015
-
6016
-		if ( !element.length ) {
6017
-			element = this.document[ 0 ].body;
6018
-		}
6019
-
6020
-		return element;
6021
-	},
6022
-
6023
-	_initSource: function() {
6024
-		var array, url,
6025
-			that = this;
6026
-		if ( Array.isArray( this.options.source ) ) {
6027
-			array = this.options.source;
6028
-			this.source = function( request, response ) {
6029
-				response( $.ui.autocomplete.filter( array, request.term ) );
6030
-			};
6031
-		} else if ( typeof this.options.source === "string" ) {
6032
-			url = this.options.source;
6033
-			this.source = function( request, response ) {
6034
-				if ( that.xhr ) {
6035
-					that.xhr.abort();
6036
-				}
6037
-				that.xhr = $.ajax( {
6038
-					url: url,
6039
-					data: request,
6040
-					dataType: "json",
6041
-					success: function( data ) {
6042
-						response( data );
6043
-					},
6044
-					error: function() {
6045
-						response( [] );
6046
-					}
6047
-				} );
6048
-			};
6049
-		} else {
6050
-			this.source = this.options.source;
6051
-		}
6052
-	},
6053
-
6054
-	_searchTimeout: function( event ) {
6055
-		clearTimeout( this.searching );
6056
-		this.searching = this._delay( function() {
6057
-
6058
-			// Search if the value has changed, or if the user retypes the same value (see #7434)
6059
-			var equalValues = this.term === this._value(),
6060
-				menuVisible = this.menu.element.is( ":visible" ),
6061
-				modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
6062
-
6063
-			if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {
6064
-				this.selectedItem = null;
6065
-				this.search( null, event );
6066
-			}
6067
-		}, this.options.delay );
6068
-	},
6069
-
6070
-	search: function( value, event ) {
6071
-		value = value != null ? value : this._value();
6072
-
6073
-		// Always save the actual value, not the one passed as an argument
6074
-		this.term = this._value();
6075
-
6076
-		if ( value.length < this.options.minLength ) {
6077
-			return this.close( event );
6078
-		}
6079
-
6080
-		if ( this._trigger( "search", event ) === false ) {
6081
-			return;
6082
-		}
6083
-
6084
-		return this._search( value );
6085
-	},
6086
-
6087
-	_search: function( value ) {
6088
-		this.pending++;
6089
-		this._addClass( "ui-autocomplete-loading" );
6090
-		this.cancelSearch = false;
6091
-
6092
-		this.source( { term: value }, this._response() );
6093
-	},
6094
-
6095
-	_response: function() {
6096
-		var index = ++this.requestIndex;
6097
-
6098
-		return function( content ) {
6099
-			if ( index === this.requestIndex ) {
6100
-				this.__response( content );
6101
-			}
6102
-
6103
-			this.pending--;
6104
-			if ( !this.pending ) {
6105
-				this._removeClass( "ui-autocomplete-loading" );
6106
-			}
6107
-		}.bind( this );
6108
-	},
6109
-
6110
-	__response: function( content ) {
6111
-		if ( content ) {
6112
-			content = this._normalize( content );
6113
-		}
6114
-		this._trigger( "response", null, { content: content } );
6115
-		if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
6116
-			this._suggest( content );
6117
-			this._trigger( "open" );
6118
-		} else {
6119
-
6120
-			// use ._close() instead of .close() so we don't cancel future searches
6121
-			this._close();
6122
-		}
6123
-	},
6124
-
6125
-	close: function( event ) {
6126
-		this.cancelSearch = true;
6127
-		this._close( event );
6128
-	},
6129
-
6130
-	_close: function( event ) {
6131
-
6132
-		// Remove the handler that closes the menu on outside clicks
6133
-		this._off( this.document, "mousedown" );
6134
-
6135
-		if ( this.menu.element.is( ":visible" ) ) {
6136
-			this.menu.element.hide();
6137
-			this.menu.blur();
6138
-			this.isNewMenu = true;
6139
-			this._trigger( "close", event );
6140
-		}
6141
-	},
6142
-
6143
-	_change: function( event ) {
6144
-		if ( this.previous !== this._value() ) {
6145
-			this._trigger( "change", event, { item: this.selectedItem } );
6146
-		}
6147
-	},
6148
-
6149
-	_normalize: function( items ) {
6150
-
6151
-		// assume all items have the right format when the first item is complete
6152
-		if ( items.length && items[ 0 ].label && items[ 0 ].value ) {
6153
-			return items;
6154
-		}
6155
-		return $.map( items, function( item ) {
6156
-			if ( typeof item === "string" ) {
6157
-				return {
6158
-					label: item,
6159
-					value: item
6160
-				};
6161
-			}
6162
-			return $.extend( {}, item, {
6163
-				label: item.label || item.value,
6164
-				value: item.value || item.label
6165
-			} );
6166
-		} );
6167
-	},
6168
-
6169
-	_suggest: function( items ) {
6170
-		var ul = this.menu.element.empty();
6171
-		this._renderMenu( ul, items );
6172
-		this.isNewMenu = true;
6173
-		this.menu.refresh();
6174
-
6175
-		// Size and position menu
6176
-		ul.show();
6177
-		this._resizeMenu();
6178
-		ul.position( $.extend( {
6179
-			of: this.element
6180
-		}, this.options.position ) );
6181
-
6182
-		if ( this.options.autoFocus ) {
6183
-			this.menu.next();
6184
-		}
6185
-
6186
-		// Listen for interactions outside of the widget (#6642)
6187
-		this._on( this.document, {
6188
-			mousedown: "_closeOnClickOutside"
6189
-		} );
6190
-	},
6191
-
6192
-	_resizeMenu: function() {
6193
-		var ul = this.menu.element;
6194
-		ul.outerWidth( Math.max(
6195
-
6196
-			// Firefox wraps long text (possibly a rounding bug)
6197
-			// so we add 1px to avoid the wrapping (#7513)
6198
-			ul.width( "" ).outerWidth() + 1,
6199
-			this.element.outerWidth()
6200
-		) );
6201
-	},
6202
-
6203
-	_renderMenu: function( ul, items ) {
6204
-		var that = this;
6205
-		$.each( items, function( index, item ) {
6206
-			that._renderItemData( ul, item );
6207
-		} );
6208
-	},
6209
-
6210
-	_renderItemData: function( ul, item ) {
6211
-		return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
6212
-	},
6213
-
6214
-	_renderItem: function( ul, item ) {
6215
-		return $( "<li>" )
6216
-			.append( $( "<div>" ).text( item.label ) )
6217
-			.appendTo( ul );
6218
-	},
6219
-
6220
-	_move: function( direction, event ) {
6221
-		if ( !this.menu.element.is( ":visible" ) ) {
6222
-			this.search( null, event );
6223
-			return;
6224
-		}
6225
-		if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
6226
-				this.menu.isLastItem() && /^next/.test( direction ) ) {
6227
-
6228
-			if ( !this.isMultiLine ) {
6229
-				this._value( this.term );
6230
-			}
6231
-
6232
-			this.menu.blur();
6233
-			return;
6234
-		}
6235
-		this.menu[ direction ]( event );
6236
-	},
6237
-
6238
-	widget: function() {
6239
-		return this.menu.element;
6240
-	},
6241
-
6242
-	_value: function() {
6243
-		return this.valueMethod.apply( this.element, arguments );
6244
-	},
6245
-
6246
-	_keyEvent: function( keyEvent, event ) {
6247
-		if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
6248
-			this._move( keyEvent, event );
6249
-
6250
-			// Prevents moving cursor to beginning/end of the text field in some browsers
6251
-			event.preventDefault();
6252
-		}
6253
-	},
6254
-
6255
-	// Support: Chrome <=50
6256
-	// We should be able to just use this.element.prop( "isContentEditable" )
6257
-	// but hidden elements always report false in Chrome.
6258
-	// https://code.google.com/p/chromium/issues/detail?id=313082
6259
-	_isContentEditable: function( element ) {
6260
-		if ( !element.length ) {
6261
-			return false;
6262
-		}
6263
-
6264
-		var editable = element.prop( "contentEditable" );
6265
-
6266
-		if ( editable === "inherit" ) {
6267
-			return this._isContentEditable( element.parent() );
6268
-		}
6269
-
6270
-		return editable === "true";
6271
-	}
6272
-} );
6273
-
6274
-$.extend( $.ui.autocomplete, {
6275
-	escapeRegex: function( value ) {
6276
-		return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
6277
-	},
6278
-	filter: function( array, term ) {
6279
-		var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" );
6280
-		return $.grep( array, function( value ) {
6281
-			return matcher.test( value.label || value.value || value );
6282
-		} );
6283
-	}
6284
-} );
6285
-
6286
-// Live region extension, adding a `messages` option
6287
-// NOTE: This is an experimental API. We are still investigating
6288
-// a full solution for string manipulation and internationalization.
6289
-$.widget( "ui.autocomplete", $.ui.autocomplete, {
6290
-	options: {
6291
-		messages: {
6292
-			noResults: "No search results.",
6293
-			results: function( amount ) {
6294
-				return amount + ( amount > 1 ? " results are" : " result is" ) +
6295
-					" available, use up and down arrow keys to navigate.";
6296
-			}
6297
-		}
6298
-	},
6299
-
6300
-	__response: function( content ) {
6301
-		var message;
6302
-		this._superApply( arguments );
6303
-		if ( this.options.disabled || this.cancelSearch ) {
6304
-			return;
6305
-		}
6306
-		if ( content && content.length ) {
6307
-			message = this.options.messages.results( content.length );
6308
-		} else {
6309
-			message = this.options.messages.noResults;
6310
-		}
6311
-		clearTimeout( this.liveRegionTimer );
6312
-		this.liveRegionTimer = this._delay( function() {
6313
-			this.liveRegion.html( $( "<div>" ).text( message ) );
6314
-		}, 100 );
6315
-	}
6316
-} );
6317
-
6318
-var widgetsAutocomplete = $.ui.autocomplete;
6319
-
6320
-
6321
-/*!
6322
- * jQuery UI Controlgroup 1.13.2
6323
- * http://jqueryui.com
6324
- *
6325
- * Copyright jQuery Foundation and other contributors
6326
- * Released under the MIT license.
6327
- * http://jquery.org/license
6328
- */
6329
-
6330
-//>>label: Controlgroup
6331
-//>>group: Widgets
6332
-//>>description: Visually groups form control widgets
6333
-//>>docs: http://api.jqueryui.com/controlgroup/
6334
-//>>demos: http://jqueryui.com/controlgroup/
6335
-//>>css.structure: ../../themes/base/core.css
6336
-//>>css.structure: ../../themes/base/controlgroup.css
6337
-//>>css.theme: ../../themes/base/theme.css
6338
-
6339
-
6340
-var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
6341
-
6342
-var widgetsControlgroup = $.widget( "ui.controlgroup", {
6343
-	version: "1.13.2",
6344
-	defaultElement: "<div>",
6345
-	options: {
6346
-		direction: "horizontal",
6347
-		disabled: null,
6348
-		onlyVisible: true,
6349
-		items: {
6350
-			"button": "input[type=button], input[type=submit], input[type=reset], button, a",
6351
-			"controlgroupLabel": ".ui-controlgroup-label",
6352
-			"checkboxradio": "input[type='checkbox'], input[type='radio']",
6353
-			"selectmenu": "select",
6354
-			"spinner": ".ui-spinner-input"
6355
-		}
6356
-	},
6357
-
6358
-	_create: function() {
6359
-		this._enhance();
6360
-	},
6361
-
6362
-	// To support the enhanced option in jQuery Mobile, we isolate DOM manipulation
6363
-	_enhance: function() {
6364
-		this.element.attr( "role", "toolbar" );
6365
-		this.refresh();
6366
-	},
6367
-
6368
-	_destroy: function() {
6369
-		this._callChildMethod( "destroy" );
6370
-		this.childWidgets.removeData( "ui-controlgroup-data" );
6371
-		this.element.removeAttr( "role" );
6372
-		if ( this.options.items.controlgroupLabel ) {
6373
-			this.element
6374
-				.find( this.options.items.controlgroupLabel )
6375
-				.find( ".ui-controlgroup-label-contents" )
6376
-				.contents().unwrap();
6377
-		}
6378
-	},
6379
-
6380
-	_initWidgets: function() {
6381
-		var that = this,
6382
-			childWidgets = [];
6383
-
6384
-		// First we iterate over each of the items options
6385
-		$.each( this.options.items, function( widget, selector ) {
6386
-			var labels;
6387
-			var options = {};
6388
-
6389
-			// Make sure the widget has a selector set
6390
-			if ( !selector ) {
6391
-				return;
6392
-			}
6393
-
6394
-			if ( widget === "controlgroupLabel" ) {
6395
-				labels = that.element.find( selector );
6396
-				labels.each( function() {
6397
-					var element = $( this );
6398
-
6399
-					if ( element.children( ".ui-controlgroup-label-contents" ).length ) {
6400
-						return;
6401
-					}
6402
-					element.contents()
6403
-						.wrapAll( "<span class='ui-controlgroup-label-contents'></span>" );
6404
-				} );
6405
-				that._addClass( labels, null, "ui-widget ui-widget-content ui-state-default" );
6406
-				childWidgets = childWidgets.concat( labels.get() );
6407
-				return;
6408
-			}
6409
-
6410
-			// Make sure the widget actually exists
6411
-			if ( !$.fn[ widget ] ) {
6412
-				return;
6413
-			}
6414
-
6415
-			// We assume everything is in the middle to start because we can't determine
6416
-			// first / last elements until all enhancments are done.
6417
-			if ( that[ "_" + widget + "Options" ] ) {
6418
-				options = that[ "_" + widget + "Options" ]( "middle" );
6419
-			} else {
6420
-				options = { classes: {} };
6421
-			}
6422
-
6423
-			// Find instances of this widget inside controlgroup and init them
6424
-			that.element
6425
-				.find( selector )
6426
-				.each( function() {
6427
-					var element = $( this );
6428
-					var instance = element[ widget ]( "instance" );
6429
-
6430
-					// We need to clone the default options for this type of widget to avoid
6431
-					// polluting the variable options which has a wider scope than a single widget.
6432
-					var instanceOptions = $.widget.extend( {}, options );
6433
-
6434
-					// If the button is the child of a spinner ignore it
6435
-					// TODO: Find a more generic solution
6436
-					if ( widget === "button" && element.parent( ".ui-spinner" ).length ) {
6437
-						return;
6438
-					}
6439
-
6440
-					// Create the widget if it doesn't exist
6441
-					if ( !instance ) {
6442
-						instance = element[ widget ]()[ widget ]( "instance" );
6443
-					}
6444
-					if ( instance ) {
6445
-						instanceOptions.classes =
6446
-							that._resolveClassesValues( instanceOptions.classes, instance );
6447
-					}
6448
-					element[ widget ]( instanceOptions );
6449
-
6450
-					// Store an instance of the controlgroup to be able to reference
6451
-					// from the outermost element for changing options and refresh
6452
-					var widgetElement = element[ widget ]( "widget" );
6453
-					$.data( widgetElement[ 0 ], "ui-controlgroup-data",
6454
-						instance ? instance : element[ widget ]( "instance" ) );
6455
-
6456
-					childWidgets.push( widgetElement[ 0 ] );
6457
-				} );
6458
-		} );
6459
-
6460
-		this.childWidgets = $( $.uniqueSort( childWidgets ) );
6461
-		this._addClass( this.childWidgets, "ui-controlgroup-item" );
6462
-	},
6463
-
6464
-	_callChildMethod: function( method ) {
6465
-		this.childWidgets.each( function() {
6466
-			var element = $( this ),
6467
-				data = element.data( "ui-controlgroup-data" );
6468
-			if ( data && data[ method ] ) {
6469
-				data[ method ]();
6470
-			}
6471
-		} );
6472
-	},
6473
-
6474
-	_updateCornerClass: function( element, position ) {
6475
-		var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all";
6476
-		var add = this._buildSimpleOptions( position, "label" ).classes.label;
6477
-
6478
-		this._removeClass( element, null, remove );
6479
-		this._addClass( element, null, add );
6480
-	},
6481
-
6482
-	_buildSimpleOptions: function( position, key ) {
6483
-		var direction = this.options.direction === "vertical";
6484
-		var result = {
6485
-			classes: {}
6486
-		};
6487
-		result.classes[ key ] = {
6488
-			"middle": "",
6489
-			"first": "ui-corner-" + ( direction ? "top" : "left" ),
6490
-			"last": "ui-corner-" + ( direction ? "bottom" : "right" ),
6491
-			"only": "ui-corner-all"
6492
-		}[ position ];
6493
-
6494
-		return result;
6495
-	},
6496
-
6497
-	_spinnerOptions: function( position ) {
6498
-		var options = this._buildSimpleOptions( position, "ui-spinner" );
6499
-
6500
-		options.classes[ "ui-spinner-up" ] = "";
6501
-		options.classes[ "ui-spinner-down" ] = "";
6502
-
6503
-		return options;
6504
-	},
6505
-
6506
-	_buttonOptions: function( position ) {
6507
-		return this._buildSimpleOptions( position, "ui-button" );
6508
-	},
6509
-
6510
-	_checkboxradioOptions: function( position ) {
6511
-		return this._buildSimpleOptions( position, "ui-checkboxradio-label" );
6512
-	},
6513
-
6514
-	_selectmenuOptions: function( position ) {
6515
-		var direction = this.options.direction === "vertical";
6516
-		return {
6517
-			width: direction ? "auto" : false,
6518
-			classes: {
6519
-				middle: {
6520
-					"ui-selectmenu-button-open": "",
6521
-					"ui-selectmenu-button-closed": ""
6522
-				},
6523
-				first: {
6524
-					"ui-selectmenu-button-open": "ui-corner-" + ( direction ? "top" : "tl" ),
6525
-					"ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "top" : "left" )
6526
-				},
6527
-				last: {
6528
-					"ui-selectmenu-button-open": direction ? "" : "ui-corner-tr",
6529
-					"ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" )
6530
-				},
6531
-				only: {
6532
-					"ui-selectmenu-button-open": "ui-corner-top",
6533
-					"ui-selectmenu-button-closed": "ui-corner-all"
6534
-				}
6535
-
6536
-			}[ position ]
6537
-		};
6538
-	},
6539
-
6540
-	_resolveClassesValues: function( classes, instance ) {
6541
-		var result = {};
6542
-		$.each( classes, function( key ) {
6543
-			var current = instance.options.classes[ key ] || "";
6544
-			current = String.prototype.trim.call( current.replace( controlgroupCornerRegex, "" ) );
6545
-			result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
6546
-		} );
6547
-		return result;
6548
-	},
6549
-
6550
-	_setOption: function( key, value ) {
6551
-		if ( key === "direction" ) {
6552
-			this._removeClass( "ui-controlgroup-" + this.options.direction );
6553
-		}
6554
-
6555
-		this._super( key, value );
6556
-		if ( key === "disabled" ) {
6557
-			this._callChildMethod( value ? "disable" : "enable" );
6558
-			return;
6559
-		}
6560
-
6561
-		this.refresh();
6562
-	},
6563
-
6564
-	refresh: function() {
6565
-		var children,
6566
-			that = this;
6567
-
6568
-		this._addClass( "ui-controlgroup ui-controlgroup-" + this.options.direction );
6569
-
6570
-		if ( this.options.direction === "horizontal" ) {
6571
-			this._addClass( null, "ui-helper-clearfix" );
6572
-		}
6573
-		this._initWidgets();
6574
-
6575
-		children = this.childWidgets;
6576
-
6577
-		// We filter here because we need to track all childWidgets not just the visible ones
6578
-		if ( this.options.onlyVisible ) {
6579
-			children = children.filter( ":visible" );
6580
-		}
6581
-
6582
-		if ( children.length ) {
6583
-
6584
-			// We do this last because we need to make sure all enhancment is done
6585
-			// before determining first and last
6586
-			$.each( [ "first", "last" ], function( index, value ) {
6587
-				var instance = children[ value ]().data( "ui-controlgroup-data" );
6588
-
6589
-				if ( instance && that[ "_" + instance.widgetName + "Options" ] ) {
6590
-					var options = that[ "_" + instance.widgetName + "Options" ](
6591
-						children.length === 1 ? "only" : value
6592
-					);
6593
-					options.classes = that._resolveClassesValues( options.classes, instance );
6594
-					instance.element[ instance.widgetName ]( options );
6595
-				} else {
6596
-					that._updateCornerClass( children[ value ](), value );
6597
-				}
6598
-			} );
6599
-
6600
-			// Finally call the refresh method on each of the child widgets.
6601
-			this._callChildMethod( "refresh" );
6602
-		}
6603
-	}
6604
-} );
6605
-
6606
-/*!
6607
- * jQuery UI Checkboxradio 1.13.2
6608
- * http://jqueryui.com
6609
- *
6610
- * Copyright jQuery Foundation and other contributors
6611
- * Released under the MIT license.
6612
- * http://jquery.org/license
6613
- */
6614
-
6615
-//>>label: Checkboxradio
6616
-//>>group: Widgets
6617
-//>>description: Enhances a form with multiple themeable checkboxes or radio buttons.
6618
-//>>docs: http://api.jqueryui.com/checkboxradio/
6619
-//>>demos: http://jqueryui.com/checkboxradio/
6620
-//>>css.structure: ../../themes/base/core.css
6621
-//>>css.structure: ../../themes/base/button.css
6622
-//>>css.structure: ../../themes/base/checkboxradio.css
6623
-//>>css.theme: ../../themes/base/theme.css
6624
-
6625
-
6626
-$.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
6627
-	version: "1.13.2",
6628
-	options: {
6629
-		disabled: null,
6630
-		label: null,
6631
-		icon: true,
6632
-		classes: {
6633
-			"ui-checkboxradio-label": "ui-corner-all",
6634
-			"ui-checkboxradio-icon": "ui-corner-all"
6635
-		}
6636
-	},
6637
-
6638
-	_getCreateOptions: function() {
6639
-		var disabled, labels, labelContents;
6640
-		var options = this._super() || {};
6641
-
6642
-		// We read the type here, because it makes more sense to throw a element type error first,
6643
-		// rather then the error for lack of a label. Often if its the wrong type, it
6644
-		// won't have a label (e.g. calling on a div, btn, etc)
6645
-		this._readType();
6646
-
6647
-		labels = this.element.labels();
6648
-
6649
-		// If there are multiple labels, use the last one
6650
-		this.label = $( labels[ labels.length - 1 ] );
6651
-		if ( !this.label.length ) {
6652
-			$.error( "No label found for checkboxradio widget" );
6653
-		}
6654
-
6655
-		this.originalLabel = "";
6656
-
6657
-		// We need to get the label text but this may also need to make sure it does not contain the
6658
-		// input itself.
6659
-		// The label contents could be text, html, or a mix. We wrap all elements
6660
-		// and read the wrapper's `innerHTML` to get a string representation of
6661
-		// the label, without the input as part of it.
6662
-		labelContents = this.label.contents().not( this.element[ 0 ] );
6663
-
6664
-		if ( labelContents.length ) {
6665
-			this.originalLabel += labelContents
6666
-				.clone()
6667
-				.wrapAll( "<div></div>" )
6668
-				.parent()
6669
-				.html();
6670
-		}
6671
-
6672
-		// Set the label option if we found label text
6673
-		if ( this.originalLabel ) {
6674
-			options.label = this.originalLabel;
6675
-		}
6676
-
6677
-		disabled = this.element[ 0 ].disabled;
6678
-		if ( disabled != null ) {
6679
-			options.disabled = disabled;
6680
-		}
6681
-		return options;
6682
-	},
6683
-
6684
-	_create: function() {
6685
-		var checked = this.element[ 0 ].checked;
6686
-
6687
-		this._bindFormResetHandler();
6688
-
6689
-		if ( this.options.disabled == null ) {
6690
-			this.options.disabled = this.element[ 0 ].disabled;
6691
-		}
6692
-
6693
-		this._setOption( "disabled", this.options.disabled );
6694
-		this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" );
6695
-		this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" );
6696
-
6697
-		if ( this.type === "radio" ) {
6698
-			this._addClass( this.label, "ui-checkboxradio-radio-label" );
6699
-		}
6700
-
6701
-		if ( this.options.label && this.options.label !== this.originalLabel ) {
6702
-			this._updateLabel();
6703
-		} else if ( this.originalLabel ) {
6704
-			this.options.label = this.originalLabel;
6705
-		}
6706
-
6707
-		this._enhance();
6708
-
6709
-		if ( checked ) {
6710
-			this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
6711
-		}
6712
-
6713
-		this._on( {
6714
-			change: "_toggleClasses",
6715
-			focus: function() {
6716
-				this._addClass( this.label, null, "ui-state-focus ui-visual-focus" );
6717
-			},
6718
-			blur: function() {
6719
-				this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" );
6720
-			}
6721
-		} );
6722
-	},
6723
-
6724
-	_readType: function() {
6725
-		var nodeName = this.element[ 0 ].nodeName.toLowerCase();
6726
-		this.type = this.element[ 0 ].type;
6727
-		if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) {
6728
-			$.error( "Can't create checkboxradio on element.nodeName=" + nodeName +
6729
-				" and element.type=" + this.type );
6730
-		}
6731
-	},
6732
-
6733
-	// Support jQuery Mobile enhanced option
6734
-	_enhance: function() {
6735
-		this._updateIcon( this.element[ 0 ].checked );
6736
-	},
6737
-
6738
-	widget: function() {
6739
-		return this.label;
6740
-	},
6741
-
6742
-	_getRadioGroup: function() {
6743
-		var group;
6744
-		var name = this.element[ 0 ].name;
6745
-		var nameSelector = "input[name='" + $.escapeSelector( name ) + "']";
6746
-
6747
-		if ( !name ) {
6748
-			return $( [] );
6749
-		}
6750
-
6751
-		if ( this.form.length ) {
6752
-			group = $( this.form[ 0 ].elements ).filter( nameSelector );
6753
-		} else {
6754
-
6755
-			// Not inside a form, check all inputs that also are not inside a form
6756
-			group = $( nameSelector ).filter( function() {
6757
-				return $( this )._form().length === 0;
6758
-			} );
6759
-		}
6760
-
6761
-		return group.not( this.element );
6762
-	},
6763
-
6764
-	_toggleClasses: function() {
6765
-		var checked = this.element[ 0 ].checked;
6766
-		this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
6767
-
6768
-		if ( this.options.icon && this.type === "checkbox" ) {
6769
-			this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked )
6770
-				._toggleClass( this.icon, null, "ui-icon-blank", !checked );
6771
-		}
6772
-
6773
-		if ( this.type === "radio" ) {
6774
-			this._getRadioGroup()
6775
-				.each( function() {
6776
-					var instance = $( this ).checkboxradio( "instance" );
6777
-
6778
-					if ( instance ) {
6779
-						instance._removeClass( instance.label,
6780
-							"ui-checkboxradio-checked", "ui-state-active" );
6781
-					}
6782
-				} );
6783
-		}
6784
-	},
6785
-
6786
-	_destroy: function() {
6787
-		this._unbindFormResetHandler();
6788
-
6789
-		if ( this.icon ) {
6790
-			this.icon.remove();
6791
-			this.iconSpace.remove();
6792
-		}
6793
-	},
6794
-
6795
-	_setOption: function( key, value ) {
6796
-
6797
-		// We don't allow the value to be set to nothing
6798
-		if ( key === "label" && !value ) {
6799
-			return;
6800
-		}
6801
-
6802
-		this._super( key, value );
6803
-
6804
-		if ( key === "disabled" ) {
6805
-			this._toggleClass( this.label, null, "ui-state-disabled", value );
6806
-			this.element[ 0 ].disabled = value;
6807
-
6808
-			// Don't refresh when setting disabled
6809
-			return;
6810
-		}
6811
-		this.refresh();
6812
-	},
6813
-
6814
-	_updateIcon: function( checked ) {
6815
-		var toAdd = "ui-icon ui-icon-background ";
6816
-
6817
-		if ( this.options.icon ) {
6818
-			if ( !this.icon ) {
6819
-				this.icon = $( "<span>" );
6820
-				this.iconSpace = $( "<span> </span>" );
6821
-				this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" );
6822
-			}
6823
-
6824
-			if ( this.type === "checkbox" ) {
6825
-				toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank";
6826
-				this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" );
6827
-			} else {
6828
-				toAdd += "ui-icon-blank";
6829
-			}
6830
-			this._addClass( this.icon, "ui-checkboxradio-icon", toAdd );
6831
-			if ( !checked ) {
6832
-				this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" );
6833
-			}
6834
-			this.icon.prependTo( this.label ).after( this.iconSpace );
6835
-		} else if ( this.icon !== undefined ) {
6836
-			this.icon.remove();
6837
-			this.iconSpace.remove();
6838
-			delete this.icon;
6839
-		}
6840
-	},
6841
-
6842
-	_updateLabel: function() {
6843
-
6844
-		// Remove the contents of the label ( minus the icon, icon space, and input )
6845
-		var contents = this.label.contents().not( this.element[ 0 ] );
6846
-		if ( this.icon ) {
6847
-			contents = contents.not( this.icon[ 0 ] );
6848
-		}
6849
-		if ( this.iconSpace ) {
6850
-			contents = contents.not( this.iconSpace[ 0 ] );
6851
-		}
6852
-		contents.remove();
6853
-
6854
-		this.label.append( this.options.label );
6855
-	},
6856
-
6857
-	refresh: function() {
6858
-		var checked = this.element[ 0 ].checked,
6859
-			isDisabled = this.element[ 0 ].disabled;
6860
-
6861
-		this._updateIcon( checked );
6862
-		this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
6863
-		if ( this.options.label !== null ) {
6864
-			this._updateLabel();
6865
-		}
6866
-
6867
-		if ( isDisabled !== this.options.disabled ) {
6868
-			this._setOptions( { "disabled": isDisabled } );
6869
-		}
6870
-	}
6871
-
6872
-} ] );
6873
-
6874
-var widgetsCheckboxradio = $.ui.checkboxradio;
6875
-
6876
-
6877
-/*!
6878
- * jQuery UI Button 1.13.2
6879
- * http://jqueryui.com
6880
- *
6881
- * Copyright jQuery Foundation and other contributors
6882
- * Released under the MIT license.
6883
- * http://jquery.org/license
6884
- */
6885
-
6886
-//>>label: Button
6887
-//>>group: Widgets
6888
-//>>description: Enhances a form with themeable buttons.
6889
-//>>docs: http://api.jqueryui.com/button/
6890
-//>>demos: http://jqueryui.com/button/
6891
-//>>css.structure: ../../themes/base/core.css
6892
-//>>css.structure: ../../themes/base/button.css
6893
-//>>css.theme: ../../themes/base/theme.css
6894
-
6895
-
6896
-$.widget( "ui.button", {
6897
-	version: "1.13.2",
6898
-	defaultElement: "<button>",
6899
-	options: {
6900
-		classes: {
6901
-			"ui-button": "ui-corner-all"
6902
-		},
6903
-		disabled: null,
6904
-		icon: null,
6905
-		iconPosition: "beginning",
6906
-		label: null,
6907
-		showLabel: true
6908
-	},
6909
-
6910
-	_getCreateOptions: function() {
6911
-		var disabled,
6912
-
6913
-			// This is to support cases like in jQuery Mobile where the base widget does have
6914
-			// an implementation of _getCreateOptions
6915
-			options = this._super() || {};
6916
-
6917
-		this.isInput = this.element.is( "input" );
6918
-
6919
-		disabled = this.element[ 0 ].disabled;
6920
-		if ( disabled != null ) {
6921
-			options.disabled = disabled;
6922
-		}
6923
-
6924
-		this.originalLabel = this.isInput ? this.element.val() : this.element.html();
6925
-		if ( this.originalLabel ) {
6926
-			options.label = this.originalLabel;
6927
-		}
6928
-
6929
-		return options;
6930
-	},
6931
-
6932
-	_create: function() {
6933
-		if ( !this.option.showLabel & !this.options.icon ) {
6934
-			this.options.showLabel = true;
6935
-		}
6936
-
6937
-		// We have to check the option again here even though we did in _getCreateOptions,
6938
-		// because null may have been passed on init which would override what was set in
6939
-		// _getCreateOptions
6940
-		if ( this.options.disabled == null ) {
6941
-			this.options.disabled = this.element[ 0 ].disabled || false;
6942
-		}
6943
-
6944
-		this.hasTitle = !!this.element.attr( "title" );
6945
-
6946
-		// Check to see if the label needs to be set or if its already correct
6947
-		if ( this.options.label && this.options.label !== this.originalLabel ) {
6948
-			if ( this.isInput ) {
6949
-				this.element.val( this.options.label );
6950
-			} else {
6951
-				this.element.html( this.options.label );
6952
-			}
6953
-		}
6954
-		this._addClass( "ui-button", "ui-widget" );
6955
-		this._setOption( "disabled", this.options.disabled );
6956
-		this._enhance();
6957
-
6958
-		if ( this.element.is( "a" ) ) {
6959
-			this._on( {
6960
-				"keyup": function( event ) {
6961
-					if ( event.keyCode === $.ui.keyCode.SPACE ) {
6962
-						event.preventDefault();
6963
-
6964
-						// Support: PhantomJS <= 1.9, IE 8 Only
6965
-						// If a native click is available use it so we actually cause navigation
6966
-						// otherwise just trigger a click event
6967
-						if ( this.element[ 0 ].click ) {
6968
-							this.element[ 0 ].click();
6969
-						} else {
6970
-							this.element.trigger( "click" );
6971
-						}
6972
-					}
6973
-				}
6974
-			} );
6975
-		}
6976
-	},
6977
-
6978
-	_enhance: function() {
6979
-		if ( !this.element.is( "button" ) ) {
6980
-			this.element.attr( "role", "button" );
6981
-		}
6982
-
6983
-		if ( this.options.icon ) {
6984
-			this._updateIcon( "icon", this.options.icon );
6985
-			this._updateTooltip();
6986
-		}
6987
-	},
6988
-
6989
-	_updateTooltip: function() {
6990
-		this.title = this.element.attr( "title" );
6991
-
6992
-		if ( !this.options.showLabel && !this.title ) {
6993
-			this.element.attr( "title", this.options.label );
6994
-		}
6995
-	},
6996
-
6997
-	_updateIcon: function( option, value ) {
6998
-		var icon = option !== "iconPosition",
6999
-			position = icon ? this.options.iconPosition : value,
7000
-			displayBlock = position === "top" || position === "bottom";
7001
-
7002
-		// Create icon
7003
-		if ( !this.icon ) {
7004
-			this.icon = $( "<span>" );
7005
-
7006
-			this._addClass( this.icon, "ui-button-icon", "ui-icon" );
7007
-
7008
-			if ( !this.options.showLabel ) {
7009
-				this._addClass( "ui-button-icon-only" );
7010
-			}
7011
-		} else if ( icon ) {
7012
-
7013
-			// If we are updating the icon remove the old icon class
7014
-			this._removeClass( this.icon, null, this.options.icon );
7015
-		}
7016
-
7017
-		// If we are updating the icon add the new icon class
7018
-		if ( icon ) {
7019
-			this._addClass( this.icon, null, value );
7020
-		}
7021
-
7022
-		this._attachIcon( position );
7023
-
7024
-		// If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove
7025
-		// the iconSpace if there is one.
7026
-		if ( displayBlock ) {
7027
-			this._addClass( this.icon, null, "ui-widget-icon-block" );
7028
-			if ( this.iconSpace ) {
7029
-				this.iconSpace.remove();
7030
-			}
7031
-		} else {
7032
-
7033
-			// Position is beginning or end so remove the ui-widget-icon-block class and add the
7034
-			// space if it does not exist
7035
-			if ( !this.iconSpace ) {
7036
-				this.iconSpace = $( "<span> </span>" );
7037
-				this._addClass( this.iconSpace, "ui-button-icon-space" );
7038
-			}
7039
-			this._removeClass( this.icon, null, "ui-wiget-icon-block" );
7040
-			this._attachIconSpace( position );
7041
-		}
7042
-	},
7043
-
7044
-	_destroy: function() {
7045
-		this.element.removeAttr( "role" );
7046
-
7047
-		if ( this.icon ) {
7048
-			this.icon.remove();
7049
-		}
7050
-		if ( this.iconSpace ) {
7051
-			this.iconSpace.remove();
7052
-		}
7053
-		if ( !this.hasTitle ) {
7054
-			this.element.removeAttr( "title" );
7055
-		}
7056
-	},
7057
-
7058
-	_attachIconSpace: function( iconPosition ) {
7059
-		this.icon[ /^(?:end|bottom)/.test( iconPosition ) ? "before" : "after" ]( this.iconSpace );
7060
-	},
7061
-
7062
-	_attachIcon: function( iconPosition ) {
7063
-		this.element[ /^(?:end|bottom)/.test( iconPosition ) ? "append" : "prepend" ]( this.icon );
7064
-	},
7065
-
7066
-	_setOptions: function( options ) {
7067
-		var newShowLabel = options.showLabel === undefined ?
7068
-				this.options.showLabel :
7069
-				options.showLabel,
7070
-			newIcon = options.icon === undefined ? this.options.icon : options.icon;
7071
-
7072
-		if ( !newShowLabel && !newIcon ) {
7073
-			options.showLabel = true;
7074
-		}
7075
-		this._super( options );
7076
-	},
7077
-
7078
-	_setOption: function( key, value ) {
7079
-		if ( key === "icon" ) {
7080
-			if ( value ) {
7081
-				this._updateIcon( key, value );
7082
-			} else if ( this.icon ) {
7083
-				this.icon.remove();
7084
-				if ( this.iconSpace ) {
7085
-					this.iconSpace.remove();
7086
-				}
7087
-			}
7088
-		}
7089
-
7090
-		if ( key === "iconPosition" ) {
7091
-			this._updateIcon( key, value );
7092
-		}
7093
-
7094
-		// Make sure we can't end up with a button that has neither text nor icon
7095
-		if ( key === "showLabel" ) {
7096
-				this._toggleClass( "ui-button-icon-only", null, !value );
7097
-				this._updateTooltip();
7098
-		}
7099
-
7100
-		if ( key === "label" ) {
7101
-			if ( this.isInput ) {
7102
-				this.element.val( value );
7103
-			} else {
7104
-
7105
-				// If there is an icon, append it, else nothing then append the value
7106
-				// this avoids removal of the icon when setting label text
7107
-				this.element.html( value );
7108
-				if ( this.icon ) {
7109
-					this._attachIcon( this.options.iconPosition );
7110
-					this._attachIconSpace( this.options.iconPosition );
7111
-				}
7112
-			}
7113
-		}
7114
-
7115
-		this._super( key, value );
7116
-
7117
-		if ( key === "disabled" ) {
7118
-			this._toggleClass( null, "ui-state-disabled", value );
7119
-			this.element[ 0 ].disabled = value;
7120
-			if ( value ) {
7121
-				this.element.trigger( "blur" );
7122
-			}
7123
-		}
7124
-	},
7125
-
7126
-	refresh: function() {
7127
-
7128
-		// Make sure to only check disabled if its an element that supports this otherwise
7129
-		// check for the disabled class to determine state
7130
-		var isDisabled = this.element.is( "input, button" ) ?
7131
-			this.element[ 0 ].disabled : this.element.hasClass( "ui-button-disabled" );
7132
-
7133
-		if ( isDisabled !== this.options.disabled ) {
7134
-			this._setOptions( { disabled: isDisabled } );
7135
-		}
7136
-
7137
-		this._updateTooltip();
7138
-	}
7139
-} );
7140
-
7141
-// DEPRECATED
7142
-if ( $.uiBackCompat !== false ) {
7143
-
7144
-	// Text and Icons options
7145
-	$.widget( "ui.button", $.ui.button, {
7146
-		options: {
7147
-			text: true,
7148
-			icons: {
7149
-				primary: null,
7150
-				secondary: null
7151
-			}
7152
-		},
7153
-
7154
-		_create: function() {
7155
-			if ( this.options.showLabel && !this.options.text ) {
7156
-				this.options.showLabel = this.options.text;
7157
-			}
7158
-			if ( !this.options.showLabel && this.options.text ) {
7159
-				this.options.text = this.options.showLabel;
7160
-			}
7161
-			if ( !this.options.icon && ( this.options.icons.primary ||
7162
-					this.options.icons.secondary ) ) {
7163
-				if ( this.options.icons.primary ) {
7164
-					this.options.icon = this.options.icons.primary;
7165
-				} else {
7166
-					this.options.icon = this.options.icons.secondary;
7167
-					this.options.iconPosition = "end";
7168
-				}
7169
-			} else if ( this.options.icon ) {
7170
-				this.options.icons.primary = this.options.icon;
7171
-			}
7172
-			this._super();
7173
-		},
7174
-
7175
-		_setOption: function( key, value ) {
7176
-			if ( key === "text" ) {
7177
-				this._super( "showLabel", value );
7178
-				return;
7179
-			}
7180
-			if ( key === "showLabel" ) {
7181
-				this.options.text = value;
7182
-			}
7183
-			if ( key === "icon" ) {
7184
-				this.options.icons.primary = value;
7185
-			}
7186
-			if ( key === "icons" ) {
7187
-				if ( value.primary ) {
7188
-					this._super( "icon", value.primary );
7189
-					this._super( "iconPosition", "beginning" );
7190
-				} else if ( value.secondary ) {
7191
-					this._super( "icon", value.secondary );
7192
-					this._super( "iconPosition", "end" );
7193
-				}
7194
-			}
7195
-			this._superApply( arguments );
7196
-		}
7197
-	} );
7198
-
7199
-	$.fn.button = ( function( orig ) {
7200
-		return function( options ) {
7201
-			var isMethodCall = typeof options === "string";
7202
-			var args = Array.prototype.slice.call( arguments, 1 );
7203
-			var returnValue = this;
7204
-
7205
-			if ( isMethodCall ) {
7206
-
7207
-				// If this is an empty collection, we need to have the instance method
7208
-				// return undefined instead of the jQuery instance
7209
-				if ( !this.length && options === "instance" ) {
7210
-					returnValue = undefined;
7211
-				} else {
7212
-					this.each( function() {
7213
-						var methodValue;
7214
-						var type = $( this ).attr( "type" );
7215
-						var name = type !== "checkbox" && type !== "radio" ?
7216
-							"button" :
7217
-							"checkboxradio";
7218
-						var instance = $.data( this, "ui-" + name );
7219
-
7220
-						if ( options === "instance" ) {
7221
-							returnValue = instance;
7222
-							return false;
7223
-						}
7224
-
7225
-						if ( !instance ) {
7226
-							return $.error( "cannot call methods on button" +
7227
-								" prior to initialization; " +
7228
-								"attempted to call method '" + options + "'" );
7229
-						}
7230
-
7231
-						if ( typeof instance[ options ] !== "function" ||
7232
-							options.charAt( 0 ) === "_" ) {
7233
-							return $.error( "no such method '" + options + "' for button" +
7234
-								" widget instance" );
7235
-						}
7236
-
7237
-						methodValue = instance[ options ].apply( instance, args );
7238
-
7239
-						if ( methodValue !== instance && methodValue !== undefined ) {
7240
-							returnValue = methodValue && methodValue.jquery ?
7241
-								returnValue.pushStack( methodValue.get() ) :
7242
-								methodValue;
7243
-							return false;
7244
-						}
7245
-					} );
7246
-				}
7247
-			} else {
7248
-
7249
-				// Allow multiple hashes to be passed on init
7250
-				if ( args.length ) {
7251
-					options = $.widget.extend.apply( null, [ options ].concat( args ) );
7252
-				}
7253
-
7254
-				this.each( function() {
7255
-					var type = $( this ).attr( "type" );
7256
-					var name = type !== "checkbox" && type !== "radio" ? "button" : "checkboxradio";
7257
-					var instance = $.data( this, "ui-" + name );
7258
-
7259
-					if ( instance ) {
7260
-						instance.option( options || {} );
7261
-						if ( instance._init ) {
7262
-							instance._init();
7263
-						}
7264
-					} else {
7265
-						if ( name === "button" ) {
7266
-							orig.call( $( this ), options );
7267
-							return;
7268
-						}
7269
-
7270
-						$( this ).checkboxradio( $.extend( { icon: false }, options ) );
7271
-					}
7272
-				} );
7273
-			}
7274
-
7275
-			return returnValue;
7276
-		};
7277
-	} )( $.fn.button );
7278
-
7279
-	$.fn.buttonset = function() {
7280
-		if ( !$.ui.controlgroup ) {
7281
-			$.error( "Controlgroup widget missing" );
7282
-		}
7283
-		if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" && arguments[ 2 ] ) {
7284
-			return this.controlgroup.apply( this,
7285
-				[ arguments[ 0 ], "items.button", arguments[ 2 ] ] );
7286
-		}
7287
-		if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" ) {
7288
-			return this.controlgroup.apply( this, [ arguments[ 0 ], "items.button" ] );
7289
-		}
7290
-		if ( typeof arguments[ 0 ] === "object" && arguments[ 0 ].items ) {
7291
-			arguments[ 0 ].items = {
7292
-				button: arguments[ 0 ].items
7293
-			};
7294
-		}
7295
-		return this.controlgroup.apply( this, arguments );
7296
-	};
7297
-}
7298
-
7299
-var widgetsButton = $.ui.button;
7300
-
7301
-
7302
-/* eslint-disable max-len, camelcase */
7303
-/*!
7304
- * jQuery UI Datepicker 1.13.2
7305
- * http://jqueryui.com
7306
- *
7307
- * Copyright jQuery Foundation and other contributors
7308
- * Released under the MIT license.
7309
- * http://jquery.org/license
7310
- */
7311
-
7312
-//>>label: Datepicker
7313
-//>>group: Widgets
7314
-//>>description: Displays a calendar from an input or inline for selecting dates.
7315
-//>>docs: http://api.jqueryui.com/datepicker/
7316
-//>>demos: http://jqueryui.com/datepicker/
7317
-//>>css.structure: ../../themes/base/core.css
7318
-//>>css.structure: ../../themes/base/datepicker.css
7319
-//>>css.theme: ../../themes/base/theme.css
7320
-
7321
-
7322
-$.extend( $.ui, { datepicker: { version: "1.13.2" } } );
7323
-
7324
-var datepicker_instActive;
7325
-
7326
-function datepicker_getZindex( elem ) {
7327
-	var position, value;
7328
-	while ( elem.length && elem[ 0 ] !== document ) {
7329
-
7330
-		// Ignore z-index if position is set to a value where z-index is ignored by the browser
7331
-		// This makes behavior of this function consistent across browsers
7332
-		// WebKit always returns auto if the element is positioned
7333
-		position = elem.css( "position" );
7334
-		if ( position === "absolute" || position === "relative" || position === "fixed" ) {
7335
-
7336
-			// IE returns 0 when zIndex is not specified
7337
-			// other browsers return a string
7338
-			// we ignore the case of nested elements with an explicit value of 0
7339
-			// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
7340
-			value = parseInt( elem.css( "zIndex" ), 10 );
7341
-			if ( !isNaN( value ) && value !== 0 ) {
7342
-				return value;
7343
-			}
7344
-		}
7345
-		elem = elem.parent();
7346
-	}
7347
-
7348
-	return 0;
7349
-}
7350
-
7351
-/* Date picker manager.
7352
-   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
7353
-   Settings for (groups of) date pickers are maintained in an instance object,
7354
-   allowing multiple different settings on the same page. */
7355
-
7356
-function Datepicker() {
7357
-	this._curInst = null; // The current instance in use
7358
-	this._keyEvent = false; // If the last event was a key event
7359
-	this._disabledInputs = []; // List of date picker inputs that have been disabled
7360
-	this._datepickerShowing = false; // True if the popup picker is showing , false if not
7361
-	this._inDialog = false; // True if showing within a "dialog", false if not
7362
-	this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
7363
-	this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
7364
-	this._appendClass = "ui-datepicker-append"; // The name of the append marker class
7365
-	this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
7366
-	this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
7367
-	this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
7368
-	this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
7369
-	this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
7370
-	this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
7371
-	this.regional = []; // Available regional settings, indexed by language code
7372
-	this.regional[ "" ] = { // Default regional settings
7373
-		closeText: "Done", // Display text for close link
7374
-		prevText: "Prev", // Display text for previous month link
7375
-		nextText: "Next", // Display text for next month link
7376
-		currentText: "Today", // Display text for current month link
7377
-		monthNames: [ "January", "February", "March", "April", "May", "June",
7378
-			"July", "August", "September", "October", "November", "December" ], // Names of months for drop-down and formatting
7379
-		monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting
7380
-		dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting
7381
-		dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting
7382
-		dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ], // Column headings for days starting at Sunday
7383
-		weekHeader: "Wk", // Column header for week of the year
7384
-		dateFormat: "mm/dd/yy", // See format options on parseDate
7385
-		firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
7386
-		isRTL: false, // True if right-to-left language, false if left-to-right
7387
-		showMonthAfterYear: false, // True if the year select precedes month, false for month then year
7388
-		yearSuffix: "", // Additional text to append to the year in the month headers,
7389
-		selectMonthLabel: "Select month", // Invisible label for month selector
7390
-		selectYearLabel: "Select year" // Invisible label for year selector
7391
-	};
7392
-	this._defaults = { // Global defaults for all the date picker instances
7393
-		showOn: "focus", // "focus" for popup on focus,
7394
-			// "button" for trigger button, or "both" for either
7395
-		showAnim: "fadeIn", // Name of jQuery animation for popup
7396
-		showOptions: {}, // Options for enhanced animations
7397
-		defaultDate: null, // Used when field is blank: actual date,
7398
-			// +/-number for offset from today, null for today
7399
-		appendText: "", // Display text following the input box, e.g. showing the format
7400
-		buttonText: "...", // Text for trigger button
7401
-		buttonImage: "", // URL for trigger button image
7402
-		buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
7403
-		hideIfNoPrevNext: false, // True to hide next/previous month links
7404
-			// if not applicable, false to just disable them
7405
-		navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
7406
-		gotoCurrent: false, // True if today link goes back to current selection instead
7407
-		changeMonth: false, // True if month can be selected directly, false if only prev/next
7408
-		changeYear: false, // True if year can be selected directly, false if only prev/next
7409
-		yearRange: "c-10:c+10", // Range of years to display in drop-down,
7410
-			// either relative to today's year (-nn:+nn), relative to currently displayed year
7411
-			// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
7412
-		showOtherMonths: false, // True to show dates in other months, false to leave blank
7413
-		selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
7414
-		showWeek: false, // True to show week of the year, false to not show it
7415
-		calculateWeek: this.iso8601Week, // How to calculate the week of the year,
7416
-			// takes a Date and returns the number of the week for it
7417
-		shortYearCutoff: "+10", // Short year values < this are in the current century,
7418
-			// > this are in the previous century,
7419
-			// string value starting with "+" for current year + value
7420
-		minDate: null, // The earliest selectable date, or null for no limit
7421
-		maxDate: null, // The latest selectable date, or null for no limit
7422
-		duration: "fast", // Duration of display/closure
7423
-		beforeShowDay: null, // Function that takes a date and returns an array with
7424
-			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
7425
-			// [2] = cell title (optional), e.g. $.datepicker.noWeekends
7426
-		beforeShow: null, // Function that takes an input field and
7427
-			// returns a set of custom settings for the date picker
7428
-		onSelect: null, // Define a callback function when a date is selected
7429
-		onChangeMonthYear: null, // Define a callback function when the month or year is changed
7430
-		onClose: null, // Define a callback function when the datepicker is closed
7431
-		onUpdateDatepicker: null, // Define a callback function when the datepicker is updated
7432
-		numberOfMonths: 1, // Number of months to show at a time
7433
-		showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
7434
-		stepMonths: 1, // Number of months to step back/forward
7435
-		stepBigMonths: 12, // Number of months to step back/forward for the big links
7436
-		altField: "", // Selector for an alternate field to store selected dates into
7437
-		altFormat: "", // The date format to use for the alternate field
7438
-		constrainInput: true, // The input is constrained by the current date format
7439
-		showButtonPanel: false, // True to show button panel, false to not show it
7440
-		autoSize: false, // True to size the input for the date format, false to leave as is
7441
-		disabled: false // The initial disabled state
7442
-	};
7443
-	$.extend( this._defaults, this.regional[ "" ] );
7444
-	this.regional.en = $.extend( true, {}, this.regional[ "" ] );
7445
-	this.regional[ "en-US" ] = $.extend( true, {}, this.regional.en );
7446
-	this.dpDiv = datepicker_bindHover( $( "<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) );
7447
-}
7448
-
7449
-$.extend( Datepicker.prototype, {
7450
-
7451
-	/* Class name added to elements to indicate already configured with a date picker. */
7452
-	markerClassName: "hasDatepicker",
7453
-
7454
-	//Keep track of the maximum number of rows displayed (see #7043)
7455
-	maxRows: 4,
7456
-
7457
-	// TODO rename to "widget" when switching to widget factory
7458
-	_widgetDatepicker: function() {
7459
-		return this.dpDiv;
7460
-	},
7461
-
7462
-	/* Override the default settings for all instances of the date picker.
7463
-	 * @param  settings  object - the new settings to use as defaults (anonymous object)
7464
-	 * @return the manager object
7465
-	 */
7466
-	setDefaults: function( settings ) {
7467
-		datepicker_extendRemove( this._defaults, settings || {} );
7468
-		return this;
7469
-	},
7470
-
7471
-	/* Attach the date picker to a jQuery selection.
7472
-	 * @param  target	element - the target input field or division or span
7473
-	 * @param  settings  object - the new settings to use for this date picker instance (anonymous)
7474
-	 */
7475
-	_attachDatepicker: function( target, settings ) {
7476
-		var nodeName, inline, inst;
7477
-		nodeName = target.nodeName.toLowerCase();
7478
-		inline = ( nodeName === "div" || nodeName === "span" );
7479
-		if ( !target.id ) {
7480
-			this.uuid += 1;
7481
-			target.id = "dp" + this.uuid;
7482
-		}
7483
-		inst = this._newInst( $( target ), inline );
7484
-		inst.settings = $.extend( {}, settings || {} );
7485
-		if ( nodeName === "input" ) {
7486
-			this._connectDatepicker( target, inst );
7487
-		} else if ( inline ) {
7488
-			this._inlineDatepicker( target, inst );
7489
-		}
7490
-	},
7491
-
7492
-	/* Create a new instance object. */
7493
-	_newInst: function( target, inline ) {
7494
-		var id = target[ 0 ].id.replace( /([^A-Za-z0-9_\-])/g, "\\\\$1" ); // escape jQuery meta chars
7495
-		return { id: id, input: target, // associated target
7496
-			selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
7497
-			drawMonth: 0, drawYear: 0, // month being drawn
7498
-			inline: inline, // is datepicker inline or not
7499
-			dpDiv: ( !inline ? this.dpDiv : // presentation div
7500
-			datepicker_bindHover( $( "<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) ) ) };
7501
-	},
7502
-
7503
-	/* Attach the date picker to an input field. */
7504
-	_connectDatepicker: function( target, inst ) {
7505
-		var input = $( target );
7506
-		inst.append = $( [] );
7507
-		inst.trigger = $( [] );
7508
-		if ( input.hasClass( this.markerClassName ) ) {
7509
-			return;
7510
-		}
7511
-		this._attachments( input, inst );
7512
-		input.addClass( this.markerClassName ).on( "keydown", this._doKeyDown ).
7513
-			on( "keypress", this._doKeyPress ).on( "keyup", this._doKeyUp );
7514
-		this._autoSize( inst );
7515
-		$.data( target, "datepicker", inst );
7516
-
7517
-		//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
7518
-		if ( inst.settings.disabled ) {
7519
-			this._disableDatepicker( target );
7520
-		}
7521
-	},
7522
-
7523
-	/* Make attachments based on settings. */
7524
-	_attachments: function( input, inst ) {
7525
-		var showOn, buttonText, buttonImage,
7526
-			appendText = this._get( inst, "appendText" ),
7527
-			isRTL = this._get( inst, "isRTL" );
7528
-
7529
-		if ( inst.append ) {
7530
-			inst.append.remove();
7531
-		}
7532
-		if ( appendText ) {
7533
-			inst.append = $( "<span>" )
7534
-				.addClass( this._appendClass )
7535
-				.text( appendText );
7536
-			input[ isRTL ? "before" : "after" ]( inst.append );
7537
-		}
7538
-
7539
-		input.off( "focus", this._showDatepicker );
7540
-
7541
-		if ( inst.trigger ) {
7542
-			inst.trigger.remove();
7543
-		}
7544
-
7545
-		showOn = this._get( inst, "showOn" );
7546
-		if ( showOn === "focus" || showOn === "both" ) { // pop-up date picker when in the marked field
7547
-			input.on( "focus", this._showDatepicker );
7548
-		}
7549
-		if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked
7550
-			buttonText = this._get( inst, "buttonText" );
7551
-			buttonImage = this._get( inst, "buttonImage" );
7552
-
7553
-			if ( this._get( inst, "buttonImageOnly" ) ) {
7554
-				inst.trigger = $( "<img>" )
7555
-					.addClass( this._triggerClass )
7556
-					.attr( {
7557
-						src: buttonImage,
7558
-						alt: buttonText,
7559
-						title: buttonText
7560
-					} );
7561
-			} else {
7562
-				inst.trigger = $( "<button type='button'>" )
7563
-					.addClass( this._triggerClass );
7564
-				if ( buttonImage ) {
7565
-					inst.trigger.html(
7566
-						$( "<img>" )
7567
-							.attr( {
7568
-								src: buttonImage,
7569
-								alt: buttonText,
7570
-								title: buttonText
7571
-							} )
7572
-					);
7573
-				} else {
7574
-					inst.trigger.text( buttonText );
7575
-				}
7576
-			}
7577
-
7578
-			input[ isRTL ? "before" : "after" ]( inst.trigger );
7579
-			inst.trigger.on( "click", function() {
7580
-				if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {
7581
-					$.datepicker._hideDatepicker();
7582
-				} else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) {
7583
-					$.datepicker._hideDatepicker();
7584
-					$.datepicker._showDatepicker( input[ 0 ] );
7585
-				} else {
7586
-					$.datepicker._showDatepicker( input[ 0 ] );
7587
-				}
7588
-				return false;
7589
-			} );
7590
-		}
7591
-	},
7592
-
7593
-	/* Apply the maximum length for the date format. */
7594
-	_autoSize: function( inst ) {
7595
-		if ( this._get( inst, "autoSize" ) && !inst.inline ) {
7596
-			var findMax, max, maxI, i,
7597
-				date = new Date( 2009, 12 - 1, 20 ), // Ensure double digits
7598
-				dateFormat = this._get( inst, "dateFormat" );
7599
-
7600
-			if ( dateFormat.match( /[DM]/ ) ) {
7601
-				findMax = function( names ) {
7602
-					max = 0;
7603
-					maxI = 0;
7604
-					for ( i = 0; i < names.length; i++ ) {
7605
-						if ( names[ i ].length > max ) {
7606
-							max = names[ i ].length;
7607
-							maxI = i;
7608
-						}
7609
-					}
7610
-					return maxI;
7611
-				};
7612
-				date.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ?
7613
-					"monthNames" : "monthNamesShort" ) ) ) );
7614
-				date.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ?
7615
-					"dayNames" : "dayNamesShort" ) ) ) + 20 - date.getDay() );
7616
-			}
7617
-			inst.input.attr( "size", this._formatDate( inst, date ).length );
7618
-		}
7619
-	},
7620
-
7621
-	/* Attach an inline date picker to a div. */
7622
-	_inlineDatepicker: function( target, inst ) {
7623
-		var divSpan = $( target );
7624
-		if ( divSpan.hasClass( this.markerClassName ) ) {
7625
-			return;
7626
-		}
7627
-		divSpan.addClass( this.markerClassName ).append( inst.dpDiv );
7628
-		$.data( target, "datepicker", inst );
7629
-		this._setDate( inst, this._getDefaultDate( inst ), true );
7630
-		this._updateDatepicker( inst );
7631
-		this._updateAlternate( inst );
7632
-
7633
-		//If disabled option is true, disable the datepicker before showing it (see ticket #5665)
7634
-		if ( inst.settings.disabled ) {
7635
-			this._disableDatepicker( target );
7636
-		}
7637
-
7638
-		// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
7639
-		// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
7640
-		inst.dpDiv.css( "display", "block" );
7641
-	},
7642
-
7643
-	/* Pop-up the date picker in a "dialog" box.
7644
-	 * @param  input element - ignored
7645
-	 * @param  date	string or Date - the initial date to display
7646
-	 * @param  onSelect  function - the function to call when a date is selected
7647
-	 * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
7648
-	 * @param  pos int[2] - coordinates for the dialog's position within the screen or
7649
-	 *					event - with x/y coordinates or
7650
-	 *					leave empty for default (screen centre)
7651
-	 * @return the manager object
7652
-	 */
7653
-	_dialogDatepicker: function( input, date, onSelect, settings, pos ) {
7654
-		var id, browserWidth, browserHeight, scrollX, scrollY,
7655
-			inst = this._dialogInst; // internal instance
7656
-
7657
-		if ( !inst ) {
7658
-			this.uuid += 1;
7659
-			id = "dp" + this.uuid;
7660
-			this._dialogInput = $( "<input type='text' id='" + id +
7661
-				"' style='position: absolute; top: -100px; width: 0px;'/>" );
7662
-			this._dialogInput.on( "keydown", this._doKeyDown );
7663
-			$( "body" ).append( this._dialogInput );
7664
-			inst = this._dialogInst = this._newInst( this._dialogInput, false );
7665
-			inst.settings = {};
7666
-			$.data( this._dialogInput[ 0 ], "datepicker", inst );
7667
-		}
7668
-		datepicker_extendRemove( inst.settings, settings || {} );
7669
-		date = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date );
7670
-		this._dialogInput.val( date );
7671
-
7672
-		this._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null );
7673
-		if ( !this._pos ) {
7674
-			browserWidth = document.documentElement.clientWidth;
7675
-			browserHeight = document.documentElement.clientHeight;
7676
-			scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
7677
-			scrollY = document.documentElement.scrollTop || document.body.scrollTop;
7678
-			this._pos = // should use actual width/height below
7679
-				[ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ];
7680
-		}
7681
-
7682
-		// Move input on screen for focus, but hidden behind dialog
7683
-		this._dialogInput.css( "left", ( this._pos[ 0 ] + 20 ) + "px" ).css( "top", this._pos[ 1 ] + "px" );
7684
-		inst.settings.onSelect = onSelect;
7685
-		this._inDialog = true;
7686
-		this.dpDiv.addClass( this._dialogClass );
7687
-		this._showDatepicker( this._dialogInput[ 0 ] );
7688
-		if ( $.blockUI ) {
7689
-			$.blockUI( this.dpDiv );
7690
-		}
7691
-		$.data( this._dialogInput[ 0 ], "datepicker", inst );
7692
-		return this;
7693
-	},
7694
-
7695
-	/* Detach a datepicker from its control.
7696
-	 * @param  target	element - the target input field or division or span
7697
-	 */
7698
-	_destroyDatepicker: function( target ) {
7699
-		var nodeName,
7700
-			$target = $( target ),
7701
-			inst = $.data( target, "datepicker" );
7702
-
7703
-		if ( !$target.hasClass( this.markerClassName ) ) {
7704
-			return;
7705
-		}
7706
-
7707
-		nodeName = target.nodeName.toLowerCase();
7708
-		$.removeData( target, "datepicker" );
7709
-		if ( nodeName === "input" ) {
7710
-			inst.append.remove();
7711
-			inst.trigger.remove();
7712
-			$target.removeClass( this.markerClassName ).
7713
-				off( "focus", this._showDatepicker ).
7714
-				off( "keydown", this._doKeyDown ).
7715
-				off( "keypress", this._doKeyPress ).
7716
-				off( "keyup", this._doKeyUp );
7717
-		} else if ( nodeName === "div" || nodeName === "span" ) {
7718
-			$target.removeClass( this.markerClassName ).empty();
7719
-		}
7720
-
7721
-		if ( datepicker_instActive === inst ) {
7722
-			datepicker_instActive = null;
7723
-			this._curInst = null;
7724
-		}
7725
-	},
7726
-
7727
-	/* Enable the date picker to a jQuery selection.
7728
-	 * @param  target	element - the target input field or division or span
7729
-	 */
7730
-	_enableDatepicker: function( target ) {
7731
-		var nodeName, inline,
7732
-			$target = $( target ),
7733
-			inst = $.data( target, "datepicker" );
7734
-
7735
-		if ( !$target.hasClass( this.markerClassName ) ) {
7736
-			return;
7737
-		}
7738
-
7739
-		nodeName = target.nodeName.toLowerCase();
7740
-		if ( nodeName === "input" ) {
7741
-			target.disabled = false;
7742
-			inst.trigger.filter( "button" ).
7743
-				each( function() {
7744
-					this.disabled = false;
7745
-				} ).end().
7746
-				filter( "img" ).css( { opacity: "1.0", cursor: "" } );
7747
-		} else if ( nodeName === "div" || nodeName === "span" ) {
7748
-			inline = $target.children( "." + this._inlineClass );
7749
-			inline.children().removeClass( "ui-state-disabled" );
7750
-			inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
7751
-				prop( "disabled", false );
7752
-		}
7753
-		this._disabledInputs = $.map( this._disabledInputs,
7754
-
7755
-			// Delete entry
7756
-			function( value ) {
7757
-				return ( value === target ? null : value );
7758
-			} );
7759
-	},
7760
-
7761
-	/* Disable the date picker to a jQuery selection.
7762
-	 * @param  target	element - the target input field or division or span
7763
-	 */
7764
-	_disableDatepicker: function( target ) {
7765
-		var nodeName, inline,
7766
-			$target = $( target ),
7767
-			inst = $.data( target, "datepicker" );
7768
-
7769
-		if ( !$target.hasClass( this.markerClassName ) ) {
7770
-			return;
7771
-		}
7772
-
7773
-		nodeName = target.nodeName.toLowerCase();
7774
-		if ( nodeName === "input" ) {
7775
-			target.disabled = true;
7776
-			inst.trigger.filter( "button" ).
7777
-				each( function() {
7778
-					this.disabled = true;
7779
-				} ).end().
7780
-				filter( "img" ).css( { opacity: "0.5", cursor: "default" } );
7781
-		} else if ( nodeName === "div" || nodeName === "span" ) {
7782
-			inline = $target.children( "." + this._inlineClass );
7783
-			inline.children().addClass( "ui-state-disabled" );
7784
-			inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
7785
-				prop( "disabled", true );
7786
-		}
7787
-		this._disabledInputs = $.map( this._disabledInputs,
7788
-
7789
-			// Delete entry
7790
-			function( value ) {
7791
-				return ( value === target ? null : value );
7792
-			} );
7793
-		this._disabledInputs[ this._disabledInputs.length ] = target;
7794
-	},
7795
-
7796
-	/* Is the first field in a jQuery collection disabled as a datepicker?
7797
-	 * @param  target	element - the target input field or division or span
7798
-	 * @return boolean - true if disabled, false if enabled
7799
-	 */
7800
-	_isDisabledDatepicker: function( target ) {
7801
-		if ( !target ) {
7802
-			return false;
7803
-		}
7804
-		for ( var i = 0; i < this._disabledInputs.length; i++ ) {
7805
-			if ( this._disabledInputs[ i ] === target ) {
7806
-				return true;
7807
-			}
7808
-		}
7809
-		return false;
7810
-	},
7811
-
7812
-	/* Retrieve the instance data for the target control.
7813
-	 * @param  target  element - the target input field or division or span
7814
-	 * @return  object - the associated instance data
7815
-	 * @throws  error if a jQuery problem getting data
7816
-	 */
7817
-	_getInst: function( target ) {
7818
-		try {
7819
-			return $.data( target, "datepicker" );
7820
-		} catch ( err ) {
7821
-			throw "Missing instance data for this datepicker";
7822
-		}
7823
-	},
7824
-
7825
-	/* Update or retrieve the settings for a date picker attached to an input field or division.
7826
-	 * @param  target  element - the target input field or division or span
7827
-	 * @param  name	object - the new settings to update or
7828
-	 *				string - the name of the setting to change or retrieve,
7829
-	 *				when retrieving also "all" for all instance settings or
7830
-	 *				"defaults" for all global defaults
7831
-	 * @param  value   any - the new value for the setting
7832
-	 *				(omit if above is an object or to retrieve a value)
7833
-	 */
7834
-	_optionDatepicker: function( target, name, value ) {
7835
-		var settings, date, minDate, maxDate,
7836
-			inst = this._getInst( target );
7837
-
7838
-		if ( arguments.length === 2 && typeof name === "string" ) {
7839
-			return ( name === "defaults" ? $.extend( {}, $.datepicker._defaults ) :
7840
-				( inst ? ( name === "all" ? $.extend( {}, inst.settings ) :
7841
-				this._get( inst, name ) ) : null ) );
7842
-		}
7843
-
7844
-		settings = name || {};
7845
-		if ( typeof name === "string" ) {
7846
-			settings = {};
7847
-			settings[ name ] = value;
7848
-		}
7849
-
7850
-		if ( inst ) {
7851
-			if ( this._curInst === inst ) {
7852
-				this._hideDatepicker();
7853
-			}
7854
-
7855
-			date = this._getDateDatepicker( target, true );
7856
-			minDate = this._getMinMaxDate( inst, "min" );
7857
-			maxDate = this._getMinMaxDate( inst, "max" );
7858
-			datepicker_extendRemove( inst.settings, settings );
7859
-
7860
-			// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
7861
-			if ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) {
7862
-				inst.settings.minDate = this._formatDate( inst, minDate );
7863
-			}
7864
-			if ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) {
7865
-				inst.settings.maxDate = this._formatDate( inst, maxDate );
7866
-			}
7867
-			if ( "disabled" in settings ) {
7868
-				if ( settings.disabled ) {
7869
-					this._disableDatepicker( target );
7870
-				} else {
7871
-					this._enableDatepicker( target );
7872
-				}
7873
-			}
7874
-			this._attachments( $( target ), inst );
7875
-			this._autoSize( inst );
7876
-			this._setDate( inst, date );
7877
-			this._updateAlternate( inst );
7878
-			this._updateDatepicker( inst );
7879
-		}
7880
-	},
7881
-
7882
-	// Change method deprecated
7883
-	_changeDatepicker: function( target, name, value ) {
7884
-		this._optionDatepicker( target, name, value );
7885
-	},
7886
-
7887
-	/* Redraw the date picker attached to an input field or division.
7888
-	 * @param  target  element - the target input field or division or span
7889
-	 */
7890
-	_refreshDatepicker: function( target ) {
7891
-		var inst = this._getInst( target );
7892
-		if ( inst ) {
7893
-			this._updateDatepicker( inst );
7894
-		}
7895
-	},
7896
-
7897
-	/* Set the dates for a jQuery selection.
7898
-	 * @param  target element - the target input field or division or span
7899
-	 * @param  date	Date - the new date
7900
-	 */
7901
-	_setDateDatepicker: function( target, date ) {
7902
-		var inst = this._getInst( target );
7903
-		if ( inst ) {
7904
-			this._setDate( inst, date );
7905
-			this._updateDatepicker( inst );
7906
-			this._updateAlternate( inst );
7907
-		}
7908
-	},
7909
-
7910
-	/* Get the date(s) for the first entry in a jQuery selection.
7911
-	 * @param  target element - the target input field or division or span
7912
-	 * @param  noDefault boolean - true if no default date is to be used
7913
-	 * @return Date - the current date
7914
-	 */
7915
-	_getDateDatepicker: function( target, noDefault ) {
7916
-		var inst = this._getInst( target );
7917
-		if ( inst && !inst.inline ) {
7918
-			this._setDateFromField( inst, noDefault );
7919
-		}
7920
-		return ( inst ? this._getDate( inst ) : null );
7921
-	},
7922
-
7923
-	/* Handle keystrokes. */
7924
-	_doKeyDown: function( event ) {
7925
-		var onSelect, dateStr, sel,
7926
-			inst = $.datepicker._getInst( event.target ),
7927
-			handled = true,
7928
-			isRTL = inst.dpDiv.is( ".ui-datepicker-rtl" );
7929
-
7930
-		inst._keyEvent = true;
7931
-		if ( $.datepicker._datepickerShowing ) {
7932
-			switch ( event.keyCode ) {
7933
-				case 9: $.datepicker._hideDatepicker();
7934
-						handled = false;
7935
-						break; // hide on tab out
7936
-				case 13: sel = $( "td." + $.datepicker._dayOverClass + ":not(." +
7937
-									$.datepicker._currentClass + ")", inst.dpDiv );
7938
-						if ( sel[ 0 ] ) {
7939
-							$.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] );
7940
-						}
7941
-
7942
-						onSelect = $.datepicker._get( inst, "onSelect" );
7943
-						if ( onSelect ) {
7944
-							dateStr = $.datepicker._formatDate( inst );
7945
-
7946
-							// Trigger custom callback
7947
-							onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );
7948
-						} else {
7949
-							$.datepicker._hideDatepicker();
7950
-						}
7951
-
7952
-						return false; // don't submit the form
7953
-				case 27: $.datepicker._hideDatepicker();
7954
-						break; // hide on escape
7955
-				case 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
7956
-							-$.datepicker._get( inst, "stepBigMonths" ) :
7957
-							-$.datepicker._get( inst, "stepMonths" ) ), "M" );
7958
-						break; // previous month/year on page up/+ ctrl
7959
-				case 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
7960
-							+$.datepicker._get( inst, "stepBigMonths" ) :
7961
-							+$.datepicker._get( inst, "stepMonths" ) ), "M" );
7962
-						break; // next month/year on page down/+ ctrl
7963
-				case 35: if ( event.ctrlKey || event.metaKey ) {
7964
-							$.datepicker._clearDate( event.target );
7965
-						}
7966
-						handled = event.ctrlKey || event.metaKey;
7967
-						break; // clear on ctrl or command +end
7968
-				case 36: if ( event.ctrlKey || event.metaKey ) {
7969
-							$.datepicker._gotoToday( event.target );
7970
-						}
7971
-						handled = event.ctrlKey || event.metaKey;
7972
-						break; // current on ctrl or command +home
7973
-				case 37: if ( event.ctrlKey || event.metaKey ) {
7974
-							$.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), "D" );
7975
-						}
7976
-						handled = event.ctrlKey || event.metaKey;
7977
-
7978
-						// -1 day on ctrl or command +left
7979
-						if ( event.originalEvent.altKey ) {
7980
-							$.datepicker._adjustDate( event.target, ( event.ctrlKey ?
7981
-								-$.datepicker._get( inst, "stepBigMonths" ) :
7982
-								-$.datepicker._get( inst, "stepMonths" ) ), "M" );
7983
-						}
7984
-
7985
-						// next month/year on alt +left on Mac
7986
-						break;
7987
-				case 38: if ( event.ctrlKey || event.metaKey ) {
7988
-							$.datepicker._adjustDate( event.target, -7, "D" );
7989
-						}
7990
-						handled = event.ctrlKey || event.metaKey;
7991
-						break; // -1 week on ctrl or command +up
7992
-				case 39: if ( event.ctrlKey || event.metaKey ) {
7993
-							$.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), "D" );
7994
-						}
7995
-						handled = event.ctrlKey || event.metaKey;
7996
-
7997
-						// +1 day on ctrl or command +right
7998
-						if ( event.originalEvent.altKey ) {
7999
-							$.datepicker._adjustDate( event.target, ( event.ctrlKey ?
8000
-								+$.datepicker._get( inst, "stepBigMonths" ) :
8001
-								+$.datepicker._get( inst, "stepMonths" ) ), "M" );
8002
-						}
8003
-
8004
-						// next month/year on alt +right
8005
-						break;
8006
-				case 40: if ( event.ctrlKey || event.metaKey ) {
8007
-							$.datepicker._adjustDate( event.target, +7, "D" );
8008
-						}
8009
-						handled = event.ctrlKey || event.metaKey;
8010
-						break; // +1 week on ctrl or command +down
8011
-				default: handled = false;
8012
-			}
8013
-		} else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home
8014
-			$.datepicker._showDatepicker( this );
8015
-		} else {
8016
-			handled = false;
8017
-		}
8018
-
8019
-		if ( handled ) {
8020
-			event.preventDefault();
8021
-			event.stopPropagation();
8022
-		}
8023
-	},
8024
-
8025
-	/* Filter entered characters - based on date format. */
8026
-	_doKeyPress: function( event ) {
8027
-		var chars, chr,
8028
-			inst = $.datepicker._getInst( event.target );
8029
-
8030
-		if ( $.datepicker._get( inst, "constrainInput" ) ) {
8031
-			chars = $.datepicker._possibleChars( $.datepicker._get( inst, "dateFormat" ) );
8032
-			chr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode );
8033
-			return event.ctrlKey || event.metaKey || ( chr < " " || !chars || chars.indexOf( chr ) > -1 );
8034
-		}
8035
-	},
8036
-
8037
-	/* Synchronise manual entry and field/alternate field. */
8038
-	_doKeyUp: function( event ) {
8039
-		var date,
8040
-			inst = $.datepicker._getInst( event.target );
8041
-
8042
-		if ( inst.input.val() !== inst.lastVal ) {
8043
-			try {
8044
-				date = $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
8045
-					( inst.input ? inst.input.val() : null ),
8046
-					$.datepicker._getFormatConfig( inst ) );
8047
-
8048
-				if ( date ) { // only if valid
8049
-					$.datepicker._setDateFromField( inst );
8050
-					$.datepicker._updateAlternate( inst );
8051
-					$.datepicker._updateDatepicker( inst );
8052
-				}
8053
-			} catch ( err ) {
8054
-			}
8055
-		}
8056
-		return true;
8057
-	},
8058
-
8059
-	/* Pop-up the date picker for a given input field.
8060
-	 * If false returned from beforeShow event handler do not show.
8061
-	 * @param  input  element - the input field attached to the date picker or
8062
-	 *					event - if triggered by focus
8063
-	 */
8064
-	_showDatepicker: function( input ) {
8065
-		input = input.target || input;
8066
-		if ( input.nodeName.toLowerCase() !== "input" ) { // find from button/image trigger
8067
-			input = $( "input", input.parentNode )[ 0 ];
8068
-		}
8069
-
8070
-		if ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here
8071
-			return;
8072
-		}
8073
-
8074
-		var inst, beforeShow, beforeShowSettings, isFixed,
8075
-			offset, showAnim, duration;
8076
-
8077
-		inst = $.datepicker._getInst( input );
8078
-		if ( $.datepicker._curInst && $.datepicker._curInst !== inst ) {
8079
-			$.datepicker._curInst.dpDiv.stop( true, true );
8080
-			if ( inst && $.datepicker._datepickerShowing ) {
8081
-				$.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] );
8082
-			}
8083
-		}
8084
-
8085
-		beforeShow = $.datepicker._get( inst, "beforeShow" );
8086
-		beforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {};
8087
-		if ( beforeShowSettings === false ) {
8088
-			return;
8089
-		}
8090
-		datepicker_extendRemove( inst.settings, beforeShowSettings );
8091
-
8092
-		inst.lastVal = null;
8093
-		$.datepicker._lastInput = input;
8094
-		$.datepicker._setDateFromField( inst );
8095
-
8096
-		if ( $.datepicker._inDialog ) { // hide cursor
8097
-			input.value = "";
8098
-		}
8099
-		if ( !$.datepicker._pos ) { // position below input
8100
-			$.datepicker._pos = $.datepicker._findPos( input );
8101
-			$.datepicker._pos[ 1 ] += input.offsetHeight; // add the height
8102
-		}
8103
-
8104
-		isFixed = false;
8105
-		$( input ).parents().each( function() {
8106
-			isFixed |= $( this ).css( "position" ) === "fixed";
8107
-			return !isFixed;
8108
-		} );
8109
-
8110
-		offset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };
8111
-		$.datepicker._pos = null;
8112
-
8113
-		//to avoid flashes on Firefox
8114
-		inst.dpDiv.empty();
8115
-
8116
-		// determine sizing offscreen
8117
-		inst.dpDiv.css( { position: "absolute", display: "block", top: "-1000px" } );
8118
-		$.datepicker._updateDatepicker( inst );
8119
-
8120
-		// fix width for dynamic number of date pickers
8121
-		// and adjust position before showing
8122
-		offset = $.datepicker._checkOffset( inst, offset, isFixed );
8123
-		inst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ?
8124
-			"static" : ( isFixed ? "fixed" : "absolute" ) ), display: "none",
8125
-			left: offset.left + "px", top: offset.top + "px" } );
8126
-
8127
-		if ( !inst.inline ) {
8128
-			showAnim = $.datepicker._get( inst, "showAnim" );
8129
-			duration = $.datepicker._get( inst, "duration" );
8130
-			inst.dpDiv.css( "z-index", datepicker_getZindex( $( input ) ) + 1 );
8131
-			$.datepicker._datepickerShowing = true;
8132
-
8133
-			if ( $.effects && $.effects.effect[ showAnim ] ) {
8134
-				inst.dpDiv.show( showAnim, $.datepicker._get( inst, "showOptions" ), duration );
8135
-			} else {
8136
-				inst.dpDiv[ showAnim || "show" ]( showAnim ? duration : null );
8137
-			}
8138
-
8139
-			if ( $.datepicker._shouldFocusInput( inst ) ) {
8140
-				inst.input.trigger( "focus" );
8141
-			}
8142
-
8143
-			$.datepicker._curInst = inst;
8144
-		}
8145
-	},
8146
-
8147
-	/* Generate the date picker content. */
8148
-	_updateDatepicker: function( inst ) {
8149
-		this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
8150
-		datepicker_instActive = inst; // for delegate hover events
8151
-		inst.dpDiv.empty().append( this._generateHTML( inst ) );
8152
-		this._attachHandlers( inst );
8153
-
8154
-		var origyearshtml,
8155
-			numMonths = this._getNumberOfMonths( inst ),
8156
-			cols = numMonths[ 1 ],
8157
-			width = 17,
8158
-			activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" ),
8159
-			onUpdateDatepicker = $.datepicker._get( inst, "onUpdateDatepicker" );
8160
-
8161
-		if ( activeCell.length > 0 ) {
8162
-			datepicker_handleMouseover.apply( activeCell.get( 0 ) );
8163
-		}
8164
-
8165
-		inst.dpDiv.removeClass( "ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4" ).width( "" );
8166
-		if ( cols > 1 ) {
8167
-			inst.dpDiv.addClass( "ui-datepicker-multi-" + cols ).css( "width", ( width * cols ) + "em" );
8168
-		}
8169
-		inst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? "add" : "remove" ) +
8170
-			"Class" ]( "ui-datepicker-multi" );
8171
-		inst.dpDiv[ ( this._get( inst, "isRTL" ) ? "add" : "remove" ) +
8172
-			"Class" ]( "ui-datepicker-rtl" );
8173
-
8174
-		if ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
8175
-			inst.input.trigger( "focus" );
8176
-		}
8177
-
8178
-		// Deffered render of the years select (to avoid flashes on Firefox)
8179
-		if ( inst.yearshtml ) {
8180
-			origyearshtml = inst.yearshtml;
8181
-			setTimeout( function() {
8182
-
8183
-				//assure that inst.yearshtml didn't change.
8184
-				if ( origyearshtml === inst.yearshtml && inst.yearshtml ) {
8185
-					inst.dpDiv.find( "select.ui-datepicker-year" ).first().replaceWith( inst.yearshtml );
8186
-				}
8187
-				origyearshtml = inst.yearshtml = null;
8188
-			}, 0 );
8189
-		}
8190
-
8191
-		if ( onUpdateDatepicker ) {
8192
-			onUpdateDatepicker.apply( ( inst.input ? inst.input[ 0 ] : null ), [ inst ] );
8193
-		}
8194
-	},
8195
-
8196
-	// #6694 - don't focus the input if it's already focused
8197
-	// this breaks the change event in IE
8198
-	// Support: IE and jQuery <1.9
8199
-	_shouldFocusInput: function( inst ) {
8200
-		return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
8201
-	},
8202
-
8203
-	/* Check positioning to remain on screen. */
8204
-	_checkOffset: function( inst, offset, isFixed ) {
8205
-		var dpWidth = inst.dpDiv.outerWidth(),
8206
-			dpHeight = inst.dpDiv.outerHeight(),
8207
-			inputWidth = inst.input ? inst.input.outerWidth() : 0,
8208
-			inputHeight = inst.input ? inst.input.outerHeight() : 0,
8209
-			viewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ),
8210
-			viewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() );
8211
-
8212
-		offset.left -= ( this._get( inst, "isRTL" ) ? ( dpWidth - inputWidth ) : 0 );
8213
-		offset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0;
8214
-		offset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0;
8215
-
8216
-		// Now check if datepicker is showing outside window viewport - move to a better place if so.
8217
-		offset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ?
8218
-			Math.abs( offset.left + dpWidth - viewWidth ) : 0 );
8219
-		offset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ?
8220
-			Math.abs( dpHeight + inputHeight ) : 0 );
8221
-
8222
-		return offset;
8223
-	},
8224
-
8225
-	/* Find an object's position on the screen. */
8226
-	_findPos: function( obj ) {
8227
-		var position,
8228
-			inst = this._getInst( obj ),
8229
-			isRTL = this._get( inst, "isRTL" );
8230
-
8231
-		while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.pseudos.hidden( obj ) ) ) {
8232
-			obj = obj[ isRTL ? "previousSibling" : "nextSibling" ];
8233
-		}
8234
-
8235
-		position = $( obj ).offset();
8236
-		return [ position.left, position.top ];
8237
-	},
8238
-
8239
-	/* Hide the date picker from view.
8240
-	 * @param  input  element - the input field attached to the date picker
8241
-	 */
8242
-	_hideDatepicker: function( input ) {
8243
-		var showAnim, duration, postProcess, onClose,
8244
-			inst = this._curInst;
8245
-
8246
-		if ( !inst || ( input && inst !== $.data( input, "datepicker" ) ) ) {
8247
-			return;
8248
-		}
8249
-
8250
-		if ( this._datepickerShowing ) {
8251
-			showAnim = this._get( inst, "showAnim" );
8252
-			duration = this._get( inst, "duration" );
8253
-			postProcess = function() {
8254
-				$.datepicker._tidyDialog( inst );
8255
-			};
8256
-
8257
-			// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
8258
-			if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
8259
-				inst.dpDiv.hide( showAnim, $.datepicker._get( inst, "showOptions" ), duration, postProcess );
8260
-			} else {
8261
-				inst.dpDiv[ ( showAnim === "slideDown" ? "slideUp" :
8262
-					( showAnim === "fadeIn" ? "fadeOut" : "hide" ) ) ]( ( showAnim ? duration : null ), postProcess );
8263
-			}
8264
-
8265
-			if ( !showAnim ) {
8266
-				postProcess();
8267
-			}
8268
-			this._datepickerShowing = false;
8269
-
8270
-			onClose = this._get( inst, "onClose" );
8271
-			if ( onClose ) {
8272
-				onClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : "" ), inst ] );
8273
-			}
8274
-
8275
-			this._lastInput = null;
8276
-			if ( this._inDialog ) {
8277
-				this._dialogInput.css( { position: "absolute", left: "0", top: "-100px" } );
8278
-				if ( $.blockUI ) {
8279
-					$.unblockUI();
8280
-					$( "body" ).append( this.dpDiv );
8281
-				}
8282
-			}
8283
-			this._inDialog = false;
8284
-		}
8285
-	},
8286
-
8287
-	/* Tidy up after a dialog display. */
8288
-	_tidyDialog: function( inst ) {
8289
-		inst.dpDiv.removeClass( this._dialogClass ).off( ".ui-datepicker-calendar" );
8290
-	},
8291
-
8292
-	/* Close date picker if clicked elsewhere. */
8293
-	_checkExternalClick: function( event ) {
8294
-		if ( !$.datepicker._curInst ) {
8295
-			return;
8296
-		}
8297
-
8298
-		var $target = $( event.target ),
8299
-			inst = $.datepicker._getInst( $target[ 0 ] );
8300
-
8301
-		if ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId &&
8302
-				$target.parents( "#" + $.datepicker._mainDivId ).length === 0 &&
8303
-				!$target.hasClass( $.datepicker.markerClassName ) &&
8304
-				!$target.closest( "." + $.datepicker._triggerClass ).length &&
8305
-				$.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) ||
8306
-			( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) {
8307
-				$.datepicker._hideDatepicker();
8308
-		}
8309
-	},
8310
-
8311
-	/* Adjust one of the date sub-fields. */
8312
-	_adjustDate: function( id, offset, period ) {
8313
-		var target = $( id ),
8314
-			inst = this._getInst( target[ 0 ] );
8315
-
8316
-		if ( this._isDisabledDatepicker( target[ 0 ] ) ) {
8317
-			return;
8318
-		}
8319
-		this._adjustInstDate( inst, offset, period );
8320
-		this._updateDatepicker( inst );
8321
-	},
8322
-
8323
-	/* Action for current link. */
8324
-	_gotoToday: function( id ) {
8325
-		var date,
8326
-			target = $( id ),
8327
-			inst = this._getInst( target[ 0 ] );
8328
-
8329
-		if ( this._get( inst, "gotoCurrent" ) && inst.currentDay ) {
8330
-			inst.selectedDay = inst.currentDay;
8331
-			inst.drawMonth = inst.selectedMonth = inst.currentMonth;
8332
-			inst.drawYear = inst.selectedYear = inst.currentYear;
8333
-		} else {
8334
-			date = new Date();
8335
-			inst.selectedDay = date.getDate();
8336
-			inst.drawMonth = inst.selectedMonth = date.getMonth();
8337
-			inst.drawYear = inst.selectedYear = date.getFullYear();
8338
-		}
8339
-		this._notifyChange( inst );
8340
-		this._adjustDate( target );
8341
-	},
8342
-
8343
-	/* Action for selecting a new month/year. */
8344
-	_selectMonthYear: function( id, select, period ) {
8345
-		var target = $( id ),
8346
-			inst = this._getInst( target[ 0 ] );
8347
-
8348
-		inst[ "selected" + ( period === "M" ? "Month" : "Year" ) ] =
8349
-		inst[ "draw" + ( period === "M" ? "Month" : "Year" ) ] =
8350
-			parseInt( select.options[ select.selectedIndex ].value, 10 );
8351
-
8352
-		this._notifyChange( inst );
8353
-		this._adjustDate( target );
8354
-	},
8355
-
8356
-	/* Action for selecting a day. */
8357
-	_selectDay: function( id, month, year, td ) {
8358
-		var inst,
8359
-			target = $( id );
8360
-
8361
-		if ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) {
8362
-			return;
8363
-		}
8364
-
8365
-		inst = this._getInst( target[ 0 ] );
8366
-		inst.selectedDay = inst.currentDay = parseInt( $( "a", td ).attr( "data-date" ) );
8367
-		inst.selectedMonth = inst.currentMonth = month;
8368
-		inst.selectedYear = inst.currentYear = year;
8369
-		this._selectDate( id, this._formatDate( inst,
8370
-			inst.currentDay, inst.currentMonth, inst.currentYear ) );
8371
-	},
8372
-
8373
-	/* Erase the input field and hide the date picker. */
8374
-	_clearDate: function( id ) {
8375
-		var target = $( id );
8376
-		this._selectDate( target, "" );
8377
-	},
8378
-
8379
-	/* Update the input field with the selected date. */
8380
-	_selectDate: function( id, dateStr ) {
8381
-		var onSelect,
8382
-			target = $( id ),
8383
-			inst = this._getInst( target[ 0 ] );
8384
-
8385
-		dateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) );
8386
-		if ( inst.input ) {
8387
-			inst.input.val( dateStr );
8388
-		}
8389
-		this._updateAlternate( inst );
8390
-
8391
-		onSelect = this._get( inst, "onSelect" );
8392
-		if ( onSelect ) {
8393
-			onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );  // trigger custom callback
8394
-		} else if ( inst.input ) {
8395
-			inst.input.trigger( "change" ); // fire the change event
8396
-		}
8397
-
8398
-		if ( inst.inline ) {
8399
-			this._updateDatepicker( inst );
8400
-		} else {
8401
-			this._hideDatepicker();
8402
-			this._lastInput = inst.input[ 0 ];
8403
-			if ( typeof( inst.input[ 0 ] ) !== "object" ) {
8404
-				inst.input.trigger( "focus" ); // restore focus
8405
-			}
8406
-			this._lastInput = null;
8407
-		}
8408
-	},
8409
-
8410
-	/* Update any alternate field to synchronise with the main field. */
8411
-	_updateAlternate: function( inst ) {
8412
-		var altFormat, date, dateStr,
8413
-			altField = this._get( inst, "altField" );
8414
-
8415
-		if ( altField ) { // update alternate field too
8416
-			altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" );
8417
-			date = this._getDate( inst );
8418
-			dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );
8419
-			$( document ).find( altField ).val( dateStr );
8420
-		}
8421
-	},
8422
-
8423
-	/* Set as beforeShowDay function to prevent selection of weekends.
8424
-	 * @param  date  Date - the date to customise
8425
-	 * @return [boolean, string] - is this date selectable?, what is its CSS class?
8426
-	 */
8427
-	noWeekends: function( date ) {
8428
-		var day = date.getDay();
8429
-		return [ ( day > 0 && day < 6 ), "" ];
8430
-	},
8431
-
8432
-	/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
8433
-	 * @param  date  Date - the date to get the week for
8434
-	 * @return  number - the number of the week within the year that contains this date
8435
-	 */
8436
-	iso8601Week: function( date ) {
8437
-		var time,
8438
-			checkDate = new Date( date.getTime() );
8439
-
8440
-		// Find Thursday of this week starting on Monday
8441
-		checkDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) );
8442
-
8443
-		time = checkDate.getTime();
8444
-		checkDate.setMonth( 0 ); // Compare with Jan 1
8445
-		checkDate.setDate( 1 );
8446
-		return Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1;
8447
-	},
8448
-
8449
-	/* Parse a string value into a date object.
8450
-	 * See formatDate below for the possible formats.
8451
-	 *
8452
-	 * @param  format string - the expected format of the date
8453
-	 * @param  value string - the date in the above format
8454
-	 * @param  settings Object - attributes include:
8455
-	 *					shortYearCutoff  number - the cutoff year for determining the century (optional)
8456
-	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
8457
-	 *					dayNames		string[7] - names of the days from Sunday (optional)
8458
-	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
8459
-	 *					monthNames		string[12] - names of the months (optional)
8460
-	 * @return  Date - the extracted date value or null if value is blank
8461
-	 */
8462
-	parseDate: function( format, value, settings ) {
8463
-		if ( format == null || value == null ) {
8464
-			throw "Invalid arguments";
8465
-		}
8466
-
8467
-		value = ( typeof value === "object" ? value.toString() : value + "" );
8468
-		if ( value === "" ) {
8469
-			return null;
8470
-		}
8471
-
8472
-		var iFormat, dim, extra,
8473
-			iValue = 0,
8474
-			shortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff,
8475
-			shortYearCutoff = ( typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
8476
-				new Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ),
8477
-			dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
8478
-			dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
8479
-			monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
8480
-			monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
8481
-			year = -1,
8482
-			month = -1,
8483
-			day = -1,
8484
-			doy = -1,
8485
-			literal = false,
8486
-			date,
8487
-
8488
-			// Check whether a format character is doubled
8489
-			lookAhead = function( match ) {
8490
-				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
8491
-				if ( matches ) {
8492
-					iFormat++;
8493
-				}
8494
-				return matches;
8495
-			},
8496
-
8497
-			// Extract a number from the string value
8498
-			getNumber = function( match ) {
8499
-				var isDoubled = lookAhead( match ),
8500
-					size = ( match === "@" ? 14 : ( match === "!" ? 20 :
8501
-					( match === "y" && isDoubled ? 4 : ( match === "o" ? 3 : 2 ) ) ) ),
8502
-					minSize = ( match === "y" ? size : 1 ),
8503
-					digits = new RegExp( "^\\d{" + minSize + "," + size + "}" ),
8504
-					num = value.substring( iValue ).match( digits );
8505
-				if ( !num ) {
8506
-					throw "Missing number at position " + iValue;
8507
-				}
8508
-				iValue += num[ 0 ].length;
8509
-				return parseInt( num[ 0 ], 10 );
8510
-			},
8511
-
8512
-			// Extract a name from the string value and convert to an index
8513
-			getName = function( match, shortNames, longNames ) {
8514
-				var index = -1,
8515
-					names = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) {
8516
-						return [ [ k, v ] ];
8517
-					} ).sort( function( a, b ) {
8518
-						return -( a[ 1 ].length - b[ 1 ].length );
8519
-					} );
8520
-
8521
-				$.each( names, function( i, pair ) {
8522
-					var name = pair[ 1 ];
8523
-					if ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) {
8524
-						index = pair[ 0 ];
8525
-						iValue += name.length;
8526
-						return false;
8527
-					}
8528
-				} );
8529
-				if ( index !== -1 ) {
8530
-					return index + 1;
8531
-				} else {
8532
-					throw "Unknown name at position " + iValue;
8533
-				}
8534
-			},
8535
-
8536
-			// Confirm that a literal character matches the string value
8537
-			checkLiteral = function() {
8538
-				if ( value.charAt( iValue ) !== format.charAt( iFormat ) ) {
8539
-					throw "Unexpected literal at position " + iValue;
8540
-				}
8541
-				iValue++;
8542
-			};
8543
-
8544
-		for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
8545
-			if ( literal ) {
8546
-				if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
8547
-					literal = false;
8548
-				} else {
8549
-					checkLiteral();
8550
-				}
8551
-			} else {
8552
-				switch ( format.charAt( iFormat ) ) {
8553
-					case "d":
8554
-						day = getNumber( "d" );
8555
-						break;
8556
-					case "D":
8557
-						getName( "D", dayNamesShort, dayNames );
8558
-						break;
8559
-					case "o":
8560
-						doy = getNumber( "o" );
8561
-						break;
8562
-					case "m":
8563
-						month = getNumber( "m" );
8564
-						break;
8565
-					case "M":
8566
-						month = getName( "M", monthNamesShort, monthNames );
8567
-						break;
8568
-					case "y":
8569
-						year = getNumber( "y" );
8570
-						break;
8571
-					case "@":
8572
-						date = new Date( getNumber( "@" ) );
8573
-						year = date.getFullYear();
8574
-						month = date.getMonth() + 1;
8575
-						day = date.getDate();
8576
-						break;
8577
-					case "!":
8578
-						date = new Date( ( getNumber( "!" ) - this._ticksTo1970 ) / 10000 );
8579
-						year = date.getFullYear();
8580
-						month = date.getMonth() + 1;
8581
-						day = date.getDate();
8582
-						break;
8583
-					case "'":
8584
-						if ( lookAhead( "'" ) ) {
8585
-							checkLiteral();
8586
-						} else {
8587
-							literal = true;
8588
-						}
8589
-						break;
8590
-					default:
8591
-						checkLiteral();
8592
-				}
8593
-			}
8594
-		}
8595
-
8596
-		if ( iValue < value.length ) {
8597
-			extra = value.substr( iValue );
8598
-			if ( !/^\s+/.test( extra ) ) {
8599
-				throw "Extra/unparsed characters found in date: " + extra;
8600
-			}
8601
-		}
8602
-
8603
-		if ( year === -1 ) {
8604
-			year = new Date().getFullYear();
8605
-		} else if ( year < 100 ) {
8606
-			year += new Date().getFullYear() - new Date().getFullYear() % 100 +
8607
-				( year <= shortYearCutoff ? 0 : -100 );
8608
-		}
8609
-
8610
-		if ( doy > -1 ) {
8611
-			month = 1;
8612
-			day = doy;
8613
-			do {
8614
-				dim = this._getDaysInMonth( year, month - 1 );
8615
-				if ( day <= dim ) {
8616
-					break;
8617
-				}
8618
-				month++;
8619
-				day -= dim;
8620
-			} while ( true );
8621
-		}
8622
-
8623
-		date = this._daylightSavingAdjust( new Date( year, month - 1, day ) );
8624
-		if ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) {
8625
-			throw "Invalid date"; // E.g. 31/02/00
8626
-		}
8627
-		return date;
8628
-	},
8629
-
8630
-	/* Standard date formats. */
8631
-	ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
8632
-	COOKIE: "D, dd M yy",
8633
-	ISO_8601: "yy-mm-dd",
8634
-	RFC_822: "D, d M y",
8635
-	RFC_850: "DD, dd-M-y",
8636
-	RFC_1036: "D, d M y",
8637
-	RFC_1123: "D, d M yy",
8638
-	RFC_2822: "D, d M yy",
8639
-	RSS: "D, d M y", // RFC 822
8640
-	TICKS: "!",
8641
-	TIMESTAMP: "@",
8642
-	W3C: "yy-mm-dd", // ISO 8601
8643
-
8644
-	_ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) +
8645
-		Math.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ),
8646
-
8647
-	/* Format a date object into a string value.
8648
-	 * The format can be combinations of the following:
8649
-	 * d  - day of month (no leading zero)
8650
-	 * dd - day of month (two digit)
8651
-	 * o  - day of year (no leading zeros)
8652
-	 * oo - day of year (three digit)
8653
-	 * D  - day name short
8654
-	 * DD - day name long
8655
-	 * m  - month of year (no leading zero)
8656
-	 * mm - month of year (two digit)
8657
-	 * M  - month name short
8658
-	 * MM - month name long
8659
-	 * y  - year (two digit)
8660
-	 * yy - year (four digit)
8661
-	 * @ - Unix timestamp (ms since 01/01/1970)
8662
-	 * ! - Windows ticks (100ns since 01/01/0001)
8663
-	 * "..." - literal text
8664
-	 * '' - single quote
8665
-	 *
8666
-	 * @param  format string - the desired format of the date
8667
-	 * @param  date Date - the date value to format
8668
-	 * @param  settings Object - attributes include:
8669
-	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
8670
-	 *					dayNames		string[7] - names of the days from Sunday (optional)
8671
-	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
8672
-	 *					monthNames		string[12] - names of the months (optional)
8673
-	 * @return  string - the date in the above format
8674
-	 */
8675
-	formatDate: function( format, date, settings ) {
8676
-		if ( !date ) {
8677
-			return "";
8678
-		}
8679
-
8680
-		var iFormat,
8681
-			dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
8682
-			dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
8683
-			monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
8684
-			monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
8685
-
8686
-			// Check whether a format character is doubled
8687
-			lookAhead = function( match ) {
8688
-				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
8689
-				if ( matches ) {
8690
-					iFormat++;
8691
-				}
8692
-				return matches;
8693
-			},
8694
-
8695
-			// Format a number, with leading zero if necessary
8696
-			formatNumber = function( match, value, len ) {
8697
-				var num = "" + value;
8698
-				if ( lookAhead( match ) ) {
8699
-					while ( num.length < len ) {
8700
-						num = "0" + num;
8701
-					}
8702
-				}
8703
-				return num;
8704
-			},
8705
-
8706
-			// Format a name, short or long as requested
8707
-			formatName = function( match, value, shortNames, longNames ) {
8708
-				return ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] );
8709
-			},
8710
-			output = "",
8711
-			literal = false;
8712
-
8713
-		if ( date ) {
8714
-			for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
8715
-				if ( literal ) {
8716
-					if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
8717
-						literal = false;
8718
-					} else {
8719
-						output += format.charAt( iFormat );
8720
-					}
8721
-				} else {
8722
-					switch ( format.charAt( iFormat ) ) {
8723
-						case "d":
8724
-							output += formatNumber( "d", date.getDate(), 2 );
8725
-							break;
8726
-						case "D":
8727
-							output += formatName( "D", date.getDay(), dayNamesShort, dayNames );
8728
-							break;
8729
-						case "o":
8730
-							output += formatNumber( "o",
8731
-								Math.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 );
8732
-							break;
8733
-						case "m":
8734
-							output += formatNumber( "m", date.getMonth() + 1, 2 );
8735
-							break;
8736
-						case "M":
8737
-							output += formatName( "M", date.getMonth(), monthNamesShort, monthNames );
8738
-							break;
8739
-						case "y":
8740
-							output += ( lookAhead( "y" ) ? date.getFullYear() :
8741
-								( date.getFullYear() % 100 < 10 ? "0" : "" ) + date.getFullYear() % 100 );
8742
-							break;
8743
-						case "@":
8744
-							output += date.getTime();
8745
-							break;
8746
-						case "!":
8747
-							output += date.getTime() * 10000 + this._ticksTo1970;
8748
-							break;
8749
-						case "'":
8750
-							if ( lookAhead( "'" ) ) {
8751
-								output += "'";
8752
-							} else {
8753
-								literal = true;
8754
-							}
8755
-							break;
8756
-						default:
8757
-							output += format.charAt( iFormat );
8758
-					}
8759
-				}
8760
-			}
8761
-		}
8762
-		return output;
8763
-	},
8764
-
8765
-	/* Extract all possible characters from the date format. */
8766
-	_possibleChars: function( format ) {
8767
-		var iFormat,
8768
-			chars = "",
8769
-			literal = false,
8770
-
8771
-			// Check whether a format character is doubled
8772
-			lookAhead = function( match ) {
8773
-				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
8774
-				if ( matches ) {
8775
-					iFormat++;
8776
-				}
8777
-				return matches;
8778
-			};
8779
-
8780
-		for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
8781
-			if ( literal ) {
8782
-				if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
8783
-					literal = false;
8784
-				} else {
8785
-					chars += format.charAt( iFormat );
8786
-				}
8787
-			} else {
8788
-				switch ( format.charAt( iFormat ) ) {
8789
-					case "d": case "m": case "y": case "@":
8790
-						chars += "0123456789";
8791
-						break;
8792
-					case "D": case "M":
8793
-						return null; // Accept anything
8794
-					case "'":
8795
-						if ( lookAhead( "'" ) ) {
8796
-							chars += "'";
8797
-						} else {
8798
-							literal = true;
8799
-						}
8800
-						break;
8801
-					default:
8802
-						chars += format.charAt( iFormat );
8803
-				}
8804
-			}
8805
-		}
8806
-		return chars;
8807
-	},
8808
-
8809
-	/* Get a setting value, defaulting if necessary. */
8810
-	_get: function( inst, name ) {
8811
-		return inst.settings[ name ] !== undefined ?
8812
-			inst.settings[ name ] : this._defaults[ name ];
8813
-	},
8814
-
8815
-	/* Parse existing date and initialise date picker. */
8816
-	_setDateFromField: function( inst, noDefault ) {
8817
-		if ( inst.input.val() === inst.lastVal ) {
8818
-			return;
8819
-		}
8820
-
8821
-		var dateFormat = this._get( inst, "dateFormat" ),
8822
-			dates = inst.lastVal = inst.input ? inst.input.val() : null,
8823
-			defaultDate = this._getDefaultDate( inst ),
8824
-			date = defaultDate,
8825
-			settings = this._getFormatConfig( inst );
8826
-
8827
-		try {
8828
-			date = this.parseDate( dateFormat, dates, settings ) || defaultDate;
8829
-		} catch ( event ) {
8830
-			dates = ( noDefault ? "" : dates );
8831
-		}
8832
-		inst.selectedDay = date.getDate();
8833
-		inst.drawMonth = inst.selectedMonth = date.getMonth();
8834
-		inst.drawYear = inst.selectedYear = date.getFullYear();
8835
-		inst.currentDay = ( dates ? date.getDate() : 0 );
8836
-		inst.currentMonth = ( dates ? date.getMonth() : 0 );
8837
-		inst.currentYear = ( dates ? date.getFullYear() : 0 );
8838
-		this._adjustInstDate( inst );
8839
-	},
8840
-
8841
-	/* Retrieve the default date shown on opening. */
8842
-	_getDefaultDate: function( inst ) {
8843
-		return this._restrictMinMax( inst,
8844
-			this._determineDate( inst, this._get( inst, "defaultDate" ), new Date() ) );
8845
-	},
8846
-
8847
-	/* A date may be specified as an exact value or a relative one. */
8848
-	_determineDate: function( inst, date, defaultDate ) {
8849
-		var offsetNumeric = function( offset ) {
8850
-				var date = new Date();
8851
-				date.setDate( date.getDate() + offset );
8852
-				return date;
8853
-			},
8854
-			offsetString = function( offset ) {
8855
-				try {
8856
-					return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
8857
-						offset, $.datepicker._getFormatConfig( inst ) );
8858
-				} catch ( e ) {
8859
-
8860
-					// Ignore
8861
-				}
8862
-
8863
-				var date = ( offset.toLowerCase().match( /^c/ ) ?
8864
-					$.datepicker._getDate( inst ) : null ) || new Date(),
8865
-					year = date.getFullYear(),
8866
-					month = date.getMonth(),
8867
-					day = date.getDate(),
8868
-					pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
8869
-					matches = pattern.exec( offset );
8870
-
8871
-				while ( matches ) {
8872
-					switch ( matches[ 2 ] || "d" ) {
8873
-						case "d" : case "D" :
8874
-							day += parseInt( matches[ 1 ], 10 ); break;
8875
-						case "w" : case "W" :
8876
-							day += parseInt( matches[ 1 ], 10 ) * 7; break;
8877
-						case "m" : case "M" :
8878
-							month += parseInt( matches[ 1 ], 10 );
8879
-							day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
8880
-							break;
8881
-						case "y": case "Y" :
8882
-							year += parseInt( matches[ 1 ], 10 );
8883
-							day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
8884
-							break;
8885
-					}
8886
-					matches = pattern.exec( offset );
8887
-				}
8888
-				return new Date( year, month, day );
8889
-			},
8890
-			newDate = ( date == null || date === "" ? defaultDate : ( typeof date === "string" ? offsetString( date ) :
8891
-				( typeof date === "number" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) );
8892
-
8893
-		newDate = ( newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate );
8894
-		if ( newDate ) {
8895
-			newDate.setHours( 0 );
8896
-			newDate.setMinutes( 0 );
8897
-			newDate.setSeconds( 0 );
8898
-			newDate.setMilliseconds( 0 );
8899
-		}
8900
-		return this._daylightSavingAdjust( newDate );
8901
-	},
8902
-
8903
-	/* Handle switch to/from daylight saving.
8904
-	 * Hours may be non-zero on daylight saving cut-over:
8905
-	 * > 12 when midnight changeover, but then cannot generate
8906
-	 * midnight datetime, so jump to 1AM, otherwise reset.
8907
-	 * @param  date  (Date) the date to check
8908
-	 * @return  (Date) the corrected date
8909
-	 */
8910
-	_daylightSavingAdjust: function( date ) {
8911
-		if ( !date ) {
8912
-			return null;
8913
-		}
8914
-		date.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 );
8915
-		return date;
8916
-	},
8917
-
8918
-	/* Set the date(s) directly. */
8919
-	_setDate: function( inst, date, noChange ) {
8920
-		var clear = !date,
8921
-			origMonth = inst.selectedMonth,
8922
-			origYear = inst.selectedYear,
8923
-			newDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) );
8924
-
8925
-		inst.selectedDay = inst.currentDay = newDate.getDate();
8926
-		inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
8927
-		inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
8928
-		if ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) {
8929
-			this._notifyChange( inst );
8930
-		}
8931
-		this._adjustInstDate( inst );
8932
-		if ( inst.input ) {
8933
-			inst.input.val( clear ? "" : this._formatDate( inst ) );
8934
-		}
8935
-	},
8936
-
8937
-	/* Retrieve the date(s) directly. */
8938
-	_getDate: function( inst ) {
8939
-		var startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === "" ) ? null :
8940
-			this._daylightSavingAdjust( new Date(
8941
-			inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
8942
-			return startDate;
8943
-	},
8944
-
8945
-	/* Attach the onxxx handlers.  These are declared statically so
8946
-	 * they work with static code transformers like Caja.
8947
-	 */
8948
-	_attachHandlers: function( inst ) {
8949
-		var stepMonths = this._get( inst, "stepMonths" ),
8950
-			id = "#" + inst.id.replace( /\\\\/g, "\\" );
8951
-		inst.dpDiv.find( "[data-handler]" ).map( function() {
8952
-			var handler = {
8953
-				prev: function() {
8954
-					$.datepicker._adjustDate( id, -stepMonths, "M" );
8955
-				},
8956
-				next: function() {
8957
-					$.datepicker._adjustDate( id, +stepMonths, "M" );
8958
-				},
8959
-				hide: function() {
8960
-					$.datepicker._hideDatepicker();
8961
-				},
8962
-				today: function() {
8963
-					$.datepicker._gotoToday( id );
8964
-				},
8965
-				selectDay: function() {
8966
-					$.datepicker._selectDay( id, +this.getAttribute( "data-month" ), +this.getAttribute( "data-year" ), this );
8967
-					return false;
8968
-				},
8969
-				selectMonth: function() {
8970
-					$.datepicker._selectMonthYear( id, this, "M" );
8971
-					return false;
8972
-				},
8973
-				selectYear: function() {
8974
-					$.datepicker._selectMonthYear( id, this, "Y" );
8975
-					return false;
8976
-				}
8977
-			};
8978
-			$( this ).on( this.getAttribute( "data-event" ), handler[ this.getAttribute( "data-handler" ) ] );
8979
-		} );
8980
-	},
8981
-
8982
-	/* Generate the HTML for the current state of the date picker. */
8983
-	_generateHTML: function( inst ) {
8984
-		var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
8985
-			controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
8986
-			monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
8987
-			selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
8988
-			cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
8989
-			printDate, dRow, tbody, daySettings, otherMonth, unselectable,
8990
-			tempDate = new Date(),
8991
-			today = this._daylightSavingAdjust(
8992
-				new Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time
8993
-			isRTL = this._get( inst, "isRTL" ),
8994
-			showButtonPanel = this._get( inst, "showButtonPanel" ),
8995
-			hideIfNoPrevNext = this._get( inst, "hideIfNoPrevNext" ),
8996
-			navigationAsDateFormat = this._get( inst, "navigationAsDateFormat" ),
8997
-			numMonths = this._getNumberOfMonths( inst ),
8998
-			showCurrentAtPos = this._get( inst, "showCurrentAtPos" ),
8999
-			stepMonths = this._get( inst, "stepMonths" ),
9000
-			isMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ),
9001
-			currentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) :
9002
-				new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ),
9003
-			minDate = this._getMinMaxDate( inst, "min" ),
9004
-			maxDate = this._getMinMaxDate( inst, "max" ),
9005
-			drawMonth = inst.drawMonth - showCurrentAtPos,
9006
-			drawYear = inst.drawYear;
9007
-
9008
-		if ( drawMonth < 0 ) {
9009
-			drawMonth += 12;
9010
-			drawYear--;
9011
-		}
9012
-		if ( maxDate ) {
9013
-			maxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(),
9014
-				maxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) );
9015
-			maxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw );
9016
-			while ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) {
9017
-				drawMonth--;
9018
-				if ( drawMonth < 0 ) {
9019
-					drawMonth = 11;
9020
-					drawYear--;
9021
-				}
9022
-			}
9023
-		}
9024
-		inst.drawMonth = drawMonth;
9025
-		inst.drawYear = drawYear;
9026
-
9027
-		prevText = this._get( inst, "prevText" );
9028
-		prevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText,
9029
-			this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),
9030
-			this._getFormatConfig( inst ) ) );
9031
-
9032
-		if ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ) {
9033
-			prev = $( "<a>" )
9034
-				.attr( {
9035
-					"class": "ui-datepicker-prev ui-corner-all",
9036
-					"data-handler": "prev",
9037
-					"data-event": "click",
9038
-					title: prevText
9039
-				} )
9040
-				.append(
9041
-					$( "<span>" )
9042
-						.addClass( "ui-icon ui-icon-circle-triangle-" +
9043
-							( isRTL ? "e" : "w" ) )
9044
-						.text( prevText )
9045
-				)[ 0 ].outerHTML;
9046
-		} else if ( hideIfNoPrevNext ) {
9047
-			prev = "";
9048
-		} else {
9049
-			prev = $( "<a>" )
9050
-				.attr( {
9051
-					"class": "ui-datepicker-prev ui-corner-all ui-state-disabled",
9052
-					title: prevText
9053
-				} )
9054
-				.append(
9055
-					$( "<span>" )
9056
-						.addClass( "ui-icon ui-icon-circle-triangle-" +
9057
-							( isRTL ? "e" : "w" ) )
9058
-						.text( prevText )
9059
-				)[ 0 ].outerHTML;
9060
-		}
9061
-
9062
-		nextText = this._get( inst, "nextText" );
9063
-		nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,
9064
-			this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),
9065
-			this._getFormatConfig( inst ) ) );
9066
-
9067
-		if ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ) {
9068
-			next = $( "<a>" )
9069
-				.attr( {
9070
-					"class": "ui-datepicker-next ui-corner-all",
9071
-					"data-handler": "next",
9072
-					"data-event": "click",
9073
-					title: nextText
9074
-				} )
9075
-				.append(
9076
-					$( "<span>" )
9077
-						.addClass( "ui-icon ui-icon-circle-triangle-" +
9078
-							( isRTL ? "w" : "e" ) )
9079
-						.text( nextText )
9080
-				)[ 0 ].outerHTML;
9081
-		} else if ( hideIfNoPrevNext ) {
9082
-			next = "";
9083
-		} else {
9084
-			next = $( "<a>" )
9085
-				.attr( {
9086
-					"class": "ui-datepicker-next ui-corner-all ui-state-disabled",
9087
-					title: nextText
9088
-				} )
9089
-				.append(
9090
-					$( "<span>" )
9091
-						.attr( "class", "ui-icon ui-icon-circle-triangle-" +
9092
-							( isRTL ? "w" : "e" ) )
9093
-						.text( nextText )
9094
-				)[ 0 ].outerHTML;
9095
-		}
9096
-
9097
-		currentText = this._get( inst, "currentText" );
9098
-		gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today );
9099
-		currentText = ( !navigationAsDateFormat ? currentText :
9100
-			this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );
9101
-
9102
-		controls = "";
9103
-		if ( !inst.inline ) {
9104
-			controls = $( "<button>" )
9105
-				.attr( {
9106
-					type: "button",
9107
-					"class": "ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all",
9108
-					"data-handler": "hide",
9109
-					"data-event": "click"
9110
-				} )
9111
-				.text( this._get( inst, "closeText" ) )[ 0 ].outerHTML;
9112
-		}
9113
-
9114
-		buttonPanel = "";
9115
-		if ( showButtonPanel ) {
9116
-			buttonPanel = $( "<div class='ui-datepicker-buttonpane ui-widget-content'>" )
9117
-				.append( isRTL ? controls : "" )
9118
-				.append( this._isInRange( inst, gotoDate ) ?
9119
-					$( "<button>" )
9120
-						.attr( {
9121
-							type: "button",
9122
-							"class": "ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all",
9123
-							"data-handler": "today",
9124
-							"data-event": "click"
9125
-						} )
9126
-						.text( currentText ) :
9127
-					"" )
9128
-				.append( isRTL ? "" : controls )[ 0 ].outerHTML;
9129
-		}
9130
-
9131
-		firstDay = parseInt( this._get( inst, "firstDay" ), 10 );
9132
-		firstDay = ( isNaN( firstDay ) ? 0 : firstDay );
9133
-
9134
-		showWeek = this._get( inst, "showWeek" );
9135
-		dayNames = this._get( inst, "dayNames" );
9136
-		dayNamesMin = this._get( inst, "dayNamesMin" );
9137
-		monthNames = this._get( inst, "monthNames" );
9138
-		monthNamesShort = this._get( inst, "monthNamesShort" );
9139
-		beforeShowDay = this._get( inst, "beforeShowDay" );
9140
-		showOtherMonths = this._get( inst, "showOtherMonths" );
9141
-		selectOtherMonths = this._get( inst, "selectOtherMonths" );
9142
-		defaultDate = this._getDefaultDate( inst );
9143
-		html = "";
9144
-
9145
-		for ( row = 0; row < numMonths[ 0 ]; row++ ) {
9146
-			group = "";
9147
-			this.maxRows = 4;
9148
-			for ( col = 0; col < numMonths[ 1 ]; col++ ) {
9149
-				selectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) );
9150
-				cornerClass = " ui-corner-all";
9151
-				calender = "";
9152
-				if ( isMultiMonth ) {
9153
-					calender += "<div class='ui-datepicker-group";
9154
-					if ( numMonths[ 1 ] > 1 ) {
9155
-						switch ( col ) {
9156
-							case 0: calender += " ui-datepicker-group-first";
9157
-								cornerClass = " ui-corner-" + ( isRTL ? "right" : "left" ); break;
9158
-							case numMonths[ 1 ] - 1: calender += " ui-datepicker-group-last";
9159
-								cornerClass = " ui-corner-" + ( isRTL ? "left" : "right" ); break;
9160
-							default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
9161
-						}
9162
-					}
9163
-					calender += "'>";
9164
-				}
9165
-				calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
9166
-					( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : "" ) +
9167
-					( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : "" ) +
9168
-					this._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate,
9169
-					row > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers
9170
-					"</div><table class='ui-datepicker-calendar'><thead>" +
9171
-					"<tr>";
9172
-				thead = ( showWeek ? "<th class='ui-datepicker-week-col'>" + this._get( inst, "weekHeader" ) + "</th>" : "" );
9173
-				for ( dow = 0; dow < 7; dow++ ) { // days of the week
9174
-					day = ( dow + firstDay ) % 7;
9175
-					thead += "<th scope='col'" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "" ) + ">" +
9176
-						"<span title='" + dayNames[ day ] + "'>" + dayNamesMin[ day ] + "</span></th>";
9177
-				}
9178
-				calender += thead + "</tr></thead><tbody>";
9179
-				daysInMonth = this._getDaysInMonth( drawYear, drawMonth );
9180
-				if ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) {
9181
-					inst.selectedDay = Math.min( inst.selectedDay, daysInMonth );
9182
-				}
9183
-				leadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7;
9184
-				curRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate
9185
-				numRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043)
9186
-				this.maxRows = numRows;
9187
-				printDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) );
9188
-				for ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows
9189
-					calender += "<tr>";
9190
-					tbody = ( !showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
9191
-						this._get( inst, "calculateWeek" )( printDate ) + "</td>" );
9192
-					for ( dow = 0; dow < 7; dow++ ) { // create date picker days
9193
-						daySettings = ( beforeShowDay ?
9194
-							beforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, "" ] );
9195
-						otherMonth = ( printDate.getMonth() !== drawMonth );
9196
-						unselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] ||
9197
-							( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate );
9198
-						tbody += "<td class='" +
9199
-							( ( dow + firstDay + 6 ) % 7 >= 5 ? " ui-datepicker-week-end" : "" ) + // highlight weekends
9200
-							( otherMonth ? " ui-datepicker-other-month" : "" ) + // highlight days from other months
9201
-							( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key
9202
-							( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ?
9203
-
9204
-							// or defaultDate is current printedDate and defaultDate is selectedDate
9205
-							" " + this._dayOverClass : "" ) + // highlight selected day
9206
-							( unselectable ? " " + this._unselectableClass + " ui-state-disabled" : "" ) +  // highlight unselectable days
9207
-							( otherMonth && !showOtherMonths ? "" : " " + daySettings[ 1 ] + // highlight custom dates
9208
-							( printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "" ) + // highlight selected day
9209
-							( printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "" ) ) + "'" + // highlight today (if different)
9210
-							( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? " title='" + daySettings[ 2 ].replace( /'/g, "&#39;" ) + "'" : "" ) + // cell title
9211
-							( unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'" ) + ">" + // actions
9212
-							( otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
9213
-							( unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
9214
-							( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) +
9215
-							( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day
9216
-							( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months
9217
-							"' href='#' aria-current='" + ( printDate.getTime() === currentDate.getTime() ? "true" : "false" ) + // mark date as selected for screen reader
9218
-							"' data-date='" + printDate.getDate() + // store date as data
9219
-							"'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
9220
-						printDate.setDate( printDate.getDate() + 1 );
9221
-						printDate = this._daylightSavingAdjust( printDate );
9222
-					}
9223
-					calender += tbody + "</tr>";
9224
-				}
9225
-				drawMonth++;
9226
-				if ( drawMonth > 11 ) {
9227
-					drawMonth = 0;
9228
-					drawYear++;
9229
-				}
9230
-				calender += "</tbody></table>" + ( isMultiMonth ? "</div>" +
9231
-							( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? "<div class='ui-datepicker-row-break'></div>" : "" ) : "" );
9232
-				group += calender;
9233
-			}
9234
-			html += group;
9235
-		}
9236
-		html += buttonPanel;
9237
-		inst._keyEvent = false;
9238
-		return html;
9239
-	},
9240
-
9241
-	/* Generate the month and year header. */
9242
-	_generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate,
9243
-			secondary, monthNames, monthNamesShort ) {
9244
-
9245
-		var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
9246
-			changeMonth = this._get( inst, "changeMonth" ),
9247
-			changeYear = this._get( inst, "changeYear" ),
9248
-			showMonthAfterYear = this._get( inst, "showMonthAfterYear" ),
9249
-			selectMonthLabel = this._get( inst, "selectMonthLabel" ),
9250
-			selectYearLabel = this._get( inst, "selectYearLabel" ),
9251
-			html = "<div class='ui-datepicker-title'>",
9252
-			monthHtml = "";
9253
-
9254
-		// Month selection
9255
-		if ( secondary || !changeMonth ) {
9256
-			monthHtml += "<span class='ui-datepicker-month'>" + monthNames[ drawMonth ] + "</span>";
9257
-		} else {
9258
-			inMinYear = ( minDate && minDate.getFullYear() === drawYear );
9259
-			inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );
9260
-			monthHtml += "<select class='ui-datepicker-month' aria-label='" + selectMonthLabel + "' data-handler='selectMonth' data-event='change'>";
9261
-			for ( month = 0; month < 12; month++ ) {
9262
-				if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {
9263
-					monthHtml += "<option value='" + month + "'" +
9264
-						( month === drawMonth ? " selected='selected'" : "" ) +
9265
-						">" + monthNamesShort[ month ] + "</option>";
9266
-				}
9267
-			}
9268
-			monthHtml += "</select>";
9269
-		}
9270
-
9271
-		if ( !showMonthAfterYear ) {
9272
-			html += monthHtml + ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" );
9273
-		}
9274
-
9275
-		// Year selection
9276
-		if ( !inst.yearshtml ) {
9277
-			inst.yearshtml = "";
9278
-			if ( secondary || !changeYear ) {
9279
-				html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
9280
-			} else {
9281
-
9282
-				// determine range of years to display
9283
-				years = this._get( inst, "yearRange" ).split( ":" );
9284
-				thisYear = new Date().getFullYear();
9285
-				determineYear = function( value ) {
9286
-					var year = ( value.match( /c[+\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :
9287
-						( value.match( /[+\-].*/ ) ? thisYear + parseInt( value, 10 ) :
9288
-						parseInt( value, 10 ) ) );
9289
-					return ( isNaN( year ) ? thisYear : year );
9290
-				};
9291
-				year = determineYear( years[ 0 ] );
9292
-				endYear = Math.max( year, determineYear( years[ 1 ] || "" ) );
9293
-				year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );
9294
-				endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );
9295
-				inst.yearshtml += "<select class='ui-datepicker-year' aria-label='" + selectYearLabel + "' data-handler='selectYear' data-event='change'>";
9296
-				for ( ; year <= endYear; year++ ) {
9297
-					inst.yearshtml += "<option value='" + year + "'" +
9298
-						( year === drawYear ? " selected='selected'" : "" ) +
9299
-						">" + year + "</option>";
9300
-				}
9301
-				inst.yearshtml += "</select>";
9302
-
9303
-				html += inst.yearshtml;
9304
-				inst.yearshtml = null;
9305
-			}
9306
-		}
9307
-
9308
-		html += this._get( inst, "yearSuffix" );
9309
-		if ( showMonthAfterYear ) {
9310
-			html += ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" ) + monthHtml;
9311
-		}
9312
-		html += "</div>"; // Close datepicker_header
9313
-		return html;
9314
-	},
9315
-
9316
-	/* Adjust one of the date sub-fields. */
9317
-	_adjustInstDate: function( inst, offset, period ) {
9318
-		var year = inst.selectedYear + ( period === "Y" ? offset : 0 ),
9319
-			month = inst.selectedMonth + ( period === "M" ? offset : 0 ),
9320
-			day = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === "D" ? offset : 0 ),
9321
-			date = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) );
9322
-
9323
-		inst.selectedDay = date.getDate();
9324
-		inst.drawMonth = inst.selectedMonth = date.getMonth();
9325
-		inst.drawYear = inst.selectedYear = date.getFullYear();
9326
-		if ( period === "M" || period === "Y" ) {
9327
-			this._notifyChange( inst );
9328
-		}
9329
-	},
9330
-
9331
-	/* Ensure a date is within any min/max bounds. */
9332
-	_restrictMinMax: function( inst, date ) {
9333
-		var minDate = this._getMinMaxDate( inst, "min" ),
9334
-			maxDate = this._getMinMaxDate( inst, "max" ),
9335
-			newDate = ( minDate && date < minDate ? minDate : date );
9336
-		return ( maxDate && newDate > maxDate ? maxDate : newDate );
9337
-	},
9338
-
9339
-	/* Notify change of month/year. */
9340
-	_notifyChange: function( inst ) {
9341
-		var onChange = this._get( inst, "onChangeMonthYear" );
9342
-		if ( onChange ) {
9343
-			onChange.apply( ( inst.input ? inst.input[ 0 ] : null ),
9344
-				[ inst.selectedYear, inst.selectedMonth + 1, inst ] );
9345
-		}
9346
-	},
9347
-
9348
-	/* Determine the number of months to show. */
9349
-	_getNumberOfMonths: function( inst ) {
9350
-		var numMonths = this._get( inst, "numberOfMonths" );
9351
-		return ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === "number" ? [ 1, numMonths ] : numMonths ) );
9352
-	},
9353
-
9354
-	/* Determine the current maximum date - ensure no time components are set. */
9355
-	_getMinMaxDate: function( inst, minMax ) {
9356
-		return this._determineDate( inst, this._get( inst, minMax + "Date" ), null );
9357
-	},
9358
-
9359
-	/* Find the number of days in a given month. */
9360
-	_getDaysInMonth: function( year, month ) {
9361
-		return 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate();
9362
-	},
9363
-
9364
-	/* Find the day of the week of the first of a month. */
9365
-	_getFirstDayOfMonth: function( year, month ) {
9366
-		return new Date( year, month, 1 ).getDay();
9367
-	},
9368
-
9369
-	/* Determines if we should allow a "next/prev" month display change. */
9370
-	_canAdjustMonth: function( inst, offset, curYear, curMonth ) {
9371
-		var numMonths = this._getNumberOfMonths( inst ),
9372
-			date = this._daylightSavingAdjust( new Date( curYear,
9373
-			curMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) );
9374
-
9375
-		if ( offset < 0 ) {
9376
-			date.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) );
9377
-		}
9378
-		return this._isInRange( inst, date );
9379
-	},
9380
-
9381
-	/* Is the given date in the accepted range? */
9382
-	_isInRange: function( inst, date ) {
9383
-		var yearSplit, currentYear,
9384
-			minDate = this._getMinMaxDate( inst, "min" ),
9385
-			maxDate = this._getMinMaxDate( inst, "max" ),
9386
-			minYear = null,
9387
-			maxYear = null,
9388
-			years = this._get( inst, "yearRange" );
9389
-			if ( years ) {
9390
-				yearSplit = years.split( ":" );
9391
-				currentYear = new Date().getFullYear();
9392
-				minYear = parseInt( yearSplit[ 0 ], 10 );
9393
-				maxYear = parseInt( yearSplit[ 1 ], 10 );
9394
-				if ( yearSplit[ 0 ].match( /[+\-].*/ ) ) {
9395
-					minYear += currentYear;
9396
-				}
9397
-				if ( yearSplit[ 1 ].match( /[+\-].*/ ) ) {
9398
-					maxYear += currentYear;
9399
-				}
9400
-			}
9401
-
9402
-		return ( ( !minDate || date.getTime() >= minDate.getTime() ) &&
9403
-			( !maxDate || date.getTime() <= maxDate.getTime() ) &&
9404
-			( !minYear || date.getFullYear() >= minYear ) &&
9405
-			( !maxYear || date.getFullYear() <= maxYear ) );
9406
-	},
9407
-
9408
-	/* Provide the configuration settings for formatting/parsing. */
9409
-	_getFormatConfig: function( inst ) {
9410
-		var shortYearCutoff = this._get( inst, "shortYearCutoff" );
9411
-		shortYearCutoff = ( typeof shortYearCutoff !== "string" ? shortYearCutoff :
9412
-			new Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) );
9413
-		return { shortYearCutoff: shortYearCutoff,
9414
-			dayNamesShort: this._get( inst, "dayNamesShort" ), dayNames: this._get( inst, "dayNames" ),
9415
-			monthNamesShort: this._get( inst, "monthNamesShort" ), monthNames: this._get( inst, "monthNames" ) };
9416
-	},
9417
-
9418
-	/* Format the given date for display. */
9419
-	_formatDate: function( inst, day, month, year ) {
9420
-		if ( !day ) {
9421
-			inst.currentDay = inst.selectedDay;
9422
-			inst.currentMonth = inst.selectedMonth;
9423
-			inst.currentYear = inst.selectedYear;
9424
-		}
9425
-		var date = ( day ? ( typeof day === "object" ? day :
9426
-			this._daylightSavingAdjust( new Date( year, month, day ) ) ) :
9427
-			this._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
9428
-		return this.formatDate( this._get( inst, "dateFormat" ), date, this._getFormatConfig( inst ) );
9429
-	}
9430
-} );
9431
-
9432
-/*
9433
- * Bind hover events for datepicker elements.
9434
- * Done via delegate so the binding only occurs once in the lifetime of the parent div.
9435
- * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
9436
- */
9437
-function datepicker_bindHover( dpDiv ) {
9438
-	var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
9439
-	return dpDiv.on( "mouseout", selector, function() {
9440
-			$( this ).removeClass( "ui-state-hover" );
9441
-			if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
9442
-				$( this ).removeClass( "ui-datepicker-prev-hover" );
9443
-			}
9444
-			if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
9445
-				$( this ).removeClass( "ui-datepicker-next-hover" );
9446
-			}
9447
-		} )
9448
-		.on( "mouseover", selector, datepicker_handleMouseover );
9449
-}
9450
-
9451
-function datepicker_handleMouseover() {
9452
-	if ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) {
9453
-		$( this ).parents( ".ui-datepicker-calendar" ).find( "a" ).removeClass( "ui-state-hover" );
9454
-		$( this ).addClass( "ui-state-hover" );
9455
-		if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
9456
-			$( this ).addClass( "ui-datepicker-prev-hover" );
9457
-		}
9458
-		if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
9459
-			$( this ).addClass( "ui-datepicker-next-hover" );
9460
-		}
9461
-	}
9462
-}
9463
-
9464
-/* jQuery extend now ignores nulls! */
9465
-function datepicker_extendRemove( target, props ) {
9466
-	$.extend( target, props );
9467
-	for ( var name in props ) {
9468
-		if ( props[ name ] == null ) {
9469
-			target[ name ] = props[ name ];
9470
-		}
9471
-	}
9472
-	return target;
9473
-}
9474
-
9475
-/* Invoke the datepicker functionality.
9476
-   @param  options  string - a command, optionally followed by additional parameters or
9477
-					Object - settings for attaching new datepicker functionality
9478
-   @return  jQuery object */
9479
-$.fn.datepicker = function( options ) {
9480
-
9481
-	/* Verify an empty collection wasn't passed - Fixes #6976 */
9482
-	if ( !this.length ) {
9483
-		return this;
9484
-	}
9485
-
9486
-	/* Initialise the date picker. */
9487
-	if ( !$.datepicker.initialized ) {
9488
-		$( document ).on( "mousedown", $.datepicker._checkExternalClick );
9489
-		$.datepicker.initialized = true;
9490
-	}
9491
-
9492
-	/* Append datepicker main container to body if not exist. */
9493
-	if ( $( "#" + $.datepicker._mainDivId ).length === 0 ) {
9494
-		$( "body" ).append( $.datepicker.dpDiv );
9495
-	}
9496
-
9497
-	var otherArgs = Array.prototype.slice.call( arguments, 1 );
9498
-	if ( typeof options === "string" && ( options === "isDisabled" || options === "getDate" || options === "widget" ) ) {
9499
-		return $.datepicker[ "_" + options + "Datepicker" ].
9500
-			apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
9501
-	}
9502
-	if ( options === "option" && arguments.length === 2 && typeof arguments[ 1 ] === "string" ) {
9503
-		return $.datepicker[ "_" + options + "Datepicker" ].
9504
-			apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
9505
-	}
9506
-	return this.each( function() {
9507
-		if ( typeof options === "string" ) {
9508
-			$.datepicker[ "_" + options + "Datepicker" ]
9509
-				.apply( $.datepicker, [ this ].concat( otherArgs ) );
9510
-		} else {
9511
-			$.datepicker._attachDatepicker( this, options );
9512
-		}
9513
-	} );
9514
-};
9515
-
9516
-$.datepicker = new Datepicker(); // singleton instance
9517
-$.datepicker.initialized = false;
9518
-$.datepicker.uuid = new Date().getTime();
9519
-$.datepicker.version = "1.13.2";
9520
-
9521
-var widgetsDatepicker = $.datepicker;
9522
-
9523
-
9524
-
9525
-// This file is deprecated
9526
-var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
9527
-
9528
-/*!
9529
- * jQuery UI Mouse 1.13.2
9530
- * http://jqueryui.com
9531
- *
9532
- * Copyright jQuery Foundation and other contributors
9533
- * Released under the MIT license.
9534
- * http://jquery.org/license
9535
- */
9536
-
9537
-//>>label: Mouse
9538
-//>>group: Widgets
9539
-//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.
9540
-//>>docs: http://api.jqueryui.com/mouse/
9541
-
9542
-
9543
-var mouseHandled = false;
9544
-$( document ).on( "mouseup", function() {
9545
-	mouseHandled = false;
9546
-} );
9547
-
9548
-var widgetsMouse = $.widget( "ui.mouse", {
9549
-	version: "1.13.2",
9550
-	options: {
9551
-		cancel: "input, textarea, button, select, option",
9552
-		distance: 1,
9553
-		delay: 0
9554
-	},
9555
-	_mouseInit: function() {
9556
-		var that = this;
9557
-
9558
-		this.element
9559
-			.on( "mousedown." + this.widgetName, function( event ) {
9560
-				return that._mouseDown( event );
9561
-			} )
9562
-			.on( "click." + this.widgetName, function( event ) {
9563
-				if ( true === $.data( event.target, that.widgetName + ".preventClickEvent" ) ) {
9564
-					$.removeData( event.target, that.widgetName + ".preventClickEvent" );
9565
-					event.stopImmediatePropagation();
9566
-					return false;
9567
-				}
9568
-			} );
9569
-
9570
-		this.started = false;
9571
-	},
9572
-
9573
-	// TODO: make sure destroying one instance of mouse doesn't mess with
9574
-	// other instances of mouse
9575
-	_mouseDestroy: function() {
9576
-		this.element.off( "." + this.widgetName );
9577
-		if ( this._mouseMoveDelegate ) {
9578
-			this.document
9579
-				.off( "mousemove." + this.widgetName, this._mouseMoveDelegate )
9580
-				.off( "mouseup." + this.widgetName, this._mouseUpDelegate );
9581
-		}
9582
-	},
9583
-
9584
-	_mouseDown: function( event ) {
9585
-
9586
-		// don't let more than one widget handle mouseStart
9587
-		if ( mouseHandled ) {
9588
-			return;
9589
-		}
9590
-
9591
-		this._mouseMoved = false;
9592
-
9593
-		// We may have missed mouseup (out of window)
9594
-		if ( this._mouseStarted ) {
9595
-			this._mouseUp( event );
9596
-		}
9597
-
9598
-		this._mouseDownEvent = event;
9599
-
9600
-		var that = this,
9601
-			btnIsLeft = ( event.which === 1 ),
9602
-
9603
-			// event.target.nodeName works around a bug in IE 8 with
9604
-			// disabled inputs (#7620)
9605
-			elIsCancel = ( typeof this.options.cancel === "string" && event.target.nodeName ?
9606
-				$( event.target ).closest( this.options.cancel ).length : false );
9607
-		if ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {
9608
-			return true;
9609
-		}
9610
-
9611
-		this.mouseDelayMet = !this.options.delay;
9612
-		if ( !this.mouseDelayMet ) {
9613
-			this._mouseDelayTimer = setTimeout( function() {
9614
-				that.mouseDelayMet = true;
9615
-			}, this.options.delay );
9616
-		}
9617
-
9618
-		if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
9619
-			this._mouseStarted = ( this._mouseStart( event ) !== false );
9620
-			if ( !this._mouseStarted ) {
9621
-				event.preventDefault();
9622
-				return true;
9623
-			}
9624
-		}
9625
-
9626
-		// Click event may never have fired (Gecko & Opera)
9627
-		if ( true === $.data( event.target, this.widgetName + ".preventClickEvent" ) ) {
9628
-			$.removeData( event.target, this.widgetName + ".preventClickEvent" );
9629
-		}
9630
-
9631
-		// These delegates are required to keep context
9632
-		this._mouseMoveDelegate = function( event ) {
9633
-			return that._mouseMove( event );
9634
-		};
9635
-		this._mouseUpDelegate = function( event ) {
9636
-			return that._mouseUp( event );
9637
-		};
9638
-
9639
-		this.document
9640
-			.on( "mousemove." + this.widgetName, this._mouseMoveDelegate )
9641
-			.on( "mouseup." + this.widgetName, this._mouseUpDelegate );
9642
-
9643
-		event.preventDefault();
9644
-
9645
-		mouseHandled = true;
9646
-		return true;
9647
-	},
9648
-
9649
-	_mouseMove: function( event ) {
9650
-
9651
-		// Only check for mouseups outside the document if you've moved inside the document
9652
-		// at least once. This prevents the firing of mouseup in the case of IE<9, which will
9653
-		// fire a mousemove event if content is placed under the cursor. See #7778
9654
-		// Support: IE <9
9655
-		if ( this._mouseMoved ) {
9656
-
9657
-			// IE mouseup check - mouseup happened when mouse was out of window
9658
-			if ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&
9659
-					!event.button ) {
9660
-				return this._mouseUp( event );
9661
-
9662
-			// Iframe mouseup check - mouseup occurred in another document
9663
-			} else if ( !event.which ) {
9664
-
9665
-				// Support: Safari <=8 - 9
9666
-				// Safari sets which to 0 if you press any of the following keys
9667
-				// during a drag (#14461)
9668
-				if ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||
9669
-						event.originalEvent.metaKey || event.originalEvent.shiftKey ) {
9670
-					this.ignoreMissingWhich = true;
9671
-				} else if ( !this.ignoreMissingWhich ) {
9672
-					return this._mouseUp( event );
9673
-				}
9674
-			}
9675
-		}
9676
-
9677
-		if ( event.which || event.button ) {
9678
-			this._mouseMoved = true;
9679
-		}
9680
-
9681
-		if ( this._mouseStarted ) {
9682
-			this._mouseDrag( event );
9683
-			return event.preventDefault();
9684
-		}
9685
-
9686
-		if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
9687
-			this._mouseStarted =
9688
-				( this._mouseStart( this._mouseDownEvent, event ) !== false );
9689
-			if ( this._mouseStarted ) {
9690
-				this._mouseDrag( event );
9691
-			} else {
9692
-				this._mouseUp( event );
9693
-			}
9694
-		}
9695
-
9696
-		return !this._mouseStarted;
9697
-	},
9698
-
9699
-	_mouseUp: function( event ) {
9700
-		this.document
9701
-			.off( "mousemove." + this.widgetName, this._mouseMoveDelegate )
9702
-			.off( "mouseup." + this.widgetName, this._mouseUpDelegate );
9703
-
9704
-		if ( this._mouseStarted ) {
9705
-			this._mouseStarted = false;
9706
-
9707
-			if ( event.target === this._mouseDownEvent.target ) {
9708
-				$.data( event.target, this.widgetName + ".preventClickEvent", true );
9709
-			}
9710
-
9711
-			this._mouseStop( event );
9712
-		}
9713
-
9714
-		if ( this._mouseDelayTimer ) {
9715
-			clearTimeout( this._mouseDelayTimer );
9716
-			delete this._mouseDelayTimer;
9717
-		}
9718
-
9719
-		this.ignoreMissingWhich = false;
9720
-		mouseHandled = false;
9721
-		event.preventDefault();
9722
-	},
9723
-
9724
-	_mouseDistanceMet: function( event ) {
9725
-		return ( Math.max(
9726
-				Math.abs( this._mouseDownEvent.pageX - event.pageX ),
9727
-				Math.abs( this._mouseDownEvent.pageY - event.pageY )
9728
-			) >= this.options.distance
9729
-		);
9730
-	},
9731
-
9732
-	_mouseDelayMet: function( /* event */ ) {
9733
-		return this.mouseDelayMet;
9734
-	},
9735
-
9736
-	// These are placeholder methods, to be overriden by extending plugin
9737
-	_mouseStart: function( /* event */ ) {},
9738
-	_mouseDrag: function( /* event */ ) {},
9739
-	_mouseStop: function( /* event */ ) {},
9740
-	_mouseCapture: function( /* event */ ) {
9741
-		return true;
9742
-	}
9743
-} );
9744
-
9745
-
9746
-
9747
-// $.ui.plugin is deprecated. Use $.widget() extensions instead.
9748
-var plugin = $.ui.plugin = {
9749
-	add: function( module, option, set ) {
9750
-		var i,
9751
-			proto = $.ui[ module ].prototype;
9752
-		for ( i in set ) {
9753
-			proto.plugins[ i ] = proto.plugins[ i ] || [];
9754
-			proto.plugins[ i ].push( [ option, set[ i ] ] );
9755
-		}
9756
-	},
9757
-	call: function( instance, name, args, allowDisconnected ) {
9758
-		var i,
9759
-			set = instance.plugins[ name ];
9760
-
9761
-		if ( !set ) {
9762
-			return;
9763
-		}
9764
-
9765
-		if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||
9766
-				instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
9767
-			return;
9768
-		}
9769
-
9770
-		for ( i = 0; i < set.length; i++ ) {
9771
-			if ( instance.options[ set[ i ][ 0 ] ] ) {
9772
-				set[ i ][ 1 ].apply( instance.element, args );
9773
-			}
9774
-		}
9775
-	}
9776
-};
9777
-
9778
-
9779
-
9780
-var safeBlur = $.ui.safeBlur = function( element ) {
9781
-
9782
-	// Support: IE9 - 10 only
9783
-	// If the <body> is blurred, IE will switch windows, see #9420
9784
-	if ( element && element.nodeName.toLowerCase() !== "body" ) {
9785
-		$( element ).trigger( "blur" );
9786
-	}
9787
-};
9788
-
9789
-
9790
-/*!
9791
- * jQuery UI Draggable 1.13.2
9792
- * http://jqueryui.com
9793
- *
9794
- * Copyright jQuery Foundation and other contributors
9795
- * Released under the MIT license.
9796
- * http://jquery.org/license
9797
- */
9798
-
9799
-//>>label: Draggable
9800
-//>>group: Interactions
9801
-//>>description: Enables dragging functionality for any element.
9802
-//>>docs: http://api.jqueryui.com/draggable/
9803
-//>>demos: http://jqueryui.com/draggable/
9804
-//>>css.structure: ../../themes/base/draggable.css
9805
-
9806
-
9807
-$.widget( "ui.draggable", $.ui.mouse, {
9808
-	version: "1.13.2",
9809
-	widgetEventPrefix: "drag",
9810
-	options: {
9811
-		addClasses: true,
9812
-		appendTo: "parent",
9813
-		axis: false,
9814
-		connectToSortable: false,
9815
-		containment: false,
9816
-		cursor: "auto",
9817
-		cursorAt: false,
9818
-		grid: false,
9819
-		handle: false,
9820
-		helper: "original",
9821
-		iframeFix: false,
9822
-		opacity: false,
9823
-		refreshPositions: false,
9824
-		revert: false,
9825
-		revertDuration: 500,
9826
-		scope: "default",
9827
-		scroll: true,
9828
-		scrollSensitivity: 20,
9829
-		scrollSpeed: 20,
9830
-		snap: false,
9831
-		snapMode: "both",
9832
-		snapTolerance: 20,
9833
-		stack: false,
9834
-		zIndex: false,
9835
-
9836
-		// Callbacks
9837
-		drag: null,
9838
-		start: null,
9839
-		stop: null
9840
-	},
9841
-	_create: function() {
9842
-
9843
-		if ( this.options.helper === "original" ) {
9844
-			this._setPositionRelative();
9845
-		}
9846
-		if ( this.options.addClasses ) {
9847
-			this._addClass( "ui-draggable" );
9848
-		}
9849
-		this._setHandleClassName();
9850
-
9851
-		this._mouseInit();
9852
-	},
9853
-
9854
-	_setOption: function( key, value ) {
9855
-		this._super( key, value );
9856
-		if ( key === "handle" ) {
9857
-			this._removeHandleClassName();
9858
-			this._setHandleClassName();
9859
-		}
9860
-	},
9861
-
9862
-	_destroy: function() {
9863
-		if ( ( this.helper || this.element ).is( ".ui-draggable-dragging" ) ) {
9864
-			this.destroyOnClear = true;
9865
-			return;
9866
-		}
9867
-		this._removeHandleClassName();
9868
-		this._mouseDestroy();
9869
-	},
9870
-
9871
-	_mouseCapture: function( event ) {
9872
-		var o = this.options;
9873
-
9874
-		// Among others, prevent a drag on a resizable-handle
9875
-		if ( this.helper || o.disabled ||
9876
-				$( event.target ).closest( ".ui-resizable-handle" ).length > 0 ) {
9877
-			return false;
9878
-		}
9879
-
9880
-		//Quit if we're not on a valid handle
9881
-		this.handle = this._getHandle( event );
9882
-		if ( !this.handle ) {
9883
-			return false;
9884
-		}
9885
-
9886
-		this._blurActiveElement( event );
9887
-
9888
-		this._blockFrames( o.iframeFix === true ? "iframe" : o.iframeFix );
9889
-
9890
-		return true;
9891
-
9892
-	},
9893
-
9894
-	_blockFrames: function( selector ) {
9895
-		this.iframeBlocks = this.document.find( selector ).map( function() {
9896
-			var iframe = $( this );
9897
-
9898
-			return $( "<div>" )
9899
-				.css( "position", "absolute" )
9900
-				.appendTo( iframe.parent() )
9901
-				.outerWidth( iframe.outerWidth() )
9902
-				.outerHeight( iframe.outerHeight() )
9903
-				.offset( iframe.offset() )[ 0 ];
9904
-		} );
9905
-	},
9906
-
9907
-	_unblockFrames: function() {
9908
-		if ( this.iframeBlocks ) {
9909
-			this.iframeBlocks.remove();
9910
-			delete this.iframeBlocks;
9911
-		}
9912
-	},
9913
-
9914
-	_blurActiveElement: function( event ) {
9915
-		var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
9916
-			target = $( event.target );
9917
-
9918
-		// Don't blur if the event occurred on an element that is within
9919
-		// the currently focused element
9920
-		// See #10527, #12472
9921
-		if ( target.closest( activeElement ).length ) {
9922
-			return;
9923
-		}
9924
-
9925
-		// Blur any element that currently has focus, see #4261
9926
-		$.ui.safeBlur( activeElement );
9927
-	},
9928
-
9929
-	_mouseStart: function( event ) {
9930
-
9931
-		var o = this.options;
9932
-
9933
-		//Create and append the visible helper
9934
-		this.helper = this._createHelper( event );
9935
-
9936
-		this._addClass( this.helper, "ui-draggable-dragging" );
9937
-
9938
-		//Cache the helper size
9939
-		this._cacheHelperProportions();
9940
-
9941
-		//If ddmanager is used for droppables, set the global draggable
9942
-		if ( $.ui.ddmanager ) {
9943
-			$.ui.ddmanager.current = this;
9944
-		}
9945
-
9946
-		/*
9947
-		 * - Position generation -
9948
-		 * This block generates everything position related - it's the core of draggables.
9949
-		 */
9950
-
9951
-		//Cache the margins of the original element
9952
-		this._cacheMargins();
9953
-
9954
-		//Store the helper's css position
9955
-		this.cssPosition = this.helper.css( "position" );
9956
-		this.scrollParent = this.helper.scrollParent( true );
9957
-		this.offsetParent = this.helper.offsetParent();
9958
-		this.hasFixedAncestor = this.helper.parents().filter( function() {
9959
-				return $( this ).css( "position" ) === "fixed";
9960
-			} ).length > 0;
9961
-
9962
-		//The element's absolute position on the page minus margins
9963
-		this.positionAbs = this.element.offset();
9964
-		this._refreshOffsets( event );
9965
-
9966
-		//Generate the original position
9967
-		this.originalPosition = this.position = this._generatePosition( event, false );
9968
-		this.originalPageX = event.pageX;
9969
-		this.originalPageY = event.pageY;
9970
-
9971
-		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
9972
-		if ( o.cursorAt ) {
9973
-			this._adjustOffsetFromHelper( o.cursorAt );
9974
-		}
9975
-
9976
-		//Set a containment if given in the options
9977
-		this._setContainment();
9978
-
9979
-		//Trigger event + callbacks
9980
-		if ( this._trigger( "start", event ) === false ) {
9981
-			this._clear();
9982
-			return false;
9983
-		}
9984
-
9985
-		//Recache the helper size
9986
-		this._cacheHelperProportions();
9987
-
9988
-		//Prepare the droppable offsets
9989
-		if ( $.ui.ddmanager && !o.dropBehaviour ) {
9990
-			$.ui.ddmanager.prepareOffsets( this, event );
9991
-		}
9992
-
9993
-		// Execute the drag once - this causes the helper not to be visible before getting its
9994
-		// correct position
9995
-		this._mouseDrag( event, true );
9996
-
9997
-		// If the ddmanager is used for droppables, inform the manager that dragging has started
9998
-		// (see #5003)
9999
-		if ( $.ui.ddmanager ) {
10000
-			$.ui.ddmanager.dragStart( this, event );
10001
-		}
10002
-
10003
-		return true;
10004
-	},
10005
-
10006
-	_refreshOffsets: function( event ) {
10007
-		this.offset = {
10008
-			top: this.positionAbs.top - this.margins.top,
10009
-			left: this.positionAbs.left - this.margins.left,
10010
-			scroll: false,
10011
-			parent: this._getParentOffset(),
10012
-			relative: this._getRelativeOffset()
10013
-		};
10014
-
10015
-		this.offset.click = {
10016
-			left: event.pageX - this.offset.left,
10017
-			top: event.pageY - this.offset.top
10018
-		};
10019
-	},
10020
-
10021
-	_mouseDrag: function( event, noPropagation ) {
10022
-
10023
-		// reset any necessary cached properties (see #5009)
10024
-		if ( this.hasFixedAncestor ) {
10025
-			this.offset.parent = this._getParentOffset();
10026
-		}
10027
-
10028
-		//Compute the helpers position
10029
-		this.position = this._generatePosition( event, true );
10030
-		this.positionAbs = this._convertPositionTo( "absolute" );
10031
-
10032
-		//Call plugins and callbacks and use the resulting position if something is returned
10033
-		if ( !noPropagation ) {
10034
-			var ui = this._uiHash();
10035
-			if ( this._trigger( "drag", event, ui ) === false ) {
10036
-				this._mouseUp( new $.Event( "mouseup", event ) );
10037
-				return false;
10038
-			}
10039
-			this.position = ui.position;
10040
-		}
10041
-
10042
-		this.helper[ 0 ].style.left = this.position.left + "px";
10043
-		this.helper[ 0 ].style.top = this.position.top + "px";
10044
-
10045
-		if ( $.ui.ddmanager ) {
10046
-			$.ui.ddmanager.drag( this, event );
10047
-		}
10048
-
10049
-		return false;
10050
-	},
10051
-
10052
-	_mouseStop: function( event ) {
10053
-
10054
-		//If we are using droppables, inform the manager about the drop
10055
-		var that = this,
10056
-			dropped = false;
10057
-		if ( $.ui.ddmanager && !this.options.dropBehaviour ) {
10058
-			dropped = $.ui.ddmanager.drop( this, event );
10059
-		}
10060
-
10061
-		//if a drop comes from outside (a sortable)
10062
-		if ( this.dropped ) {
10063
-			dropped = this.dropped;
10064
-			this.dropped = false;
10065
-		}
10066
-
10067
-		if ( ( this.options.revert === "invalid" && !dropped ) ||
10068
-				( this.options.revert === "valid" && dropped ) ||
10069
-				this.options.revert === true || ( typeof this.options.revert === "function" &&
10070
-				this.options.revert.call( this.element, dropped ) )
10071
-		) {
10072
-			$( this.helper ).animate(
10073
-				this.originalPosition,
10074
-				parseInt( this.options.revertDuration, 10 ),
10075
-				function() {
10076
-					if ( that._trigger( "stop", event ) !== false ) {
10077
-						that._clear();
10078
-					}
10079
-				}
10080
-			);
10081
-		} else {
10082
-			if ( this._trigger( "stop", event ) !== false ) {
10083
-				this._clear();
10084
-			}
10085
-		}
10086
-
10087
-		return false;
10088
-	},
10089
-
10090
-	_mouseUp: function( event ) {
10091
-		this._unblockFrames();
10092
-
10093
-		// If the ddmanager is used for droppables, inform the manager that dragging has stopped
10094
-		// (see #5003)
10095
-		if ( $.ui.ddmanager ) {
10096
-			$.ui.ddmanager.dragStop( this, event );
10097
-		}
10098
-
10099
-		// Only need to focus if the event occurred on the draggable itself, see #10527
10100
-		if ( this.handleElement.is( event.target ) ) {
10101
-
10102
-			// The interaction is over; whether or not the click resulted in a drag,
10103
-			// focus the element
10104
-			this.element.trigger( "focus" );
10105
-		}
10106
-
10107
-		return $.ui.mouse.prototype._mouseUp.call( this, event );
10108
-	},
10109
-
10110
-	cancel: function() {
10111
-
10112
-		if ( this.helper.is( ".ui-draggable-dragging" ) ) {
10113
-			this._mouseUp( new $.Event( "mouseup", { target: this.element[ 0 ] } ) );
10114
-		} else {
10115
-			this._clear();
10116
-		}
10117
-
10118
-		return this;
10119
-
10120
-	},
10121
-
10122
-	_getHandle: function( event ) {
10123
-		return this.options.handle ?
10124
-			!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
10125
-			true;
10126
-	},
10127
-
10128
-	_setHandleClassName: function() {
10129
-		this.handleElement = this.options.handle ?
10130
-			this.element.find( this.options.handle ) : this.element;
10131
-		this._addClass( this.handleElement, "ui-draggable-handle" );
10132
-	},
10133
-
10134
-	_removeHandleClassName: function() {
10135
-		this._removeClass( this.handleElement, "ui-draggable-handle" );
10136
-	},
10137
-
10138
-	_createHelper: function( event ) {
10139
-
10140
-		var o = this.options,
10141
-			helperIsFunction = typeof o.helper === "function",
10142
-			helper = helperIsFunction ?
10143
-				$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
10144
-				( o.helper === "clone" ?
10145
-					this.element.clone().removeAttr( "id" ) :
10146
-					this.element );
10147
-
10148
-		if ( !helper.parents( "body" ).length ) {
10149
-			helper.appendTo( ( o.appendTo === "parent" ?
10150
-				this.element[ 0 ].parentNode :
10151
-				o.appendTo ) );
10152
-		}
10153
-
10154
-		// Http://bugs.jqueryui.com/ticket/9446
10155
-		// a helper function can return the original element
10156
-		// which wouldn't have been set to relative in _create
10157
-		if ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {
10158
-			this._setPositionRelative();
10159
-		}
10160
-
10161
-		if ( helper[ 0 ] !== this.element[ 0 ] &&
10162
-				!( /(fixed|absolute)/ ).test( helper.css( "position" ) ) ) {
10163
-			helper.css( "position", "absolute" );
10164
-		}
10165
-
10166
-		return helper;
10167
-
10168
-	},
10169
-
10170
-	_setPositionRelative: function() {
10171
-		if ( !( /^(?:r|a|f)/ ).test( this.element.css( "position" ) ) ) {
10172
-			this.element[ 0 ].style.position = "relative";
10173
-		}
10174
-	},
10175
-
10176
-	_adjustOffsetFromHelper: function( obj ) {
10177
-		if ( typeof obj === "string" ) {
10178
-			obj = obj.split( " " );
10179
-		}
10180
-		if ( Array.isArray( obj ) ) {
10181
-			obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
10182
-		}
10183
-		if ( "left" in obj ) {
10184
-			this.offset.click.left = obj.left + this.margins.left;
10185
-		}
10186
-		if ( "right" in obj ) {
10187
-			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
10188
-		}
10189
-		if ( "top" in obj ) {
10190
-			this.offset.click.top = obj.top + this.margins.top;
10191
-		}
10192
-		if ( "bottom" in obj ) {
10193
-			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
10194
-		}
10195
-	},
10196
-
10197
-	_isRootNode: function( element ) {
10198
-		return ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];
10199
-	},
10200
-
10201
-	_getParentOffset: function() {
10202
-
10203
-		//Get the offsetParent and cache its position
10204
-		var po = this.offsetParent.offset(),
10205
-			document = this.document[ 0 ];
10206
-
10207
-		// This is a special case where we need to modify a offset calculated on start, since the
10208
-		// following happened:
10209
-		// 1. The position of the helper is absolute, so it's position is calculated based on the
10210
-		// next positioned parent
10211
-		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't
10212
-		// the document, which means that the scroll is included in the initial calculation of the
10213
-		// offset of the parent, and never recalculated upon drag
10214
-		if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== document &&
10215
-				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {
10216
-			po.left += this.scrollParent.scrollLeft();
10217
-			po.top += this.scrollParent.scrollTop();
10218
-		}
10219
-
10220
-		if ( this._isRootNode( this.offsetParent[ 0 ] ) ) {
10221
-			po = { top: 0, left: 0 };
10222
-		}
10223
-
10224
-		return {
10225
-			top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ),
10226
-			left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 )
10227
-		};
10228
-
10229
-	},
10230
-
10231
-	_getRelativeOffset: function() {
10232
-		if ( this.cssPosition !== "relative" ) {
10233
-			return { top: 0, left: 0 };
10234
-		}
10235
-
10236
-		var p = this.element.position(),
10237
-			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
10238
-
10239
-		return {
10240
-			top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) +
10241
-				( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),
10242
-			left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) +
10243
-				( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )
10244
-		};
10245
-
10246
-	},
10247
-
10248
-	_cacheMargins: function() {
10249
-		this.margins = {
10250
-			left: ( parseInt( this.element.css( "marginLeft" ), 10 ) || 0 ),
10251
-			top: ( parseInt( this.element.css( "marginTop" ), 10 ) || 0 ),
10252
-			right: ( parseInt( this.element.css( "marginRight" ), 10 ) || 0 ),
10253
-			bottom: ( parseInt( this.element.css( "marginBottom" ), 10 ) || 0 )
10254
-		};
10255
-	},
10256
-
10257
-	_cacheHelperProportions: function() {
10258
-		this.helperProportions = {
10259
-			width: this.helper.outerWidth(),
10260
-			height: this.helper.outerHeight()
10261
-		};
10262
-	},
10263
-
10264
-	_setContainment: function() {
10265
-
10266
-		var isUserScrollable, c, ce,
10267
-			o = this.options,
10268
-			document = this.document[ 0 ];
10269
-
10270
-		this.relativeContainer = null;
10271
-
10272
-		if ( !o.containment ) {
10273
-			this.containment = null;
10274
-			return;
10275
-		}
10276
-
10277
-		if ( o.containment === "window" ) {
10278
-			this.containment = [
10279
-				$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
10280
-				$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,
10281
-				$( window ).scrollLeft() + $( window ).width() -
10282
-					this.helperProportions.width - this.margins.left,
10283
-				$( window ).scrollTop() +
10284
-					( $( window ).height() || document.body.parentNode.scrollHeight ) -
10285
-					this.helperProportions.height - this.margins.top
10286
-			];
10287
-			return;
10288
-		}
10289
-
10290
-		if ( o.containment === "document" ) {
10291
-			this.containment = [
10292
-				0,
10293
-				0,
10294
-				$( document ).width() - this.helperProportions.width - this.margins.left,
10295
-				( $( document ).height() || document.body.parentNode.scrollHeight ) -
10296
-					this.helperProportions.height - this.margins.top
10297
-			];
10298
-			return;
10299
-		}
10300
-
10301
-		if ( o.containment.constructor === Array ) {
10302
-			this.containment = o.containment;
10303
-			return;
10304
-		}
10305
-
10306
-		if ( o.containment === "parent" ) {
10307
-			o.containment = this.helper[ 0 ].parentNode;
10308
-		}
10309
-
10310
-		c = $( o.containment );
10311
-		ce = c[ 0 ];
10312
-
10313
-		if ( !ce ) {
10314
-			return;
10315
-		}
10316
-
10317
-		isUserScrollable = /(scroll|auto)/.test( c.css( "overflow" ) );
10318
-
10319
-		this.containment = [
10320
-			( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) +
10321
-				( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ),
10322
-			( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) +
10323
-				( parseInt( c.css( "paddingTop" ), 10 ) || 0 ),
10324
-			( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
10325
-				( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) -
10326
-				( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) -
10327
-				this.helperProportions.width -
10328
-				this.margins.left -
10329
-				this.margins.right,
10330
-			( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
10331
-				( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) -
10332
-				( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) -
10333
-				this.helperProportions.height -
10334
-				this.margins.top -
10335
-				this.margins.bottom
10336
-		];
10337
-		this.relativeContainer = c;
10338
-	},
10339
-
10340
-	_convertPositionTo: function( d, pos ) {
10341
-
10342
-		if ( !pos ) {
10343
-			pos = this.position;
10344
-		}
10345
-
10346
-		var mod = d === "absolute" ? 1 : -1,
10347
-			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
10348
-
10349
-		return {
10350
-			top: (
10351
-
10352
-				// The absolute mouse position
10353
-				pos.top	+
10354
-
10355
-				// Only for relative positioned nodes: Relative offset from element to offset parent
10356
-				this.offset.relative.top * mod +
10357
-
10358
-				// The offsetParent's offset without borders (offset + border)
10359
-				this.offset.parent.top * mod -
10360
-				( ( this.cssPosition === "fixed" ?
10361
-					-this.offset.scroll.top :
10362
-					( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod )
10363
-			),
10364
-			left: (
10365
-
10366
-				// The absolute mouse position
10367
-				pos.left +
10368
-
10369
-				// Only for relative positioned nodes: Relative offset from element to offset parent
10370
-				this.offset.relative.left * mod +
10371
-
10372
-				// The offsetParent's offset without borders (offset + border)
10373
-				this.offset.parent.left * mod	-
10374
-				( ( this.cssPosition === "fixed" ?
10375
-					-this.offset.scroll.left :
10376
-					( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )
10377
-			)
10378
-		};
10379
-
10380
-	},
10381
-
10382
-	_generatePosition: function( event, constrainPosition ) {
10383
-
10384
-		var containment, co, top, left,
10385
-			o = this.options,
10386
-			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),
10387
-			pageX = event.pageX,
10388
-			pageY = event.pageY;
10389
-
10390
-		// Cache the scroll
10391
-		if ( !scrollIsRootNode || !this.offset.scroll ) {
10392
-			this.offset.scroll = {
10393
-				top: this.scrollParent.scrollTop(),
10394
-				left: this.scrollParent.scrollLeft()
10395
-			};
10396
-		}
10397
-
10398
-		/*
10399
-		 * - Position constraining -
10400
-		 * Constrain the position to a mix of grid, containment.
10401
-		 */
10402
-
10403
-		// If we are not dragging yet, we won't check for options
10404
-		if ( constrainPosition ) {
10405
-			if ( this.containment ) {
10406
-				if ( this.relativeContainer ) {
10407
-					co = this.relativeContainer.offset();
10408
-					containment = [
10409
-						this.containment[ 0 ] + co.left,
10410
-						this.containment[ 1 ] + co.top,
10411
-						this.containment[ 2 ] + co.left,
10412
-						this.containment[ 3 ] + co.top
10413
-					];
10414
-				} else {
10415
-					containment = this.containment;
10416
-				}
10417
-
10418
-				if ( event.pageX - this.offset.click.left < containment[ 0 ] ) {
10419
-					pageX = containment[ 0 ] + this.offset.click.left;
10420
-				}
10421
-				if ( event.pageY - this.offset.click.top < containment[ 1 ] ) {
10422
-					pageY = containment[ 1 ] + this.offset.click.top;
10423
-				}
10424
-				if ( event.pageX - this.offset.click.left > containment[ 2 ] ) {
10425
-					pageX = containment[ 2 ] + this.offset.click.left;
10426
-				}
10427
-				if ( event.pageY - this.offset.click.top > containment[ 3 ] ) {
10428
-					pageY = containment[ 3 ] + this.offset.click.top;
10429
-				}
10430
-			}
10431
-
10432
-			if ( o.grid ) {
10433
-
10434
-				//Check for grid elements set to 0 to prevent divide by 0 error causing invalid
10435
-				// argument errors in IE (see ticket #6950)
10436
-				top = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY -
10437
-					this.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY;
10438
-				pageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] ||
10439
-					top - this.offset.click.top > containment[ 3 ] ) ?
10440
-						top :
10441
-						( ( top - this.offset.click.top >= containment[ 1 ] ) ?
10442
-							top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top;
10443
-
10444
-				left = o.grid[ 0 ] ? this.originalPageX +
10445
-					Math.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] :
10446
-					this.originalPageX;
10447
-				pageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] ||
10448
-					left - this.offset.click.left > containment[ 2 ] ) ?
10449
-						left :
10450
-						( ( left - this.offset.click.left >= containment[ 0 ] ) ?
10451
-							left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left;
10452
-			}
10453
-
10454
-			if ( o.axis === "y" ) {
10455
-				pageX = this.originalPageX;
10456
-			}
10457
-
10458
-			if ( o.axis === "x" ) {
10459
-				pageY = this.originalPageY;
10460
-			}
10461
-		}
10462
-
10463
-		return {
10464
-			top: (
10465
-
10466
-				// The absolute mouse position
10467
-				pageY -
10468
-
10469
-				// Click offset (relative to the element)
10470
-				this.offset.click.top -
10471
-
10472
-				// Only for relative positioned nodes: Relative offset from element to offset parent
10473
-				this.offset.relative.top -
10474
-
10475
-				// The offsetParent's offset without borders (offset + border)
10476
-				this.offset.parent.top +
10477
-				( this.cssPosition === "fixed" ?
10478
-					-this.offset.scroll.top :
10479
-					( scrollIsRootNode ? 0 : this.offset.scroll.top ) )
10480
-			),
10481
-			left: (
10482
-
10483
-				// The absolute mouse position
10484
-				pageX -
10485
-
10486
-				// Click offset (relative to the element)
10487
-				this.offset.click.left -
10488
-
10489
-				// Only for relative positioned nodes: Relative offset from element to offset parent
10490
-				this.offset.relative.left -
10491
-
10492
-				// The offsetParent's offset without borders (offset + border)
10493
-				this.offset.parent.left +
10494
-				( this.cssPosition === "fixed" ?
10495
-					-this.offset.scroll.left :
10496
-					( scrollIsRootNode ? 0 : this.offset.scroll.left ) )
10497
-			)
10498
-		};
10499
-
10500
-	},
10501
-
10502
-	_clear: function() {
10503
-		this._removeClass( this.helper, "ui-draggable-dragging" );
10504
-		if ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) {
10505
-			this.helper.remove();
10506
-		}
10507
-		this.helper = null;
10508
-		this.cancelHelperRemoval = false;
10509
-		if ( this.destroyOnClear ) {
10510
-			this.destroy();
10511
-		}
10512
-	},
10513
-
10514
-	// From now on bulk stuff - mainly helpers
10515
-
10516
-	_trigger: function( type, event, ui ) {
10517
-		ui = ui || this._uiHash();
10518
-		$.ui.plugin.call( this, type, [ event, ui, this ], true );
10519
-
10520
-		// Absolute position and offset (see #6884 ) have to be recalculated after plugins
10521
-		if ( /^(drag|start|stop)/.test( type ) ) {
10522
-			this.positionAbs = this._convertPositionTo( "absolute" );
10523
-			ui.offset = this.positionAbs;
10524
-		}
10525
-		return $.Widget.prototype._trigger.call( this, type, event, ui );
10526
-	},
10527
-
10528
-	plugins: {},
10529
-
10530
-	_uiHash: function() {
10531
-		return {
10532
-			helper: this.helper,
10533
-			position: this.position,
10534
-			originalPosition: this.originalPosition,
10535
-			offset: this.positionAbs
10536
-		};
10537
-	}
10538
-
10539
-} );
10540
-
10541
-$.ui.plugin.add( "draggable", "connectToSortable", {
10542
-	start: function( event, ui, draggable ) {
10543
-		var uiSortable = $.extend( {}, ui, {
10544
-			item: draggable.element
10545
-		} );
10546
-
10547
-		draggable.sortables = [];
10548
-		$( draggable.options.connectToSortable ).each( function() {
10549
-			var sortable = $( this ).sortable( "instance" );
10550
-
10551
-			if ( sortable && !sortable.options.disabled ) {
10552
-				draggable.sortables.push( sortable );
10553
-
10554
-				// RefreshPositions is called at drag start to refresh the containerCache
10555
-				// which is used in drag. This ensures it's initialized and synchronized
10556
-				// with any changes that might have happened on the page since initialization.
10557
-				sortable.refreshPositions();
10558
-				sortable._trigger( "activate", event, uiSortable );
10559
-			}
10560
-		} );
10561
-	},
10562
-	stop: function( event, ui, draggable ) {
10563
-		var uiSortable = $.extend( {}, ui, {
10564
-			item: draggable.element
10565
-		} );
10566
-
10567
-		draggable.cancelHelperRemoval = false;
10568
-
10569
-		$.each( draggable.sortables, function() {
10570
-			var sortable = this;
10571
-
10572
-			if ( sortable.isOver ) {
10573
-				sortable.isOver = 0;
10574
-
10575
-				// Allow this sortable to handle removing the helper
10576
-				draggable.cancelHelperRemoval = true;
10577
-				sortable.cancelHelperRemoval = false;
10578
-
10579
-				// Use _storedCSS To restore properties in the sortable,
10580
-				// as this also handles revert (#9675) since the draggable
10581
-				// may have modified them in unexpected ways (#8809)
10582
-				sortable._storedCSS = {
10583
-					position: sortable.placeholder.css( "position" ),
10584
-					top: sortable.placeholder.css( "top" ),
10585
-					left: sortable.placeholder.css( "left" )
10586
-				};
10587
-
10588
-				sortable._mouseStop( event );
10589
-
10590
-				// Once drag has ended, the sortable should return to using
10591
-				// its original helper, not the shared helper from draggable
10592
-				sortable.options.helper = sortable.options._helper;
10593
-			} else {
10594
-
10595
-				// Prevent this Sortable from removing the helper.
10596
-				// However, don't set the draggable to remove the helper
10597
-				// either as another connected Sortable may yet handle the removal.
10598
-				sortable.cancelHelperRemoval = true;
10599
-
10600
-				sortable._trigger( "deactivate", event, uiSortable );
10601
-			}
10602
-		} );
10603
-	},
10604
-	drag: function( event, ui, draggable ) {
10605
-		$.each( draggable.sortables, function() {
10606
-			var innermostIntersecting = false,
10607
-				sortable = this;
10608
-
10609
-			// Copy over variables that sortable's _intersectsWith uses
10610
-			sortable.positionAbs = draggable.positionAbs;
10611
-			sortable.helperProportions = draggable.helperProportions;
10612
-			sortable.offset.click = draggable.offset.click;
10613
-
10614
-			if ( sortable._intersectsWith( sortable.containerCache ) ) {
10615
-				innermostIntersecting = true;
10616
-
10617
-				$.each( draggable.sortables, function() {
10618
-
10619
-					// Copy over variables that sortable's _intersectsWith uses
10620
-					this.positionAbs = draggable.positionAbs;
10621
-					this.helperProportions = draggable.helperProportions;
10622
-					this.offset.click = draggable.offset.click;
10623
-
10624
-					if ( this !== sortable &&
10625
-							this._intersectsWith( this.containerCache ) &&
10626
-							$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {
10627
-						innermostIntersecting = false;
10628
-					}
10629
-
10630
-					return innermostIntersecting;
10631
-				} );
10632
-			}
10633
-
10634
-			if ( innermostIntersecting ) {
10635
-
10636
-				// If it intersects, we use a little isOver variable and set it once,
10637
-				// so that the move-in stuff gets fired only once.
10638
-				if ( !sortable.isOver ) {
10639
-					sortable.isOver = 1;
10640
-
10641
-					// Store draggable's parent in case we need to reappend to it later.
10642
-					draggable._parent = ui.helper.parent();
10643
-
10644
-					sortable.currentItem = ui.helper
10645
-						.appendTo( sortable.element )
10646
-						.data( "ui-sortable-item", true );
10647
-
10648
-					// Store helper option to later restore it
10649
-					sortable.options._helper = sortable.options.helper;
10650
-
10651
-					sortable.options.helper = function() {
10652
-						return ui.helper[ 0 ];
10653
-					};
10654
-
10655
-					// Fire the start events of the sortable with our passed browser event,
10656
-					// and our own helper (so it doesn't create a new one)
10657
-					event.target = sortable.currentItem[ 0 ];
10658
-					sortable._mouseCapture( event, true );
10659
-					sortable._mouseStart( event, true, true );
10660
-
10661
-					// Because the browser event is way off the new appended portlet,
10662
-					// modify necessary variables to reflect the changes
10663
-					sortable.offset.click.top = draggable.offset.click.top;
10664
-					sortable.offset.click.left = draggable.offset.click.left;
10665
-					sortable.offset.parent.left -= draggable.offset.parent.left -
10666
-						sortable.offset.parent.left;
10667
-					sortable.offset.parent.top -= draggable.offset.parent.top -
10668
-						sortable.offset.parent.top;
10669
-
10670
-					draggable._trigger( "toSortable", event );
10671
-
10672
-					// Inform draggable that the helper is in a valid drop zone,
10673
-					// used solely in the revert option to handle "valid/invalid".
10674
-					draggable.dropped = sortable.element;
10675
-
10676
-					// Need to refreshPositions of all sortables in the case that
10677
-					// adding to one sortable changes the location of the other sortables (#9675)
10678
-					$.each( draggable.sortables, function() {
10679
-						this.refreshPositions();
10680
-					} );
10681
-
10682
-					// Hack so receive/update callbacks work (mostly)
10683
-					draggable.currentItem = draggable.element;
10684
-					sortable.fromOutside = draggable;
10685
-				}
10686
-
10687
-				if ( sortable.currentItem ) {
10688
-					sortable._mouseDrag( event );
10689
-
10690
-					// Copy the sortable's position because the draggable's can potentially reflect
10691
-					// a relative position, while sortable is always absolute, which the dragged
10692
-					// element has now become. (#8809)
10693
-					ui.position = sortable.position;
10694
-				}
10695
-			} else {
10696
-
10697
-				// If it doesn't intersect with the sortable, and it intersected before,
10698
-				// we fake the drag stop of the sortable, but make sure it doesn't remove
10699
-				// the helper by using cancelHelperRemoval.
10700
-				if ( sortable.isOver ) {
10701
-
10702
-					sortable.isOver = 0;
10703
-					sortable.cancelHelperRemoval = true;
10704
-
10705
-					// Calling sortable's mouseStop would trigger a revert,
10706
-					// so revert must be temporarily false until after mouseStop is called.
10707
-					sortable.options._revert = sortable.options.revert;
10708
-					sortable.options.revert = false;
10709
-
10710
-					sortable._trigger( "out", event, sortable._uiHash( sortable ) );
10711
-					sortable._mouseStop( event, true );
10712
-
10713
-					// Restore sortable behaviors that were modfied
10714
-					// when the draggable entered the sortable area (#9481)
10715
-					sortable.options.revert = sortable.options._revert;
10716
-					sortable.options.helper = sortable.options._helper;
10717
-
10718
-					if ( sortable.placeholder ) {
10719
-						sortable.placeholder.remove();
10720
-					}
10721
-
10722
-					// Restore and recalculate the draggable's offset considering the sortable
10723
-					// may have modified them in unexpected ways. (#8809, #10669)
10724
-					ui.helper.appendTo( draggable._parent );
10725
-					draggable._refreshOffsets( event );
10726
-					ui.position = draggable._generatePosition( event, true );
10727
-
10728
-					draggable._trigger( "fromSortable", event );
10729
-
10730
-					// Inform draggable that the helper is no longer in a valid drop zone
10731
-					draggable.dropped = false;
10732
-
10733
-					// Need to refreshPositions of all sortables just in case removing
10734
-					// from one sortable changes the location of other sortables (#9675)
10735
-					$.each( draggable.sortables, function() {
10736
-						this.refreshPositions();
10737
-					} );
10738
-				}
10739
-			}
10740
-		} );
10741
-	}
10742
-} );
10743
-
10744
-$.ui.plugin.add( "draggable", "cursor", {
10745
-	start: function( event, ui, instance ) {
10746
-		var t = $( "body" ),
10747
-			o = instance.options;
10748
-
10749
-		if ( t.css( "cursor" ) ) {
10750
-			o._cursor = t.css( "cursor" );
10751
-		}
10752
-		t.css( "cursor", o.cursor );
10753
-	},
10754
-	stop: function( event, ui, instance ) {
10755
-		var o = instance.options;
10756
-		if ( o._cursor ) {
10757
-			$( "body" ).css( "cursor", o._cursor );
10758
-		}
10759
-	}
10760
-} );
10761
-
10762
-$.ui.plugin.add( "draggable", "opacity", {
10763
-	start: function( event, ui, instance ) {
10764
-		var t = $( ui.helper ),
10765
-			o = instance.options;
10766
-		if ( t.css( "opacity" ) ) {
10767
-			o._opacity = t.css( "opacity" );
10768
-		}
10769
-		t.css( "opacity", o.opacity );
10770
-	},
10771
-	stop: function( event, ui, instance ) {
10772
-		var o = instance.options;
10773
-		if ( o._opacity ) {
10774
-			$( ui.helper ).css( "opacity", o._opacity );
10775
-		}
10776
-	}
10777
-} );
10778
-
10779
-$.ui.plugin.add( "draggable", "scroll", {
10780
-	start: function( event, ui, i ) {
10781
-		if ( !i.scrollParentNotHidden ) {
10782
-			i.scrollParentNotHidden = i.helper.scrollParent( false );
10783
-		}
10784
-
10785
-		if ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] &&
10786
-				i.scrollParentNotHidden[ 0 ].tagName !== "HTML" ) {
10787
-			i.overflowOffset = i.scrollParentNotHidden.offset();
10788
-		}
10789
-	},
10790
-	drag: function( event, ui, i  ) {
10791
-
10792
-		var o = i.options,
10793
-			scrolled = false,
10794
-			scrollParent = i.scrollParentNotHidden[ 0 ],
10795
-			document = i.document[ 0 ];
10796
-
10797
-		if ( scrollParent !== document && scrollParent.tagName !== "HTML" ) {
10798
-			if ( !o.axis || o.axis !== "x" ) {
10799
-				if ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY <
10800
-						o.scrollSensitivity ) {
10801
-					scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;
10802
-				} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {
10803
-					scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;
10804
-				}
10805
-			}
10806
-
10807
-			if ( !o.axis || o.axis !== "y" ) {
10808
-				if ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX <
10809
-						o.scrollSensitivity ) {
10810
-					scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;
10811
-				} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {
10812
-					scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;
10813
-				}
10814
-			}
10815
-
10816
-		} else {
10817
-
10818
-			if ( !o.axis || o.axis !== "x" ) {
10819
-				if ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) {
10820
-					scrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed );
10821
-				} else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) <
10822
-						o.scrollSensitivity ) {
10823
-					scrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed );
10824
-				}
10825
-			}
10826
-
10827
-			if ( !o.axis || o.axis !== "y" ) {
10828
-				if ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) {
10829
-					scrolled = $( document ).scrollLeft(
10830
-						$( document ).scrollLeft() - o.scrollSpeed
10831
-					);
10832
-				} else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) <
10833
-						o.scrollSensitivity ) {
10834
-					scrolled = $( document ).scrollLeft(
10835
-						$( document ).scrollLeft() + o.scrollSpeed
10836
-					);
10837
-				}
10838
-			}
10839
-
10840
-		}
10841
-
10842
-		if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
10843
-			$.ui.ddmanager.prepareOffsets( i, event );
10844
-		}
10845
-
10846
-	}
10847
-} );
10848
-
10849
-$.ui.plugin.add( "draggable", "snap", {
10850
-	start: function( event, ui, i ) {
10851
-
10852
-		var o = i.options;
10853
-
10854
-		i.snapElements = [];
10855
-
10856
-		$( o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap )
10857
-			.each( function() {
10858
-				var $t = $( this ),
10859
-					$o = $t.offset();
10860
-				if ( this !== i.element[ 0 ] ) {
10861
-					i.snapElements.push( {
10862
-						item: this,
10863
-						width: $t.outerWidth(), height: $t.outerHeight(),
10864
-						top: $o.top, left: $o.left
10865
-					} );
10866
-				}
10867
-			} );
10868
-
10869
-	},
10870
-	drag: function( event, ui, inst ) {
10871
-
10872
-		var ts, bs, ls, rs, l, r, t, b, i, first,
10873
-			o = inst.options,
10874
-			d = o.snapTolerance,
10875
-			x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
10876
-			y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
10877
-
10878
-		for ( i = inst.snapElements.length - 1; i >= 0; i-- ) {
10879
-
10880
-			l = inst.snapElements[ i ].left - inst.margins.left;
10881
-			r = l + inst.snapElements[ i ].width;
10882
-			t = inst.snapElements[ i ].top - inst.margins.top;
10883
-			b = t + inst.snapElements[ i ].height;
10884
-
10885
-			if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d ||
10886
-					!$.contains( inst.snapElements[ i ].item.ownerDocument,
10887
-					inst.snapElements[ i ].item ) ) {
10888
-				if ( inst.snapElements[ i ].snapping ) {
10889
-					if ( inst.options.snap.release ) {
10890
-						inst.options.snap.release.call(
10891
-							inst.element,
10892
-							event,
10893
-							$.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )
10894
-						);
10895
-					}
10896
-				}
10897
-				inst.snapElements[ i ].snapping = false;
10898
-				continue;
10899
-			}
10900
-
10901
-			if ( o.snapMode !== "inner" ) {
10902
-				ts = Math.abs( t - y2 ) <= d;
10903
-				bs = Math.abs( b - y1 ) <= d;
10904
-				ls = Math.abs( l - x2 ) <= d;
10905
-				rs = Math.abs( r - x1 ) <= d;
10906
-				if ( ts ) {
10907
-					ui.position.top = inst._convertPositionTo( "relative", {
10908
-						top: t - inst.helperProportions.height,
10909
-						left: 0
10910
-					} ).top;
10911
-				}
10912
-				if ( bs ) {
10913
-					ui.position.top = inst._convertPositionTo( "relative", {
10914
-						top: b,
10915
-						left: 0
10916
-					} ).top;
10917
-				}
10918
-				if ( ls ) {
10919
-					ui.position.left = inst._convertPositionTo( "relative", {
10920
-						top: 0,
10921
-						left: l - inst.helperProportions.width
10922
-					} ).left;
10923
-				}
10924
-				if ( rs ) {
10925
-					ui.position.left = inst._convertPositionTo( "relative", {
10926
-						top: 0,
10927
-						left: r
10928
-					} ).left;
10929
-				}
10930
-			}
10931
-
10932
-			first = ( ts || bs || ls || rs );
10933
-
10934
-			if ( o.snapMode !== "outer" ) {
10935
-				ts = Math.abs( t - y1 ) <= d;
10936
-				bs = Math.abs( b - y2 ) <= d;
10937
-				ls = Math.abs( l - x1 ) <= d;
10938
-				rs = Math.abs( r - x2 ) <= d;
10939
-				if ( ts ) {
10940
-					ui.position.top = inst._convertPositionTo( "relative", {
10941
-						top: t,
10942
-						left: 0
10943
-					} ).top;
10944
-				}
10945
-				if ( bs ) {
10946
-					ui.position.top = inst._convertPositionTo( "relative", {
10947
-						top: b - inst.helperProportions.height,
10948
-						left: 0
10949
-					} ).top;
10950
-				}
10951
-				if ( ls ) {
10952
-					ui.position.left = inst._convertPositionTo( "relative", {
10953
-						top: 0,
10954
-						left: l
10955
-					} ).left;
10956
-				}
10957
-				if ( rs ) {
10958
-					ui.position.left = inst._convertPositionTo( "relative", {
10959
-						top: 0,
10960
-						left: r - inst.helperProportions.width
10961
-					} ).left;
10962
-				}
10963
-			}
10964
-
10965
-			if ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {
10966
-				if ( inst.options.snap.snap ) {
10967
-					inst.options.snap.snap.call(
10968
-						inst.element,
10969
-						event,
10970
-						$.extend( inst._uiHash(), {
10971
-							snapItem: inst.snapElements[ i ].item
10972
-						} ) );
10973
-				}
10974
-			}
10975
-			inst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );
10976
-
10977
-		}
10978
-
10979
-	}
10980
-} );
10981
-
10982
-$.ui.plugin.add( "draggable", "stack", {
10983
-	start: function( event, ui, instance ) {
10984
-		var min,
10985
-			o = instance.options,
10986
-			group = $.makeArray( $( o.stack ) ).sort( function( a, b ) {
10987
-				return ( parseInt( $( a ).css( "zIndex" ), 10 ) || 0 ) -
10988
-					( parseInt( $( b ).css( "zIndex" ), 10 ) || 0 );
10989
-			} );
10990
-
10991
-		if ( !group.length ) {
10992
-			return;
10993
-		}
10994
-
10995
-		min = parseInt( $( group[ 0 ] ).css( "zIndex" ), 10 ) || 0;
10996
-		$( group ).each( function( i ) {
10997
-			$( this ).css( "zIndex", min + i );
10998
-		} );
10999
-		this.css( "zIndex", ( min + group.length ) );
11000
-	}
11001
-} );
11002
-
11003
-$.ui.plugin.add( "draggable", "zIndex", {
11004
-	start: function( event, ui, instance ) {
11005
-		var t = $( ui.helper ),
11006
-			o = instance.options;
11007
-
11008
-		if ( t.css( "zIndex" ) ) {
11009
-			o._zIndex = t.css( "zIndex" );
11010
-		}
11011
-		t.css( "zIndex", o.zIndex );
11012
-	},
11013
-	stop: function( event, ui, instance ) {
11014
-		var o = instance.options;
11015
-
11016
-		if ( o._zIndex ) {
11017
-			$( ui.helper ).css( "zIndex", o._zIndex );
11018
-		}
11019
-	}
11020
-} );
11021
-
11022
-var widgetsDraggable = $.ui.draggable;
11023
-
11024
-
11025
-/*!
11026
- * jQuery UI Resizable 1.13.2
11027
- * http://jqueryui.com
11028
- *
11029
- * Copyright jQuery Foundation and other contributors
11030
- * Released under the MIT license.
11031
- * http://jquery.org/license
11032
- */
11033
-
11034
-//>>label: Resizable
11035
-//>>group: Interactions
11036
-//>>description: Enables resize functionality for any element.
11037
-//>>docs: http://api.jqueryui.com/resizable/
11038
-//>>demos: http://jqueryui.com/resizable/
11039
-//>>css.structure: ../../themes/base/core.css
11040
-//>>css.structure: ../../themes/base/resizable.css
11041
-//>>css.theme: ../../themes/base/theme.css
11042
-
11043
-
11044
-$.widget( "ui.resizable", $.ui.mouse, {
11045
-	version: "1.13.2",
11046
-	widgetEventPrefix: "resize",
11047
-	options: {
11048
-		alsoResize: false,
11049
-		animate: false,
11050
-		animateDuration: "slow",
11051
-		animateEasing: "swing",
11052
-		aspectRatio: false,
11053
-		autoHide: false,
11054
-		classes: {
11055
-			"ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se"
11056
-		},
11057
-		containment: false,
11058
-		ghost: false,
11059
-		grid: false,
11060
-		handles: "e,s,se",
11061
-		helper: false,
11062
-		maxHeight: null,
11063
-		maxWidth: null,
11064
-		minHeight: 10,
11065
-		minWidth: 10,
11066
-
11067
-		// See #7960
11068
-		zIndex: 90,
11069
-
11070
-		// Callbacks
11071
-		resize: null,
11072
-		start: null,
11073
-		stop: null
11074
-	},
11075
-
11076
-	_num: function( value ) {
11077
-		return parseFloat( value ) || 0;
11078
-	},
11079
-
11080
-	_isNumber: function( value ) {
11081
-		return !isNaN( parseFloat( value ) );
11082
-	},
11083
-
11084
-	_hasScroll: function( el, a ) {
11085
-
11086
-		if ( $( el ).css( "overflow" ) === "hidden" ) {
11087
-			return false;
11088
-		}
11089
-
11090
-		var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
11091
-			has = false;
11092
-
11093
-		if ( el[ scroll ] > 0 ) {
11094
-			return true;
11095
-		}
11096
-
11097
-		// TODO: determine which cases actually cause this to happen
11098
-		// if the element doesn't have the scroll set, see if it's possible to
11099
-		// set the scroll
11100
-		try {
11101
-			el[ scroll ] = 1;
11102
-			has = ( el[ scroll ] > 0 );
11103
-			el[ scroll ] = 0;
11104
-		} catch ( e ) {
11105
-
11106
-			// `el` might be a string, then setting `scroll` will throw
11107
-			// an error in strict mode; ignore it.
11108
-		}
11109
-		return has;
11110
-	},
11111
-
11112
-	_create: function() {
11113
-
11114
-		var margins,
11115
-			o = this.options,
11116
-			that = this;
11117
-		this._addClass( "ui-resizable" );
11118
-
11119
-		$.extend( this, {
11120
-			_aspectRatio: !!( o.aspectRatio ),
11121
-			aspectRatio: o.aspectRatio,
11122
-			originalElement: this.element,
11123
-			_proportionallyResizeElements: [],
11124
-			_helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
11125
-		} );
11126
-
11127
-		// Wrap the element if it cannot hold child nodes
11128
-		if ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {
11129
-
11130
-			this.element.wrap(
11131
-				$( "<div class='ui-wrapper'></div>" ).css( {
11132
-					overflow: "hidden",
11133
-					position: this.element.css( "position" ),
11134
-					width: this.element.outerWidth(),
11135
-					height: this.element.outerHeight(),
11136
-					top: this.element.css( "top" ),
11137
-					left: this.element.css( "left" )
11138
-				} )
11139
-			);
11140
-
11141
-			this.element = this.element.parent().data(
11142
-				"ui-resizable", this.element.resizable( "instance" )
11143
-			);
11144
-
11145
-			this.elementIsWrapper = true;
11146
-
11147
-			margins = {
11148
-				marginTop: this.originalElement.css( "marginTop" ),
11149
-				marginRight: this.originalElement.css( "marginRight" ),
11150
-				marginBottom: this.originalElement.css( "marginBottom" ),
11151
-				marginLeft: this.originalElement.css( "marginLeft" )
11152
-			};
11153
-
11154
-			this.element.css( margins );
11155
-			this.originalElement.css( "margin", 0 );
11156
-
11157
-			// support: Safari
11158
-			// Prevent Safari textarea resize
11159
-			this.originalResizeStyle = this.originalElement.css( "resize" );
11160
-			this.originalElement.css( "resize", "none" );
11161
-
11162
-			this._proportionallyResizeElements.push( this.originalElement.css( {
11163
-				position: "static",
11164
-				zoom: 1,
11165
-				display: "block"
11166
-			} ) );
11167
-
11168
-			// Support: IE9
11169
-			// avoid IE jump (hard set the margin)
11170
-			this.originalElement.css( margins );
11171
-
11172
-			this._proportionallyResize();
11173
-		}
11174
-
11175
-		this._setupHandles();
11176
-
11177
-		if ( o.autoHide ) {
11178
-			$( this.element )
11179
-				.on( "mouseenter", function() {
11180
-					if ( o.disabled ) {
11181
-						return;
11182
-					}
11183
-					that._removeClass( "ui-resizable-autohide" );
11184
-					that._handles.show();
11185
-				} )
11186
-				.on( "mouseleave", function() {
11187
-					if ( o.disabled ) {
11188
-						return;
11189
-					}
11190
-					if ( !that.resizing ) {
11191
-						that._addClass( "ui-resizable-autohide" );
11192
-						that._handles.hide();
11193
-					}
11194
-				} );
11195
-		}
11196
-
11197
-		this._mouseInit();
11198
-	},
11199
-
11200
-	_destroy: function() {
11201
-
11202
-		this._mouseDestroy();
11203
-		this._addedHandles.remove();
11204
-
11205
-		var wrapper,
11206
-			_destroy = function( exp ) {
11207
-				$( exp )
11208
-					.removeData( "resizable" )
11209
-					.removeData( "ui-resizable" )
11210
-					.off( ".resizable" );
11211
-			};
11212
-
11213
-		// TODO: Unwrap at same DOM position
11214
-		if ( this.elementIsWrapper ) {
11215
-			_destroy( this.element );
11216
-			wrapper = this.element;
11217
-			this.originalElement.css( {
11218
-				position: wrapper.css( "position" ),
11219
-				width: wrapper.outerWidth(),
11220
-				height: wrapper.outerHeight(),
11221
-				top: wrapper.css( "top" ),
11222
-				left: wrapper.css( "left" )
11223
-			} ).insertAfter( wrapper );
11224
-			wrapper.remove();
11225
-		}
11226
-
11227
-		this.originalElement.css( "resize", this.originalResizeStyle );
11228
-		_destroy( this.originalElement );
11229
-
11230
-		return this;
11231
-	},
11232
-
11233
-	_setOption: function( key, value ) {
11234
-		this._super( key, value );
11235
-
11236
-		switch ( key ) {
11237
-		case "handles":
11238
-			this._removeHandles();
11239
-			this._setupHandles();
11240
-			break;
11241
-		case "aspectRatio":
11242
-			this._aspectRatio = !!value;
11243
-			break;
11244
-		default:
11245
-			break;
11246
-		}
11247
-	},
11248
-
11249
-	_setupHandles: function() {
11250
-		var o = this.options, handle, i, n, hname, axis, that = this;
11251
-		this.handles = o.handles ||
11252
-			( !$( ".ui-resizable-handle", this.element ).length ?
11253
-				"e,s,se" : {
11254
-					n: ".ui-resizable-n",
11255
-					e: ".ui-resizable-e",
11256
-					s: ".ui-resizable-s",
11257
-					w: ".ui-resizable-w",
11258
-					se: ".ui-resizable-se",
11259
-					sw: ".ui-resizable-sw",
11260
-					ne: ".ui-resizable-ne",
11261
-					nw: ".ui-resizable-nw"
11262
-				} );
11263
-
11264
-		this._handles = $();
11265
-		this._addedHandles = $();
11266
-		if ( this.handles.constructor === String ) {
11267
-
11268
-			if ( this.handles === "all" ) {
11269
-				this.handles = "n,e,s,w,se,sw,ne,nw";
11270
-			}
11271
-
11272
-			n = this.handles.split( "," );
11273
-			this.handles = {};
11274
-
11275
-			for ( i = 0; i < n.length; i++ ) {
11276
-
11277
-				handle = String.prototype.trim.call( n[ i ] );
11278
-				hname = "ui-resizable-" + handle;
11279
-				axis = $( "<div>" );
11280
-				this._addClass( axis, "ui-resizable-handle " + hname );
11281
-
11282
-				axis.css( { zIndex: o.zIndex } );
11283
-
11284
-				this.handles[ handle ] = ".ui-resizable-" + handle;
11285
-				if ( !this.element.children( this.handles[ handle ] ).length ) {
11286
-					this.element.append( axis );
11287
-					this._addedHandles = this._addedHandles.add( axis );
11288
-				}
11289
-			}
11290
-
11291
-		}
11292
-
11293
-		this._renderAxis = function( target ) {
11294
-
11295
-			var i, axis, padPos, padWrapper;
11296
-
11297
-			target = target || this.element;
11298
-
11299
-			for ( i in this.handles ) {
11300
-
11301
-				if ( this.handles[ i ].constructor === String ) {
11302
-					this.handles[ i ] = this.element.children( this.handles[ i ] ).first().show();
11303
-				} else if ( this.handles[ i ].jquery || this.handles[ i ].nodeType ) {
11304
-					this.handles[ i ] = $( this.handles[ i ] );
11305
-					this._on( this.handles[ i ], { "mousedown": that._mouseDown } );
11306
-				}
11307
-
11308
-				if ( this.elementIsWrapper &&
11309
-						this.originalElement[ 0 ]
11310
-							.nodeName
11311
-							.match( /^(textarea|input|select|button)$/i ) ) {
11312
-					axis = $( this.handles[ i ], this.element );
11313
-
11314
-					padWrapper = /sw|ne|nw|se|n|s/.test( i ) ?
11315
-						axis.outerHeight() :
11316
-						axis.outerWidth();
11317
-
11318
-					padPos = [ "padding",
11319
-						/ne|nw|n/.test( i ) ? "Top" :
11320
-						/se|sw|s/.test( i ) ? "Bottom" :
11321
-						/^e$/.test( i ) ? "Right" : "Left" ].join( "" );
11322
-
11323
-					target.css( padPos, padWrapper );
11324
-
11325
-					this._proportionallyResize();
11326
-				}
11327
-
11328
-				this._handles = this._handles.add( this.handles[ i ] );
11329
-			}
11330
-		};
11331
-
11332
-		// TODO: make renderAxis a prototype function
11333
-		this._renderAxis( this.element );
11334
-
11335
-		this._handles = this._handles.add( this.element.find( ".ui-resizable-handle" ) );
11336
-		this._handles.disableSelection();
11337
-
11338
-		this._handles.on( "mouseover", function() {
11339
-			if ( !that.resizing ) {
11340
-				if ( this.className ) {
11341
-					axis = this.className.match( /ui-resizable-(se|sw|ne|nw|n|e|s|w)/i );
11342
-				}
11343
-				that.axis = axis && axis[ 1 ] ? axis[ 1 ] : "se";
11344
-			}
11345
-		} );
11346
-
11347
-		if ( o.autoHide ) {
11348
-			this._handles.hide();
11349
-			this._addClass( "ui-resizable-autohide" );
11350
-		}
11351
-	},
11352
-
11353
-	_removeHandles: function() {
11354
-		this._addedHandles.remove();
11355
-	},
11356
-
11357
-	_mouseCapture: function( event ) {
11358
-		var i, handle,
11359
-			capture = false;
11360
-
11361
-		for ( i in this.handles ) {
11362
-			handle = $( this.handles[ i ] )[ 0 ];
11363
-			if ( handle === event.target || $.contains( handle, event.target ) ) {
11364
-				capture = true;
11365
-			}
11366
-		}
11367
-
11368
-		return !this.options.disabled && capture;
11369
-	},
11370
-
11371
-	_mouseStart: function( event ) {
11372
-
11373
-		var curleft, curtop, cursor,
11374
-			o = this.options,
11375
-			el = this.element;
11376
-
11377
-		this.resizing = true;
11378
-
11379
-		this._renderProxy();
11380
-
11381
-		curleft = this._num( this.helper.css( "left" ) );
11382
-		curtop = this._num( this.helper.css( "top" ) );
11383
-
11384
-		if ( o.containment ) {
11385
-			curleft += $( o.containment ).scrollLeft() || 0;
11386
-			curtop += $( o.containment ).scrollTop() || 0;
11387
-		}
11388
-
11389
-		this.offset = this.helper.offset();
11390
-		this.position = { left: curleft, top: curtop };
11391
-
11392
-		this.size = this._helper ? {
11393
-				width: this.helper.width(),
11394
-				height: this.helper.height()
11395
-			} : {
11396
-				width: el.width(),
11397
-				height: el.height()
11398
-			};
11399
-
11400
-		this.originalSize = this._helper ? {
11401
-				width: el.outerWidth(),
11402
-				height: el.outerHeight()
11403
-			} : {
11404
-				width: el.width(),
11405
-				height: el.height()
11406
-			};
11407
-
11408
-		this.sizeDiff = {
11409
-			width: el.outerWidth() - el.width(),
11410
-			height: el.outerHeight() - el.height()
11411
-		};
11412
-
11413
-		this.originalPosition = { left: curleft, top: curtop };
11414
-		this.originalMousePosition = { left: event.pageX, top: event.pageY };
11415
-
11416
-		this.aspectRatio = ( typeof o.aspectRatio === "number" ) ?
11417
-			o.aspectRatio :
11418
-			( ( this.originalSize.width / this.originalSize.height ) || 1 );
11419
-
11420
-		cursor = $( ".ui-resizable-" + this.axis ).css( "cursor" );
11421
-		$( "body" ).css( "cursor", cursor === "auto" ? this.axis + "-resize" : cursor );
11422
-
11423
-		this._addClass( "ui-resizable-resizing" );
11424
-		this._propagate( "start", event );
11425
-		return true;
11426
-	},
11427
-
11428
-	_mouseDrag: function( event ) {
11429
-
11430
-		var data, props,
11431
-			smp = this.originalMousePosition,
11432
-			a = this.axis,
11433
-			dx = ( event.pageX - smp.left ) || 0,
11434
-			dy = ( event.pageY - smp.top ) || 0,
11435
-			trigger = this._change[ a ];
11436
-
11437
-		this._updatePrevProperties();
11438
-
11439
-		if ( !trigger ) {
11440
-			return false;
11441
-		}
11442
-
11443
-		data = trigger.apply( this, [ event, dx, dy ] );
11444
-
11445
-		this._updateVirtualBoundaries( event.shiftKey );
11446
-		if ( this._aspectRatio || event.shiftKey ) {
11447
-			data = this._updateRatio( data, event );
11448
-		}
11449
-
11450
-		data = this._respectSize( data, event );
11451
-
11452
-		this._updateCache( data );
11453
-
11454
-		this._propagate( "resize", event );
11455
-
11456
-		props = this._applyChanges();
11457
-
11458
-		if ( !this._helper && this._proportionallyResizeElements.length ) {
11459
-			this._proportionallyResize();
11460
-		}
11461
-
11462
-		if ( !$.isEmptyObject( props ) ) {
11463
-			this._updatePrevProperties();
11464
-			this._trigger( "resize", event, this.ui() );
11465
-			this._applyChanges();
11466
-		}
11467
-
11468
-		return false;
11469
-	},
11470
-
11471
-	_mouseStop: function( event ) {
11472
-
11473
-		this.resizing = false;
11474
-		var pr, ista, soffseth, soffsetw, s, left, top,
11475
-			o = this.options, that = this;
11476
-
11477
-		if ( this._helper ) {
11478
-
11479
-			pr = this._proportionallyResizeElements;
11480
-			ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName );
11481
-			soffseth = ista && this._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height;
11482
-			soffsetw = ista ? 0 : that.sizeDiff.width;
11483
-
11484
-			s = {
11485
-				width: ( that.helper.width()  - soffsetw ),
11486
-				height: ( that.helper.height() - soffseth )
11487
-			};
11488
-			left = ( parseFloat( that.element.css( "left" ) ) +
11489
-				( that.position.left - that.originalPosition.left ) ) || null;
11490
-			top = ( parseFloat( that.element.css( "top" ) ) +
11491
-				( that.position.top - that.originalPosition.top ) ) || null;
11492
-
11493
-			if ( !o.animate ) {
11494
-				this.element.css( $.extend( s, { top: top, left: left } ) );
11495
-			}
11496
-
11497
-			that.helper.height( that.size.height );
11498
-			that.helper.width( that.size.width );
11499
-
11500
-			if ( this._helper && !o.animate ) {
11501
-				this._proportionallyResize();
11502
-			}
11503
-		}
11504
-
11505
-		$( "body" ).css( "cursor", "auto" );
11506
-
11507
-		this._removeClass( "ui-resizable-resizing" );
11508
-
11509
-		this._propagate( "stop", event );
11510
-
11511
-		if ( this._helper ) {
11512
-			this.helper.remove();
11513
-		}
11514
-
11515
-		return false;
11516
-
11517
-	},
11518
-
11519
-	_updatePrevProperties: function() {
11520
-		this.prevPosition = {
11521
-			top: this.position.top,
11522
-			left: this.position.left
11523
-		};
11524
-		this.prevSize = {
11525
-			width: this.size.width,
11526
-			height: this.size.height
11527
-		};
11528
-	},
11529
-
11530
-	_applyChanges: function() {
11531
-		var props = {};
11532
-
11533
-		if ( this.position.top !== this.prevPosition.top ) {
11534
-			props.top = this.position.top + "px";
11535
-		}
11536
-		if ( this.position.left !== this.prevPosition.left ) {
11537
-			props.left = this.position.left + "px";
11538
-		}
11539
-		if ( this.size.width !== this.prevSize.width ) {
11540
-			props.width = this.size.width + "px";
11541
-		}
11542
-		if ( this.size.height !== this.prevSize.height ) {
11543
-			props.height = this.size.height + "px";
11544
-		}
11545
-
11546
-		this.helper.css( props );
11547
-
11548
-		return props;
11549
-	},
11550
-
11551
-	_updateVirtualBoundaries: function( forceAspectRatio ) {
11552
-		var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
11553
-			o = this.options;
11554
-
11555
-		b = {
11556
-			minWidth: this._isNumber( o.minWidth ) ? o.minWidth : 0,
11557
-			maxWidth: this._isNumber( o.maxWidth ) ? o.maxWidth : Infinity,
11558
-			minHeight: this._isNumber( o.minHeight ) ? o.minHeight : 0,
11559
-			maxHeight: this._isNumber( o.maxHeight ) ? o.maxHeight : Infinity
11560
-		};
11561
-
11562
-		if ( this._aspectRatio || forceAspectRatio ) {
11563
-			pMinWidth = b.minHeight * this.aspectRatio;
11564
-			pMinHeight = b.minWidth / this.aspectRatio;
11565
-			pMaxWidth = b.maxHeight * this.aspectRatio;
11566
-			pMaxHeight = b.maxWidth / this.aspectRatio;
11567
-
11568
-			if ( pMinWidth > b.minWidth ) {
11569
-				b.minWidth = pMinWidth;
11570
-			}
11571
-			if ( pMinHeight > b.minHeight ) {
11572
-				b.minHeight = pMinHeight;
11573
-			}
11574
-			if ( pMaxWidth < b.maxWidth ) {
11575
-				b.maxWidth = pMaxWidth;
11576
-			}
11577
-			if ( pMaxHeight < b.maxHeight ) {
11578
-				b.maxHeight = pMaxHeight;
11579
-			}
11580
-		}
11581
-		this._vBoundaries = b;
11582
-	},
11583
-
11584
-	_updateCache: function( data ) {
11585
-		this.offset = this.helper.offset();
11586
-		if ( this._isNumber( data.left ) ) {
11587
-			this.position.left = data.left;
11588
-		}
11589
-		if ( this._isNumber( data.top ) ) {
11590
-			this.position.top = data.top;
11591
-		}
11592
-		if ( this._isNumber( data.height ) ) {
11593
-			this.size.height = data.height;
11594
-		}
11595
-		if ( this._isNumber( data.width ) ) {
11596
-			this.size.width = data.width;
11597
-		}
11598
-	},
11599
-
11600
-	_updateRatio: function( data ) {
11601
-
11602
-		var cpos = this.position,
11603
-			csize = this.size,
11604
-			a = this.axis;
11605
-
11606
-		if ( this._isNumber( data.height ) ) {
11607
-			data.width = ( data.height * this.aspectRatio );
11608
-		} else if ( this._isNumber( data.width ) ) {
11609
-			data.height = ( data.width / this.aspectRatio );
11610
-		}
11611
-
11612
-		if ( a === "sw" ) {
11613
-			data.left = cpos.left + ( csize.width - data.width );
11614
-			data.top = null;
11615
-		}
11616
-		if ( a === "nw" ) {
11617
-			data.top = cpos.top + ( csize.height - data.height );
11618
-			data.left = cpos.left + ( csize.width - data.width );
11619
-		}
11620
-
11621
-		return data;
11622
-	},
11623
-
11624
-	_respectSize: function( data ) {
11625
-
11626
-		var o = this._vBoundaries,
11627
-			a = this.axis,
11628
-			ismaxw = this._isNumber( data.width ) && o.maxWidth && ( o.maxWidth < data.width ),
11629
-			ismaxh = this._isNumber( data.height ) && o.maxHeight && ( o.maxHeight < data.height ),
11630
-			isminw = this._isNumber( data.width ) && o.minWidth && ( o.minWidth > data.width ),
11631
-			isminh = this._isNumber( data.height ) && o.minHeight && ( o.minHeight > data.height ),
11632
-			dw = this.originalPosition.left + this.originalSize.width,
11633
-			dh = this.originalPosition.top + this.originalSize.height,
11634
-			cw = /sw|nw|w/.test( a ), ch = /nw|ne|n/.test( a );
11635
-		if ( isminw ) {
11636
-			data.width = o.minWidth;
11637
-		}
11638
-		if ( isminh ) {
11639
-			data.height = o.minHeight;
11640
-		}
11641
-		if ( ismaxw ) {
11642
-			data.width = o.maxWidth;
11643
-		}
11644
-		if ( ismaxh ) {
11645
-			data.height = o.maxHeight;
11646
-		}
11647
-
11648
-		if ( isminw && cw ) {
11649
-			data.left = dw - o.minWidth;
11650
-		}
11651
-		if ( ismaxw && cw ) {
11652
-			data.left = dw - o.maxWidth;
11653
-		}
11654
-		if ( isminh && ch ) {
11655
-			data.top = dh - o.minHeight;
11656
-		}
11657
-		if ( ismaxh && ch ) {
11658
-			data.top = dh - o.maxHeight;
11659
-		}
11660
-
11661
-		// Fixing jump error on top/left - bug #2330
11662
-		if ( !data.width && !data.height && !data.left && data.top ) {
11663
-			data.top = null;
11664
-		} else if ( !data.width && !data.height && !data.top && data.left ) {
11665
-			data.left = null;
11666
-		}
11667
-
11668
-		return data;
11669
-	},
11670
-
11671
-	_getPaddingPlusBorderDimensions: function( element ) {
11672
-		var i = 0,
11673
-			widths = [],
11674
-			borders = [
11675
-				element.css( "borderTopWidth" ),
11676
-				element.css( "borderRightWidth" ),
11677
-				element.css( "borderBottomWidth" ),
11678
-				element.css( "borderLeftWidth" )
11679
-			],
11680
-			paddings = [
11681
-				element.css( "paddingTop" ),
11682
-				element.css( "paddingRight" ),
11683
-				element.css( "paddingBottom" ),
11684
-				element.css( "paddingLeft" )
11685
-			];
11686
-
11687
-		for ( ; i < 4; i++ ) {
11688
-			widths[ i ] = ( parseFloat( borders[ i ] ) || 0 );
11689
-			widths[ i ] += ( parseFloat( paddings[ i ] ) || 0 );
11690
-		}
11691
-
11692
-		return {
11693
-			height: widths[ 0 ] + widths[ 2 ],
11694
-			width: widths[ 1 ] + widths[ 3 ]
11695
-		};
11696
-	},
11697
-
11698
-	_proportionallyResize: function() {
11699
-
11700
-		if ( !this._proportionallyResizeElements.length ) {
11701
-			return;
11702
-		}
11703
-
11704
-		var prel,
11705
-			i = 0,
11706
-			element = this.helper || this.element;
11707
-
11708
-		for ( ; i < this._proportionallyResizeElements.length; i++ ) {
11709
-
11710
-			prel = this._proportionallyResizeElements[ i ];
11711
-
11712
-			// TODO: Seems like a bug to cache this.outerDimensions
11713
-			// considering that we are in a loop.
11714
-			if ( !this.outerDimensions ) {
11715
-				this.outerDimensions = this._getPaddingPlusBorderDimensions( prel );
11716
-			}
11717
-
11718
-			prel.css( {
11719
-				height: ( element.height() - this.outerDimensions.height ) || 0,
11720
-				width: ( element.width() - this.outerDimensions.width ) || 0
11721
-			} );
11722
-
11723
-		}
11724
-
11725
-	},
11726
-
11727
-	_renderProxy: function() {
11728
-
11729
-		var el = this.element, o = this.options;
11730
-		this.elementOffset = el.offset();
11731
-
11732
-		if ( this._helper ) {
11733
-
11734
-			this.helper = this.helper || $( "<div></div>" ).css( { overflow: "hidden" } );
11735
-
11736
-			this._addClass( this.helper, this._helper );
11737
-			this.helper.css( {
11738
-				width: this.element.outerWidth(),
11739
-				height: this.element.outerHeight(),
11740
-				position: "absolute",
11741
-				left: this.elementOffset.left + "px",
11742
-				top: this.elementOffset.top + "px",
11743
-				zIndex: ++o.zIndex //TODO: Don't modify option
11744
-			} );
11745
-
11746
-			this.helper
11747
-				.appendTo( "body" )
11748
-				.disableSelection();
11749
-
11750
-		} else {
11751
-			this.helper = this.element;
11752
-		}
11753
-
11754
-	},
11755
-
11756
-	_change: {
11757
-		e: function( event, dx ) {
11758
-			return { width: this.originalSize.width + dx };
11759
-		},
11760
-		w: function( event, dx ) {
11761
-			var cs = this.originalSize, sp = this.originalPosition;
11762
-			return { left: sp.left + dx, width: cs.width - dx };
11763
-		},
11764
-		n: function( event, dx, dy ) {
11765
-			var cs = this.originalSize, sp = this.originalPosition;
11766
-			return { top: sp.top + dy, height: cs.height - dy };
11767
-		},
11768
-		s: function( event, dx, dy ) {
11769
-			return { height: this.originalSize.height + dy };
11770
-		},
11771
-		se: function( event, dx, dy ) {
11772
-			return $.extend( this._change.s.apply( this, arguments ),
11773
-				this._change.e.apply( this, [ event, dx, dy ] ) );
11774
-		},
11775
-		sw: function( event, dx, dy ) {
11776
-			return $.extend( this._change.s.apply( this, arguments ),
11777
-				this._change.w.apply( this, [ event, dx, dy ] ) );
11778
-		},
11779
-		ne: function( event, dx, dy ) {
11780
-			return $.extend( this._change.n.apply( this, arguments ),
11781
-				this._change.e.apply( this, [ event, dx, dy ] ) );
11782
-		},
11783
-		nw: function( event, dx, dy ) {
11784
-			return $.extend( this._change.n.apply( this, arguments ),
11785
-				this._change.w.apply( this, [ event, dx, dy ] ) );
11786
-		}
11787
-	},
11788
-
11789
-	_propagate: function( n, event ) {
11790
-		$.ui.plugin.call( this, n, [ event, this.ui() ] );
11791
-		if ( n !== "resize" ) {
11792
-			this._trigger( n, event, this.ui() );
11793
-		}
11794
-	},
11795
-
11796
-	plugins: {},
11797
-
11798
-	ui: function() {
11799
-		return {
11800
-			originalElement: this.originalElement,
11801
-			element: this.element,
11802
-			helper: this.helper,
11803
-			position: this.position,
11804
-			size: this.size,
11805
-			originalSize: this.originalSize,
11806
-			originalPosition: this.originalPosition
11807
-		};
11808
-	}
11809
-
11810
-} );
11811
-
11812
-/*
11813
- * Resizable Extensions
11814
- */
11815
-
11816
-$.ui.plugin.add( "resizable", "animate", {
11817
-
11818
-	stop: function( event ) {
11819
-		var that = $( this ).resizable( "instance" ),
11820
-			o = that.options,
11821
-			pr = that._proportionallyResizeElements,
11822
-			ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName ),
11823
-			soffseth = ista && that._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height,
11824
-			soffsetw = ista ? 0 : that.sizeDiff.width,
11825
-			style = {
11826
-				width: ( that.size.width - soffsetw ),
11827
-				height: ( that.size.height - soffseth )
11828
-			},
11829
-			left = ( parseFloat( that.element.css( "left" ) ) +
11830
-				( that.position.left - that.originalPosition.left ) ) || null,
11831
-			top = ( parseFloat( that.element.css( "top" ) ) +
11832
-				( that.position.top - that.originalPosition.top ) ) || null;
11833
-
11834
-		that.element.animate(
11835
-			$.extend( style, top && left ? { top: top, left: left } : {} ), {
11836
-				duration: o.animateDuration,
11837
-				easing: o.animateEasing,
11838
-				step: function() {
11839
-
11840
-					var data = {
11841
-						width: parseFloat( that.element.css( "width" ) ),
11842
-						height: parseFloat( that.element.css( "height" ) ),
11843
-						top: parseFloat( that.element.css( "top" ) ),
11844
-						left: parseFloat( that.element.css( "left" ) )
11845
-					};
11846
-
11847
-					if ( pr && pr.length ) {
11848
-						$( pr[ 0 ] ).css( { width: data.width, height: data.height } );
11849
-					}
11850
-
11851
-					// Propagating resize, and updating values for each animation step
11852
-					that._updateCache( data );
11853
-					that._propagate( "resize", event );
11854
-
11855
-				}
11856
-			}
11857
-		);
11858
-	}
11859
-
11860
-} );
11861
-
11862
-$.ui.plugin.add( "resizable", "containment", {
11863
-
11864
-	start: function() {
11865
-		var element, p, co, ch, cw, width, height,
11866
-			that = $( this ).resizable( "instance" ),
11867
-			o = that.options,
11868
-			el = that.element,
11869
-			oc = o.containment,
11870
-			ce = ( oc instanceof $ ) ?
11871
-				oc.get( 0 ) :
11872
-				( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;
11873
-
11874
-		if ( !ce ) {
11875
-			return;
11876
-		}
11877
-
11878
-		that.containerElement = $( ce );
11879
-
11880
-		if ( /document/.test( oc ) || oc === document ) {
11881
-			that.containerOffset = {
11882
-				left: 0,
11883
-				top: 0
11884
-			};
11885
-			that.containerPosition = {
11886
-				left: 0,
11887
-				top: 0
11888
-			};
11889
-
11890
-			that.parentData = {
11891
-				element: $( document ),
11892
-				left: 0,
11893
-				top: 0,
11894
-				width: $( document ).width(),
11895
-				height: $( document ).height() || document.body.parentNode.scrollHeight
11896
-			};
11897
-		} else {
11898
-			element = $( ce );
11899
-			p = [];
11900
-			$( [ "Top", "Right", "Left", "Bottom" ] ).each( function( i, name ) {
11901
-				p[ i ] = that._num( element.css( "padding" + name ) );
11902
-			} );
11903
-
11904
-			that.containerOffset = element.offset();
11905
-			that.containerPosition = element.position();
11906
-			that.containerSize = {
11907
-				height: ( element.innerHeight() - p[ 3 ] ),
11908
-				width: ( element.innerWidth() - p[ 1 ] )
11909
-			};
11910
-
11911
-			co = that.containerOffset;
11912
-			ch = that.containerSize.height;
11913
-			cw = that.containerSize.width;
11914
-			width = ( that._hasScroll( ce, "left" ) ? ce.scrollWidth : cw );
11915
-			height = ( that._hasScroll( ce ) ? ce.scrollHeight : ch );
11916
-
11917
-			that.parentData = {
11918
-				element: ce,
11919
-				left: co.left,
11920
-				top: co.top,
11921
-				width: width,
11922
-				height: height
11923
-			};
11924
-		}
11925
-	},
11926
-
11927
-	resize: function( event ) {
11928
-		var woset, hoset, isParent, isOffsetRelative,
11929
-			that = $( this ).resizable( "instance" ),
11930
-			o = that.options,
11931
-			co = that.containerOffset,
11932
-			cp = that.position,
11933
-			pRatio = that._aspectRatio || event.shiftKey,
11934
-			cop = {
11935
-				top: 0,
11936
-				left: 0
11937
-			},
11938
-			ce = that.containerElement,
11939
-			continueResize = true;
11940
-
11941
-		if ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( "position" ) ) ) {
11942
-			cop = co;
11943
-		}
11944
-
11945
-		if ( cp.left < ( that._helper ? co.left : 0 ) ) {
11946
-			that.size.width = that.size.width +
11947
-				( that._helper ?
11948
-					( that.position.left - co.left ) :
11949
-					( that.position.left - cop.left ) );
11950
-
11951
-			if ( pRatio ) {
11952
-				that.size.height = that.size.width / that.aspectRatio;
11953
-				continueResize = false;
11954
-			}
11955
-			that.position.left = o.helper ? co.left : 0;
11956
-		}
11957
-
11958
-		if ( cp.top < ( that._helper ? co.top : 0 ) ) {
11959
-			that.size.height = that.size.height +
11960
-				( that._helper ?
11961
-					( that.position.top - co.top ) :
11962
-					that.position.top );
11963
-
11964
-			if ( pRatio ) {
11965
-				that.size.width = that.size.height * that.aspectRatio;
11966
-				continueResize = false;
11967
-			}
11968
-			that.position.top = that._helper ? co.top : 0;
11969
-		}
11970
-
11971
-		isParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );
11972
-		isOffsetRelative = /relative|absolute/.test( that.containerElement.css( "position" ) );
11973
-
11974
-		if ( isParent && isOffsetRelative ) {
11975
-			that.offset.left = that.parentData.left + that.position.left;
11976
-			that.offset.top = that.parentData.top + that.position.top;
11977
-		} else {
11978
-			that.offset.left = that.element.offset().left;
11979
-			that.offset.top = that.element.offset().top;
11980
-		}
11981
-
11982
-		woset = Math.abs( that.sizeDiff.width +
11983
-			( that._helper ?
11984
-				that.offset.left - cop.left :
11985
-				( that.offset.left - co.left ) ) );
11986
-
11987
-		hoset = Math.abs( that.sizeDiff.height +
11988
-			( that._helper ?
11989
-				that.offset.top - cop.top :
11990
-				( that.offset.top - co.top ) ) );
11991
-
11992
-		if ( woset + that.size.width >= that.parentData.width ) {
11993
-			that.size.width = that.parentData.width - woset;
11994
-			if ( pRatio ) {
11995
-				that.size.height = that.size.width / that.aspectRatio;
11996
-				continueResize = false;
11997
-			}
11998
-		}
11999
-
12000
-		if ( hoset + that.size.height >= that.parentData.height ) {
12001
-			that.size.height = that.parentData.height - hoset;
12002
-			if ( pRatio ) {
12003
-				that.size.width = that.size.height * that.aspectRatio;
12004
-				continueResize = false;
12005
-			}
12006
-		}
12007
-
12008
-		if ( !continueResize ) {
12009
-			that.position.left = that.prevPosition.left;
12010
-			that.position.top = that.prevPosition.top;
12011
-			that.size.width = that.prevSize.width;
12012
-			that.size.height = that.prevSize.height;
12013
-		}
12014
-	},
12015
-
12016
-	stop: function() {
12017
-		var that = $( this ).resizable( "instance" ),
12018
-			o = that.options,
12019
-			co = that.containerOffset,
12020
-			cop = that.containerPosition,
12021
-			ce = that.containerElement,
12022
-			helper = $( that.helper ),
12023
-			ho = helper.offset(),
12024
-			w = helper.outerWidth() - that.sizeDiff.width,
12025
-			h = helper.outerHeight() - that.sizeDiff.height;
12026
-
12027
-		if ( that._helper && !o.animate && ( /relative/ ).test( ce.css( "position" ) ) ) {
12028
-			$( this ).css( {
12029
-				left: ho.left - cop.left - co.left,
12030
-				width: w,
12031
-				height: h
12032
-			} );
12033
-		}
12034
-
12035
-		if ( that._helper && !o.animate && ( /static/ ).test( ce.css( "position" ) ) ) {
12036
-			$( this ).css( {
12037
-				left: ho.left - cop.left - co.left,
12038
-				width: w,
12039
-				height: h
12040
-			} );
12041
-		}
12042
-	}
12043
-} );
12044
-
12045
-$.ui.plugin.add( "resizable", "alsoResize", {
12046
-
12047
-	start: function() {
12048
-		var that = $( this ).resizable( "instance" ),
12049
-			o = that.options;
12050
-
12051
-		$( o.alsoResize ).each( function() {
12052
-			var el = $( this );
12053
-			el.data( "ui-resizable-alsoresize", {
12054
-				width: parseFloat( el.width() ), height: parseFloat( el.height() ),
12055
-				left: parseFloat( el.css( "left" ) ), top: parseFloat( el.css( "top" ) )
12056
-			} );
12057
-		} );
12058
-	},
12059
-
12060
-	resize: function( event, ui ) {
12061
-		var that = $( this ).resizable( "instance" ),
12062
-			o = that.options,
12063
-			os = that.originalSize,
12064
-			op = that.originalPosition,
12065
-			delta = {
12066
-				height: ( that.size.height - os.height ) || 0,
12067
-				width: ( that.size.width - os.width ) || 0,
12068
-				top: ( that.position.top - op.top ) || 0,
12069
-				left: ( that.position.left - op.left ) || 0
12070
-			};
12071
-
12072
-			$( o.alsoResize ).each( function() {
12073
-				var el = $( this ), start = $( this ).data( "ui-resizable-alsoresize" ), style = {},
12074
-					css = el.parents( ui.originalElement[ 0 ] ).length ?
12075
-							[ "width", "height" ] :
12076
-							[ "width", "height", "top", "left" ];
12077
-
12078
-				$.each( css, function( i, prop ) {
12079
-					var sum = ( start[ prop ] || 0 ) + ( delta[ prop ] || 0 );
12080
-					if ( sum && sum >= 0 ) {
12081
-						style[ prop ] = sum || null;
12082
-					}
12083
-				} );
12084
-
12085
-				el.css( style );
12086
-			} );
12087
-	},
12088
-
12089
-	stop: function() {
12090
-		$( this ).removeData( "ui-resizable-alsoresize" );
12091
-	}
12092
-} );
12093
-
12094
-$.ui.plugin.add( "resizable", "ghost", {
12095
-
12096
-	start: function() {
12097
-
12098
-		var that = $( this ).resizable( "instance" ), cs = that.size;
12099
-
12100
-		that.ghost = that.originalElement.clone();
12101
-		that.ghost.css( {
12102
-			opacity: 0.25,
12103
-			display: "block",
12104
-			position: "relative",
12105
-			height: cs.height,
12106
-			width: cs.width,
12107
-			margin: 0,
12108
-			left: 0,
12109
-			top: 0
12110
-		} );
12111
-
12112
-		that._addClass( that.ghost, "ui-resizable-ghost" );
12113
-
12114
-		// DEPRECATED
12115
-		// TODO: remove after 1.12
12116
-		if ( $.uiBackCompat !== false && typeof that.options.ghost === "string" ) {
12117
-
12118
-			// Ghost option
12119
-			that.ghost.addClass( this.options.ghost );
12120
-		}
12121
-
12122
-		that.ghost.appendTo( that.helper );
12123
-
12124
-	},
12125
-
12126
-	resize: function() {
12127
-		var that = $( this ).resizable( "instance" );
12128
-		if ( that.ghost ) {
12129
-			that.ghost.css( {
12130
-				position: "relative",
12131
-				height: that.size.height,
12132
-				width: that.size.width
12133
-			} );
12134
-		}
12135
-	},
12136
-
12137
-	stop: function() {
12138
-		var that = $( this ).resizable( "instance" );
12139
-		if ( that.ghost && that.helper ) {
12140
-			that.helper.get( 0 ).removeChild( that.ghost.get( 0 ) );
12141
-		}
12142
-	}
12143
-
12144
-} );
12145
-
12146
-$.ui.plugin.add( "resizable", "grid", {
12147
-
12148
-	resize: function() {
12149
-		var outerDimensions,
12150
-			that = $( this ).resizable( "instance" ),
12151
-			o = that.options,
12152
-			cs = that.size,
12153
-			os = that.originalSize,
12154
-			op = that.originalPosition,
12155
-			a = that.axis,
12156
-			grid = typeof o.grid === "number" ? [ o.grid, o.grid ] : o.grid,
12157
-			gridX = ( grid[ 0 ] || 1 ),
12158
-			gridY = ( grid[ 1 ] || 1 ),
12159
-			ox = Math.round( ( cs.width - os.width ) / gridX ) * gridX,
12160
-			oy = Math.round( ( cs.height - os.height ) / gridY ) * gridY,
12161
-			newWidth = os.width + ox,
12162
-			newHeight = os.height + oy,
12163
-			isMaxWidth = o.maxWidth && ( o.maxWidth < newWidth ),
12164
-			isMaxHeight = o.maxHeight && ( o.maxHeight < newHeight ),
12165
-			isMinWidth = o.minWidth && ( o.minWidth > newWidth ),
12166
-			isMinHeight = o.minHeight && ( o.minHeight > newHeight );
12167
-
12168
-		o.grid = grid;
12169
-
12170
-		if ( isMinWidth ) {
12171
-			newWidth += gridX;
12172
-		}
12173
-		if ( isMinHeight ) {
12174
-			newHeight += gridY;
12175
-		}
12176
-		if ( isMaxWidth ) {
12177
-			newWidth -= gridX;
12178
-		}
12179
-		if ( isMaxHeight ) {
12180
-			newHeight -= gridY;
12181
-		}
12182
-
12183
-		if ( /^(se|s|e)$/.test( a ) ) {
12184
-			that.size.width = newWidth;
12185
-			that.size.height = newHeight;
12186
-		} else if ( /^(ne)$/.test( a ) ) {
12187
-			that.size.width = newWidth;
12188
-			that.size.height = newHeight;
12189
-			that.position.top = op.top - oy;
12190
-		} else if ( /^(sw)$/.test( a ) ) {
12191
-			that.size.width = newWidth;
12192
-			that.size.height = newHeight;
12193
-			that.position.left = op.left - ox;
12194
-		} else {
12195
-			if ( newHeight - gridY <= 0 || newWidth - gridX <= 0 ) {
12196
-				outerDimensions = that._getPaddingPlusBorderDimensions( this );
12197
-			}
12198
-
12199
-			if ( newHeight - gridY > 0 ) {
12200
-				that.size.height = newHeight;
12201
-				that.position.top = op.top - oy;
12202
-			} else {
12203
-				newHeight = gridY - outerDimensions.height;
12204
-				that.size.height = newHeight;
12205
-				that.position.top = op.top + os.height - newHeight;
12206
-			}
12207
-			if ( newWidth - gridX > 0 ) {
12208
-				that.size.width = newWidth;
12209
-				that.position.left = op.left - ox;
12210
-			} else {
12211
-				newWidth = gridX - outerDimensions.width;
12212
-				that.size.width = newWidth;
12213
-				that.position.left = op.left + os.width - newWidth;
12214
-			}
12215
-		}
12216
-	}
12217
-
12218
-} );
12219
-
12220
-var widgetsResizable = $.ui.resizable;
12221
-
12222
-
12223
-/*!
12224
- * jQuery UI Dialog 1.13.2
12225
- * http://jqueryui.com
12226
- *
12227
- * Copyright jQuery Foundation and other contributors
12228
- * Released under the MIT license.
12229
- * http://jquery.org/license
12230
- */
12231
-
12232
-//>>label: Dialog
12233
-//>>group: Widgets
12234
-//>>description: Displays customizable dialog windows.
12235
-//>>docs: http://api.jqueryui.com/dialog/
12236
-//>>demos: http://jqueryui.com/dialog/
12237
-//>>css.structure: ../../themes/base/core.css
12238
-//>>css.structure: ../../themes/base/dialog.css
12239
-//>>css.theme: ../../themes/base/theme.css
12240
-
12241
-
12242
-$.widget( "ui.dialog", {
12243
-	version: "1.13.2",
12244
-	options: {
12245
-		appendTo: "body",
12246
-		autoOpen: true,
12247
-		buttons: [],
12248
-		classes: {
12249
-			"ui-dialog": "ui-corner-all",
12250
-			"ui-dialog-titlebar": "ui-corner-all"
12251
-		},
12252
-		closeOnEscape: true,
12253
-		closeText: "Close",
12254
-		draggable: true,
12255
-		hide: null,
12256
-		height: "auto",
12257
-		maxHeight: null,
12258
-		maxWidth: null,
12259
-		minHeight: 150,
12260
-		minWidth: 150,
12261
-		modal: false,
12262
-		position: {
12263
-			my: "center",
12264
-			at: "center",
12265
-			of: window,
12266
-			collision: "fit",
12267
-
12268
-			// Ensure the titlebar is always visible
12269
-			using: function( pos ) {
12270
-				var topOffset = $( this ).css( pos ).offset().top;
12271
-				if ( topOffset < 0 ) {
12272
-					$( this ).css( "top", pos.top - topOffset );
12273
-				}
12274
-			}
12275
-		},
12276
-		resizable: true,
12277
-		show: null,
12278
-		title: null,
12279
-		width: 300,
12280
-
12281
-		// Callbacks
12282
-		beforeClose: null,
12283
-		close: null,
12284
-		drag: null,
12285
-		dragStart: null,
12286
-		dragStop: null,
12287
-		focus: null,
12288
-		open: null,
12289
-		resize: null,
12290
-		resizeStart: null,
12291
-		resizeStop: null
12292
-	},
12293
-
12294
-	sizeRelatedOptions: {
12295
-		buttons: true,
12296
-		height: true,
12297
-		maxHeight: true,
12298
-		maxWidth: true,
12299
-		minHeight: true,
12300
-		minWidth: true,
12301
-		width: true
12302
-	},
12303
-
12304
-	resizableRelatedOptions: {
12305
-		maxHeight: true,
12306
-		maxWidth: true,
12307
-		minHeight: true,
12308
-		minWidth: true
12309
-	},
12310
-
12311
-	_create: function() {
12312
-		this.originalCss = {
12313
-			display: this.element[ 0 ].style.display,
12314
-			width: this.element[ 0 ].style.width,
12315
-			minHeight: this.element[ 0 ].style.minHeight,
12316
-			maxHeight: this.element[ 0 ].style.maxHeight,
12317
-			height: this.element[ 0 ].style.height
12318
-		};
12319
-		this.originalPosition = {
12320
-			parent: this.element.parent(),
12321
-			index: this.element.parent().children().index( this.element )
12322
-		};
12323
-		this.originalTitle = this.element.attr( "title" );
12324
-		if ( this.options.title == null && this.originalTitle != null ) {
12325
-			this.options.title = this.originalTitle;
12326
-		}
12327
-
12328
-		// Dialogs can't be disabled
12329
-		if ( this.options.disabled ) {
12330
-			this.options.disabled = false;
12331
-		}
12332
-
12333
-		this._createWrapper();
12334
-
12335
-		this.element
12336
-			.show()
12337
-			.removeAttr( "title" )
12338
-			.appendTo( this.uiDialog );
12339
-
12340
-		this._addClass( "ui-dialog-content", "ui-widget-content" );
12341
-
12342
-		this._createTitlebar();
12343
-		this._createButtonPane();
12344
-
12345
-		if ( this.options.draggable && $.fn.draggable ) {
12346
-			this._makeDraggable();
12347
-		}
12348
-		if ( this.options.resizable && $.fn.resizable ) {
12349
-			this._makeResizable();
12350
-		}
12351
-
12352
-		this._isOpen = false;
12353
-
12354
-		this._trackFocus();
12355
-	},
12356
-
12357
-	_init: function() {
12358
-		if ( this.options.autoOpen ) {
12359
-			this.open();
12360
-		}
12361
-	},
12362
-
12363
-	_appendTo: function() {
12364
-		var element = this.options.appendTo;
12365
-		if ( element && ( element.jquery || element.nodeType ) ) {
12366
-			return $( element );
12367
-		}
12368
-		return this.document.find( element || "body" ).eq( 0 );
12369
-	},
12370
-
12371
-	_destroy: function() {
12372
-		var next,
12373
-			originalPosition = this.originalPosition;
12374
-
12375
-		this._untrackInstance();
12376
-		this._destroyOverlay();
12377
-
12378
-		this.element
12379
-			.removeUniqueId()
12380
-			.css( this.originalCss )
12381
-
12382
-			// Without detaching first, the following becomes really slow
12383
-			.detach();
12384
-
12385
-		this.uiDialog.remove();
12386
-
12387
-		if ( this.originalTitle ) {
12388
-			this.element.attr( "title", this.originalTitle );
12389
-		}
12390
-
12391
-		next = originalPosition.parent.children().eq( originalPosition.index );
12392
-
12393
-		// Don't try to place the dialog next to itself (#8613)
12394
-		if ( next.length && next[ 0 ] !== this.element[ 0 ] ) {
12395
-			next.before( this.element );
12396
-		} else {
12397
-			originalPosition.parent.append( this.element );
12398
-		}
12399
-	},
12400
-
12401
-	widget: function() {
12402
-		return this.uiDialog;
12403
-	},
12404
-
12405
-	disable: $.noop,
12406
-	enable: $.noop,
12407
-
12408
-	close: function( event ) {
12409
-		var that = this;
12410
-
12411
-		if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
12412
-			return;
12413
-		}
12414
-
12415
-		this._isOpen = false;
12416
-		this._focusedElement = null;
12417
-		this._destroyOverlay();
12418
-		this._untrackInstance();
12419
-
12420
-		if ( !this.opener.filter( ":focusable" ).trigger( "focus" ).length ) {
12421
-
12422
-			// Hiding a focused element doesn't trigger blur in WebKit
12423
-			// so in case we have nothing to focus on, explicitly blur the active element
12424
-			// https://bugs.webkit.org/show_bug.cgi?id=47182
12425
-			$.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) );
12426
-		}
12427
-
12428
-		this._hide( this.uiDialog, this.options.hide, function() {
12429
-			that._trigger( "close", event );
12430
-		} );
12431
-	},
12432
-
12433
-	isOpen: function() {
12434
-		return this._isOpen;
12435
-	},
12436
-
12437
-	moveToTop: function() {
12438
-		this._moveToTop();
12439
-	},
12440
-
12441
-	_moveToTop: function( event, silent ) {
12442
-		var moved = false,
12443
-			zIndices = this.uiDialog.siblings( ".ui-front:visible" ).map( function() {
12444
-				return +$( this ).css( "z-index" );
12445
-			} ).get(),
12446
-			zIndexMax = Math.max.apply( null, zIndices );
12447
-
12448
-		if ( zIndexMax >= +this.uiDialog.css( "z-index" ) ) {
12449
-			this.uiDialog.css( "z-index", zIndexMax + 1 );
12450
-			moved = true;
12451
-		}
12452
-
12453
-		if ( moved && !silent ) {
12454
-			this._trigger( "focus", event );
12455
-		}
12456
-		return moved;
12457
-	},
12458
-
12459
-	open: function() {
12460
-		var that = this;
12461
-		if ( this._isOpen ) {
12462
-			if ( this._moveToTop() ) {
12463
-				this._focusTabbable();
12464
-			}
12465
-			return;
12466
-		}
12467
-
12468
-		this._isOpen = true;
12469
-		this.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
12470
-
12471
-		this._size();
12472
-		this._position();
12473
-		this._createOverlay();
12474
-		this._moveToTop( null, true );
12475
-
12476
-		// Ensure the overlay is moved to the top with the dialog, but only when
12477
-		// opening. The overlay shouldn't move after the dialog is open so that
12478
-		// modeless dialogs opened after the modal dialog stack properly.
12479
-		if ( this.overlay ) {
12480
-			this.overlay.css( "z-index", this.uiDialog.css( "z-index" ) - 1 );
12481
-		}
12482
-
12483
-		this._show( this.uiDialog, this.options.show, function() {
12484
-			that._focusTabbable();
12485
-			that._trigger( "focus" );
12486
-		} );
12487
-
12488
-		// Track the dialog immediately upon opening in case a focus event
12489
-		// somehow occurs outside of the dialog before an element inside the
12490
-		// dialog is focused (#10152)
12491
-		this._makeFocusTarget();
12492
-
12493
-		this._trigger( "open" );
12494
-	},
12495
-
12496
-	_focusTabbable: function() {
12497
-
12498
-		// Set focus to the first match:
12499
-		// 1. An element that was focused previously
12500
-		// 2. First element inside the dialog matching [autofocus]
12501
-		// 3. Tabbable element inside the content element
12502
-		// 4. Tabbable element inside the buttonpane
12503
-		// 5. The close button
12504
-		// 6. The dialog itself
12505
-		var hasFocus = this._focusedElement;
12506
-		if ( !hasFocus ) {
12507
-			hasFocus = this.element.find( "[autofocus]" );
12508
-		}
12509
-		if ( !hasFocus.length ) {
12510
-			hasFocus = this.element.find( ":tabbable" );
12511
-		}
12512
-		if ( !hasFocus.length ) {
12513
-			hasFocus = this.uiDialogButtonPane.find( ":tabbable" );
12514
-		}
12515
-		if ( !hasFocus.length ) {
12516
-			hasFocus = this.uiDialogTitlebarClose.filter( ":tabbable" );
12517
-		}
12518
-		if ( !hasFocus.length ) {
12519
-			hasFocus = this.uiDialog;
12520
-		}
12521
-		hasFocus.eq( 0 ).trigger( "focus" );
12522
-	},
12523
-
12524
-	_restoreTabbableFocus: function() {
12525
-		var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
12526
-			isActive = this.uiDialog[ 0 ] === activeElement ||
12527
-				$.contains( this.uiDialog[ 0 ], activeElement );
12528
-		if ( !isActive ) {
12529
-			this._focusTabbable();
12530
-		}
12531
-	},
12532
-
12533
-	_keepFocus: function( event ) {
12534
-		event.preventDefault();
12535
-		this._restoreTabbableFocus();
12536
-
12537
-		// support: IE
12538
-		// IE <= 8 doesn't prevent moving focus even with event.preventDefault()
12539
-		// so we check again later
12540
-		this._delay( this._restoreTabbableFocus );
12541
-	},
12542
-
12543
-	_createWrapper: function() {
12544
-		this.uiDialog = $( "<div>" )
12545
-			.hide()
12546
-			.attr( {
12547
-
12548
-				// Setting tabIndex makes the div focusable
12549
-				tabIndex: -1,
12550
-				role: "dialog"
12551
-			} )
12552
-			.appendTo( this._appendTo() );
12553
-
12554
-		this._addClass( this.uiDialog, "ui-dialog", "ui-widget ui-widget-content ui-front" );
12555
-		this._on( this.uiDialog, {
12556
-			keydown: function( event ) {
12557
-				if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
12558
-						event.keyCode === $.ui.keyCode.ESCAPE ) {
12559
-					event.preventDefault();
12560
-					this.close( event );
12561
-					return;
12562
-				}
12563
-
12564
-				// Prevent tabbing out of dialogs
12565
-				if ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {
12566
-					return;
12567
-				}
12568
-				var tabbables = this.uiDialog.find( ":tabbable" ),
12569
-					first = tabbables.first(),
12570
-					last = tabbables.last();
12571
-
12572
-				if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
12573
-						!event.shiftKey ) {
12574
-					this._delay( function() {
12575
-						first.trigger( "focus" );
12576
-					} );
12577
-					event.preventDefault();
12578
-				} else if ( ( event.target === first[ 0 ] ||
12579
-						event.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {
12580
-					this._delay( function() {
12581
-						last.trigger( "focus" );
12582
-					} );
12583
-					event.preventDefault();
12584
-				}
12585
-			},
12586
-			mousedown: function( event ) {
12587
-				if ( this._moveToTop( event ) ) {
12588
-					this._focusTabbable();
12589
-				}
12590
-			}
12591
-		} );
12592
-
12593
-		// We assume that any existing aria-describedby attribute means
12594
-		// that the dialog content is marked up properly
12595
-		// otherwise we brute force the content as the description
12596
-		if ( !this.element.find( "[aria-describedby]" ).length ) {
12597
-			this.uiDialog.attr( {
12598
-				"aria-describedby": this.element.uniqueId().attr( "id" )
12599
-			} );
12600
-		}
12601
-	},
12602
-
12603
-	_createTitlebar: function() {
12604
-		var uiDialogTitle;
12605
-
12606
-		this.uiDialogTitlebar = $( "<div>" );
12607
-		this._addClass( this.uiDialogTitlebar,
12608
-			"ui-dialog-titlebar", "ui-widget-header ui-helper-clearfix" );
12609
-		this._on( this.uiDialogTitlebar, {
12610
-			mousedown: function( event ) {
12611
-
12612
-				// Don't prevent click on close button (#8838)
12613
-				// Focusing a dialog that is partially scrolled out of view
12614
-				// causes the browser to scroll it into view, preventing the click event
12615
-				if ( !$( event.target ).closest( ".ui-dialog-titlebar-close" ) ) {
12616
-
12617
-					// Dialog isn't getting focus when dragging (#8063)
12618
-					this.uiDialog.trigger( "focus" );
12619
-				}
12620
-			}
12621
-		} );
12622
-
12623
-		// Support: IE
12624
-		// Use type="button" to prevent enter keypresses in textboxes from closing the
12625
-		// dialog in IE (#9312)
12626
-		this.uiDialogTitlebarClose = $( "<button type='button'></button>" )
12627
-			.button( {
12628
-				label: $( "<a>" ).text( this.options.closeText ).html(),
12629
-				icon: "ui-icon-closethick",
12630
-				showLabel: false
12631
-			} )
12632
-			.appendTo( this.uiDialogTitlebar );
12633
-
12634
-		this._addClass( this.uiDialogTitlebarClose, "ui-dialog-titlebar-close" );
12635
-		this._on( this.uiDialogTitlebarClose, {
12636
-			click: function( event ) {
12637
-				event.preventDefault();
12638
-				this.close( event );
12639
-			}
12640
-		} );
12641
-
12642
-		uiDialogTitle = $( "<span>" ).uniqueId().prependTo( this.uiDialogTitlebar );
12643
-		this._addClass( uiDialogTitle, "ui-dialog-title" );
12644
-		this._title( uiDialogTitle );
12645
-
12646
-		this.uiDialogTitlebar.prependTo( this.uiDialog );
12647
-
12648
-		this.uiDialog.attr( {
12649
-			"aria-labelledby": uiDialogTitle.attr( "id" )
12650
-		} );
12651
-	},
12652
-
12653
-	_title: function( title ) {
12654
-		if ( this.options.title ) {
12655
-			title.text( this.options.title );
12656
-		} else {
12657
-			title.html( "&#160;" );
12658
-		}
12659
-	},
12660
-
12661
-	_createButtonPane: function() {
12662
-		this.uiDialogButtonPane = $( "<div>" );
12663
-		this._addClass( this.uiDialogButtonPane, "ui-dialog-buttonpane",
12664
-			"ui-widget-content ui-helper-clearfix" );
12665
-
12666
-		this.uiButtonSet = $( "<div>" )
12667
-			.appendTo( this.uiDialogButtonPane );
12668
-		this._addClass( this.uiButtonSet, "ui-dialog-buttonset" );
12669
-
12670
-		this._createButtons();
12671
-	},
12672
-
12673
-	_createButtons: function() {
12674
-		var that = this,
12675
-			buttons = this.options.buttons;
12676
-
12677
-		// If we already have a button pane, remove it
12678
-		this.uiDialogButtonPane.remove();
12679
-		this.uiButtonSet.empty();
12680
-
12681
-		if ( $.isEmptyObject( buttons ) || ( Array.isArray( buttons ) && !buttons.length ) ) {
12682
-			this._removeClass( this.uiDialog, "ui-dialog-buttons" );
12683
-			return;
12684
-		}
12685
-
12686
-		$.each( buttons, function( name, props ) {
12687
-			var click, buttonOptions;
12688
-			props = typeof props === "function" ?
12689
-				{ click: props, text: name } :
12690
-				props;
12691
-
12692
-			// Default to a non-submitting button
12693
-			props = $.extend( { type: "button" }, props );
12694
-
12695
-			// Change the context for the click callback to be the main element
12696
-			click = props.click;
12697
-			buttonOptions = {
12698
-				icon: props.icon,
12699
-				iconPosition: props.iconPosition,
12700
-				showLabel: props.showLabel,
12701
-
12702
-				// Deprecated options
12703
-				icons: props.icons,
12704
-				text: props.text
12705
-			};
12706
-
12707
-			delete props.click;
12708
-			delete props.icon;
12709
-			delete props.iconPosition;
12710
-			delete props.showLabel;
12711
-
12712
-			// Deprecated options
12713
-			delete props.icons;
12714
-			if ( typeof props.text === "boolean" ) {
12715
-				delete props.text;
12716
-			}
12717
-
12718
-			$( "<button></button>", props )
12719
-				.button( buttonOptions )
12720
-				.appendTo( that.uiButtonSet )
12721
-				.on( "click", function() {
12722
-					click.apply( that.element[ 0 ], arguments );
12723
-				} );
12724
-		} );
12725
-		this._addClass( this.uiDialog, "ui-dialog-buttons" );
12726
-		this.uiDialogButtonPane.appendTo( this.uiDialog );
12727
-	},
12728
-
12729
-	_makeDraggable: function() {
12730
-		var that = this,
12731
-			options = this.options;
12732
-
12733
-		function filteredUi( ui ) {
12734
-			return {
12735
-				position: ui.position,
12736
-				offset: ui.offset
12737
-			};
12738
-		}
12739
-
12740
-		this.uiDialog.draggable( {
12741
-			cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
12742
-			handle: ".ui-dialog-titlebar",
12743
-			containment: "document",
12744
-			start: function( event, ui ) {
12745
-				that._addClass( $( this ), "ui-dialog-dragging" );
12746
-				that._blockFrames();
12747
-				that._trigger( "dragStart", event, filteredUi( ui ) );
12748
-			},
12749
-			drag: function( event, ui ) {
12750
-				that._trigger( "drag", event, filteredUi( ui ) );
12751
-			},
12752
-			stop: function( event, ui ) {
12753
-				var left = ui.offset.left - that.document.scrollLeft(),
12754
-					top = ui.offset.top - that.document.scrollTop();
12755
-
12756
-				options.position = {
12757
-					my: "left top",
12758
-					at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
12759
-						"top" + ( top >= 0 ? "+" : "" ) + top,
12760
-					of: that.window
12761
-				};
12762
-				that._removeClass( $( this ), "ui-dialog-dragging" );
12763
-				that._unblockFrames();
12764
-				that._trigger( "dragStop", event, filteredUi( ui ) );
12765
-			}
12766
-		} );
12767
-	},
12768
-
12769
-	_makeResizable: function() {
12770
-		var that = this,
12771
-			options = this.options,
12772
-			handles = options.resizable,
12773
-
12774
-			// .ui-resizable has position: relative defined in the stylesheet
12775
-			// but dialogs have to use absolute or fixed positioning
12776
-			position = this.uiDialog.css( "position" ),
12777
-			resizeHandles = typeof handles === "string" ?
12778
-				handles :
12779
-				"n,e,s,w,se,sw,ne,nw";
12780
-
12781
-		function filteredUi( ui ) {
12782
-			return {
12783
-				originalPosition: ui.originalPosition,
12784
-				originalSize: ui.originalSize,
12785
-				position: ui.position,
12786
-				size: ui.size
12787
-			};
12788
-		}
12789
-
12790
-		this.uiDialog.resizable( {
12791
-			cancel: ".ui-dialog-content",
12792
-			containment: "document",
12793
-			alsoResize: this.element,
12794
-			maxWidth: options.maxWidth,
12795
-			maxHeight: options.maxHeight,
12796
-			minWidth: options.minWidth,
12797
-			minHeight: this._minHeight(),
12798
-			handles: resizeHandles,
12799
-			start: function( event, ui ) {
12800
-				that._addClass( $( this ), "ui-dialog-resizing" );
12801
-				that._blockFrames();
12802
-				that._trigger( "resizeStart", event, filteredUi( ui ) );
12803
-			},
12804
-			resize: function( event, ui ) {
12805
-				that._trigger( "resize", event, filteredUi( ui ) );
12806
-			},
12807
-			stop: function( event, ui ) {
12808
-				var offset = that.uiDialog.offset(),
12809
-					left = offset.left - that.document.scrollLeft(),
12810
-					top = offset.top - that.document.scrollTop();
12811
-
12812
-				options.height = that.uiDialog.height();
12813
-				options.width = that.uiDialog.width();
12814
-				options.position = {
12815
-					my: "left top",
12816
-					at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
12817
-						"top" + ( top >= 0 ? "+" : "" ) + top,
12818
-					of: that.window
12819
-				};
12820
-				that._removeClass( $( this ), "ui-dialog-resizing" );
12821
-				that._unblockFrames();
12822
-				that._trigger( "resizeStop", event, filteredUi( ui ) );
12823
-			}
12824
-		} )
12825
-			.css( "position", position );
12826
-	},
12827
-
12828
-	_trackFocus: function() {
12829
-		this._on( this.widget(), {
12830
-			focusin: function( event ) {
12831
-				this._makeFocusTarget();
12832
-				this._focusedElement = $( event.target );
12833
-			}
12834
-		} );
12835
-	},
12836
-
12837
-	_makeFocusTarget: function() {
12838
-		this._untrackInstance();
12839
-		this._trackingInstances().unshift( this );
12840
-	},
12841
-
12842
-	_untrackInstance: function() {
12843
-		var instances = this._trackingInstances(),
12844
-			exists = $.inArray( this, instances );
12845
-		if ( exists !== -1 ) {
12846
-			instances.splice( exists, 1 );
12847
-		}
12848
-	},
12849
-
12850
-	_trackingInstances: function() {
12851
-		var instances = this.document.data( "ui-dialog-instances" );
12852
-		if ( !instances ) {
12853
-			instances = [];
12854
-			this.document.data( "ui-dialog-instances", instances );
12855
-		}
12856
-		return instances;
12857
-	},
12858
-
12859
-	_minHeight: function() {
12860
-		var options = this.options;
12861
-
12862
-		return options.height === "auto" ?
12863
-			options.minHeight :
12864
-			Math.min( options.minHeight, options.height );
12865
-	},
12866
-
12867
-	_position: function() {
12868
-
12869
-		// Need to show the dialog to get the actual offset in the position plugin
12870
-		var isVisible = this.uiDialog.is( ":visible" );
12871
-		if ( !isVisible ) {
12872
-			this.uiDialog.show();
12873
-		}
12874
-		this.uiDialog.position( this.options.position );
12875
-		if ( !isVisible ) {
12876
-			this.uiDialog.hide();
12877
-		}
12878
-	},
12879
-
12880
-	_setOptions: function( options ) {
12881
-		var that = this,
12882
-			resize = false,
12883
-			resizableOptions = {};
12884
-
12885
-		$.each( options, function( key, value ) {
12886
-			that._setOption( key, value );
12887
-
12888
-			if ( key in that.sizeRelatedOptions ) {
12889
-				resize = true;
12890
-			}
12891
-			if ( key in that.resizableRelatedOptions ) {
12892
-				resizableOptions[ key ] = value;
12893
-			}
12894
-		} );
12895
-
12896
-		if ( resize ) {
12897
-			this._size();
12898
-			this._position();
12899
-		}
12900
-		if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
12901
-			this.uiDialog.resizable( "option", resizableOptions );
12902
-		}
12903
-	},
12904
-
12905
-	_setOption: function( key, value ) {
12906
-		var isDraggable, isResizable,
12907
-			uiDialog = this.uiDialog;
12908
-
12909
-		if ( key === "disabled" ) {
12910
-			return;
12911
-		}
12912
-
12913
-		this._super( key, value );
12914
-
12915
-		if ( key === "appendTo" ) {
12916
-			this.uiDialog.appendTo( this._appendTo() );
12917
-		}
12918
-
12919
-		if ( key === "buttons" ) {
12920
-			this._createButtons();
12921
-		}
12922
-
12923
-		if ( key === "closeText" ) {
12924
-			this.uiDialogTitlebarClose.button( {
12925
-
12926
-				// Ensure that we always pass a string
12927
-				label: $( "<a>" ).text( "" + this.options.closeText ).html()
12928
-			} );
12929
-		}
12930
-
12931
-		if ( key === "draggable" ) {
12932
-			isDraggable = uiDialog.is( ":data(ui-draggable)" );
12933
-			if ( isDraggable && !value ) {
12934
-				uiDialog.draggable( "destroy" );
12935
-			}
12936
-
12937
-			if ( !isDraggable && value ) {
12938
-				this._makeDraggable();
12939
-			}
12940
-		}
12941
-
12942
-		if ( key === "position" ) {
12943
-			this._position();
12944
-		}
12945
-
12946
-		if ( key === "resizable" ) {
12947
-
12948
-			// currently resizable, becoming non-resizable
12949
-			isResizable = uiDialog.is( ":data(ui-resizable)" );
12950
-			if ( isResizable && !value ) {
12951
-				uiDialog.resizable( "destroy" );
12952
-			}
12953
-
12954
-			// Currently resizable, changing handles
12955
-			if ( isResizable && typeof value === "string" ) {
12956
-				uiDialog.resizable( "option", "handles", value );
12957
-			}
12958
-
12959
-			// Currently non-resizable, becoming resizable
12960
-			if ( !isResizable && value !== false ) {
12961
-				this._makeResizable();
12962
-			}
12963
-		}
12964
-
12965
-		if ( key === "title" ) {
12966
-			this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) );
12967
-		}
12968
-	},
12969
-
12970
-	_size: function() {
12971
-
12972
-		// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
12973
-		// divs will both have width and height set, so we need to reset them
12974
-		var nonContentHeight, minContentHeight, maxContentHeight,
12975
-			options = this.options;
12976
-
12977
-		// Reset content sizing
12978
-		this.element.show().css( {
12979
-			width: "auto",
12980
-			minHeight: 0,
12981
-			maxHeight: "none",
12982
-			height: 0
12983
-		} );
12984
-
12985
-		if ( options.minWidth > options.width ) {
12986
-			options.width = options.minWidth;
12987
-		}
12988
-
12989
-		// Reset wrapper sizing
12990
-		// determine the height of all the non-content elements
12991
-		nonContentHeight = this.uiDialog.css( {
12992
-			height: "auto",
12993
-			width: options.width
12994
-		} )
12995
-			.outerHeight();
12996
-		minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
12997
-		maxContentHeight = typeof options.maxHeight === "number" ?
12998
-			Math.max( 0, options.maxHeight - nonContentHeight ) :
12999
-			"none";
13000
-
13001
-		if ( options.height === "auto" ) {
13002
-			this.element.css( {
13003
-				minHeight: minContentHeight,
13004
-				maxHeight: maxContentHeight,
13005
-				height: "auto"
13006
-			} );
13007
-		} else {
13008
-			this.element.height( Math.max( 0, options.height - nonContentHeight ) );
13009
-		}
13010
-
13011
-		if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
13012
-			this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
13013
-		}
13014
-	},
13015
-
13016
-	_blockFrames: function() {
13017
-		this.iframeBlocks = this.document.find( "iframe" ).map( function() {
13018
-			var iframe = $( this );
13019
-
13020
-			return $( "<div>" )
13021
-				.css( {
13022
-					position: "absolute",
13023
-					width: iframe.outerWidth(),
13024
-					height: iframe.outerHeight()
13025
-				} )
13026
-				.appendTo( iframe.parent() )
13027
-				.offset( iframe.offset() )[ 0 ];
13028
-		} );
13029
-	},
13030
-
13031
-	_unblockFrames: function() {
13032
-		if ( this.iframeBlocks ) {
13033
-			this.iframeBlocks.remove();
13034
-			delete this.iframeBlocks;
13035
-		}
13036
-	},
13037
-
13038
-	_allowInteraction: function( event ) {
13039
-		if ( $( event.target ).closest( ".ui-dialog" ).length ) {
13040
-			return true;
13041
-		}
13042
-
13043
-		// TODO: Remove hack when datepicker implements
13044
-		// the .ui-front logic (#8989)
13045
-		return !!$( event.target ).closest( ".ui-datepicker" ).length;
13046
-	},
13047
-
13048
-	_createOverlay: function() {
13049
-		if ( !this.options.modal ) {
13050
-			return;
13051
-		}
13052
-
13053
-		var jqMinor = $.fn.jquery.substring( 0, 4 );
13054
-
13055
-		// We use a delay in case the overlay is created from an
13056
-		// event that we're going to be cancelling (#2804)
13057
-		var isOpening = true;
13058
-		this._delay( function() {
13059
-			isOpening = false;
13060
-		} );
13061
-
13062
-		if ( !this.document.data( "ui-dialog-overlays" ) ) {
13063
-
13064
-			// Prevent use of anchors and inputs
13065
-			// This doesn't use `_on()` because it is a shared event handler
13066
-			// across all open modal dialogs.
13067
-			this.document.on( "focusin.ui-dialog", function( event ) {
13068
-				if ( isOpening ) {
13069
-					return;
13070
-				}
13071
-
13072
-				var instance = this._trackingInstances()[ 0 ];
13073
-				if ( !instance._allowInteraction( event ) ) {
13074
-					event.preventDefault();
13075
-					instance._focusTabbable();
13076
-
13077
-					// Support: jQuery >=3.4 <3.6 only
13078
-					// Focus re-triggering in jQuery 3.4/3.5 makes the original element
13079
-					// have its focus event propagated last, breaking the re-targeting.
13080
-					// Trigger focus in a delay in addition if needed to avoid the issue
13081
-					// See https://github.com/jquery/jquery/issues/4382
13082
-					if ( jqMinor === "3.4." || jqMinor === "3.5." ) {
13083
-						instance._delay( instance._restoreTabbableFocus );
13084
-					}
13085
-				}
13086
-			}.bind( this ) );
13087
-		}
13088
-
13089
-		this.overlay = $( "<div>" )
13090
-			.appendTo( this._appendTo() );
13091
-
13092
-		this._addClass( this.overlay, null, "ui-widget-overlay ui-front" );
13093
-		this._on( this.overlay, {
13094
-			mousedown: "_keepFocus"
13095
-		} );
13096
-		this.document.data( "ui-dialog-overlays",
13097
-			( this.document.data( "ui-dialog-overlays" ) || 0 ) + 1 );
13098
-	},
13099
-
13100
-	_destroyOverlay: function() {
13101
-		if ( !this.options.modal ) {
13102
-			return;
13103
-		}
13104
-
13105
-		if ( this.overlay ) {
13106
-			var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
13107
-
13108
-			if ( !overlays ) {
13109
-				this.document.off( "focusin.ui-dialog" );
13110
-				this.document.removeData( "ui-dialog-overlays" );
13111
-			} else {
13112
-				this.document.data( "ui-dialog-overlays", overlays );
13113
-			}
13114
-
13115
-			this.overlay.remove();
13116
-			this.overlay = null;
13117
-		}
13118
-	}
13119
-} );
13120
-
13121
-// DEPRECATED
13122
-// TODO: switch return back to widget declaration at top of file when this is removed
13123
-if ( $.uiBackCompat !== false ) {
13124
-
13125
-	// Backcompat for dialogClass option
13126
-	$.widget( "ui.dialog", $.ui.dialog, {
13127
-		options: {
13128
-			dialogClass: ""
13129
-		},
13130
-		_createWrapper: function() {
13131
-			this._super();
13132
-			this.uiDialog.addClass( this.options.dialogClass );
13133
-		},
13134
-		_setOption: function( key, value ) {
13135
-			if ( key === "dialogClass" ) {
13136
-				this.uiDialog
13137
-					.removeClass( this.options.dialogClass )
13138
-					.addClass( value );
13139
-			}
13140
-			this._superApply( arguments );
13141
-		}
13142
-	} );
13143
-}
13144
-
13145
-var widgetsDialog = $.ui.dialog;
13146
-
13147
-
13148
-/*!
13149
- * jQuery UI Droppable 1.13.2
13150
- * http://jqueryui.com
13151
- *
13152
- * Copyright jQuery Foundation and other contributors
13153
- * Released under the MIT license.
13154
- * http://jquery.org/license
13155
- */
13156
-
13157
-//>>label: Droppable
13158
-//>>group: Interactions
13159
-//>>description: Enables drop targets for draggable elements.
13160
-//>>docs: http://api.jqueryui.com/droppable/
13161
-//>>demos: http://jqueryui.com/droppable/
13162
-
13163
-
13164
-$.widget( "ui.droppable", {
13165
-	version: "1.13.2",
13166
-	widgetEventPrefix: "drop",
13167
-	options: {
13168
-		accept: "*",
13169
-		addClasses: true,
13170
-		greedy: false,
13171
-		scope: "default",
13172
-		tolerance: "intersect",
13173
-
13174
-		// Callbacks
13175
-		activate: null,
13176
-		deactivate: null,
13177
-		drop: null,
13178
-		out: null,
13179
-		over: null
13180
-	},
13181
-	_create: function() {
13182
-
13183
-		var proportions,
13184
-			o = this.options,
13185
-			accept = o.accept;
13186
-
13187
-		this.isover = false;
13188
-		this.isout = true;
13189
-
13190
-		this.accept = typeof accept === "function" ? accept : function( d ) {
13191
-			return d.is( accept );
13192
-		};
13193
-
13194
-		this.proportions = function( /* valueToWrite */ ) {
13195
-			if ( arguments.length ) {
13196
-
13197
-				// Store the droppable's proportions
13198
-				proportions = arguments[ 0 ];
13199
-			} else {
13200
-
13201
-				// Retrieve or derive the droppable's proportions
13202
-				return proportions ?
13203
-					proportions :
13204
-					proportions = {
13205
-						width: this.element[ 0 ].offsetWidth,
13206
-						height: this.element[ 0 ].offsetHeight
13207
-					};
13208
-			}
13209
-		};
13210
-
13211
-		this._addToManager( o.scope );
13212
-
13213
-		if ( o.addClasses ) {
13214
-			this._addClass( "ui-droppable" );
13215
-		}
13216
-
13217
-	},
13218
-
13219
-	_addToManager: function( scope ) {
13220
-
13221
-		// Add the reference and positions to the manager
13222
-		$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];
13223
-		$.ui.ddmanager.droppables[ scope ].push( this );
13224
-	},
13225
-
13226
-	_splice: function( drop ) {
13227
-		var i = 0;
13228
-		for ( ; i < drop.length; i++ ) {
13229
-			if ( drop[ i ] === this ) {
13230
-				drop.splice( i, 1 );
13231
-			}
13232
-		}
13233
-	},
13234
-
13235
-	_destroy: function() {
13236
-		var drop = $.ui.ddmanager.droppables[ this.options.scope ];
13237
-
13238
-		this._splice( drop );
13239
-	},
13240
-
13241
-	_setOption: function( key, value ) {
13242
-
13243
-		if ( key === "accept" ) {
13244
-			this.accept = typeof value === "function" ? value : function( d ) {
13245
-				return d.is( value );
13246
-			};
13247
-		} else if ( key === "scope" ) {
13248
-			var drop = $.ui.ddmanager.droppables[ this.options.scope ];
13249
-
13250
-			this._splice( drop );
13251
-			this._addToManager( value );
13252
-		}
13253
-
13254
-		this._super( key, value );
13255
-	},
13256
-
13257
-	_activate: function( event ) {
13258
-		var draggable = $.ui.ddmanager.current;
13259
-
13260
-		this._addActiveClass();
13261
-		if ( draggable ) {
13262
-			this._trigger( "activate", event, this.ui( draggable ) );
13263
-		}
13264
-	},
13265
-
13266
-	_deactivate: function( event ) {
13267
-		var draggable = $.ui.ddmanager.current;
13268
-
13269
-		this._removeActiveClass();
13270
-		if ( draggable ) {
13271
-			this._trigger( "deactivate", event, this.ui( draggable ) );
13272
-		}
13273
-	},
13274
-
13275
-	_over: function( event ) {
13276
-
13277
-		var draggable = $.ui.ddmanager.current;
13278
-
13279
-		// Bail if draggable and droppable are same element
13280
-		if ( !draggable || ( draggable.currentItem ||
13281
-				draggable.element )[ 0 ] === this.element[ 0 ] ) {
13282
-			return;
13283
-		}
13284
-
13285
-		if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||
13286
-				draggable.element ) ) ) {
13287
-			this._addHoverClass();
13288
-			this._trigger( "over", event, this.ui( draggable ) );
13289
-		}
13290
-
13291
-	},
13292
-
13293
-	_out: function( event ) {
13294
-
13295
-		var draggable = $.ui.ddmanager.current;
13296
-
13297
-		// Bail if draggable and droppable are same element
13298
-		if ( !draggable || ( draggable.currentItem ||
13299
-				draggable.element )[ 0 ] === this.element[ 0 ] ) {
13300
-			return;
13301
-		}
13302
-
13303
-		if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||
13304
-				draggable.element ) ) ) {
13305
-			this._removeHoverClass();
13306
-			this._trigger( "out", event, this.ui( draggable ) );
13307
-		}
13308
-
13309
-	},
13310
-
13311
-	_drop: function( event, custom ) {
13312
-
13313
-		var draggable = custom || $.ui.ddmanager.current,
13314
-			childrenIntersection = false;
13315
-
13316
-		// Bail if draggable and droppable are same element
13317
-		if ( !draggable || ( draggable.currentItem ||
13318
-				draggable.element )[ 0 ] === this.element[ 0 ] ) {
13319
-			return false;
13320
-		}
13321
-
13322
-		this.element
13323
-			.find( ":data(ui-droppable)" )
13324
-			.not( ".ui-draggable-dragging" )
13325
-			.each( function() {
13326
-				var inst = $( this ).droppable( "instance" );
13327
-				if (
13328
-					inst.options.greedy &&
13329
-					!inst.options.disabled &&
13330
-					inst.options.scope === draggable.options.scope &&
13331
-					inst.accept.call(
13332
-						inst.element[ 0 ], ( draggable.currentItem || draggable.element )
13333
-					) &&
13334
-					$.ui.intersect(
13335
-						draggable,
13336
-						$.extend( inst, { offset: inst.element.offset() } ),
13337
-						inst.options.tolerance, event
13338
-					)
13339
-				) {
13340
-					childrenIntersection = true;
13341
-					return false;
13342
-				}
13343
-			} );
13344
-		if ( childrenIntersection ) {
13345
-			return false;
13346
-		}
13347
-
13348
-		if ( this.accept.call( this.element[ 0 ],
13349
-				( draggable.currentItem || draggable.element ) ) ) {
13350
-			this._removeActiveClass();
13351
-			this._removeHoverClass();
13352
-
13353
-			this._trigger( "drop", event, this.ui( draggable ) );
13354
-			return this.element;
13355
-		}
13356
-
13357
-		return false;
13358
-
13359
-	},
13360
-
13361
-	ui: function( c ) {
13362
-		return {
13363
-			draggable: ( c.currentItem || c.element ),
13364
-			helper: c.helper,
13365
-			position: c.position,
13366
-			offset: c.positionAbs
13367
-		};
13368
-	},
13369
-
13370
-	// Extension points just to make backcompat sane and avoid duplicating logic
13371
-	// TODO: Remove in 1.14 along with call to it below
13372
-	_addHoverClass: function() {
13373
-		this._addClass( "ui-droppable-hover" );
13374
-	},
13375
-
13376
-	_removeHoverClass: function() {
13377
-		this._removeClass( "ui-droppable-hover" );
13378
-	},
13379
-
13380
-	_addActiveClass: function() {
13381
-		this._addClass( "ui-droppable-active" );
13382
-	},
13383
-
13384
-	_removeActiveClass: function() {
13385
-		this._removeClass( "ui-droppable-active" );
13386
-	}
13387
-} );
13388
-
13389
-$.ui.intersect = ( function() {
13390
-	function isOverAxis( x, reference, size ) {
13391
-		return ( x >= reference ) && ( x < ( reference + size ) );
13392
-	}
13393
-
13394
-	return function( draggable, droppable, toleranceMode, event ) {
13395
-
13396
-		if ( !droppable.offset ) {
13397
-			return false;
13398
-		}
13399
-
13400
-		var x1 = ( draggable.positionAbs ||
13401
-				draggable.position.absolute ).left + draggable.margins.left,
13402
-			y1 = ( draggable.positionAbs ||
13403
-				draggable.position.absolute ).top + draggable.margins.top,
13404
-			x2 = x1 + draggable.helperProportions.width,
13405
-			y2 = y1 + draggable.helperProportions.height,
13406
-			l = droppable.offset.left,
13407
-			t = droppable.offset.top,
13408
-			r = l + droppable.proportions().width,
13409
-			b = t + droppable.proportions().height;
13410
-
13411
-		switch ( toleranceMode ) {
13412
-		case "fit":
13413
-			return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );
13414
-		case "intersect":
13415
-			return ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half
13416
-				x2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half
13417
-				t < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half
13418
-				y2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half
13419
-		case "pointer":
13420
-			return isOverAxis( event.pageY, t, droppable.proportions().height ) &&
13421
-				isOverAxis( event.pageX, l, droppable.proportions().width );
13422
-		case "touch":
13423
-			return (
13424
-				( y1 >= t && y1 <= b ) || // Top edge touching
13425
-				( y2 >= t && y2 <= b ) || // Bottom edge touching
13426
-				( y1 < t && y2 > b ) // Surrounded vertically
13427
-			) && (
13428
-				( x1 >= l && x1 <= r ) || // Left edge touching
13429
-				( x2 >= l && x2 <= r ) || // Right edge touching
13430
-				( x1 < l && x2 > r ) // Surrounded horizontally
13431
-			);
13432
-		default:
13433
-			return false;
13434
-		}
13435
-	};
13436
-} )();
13437
-
13438
-/*
13439
-	This manager tracks offsets of draggables and droppables
13440
-*/
13441
-$.ui.ddmanager = {
13442
-	current: null,
13443
-	droppables: { "default": [] },
13444
-	prepareOffsets: function( t, event ) {
13445
-
13446
-		var i, j,
13447
-			m = $.ui.ddmanager.droppables[ t.options.scope ] || [],
13448
-			type = event ? event.type : null, // workaround for #2317
13449
-			list = ( t.currentItem || t.element ).find( ":data(ui-droppable)" ).addBack();
13450
-
13451
-		droppablesLoop: for ( i = 0; i < m.length; i++ ) {
13452
-
13453
-			// No disabled and non-accepted
13454
-			if ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ],
13455
-					( t.currentItem || t.element ) ) ) ) {
13456
-				continue;
13457
-			}
13458
-
13459
-			// Filter out elements in the current dragged item
13460
-			for ( j = 0; j < list.length; j++ ) {
13461
-				if ( list[ j ] === m[ i ].element[ 0 ] ) {
13462
-					m[ i ].proportions().height = 0;
13463
-					continue droppablesLoop;
13464
-				}
13465
-			}
13466
-
13467
-			m[ i ].visible = m[ i ].element.css( "display" ) !== "none";
13468
-			if ( !m[ i ].visible ) {
13469
-				continue;
13470
-			}
13471
-
13472
-			// Activate the droppable if used directly from draggables
13473
-			if ( type === "mousedown" ) {
13474
-				m[ i ]._activate.call( m[ i ], event );
13475
-			}
13476
-
13477
-			m[ i ].offset = m[ i ].element.offset();
13478
-			m[ i ].proportions( {
13479
-				width: m[ i ].element[ 0 ].offsetWidth,
13480
-				height: m[ i ].element[ 0 ].offsetHeight
13481
-			} );
13482
-
13483
-		}
13484
-
13485
-	},
13486
-	drop: function( draggable, event ) {
13487
-
13488
-		var dropped = false;
13489
-
13490
-		// Create a copy of the droppables in case the list changes during the drop (#9116)
13491
-		$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {
13492
-
13493
-			if ( !this.options ) {
13494
-				return;
13495
-			}
13496
-			if ( !this.options.disabled && this.visible &&
13497
-					$.ui.intersect( draggable, this, this.options.tolerance, event ) ) {
13498
-				dropped = this._drop.call( this, event ) || dropped;
13499
-			}
13500
-
13501
-			if ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ],
13502
-					( draggable.currentItem || draggable.element ) ) ) {
13503
-				this.isout = true;
13504
-				this.isover = false;
13505
-				this._deactivate.call( this, event );
13506
-			}
13507
-
13508
-		} );
13509
-		return dropped;
13510
-
13511
-	},
13512
-	dragStart: function( draggable, event ) {
13513
-
13514
-		// Listen for scrolling so that if the dragging causes scrolling the position of the
13515
-		// droppables can be recalculated (see #5003)
13516
-		draggable.element.parentsUntil( "body" ).on( "scroll.droppable", function() {
13517
-			if ( !draggable.options.refreshPositions ) {
13518
-				$.ui.ddmanager.prepareOffsets( draggable, event );
13519
-			}
13520
-		} );
13521
-	},
13522
-	drag: function( draggable, event ) {
13523
-
13524
-		// If you have a highly dynamic page, you might try this option. It renders positions
13525
-		// every time you move the mouse.
13526
-		if ( draggable.options.refreshPositions ) {
13527
-			$.ui.ddmanager.prepareOffsets( draggable, event );
13528
-		}
13529
-
13530
-		// Run through all droppables and check their positions based on specific tolerance options
13531
-		$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {
13532
-
13533
-			if ( this.options.disabled || this.greedyChild || !this.visible ) {
13534
-				return;
13535
-			}
13536
-
13537
-			var parentInstance, scope, parent,
13538
-				intersects = $.ui.intersect( draggable, this, this.options.tolerance, event ),
13539
-				c = !intersects && this.isover ?
13540
-					"isout" :
13541
-					( intersects && !this.isover ? "isover" : null );
13542
-			if ( !c ) {
13543
-				return;
13544
-			}
13545
-
13546
-			if ( this.options.greedy ) {
13547
-
13548
-				// find droppable parents with same scope
13549
-				scope = this.options.scope;
13550
-				parent = this.element.parents( ":data(ui-droppable)" ).filter( function() {
13551
-					return $( this ).droppable( "instance" ).options.scope === scope;
13552
-				} );
13553
-
13554
-				if ( parent.length ) {
13555
-					parentInstance = $( parent[ 0 ] ).droppable( "instance" );
13556
-					parentInstance.greedyChild = ( c === "isover" );
13557
-				}
13558
-			}
13559
-
13560
-			// We just moved into a greedy child
13561
-			if ( parentInstance && c === "isover" ) {
13562
-				parentInstance.isover = false;
13563
-				parentInstance.isout = true;
13564
-				parentInstance._out.call( parentInstance, event );
13565
-			}
13566
-
13567
-			this[ c ] = true;
13568
-			this[ c === "isout" ? "isover" : "isout" ] = false;
13569
-			this[ c === "isover" ? "_over" : "_out" ].call( this, event );
13570
-
13571
-			// We just moved out of a greedy child
13572
-			if ( parentInstance && c === "isout" ) {
13573
-				parentInstance.isout = false;
13574
-				parentInstance.isover = true;
13575
-				parentInstance._over.call( parentInstance, event );
13576
-			}
13577
-		} );
13578
-
13579
-	},
13580
-	dragStop: function( draggable, event ) {
13581
-		draggable.element.parentsUntil( "body" ).off( "scroll.droppable" );
13582
-
13583
-		// Call prepareOffsets one final time since IE does not fire return scroll events when
13584
-		// overflow was caused by drag (see #5003)
13585
-		if ( !draggable.options.refreshPositions ) {
13586
-			$.ui.ddmanager.prepareOffsets( draggable, event );
13587
-		}
13588
-	}
13589
-};
13590
-
13591
-// DEPRECATED
13592
-// TODO: switch return back to widget declaration at top of file when this is removed
13593
-if ( $.uiBackCompat !== false ) {
13594
-
13595
-	// Backcompat for activeClass and hoverClass options
13596
-	$.widget( "ui.droppable", $.ui.droppable, {
13597
-		options: {
13598
-			hoverClass: false,
13599
-			activeClass: false
13600
-		},
13601
-		_addActiveClass: function() {
13602
-			this._super();
13603
-			if ( this.options.activeClass ) {
13604
-				this.element.addClass( this.options.activeClass );
13605
-			}
13606
-		},
13607
-		_removeActiveClass: function() {
13608
-			this._super();
13609
-			if ( this.options.activeClass ) {
13610
-				this.element.removeClass( this.options.activeClass );
13611
-			}
13612
-		},
13613
-		_addHoverClass: function() {
13614
-			this._super();
13615
-			if ( this.options.hoverClass ) {
13616
-				this.element.addClass( this.options.hoverClass );
13617
-			}
13618
-		},
13619
-		_removeHoverClass: function() {
13620
-			this._super();
13621
-			if ( this.options.hoverClass ) {
13622
-				this.element.removeClass( this.options.hoverClass );
13623
-			}
13624
-		}
13625
-	} );
13626
-}
13627
-
13628
-var widgetsDroppable = $.ui.droppable;
13629
-
13630
-
13631
-/*!
13632
- * jQuery UI Progressbar 1.13.2
13633
- * http://jqueryui.com
13634
- *
13635
- * Copyright jQuery Foundation and other contributors
13636
- * Released under the MIT license.
13637
- * http://jquery.org/license
13638
- */
13639
-
13640
-//>>label: Progressbar
13641
-//>>group: Widgets
13642
-/* eslint-disable max-len */
13643
-//>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.
13644
-/* eslint-enable max-len */
13645
-//>>docs: http://api.jqueryui.com/progressbar/
13646
-//>>demos: http://jqueryui.com/progressbar/
13647
-//>>css.structure: ../../themes/base/core.css
13648
-//>>css.structure: ../../themes/base/progressbar.css
13649
-//>>css.theme: ../../themes/base/theme.css
13650
-
13651
-
13652
-var widgetsProgressbar = $.widget( "ui.progressbar", {
13653
-	version: "1.13.2",
13654
-	options: {
13655
-		classes: {
13656
-			"ui-progressbar": "ui-corner-all",
13657
-			"ui-progressbar-value": "ui-corner-left",
13658
-			"ui-progressbar-complete": "ui-corner-right"
13659
-		},
13660
-		max: 100,
13661
-		value: 0,
13662
-
13663
-		change: null,
13664
-		complete: null
13665
-	},
13666
-
13667
-	min: 0,
13668
-
13669
-	_create: function() {
13670
-
13671
-		// Constrain initial value
13672
-		this.oldValue = this.options.value = this._constrainedValue();
13673
-
13674
-		this.element.attr( {
13675
-
13676
-			// Only set static values; aria-valuenow and aria-valuemax are
13677
-			// set inside _refreshValue()
13678
-			role: "progressbar",
13679
-			"aria-valuemin": this.min
13680
-		} );
13681
-		this._addClass( "ui-progressbar", "ui-widget ui-widget-content" );
13682
-
13683
-		this.valueDiv = $( "<div>" ).appendTo( this.element );
13684
-		this._addClass( this.valueDiv, "ui-progressbar-value", "ui-widget-header" );
13685
-		this._refreshValue();
13686
-	},
13687
-
13688
-	_destroy: function() {
13689
-		this.element.removeAttr( "role aria-valuemin aria-valuemax aria-valuenow" );
13690
-
13691
-		this.valueDiv.remove();
13692
-	},
13693
-
13694
-	value: function( newValue ) {
13695
-		if ( newValue === undefined ) {
13696
-			return this.options.value;
13697
-		}
13698
-
13699
-		this.options.value = this._constrainedValue( newValue );
13700
-		this._refreshValue();
13701
-	},
13702
-
13703
-	_constrainedValue: function( newValue ) {
13704
-		if ( newValue === undefined ) {
13705
-			newValue = this.options.value;
13706
-		}
13707
-
13708
-		this.indeterminate = newValue === false;
13709
-
13710
-		// Sanitize value
13711
-		if ( typeof newValue !== "number" ) {
13712
-			newValue = 0;
13713
-		}
13714
-
13715
-		return this.indeterminate ? false :
13716
-			Math.min( this.options.max, Math.max( this.min, newValue ) );
13717
-	},
13718
-
13719
-	_setOptions: function( options ) {
13720
-
13721
-		// Ensure "value" option is set after other values (like max)
13722
-		var value = options.value;
13723
-		delete options.value;
13724
-
13725
-		this._super( options );
13726
-
13727
-		this.options.value = this._constrainedValue( value );
13728
-		this._refreshValue();
13729
-	},
13730
-
13731
-	_setOption: function( key, value ) {
13732
-		if ( key === "max" ) {
13733
-
13734
-			// Don't allow a max less than min
13735
-			value = Math.max( this.min, value );
13736
-		}
13737
-		this._super( key, value );
13738
-	},
13739
-
13740
-	_setOptionDisabled: function( value ) {
13741
-		this._super( value );
13742
-
13743
-		this.element.attr( "aria-disabled", value );
13744
-		this._toggleClass( null, "ui-state-disabled", !!value );
13745
-	},
13746
-
13747
-	_percentage: function() {
13748
-		return this.indeterminate ?
13749
-			100 :
13750
-			100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
13751
-	},
13752
-
13753
-	_refreshValue: function() {
13754
-		var value = this.options.value,
13755
-			percentage = this._percentage();
13756
-
13757
-		this.valueDiv
13758
-			.toggle( this.indeterminate || value > this.min )
13759
-			.width( percentage.toFixed( 0 ) + "%" );
13760
-
13761
-		this
13762
-			._toggleClass( this.valueDiv, "ui-progressbar-complete", null,
13763
-				value === this.options.max )
13764
-			._toggleClass( "ui-progressbar-indeterminate", null, this.indeterminate );
13765
-
13766
-		if ( this.indeterminate ) {
13767
-			this.element.removeAttr( "aria-valuenow" );
13768
-			if ( !this.overlayDiv ) {
13769
-				this.overlayDiv = $( "<div>" ).appendTo( this.valueDiv );
13770
-				this._addClass( this.overlayDiv, "ui-progressbar-overlay" );
13771
-			}
13772
-		} else {
13773
-			this.element.attr( {
13774
-				"aria-valuemax": this.options.max,
13775
-				"aria-valuenow": value
13776
-			} );
13777
-			if ( this.overlayDiv ) {
13778
-				this.overlayDiv.remove();
13779
-				this.overlayDiv = null;
13780
-			}
13781
-		}
13782
-
13783
-		if ( this.oldValue !== value ) {
13784
-			this.oldValue = value;
13785
-			this._trigger( "change" );
13786
-		}
13787
-		if ( value === this.options.max ) {
13788
-			this._trigger( "complete" );
13789
-		}
13790
-	}
13791
-} );
13792
-
13793
-
13794
-/*!
13795
- * jQuery UI Selectable 1.13.2
13796
- * http://jqueryui.com
13797
- *
13798
- * Copyright jQuery Foundation and other contributors
13799
- * Released under the MIT license.
13800
- * http://jquery.org/license
13801
- */
13802
-
13803
-//>>label: Selectable
13804
-//>>group: Interactions
13805
-//>>description: Allows groups of elements to be selected with the mouse.
13806
-//>>docs: http://api.jqueryui.com/selectable/
13807
-//>>demos: http://jqueryui.com/selectable/
13808
-//>>css.structure: ../../themes/base/selectable.css
13809
-
13810
-
13811
-var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
13812
-	version: "1.13.2",
13813
-	options: {
13814
-		appendTo: "body",
13815
-		autoRefresh: true,
13816
-		distance: 0,
13817
-		filter: "*",
13818
-		tolerance: "touch",
13819
-
13820
-		// Callbacks
13821
-		selected: null,
13822
-		selecting: null,
13823
-		start: null,
13824
-		stop: null,
13825
-		unselected: null,
13826
-		unselecting: null
13827
-	},
13828
-	_create: function() {
13829
-		var that = this;
13830
-
13831
-		this._addClass( "ui-selectable" );
13832
-
13833
-		this.dragged = false;
13834
-
13835
-		// Cache selectee children based on filter
13836
-		this.refresh = function() {
13837
-			that.elementPos = $( that.element[ 0 ] ).offset();
13838
-			that.selectees = $( that.options.filter, that.element[ 0 ] );
13839
-			that._addClass( that.selectees, "ui-selectee" );
13840
-			that.selectees.each( function() {
13841
-				var $this = $( this ),
13842
-					selecteeOffset = $this.offset(),
13843
-					pos = {
13844
-						left: selecteeOffset.left - that.elementPos.left,
13845
-						top: selecteeOffset.top - that.elementPos.top
13846
-					};
13847
-				$.data( this, "selectable-item", {
13848
-					element: this,
13849
-					$element: $this,
13850
-					left: pos.left,
13851
-					top: pos.top,
13852
-					right: pos.left + $this.outerWidth(),
13853
-					bottom: pos.top + $this.outerHeight(),
13854
-					startselected: false,
13855
-					selected: $this.hasClass( "ui-selected" ),
13856
-					selecting: $this.hasClass( "ui-selecting" ),
13857
-					unselecting: $this.hasClass( "ui-unselecting" )
13858
-				} );
13859
-			} );
13860
-		};
13861
-		this.refresh();
13862
-
13863
-		this._mouseInit();
13864
-
13865
-		this.helper = $( "<div>" );
13866
-		this._addClass( this.helper, "ui-selectable-helper" );
13867
-	},
13868
-
13869
-	_destroy: function() {
13870
-		this.selectees.removeData( "selectable-item" );
13871
-		this._mouseDestroy();
13872
-	},
13873
-
13874
-	_mouseStart: function( event ) {
13875
-		var that = this,
13876
-			options = this.options;
13877
-
13878
-		this.opos = [ event.pageX, event.pageY ];
13879
-		this.elementPos = $( this.element[ 0 ] ).offset();
13880
-
13881
-		if ( this.options.disabled ) {
13882
-			return;
13883
-		}
13884
-
13885
-		this.selectees = $( options.filter, this.element[ 0 ] );
13886
-
13887
-		this._trigger( "start", event );
13888
-
13889
-		$( options.appendTo ).append( this.helper );
13890
-
13891
-		// position helper (lasso)
13892
-		this.helper.css( {
13893
-			"left": event.pageX,
13894
-			"top": event.pageY,
13895
-			"width": 0,
13896
-			"height": 0
13897
-		} );
13898
-
13899
-		if ( options.autoRefresh ) {
13900
-			this.refresh();
13901
-		}
13902
-
13903
-		this.selectees.filter( ".ui-selected" ).each( function() {
13904
-			var selectee = $.data( this, "selectable-item" );
13905
-			selectee.startselected = true;
13906
-			if ( !event.metaKey && !event.ctrlKey ) {
13907
-				that._removeClass( selectee.$element, "ui-selected" );
13908
-				selectee.selected = false;
13909
-				that._addClass( selectee.$element, "ui-unselecting" );
13910
-				selectee.unselecting = true;
13911
-
13912
-				// selectable UNSELECTING callback
13913
-				that._trigger( "unselecting", event, {
13914
-					unselecting: selectee.element
13915
-				} );
13916
-			}
13917
-		} );
13918
-
13919
-		$( event.target ).parents().addBack().each( function() {
13920
-			var doSelect,
13921
-				selectee = $.data( this, "selectable-item" );
13922
-			if ( selectee ) {
13923
-				doSelect = ( !event.metaKey && !event.ctrlKey ) ||
13924
-					!selectee.$element.hasClass( "ui-selected" );
13925
-				that._removeClass( selectee.$element, doSelect ? "ui-unselecting" : "ui-selected" )
13926
-					._addClass( selectee.$element, doSelect ? "ui-selecting" : "ui-unselecting" );
13927
-				selectee.unselecting = !doSelect;
13928
-				selectee.selecting = doSelect;
13929
-				selectee.selected = doSelect;
13930
-
13931
-				// selectable (UN)SELECTING callback
13932
-				if ( doSelect ) {
13933
-					that._trigger( "selecting", event, {
13934
-						selecting: selectee.element
13935
-					} );
13936
-				} else {
13937
-					that._trigger( "unselecting", event, {
13938
-						unselecting: selectee.element
13939
-					} );
13940
-				}
13941
-				return false;
13942
-			}
13943
-		} );
13944
-
13945
-	},
13946
-
13947
-	_mouseDrag: function( event ) {
13948
-
13949
-		this.dragged = true;
13950
-
13951
-		if ( this.options.disabled ) {
13952
-			return;
13953
-		}
13954
-
13955
-		var tmp,
13956
-			that = this,
13957
-			options = this.options,
13958
-			x1 = this.opos[ 0 ],
13959
-			y1 = this.opos[ 1 ],
13960
-			x2 = event.pageX,
13961
-			y2 = event.pageY;
13962
-
13963
-		if ( x1 > x2 ) {
13964
-			tmp = x2; x2 = x1; x1 = tmp;
13965
-		}
13966
-		if ( y1 > y2 ) {
13967
-			tmp = y2; y2 = y1; y1 = tmp;
13968
-		}
13969
-		this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );
13970
-
13971
-		this.selectees.each( function() {
13972
-			var selectee = $.data( this, "selectable-item" ),
13973
-				hit = false,
13974
-				offset = {};
13975
-
13976
-			//prevent helper from being selected if appendTo: selectable
13977
-			if ( !selectee || selectee.element === that.element[ 0 ] ) {
13978
-				return;
13979
-			}
13980
-
13981
-			offset.left   = selectee.left   + that.elementPos.left;
13982
-			offset.right  = selectee.right  + that.elementPos.left;
13983
-			offset.top    = selectee.top    + that.elementPos.top;
13984
-			offset.bottom = selectee.bottom + that.elementPos.top;
13985
-
13986
-			if ( options.tolerance === "touch" ) {
13987
-				hit = ( !( offset.left > x2 || offset.right < x1 || offset.top > y2 ||
13988
-                    offset.bottom < y1 ) );
13989
-			} else if ( options.tolerance === "fit" ) {
13990
-				hit = ( offset.left > x1 && offset.right < x2 && offset.top > y1 &&
13991
-                    offset.bottom < y2 );
13992
-			}
13993
-
13994
-			if ( hit ) {
13995
-
13996
-				// SELECT
13997
-				if ( selectee.selected ) {
13998
-					that._removeClass( selectee.$element, "ui-selected" );
13999
-					selectee.selected = false;
14000
-				}
14001
-				if ( selectee.unselecting ) {
14002
-					that._removeClass( selectee.$element, "ui-unselecting" );
14003
-					selectee.unselecting = false;
14004
-				}
14005
-				if ( !selectee.selecting ) {
14006
-					that._addClass( selectee.$element, "ui-selecting" );
14007
-					selectee.selecting = true;
14008
-
14009
-					// selectable SELECTING callback
14010
-					that._trigger( "selecting", event, {
14011
-						selecting: selectee.element
14012
-					} );
14013
-				}
14014
-			} else {
14015
-
14016
-				// UNSELECT
14017
-				if ( selectee.selecting ) {
14018
-					if ( ( event.metaKey || event.ctrlKey ) && selectee.startselected ) {
14019
-						that._removeClass( selectee.$element, "ui-selecting" );
14020
-						selectee.selecting = false;
14021
-						that._addClass( selectee.$element, "ui-selected" );
14022
-						selectee.selected = true;
14023
-					} else {
14024
-						that._removeClass( selectee.$element, "ui-selecting" );
14025
-						selectee.selecting = false;
14026
-						if ( selectee.startselected ) {
14027
-							that._addClass( selectee.$element, "ui-unselecting" );
14028
-							selectee.unselecting = true;
14029
-						}
14030
-
14031
-						// selectable UNSELECTING callback
14032
-						that._trigger( "unselecting", event, {
14033
-							unselecting: selectee.element
14034
-						} );
14035
-					}
14036
-				}
14037
-				if ( selectee.selected ) {
14038
-					if ( !event.metaKey && !event.ctrlKey && !selectee.startselected ) {
14039
-						that._removeClass( selectee.$element, "ui-selected" );
14040
-						selectee.selected = false;
14041
-
14042
-						that._addClass( selectee.$element, "ui-unselecting" );
14043
-						selectee.unselecting = true;
14044
-
14045
-						// selectable UNSELECTING callback
14046
-						that._trigger( "unselecting", event, {
14047
-							unselecting: selectee.element
14048
-						} );
14049
-					}
14050
-				}
14051
-			}
14052
-		} );
14053
-
14054
-		return false;
14055
-	},
14056
-
14057
-	_mouseStop: function( event ) {
14058
-		var that = this;
14059
-
14060
-		this.dragged = false;
14061
-
14062
-		$( ".ui-unselecting", this.element[ 0 ] ).each( function() {
14063
-			var selectee = $.data( this, "selectable-item" );
14064
-			that._removeClass( selectee.$element, "ui-unselecting" );
14065
-			selectee.unselecting = false;
14066
-			selectee.startselected = false;
14067
-			that._trigger( "unselected", event, {
14068
-				unselected: selectee.element
14069
-			} );
14070
-		} );
14071
-		$( ".ui-selecting", this.element[ 0 ] ).each( function() {
14072
-			var selectee = $.data( this, "selectable-item" );
14073
-			that._removeClass( selectee.$element, "ui-selecting" )
14074
-				._addClass( selectee.$element, "ui-selected" );
14075
-			selectee.selecting = false;
14076
-			selectee.selected = true;
14077
-			selectee.startselected = true;
14078
-			that._trigger( "selected", event, {
14079
-				selected: selectee.element
14080
-			} );
14081
-		} );
14082
-		this._trigger( "stop", event );
14083
-
14084
-		this.helper.remove();
14085
-
14086
-		return false;
14087
-	}
14088
-
14089
-} );
14090
-
14091
-
14092
-/*!
14093
- * jQuery UI Selectmenu 1.13.2
14094
- * http://jqueryui.com
14095
- *
14096
- * Copyright jQuery Foundation and other contributors
14097
- * Released under the MIT license.
14098
- * http://jquery.org/license
14099
- */
14100
-
14101
-//>>label: Selectmenu
14102
-//>>group: Widgets
14103
-/* eslint-disable max-len */
14104
-//>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
14105
-/* eslint-enable max-len */
14106
-//>>docs: http://api.jqueryui.com/selectmenu/
14107
-//>>demos: http://jqueryui.com/selectmenu/
14108
-//>>css.structure: ../../themes/base/core.css
14109
-//>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css
14110
-//>>css.theme: ../../themes/base/theme.css
14111
-
14112
-
14113
-var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
14114
-	version: "1.13.2",
14115
-	defaultElement: "<select>",
14116
-	options: {
14117
-		appendTo: null,
14118
-		classes: {
14119
-			"ui-selectmenu-button-open": "ui-corner-top",
14120
-			"ui-selectmenu-button-closed": "ui-corner-all"
14121
-		},
14122
-		disabled: null,
14123
-		icons: {
14124
-			button: "ui-icon-triangle-1-s"
14125
-		},
14126
-		position: {
14127
-			my: "left top",
14128
-			at: "left bottom",
14129
-			collision: "none"
14130
-		},
14131
-		width: false,
14132
-
14133
-		// Callbacks
14134
-		change: null,
14135
-		close: null,
14136
-		focus: null,
14137
-		open: null,
14138
-		select: null
14139
-	},
14140
-
14141
-	_create: function() {
14142
-		var selectmenuId = this.element.uniqueId().attr( "id" );
14143
-		this.ids = {
14144
-			element: selectmenuId,
14145
-			button: selectmenuId + "-button",
14146
-			menu: selectmenuId + "-menu"
14147
-		};
14148
-
14149
-		this._drawButton();
14150
-		this._drawMenu();
14151
-		this._bindFormResetHandler();
14152
-
14153
-		this._rendered = false;
14154
-		this.menuItems = $();
14155
-	},
14156
-
14157
-	_drawButton: function() {
14158
-		var icon,
14159
-			that = this,
14160
-			item = this._parseOption(
14161
-				this.element.find( "option:selected" ),
14162
-				this.element[ 0 ].selectedIndex
14163
-			);
14164
-
14165
-		// Associate existing label with the new button
14166
-		this.labels = this.element.labels().attr( "for", this.ids.button );
14167
-		this._on( this.labels, {
14168
-			click: function( event ) {
14169
-				this.button.trigger( "focus" );
14170
-				event.preventDefault();
14171
-			}
14172
-		} );
14173
-
14174
-		// Hide original select element
14175
-		this.element.hide();
14176
-
14177
-		// Create button
14178
-		this.button = $( "<span>", {
14179
-			tabindex: this.options.disabled ? -1 : 0,
14180
-			id: this.ids.button,
14181
-			role: "combobox",
14182
-			"aria-expanded": "false",
14183
-			"aria-autocomplete": "list",
14184
-			"aria-owns": this.ids.menu,
14185
-			"aria-haspopup": "true",
14186
-			title: this.element.attr( "title" )
14187
-		} )
14188
-			.insertAfter( this.element );
14189
-
14190
-		this._addClass( this.button, "ui-selectmenu-button ui-selectmenu-button-closed",
14191
-			"ui-button ui-widget" );
14192
-
14193
-		icon = $( "<span>" ).appendTo( this.button );
14194
-		this._addClass( icon, "ui-selectmenu-icon", "ui-icon " + this.options.icons.button );
14195
-		this.buttonItem = this._renderButtonItem( item )
14196
-			.appendTo( this.button );
14197
-
14198
-		if ( this.options.width !== false ) {
14199
-			this._resizeButton();
14200
-		}
14201
-
14202
-		this._on( this.button, this._buttonEvents );
14203
-		this.button.one( "focusin", function() {
14204
-
14205
-			// Delay rendering the menu items until the button receives focus.
14206
-			// The menu may have already been rendered via a programmatic open.
14207
-			if ( !that._rendered ) {
14208
-				that._refreshMenu();
14209
-			}
14210
-		} );
14211
-	},
14212
-
14213
-	_drawMenu: function() {
14214
-		var that = this;
14215
-
14216
-		// Create menu
14217
-		this.menu = $( "<ul>", {
14218
-			"aria-hidden": "true",
14219
-			"aria-labelledby": this.ids.button,
14220
-			id: this.ids.menu
14221
-		} );
14222
-
14223
-		// Wrap menu
14224
-		this.menuWrap = $( "<div>" ).append( this.menu );
14225
-		this._addClass( this.menuWrap, "ui-selectmenu-menu", "ui-front" );
14226
-		this.menuWrap.appendTo( this._appendTo() );
14227
-
14228
-		// Initialize menu widget
14229
-		this.menuInstance = this.menu
14230
-			.menu( {
14231
-				classes: {
14232
-					"ui-menu": "ui-corner-bottom"
14233
-				},
14234
-				role: "listbox",
14235
-				select: function( event, ui ) {
14236
-					event.preventDefault();
14237
-
14238
-					// Support: IE8
14239
-					// If the item was selected via a click, the text selection
14240
-					// will be destroyed in IE
14241
-					that._setSelection();
14242
-
14243
-					that._select( ui.item.data( "ui-selectmenu-item" ), event );
14244
-				},
14245
-				focus: function( event, ui ) {
14246
-					var item = ui.item.data( "ui-selectmenu-item" );
14247
-
14248
-					// Prevent inital focus from firing and check if its a newly focused item
14249
-					if ( that.focusIndex != null && item.index !== that.focusIndex ) {
14250
-						that._trigger( "focus", event, { item: item } );
14251
-						if ( !that.isOpen ) {
14252
-							that._select( item, event );
14253
-						}
14254
-					}
14255
-					that.focusIndex = item.index;
14256
-
14257
-					that.button.attr( "aria-activedescendant",
14258
-						that.menuItems.eq( item.index ).attr( "id" ) );
14259
-				}
14260
-			} )
14261
-			.menu( "instance" );
14262
-
14263
-		// Don't close the menu on mouseleave
14264
-		this.menuInstance._off( this.menu, "mouseleave" );
14265
-
14266
-		// Cancel the menu's collapseAll on document click
14267
-		this.menuInstance._closeOnDocumentClick = function() {
14268
-			return false;
14269
-		};
14270
-
14271
-		// Selects often contain empty items, but never contain dividers
14272
-		this.menuInstance._isDivider = function() {
14273
-			return false;
14274
-		};
14275
-	},
14276
-
14277
-	refresh: function() {
14278
-		this._refreshMenu();
14279
-		this.buttonItem.replaceWith(
14280
-			this.buttonItem = this._renderButtonItem(
14281
-
14282
-				// Fall back to an empty object in case there are no options
14283
-				this._getSelectedItem().data( "ui-selectmenu-item" ) || {}
14284
-			)
14285
-		);
14286
-		if ( this.options.width === null ) {
14287
-			this._resizeButton();
14288
-		}
14289
-	},
14290
-
14291
-	_refreshMenu: function() {
14292
-		var item,
14293
-			options = this.element.find( "option" );
14294
-
14295
-		this.menu.empty();
14296
-
14297
-		this._parseOptions( options );
14298
-		this._renderMenu( this.menu, this.items );
14299
-
14300
-		this.menuInstance.refresh();
14301
-		this.menuItems = this.menu.find( "li" )
14302
-			.not( ".ui-selectmenu-optgroup" )
14303
-				.find( ".ui-menu-item-wrapper" );
14304
-
14305
-		this._rendered = true;
14306
-
14307
-		if ( !options.length ) {
14308
-			return;
14309
-		}
14310
-
14311
-		item = this._getSelectedItem();
14312
-
14313
-		// Update the menu to have the correct item focused
14314
-		this.menuInstance.focus( null, item );
14315
-		this._setAria( item.data( "ui-selectmenu-item" ) );
14316
-
14317
-		// Set disabled state
14318
-		this._setOption( "disabled", this.element.prop( "disabled" ) );
14319
-	},
14320
-
14321
-	open: function( event ) {
14322
-		if ( this.options.disabled ) {
14323
-			return;
14324
-		}
14325
-
14326
-		// If this is the first time the menu is being opened, render the items
14327
-		if ( !this._rendered ) {
14328
-			this._refreshMenu();
14329
-		} else {
14330
-
14331
-			// Menu clears focus on close, reset focus to selected item
14332
-			this._removeClass( this.menu.find( ".ui-state-active" ), null, "ui-state-active" );
14333
-			this.menuInstance.focus( null, this._getSelectedItem() );
14334
-		}
14335
-
14336
-		// If there are no options, don't open the menu
14337
-		if ( !this.menuItems.length ) {
14338
-			return;
14339
-		}
14340
-
14341
-		this.isOpen = true;
14342
-		this._toggleAttr();
14343
-		this._resizeMenu();
14344
-		this._position();
14345
-
14346
-		this._on( this.document, this._documentClick );
14347
-
14348
-		this._trigger( "open", event );
14349
-	},
14350
-
14351
-	_position: function() {
14352
-		this.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );
14353
-	},
14354
-
14355
-	close: function( event ) {
14356
-		if ( !this.isOpen ) {
14357
-			return;
14358
-		}
14359
-
14360
-		this.isOpen = false;
14361
-		this._toggleAttr();
14362
-
14363
-		this.range = null;
14364
-		this._off( this.document );
14365
-
14366
-		this._trigger( "close", event );
14367
-	},
14368
-
14369
-	widget: function() {
14370
-		return this.button;
14371
-	},
14372
-
14373
-	menuWidget: function() {
14374
-		return this.menu;
14375
-	},
14376
-
14377
-	_renderButtonItem: function( item ) {
14378
-		var buttonItem = $( "<span>" );
14379
-
14380
-		this._setText( buttonItem, item.label );
14381
-		this._addClass( buttonItem, "ui-selectmenu-text" );
14382
-
14383
-		return buttonItem;
14384
-	},
14385
-
14386
-	_renderMenu: function( ul, items ) {
14387
-		var that = this,
14388
-			currentOptgroup = "";
14389
-
14390
-		$.each( items, function( index, item ) {
14391
-			var li;
14392
-
14393
-			if ( item.optgroup !== currentOptgroup ) {
14394
-				li = $( "<li>", {
14395
-					text: item.optgroup
14396
-				} );
14397
-				that._addClass( li, "ui-selectmenu-optgroup", "ui-menu-divider" +
14398
-					( item.element.parent( "optgroup" ).prop( "disabled" ) ?
14399
-						" ui-state-disabled" :
14400
-						"" ) );
14401
-
14402
-				li.appendTo( ul );
14403
-
14404
-				currentOptgroup = item.optgroup;
14405
-			}
14406
-
14407
-			that._renderItemData( ul, item );
14408
-		} );
14409
-	},
14410
-
14411
-	_renderItemData: function( ul, item ) {
14412
-		return this._renderItem( ul, item ).data( "ui-selectmenu-item", item );
14413
-	},
14414
-
14415
-	_renderItem: function( ul, item ) {
14416
-		var li = $( "<li>" ),
14417
-			wrapper = $( "<div>", {
14418
-				title: item.element.attr( "title" )
14419
-			} );
14420
-
14421
-		if ( item.disabled ) {
14422
-			this._addClass( li, null, "ui-state-disabled" );
14423
-		}
14424
-		this._setText( wrapper, item.label );
14425
-
14426
-		return li.append( wrapper ).appendTo( ul );
14427
-	},
14428
-
14429
-	_setText: function( element, value ) {
14430
-		if ( value ) {
14431
-			element.text( value );
14432
-		} else {
14433
-			element.html( "&#160;" );
14434
-		}
14435
-	},
14436
-
14437
-	_move: function( direction, event ) {
14438
-		var item, next,
14439
-			filter = ".ui-menu-item";
14440
-
14441
-		if ( this.isOpen ) {
14442
-			item = this.menuItems.eq( this.focusIndex ).parent( "li" );
14443
-		} else {
14444
-			item = this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" );
14445
-			filter += ":not(.ui-state-disabled)";
14446
-		}
14447
-
14448
-		if ( direction === "first" || direction === "last" ) {
14449
-			next = item[ direction === "first" ? "prevAll" : "nextAll" ]( filter ).eq( -1 );
14450
-		} else {
14451
-			next = item[ direction + "All" ]( filter ).eq( 0 );
14452
-		}
14453
-
14454
-		if ( next.length ) {
14455
-			this.menuInstance.focus( event, next );
14456
-		}
14457
-	},
14458
-
14459
-	_getSelectedItem: function() {
14460
-		return this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" );
14461
-	},
14462
-
14463
-	_toggle: function( event ) {
14464
-		this[ this.isOpen ? "close" : "open" ]( event );
14465
-	},
14466
-
14467
-	_setSelection: function() {
14468
-		var selection;
14469
-
14470
-		if ( !this.range ) {
14471
-			return;
14472
-		}
14473
-
14474
-		if ( window.getSelection ) {
14475
-			selection = window.getSelection();
14476
-			selection.removeAllRanges();
14477
-			selection.addRange( this.range );
14478
-
14479
-		// Support: IE8
14480
-		} else {
14481
-			this.range.select();
14482
-		}
14483
-
14484
-		// Support: IE
14485
-		// Setting the text selection kills the button focus in IE, but
14486
-		// restoring the focus doesn't kill the selection.
14487
-		this.button.trigger( "focus" );
14488
-	},
14489
-
14490
-	_documentClick: {
14491
-		mousedown: function( event ) {
14492
-			if ( !this.isOpen ) {
14493
-				return;
14494
-			}
14495
-
14496
-			if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
14497
-				$.escapeSelector( this.ids.button ) ).length ) {
14498
-				this.close( event );
14499
-			}
14500
-		}
14501
-	},
14502
-
14503
-	_buttonEvents: {
14504
-
14505
-		// Prevent text selection from being reset when interacting with the selectmenu (#10144)
14506
-		mousedown: function() {
14507
-			var selection;
14508
-
14509
-			if ( window.getSelection ) {
14510
-				selection = window.getSelection();
14511
-				if ( selection.rangeCount ) {
14512
-					this.range = selection.getRangeAt( 0 );
14513
-				}
14514
-
14515
-			// Support: IE8
14516
-			} else {
14517
-				this.range = document.selection.createRange();
14518
-			}
14519
-		},
14520
-
14521
-		click: function( event ) {
14522
-			this._setSelection();
14523
-			this._toggle( event );
14524
-		},
14525
-
14526
-		keydown: function( event ) {
14527
-			var preventDefault = true;
14528
-			switch ( event.keyCode ) {
14529
-			case $.ui.keyCode.TAB:
14530
-			case $.ui.keyCode.ESCAPE:
14531
-				this.close( event );
14532
-				preventDefault = false;
14533
-				break;
14534
-			case $.ui.keyCode.ENTER:
14535
-				if ( this.isOpen ) {
14536
-					this._selectFocusedItem( event );
14537
-				}
14538
-				break;
14539
-			case $.ui.keyCode.UP:
14540
-				if ( event.altKey ) {
14541
-					this._toggle( event );
14542
-				} else {
14543
-					this._move( "prev", event );
14544
-				}
14545
-				break;
14546
-			case $.ui.keyCode.DOWN:
14547
-				if ( event.altKey ) {
14548
-					this._toggle( event );
14549
-				} else {
14550
-					this._move( "next", event );
14551
-				}
14552
-				break;
14553
-			case $.ui.keyCode.SPACE:
14554
-				if ( this.isOpen ) {
14555
-					this._selectFocusedItem( event );
14556
-				} else {
14557
-					this._toggle( event );
14558
-				}
14559
-				break;
14560
-			case $.ui.keyCode.LEFT:
14561
-				this._move( "prev", event );
14562
-				break;
14563
-			case $.ui.keyCode.RIGHT:
14564
-				this._move( "next", event );
14565
-				break;
14566
-			case $.ui.keyCode.HOME:
14567
-			case $.ui.keyCode.PAGE_UP:
14568
-				this._move( "first", event );
14569
-				break;
14570
-			case $.ui.keyCode.END:
14571
-			case $.ui.keyCode.PAGE_DOWN:
14572
-				this._move( "last", event );
14573
-				break;
14574
-			default:
14575
-				this.menu.trigger( event );
14576
-				preventDefault = false;
14577
-			}
14578
-
14579
-			if ( preventDefault ) {
14580
-				event.preventDefault();
14581
-			}
14582
-		}
14583
-	},
14584
-
14585
-	_selectFocusedItem: function( event ) {
14586
-		var item = this.menuItems.eq( this.focusIndex ).parent( "li" );
14587
-		if ( !item.hasClass( "ui-state-disabled" ) ) {
14588
-			this._select( item.data( "ui-selectmenu-item" ), event );
14589
-		}
14590
-	},
14591
-
14592
-	_select: function( item, event ) {
14593
-		var oldIndex = this.element[ 0 ].selectedIndex;
14594
-
14595
-		// Change native select element
14596
-		this.element[ 0 ].selectedIndex = item.index;
14597
-		this.buttonItem.replaceWith( this.buttonItem = this._renderButtonItem( item ) );
14598
-		this._setAria( item );
14599
-		this._trigger( "select", event, { item: item } );
14600
-
14601
-		if ( item.index !== oldIndex ) {
14602
-			this._trigger( "change", event, { item: item } );
14603
-		}
14604
-
14605
-		this.close( event );
14606
-	},
14607
-
14608
-	_setAria: function( item ) {
14609
-		var id = this.menuItems.eq( item.index ).attr( "id" );
14610
-
14611
-		this.button.attr( {
14612
-			"aria-labelledby": id,
14613
-			"aria-activedescendant": id
14614
-		} );
14615
-		this.menu.attr( "aria-activedescendant", id );
14616
-	},
14617
-
14618
-	_setOption: function( key, value ) {
14619
-		if ( key === "icons" ) {
14620
-			var icon = this.button.find( "span.ui-icon" );
14621
-			this._removeClass( icon, null, this.options.icons.button )
14622
-				._addClass( icon, null, value.button );
14623
-		}
14624
-
14625
-		this._super( key, value );
14626
-
14627
-		if ( key === "appendTo" ) {
14628
-			this.menuWrap.appendTo( this._appendTo() );
14629
-		}
14630
-
14631
-		if ( key === "width" ) {
14632
-			this._resizeButton();
14633
-		}
14634
-	},
14635
-
14636
-	_setOptionDisabled: function( value ) {
14637
-		this._super( value );
14638
-
14639
-		this.menuInstance.option( "disabled", value );
14640
-		this.button.attr( "aria-disabled", value );
14641
-		this._toggleClass( this.button, null, "ui-state-disabled", value );
14642
-
14643
-		this.element.prop( "disabled", value );
14644
-		if ( value ) {
14645
-			this.button.attr( "tabindex", -1 );
14646
-			this.close();
14647
-		} else {
14648
-			this.button.attr( "tabindex", 0 );
14649
-		}
14650
-	},
14651
-
14652
-	_appendTo: function() {
14653
-		var element = this.options.appendTo;
14654
-
14655
-		if ( element ) {
14656
-			element = element.jquery || element.nodeType ?
14657
-				$( element ) :
14658
-				this.document.find( element ).eq( 0 );
14659
-		}
14660
-
14661
-		if ( !element || !element[ 0 ] ) {
14662
-			element = this.element.closest( ".ui-front, dialog" );
14663
-		}
14664
-
14665
-		if ( !element.length ) {
14666
-			element = this.document[ 0 ].body;
14667
-		}
14668
-
14669
-		return element;
14670
-	},
14671
-
14672
-	_toggleAttr: function() {
14673
-		this.button.attr( "aria-expanded", this.isOpen );
14674
-
14675
-		// We can't use two _toggleClass() calls here, because we need to make sure
14676
-		// we always remove classes first and add them second, otherwise if both classes have the
14677
-		// same theme class, it will be removed after we add it.
14678
-		this._removeClass( this.button, "ui-selectmenu-button-" +
14679
-			( this.isOpen ? "closed" : "open" ) )
14680
-			._addClass( this.button, "ui-selectmenu-button-" +
14681
-				( this.isOpen ? "open" : "closed" ) )
14682
-			._toggleClass( this.menuWrap, "ui-selectmenu-open", null, this.isOpen );
14683
-
14684
-		this.menu.attr( "aria-hidden", !this.isOpen );
14685
-	},
14686
-
14687
-	_resizeButton: function() {
14688
-		var width = this.options.width;
14689
-
14690
-		// For `width: false`, just remove inline style and stop
14691
-		if ( width === false ) {
14692
-			this.button.css( "width", "" );
14693
-			return;
14694
-		}
14695
-
14696
-		// For `width: null`, match the width of the original element
14697
-		if ( width === null ) {
14698
-			width = this.element.show().outerWidth();
14699
-			this.element.hide();
14700
-		}
14701
-
14702
-		this.button.outerWidth( width );
14703
-	},
14704
-
14705
-	_resizeMenu: function() {
14706
-		this.menu.outerWidth( Math.max(
14707
-			this.button.outerWidth(),
14708
-
14709
-			// Support: IE10
14710
-			// IE10 wraps long text (possibly a rounding bug)
14711
-			// so we add 1px to avoid the wrapping
14712
-			this.menu.width( "" ).outerWidth() + 1
14713
-		) );
14714
-	},
14715
-
14716
-	_getCreateOptions: function() {
14717
-		var options = this._super();
14718
-
14719
-		options.disabled = this.element.prop( "disabled" );
14720
-
14721
-		return options;
14722
-	},
14723
-
14724
-	_parseOptions: function( options ) {
14725
-		var that = this,
14726
-			data = [];
14727
-		options.each( function( index, item ) {
14728
-			if ( item.hidden ) {
14729
-				return;
14730
-			}
14731
-
14732
-			data.push( that._parseOption( $( item ), index ) );
14733
-		} );
14734
-		this.items = data;
14735
-	},
14736
-
14737
-	_parseOption: function( option, index ) {
14738
-		var optgroup = option.parent( "optgroup" );
14739
-
14740
-		return {
14741
-			element: option,
14742
-			index: index,
14743
-			value: option.val(),
14744
-			label: option.text(),
14745
-			optgroup: optgroup.attr( "label" ) || "",
14746
-			disabled: optgroup.prop( "disabled" ) || option.prop( "disabled" )
14747
-		};
14748
-	},
14749
-
14750
-	_destroy: function() {
14751
-		this._unbindFormResetHandler();
14752
-		this.menuWrap.remove();
14753
-		this.button.remove();
14754
-		this.element.show();
14755
-		this.element.removeUniqueId();
14756
-		this.labels.attr( "for", this.ids.element );
14757
-	}
14758
-} ] );
14759
-
14760
-
14761
-/*!
14762
- * jQuery UI Slider 1.13.2
14763
- * http://jqueryui.com
14764
- *
14765
- * Copyright jQuery Foundation and other contributors
14766
- * Released under the MIT license.
14767
- * http://jquery.org/license
14768
- */
14769
-
14770
-//>>label: Slider
14771
-//>>group: Widgets
14772
-//>>description: Displays a flexible slider with ranges and accessibility via keyboard.
14773
-//>>docs: http://api.jqueryui.com/slider/
14774
-//>>demos: http://jqueryui.com/slider/
14775
-//>>css.structure: ../../themes/base/core.css
14776
-//>>css.structure: ../../themes/base/slider.css
14777
-//>>css.theme: ../../themes/base/theme.css
14778
-
14779
-
14780
-var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
14781
-	version: "1.13.2",
14782
-	widgetEventPrefix: "slide",
14783
-
14784
-	options: {
14785
-		animate: false,
14786
-		classes: {
14787
-			"ui-slider": "ui-corner-all",
14788
-			"ui-slider-handle": "ui-corner-all",
14789
-
14790
-			// Note: ui-widget-header isn't the most fittingly semantic framework class for this
14791
-			// element, but worked best visually with a variety of themes
14792
-			"ui-slider-range": "ui-corner-all ui-widget-header"
14793
-		},
14794
-		distance: 0,
14795
-		max: 100,
14796
-		min: 0,
14797
-		orientation: "horizontal",
14798
-		range: false,
14799
-		step: 1,
14800
-		value: 0,
14801
-		values: null,
14802
-
14803
-		// Callbacks
14804
-		change: null,
14805
-		slide: null,
14806
-		start: null,
14807
-		stop: null
14808
-	},
14809
-
14810
-	// Number of pages in a slider
14811
-	// (how many times can you page up/down to go through the whole range)
14812
-	numPages: 5,
14813
-
14814
-	_create: function() {
14815
-		this._keySliding = false;
14816
-		this._mouseSliding = false;
14817
-		this._animateOff = true;
14818
-		this._handleIndex = null;
14819
-		this._detectOrientation();
14820
-		this._mouseInit();
14821
-		this._calculateNewMax();
14822
-
14823
-		this._addClass( "ui-slider ui-slider-" + this.orientation,
14824
-			"ui-widget ui-widget-content" );
14825
-
14826
-		this._refresh();
14827
-
14828
-		this._animateOff = false;
14829
-	},
14830
-
14831
-	_refresh: function() {
14832
-		this._createRange();
14833
-		this._createHandles();
14834
-		this._setupEvents();
14835
-		this._refreshValue();
14836
-	},
14837
-
14838
-	_createHandles: function() {
14839
-		var i, handleCount,
14840
-			options = this.options,
14841
-			existingHandles = this.element.find( ".ui-slider-handle" ),
14842
-			handle = "<span tabindex='0'></span>",
14843
-			handles = [];
14844
-
14845
-		handleCount = ( options.values && options.values.length ) || 1;
14846
-
14847
-		if ( existingHandles.length > handleCount ) {
14848
-			existingHandles.slice( handleCount ).remove();
14849
-			existingHandles = existingHandles.slice( 0, handleCount );
14850
-		}
14851
-
14852
-		for ( i = existingHandles.length; i < handleCount; i++ ) {
14853
-			handles.push( handle );
14854
-		}
14855
-
14856
-		this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );
14857
-
14858
-		this._addClass( this.handles, "ui-slider-handle", "ui-state-default" );
14859
-
14860
-		this.handle = this.handles.eq( 0 );
14861
-
14862
-		this.handles.each( function( i ) {
14863
-			$( this )
14864
-				.data( "ui-slider-handle-index", i )
14865
-				.attr( "tabIndex", 0 );
14866
-		} );
14867
-	},
14868
-
14869
-	_createRange: function() {
14870
-		var options = this.options;
14871
-
14872
-		if ( options.range ) {
14873
-			if ( options.range === true ) {
14874
-				if ( !options.values ) {
14875
-					options.values = [ this._valueMin(), this._valueMin() ];
14876
-				} else if ( options.values.length && options.values.length !== 2 ) {
14877
-					options.values = [ options.values[ 0 ], options.values[ 0 ] ];
14878
-				} else if ( Array.isArray( options.values ) ) {
14879
-					options.values = options.values.slice( 0 );
14880
-				}
14881
-			}
14882
-
14883
-			if ( !this.range || !this.range.length ) {
14884
-				this.range = $( "<div>" )
14885
-					.appendTo( this.element );
14886
-
14887
-				this._addClass( this.range, "ui-slider-range" );
14888
-			} else {
14889
-				this._removeClass( this.range, "ui-slider-range-min ui-slider-range-max" );
14890
-
14891
-				// Handle range switching from true to min/max
14892
-				this.range.css( {
14893
-					"left": "",
14894
-					"bottom": ""
14895
-				} );
14896
-			}
14897
-			if ( options.range === "min" || options.range === "max" ) {
14898
-				this._addClass( this.range, "ui-slider-range-" + options.range );
14899
-			}
14900
-		} else {
14901
-			if ( this.range ) {
14902
-				this.range.remove();
14903
-			}
14904
-			this.range = null;
14905
-		}
14906
-	},
14907
-
14908
-	_setupEvents: function() {
14909
-		this._off( this.handles );
14910
-		this._on( this.handles, this._handleEvents );
14911
-		this._hoverable( this.handles );
14912
-		this._focusable( this.handles );
14913
-	},
14914
-
14915
-	_destroy: function() {
14916
-		this.handles.remove();
14917
-		if ( this.range ) {
14918
-			this.range.remove();
14919
-		}
14920
-
14921
-		this._mouseDestroy();
14922
-	},
14923
-
14924
-	_mouseCapture: function( event ) {
14925
-		var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,
14926
-			that = this,
14927
-			o = this.options;
14928
-
14929
-		if ( o.disabled ) {
14930
-			return false;
14931
-		}
14932
-
14933
-		this.elementSize = {
14934
-			width: this.element.outerWidth(),
14935
-			height: this.element.outerHeight()
14936
-		};
14937
-		this.elementOffset = this.element.offset();
14938
-
14939
-		position = { x: event.pageX, y: event.pageY };
14940
-		normValue = this._normValueFromMouse( position );
14941
-		distance = this._valueMax() - this._valueMin() + 1;
14942
-		this.handles.each( function( i ) {
14943
-			var thisDistance = Math.abs( normValue - that.values( i ) );
14944
-			if ( ( distance > thisDistance ) ||
14945
-				( distance === thisDistance &&
14946
-					( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) {
14947
-				distance = thisDistance;
14948
-				closestHandle = $( this );
14949
-				index = i;
14950
-			}
14951
-		} );
14952
-
14953
-		allowed = this._start( event, index );
14954
-		if ( allowed === false ) {
14955
-			return false;
14956
-		}
14957
-		this._mouseSliding = true;
14958
-
14959
-		this._handleIndex = index;
14960
-
14961
-		this._addClass( closestHandle, null, "ui-state-active" );
14962
-		closestHandle.trigger( "focus" );
14963
-
14964
-		offset = closestHandle.offset();
14965
-		mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );
14966
-		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
14967
-			left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
14968
-			top: event.pageY - offset.top -
14969
-				( closestHandle.height() / 2 ) -
14970
-				( parseInt( closestHandle.css( "borderTopWidth" ), 10 ) || 0 ) -
14971
-				( parseInt( closestHandle.css( "borderBottomWidth" ), 10 ) || 0 ) +
14972
-				( parseInt( closestHandle.css( "marginTop" ), 10 ) || 0 )
14973
-		};
14974
-
14975
-		if ( !this.handles.hasClass( "ui-state-hover" ) ) {
14976
-			this._slide( event, index, normValue );
14977
-		}
14978
-		this._animateOff = true;
14979
-		return true;
14980
-	},
14981
-
14982
-	_mouseStart: function() {
14983
-		return true;
14984
-	},
14985
-
14986
-	_mouseDrag: function( event ) {
14987
-		var position = { x: event.pageX, y: event.pageY },
14988
-			normValue = this._normValueFromMouse( position );
14989
-
14990
-		this._slide( event, this._handleIndex, normValue );
14991
-
14992
-		return false;
14993
-	},
14994
-
14995
-	_mouseStop: function( event ) {
14996
-		this._removeClass( this.handles, null, "ui-state-active" );
14997
-		this._mouseSliding = false;
14998
-
14999
-		this._stop( event, this._handleIndex );
15000
-		this._change( event, this._handleIndex );
15001
-
15002
-		this._handleIndex = null;
15003
-		this._clickOffset = null;
15004
-		this._animateOff = false;
15005
-
15006
-		return false;
15007
-	},
15008
-
15009
-	_detectOrientation: function() {
15010
-		this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
15011
-	},
15012
-
15013
-	_normValueFromMouse: function( position ) {
15014
-		var pixelTotal,
15015
-			pixelMouse,
15016
-			percentMouse,
15017
-			valueTotal,
15018
-			valueMouse;
15019
-
15020
-		if ( this.orientation === "horizontal" ) {
15021
-			pixelTotal = this.elementSize.width;
15022
-			pixelMouse = position.x - this.elementOffset.left -
15023
-				( this._clickOffset ? this._clickOffset.left : 0 );
15024
-		} else {
15025
-			pixelTotal = this.elementSize.height;
15026
-			pixelMouse = position.y - this.elementOffset.top -
15027
-				( this._clickOffset ? this._clickOffset.top : 0 );
15028
-		}
15029
-
15030
-		percentMouse = ( pixelMouse / pixelTotal );
15031
-		if ( percentMouse > 1 ) {
15032
-			percentMouse = 1;
15033
-		}
15034
-		if ( percentMouse < 0 ) {
15035
-			percentMouse = 0;
15036
-		}
15037
-		if ( this.orientation === "vertical" ) {
15038
-			percentMouse = 1 - percentMouse;
15039
-		}
15040
-
15041
-		valueTotal = this._valueMax() - this._valueMin();
15042
-		valueMouse = this._valueMin() + percentMouse * valueTotal;
15043
-
15044
-		return this._trimAlignValue( valueMouse );
15045
-	},
15046
-
15047
-	_uiHash: function( index, value, values ) {
15048
-		var uiHash = {
15049
-			handle: this.handles[ index ],
15050
-			handleIndex: index,
15051
-			value: value !== undefined ? value : this.value()
15052
-		};
15053
-
15054
-		if ( this._hasMultipleValues() ) {
15055
-			uiHash.value = value !== undefined ? value : this.values( index );
15056
-			uiHash.values = values || this.values();
15057
-		}
15058
-
15059
-		return uiHash;
15060
-	},
15061
-
15062
-	_hasMultipleValues: function() {
15063
-		return this.options.values && this.options.values.length;
15064
-	},
15065
-
15066
-	_start: function( event, index ) {
15067
-		return this._trigger( "start", event, this._uiHash( index ) );
15068
-	},
15069
-
15070
-	_slide: function( event, index, newVal ) {
15071
-		var allowed, otherVal,
15072
-			currentValue = this.value(),
15073
-			newValues = this.values();
15074
-
15075
-		if ( this._hasMultipleValues() ) {
15076
-			otherVal = this.values( index ? 0 : 1 );
15077
-			currentValue = this.values( index );
15078
-
15079
-			if ( this.options.values.length === 2 && this.options.range === true ) {
15080
-				newVal =  index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal );
15081
-			}
15082
-
15083
-			newValues[ index ] = newVal;
15084
-		}
15085
-
15086
-		if ( newVal === currentValue ) {
15087
-			return;
15088
-		}
15089
-
15090
-		allowed = this._trigger( "slide", event, this._uiHash( index, newVal, newValues ) );
15091
-
15092
-		// A slide can be canceled by returning false from the slide callback
15093
-		if ( allowed === false ) {
15094
-			return;
15095
-		}
15096
-
15097
-		if ( this._hasMultipleValues() ) {
15098
-			this.values( index, newVal );
15099
-		} else {
15100
-			this.value( newVal );
15101
-		}
15102
-	},
15103
-
15104
-	_stop: function( event, index ) {
15105
-		this._trigger( "stop", event, this._uiHash( index ) );
15106
-	},
15107
-
15108
-	_change: function( event, index ) {
15109
-		if ( !this._keySliding && !this._mouseSliding ) {
15110
-
15111
-			//store the last changed value index for reference when handles overlap
15112
-			this._lastChangedValue = index;
15113
-			this._trigger( "change", event, this._uiHash( index ) );
15114
-		}
15115
-	},
15116
-
15117
-	value: function( newValue ) {
15118
-		if ( arguments.length ) {
15119
-			this.options.value = this._trimAlignValue( newValue );
15120
-			this._refreshValue();
15121
-			this._change( null, 0 );
15122
-			return;
15123
-		}
15124
-
15125
-		return this._value();
15126
-	},
15127
-
15128
-	values: function( index, newValue ) {
15129
-		var vals,
15130
-			newValues,
15131
-			i;
15132
-
15133
-		if ( arguments.length > 1 ) {
15134
-			this.options.values[ index ] = this._trimAlignValue( newValue );
15135
-			this._refreshValue();
15136
-			this._change( null, index );
15137
-			return;
15138
-		}
15139
-
15140
-		if ( arguments.length ) {
15141
-			if ( Array.isArray( arguments[ 0 ] ) ) {
15142
-				vals = this.options.values;
15143
-				newValues = arguments[ 0 ];
15144
-				for ( i = 0; i < vals.length; i += 1 ) {
15145
-					vals[ i ] = this._trimAlignValue( newValues[ i ] );
15146
-					this._change( null, i );
15147
-				}
15148
-				this._refreshValue();
15149
-			} else {
15150
-				if ( this._hasMultipleValues() ) {
15151
-					return this._values( index );
15152
-				} else {
15153
-					return this.value();
15154
-				}
15155
-			}
15156
-		} else {
15157
-			return this._values();
15158
-		}
15159
-	},
15160
-
15161
-	_setOption: function( key, value ) {
15162
-		var i,
15163
-			valsLength = 0;
15164
-
15165
-		if ( key === "range" && this.options.range === true ) {
15166
-			if ( value === "min" ) {
15167
-				this.options.value = this._values( 0 );
15168
-				this.options.values = null;
15169
-			} else if ( value === "max" ) {
15170
-				this.options.value = this._values( this.options.values.length - 1 );
15171
-				this.options.values = null;
15172
-			}
15173
-		}
15174
-
15175
-		if ( Array.isArray( this.options.values ) ) {
15176
-			valsLength = this.options.values.length;
15177
-		}
15178
-
15179
-		this._super( key, value );
15180
-
15181
-		switch ( key ) {
15182
-			case "orientation":
15183
-				this._detectOrientation();
15184
-				this._removeClass( "ui-slider-horizontal ui-slider-vertical" )
15185
-					._addClass( "ui-slider-" + this.orientation );
15186
-				this._refreshValue();
15187
-				if ( this.options.range ) {
15188
-					this._refreshRange( value );
15189
-				}
15190
-
15191
-				// Reset positioning from previous orientation
15192
-				this.handles.css( value === "horizontal" ? "bottom" : "left", "" );
15193
-				break;
15194
-			case "value":
15195
-				this._animateOff = true;
15196
-				this._refreshValue();
15197
-				this._change( null, 0 );
15198
-				this._animateOff = false;
15199
-				break;
15200
-			case "values":
15201
-				this._animateOff = true;
15202
-				this._refreshValue();
15203
-
15204
-				// Start from the last handle to prevent unreachable handles (#9046)
15205
-				for ( i = valsLength - 1; i >= 0; i-- ) {
15206
-					this._change( null, i );
15207
-				}
15208
-				this._animateOff = false;
15209
-				break;
15210
-			case "step":
15211
-			case "min":
15212
-			case "max":
15213
-				this._animateOff = true;
15214
-				this._calculateNewMax();
15215
-				this._refreshValue();
15216
-				this._animateOff = false;
15217
-				break;
15218
-			case "range":
15219
-				this._animateOff = true;
15220
-				this._refresh();
15221
-				this._animateOff = false;
15222
-				break;
15223
-		}
15224
-	},
15225
-
15226
-	_setOptionDisabled: function( value ) {
15227
-		this._super( value );
15228
-
15229
-		this._toggleClass( null, "ui-state-disabled", !!value );
15230
-	},
15231
-
15232
-	//internal value getter
15233
-	// _value() returns value trimmed by min and max, aligned by step
15234
-	_value: function() {
15235
-		var val = this.options.value;
15236
-		val = this._trimAlignValue( val );
15237
-
15238
-		return val;
15239
-	},
15240
-
15241
-	//internal values getter
15242
-	// _values() returns array of values trimmed by min and max, aligned by step
15243
-	// _values( index ) returns single value trimmed by min and max, aligned by step
15244
-	_values: function( index ) {
15245
-		var val,
15246
-			vals,
15247
-			i;
15248
-
15249
-		if ( arguments.length ) {
15250
-			val = this.options.values[ index ];
15251
-			val = this._trimAlignValue( val );
15252
-
15253
-			return val;
15254
-		} else if ( this._hasMultipleValues() ) {
15255
-
15256
-			// .slice() creates a copy of the array
15257
-			// this copy gets trimmed by min and max and then returned
15258
-			vals = this.options.values.slice();
15259
-			for ( i = 0; i < vals.length; i += 1 ) {
15260
-				vals[ i ] = this._trimAlignValue( vals[ i ] );
15261
-			}
15262
-
15263
-			return vals;
15264
-		} else {
15265
-			return [];
15266
-		}
15267
-	},
15268
-
15269
-	// Returns the step-aligned value that val is closest to, between (inclusive) min and max
15270
-	_trimAlignValue: function( val ) {
15271
-		if ( val <= this._valueMin() ) {
15272
-			return this._valueMin();
15273
-		}
15274
-		if ( val >= this._valueMax() ) {
15275
-			return this._valueMax();
15276
-		}
15277
-		var step = ( this.options.step > 0 ) ? this.options.step : 1,
15278
-			valModStep = ( val - this._valueMin() ) % step,
15279
-			alignValue = val - valModStep;
15280
-
15281
-		if ( Math.abs( valModStep ) * 2 >= step ) {
15282
-			alignValue += ( valModStep > 0 ) ? step : ( -step );
15283
-		}
15284
-
15285
-		// Since JavaScript has problems with large floats, round
15286
-		// the final value to 5 digits after the decimal point (see #4124)
15287
-		return parseFloat( alignValue.toFixed( 5 ) );
15288
-	},
15289
-
15290
-	_calculateNewMax: function() {
15291
-		var max = this.options.max,
15292
-			min = this._valueMin(),
15293
-			step = this.options.step,
15294
-			aboveMin = Math.round( ( max - min ) / step ) * step;
15295
-		max = aboveMin + min;
15296
-		if ( max > this.options.max ) {
15297
-
15298
-			//If max is not divisible by step, rounding off may increase its value
15299
-			max -= step;
15300
-		}
15301
-		this.max = parseFloat( max.toFixed( this._precision() ) );
15302
-	},
15303
-
15304
-	_precision: function() {
15305
-		var precision = this._precisionOf( this.options.step );
15306
-		if ( this.options.min !== null ) {
15307
-			precision = Math.max( precision, this._precisionOf( this.options.min ) );
15308
-		}
15309
-		return precision;
15310
-	},
15311
-
15312
-	_precisionOf: function( num ) {
15313
-		var str = num.toString(),
15314
-			decimal = str.indexOf( "." );
15315
-		return decimal === -1 ? 0 : str.length - decimal - 1;
15316
-	},
15317
-
15318
-	_valueMin: function() {
15319
-		return this.options.min;
15320
-	},
15321
-
15322
-	_valueMax: function() {
15323
-		return this.max;
15324
-	},
15325
-
15326
-	_refreshRange: function( orientation ) {
15327
-		if ( orientation === "vertical" ) {
15328
-			this.range.css( { "width": "", "left": "" } );
15329
-		}
15330
-		if ( orientation === "horizontal" ) {
15331
-			this.range.css( { "height": "", "bottom": "" } );
15332
-		}
15333
-	},
15334
-
15335
-	_refreshValue: function() {
15336
-		var lastValPercent, valPercent, value, valueMin, valueMax,
15337
-			oRange = this.options.range,
15338
-			o = this.options,
15339
-			that = this,
15340
-			animate = ( !this._animateOff ) ? o.animate : false,
15341
-			_set = {};
15342
-
15343
-		if ( this._hasMultipleValues() ) {
15344
-			this.handles.each( function( i ) {
15345
-				valPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() -
15346
-					that._valueMin() ) * 100;
15347
-				_set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
15348
-				$( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
15349
-				if ( that.options.range === true ) {
15350
-					if ( that.orientation === "horizontal" ) {
15351
-						if ( i === 0 ) {
15352
-							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
15353
-								left: valPercent + "%"
15354
-							}, o.animate );
15355
-						}
15356
-						if ( i === 1 ) {
15357
-							that.range[ animate ? "animate" : "css" ]( {
15358
-								width: ( valPercent - lastValPercent ) + "%"
15359
-							}, {
15360
-								queue: false,
15361
-								duration: o.animate
15362
-							} );
15363
-						}
15364
-					} else {
15365
-						if ( i === 0 ) {
15366
-							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
15367
-								bottom: ( valPercent ) + "%"
15368
-							}, o.animate );
15369
-						}
15370
-						if ( i === 1 ) {
15371
-							that.range[ animate ? "animate" : "css" ]( {
15372
-								height: ( valPercent - lastValPercent ) + "%"
15373
-							}, {
15374
-								queue: false,
15375
-								duration: o.animate
15376
-							} );
15377
-						}
15378
-					}
15379
-				}
15380
-				lastValPercent = valPercent;
15381
-			} );
15382
-		} else {
15383
-			value = this.value();
15384
-			valueMin = this._valueMin();
15385
-			valueMax = this._valueMax();
15386
-			valPercent = ( valueMax !== valueMin ) ?
15387
-					( value - valueMin ) / ( valueMax - valueMin ) * 100 :
15388
-					0;
15389
-			_set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
15390
-			this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
15391
-
15392
-			if ( oRange === "min" && this.orientation === "horizontal" ) {
15393
-				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
15394
-					width: valPercent + "%"
15395
-				}, o.animate );
15396
-			}
15397
-			if ( oRange === "max" && this.orientation === "horizontal" ) {
15398
-				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
15399
-					width: ( 100 - valPercent ) + "%"
15400
-				}, o.animate );
15401
-			}
15402
-			if ( oRange === "min" && this.orientation === "vertical" ) {
15403
-				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
15404
-					height: valPercent + "%"
15405
-				}, o.animate );
15406
-			}
15407
-			if ( oRange === "max" && this.orientation === "vertical" ) {
15408
-				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
15409
-					height: ( 100 - valPercent ) + "%"
15410
-				}, o.animate );
15411
-			}
15412
-		}
15413
-	},
15414
-
15415
-	_handleEvents: {
15416
-		keydown: function( event ) {
15417
-			var allowed, curVal, newVal, step,
15418
-				index = $( event.target ).data( "ui-slider-handle-index" );
15419
-
15420
-			switch ( event.keyCode ) {
15421
-				case $.ui.keyCode.HOME:
15422
-				case $.ui.keyCode.END:
15423
-				case $.ui.keyCode.PAGE_UP:
15424
-				case $.ui.keyCode.PAGE_DOWN:
15425
-				case $.ui.keyCode.UP:
15426
-				case $.ui.keyCode.RIGHT:
15427
-				case $.ui.keyCode.DOWN:
15428
-				case $.ui.keyCode.LEFT:
15429
-					event.preventDefault();
15430
-					if ( !this._keySliding ) {
15431
-						this._keySliding = true;
15432
-						this._addClass( $( event.target ), null, "ui-state-active" );
15433
-						allowed = this._start( event, index );
15434
-						if ( allowed === false ) {
15435
-							return;
15436
-						}
15437
-					}
15438
-					break;
15439
-			}
15440
-
15441
-			step = this.options.step;
15442
-			if ( this._hasMultipleValues() ) {
15443
-				curVal = newVal = this.values( index );
15444
-			} else {
15445
-				curVal = newVal = this.value();
15446
-			}
15447
-
15448
-			switch ( event.keyCode ) {
15449
-				case $.ui.keyCode.HOME:
15450
-					newVal = this._valueMin();
15451
-					break;
15452
-				case $.ui.keyCode.END:
15453
-					newVal = this._valueMax();
15454
-					break;
15455
-				case $.ui.keyCode.PAGE_UP:
15456
-					newVal = this._trimAlignValue(
15457
-						curVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )
15458
-					);
15459
-					break;
15460
-				case $.ui.keyCode.PAGE_DOWN:
15461
-					newVal = this._trimAlignValue(
15462
-						curVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) );
15463
-					break;
15464
-				case $.ui.keyCode.UP:
15465
-				case $.ui.keyCode.RIGHT:
15466
-					if ( curVal === this._valueMax() ) {
15467
-						return;
15468
-					}
15469
-					newVal = this._trimAlignValue( curVal + step );
15470
-					break;
15471
-				case $.ui.keyCode.DOWN:
15472
-				case $.ui.keyCode.LEFT:
15473
-					if ( curVal === this._valueMin() ) {
15474
-						return;
15475
-					}
15476
-					newVal = this._trimAlignValue( curVal - step );
15477
-					break;
15478
-			}
15479
-
15480
-			this._slide( event, index, newVal );
15481
-		},
15482
-		keyup: function( event ) {
15483
-			var index = $( event.target ).data( "ui-slider-handle-index" );
15484
-
15485
-			if ( this._keySliding ) {
15486
-				this._keySliding = false;
15487
-				this._stop( event, index );
15488
-				this._change( event, index );
15489
-				this._removeClass( $( event.target ), null, "ui-state-active" );
15490
-			}
15491
-		}
15492
-	}
15493
-} );
15494
-
15495
-
15496
-/*!
15497
- * jQuery UI Sortable 1.13.2
15498
- * http://jqueryui.com
15499
- *
15500
- * Copyright jQuery Foundation and other contributors
15501
- * Released under the MIT license.
15502
- * http://jquery.org/license
15503
- */
15504
-
15505
-//>>label: Sortable
15506
-//>>group: Interactions
15507
-//>>description: Enables items in a list to be sorted using the mouse.
15508
-//>>docs: http://api.jqueryui.com/sortable/
15509
-//>>demos: http://jqueryui.com/sortable/
15510
-//>>css.structure: ../../themes/base/sortable.css
15511
-
15512
-
15513
-var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15514
-	version: "1.13.2",
15515
-	widgetEventPrefix: "sort",
15516
-	ready: false,
15517
-	options: {
15518
-		appendTo: "parent",
15519
-		axis: false,
15520
-		connectWith: false,
15521
-		containment: false,
15522
-		cursor: "auto",
15523
-		cursorAt: false,
15524
-		dropOnEmpty: true,
15525
-		forcePlaceholderSize: false,
15526
-		forceHelperSize: false,
15527
-		grid: false,
15528
-		handle: false,
15529
-		helper: "original",
15530
-		items: "> *",
15531
-		opacity: false,
15532
-		placeholder: false,
15533
-		revert: false,
15534
-		scroll: true,
15535
-		scrollSensitivity: 20,
15536
-		scrollSpeed: 20,
15537
-		scope: "default",
15538
-		tolerance: "intersect",
15539
-		zIndex: 1000,
15540
-
15541
-		// Callbacks
15542
-		activate: null,
15543
-		beforeStop: null,
15544
-		change: null,
15545
-		deactivate: null,
15546
-		out: null,
15547
-		over: null,
15548
-		receive: null,
15549
-		remove: null,
15550
-		sort: null,
15551
-		start: null,
15552
-		stop: null,
15553
-		update: null
15554
-	},
15555
-
15556
-	_isOverAxis: function( x, reference, size ) {
15557
-		return ( x >= reference ) && ( x < ( reference + size ) );
15558
-	},
15559
-
15560
-	_isFloating: function( item ) {
15561
-		return ( /left|right/ ).test( item.css( "float" ) ) ||
15562
-			( /inline|table-cell/ ).test( item.css( "display" ) );
15563
-	},
15564
-
15565
-	_create: function() {
15566
-		this.containerCache = {};
15567
-		this._addClass( "ui-sortable" );
15568
-
15569
-		//Get the items
15570
-		this.refresh();
15571
-
15572
-		//Let's determine the parent's offset
15573
-		this.offset = this.element.offset();
15574
-
15575
-		//Initialize mouse events for interaction
15576
-		this._mouseInit();
15577
-
15578
-		this._setHandleClassName();
15579
-
15580
-		//We're ready to go
15581
-		this.ready = true;
15582
-
15583
-	},
15584
-
15585
-	_setOption: function( key, value ) {
15586
-		this._super( key, value );
15587
-
15588
-		if ( key === "handle" ) {
15589
-			this._setHandleClassName();
15590
-		}
15591
-	},
15592
-
15593
-	_setHandleClassName: function() {
15594
-		var that = this;
15595
-		this._removeClass( this.element.find( ".ui-sortable-handle" ), "ui-sortable-handle" );
15596
-		$.each( this.items, function() {
15597
-			that._addClass(
15598
-				this.instance.options.handle ?
15599
-					this.item.find( this.instance.options.handle ) :
15600
-					this.item,
15601
-				"ui-sortable-handle"
15602
-			);
15603
-		} );
15604
-	},
15605
-
15606
-	_destroy: function() {
15607
-		this._mouseDestroy();
15608
-
15609
-		for ( var i = this.items.length - 1; i >= 0; i-- ) {
15610
-			this.items[ i ].item.removeData( this.widgetName + "-item" );
15611
-		}
15612
-
15613
-		return this;
15614
-	},
15615
-
15616
-	_mouseCapture: function( event, overrideHandle ) {
15617
-		var currentItem = null,
15618
-			validHandle = false,
15619
-			that = this;
15620
-
15621
-		if ( this.reverting ) {
15622
-			return false;
15623
-		}
15624
-
15625
-		if ( this.options.disabled || this.options.type === "static" ) {
15626
-			return false;
15627
-		}
15628
-
15629
-		//We have to refresh the items data once first
15630
-		this._refreshItems( event );
15631
-
15632
-		//Find out if the clicked node (or one of its parents) is a actual item in this.items
15633
-		$( event.target ).parents().each( function() {
15634
-			if ( $.data( this, that.widgetName + "-item" ) === that ) {
15635
-				currentItem = $( this );
15636
-				return false;
15637
-			}
15638
-		} );
15639
-		if ( $.data( event.target, that.widgetName + "-item" ) === that ) {
15640
-			currentItem = $( event.target );
15641
-		}
15642
-
15643
-		if ( !currentItem ) {
15644
-			return false;
15645
-		}
15646
-		if ( this.options.handle && !overrideHandle ) {
15647
-			$( this.options.handle, currentItem ).find( "*" ).addBack().each( function() {
15648
-				if ( this === event.target ) {
15649
-					validHandle = true;
15650
-				}
15651
-			} );
15652
-			if ( !validHandle ) {
15653
-				return false;
15654
-			}
15655
-		}
15656
-
15657
-		this.currentItem = currentItem;
15658
-		this._removeCurrentsFromItems();
15659
-		return true;
15660
-
15661
-	},
15662
-
15663
-	_mouseStart: function( event, overrideHandle, noActivation ) {
15664
-
15665
-		var i, body,
15666
-			o = this.options;
15667
-
15668
-		this.currentContainer = this;
15669
-
15670
-		//We only need to call refreshPositions, because the refreshItems call has been moved to
15671
-		// mouseCapture
15672
-		this.refreshPositions();
15673
-
15674
-		//Prepare the dragged items parent
15675
-		this.appendTo = $( o.appendTo !== "parent" ?
15676
-				o.appendTo :
15677
-				this.currentItem.parent() );
15678
-
15679
-		//Create and append the visible helper
15680
-		this.helper = this._createHelper( event );
15681
-
15682
-		//Cache the helper size
15683
-		this._cacheHelperProportions();
15684
-
15685
-		/*
15686
-		 * - Position generation -
15687
-		 * This block generates everything position related - it's the core of draggables.
15688
-		 */
15689
-
15690
-		//Cache the margins of the original element
15691
-		this._cacheMargins();
15692
-
15693
-		//The element's absolute position on the page minus margins
15694
-		this.offset = this.currentItem.offset();
15695
-		this.offset = {
15696
-			top: this.offset.top - this.margins.top,
15697
-			left: this.offset.left - this.margins.left
15698
-		};
15699
-
15700
-		$.extend( this.offset, {
15701
-			click: { //Where the click happened, relative to the element
15702
-				left: event.pageX - this.offset.left,
15703
-				top: event.pageY - this.offset.top
15704
-			},
15705
-
15706
-			// This is a relative to absolute position minus the actual position calculation -
15707
-			// only used for relative positioned helper
15708
-			relative: this._getRelativeOffset()
15709
-		} );
15710
-
15711
-		// After we get the helper offset, but before we get the parent offset we can
15712
-		// change the helper's position to absolute
15713
-		// TODO: Still need to figure out a way to make relative sorting possible
15714
-		this.helper.css( "position", "absolute" );
15715
-		this.cssPosition = this.helper.css( "position" );
15716
-
15717
-		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
15718
-		if ( o.cursorAt ) {
15719
-			this._adjustOffsetFromHelper( o.cursorAt );
15720
-		}
15721
-
15722
-		//Cache the former DOM position
15723
-		this.domPosition = {
15724
-			prev: this.currentItem.prev()[ 0 ],
15725
-			parent: this.currentItem.parent()[ 0 ]
15726
-		};
15727
-
15728
-		// If the helper is not the original, hide the original so it's not playing any role during
15729
-		// the drag, won't cause anything bad this way
15730
-		if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
15731
-			this.currentItem.hide();
15732
-		}
15733
-
15734
-		//Create the placeholder
15735
-		this._createPlaceholder();
15736
-
15737
-		//Get the next scrolling parent
15738
-		this.scrollParent = this.placeholder.scrollParent();
15739
-
15740
-		$.extend( this.offset, {
15741
-			parent: this._getParentOffset()
15742
-		} );
15743
-
15744
-		//Set a containment if given in the options
15745
-		if ( o.containment ) {
15746
-			this._setContainment();
15747
-		}
15748
-
15749
-		if ( o.cursor && o.cursor !== "auto" ) { // cursor option
15750
-			body = this.document.find( "body" );
15751
-
15752
-			// Support: IE
15753
-			this.storedCursor = body.css( "cursor" );
15754
-			body.css( "cursor", o.cursor );
15755
-
15756
-			this.storedStylesheet =
15757
-				$( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body );
15758
-		}
15759
-
15760
-		// We need to make sure to grab the zIndex before setting the
15761
-		// opacity, because setting the opacity to anything lower than 1
15762
-		// causes the zIndex to change from "auto" to 0.
15763
-		if ( o.zIndex ) { // zIndex option
15764
-			if ( this.helper.css( "zIndex" ) ) {
15765
-				this._storedZIndex = this.helper.css( "zIndex" );
15766
-			}
15767
-			this.helper.css( "zIndex", o.zIndex );
15768
-		}
15769
-
15770
-		if ( o.opacity ) { // opacity option
15771
-			if ( this.helper.css( "opacity" ) ) {
15772
-				this._storedOpacity = this.helper.css( "opacity" );
15773
-			}
15774
-			this.helper.css( "opacity", o.opacity );
15775
-		}
15776
-
15777
-		//Prepare scrolling
15778
-		if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
15779
-				this.scrollParent[ 0 ].tagName !== "HTML" ) {
15780
-			this.overflowOffset = this.scrollParent.offset();
15781
-		}
15782
-
15783
-		//Call callbacks
15784
-		this._trigger( "start", event, this._uiHash() );
15785
-
15786
-		//Recache the helper size
15787
-		if ( !this._preserveHelperProportions ) {
15788
-			this._cacheHelperProportions();
15789
-		}
15790
-
15791
-		//Post "activate" events to possible containers
15792
-		if ( !noActivation ) {
15793
-			for ( i = this.containers.length - 1; i >= 0; i-- ) {
15794
-				this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) );
15795
-			}
15796
-		}
15797
-
15798
-		//Prepare possible droppables
15799
-		if ( $.ui.ddmanager ) {
15800
-			$.ui.ddmanager.current = this;
15801
-		}
15802
-
15803
-		if ( $.ui.ddmanager && !o.dropBehaviour ) {
15804
-			$.ui.ddmanager.prepareOffsets( this, event );
15805
-		}
15806
-
15807
-		this.dragging = true;
15808
-
15809
-		this._addClass( this.helper, "ui-sortable-helper" );
15810
-
15811
-		//Move the helper, if needed
15812
-		if ( !this.helper.parent().is( this.appendTo ) ) {
15813
-			this.helper.detach().appendTo( this.appendTo );
15814
-
15815
-			//Update position
15816
-			this.offset.parent = this._getParentOffset();
15817
-		}
15818
-
15819
-		//Generate the original position
15820
-		this.position = this.originalPosition = this._generatePosition( event );
15821
-		this.originalPageX = event.pageX;
15822
-		this.originalPageY = event.pageY;
15823
-		this.lastPositionAbs = this.positionAbs = this._convertPositionTo( "absolute" );
15824
-
15825
-		this._mouseDrag( event );
15826
-
15827
-		return true;
15828
-
15829
-	},
15830
-
15831
-	_scroll: function( event ) {
15832
-		var o = this.options,
15833
-			scrolled = false;
15834
-
15835
-		if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
15836
-				this.scrollParent[ 0 ].tagName !== "HTML" ) {
15837
-
15838
-			if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
15839
-					event.pageY < o.scrollSensitivity ) {
15840
-				this.scrollParent[ 0 ].scrollTop =
15841
-					scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
15842
-			} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
15843
-				this.scrollParent[ 0 ].scrollTop =
15844
-					scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
15845
-			}
15846
-
15847
-			if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
15848
-					event.pageX < o.scrollSensitivity ) {
15849
-				this.scrollParent[ 0 ].scrollLeft = scrolled =
15850
-					this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
15851
-			} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
15852
-				this.scrollParent[ 0 ].scrollLeft = scrolled =
15853
-					this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
15854
-			}
15855
-
15856
-		} else {
15857
-
15858
-			if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
15859
-				scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
15860
-			} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
15861
-					o.scrollSensitivity ) {
15862
-				scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
15863
-			}
15864
-
15865
-			if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
15866
-				scrolled = this.document.scrollLeft(
15867
-					this.document.scrollLeft() - o.scrollSpeed
15868
-				);
15869
-			} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
15870
-					o.scrollSensitivity ) {
15871
-				scrolled = this.document.scrollLeft(
15872
-					this.document.scrollLeft() + o.scrollSpeed
15873
-				);
15874
-			}
15875
-
15876
-		}
15877
-
15878
-		return scrolled;
15879
-	},
15880
-
15881
-	_mouseDrag: function( event ) {
15882
-		var i, item, itemElement, intersection,
15883
-			o = this.options;
15884
-
15885
-		//Compute the helpers position
15886
-		this.position = this._generatePosition( event );
15887
-		this.positionAbs = this._convertPositionTo( "absolute" );
15888
-
15889
-		//Set the helper position
15890
-		if ( !this.options.axis || this.options.axis !== "y" ) {
15891
-			this.helper[ 0 ].style.left = this.position.left + "px";
15892
-		}
15893
-		if ( !this.options.axis || this.options.axis !== "x" ) {
15894
-			this.helper[ 0 ].style.top = this.position.top + "px";
15895
-		}
15896
-
15897
-		//Do scrolling
15898
-		if ( o.scroll ) {
15899
-			if ( this._scroll( event ) !== false ) {
15900
-
15901
-				//Update item positions used in position checks
15902
-				this._refreshItemPositions( true );
15903
-
15904
-				if ( $.ui.ddmanager && !o.dropBehaviour ) {
15905
-					$.ui.ddmanager.prepareOffsets( this, event );
15906
-				}
15907
-			}
15908
-		}
15909
-
15910
-		this.dragDirection = {
15911
-			vertical: this._getDragVerticalDirection(),
15912
-			horizontal: this._getDragHorizontalDirection()
15913
-		};
15914
-
15915
-		//Rearrange
15916
-		for ( i = this.items.length - 1; i >= 0; i-- ) {
15917
-
15918
-			//Cache variables and intersection, continue if no intersection
15919
-			item = this.items[ i ];
15920
-			itemElement = item.item[ 0 ];
15921
-			intersection = this._intersectsWithPointer( item );
15922
-			if ( !intersection ) {
15923
-				continue;
15924
-			}
15925
-
15926
-			// Only put the placeholder inside the current Container, skip all
15927
-			// items from other containers. This works because when moving
15928
-			// an item from one container to another the
15929
-			// currentContainer is switched before the placeholder is moved.
15930
-			//
15931
-			// Without this, moving items in "sub-sortables" can cause
15932
-			// the placeholder to jitter between the outer and inner container.
15933
-			if ( item.instance !== this.currentContainer ) {
15934
-				continue;
15935
-			}
15936
-
15937
-			// Cannot intersect with itself
15938
-			// no useless actions that have been done before
15939
-			// no action if the item moved is the parent of the item checked
15940
-			if ( itemElement !== this.currentItem[ 0 ] &&
15941
-				this.placeholder[ intersection === 1 ?
15942
-				"next" : "prev" ]()[ 0 ] !== itemElement &&
15943
-				!$.contains( this.placeholder[ 0 ], itemElement ) &&
15944
-				( this.options.type === "semi-dynamic" ?
15945
-					!$.contains( this.element[ 0 ], itemElement ) :
15946
-					true
15947
-				)
15948
-			) {
15949
-
15950
-				this.direction = intersection === 1 ? "down" : "up";
15951
-
15952
-				if ( this.options.tolerance === "pointer" ||
15953
-						this._intersectsWithSides( item ) ) {
15954
-					this._rearrange( event, item );
15955
-				} else {
15956
-					break;
15957
-				}
15958
-
15959
-				this._trigger( "change", event, this._uiHash() );
15960
-				break;
15961
-			}
15962
-		}
15963
-
15964
-		//Post events to containers
15965
-		this._contactContainers( event );
15966
-
15967
-		//Interconnect with droppables
15968
-		if ( $.ui.ddmanager ) {
15969
-			$.ui.ddmanager.drag( this, event );
15970
-		}
15971
-
15972
-		//Call callbacks
15973
-		this._trigger( "sort", event, this._uiHash() );
15974
-
15975
-		this.lastPositionAbs = this.positionAbs;
15976
-		return false;
15977
-
15978
-	},
15979
-
15980
-	_mouseStop: function( event, noPropagation ) {
15981
-
15982
-		if ( !event ) {
15983
-			return;
15984
-		}
15985
-
15986
-		//If we are using droppables, inform the manager about the drop
15987
-		if ( $.ui.ddmanager && !this.options.dropBehaviour ) {
15988
-			$.ui.ddmanager.drop( this, event );
15989
-		}
15990
-
15991
-		if ( this.options.revert ) {
15992
-			var that = this,
15993
-				cur = this.placeholder.offset(),
15994
-				axis = this.options.axis,
15995
-				animation = {};
15996
-
15997
-			if ( !axis || axis === "x" ) {
15998
-				animation.left = cur.left - this.offset.parent.left - this.margins.left +
15999
-					( this.offsetParent[ 0 ] === this.document[ 0 ].body ?
16000
-						0 :
16001
-						this.offsetParent[ 0 ].scrollLeft
16002
-					);
16003
-			}
16004
-			if ( !axis || axis === "y" ) {
16005
-				animation.top = cur.top - this.offset.parent.top - this.margins.top +
16006
-					( this.offsetParent[ 0 ] === this.document[ 0 ].body ?
16007
-						0 :
16008
-						this.offsetParent[ 0 ].scrollTop
16009
-					);
16010
-			}
16011
-			this.reverting = true;
16012
-			$( this.helper ).animate(
16013
-				animation,
16014
-				parseInt( this.options.revert, 10 ) || 500,
16015
-				function() {
16016
-					that._clear( event );
16017
-				}
16018
-			);
16019
-		} else {
16020
-			this._clear( event, noPropagation );
16021
-		}
16022
-
16023
-		return false;
16024
-
16025
-	},
16026
-
16027
-	cancel: function() {
16028
-
16029
-		if ( this.dragging ) {
16030
-
16031
-			this._mouseUp( new $.Event( "mouseup", { target: null } ) );
16032
-
16033
-			if ( this.options.helper === "original" ) {
16034
-				this.currentItem.css( this._storedCSS );
16035
-				this._removeClass( this.currentItem, "ui-sortable-helper" );
16036
-			} else {
16037
-				this.currentItem.show();
16038
-			}
16039
-
16040
-			//Post deactivating events to containers
16041
-			for ( var i = this.containers.length - 1; i >= 0; i-- ) {
16042
-				this.containers[ i ]._trigger( "deactivate", null, this._uiHash( this ) );
16043
-				if ( this.containers[ i ].containerCache.over ) {
16044
-					this.containers[ i ]._trigger( "out", null, this._uiHash( this ) );
16045
-					this.containers[ i ].containerCache.over = 0;
16046
-				}
16047
-			}
16048
-
16049
-		}
16050
-
16051
-		if ( this.placeholder ) {
16052
-
16053
-			//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,
16054
-			// it unbinds ALL events from the original node!
16055
-			if ( this.placeholder[ 0 ].parentNode ) {
16056
-				this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );
16057
-			}
16058
-			if ( this.options.helper !== "original" && this.helper &&
16059
-					this.helper[ 0 ].parentNode ) {
16060
-				this.helper.remove();
16061
-			}
16062
-
16063
-			$.extend( this, {
16064
-				helper: null,
16065
-				dragging: false,
16066
-				reverting: false,
16067
-				_noFinalSort: null
16068
-			} );
16069
-
16070
-			if ( this.domPosition.prev ) {
16071
-				$( this.domPosition.prev ).after( this.currentItem );
16072
-			} else {
16073
-				$( this.domPosition.parent ).prepend( this.currentItem );
16074
-			}
16075
-		}
16076
-
16077
-		return this;
16078
-
16079
-	},
16080
-
16081
-	serialize: function( o ) {
16082
-
16083
-		var items = this._getItemsAsjQuery( o && o.connected ),
16084
-			str = [];
16085
-		o = o || {};
16086
-
16087
-		$( items ).each( function() {
16088
-			var res = ( $( o.item || this ).attr( o.attribute || "id" ) || "" )
16089
-				.match( o.expression || ( /(.+)[\-=_](.+)/ ) );
16090
-			if ( res ) {
16091
-				str.push(
16092
-					( o.key || res[ 1 ] + "[]" ) +
16093
-					"=" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );
16094
-			}
16095
-		} );
16096
-
16097
-		if ( !str.length && o.key ) {
16098
-			str.push( o.key + "=" );
16099
-		}
16100
-
16101
-		return str.join( "&" );
16102
-
16103
-	},
16104
-
16105
-	toArray: function( o ) {
16106
-
16107
-		var items = this._getItemsAsjQuery( o && o.connected ),
16108
-			ret = [];
16109
-
16110
-		o = o || {};
16111
-
16112
-		items.each( function() {
16113
-			ret.push( $( o.item || this ).attr( o.attribute || "id" ) || "" );
16114
-		} );
16115
-		return ret;
16116
-
16117
-	},
16118
-
16119
-	/* Be careful with the following core functions */
16120
-	_intersectsWith: function( item ) {
16121
-
16122
-		var x1 = this.positionAbs.left,
16123
-			x2 = x1 + this.helperProportions.width,
16124
-			y1 = this.positionAbs.top,
16125
-			y2 = y1 + this.helperProportions.height,
16126
-			l = item.left,
16127
-			r = l + item.width,
16128
-			t = item.top,
16129
-			b = t + item.height,
16130
-			dyClick = this.offset.click.top,
16131
-			dxClick = this.offset.click.left,
16132
-			isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t &&
16133
-				( y1 + dyClick ) < b ),
16134
-			isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l &&
16135
-				( x1 + dxClick ) < r ),
16136
-			isOverElement = isOverElementHeight && isOverElementWidth;
16137
-
16138
-		if ( this.options.tolerance === "pointer" ||
16139
-			this.options.forcePointerForContainers ||
16140
-			( this.options.tolerance !== "pointer" &&
16141
-				this.helperProportions[ this.floating ? "width" : "height" ] >
16142
-				item[ this.floating ? "width" : "height" ] )
16143
-		) {
16144
-			return isOverElement;
16145
-		} else {
16146
-
16147
-			return ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half
16148
-				x2 - ( this.helperProportions.width / 2 ) < r && // Left Half
16149
-				t < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half
16150
-				y2 - ( this.helperProportions.height / 2 ) < b ); // Top Half
16151
-
16152
-		}
16153
-	},
16154
-
16155
-	_intersectsWithPointer: function( item ) {
16156
-		var verticalDirection, horizontalDirection,
16157
-			isOverElementHeight = ( this.options.axis === "x" ) ||
16158
-				this._isOverAxis(
16159
-					this.positionAbs.top + this.offset.click.top, item.top, item.height ),
16160
-			isOverElementWidth = ( this.options.axis === "y" ) ||
16161
-				this._isOverAxis(
16162
-					this.positionAbs.left + this.offset.click.left, item.left, item.width ),
16163
-			isOverElement = isOverElementHeight && isOverElementWidth;
16164
-
16165
-		if ( !isOverElement ) {
16166
-			return false;
16167
-		}
16168
-
16169
-		verticalDirection = this.dragDirection.vertical;
16170
-		horizontalDirection = this.dragDirection.horizontal;
16171
-
16172
-		return this.floating ?
16173
-			( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 ) :
16174
-			( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );
16175
-
16176
-	},
16177
-
16178
-	_intersectsWithSides: function( item ) {
16179
-
16180
-		var isOverBottomHalf = this._isOverAxis( this.positionAbs.top +
16181
-				this.offset.click.top, item.top + ( item.height / 2 ), item.height ),
16182
-			isOverRightHalf = this._isOverAxis( this.positionAbs.left +
16183
-				this.offset.click.left, item.left + ( item.width / 2 ), item.width ),
16184
-			verticalDirection = this.dragDirection.vertical,
16185
-			horizontalDirection = this.dragDirection.horizontal;
16186
-
16187
-		if ( this.floating && horizontalDirection ) {
16188
-			return ( ( horizontalDirection === "right" && isOverRightHalf ) ||
16189
-				( horizontalDirection === "left" && !isOverRightHalf ) );
16190
-		} else {
16191
-			return verticalDirection && ( ( verticalDirection === "down" && isOverBottomHalf ) ||
16192
-				( verticalDirection === "up" && !isOverBottomHalf ) );
16193
-		}
16194
-
16195
-	},
16196
-
16197
-	_getDragVerticalDirection: function() {
16198
-		var delta = this.positionAbs.top - this.lastPositionAbs.top;
16199
-		return delta !== 0 && ( delta > 0 ? "down" : "up" );
16200
-	},
16201
-
16202
-	_getDragHorizontalDirection: function() {
16203
-		var delta = this.positionAbs.left - this.lastPositionAbs.left;
16204
-		return delta !== 0 && ( delta > 0 ? "right" : "left" );
16205
-	},
16206
-
16207
-	refresh: function( event ) {
16208
-		this._refreshItems( event );
16209
-		this._setHandleClassName();
16210
-		this.refreshPositions();
16211
-		return this;
16212
-	},
16213
-
16214
-	_connectWith: function() {
16215
-		var options = this.options;
16216
-		return options.connectWith.constructor === String ?
16217
-			[ options.connectWith ] :
16218
-			options.connectWith;
16219
-	},
16220
-
16221
-	_getItemsAsjQuery: function( connected ) {
16222
-
16223
-		var i, j, cur, inst,
16224
-			items = [],
16225
-			queries = [],
16226
-			connectWith = this._connectWith();
16227
-
16228
-		if ( connectWith && connected ) {
16229
-			for ( i = connectWith.length - 1; i >= 0; i-- ) {
16230
-				cur = $( connectWith[ i ], this.document[ 0 ] );
16231
-				for ( j = cur.length - 1; j >= 0; j-- ) {
16232
-					inst = $.data( cur[ j ], this.widgetFullName );
16233
-					if ( inst && inst !== this && !inst.options.disabled ) {
16234
-						queries.push( [ typeof inst.options.items === "function" ?
16235
-							inst.options.items.call( inst.element ) :
16236
-							$( inst.options.items, inst.element )
16237
-								.not( ".ui-sortable-helper" )
16238
-								.not( ".ui-sortable-placeholder" ), inst ] );
16239
-					}
16240
-				}
16241
-			}
16242
-		}
16243
-
16244
-		queries.push( [ typeof this.options.items === "function" ?
16245
-			this.options.items
16246
-				.call( this.element, null, { options: this.options, item: this.currentItem } ) :
16247
-			$( this.options.items, this.element )
16248
-				.not( ".ui-sortable-helper" )
16249
-				.not( ".ui-sortable-placeholder" ), this ] );
16250
-
16251
-		function addItems() {
16252
-			items.push( this );
16253
-		}
16254
-		for ( i = queries.length - 1; i >= 0; i-- ) {
16255
-			queries[ i ][ 0 ].each( addItems );
16256
-		}
16257
-
16258
-		return $( items );
16259
-
16260
-	},
16261
-
16262
-	_removeCurrentsFromItems: function() {
16263
-
16264
-		var list = this.currentItem.find( ":data(" + this.widgetName + "-item)" );
16265
-
16266
-		this.items = $.grep( this.items, function( item ) {
16267
-			for ( var j = 0; j < list.length; j++ ) {
16268
-				if ( list[ j ] === item.item[ 0 ] ) {
16269
-					return false;
16270
-				}
16271
-			}
16272
-			return true;
16273
-		} );
16274
-
16275
-	},
16276
-
16277
-	_refreshItems: function( event ) {
16278
-
16279
-		this.items = [];
16280
-		this.containers = [ this ];
16281
-
16282
-		var i, j, cur, inst, targetData, _queries, item, queriesLength,
16283
-			items = this.items,
16284
-			queries = [ [ typeof this.options.items === "function" ?
16285
-				this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :
16286
-				$( this.options.items, this.element ), this ] ],
16287
-			connectWith = this._connectWith();
16288
-
16289
-		//Shouldn't be run the first time through due to massive slow-down
16290
-		if ( connectWith && this.ready ) {
16291
-			for ( i = connectWith.length - 1; i >= 0; i-- ) {
16292
-				cur = $( connectWith[ i ], this.document[ 0 ] );
16293
-				for ( j = cur.length - 1; j >= 0; j-- ) {
16294
-					inst = $.data( cur[ j ], this.widgetFullName );
16295
-					if ( inst && inst !== this && !inst.options.disabled ) {
16296
-						queries.push( [ typeof inst.options.items === "function" ?
16297
-							inst.options.items
16298
-								.call( inst.element[ 0 ], event, { item: this.currentItem } ) :
16299
-							$( inst.options.items, inst.element ), inst ] );
16300
-						this.containers.push( inst );
16301
-					}
16302
-				}
16303
-			}
16304
-		}
16305
-
16306
-		for ( i = queries.length - 1; i >= 0; i-- ) {
16307
-			targetData = queries[ i ][ 1 ];
16308
-			_queries = queries[ i ][ 0 ];
16309
-
16310
-			for ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {
16311
-				item = $( _queries[ j ] );
16312
-
16313
-				// Data for target checking (mouse manager)
16314
-				item.data( this.widgetName + "-item", targetData );
16315
-
16316
-				items.push( {
16317
-					item: item,
16318
-					instance: targetData,
16319
-					width: 0, height: 0,
16320
-					left: 0, top: 0
16321
-				} );
16322
-			}
16323
-		}
16324
-
16325
-	},
16326
-
16327
-	_refreshItemPositions: function( fast ) {
16328
-		var i, item, t, p;
16329
-
16330
-		for ( i = this.items.length - 1; i >= 0; i-- ) {
16331
-			item = this.items[ i ];
16332
-
16333
-			//We ignore calculating positions of all connected containers when we're not over them
16334
-			if ( this.currentContainer && item.instance !== this.currentContainer &&
16335
-					item.item[ 0 ] !== this.currentItem[ 0 ] ) {
16336
-				continue;
16337
-			}
16338
-
16339
-			t = this.options.toleranceElement ?
16340
-				$( this.options.toleranceElement, item.item ) :
16341
-				item.item;
16342
-
16343
-			if ( !fast ) {
16344
-				item.width = t.outerWidth();
16345
-				item.height = t.outerHeight();
16346
-			}
16347
-
16348
-			p = t.offset();
16349
-			item.left = p.left;
16350
-			item.top = p.top;
16351
-		}
16352
-	},
16353
-
16354
-	refreshPositions: function( fast ) {
16355
-
16356
-		// Determine whether items are being displayed horizontally
16357
-		this.floating = this.items.length ?
16358
-			this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
16359
-			false;
16360
-
16361
-		// This has to be redone because due to the item being moved out/into the offsetParent,
16362
-		// the offsetParent's position will change
16363
-		if ( this.offsetParent && this.helper ) {
16364
-			this.offset.parent = this._getParentOffset();
16365
-		}
16366
-
16367
-		this._refreshItemPositions( fast );
16368
-
16369
-		var i, p;
16370
-
16371
-		if ( this.options.custom && this.options.custom.refreshContainers ) {
16372
-			this.options.custom.refreshContainers.call( this );
16373
-		} else {
16374
-			for ( i = this.containers.length - 1; i >= 0; i-- ) {
16375
-				p = this.containers[ i ].element.offset();
16376
-				this.containers[ i ].containerCache.left = p.left;
16377
-				this.containers[ i ].containerCache.top = p.top;
16378
-				this.containers[ i ].containerCache.width =
16379
-					this.containers[ i ].element.outerWidth();
16380
-				this.containers[ i ].containerCache.height =
16381
-					this.containers[ i ].element.outerHeight();
16382
-			}
16383
-		}
16384
-
16385
-		return this;
16386
-	},
16387
-
16388
-	_createPlaceholder: function( that ) {
16389
-		that = that || this;
16390
-		var className, nodeName,
16391
-			o = that.options;
16392
-
16393
-		if ( !o.placeholder || o.placeholder.constructor === String ) {
16394
-			className = o.placeholder;
16395
-			nodeName = that.currentItem[ 0 ].nodeName.toLowerCase();
16396
-			o.placeholder = {
16397
-				element: function() {
16398
-
16399
-					var element = $( "<" + nodeName + ">", that.document[ 0 ] );
16400
-
16401
-					that._addClass( element, "ui-sortable-placeholder",
16402
-							className || that.currentItem[ 0 ].className )
16403
-						._removeClass( element, "ui-sortable-helper" );
16404
-
16405
-					if ( nodeName === "tbody" ) {
16406
-						that._createTrPlaceholder(
16407
-							that.currentItem.find( "tr" ).eq( 0 ),
16408
-							$( "<tr>", that.document[ 0 ] ).appendTo( element )
16409
-						);
16410
-					} else if ( nodeName === "tr" ) {
16411
-						that._createTrPlaceholder( that.currentItem, element );
16412
-					} else if ( nodeName === "img" ) {
16413
-						element.attr( "src", that.currentItem.attr( "src" ) );
16414
-					}
16415
-
16416
-					if ( !className ) {
16417
-						element.css( "visibility", "hidden" );
16418
-					}
16419
-
16420
-					return element;
16421
-				},
16422
-				update: function( container, p ) {
16423
-
16424
-					// 1. If a className is set as 'placeholder option, we don't force sizes -
16425
-					// the class is responsible for that
16426
-					// 2. The option 'forcePlaceholderSize can be enabled to force it even if a
16427
-					// class name is specified
16428
-					if ( className && !o.forcePlaceholderSize ) {
16429
-						return;
16430
-					}
16431
-
16432
-					// If the element doesn't have a actual height or width by itself (without
16433
-					// styles coming from a stylesheet), it receives the inline height and width
16434
-					// from the dragged item. Or, if it's a tbody or tr, it's going to have a height
16435
-					// anyway since we're populating them with <td>s above, but they're unlikely to
16436
-					// be the correct height on their own if the row heights are dynamic, so we'll
16437
-					// always assign the height of the dragged item given forcePlaceholderSize
16438
-					// is true.
16439
-					if ( !p.height() || ( o.forcePlaceholderSize &&
16440
-							( nodeName === "tbody" || nodeName === "tr" ) ) ) {
16441
-						p.height(
16442
-							that.currentItem.innerHeight() -
16443
-							parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) -
16444
-							parseInt( that.currentItem.css( "paddingBottom" ) || 0, 10 ) );
16445
-					}
16446
-					if ( !p.width() ) {
16447
-						p.width(
16448
-							that.currentItem.innerWidth() -
16449
-							parseInt( that.currentItem.css( "paddingLeft" ) || 0, 10 ) -
16450
-							parseInt( that.currentItem.css( "paddingRight" ) || 0, 10 ) );
16451
-					}
16452
-				}
16453
-			};
16454
-		}
16455
-
16456
-		//Create the placeholder
16457
-		that.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );
16458
-
16459
-		//Append it after the actual current item
16460
-		that.currentItem.after( that.placeholder );
16461
-
16462
-		//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
16463
-		o.placeholder.update( that, that.placeholder );
16464
-
16465
-	},
16466
-
16467
-	_createTrPlaceholder: function( sourceTr, targetTr ) {
16468
-		var that = this;
16469
-
16470
-		sourceTr.children().each( function() {
16471
-			$( "<td>&#160;</td>", that.document[ 0 ] )
16472
-				.attr( "colspan", $( this ).attr( "colspan" ) || 1 )
16473
-				.appendTo( targetTr );
16474
-		} );
16475
-	},
16476
-
16477
-	_contactContainers: function( event ) {
16478
-		var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,
16479
-			floating, axis,
16480
-			innermostContainer = null,
16481
-			innermostIndex = null;
16482
-
16483
-		// Get innermost container that intersects with item
16484
-		for ( i = this.containers.length - 1; i >= 0; i-- ) {
16485
-
16486
-			// Never consider a container that's located within the item itself
16487
-			if ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {
16488
-				continue;
16489
-			}
16490
-
16491
-			if ( this._intersectsWith( this.containers[ i ].containerCache ) ) {
16492
-
16493
-				// If we've already found a container and it's more "inner" than this, then continue
16494
-				if ( innermostContainer &&
16495
-						$.contains(
16496
-							this.containers[ i ].element[ 0 ],
16497
-							innermostContainer.element[ 0 ] ) ) {
16498
-					continue;
16499
-				}
16500
-
16501
-				innermostContainer = this.containers[ i ];
16502
-				innermostIndex = i;
16503
-
16504
-			} else {
16505
-
16506
-				// container doesn't intersect. trigger "out" event if necessary
16507
-				if ( this.containers[ i ].containerCache.over ) {
16508
-					this.containers[ i ]._trigger( "out", event, this._uiHash( this ) );
16509
-					this.containers[ i ].containerCache.over = 0;
16510
-				}
16511
-			}
16512
-
16513
-		}
16514
-
16515
-		// If no intersecting containers found, return
16516
-		if ( !innermostContainer ) {
16517
-			return;
16518
-		}
16519
-
16520
-		// Move the item into the container if it's not there already
16521
-		if ( this.containers.length === 1 ) {
16522
-			if ( !this.containers[ innermostIndex ].containerCache.over ) {
16523
-				this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
16524
-				this.containers[ innermostIndex ].containerCache.over = 1;
16525
-			}
16526
-		} else {
16527
-
16528
-			// When entering a new container, we will find the item with the least distance and
16529
-			// append our item near it
16530
-			dist = 10000;
16531
-			itemWithLeastDistance = null;
16532
-			floating = innermostContainer.floating || this._isFloating( this.currentItem );
16533
-			posProperty = floating ? "left" : "top";
16534
-			sizeProperty = floating ? "width" : "height";
16535
-			axis = floating ? "pageX" : "pageY";
16536
-
16537
-			for ( j = this.items.length - 1; j >= 0; j-- ) {
16538
-				if ( !$.contains(
16539
-						this.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )
16540
-				) {
16541
-					continue;
16542
-				}
16543
-				if ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {
16544
-					continue;
16545
-				}
16546
-
16547
-				cur = this.items[ j ].item.offset()[ posProperty ];
16548
-				nearBottom = false;
16549
-				if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {
16550
-					nearBottom = true;
16551
-				}
16552
-
16553
-				if ( Math.abs( event[ axis ] - cur ) < dist ) {
16554
-					dist = Math.abs( event[ axis ] - cur );
16555
-					itemWithLeastDistance = this.items[ j ];
16556
-					this.direction = nearBottom ? "up" : "down";
16557
-				}
16558
-			}
16559
-
16560
-			//Check if dropOnEmpty is enabled
16561
-			if ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {
16562
-				return;
16563
-			}
16564
-
16565
-			if ( this.currentContainer === this.containers[ innermostIndex ] ) {
16566
-				if ( !this.currentContainer.containerCache.over ) {
16567
-					this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() );
16568
-					this.currentContainer.containerCache.over = 1;
16569
-				}
16570
-				return;
16571
-			}
16572
-
16573
-			if ( itemWithLeastDistance ) {
16574
-				this._rearrange( event, itemWithLeastDistance, null, true );
16575
-			} else {
16576
-				this._rearrange( event, null, this.containers[ innermostIndex ].element, true );
16577
-			}
16578
-			this._trigger( "change", event, this._uiHash() );
16579
-			this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) );
16580
-			this.currentContainer = this.containers[ innermostIndex ];
16581
-
16582
-			//Update the placeholder
16583
-			this.options.placeholder.update( this.currentContainer, this.placeholder );
16584
-
16585
-			//Update scrollParent
16586
-			this.scrollParent = this.placeholder.scrollParent();
16587
-
16588
-			//Update overflowOffset
16589
-			if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
16590
-					this.scrollParent[ 0 ].tagName !== "HTML" ) {
16591
-				this.overflowOffset = this.scrollParent.offset();
16592
-			}
16593
-
16594
-			this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
16595
-			this.containers[ innermostIndex ].containerCache.over = 1;
16596
-		}
16597
-
16598
-	},
16599
-
16600
-	_createHelper: function( event ) {
16601
-
16602
-		var o = this.options,
16603
-			helper = typeof o.helper === "function" ?
16604
-				$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :
16605
-				( o.helper === "clone" ? this.currentItem.clone() : this.currentItem );
16606
-
16607
-		//Add the helper to the DOM if that didn't happen already
16608
-		if ( !helper.parents( "body" ).length ) {
16609
-			this.appendTo[ 0 ].appendChild( helper[ 0 ] );
16610
-		}
16611
-
16612
-		if ( helper[ 0 ] === this.currentItem[ 0 ] ) {
16613
-			this._storedCSS = {
16614
-				width: this.currentItem[ 0 ].style.width,
16615
-				height: this.currentItem[ 0 ].style.height,
16616
-				position: this.currentItem.css( "position" ),
16617
-				top: this.currentItem.css( "top" ),
16618
-				left: this.currentItem.css( "left" )
16619
-			};
16620
-		}
16621
-
16622
-		if ( !helper[ 0 ].style.width || o.forceHelperSize ) {
16623
-			helper.width( this.currentItem.width() );
16624
-		}
16625
-		if ( !helper[ 0 ].style.height || o.forceHelperSize ) {
16626
-			helper.height( this.currentItem.height() );
16627
-		}
16628
-
16629
-		return helper;
16630
-
16631
-	},
16632
-
16633
-	_adjustOffsetFromHelper: function( obj ) {
16634
-		if ( typeof obj === "string" ) {
16635
-			obj = obj.split( " " );
16636
-		}
16637
-		if ( Array.isArray( obj ) ) {
16638
-			obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
16639
-		}
16640
-		if ( "left" in obj ) {
16641
-			this.offset.click.left = obj.left + this.margins.left;
16642
-		}
16643
-		if ( "right" in obj ) {
16644
-			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
16645
-		}
16646
-		if ( "top" in obj ) {
16647
-			this.offset.click.top = obj.top + this.margins.top;
16648
-		}
16649
-		if ( "bottom" in obj ) {
16650
-			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
16651
-		}
16652
-	},
16653
-
16654
-	_getParentOffset: function() {
16655
-
16656
-		//Get the offsetParent and cache its position
16657
-		this.offsetParent = this.helper.offsetParent();
16658
-		var po = this.offsetParent.offset();
16659
-
16660
-		// This is a special case where we need to modify a offset calculated on start, since the
16661
-		// following happened:
16662
-		// 1. The position of the helper is absolute, so it's position is calculated based on the
16663
-		// next positioned parent
16664
-		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't
16665
-		// the document, which means that the scroll is included in the initial calculation of the
16666
-		// offset of the parent, and never recalculated upon drag
16667
-		if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&
16668
-				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {
16669
-			po.left += this.scrollParent.scrollLeft();
16670
-			po.top += this.scrollParent.scrollTop();
16671
-		}
16672
-
16673
-		// This needs to be actually done for all browsers, since pageX/pageY includes this
16674
-		// information with an ugly IE fix
16675
-		if ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||
16676
-				( this.offsetParent[ 0 ].tagName &&
16677
-				this.offsetParent[ 0 ].tagName.toLowerCase() === "html" && $.ui.ie ) ) {
16678
-			po = { top: 0, left: 0 };
16679
-		}
16680
-
16681
-		return {
16682
-			top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ),
16683
-			left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 )
16684
-		};
16685
-
16686
-	},
16687
-
16688
-	_getRelativeOffset: function() {
16689
-
16690
-		if ( this.cssPosition === "relative" ) {
16691
-			var p = this.currentItem.position();
16692
-			return {
16693
-				top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) +
16694
-					this.scrollParent.scrollTop(),
16695
-				left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) +
16696
-					this.scrollParent.scrollLeft()
16697
-			};
16698
-		} else {
16699
-			return { top: 0, left: 0 };
16700
-		}
16701
-
16702
-	},
16703
-
16704
-	_cacheMargins: function() {
16705
-		this.margins = {
16706
-			left: ( parseInt( this.currentItem.css( "marginLeft" ), 10 ) || 0 ),
16707
-			top: ( parseInt( this.currentItem.css( "marginTop" ), 10 ) || 0 )
16708
-		};
16709
-	},
16710
-
16711
-	_cacheHelperProportions: function() {
16712
-		this.helperProportions = {
16713
-			width: this.helper.outerWidth(),
16714
-			height: this.helper.outerHeight()
16715
-		};
16716
-	},
16717
-
16718
-	_setContainment: function() {
16719
-
16720
-		var ce, co, over,
16721
-			o = this.options;
16722
-		if ( o.containment === "parent" ) {
16723
-			o.containment = this.helper[ 0 ].parentNode;
16724
-		}
16725
-		if ( o.containment === "document" || o.containment === "window" ) {
16726
-			this.containment = [
16727
-				0 - this.offset.relative.left - this.offset.parent.left,
16728
-				0 - this.offset.relative.top - this.offset.parent.top,
16729
-				o.containment === "document" ?
16730
-					this.document.width() :
16731
-					this.window.width() - this.helperProportions.width - this.margins.left,
16732
-				( o.containment === "document" ?
16733
-					( this.document.height() || document.body.parentNode.scrollHeight ) :
16734
-					this.window.height() || this.document[ 0 ].body.parentNode.scrollHeight
16735
-				) - this.helperProportions.height - this.margins.top
16736
-			];
16737
-		}
16738
-
16739
-		if ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {
16740
-			ce = $( o.containment )[ 0 ];
16741
-			co = $( o.containment ).offset();
16742
-			over = ( $( ce ).css( "overflow" ) !== "hidden" );
16743
-
16744
-			this.containment = [
16745
-				co.left + ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) +
16746
-					( parseInt( $( ce ).css( "paddingLeft" ), 10 ) || 0 ) - this.margins.left,
16747
-				co.top + ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) +
16748
-					( parseInt( $( ce ).css( "paddingTop" ), 10 ) || 0 ) - this.margins.top,
16749
-				co.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
16750
-					( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) -
16751
-					( parseInt( $( ce ).css( "paddingRight" ), 10 ) || 0 ) -
16752
-					this.helperProportions.width - this.margins.left,
16753
-				co.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
16754
-					( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) -
16755
-					( parseInt( $( ce ).css( "paddingBottom" ), 10 ) || 0 ) -
16756
-					this.helperProportions.height - this.margins.top
16757
-			];
16758
-		}
16759
-
16760
-	},
16761
-
16762
-	_convertPositionTo: function( d, pos ) {
16763
-
16764
-		if ( !pos ) {
16765
-			pos = this.position;
16766
-		}
16767
-		var mod = d === "absolute" ? 1 : -1,
16768
-			scroll = this.cssPosition === "absolute" &&
16769
-				!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
16770
-				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?
16771
-					this.offsetParent :
16772
-					this.scrollParent,
16773
-			scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );
16774
-
16775
-		return {
16776
-			top: (
16777
-
16778
-				// The absolute mouse position
16779
-				pos.top	+
16780
-
16781
-				// Only for relative positioned nodes: Relative offset from element to offset parent
16782
-				this.offset.relative.top * mod +
16783
-
16784
-				// The offsetParent's offset without borders (offset + border)
16785
-				this.offset.parent.top * mod -
16786
-				( ( this.cssPosition === "fixed" ?
16787
-					-this.scrollParent.scrollTop() :
16788
-					( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )
16789
-			),
16790
-			left: (
16791
-
16792
-				// The absolute mouse position
16793
-				pos.left +
16794
-
16795
-				// Only for relative positioned nodes: Relative offset from element to offset parent
16796
-				this.offset.relative.left * mod +
16797
-
16798
-				// The offsetParent's offset without borders (offset + border)
16799
-				this.offset.parent.left * mod	-
16800
-				( ( this.cssPosition === "fixed" ?
16801
-					-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :
16802
-					scroll.scrollLeft() ) * mod )
16803
-			)
16804
-		};
16805
-
16806
-	},
16807
-
16808
-	_generatePosition: function( event ) {
16809
-
16810
-		var top, left,
16811
-			o = this.options,
16812
-			pageX = event.pageX,
16813
-			pageY = event.pageY,
16814
-			scroll = this.cssPosition === "absolute" &&
16815
-				!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
16816
-				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?
16817
-					this.offsetParent :
16818
-					this.scrollParent,
16819
-				scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );
16820
-
16821
-		// This is another very weird special case that only happens for relative elements:
16822
-		// 1. If the css position is relative
16823
-		// 2. and the scroll parent is the document or similar to the offset parent
16824
-		// we have to refresh the relative offset during the scroll so there are no jumps
16825
-		if ( this.cssPosition === "relative" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
16826
-				this.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {
16827
-			this.offset.relative = this._getRelativeOffset();
16828
-		}
16829
-
16830
-		/*
16831
-		 * - Position constraining -
16832
-		 * Constrain the position to a mix of grid, containment.
16833
-		 */
16834
-
16835
-		if ( this.originalPosition ) { //If we are not dragging yet, we won't check for options
16836
-
16837
-			if ( this.containment ) {
16838
-				if ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {
16839
-					pageX = this.containment[ 0 ] + this.offset.click.left;
16840
-				}
16841
-				if ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {
16842
-					pageY = this.containment[ 1 ] + this.offset.click.top;
16843
-				}
16844
-				if ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {
16845
-					pageX = this.containment[ 2 ] + this.offset.click.left;
16846
-				}
16847
-				if ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {
16848
-					pageY = this.containment[ 3 ] + this.offset.click.top;
16849
-				}
16850
-			}
16851
-
16852
-			if ( o.grid ) {
16853
-				top = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /
16854
-					o.grid[ 1 ] ) * o.grid[ 1 ];
16855
-				pageY = this.containment ?
16856
-					( ( top - this.offset.click.top >= this.containment[ 1 ] &&
16857
-						top - this.offset.click.top <= this.containment[ 3 ] ) ?
16858
-							top :
16859
-							( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?
16860
-								top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :
16861
-								top;
16862
-
16863
-				left = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /
16864
-					o.grid[ 0 ] ) * o.grid[ 0 ];
16865
-				pageX = this.containment ?
16866
-					( ( left - this.offset.click.left >= this.containment[ 0 ] &&
16867
-						left - this.offset.click.left <= this.containment[ 2 ] ) ?
16868
-							left :
16869
-							( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?
16870
-								left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :
16871
-								left;
16872
-			}
16873
-
16874
-		}
16875
-
16876
-		return {
16877
-			top: (
16878
-
16879
-				// The absolute mouse position
16880
-				pageY -
16881
-
16882
-				// Click offset (relative to the element)
16883
-				this.offset.click.top -
16884
-
16885
-				// Only for relative positioned nodes: Relative offset from element to offset parent
16886
-				this.offset.relative.top -
16887
-
16888
-				// The offsetParent's offset without borders (offset + border)
16889
-				this.offset.parent.top +
16890
-				( ( this.cssPosition === "fixed" ?
16891
-					-this.scrollParent.scrollTop() :
16892
-					( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )
16893
-			),
16894
-			left: (
16895
-
16896
-				// The absolute mouse position
16897
-				pageX -
16898
-
16899
-				// Click offset (relative to the element)
16900
-				this.offset.click.left -
16901
-
16902
-				// Only for relative positioned nodes: Relative offset from element to offset parent
16903
-				this.offset.relative.left -
16904
-
16905
-				// The offsetParent's offset without borders (offset + border)
16906
-				this.offset.parent.left +
16907
-				( ( this.cssPosition === "fixed" ?
16908
-					-this.scrollParent.scrollLeft() :
16909
-					scrollIsRootNode ? 0 : scroll.scrollLeft() ) )
16910
-			)
16911
-		};
16912
-
16913
-	},
16914
-
16915
-	_rearrange: function( event, i, a, hardRefresh ) {
16916
-
16917
-		if ( a ) {
16918
-			a[ 0 ].appendChild( this.placeholder[ 0 ] );
16919
-		} else {
16920
-			i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],
16921
-				( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );
16922
-		}
16923
-
16924
-		//Various things done here to improve the performance:
16925
-		// 1. we create a setTimeout, that calls refreshPositions
16926
-		// 2. on the instance, we have a counter variable, that get's higher after every append
16927
-		// 3. on the local scope, we copy the counter variable, and check in the timeout,
16928
-		// if it's still the same
16929
-		// 4. this lets only the last addition to the timeout stack through
16930
-		this.counter = this.counter ? ++this.counter : 1;
16931
-		var counter = this.counter;
16932
-
16933
-		this._delay( function() {
16934
-			if ( counter === this.counter ) {
16935
-
16936
-				//Precompute after each DOM insertion, NOT on mousemove
16937
-				this.refreshPositions( !hardRefresh );
16938
-			}
16939
-		} );
16940
-
16941
-	},
16942
-
16943
-	_clear: function( event, noPropagation ) {
16944
-
16945
-		this.reverting = false;
16946
-
16947
-		// We delay all events that have to be triggered to after the point where the placeholder
16948
-		// has been removed and everything else normalized again
16949
-		var i,
16950
-			delayedTriggers = [];
16951
-
16952
-		// We first have to update the dom position of the actual currentItem
16953
-		// Note: don't do it if the current item is already removed (by a user), or it gets
16954
-		// reappended (see #4088)
16955
-		if ( !this._noFinalSort && this.currentItem.parent().length ) {
16956
-			this.placeholder.before( this.currentItem );
16957
-		}
16958
-		this._noFinalSort = null;
16959
-
16960
-		if ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {
16961
-			for ( i in this._storedCSS ) {
16962
-				if ( this._storedCSS[ i ] === "auto" || this._storedCSS[ i ] === "static" ) {
16963
-					this._storedCSS[ i ] = "";
16964
-				}
16965
-			}
16966
-			this.currentItem.css( this._storedCSS );
16967
-			this._removeClass( this.currentItem, "ui-sortable-helper" );
16968
-		} else {
16969
-			this.currentItem.show();
16970
-		}
16971
-
16972
-		if ( this.fromOutside && !noPropagation ) {
16973
-			delayedTriggers.push( function( event ) {
16974
-				this._trigger( "receive", event, this._uiHash( this.fromOutside ) );
16975
-			} );
16976
-		}
16977
-		if ( ( this.fromOutside ||
16978
-				this.domPosition.prev !==
16979
-				this.currentItem.prev().not( ".ui-sortable-helper" )[ 0 ] ||
16980
-				this.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {
16981
-
16982
-			// Trigger update callback if the DOM position has changed
16983
-			delayedTriggers.push( function( event ) {
16984
-				this._trigger( "update", event, this._uiHash() );
16985
-			} );
16986
-		}
16987
-
16988
-		// Check if the items Container has Changed and trigger appropriate
16989
-		// events.
16990
-		if ( this !== this.currentContainer ) {
16991
-			if ( !noPropagation ) {
16992
-				delayedTriggers.push( function( event ) {
16993
-					this._trigger( "remove", event, this._uiHash() );
16994
-				} );
16995
-				delayedTriggers.push( ( function( c ) {
16996
-					return function( event ) {
16997
-						c._trigger( "receive", event, this._uiHash( this ) );
16998
-					};
16999
-				} ).call( this, this.currentContainer ) );
17000
-				delayedTriggers.push( ( function( c ) {
17001
-					return function( event ) {
17002
-						c._trigger( "update", event, this._uiHash( this ) );
17003
-					};
17004
-				} ).call( this, this.currentContainer ) );
17005
-			}
17006
-		}
17007
-
17008
-		//Post events to containers
17009
-		function delayEvent( type, instance, container ) {
17010
-			return function( event ) {
17011
-				container._trigger( type, event, instance._uiHash( instance ) );
17012
-			};
17013
-		}
17014
-		for ( i = this.containers.length - 1; i >= 0; i-- ) {
17015
-			if ( !noPropagation ) {
17016
-				delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) );
17017
-			}
17018
-			if ( this.containers[ i ].containerCache.over ) {
17019
-				delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) );
17020
-				this.containers[ i ].containerCache.over = 0;
17021
-			}
17022
-		}
17023
-
17024
-		//Do what was originally in plugins
17025
-		if ( this.storedCursor ) {
17026
-			this.document.find( "body" ).css( "cursor", this.storedCursor );
17027
-			this.storedStylesheet.remove();
17028
-		}
17029
-		if ( this._storedOpacity ) {
17030
-			this.helper.css( "opacity", this._storedOpacity );
17031
-		}
17032
-		if ( this._storedZIndex ) {
17033
-			this.helper.css( "zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex );
17034
-		}
17035
-
17036
-		this.dragging = false;
17037
-
17038
-		if ( !noPropagation ) {
17039
-			this._trigger( "beforeStop", event, this._uiHash() );
17040
-		}
17041
-
17042
-		//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,
17043
-		// it unbinds ALL events from the original node!
17044
-		this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );
17045
-
17046
-		if ( !this.cancelHelperRemoval ) {
17047
-			if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
17048
-				this.helper.remove();
17049
-			}
17050
-			this.helper = null;
17051
-		}
17052
-
17053
-		if ( !noPropagation ) {
17054
-			for ( i = 0; i < delayedTriggers.length; i++ ) {
17055
-
17056
-				// Trigger all delayed events
17057
-				delayedTriggers[ i ].call( this, event );
17058
-			}
17059
-			this._trigger( "stop", event, this._uiHash() );
17060
-		}
17061
-
17062
-		this.fromOutside = false;
17063
-		return !this.cancelHelperRemoval;
17064
-
17065
-	},
17066
-
17067
-	_trigger: function() {
17068
-		if ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {
17069
-			this.cancel();
17070
-		}
17071
-	},
17072
-
17073
-	_uiHash: function( _inst ) {
17074
-		var inst = _inst || this;
17075
-		return {
17076
-			helper: inst.helper,
17077
-			placeholder: inst.placeholder || $( [] ),
17078
-			position: inst.position,
17079
-			originalPosition: inst.originalPosition,
17080
-			offset: inst.positionAbs,
17081
-			item: inst.currentItem,
17082
-			sender: _inst ? _inst.element : null
17083
-		};
17084
-	}
17085
-
17086
-} );
17087
-
17088
-
17089
-/*!
17090
- * jQuery UI Spinner 1.13.2
17091
- * http://jqueryui.com
17092
- *
17093
- * Copyright jQuery Foundation and other contributors
17094
- * Released under the MIT license.
17095
- * http://jquery.org/license
17096
- */
17097
-
17098
-//>>label: Spinner
17099
-//>>group: Widgets
17100
-//>>description: Displays buttons to easily input numbers via the keyboard or mouse.
17101
-//>>docs: http://api.jqueryui.com/spinner/
17102
-//>>demos: http://jqueryui.com/spinner/
17103
-//>>css.structure: ../../themes/base/core.css
17104
-//>>css.structure: ../../themes/base/spinner.css
17105
-//>>css.theme: ../../themes/base/theme.css
17106
-
17107
-
17108
-function spinnerModifier( fn ) {
17109
-	return function() {
17110
-		var previous = this.element.val();
17111
-		fn.apply( this, arguments );
17112
-		this._refresh();
17113
-		if ( previous !== this.element.val() ) {
17114
-			this._trigger( "change" );
17115
-		}
17116
-	};
17117
-}
17118
-
17119
-$.widget( "ui.spinner", {
17120
-	version: "1.13.2",
17121
-	defaultElement: "<input>",
17122
-	widgetEventPrefix: "spin",
17123
-	options: {
17124
-		classes: {
17125
-			"ui-spinner": "ui-corner-all",
17126
-			"ui-spinner-down": "ui-corner-br",
17127
-			"ui-spinner-up": "ui-corner-tr"
17128
-		},
17129
-		culture: null,
17130
-		icons: {
17131
-			down: "ui-icon-triangle-1-s",
17132
-			up: "ui-icon-triangle-1-n"
17133
-		},
17134
-		incremental: true,
17135
-		max: null,
17136
-		min: null,
17137
-		numberFormat: null,
17138
-		page: 10,
17139
-		step: 1,
17140
-
17141
-		change: null,
17142
-		spin: null,
17143
-		start: null,
17144
-		stop: null
17145
-	},
17146
-
17147
-	_create: function() {
17148
-
17149
-		// handle string values that need to be parsed
17150
-		this._setOption( "max", this.options.max );
17151
-		this._setOption( "min", this.options.min );
17152
-		this._setOption( "step", this.options.step );
17153
-
17154
-		// Only format if there is a value, prevents the field from being marked
17155
-		// as invalid in Firefox, see #9573.
17156
-		if ( this.value() !== "" ) {
17157
-
17158
-			// Format the value, but don't constrain.
17159
-			this._value( this.element.val(), true );
17160
-		}
17161
-
17162
-		this._draw();
17163
-		this._on( this._events );
17164
-		this._refresh();
17165
-
17166
-		// Turning off autocomplete prevents the browser from remembering the
17167
-		// value when navigating through history, so we re-enable autocomplete
17168
-		// if the page is unloaded before the widget is destroyed. #7790
17169
-		this._on( this.window, {
17170
-			beforeunload: function() {
17171
-				this.element.removeAttr( "autocomplete" );
17172
-			}
17173
-		} );
17174
-	},
17175
-
17176
-	_getCreateOptions: function() {
17177
-		var options = this._super();
17178
-		var element = this.element;
17179
-
17180
-		$.each( [ "min", "max", "step" ], function( i, option ) {
17181
-			var value = element.attr( option );
17182
-			if ( value != null && value.length ) {
17183
-				options[ option ] = value;
17184
-			}
17185
-		} );
17186
-
17187
-		return options;
17188
-	},
17189
-
17190
-	_events: {
17191
-		keydown: function( event ) {
17192
-			if ( this._start( event ) && this._keydown( event ) ) {
17193
-				event.preventDefault();
17194
-			}
17195
-		},
17196
-		keyup: "_stop",
17197
-		focus: function() {
17198
-			this.previous = this.element.val();
17199
-		},
17200
-		blur: function( event ) {
17201
-			if ( this.cancelBlur ) {
17202
-				delete this.cancelBlur;
17203
-				return;
17204
-			}
17205
-
17206
-			this._stop();
17207
-			this._refresh();
17208
-			if ( this.previous !== this.element.val() ) {
17209
-				this._trigger( "change", event );
17210
-			}
17211
-		},
17212
-		mousewheel: function( event, delta ) {
17213
-			var activeElement = $.ui.safeActiveElement( this.document[ 0 ] );
17214
-			var isActive = this.element[ 0 ] === activeElement;
17215
-
17216
-			if ( !isActive || !delta ) {
17217
-				return;
17218
-			}
17219
-
17220
-			if ( !this.spinning && !this._start( event ) ) {
17221
-				return false;
17222
-			}
17223
-
17224
-			this._spin( ( delta > 0 ? 1 : -1 ) * this.options.step, event );
17225
-			clearTimeout( this.mousewheelTimer );
17226
-			this.mousewheelTimer = this._delay( function() {
17227
-				if ( this.spinning ) {
17228
-					this._stop( event );
17229
-				}
17230
-			}, 100 );
17231
-			event.preventDefault();
17232
-		},
17233
-		"mousedown .ui-spinner-button": function( event ) {
17234
-			var previous;
17235
-
17236
-			// We never want the buttons to have focus; whenever the user is
17237
-			// interacting with the spinner, the focus should be on the input.
17238
-			// If the input is focused then this.previous is properly set from
17239
-			// when the input first received focus. If the input is not focused
17240
-			// then we need to set this.previous based on the value before spinning.
17241
-			previous = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ) ?
17242
-				this.previous : this.element.val();
17243
-			function checkFocus() {
17244
-				var isActive = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] );
17245
-				if ( !isActive ) {
17246
-					this.element.trigger( "focus" );
17247
-					this.previous = previous;
17248
-
17249
-					// support: IE
17250
-					// IE sets focus asynchronously, so we need to check if focus
17251
-					// moved off of the input because the user clicked on the button.
17252
-					this._delay( function() {
17253
-						this.previous = previous;
17254
-					} );
17255
-				}
17256
-			}
17257
-
17258
-			// Ensure focus is on (or stays on) the text field
17259
-			event.preventDefault();
17260
-			checkFocus.call( this );
17261
-
17262
-			// Support: IE
17263
-			// IE doesn't prevent moving focus even with event.preventDefault()
17264
-			// so we set a flag to know when we should ignore the blur event
17265
-			// and check (again) if focus moved off of the input.
17266
-			this.cancelBlur = true;
17267
-			this._delay( function() {
17268
-				delete this.cancelBlur;
17269
-				checkFocus.call( this );
17270
-			} );
17271
-
17272
-			if ( this._start( event ) === false ) {
17273
-				return;
17274
-			}
17275
-
17276
-			this._repeat( null, $( event.currentTarget )
17277
-				.hasClass( "ui-spinner-up" ) ? 1 : -1, event );
17278
-		},
17279
-		"mouseup .ui-spinner-button": "_stop",
17280
-		"mouseenter .ui-spinner-button": function( event ) {
17281
-
17282
-			// button will add ui-state-active if mouse was down while mouseleave and kept down
17283
-			if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {
17284
-				return;
17285
-			}
17286
-
17287
-			if ( this._start( event ) === false ) {
17288
-				return false;
17289
-			}
17290
-			this._repeat( null, $( event.currentTarget )
17291
-				.hasClass( "ui-spinner-up" ) ? 1 : -1, event );
17292
-		},
17293
-
17294
-		// TODO: do we really want to consider this a stop?
17295
-		// shouldn't we just stop the repeater and wait until mouseup before
17296
-		// we trigger the stop event?
17297
-		"mouseleave .ui-spinner-button": "_stop"
17298
-	},
17299
-
17300
-	// Support mobile enhanced option and make backcompat more sane
17301
-	_enhance: function() {
17302
-		this.uiSpinner = this.element
17303
-			.attr( "autocomplete", "off" )
17304
-			.wrap( "<span>" )
17305
-			.parent()
17306
-
17307
-				// Add buttons
17308
-				.append(
17309
-					"<a></a><a></a>"
17310
-				);
17311
-	},
17312
-
17313
-	_draw: function() {
17314
-		this._enhance();
17315
-
17316
-		this._addClass( this.uiSpinner, "ui-spinner", "ui-widget ui-widget-content" );
17317
-		this._addClass( "ui-spinner-input" );
17318
-
17319
-		this.element.attr( "role", "spinbutton" );
17320
-
17321
-		// Button bindings
17322
-		this.buttons = this.uiSpinner.children( "a" )
17323
-			.attr( "tabIndex", -1 )
17324
-			.attr( "aria-hidden", true )
17325
-			.button( {
17326
-				classes: {
17327
-					"ui-button": ""
17328
-				}
17329
-			} );
17330
-
17331
-		// TODO: Right now button does not support classes this is already updated in button PR
17332
-		this._removeClass( this.buttons, "ui-corner-all" );
17333
-
17334
-		this._addClass( this.buttons.first(), "ui-spinner-button ui-spinner-up" );
17335
-		this._addClass( this.buttons.last(), "ui-spinner-button ui-spinner-down" );
17336
-		this.buttons.first().button( {
17337
-			"icon": this.options.icons.up,
17338
-			"showLabel": false
17339
-		} );
17340
-		this.buttons.last().button( {
17341
-			"icon": this.options.icons.down,
17342
-			"showLabel": false
17343
-		} );
17344
-
17345
-		// IE 6 doesn't understand height: 50% for the buttons
17346
-		// unless the wrapper has an explicit height
17347
-		if ( this.buttons.height() > Math.ceil( this.uiSpinner.height() * 0.5 ) &&
17348
-				this.uiSpinner.height() > 0 ) {
17349
-			this.uiSpinner.height( this.uiSpinner.height() );
17350
-		}
17351
-	},
17352
-
17353
-	_keydown: function( event ) {
17354
-		var options = this.options,
17355
-			keyCode = $.ui.keyCode;
17356
-
17357
-		switch ( event.keyCode ) {
17358
-		case keyCode.UP:
17359
-			this._repeat( null, 1, event );
17360
-			return true;
17361
-		case keyCode.DOWN:
17362
-			this._repeat( null, -1, event );
17363
-			return true;
17364
-		case keyCode.PAGE_UP:
17365
-			this._repeat( null, options.page, event );
17366
-			return true;
17367
-		case keyCode.PAGE_DOWN:
17368
-			this._repeat( null, -options.page, event );
17369
-			return true;
17370
-		}
17371
-
17372
-		return false;
17373
-	},
17374
-
17375
-	_start: function( event ) {
17376
-		if ( !this.spinning && this._trigger( "start", event ) === false ) {
17377
-			return false;
17378
-		}
17379
-
17380
-		if ( !this.counter ) {
17381
-			this.counter = 1;
17382
-		}
17383
-		this.spinning = true;
17384
-		return true;
17385
-	},
17386
-
17387
-	_repeat: function( i, steps, event ) {
17388
-		i = i || 500;
17389
-
17390
-		clearTimeout( this.timer );
17391
-		this.timer = this._delay( function() {
17392
-			this._repeat( 40, steps, event );
17393
-		}, i );
17394
-
17395
-		this._spin( steps * this.options.step, event );
17396
-	},
17397
-
17398
-	_spin: function( step, event ) {
17399
-		var value = this.value() || 0;
17400
-
17401
-		if ( !this.counter ) {
17402
-			this.counter = 1;
17403
-		}
17404
-
17405
-		value = this._adjustValue( value + step * this._increment( this.counter ) );
17406
-
17407
-		if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false ) {
17408
-			this._value( value );
17409
-			this.counter++;
17410
-		}
17411
-	},
17412
-
17413
-	_increment: function( i ) {
17414
-		var incremental = this.options.incremental;
17415
-
17416
-		if ( incremental ) {
17417
-			return typeof incremental === "function" ?
17418
-				incremental( i ) :
17419
-				Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );
17420
-		}
17421
-
17422
-		return 1;
17423
-	},
17424
-
17425
-	_precision: function() {
17426
-		var precision = this._precisionOf( this.options.step );
17427
-		if ( this.options.min !== null ) {
17428
-			precision = Math.max( precision, this._precisionOf( this.options.min ) );
17429
-		}
17430
-		return precision;
17431
-	},
17432
-
17433
-	_precisionOf: function( num ) {
17434
-		var str = num.toString(),
17435
-			decimal = str.indexOf( "." );
17436
-		return decimal === -1 ? 0 : str.length - decimal - 1;
17437
-	},
17438
-
17439
-	_adjustValue: function( value ) {
17440
-		var base, aboveMin,
17441
-			options = this.options;
17442
-
17443
-		// Make sure we're at a valid step
17444
-		// - find out where we are relative to the base (min or 0)
17445
-		base = options.min !== null ? options.min : 0;
17446
-		aboveMin = value - base;
17447
-
17448
-		// - round to the nearest step
17449
-		aboveMin = Math.round( aboveMin / options.step ) * options.step;
17450
-
17451
-		// - rounding is based on 0, so adjust back to our base
17452
-		value = base + aboveMin;
17453
-
17454
-		// Fix precision from bad JS floating point math
17455
-		value = parseFloat( value.toFixed( this._precision() ) );
17456
-
17457
-		// Clamp the value
17458
-		if ( options.max !== null && value > options.max ) {
17459
-			return options.max;
17460
-		}
17461
-		if ( options.min !== null && value < options.min ) {
17462
-			return options.min;
17463
-		}
17464
-
17465
-		return value;
17466
-	},
17467
-
17468
-	_stop: function( event ) {
17469
-		if ( !this.spinning ) {
17470
-			return;
17471
-		}
17472
-
17473
-		clearTimeout( this.timer );
17474
-		clearTimeout( this.mousewheelTimer );
17475
-		this.counter = 0;
17476
-		this.spinning = false;
17477
-		this._trigger( "stop", event );
17478
-	},
17479
-
17480
-	_setOption: function( key, value ) {
17481
-		var prevValue, first, last;
17482
-
17483
-		if ( key === "culture" || key === "numberFormat" ) {
17484
-			prevValue = this._parse( this.element.val() );
17485
-			this.options[ key ] = value;
17486
-			this.element.val( this._format( prevValue ) );
17487
-			return;
17488
-		}
17489
-
17490
-		if ( key === "max" || key === "min" || key === "step" ) {
17491
-			if ( typeof value === "string" ) {
17492
-				value = this._parse( value );
17493
-			}
17494
-		}
17495
-		if ( key === "icons" ) {
17496
-			first = this.buttons.first().find( ".ui-icon" );
17497
-			this._removeClass( first, null, this.options.icons.up );
17498
-			this._addClass( first, null, value.up );
17499
-			last = this.buttons.last().find( ".ui-icon" );
17500
-			this._removeClass( last, null, this.options.icons.down );
17501
-			this._addClass( last, null, value.down );
17502
-		}
17503
-
17504
-		this._super( key, value );
17505
-	},
17506
-
17507
-	_setOptionDisabled: function( value ) {
17508
-		this._super( value );
17509
-
17510
-		this._toggleClass( this.uiSpinner, null, "ui-state-disabled", !!value );
17511
-		this.element.prop( "disabled", !!value );
17512
-		this.buttons.button( value ? "disable" : "enable" );
17513
-	},
17514
-
17515
-	_setOptions: spinnerModifier( function( options ) {
17516
-		this._super( options );
17517
-	} ),
17518
-
17519
-	_parse: function( val ) {
17520
-		if ( typeof val === "string" && val !== "" ) {
17521
-			val = window.Globalize && this.options.numberFormat ?
17522
-				Globalize.parseFloat( val, 10, this.options.culture ) : +val;
17523
-		}
17524
-		return val === "" || isNaN( val ) ? null : val;
17525
-	},
17526
-
17527
-	_format: function( value ) {
17528
-		if ( value === "" ) {
17529
-			return "";
17530
-		}
17531
-		return window.Globalize && this.options.numberFormat ?
17532
-			Globalize.format( value, this.options.numberFormat, this.options.culture ) :
17533
-			value;
17534
-	},
17535
-
17536
-	_refresh: function() {
17537
-		this.element.attr( {
17538
-			"aria-valuemin": this.options.min,
17539
-			"aria-valuemax": this.options.max,
17540
-
17541
-			// TODO: what should we do with values that can't be parsed?
17542
-			"aria-valuenow": this._parse( this.element.val() )
17543
-		} );
17544
-	},
17545
-
17546
-	isValid: function() {
17547
-		var value = this.value();
17548
-
17549
-		// Null is invalid
17550
-		if ( value === null ) {
17551
-			return false;
17552
-		}
17553
-
17554
-		// If value gets adjusted, it's invalid
17555
-		return value === this._adjustValue( value );
17556
-	},
17557
-
17558
-	// Update the value without triggering change
17559
-	_value: function( value, allowAny ) {
17560
-		var parsed;
17561
-		if ( value !== "" ) {
17562
-			parsed = this._parse( value );
17563
-			if ( parsed !== null ) {
17564
-				if ( !allowAny ) {
17565
-					parsed = this._adjustValue( parsed );
17566
-				}
17567
-				value = this._format( parsed );
17568
-			}
17569
-		}
17570
-		this.element.val( value );
17571
-		this._refresh();
17572
-	},
17573
-
17574
-	_destroy: function() {
17575
-		this.element
17576
-			.prop( "disabled", false )
17577
-			.removeAttr( "autocomplete role aria-valuemin aria-valuemax aria-valuenow" );
17578
-
17579
-		this.uiSpinner.replaceWith( this.element );
17580
-	},
17581
-
17582
-	stepUp: spinnerModifier( function( steps ) {
17583
-		this._stepUp( steps );
17584
-	} ),
17585
-	_stepUp: function( steps ) {
17586
-		if ( this._start() ) {
17587
-			this._spin( ( steps || 1 ) * this.options.step );
17588
-			this._stop();
17589
-		}
17590
-	},
17591
-
17592
-	stepDown: spinnerModifier( function( steps ) {
17593
-		this._stepDown( steps );
17594
-	} ),
17595
-	_stepDown: function( steps ) {
17596
-		if ( this._start() ) {
17597
-			this._spin( ( steps || 1 ) * -this.options.step );
17598
-			this._stop();
17599
-		}
17600
-	},
17601
-
17602
-	pageUp: spinnerModifier( function( pages ) {
17603
-		this._stepUp( ( pages || 1 ) * this.options.page );
17604
-	} ),
17605
-
17606
-	pageDown: spinnerModifier( function( pages ) {
17607
-		this._stepDown( ( pages || 1 ) * this.options.page );
17608
-	} ),
17609
-
17610
-	value: function( newVal ) {
17611
-		if ( !arguments.length ) {
17612
-			return this._parse( this.element.val() );
17613
-		}
17614
-		spinnerModifier( this._value ).call( this, newVal );
17615
-	},
17616
-
17617
-	widget: function() {
17618
-		return this.uiSpinner;
17619
-	}
17620
-} );
17621
-
17622
-// DEPRECATED
17623
-// TODO: switch return back to widget declaration at top of file when this is removed
17624
-if ( $.uiBackCompat !== false ) {
17625
-
17626
-	// Backcompat for spinner html extension points
17627
-	$.widget( "ui.spinner", $.ui.spinner, {
17628
-		_enhance: function() {
17629
-			this.uiSpinner = this.element
17630
-				.attr( "autocomplete", "off" )
17631
-				.wrap( this._uiSpinnerHtml() )
17632
-				.parent()
17633
-
17634
-					// Add buttons
17635
-					.append( this._buttonHtml() );
17636
-		},
17637
-		_uiSpinnerHtml: function() {
17638
-			return "<span>";
17639
-		},
17640
-
17641
-		_buttonHtml: function() {
17642
-			return "<a></a><a></a>";
17643
-		}
17644
-	} );
17645
-}
17646
-
17647
-var widgetsSpinner = $.ui.spinner;
17648
-
17649
-
17650
-/*!
17651
- * jQuery UI Tabs 1.13.2
17652
- * http://jqueryui.com
17653
- *
17654
- * Copyright jQuery Foundation and other contributors
17655
- * Released under the MIT license.
17656
- * http://jquery.org/license
17657
- */
17658
-
17659
-//>>label: Tabs
17660
-//>>group: Widgets
17661
-//>>description: Transforms a set of container elements into a tab structure.
17662
-//>>docs: http://api.jqueryui.com/tabs/
17663
-//>>demos: http://jqueryui.com/tabs/
17664
-//>>css.structure: ../../themes/base/core.css
17665
-//>>css.structure: ../../themes/base/tabs.css
17666
-//>>css.theme: ../../themes/base/theme.css
17667
-
17668
-
17669
-$.widget( "ui.tabs", {
17670
-	version: "1.13.2",
17671
-	delay: 300,
17672
-	options: {
17673
-		active: null,
17674
-		classes: {
17675
-			"ui-tabs": "ui-corner-all",
17676
-			"ui-tabs-nav": "ui-corner-all",
17677
-			"ui-tabs-panel": "ui-corner-bottom",
17678
-			"ui-tabs-tab": "ui-corner-top"
17679
-		},
17680
-		collapsible: false,
17681
-		event: "click",
17682
-		heightStyle: "content",
17683
-		hide: null,
17684
-		show: null,
17685
-
17686
-		// Callbacks
17687
-		activate: null,
17688
-		beforeActivate: null,
17689
-		beforeLoad: null,
17690
-		load: null
17691
-	},
17692
-
17693
-	_isLocal: ( function() {
17694
-		var rhash = /#.*$/;
17695
-
17696
-		return function( anchor ) {
17697
-			var anchorUrl, locationUrl;
17698
-
17699
-			anchorUrl = anchor.href.replace( rhash, "" );
17700
-			locationUrl = location.href.replace( rhash, "" );
17701
-
17702
-			// Decoding may throw an error if the URL isn't UTF-8 (#9518)
17703
-			try {
17704
-				anchorUrl = decodeURIComponent( anchorUrl );
17705
-			} catch ( error ) {}
17706
-			try {
17707
-				locationUrl = decodeURIComponent( locationUrl );
17708
-			} catch ( error ) {}
17709
-
17710
-			return anchor.hash.length > 1 && anchorUrl === locationUrl;
17711
-		};
17712
-	} )(),
17713
-
17714
-	_create: function() {
17715
-		var that = this,
17716
-			options = this.options;
17717
-
17718
-		this.running = false;
17719
-
17720
-		this._addClass( "ui-tabs", "ui-widget ui-widget-content" );
17721
-		this._toggleClass( "ui-tabs-collapsible", null, options.collapsible );
17722
-
17723
-		this._processTabs();
17724
-		options.active = this._initialActive();
17725
-
17726
-		// Take disabling tabs via class attribute from HTML
17727
-		// into account and update option properly.
17728
-		if ( Array.isArray( options.disabled ) ) {
17729
-			options.disabled = $.uniqueSort( options.disabled.concat(
17730
-				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
17731
-					return that.tabs.index( li );
17732
-				} )
17733
-			) ).sort();
17734
-		}
17735
-
17736
-		// Check for length avoids error when initializing empty list
17737
-		if ( this.options.active !== false && this.anchors.length ) {
17738
-			this.active = this._findActive( options.active );
17739
-		} else {
17740
-			this.active = $();
17741
-		}
17742
-
17743
-		this._refresh();
17744
-
17745
-		if ( this.active.length ) {
17746
-			this.load( options.active );
17747
-		}
17748
-	},
17749
-
17750
-	_initialActive: function() {
17751
-		var active = this.options.active,
17752
-			collapsible = this.options.collapsible,
17753
-			locationHash = location.hash.substring( 1 );
17754
-
17755
-		if ( active === null ) {
17756
-
17757
-			// check the fragment identifier in the URL
17758
-			if ( locationHash ) {
17759
-				this.tabs.each( function( i, tab ) {
17760
-					if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
17761
-						active = i;
17762
-						return false;
17763
-					}
17764
-				} );
17765
-			}
17766
-
17767
-			// Check for a tab marked active via a class
17768
-			if ( active === null ) {
17769
-				active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
17770
-			}
17771
-
17772
-			// No active tab, set to false
17773
-			if ( active === null || active === -1 ) {
17774
-				active = this.tabs.length ? 0 : false;
17775
-			}
17776
-		}
17777
-
17778
-		// Handle numbers: negative, out of range
17779
-		if ( active !== false ) {
17780
-			active = this.tabs.index( this.tabs.eq( active ) );
17781
-			if ( active === -1 ) {
17782
-				active = collapsible ? false : 0;
17783
-			}
17784
-		}
17785
-
17786
-		// Don't allow collapsible: false and active: false
17787
-		if ( !collapsible && active === false && this.anchors.length ) {
17788
-			active = 0;
17789
-		}
17790
-
17791
-		return active;
17792
-	},
17793
-
17794
-	_getCreateEventData: function() {
17795
-		return {
17796
-			tab: this.active,
17797
-			panel: !this.active.length ? $() : this._getPanelForTab( this.active )
17798
-		};
17799
-	},
17800
-
17801
-	_tabKeydown: function( event ) {
17802
-		var focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( "li" ),
17803
-			selectedIndex = this.tabs.index( focusedTab ),
17804
-			goingForward = true;
17805
-
17806
-		if ( this._handlePageNav( event ) ) {
17807
-			return;
17808
-		}
17809
-
17810
-		switch ( event.keyCode ) {
17811
-		case $.ui.keyCode.RIGHT:
17812
-		case $.ui.keyCode.DOWN:
17813
-			selectedIndex++;
17814
-			break;
17815
-		case $.ui.keyCode.UP:
17816
-		case $.ui.keyCode.LEFT:
17817
-			goingForward = false;
17818
-			selectedIndex--;
17819
-			break;
17820
-		case $.ui.keyCode.END:
17821
-			selectedIndex = this.anchors.length - 1;
17822
-			break;
17823
-		case $.ui.keyCode.HOME:
17824
-			selectedIndex = 0;
17825
-			break;
17826
-		case $.ui.keyCode.SPACE:
17827
-
17828
-			// Activate only, no collapsing
17829
-			event.preventDefault();
17830
-			clearTimeout( this.activating );
17831
-			this._activate( selectedIndex );
17832
-			return;
17833
-		case $.ui.keyCode.ENTER:
17834
-
17835
-			// Toggle (cancel delayed activation, allow collapsing)
17836
-			event.preventDefault();
17837
-			clearTimeout( this.activating );
17838
-
17839
-			// Determine if we should collapse or activate
17840
-			this._activate( selectedIndex === this.options.active ? false : selectedIndex );
17841
-			return;
17842
-		default:
17843
-			return;
17844
-		}
17845
-
17846
-		// Focus the appropriate tab, based on which key was pressed
17847
-		event.preventDefault();
17848
-		clearTimeout( this.activating );
17849
-		selectedIndex = this._focusNextTab( selectedIndex, goingForward );
17850
-
17851
-		// Navigating with control/command key will prevent automatic activation
17852
-		if ( !event.ctrlKey && !event.metaKey ) {
17853
-
17854
-			// Update aria-selected immediately so that AT think the tab is already selected.
17855
-			// Otherwise AT may confuse the user by stating that they need to activate the tab,
17856
-			// but the tab will already be activated by the time the announcement finishes.
17857
-			focusedTab.attr( "aria-selected", "false" );
17858
-			this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
17859
-
17860
-			this.activating = this._delay( function() {
17861
-				this.option( "active", selectedIndex );
17862
-			}, this.delay );
17863
-		}
17864
-	},
17865
-
17866
-	_panelKeydown: function( event ) {
17867
-		if ( this._handlePageNav( event ) ) {
17868
-			return;
17869
-		}
17870
-
17871
-		// Ctrl+up moves focus to the current tab
17872
-		if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
17873
-			event.preventDefault();
17874
-			this.active.trigger( "focus" );
17875
-		}
17876
-	},
17877
-
17878
-	// Alt+page up/down moves focus to the previous/next tab (and activates)
17879
-	_handlePageNav: function( event ) {
17880
-		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
17881
-			this._activate( this._focusNextTab( this.options.active - 1, false ) );
17882
-			return true;
17883
-		}
17884
-		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
17885
-			this._activate( this._focusNextTab( this.options.active + 1, true ) );
17886
-			return true;
17887
-		}
17888
-	},
17889
-
17890
-	_findNextTab: function( index, goingForward ) {
17891
-		var lastTabIndex = this.tabs.length - 1;
17892
-
17893
-		function constrain() {
17894
-			if ( index > lastTabIndex ) {
17895
-				index = 0;
17896
-			}
17897
-			if ( index < 0 ) {
17898
-				index = lastTabIndex;
17899
-			}
17900
-			return index;
17901
-		}
17902
-
17903
-		while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
17904
-			index = goingForward ? index + 1 : index - 1;
17905
-		}
17906
-
17907
-		return index;
17908
-	},
17909
-
17910
-	_focusNextTab: function( index, goingForward ) {
17911
-		index = this._findNextTab( index, goingForward );
17912
-		this.tabs.eq( index ).trigger( "focus" );
17913
-		return index;
17914
-	},
17915
-
17916
-	_setOption: function( key, value ) {
17917
-		if ( key === "active" ) {
17918
-
17919
-			// _activate() will handle invalid values and update this.options
17920
-			this._activate( value );
17921
-			return;
17922
-		}
17923
-
17924
-		this._super( key, value );
17925
-
17926
-		if ( key === "collapsible" ) {
17927
-			this._toggleClass( "ui-tabs-collapsible", null, value );
17928
-
17929
-			// Setting collapsible: false while collapsed; open first panel
17930
-			if ( !value && this.options.active === false ) {
17931
-				this._activate( 0 );
17932
-			}
17933
-		}
17934
-
17935
-		if ( key === "event" ) {
17936
-			this._setupEvents( value );
17937
-		}
17938
-
17939
-		if ( key === "heightStyle" ) {
17940
-			this._setupHeightStyle( value );
17941
-		}
17942
-	},
17943
-
17944
-	_sanitizeSelector: function( hash ) {
17945
-		return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
17946
-	},
17947
-
17948
-	refresh: function() {
17949
-		var options = this.options,
17950
-			lis = this.tablist.children( ":has(a[href])" );
17951
-
17952
-		// Get disabled tabs from class attribute from HTML
17953
-		// this will get converted to a boolean if needed in _refresh()
17954
-		options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
17955
-			return lis.index( tab );
17956
-		} );
17957
-
17958
-		this._processTabs();
17959
-
17960
-		// Was collapsed or no tabs
17961
-		if ( options.active === false || !this.anchors.length ) {
17962
-			options.active = false;
17963
-			this.active = $();
17964
-
17965
-		// was active, but active tab is gone
17966
-		} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
17967
-
17968
-			// all remaining tabs are disabled
17969
-			if ( this.tabs.length === options.disabled.length ) {
17970
-				options.active = false;
17971
-				this.active = $();
17972
-
17973
-			// activate previous tab
17974
-			} else {
17975
-				this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
17976
-			}
17977
-
17978
-		// was active, active tab still exists
17979
-		} else {
17980
-
17981
-			// make sure active index is correct
17982
-			options.active = this.tabs.index( this.active );
17983
-		}
17984
-
17985
-		this._refresh();
17986
-	},
17987
-
17988
-	_refresh: function() {
17989
-		this._setOptionDisabled( this.options.disabled );
17990
-		this._setupEvents( this.options.event );
17991
-		this._setupHeightStyle( this.options.heightStyle );
17992
-
17993
-		this.tabs.not( this.active ).attr( {
17994
-			"aria-selected": "false",
17995
-			"aria-expanded": "false",
17996
-			tabIndex: -1
17997
-		} );
17998
-		this.panels.not( this._getPanelForTab( this.active ) )
17999
-			.hide()
18000
-			.attr( {
18001
-				"aria-hidden": "true"
18002
-			} );
18003
-
18004
-		// Make sure one tab is in the tab order
18005
-		if ( !this.active.length ) {
18006
-			this.tabs.eq( 0 ).attr( "tabIndex", 0 );
18007
-		} else {
18008
-			this.active
18009
-				.attr( {
18010
-					"aria-selected": "true",
18011
-					"aria-expanded": "true",
18012
-					tabIndex: 0
18013
-				} );
18014
-			this._addClass( this.active, "ui-tabs-active", "ui-state-active" );
18015
-			this._getPanelForTab( this.active )
18016
-				.show()
18017
-				.attr( {
18018
-					"aria-hidden": "false"
18019
-				} );
18020
-		}
18021
-	},
18022
-
18023
-	_processTabs: function() {
18024
-		var that = this,
18025
-			prevTabs = this.tabs,
18026
-			prevAnchors = this.anchors,
18027
-			prevPanels = this.panels;
18028
-
18029
-		this.tablist = this._getList().attr( "role", "tablist" );
18030
-		this._addClass( this.tablist, "ui-tabs-nav",
18031
-			"ui-helper-reset ui-helper-clearfix ui-widget-header" );
18032
-
18033
-		// Prevent users from focusing disabled tabs via click
18034
-		this.tablist
18035
-			.on( "mousedown" + this.eventNamespace, "> li", function( event ) {
18036
-				if ( $( this ).is( ".ui-state-disabled" ) ) {
18037
-					event.preventDefault();
18038
-				}
18039
-			} )
18040
-
18041
-			// Support: IE <9
18042
-			// Preventing the default action in mousedown doesn't prevent IE
18043
-			// from focusing the element, so if the anchor gets focused, blur.
18044
-			// We don't have to worry about focusing the previously focused
18045
-			// element since clicking on a non-focusable element should focus
18046
-			// the body anyway.
18047
-			.on( "focus" + this.eventNamespace, ".ui-tabs-anchor", function() {
18048
-				if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
18049
-					this.blur();
18050
-				}
18051
-			} );
18052
-
18053
-		this.tabs = this.tablist.find( "> li:has(a[href])" )
18054
-			.attr( {
18055
-				role: "tab",
18056
-				tabIndex: -1
18057
-			} );
18058
-		this._addClass( this.tabs, "ui-tabs-tab", "ui-state-default" );
18059
-
18060
-		this.anchors = this.tabs.map( function() {
18061
-			return $( "a", this )[ 0 ];
18062
-		} )
18063
-			.attr( {
18064
-				tabIndex: -1
18065
-			} );
18066
-		this._addClass( this.anchors, "ui-tabs-anchor" );
18067
-
18068
-		this.panels = $();
18069
-
18070
-		this.anchors.each( function( i, anchor ) {
18071
-			var selector, panel, panelId,
18072
-				anchorId = $( anchor ).uniqueId().attr( "id" ),
18073
-				tab = $( anchor ).closest( "li" ),
18074
-				originalAriaControls = tab.attr( "aria-controls" );
18075
-
18076
-			// Inline tab
18077
-			if ( that._isLocal( anchor ) ) {
18078
-				selector = anchor.hash;
18079
-				panelId = selector.substring( 1 );
18080
-				panel = that.element.find( that._sanitizeSelector( selector ) );
18081
-
18082
-			// remote tab
18083
-			} else {
18084
-
18085
-				// If the tab doesn't already have aria-controls,
18086
-				// generate an id by using a throw-away element
18087
-				panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id;
18088
-				selector = "#" + panelId;
18089
-				panel = that.element.find( selector );
18090
-				if ( !panel.length ) {
18091
-					panel = that._createPanel( panelId );
18092
-					panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
18093
-				}
18094
-				panel.attr( "aria-live", "polite" );
18095
-			}
18096
-
18097
-			if ( panel.length ) {
18098
-				that.panels = that.panels.add( panel );
18099
-			}
18100
-			if ( originalAriaControls ) {
18101
-				tab.data( "ui-tabs-aria-controls", originalAriaControls );
18102
-			}
18103
-			tab.attr( {
18104
-				"aria-controls": panelId,
18105
-				"aria-labelledby": anchorId
18106
-			} );
18107
-			panel.attr( "aria-labelledby", anchorId );
18108
-		} );
18109
-
18110
-		this.panels.attr( "role", "tabpanel" );
18111
-		this._addClass( this.panels, "ui-tabs-panel", "ui-widget-content" );
18112
-
18113
-		// Avoid memory leaks (#10056)
18114
-		if ( prevTabs ) {
18115
-			this._off( prevTabs.not( this.tabs ) );
18116
-			this._off( prevAnchors.not( this.anchors ) );
18117
-			this._off( prevPanels.not( this.panels ) );
18118
-		}
18119
-	},
18120
-
18121
-	// Allow overriding how to find the list for rare usage scenarios (#7715)
18122
-	_getList: function() {
18123
-		return this.tablist || this.element.find( "ol, ul" ).eq( 0 );
18124
-	},
18125
-
18126
-	_createPanel: function( id ) {
18127
-		return $( "<div>" )
18128
-			.attr( "id", id )
18129
-			.data( "ui-tabs-destroy", true );
18130
-	},
18131
-
18132
-	_setOptionDisabled: function( disabled ) {
18133
-		var currentItem, li, i;
18134
-
18135
-		if ( Array.isArray( disabled ) ) {
18136
-			if ( !disabled.length ) {
18137
-				disabled = false;
18138
-			} else if ( disabled.length === this.anchors.length ) {
18139
-				disabled = true;
18140
-			}
18141
-		}
18142
-
18143
-		// Disable tabs
18144
-		for ( i = 0; ( li = this.tabs[ i ] ); i++ ) {
18145
-			currentItem = $( li );
18146
-			if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
18147
-				currentItem.attr( "aria-disabled", "true" );
18148
-				this._addClass( currentItem, null, "ui-state-disabled" );
18149
-			} else {
18150
-				currentItem.removeAttr( "aria-disabled" );
18151
-				this._removeClass( currentItem, null, "ui-state-disabled" );
18152
-			}
18153
-		}
18154
-
18155
-		this.options.disabled = disabled;
18156
-
18157
-		this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null,
18158
-			disabled === true );
18159
-	},
18160
-
18161
-	_setupEvents: function( event ) {
18162
-		var events = {};
18163
-		if ( event ) {
18164
-			$.each( event.split( " " ), function( index, eventName ) {
18165
-				events[ eventName ] = "_eventHandler";
18166
-			} );
18167
-		}
18168
-
18169
-		this._off( this.anchors.add( this.tabs ).add( this.panels ) );
18170
-
18171
-		// Always prevent the default action, even when disabled
18172
-		this._on( true, this.anchors, {
18173
-			click: function( event ) {
18174
-				event.preventDefault();
18175
-			}
18176
-		} );
18177
-		this._on( this.anchors, events );
18178
-		this._on( this.tabs, { keydown: "_tabKeydown" } );
18179
-		this._on( this.panels, { keydown: "_panelKeydown" } );
18180
-
18181
-		this._focusable( this.tabs );
18182
-		this._hoverable( this.tabs );
18183
-	},
18184
-
18185
-	_setupHeightStyle: function( heightStyle ) {
18186
-		var maxHeight,
18187
-			parent = this.element.parent();
18188
-
18189
-		if ( heightStyle === "fill" ) {
18190
-			maxHeight = parent.height();
18191
-			maxHeight -= this.element.outerHeight() - this.element.height();
18192
-
18193
-			this.element.siblings( ":visible" ).each( function() {
18194
-				var elem = $( this ),
18195
-					position = elem.css( "position" );
18196
-
18197
-				if ( position === "absolute" || position === "fixed" ) {
18198
-					return;
18199
-				}
18200
-				maxHeight -= elem.outerHeight( true );
18201
-			} );
18202
-
18203
-			this.element.children().not( this.panels ).each( function() {
18204
-				maxHeight -= $( this ).outerHeight( true );
18205
-			} );
18206
-
18207
-			this.panels.each( function() {
18208
-				$( this ).height( Math.max( 0, maxHeight -
18209
-					$( this ).innerHeight() + $( this ).height() ) );
18210
-			} )
18211
-				.css( "overflow", "auto" );
18212
-		} else if ( heightStyle === "auto" ) {
18213
-			maxHeight = 0;
18214
-			this.panels.each( function() {
18215
-				maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
18216
-			} ).height( maxHeight );
18217
-		}
18218
-	},
18219
-
18220
-	_eventHandler: function( event ) {
18221
-		var options = this.options,
18222
-			active = this.active,
18223
-			anchor = $( event.currentTarget ),
18224
-			tab = anchor.closest( "li" ),
18225
-			clickedIsActive = tab[ 0 ] === active[ 0 ],
18226
-			collapsing = clickedIsActive && options.collapsible,
18227
-			toShow = collapsing ? $() : this._getPanelForTab( tab ),
18228
-			toHide = !active.length ? $() : this._getPanelForTab( active ),
18229
-			eventData = {
18230
-				oldTab: active,
18231
-				oldPanel: toHide,
18232
-				newTab: collapsing ? $() : tab,
18233
-				newPanel: toShow
18234
-			};
18235
-
18236
-		event.preventDefault();
18237
-
18238
-		if ( tab.hasClass( "ui-state-disabled" ) ||
18239
-
18240
-				// tab is already loading
18241
-				tab.hasClass( "ui-tabs-loading" ) ||
18242
-
18243
-				// can't switch durning an animation
18244
-				this.running ||
18245
-
18246
-				// click on active header, but not collapsible
18247
-				( clickedIsActive && !options.collapsible ) ||
18248
-
18249
-				// allow canceling activation
18250
-				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
18251
-			return;
18252
-		}
18253
-
18254
-		options.active = collapsing ? false : this.tabs.index( tab );
18255
-
18256
-		this.active = clickedIsActive ? $() : tab;
18257
-		if ( this.xhr ) {
18258
-			this.xhr.abort();
18259
-		}
18260
-
18261
-		if ( !toHide.length && !toShow.length ) {
18262
-			$.error( "jQuery UI Tabs: Mismatching fragment identifier." );
18263
-		}
18264
-
18265
-		if ( toShow.length ) {
18266
-			this.load( this.tabs.index( tab ), event );
18267
-		}
18268
-		this._toggle( event, eventData );
18269
-	},
18270
-
18271
-	// Handles show/hide for selecting tabs
18272
-	_toggle: function( event, eventData ) {
18273
-		var that = this,
18274
-			toShow = eventData.newPanel,
18275
-			toHide = eventData.oldPanel;
18276
-
18277
-		this.running = true;
18278
-
18279
-		function complete() {
18280
-			that.running = false;
18281
-			that._trigger( "activate", event, eventData );
18282
-		}
18283
-
18284
-		function show() {
18285
-			that._addClass( eventData.newTab.closest( "li" ), "ui-tabs-active", "ui-state-active" );
18286
-
18287
-			if ( toShow.length && that.options.show ) {
18288
-				that._show( toShow, that.options.show, complete );
18289
-			} else {
18290
-				toShow.show();
18291
-				complete();
18292
-			}
18293
-		}
18294
-
18295
-		// Start out by hiding, then showing, then completing
18296
-		if ( toHide.length && this.options.hide ) {
18297
-			this._hide( toHide, this.options.hide, function() {
18298
-				that._removeClass( eventData.oldTab.closest( "li" ),
18299
-					"ui-tabs-active", "ui-state-active" );
18300
-				show();
18301
-			} );
18302
-		} else {
18303
-			this._removeClass( eventData.oldTab.closest( "li" ),
18304
-				"ui-tabs-active", "ui-state-active" );
18305
-			toHide.hide();
18306
-			show();
18307
-		}
18308
-
18309
-		toHide.attr( "aria-hidden", "true" );
18310
-		eventData.oldTab.attr( {
18311
-			"aria-selected": "false",
18312
-			"aria-expanded": "false"
18313
-		} );
18314
-
18315
-		// If we're switching tabs, remove the old tab from the tab order.
18316
-		// If we're opening from collapsed state, remove the previous tab from the tab order.
18317
-		// If we're collapsing, then keep the collapsing tab in the tab order.
18318
-		if ( toShow.length && toHide.length ) {
18319
-			eventData.oldTab.attr( "tabIndex", -1 );
18320
-		} else if ( toShow.length ) {
18321
-			this.tabs.filter( function() {
18322
-				return $( this ).attr( "tabIndex" ) === 0;
18323
-			} )
18324
-				.attr( "tabIndex", -1 );
18325
-		}
18326
-
18327
-		toShow.attr( "aria-hidden", "false" );
18328
-		eventData.newTab.attr( {
18329
-			"aria-selected": "true",
18330
-			"aria-expanded": "true",
18331
-			tabIndex: 0
18332
-		} );
18333
-	},
18334
-
18335
-	_activate: function( index ) {
18336
-		var anchor,
18337
-			active = this._findActive( index );
18338
-
18339
-		// Trying to activate the already active panel
18340
-		if ( active[ 0 ] === this.active[ 0 ] ) {
18341
-			return;
18342
-		}
18343
-
18344
-		// Trying to collapse, simulate a click on the current active header
18345
-		if ( !active.length ) {
18346
-			active = this.active;
18347
-		}
18348
-
18349
-		anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
18350
-		this._eventHandler( {
18351
-			target: anchor,
18352
-			currentTarget: anchor,
18353
-			preventDefault: $.noop
18354
-		} );
18355
-	},
18356
-
18357
-	_findActive: function( index ) {
18358
-		return index === false ? $() : this.tabs.eq( index );
18359
-	},
18360
-
18361
-	_getIndex: function( index ) {
18362
-
18363
-		// meta-function to give users option to provide a href string instead of a numerical index.
18364
-		if ( typeof index === "string" ) {
18365
-			index = this.anchors.index( this.anchors.filter( "[href$='" +
18366
-				$.escapeSelector( index ) + "']" ) );
18367
-		}
18368
-
18369
-		return index;
18370
-	},
18371
-
18372
-	_destroy: function() {
18373
-		if ( this.xhr ) {
18374
-			this.xhr.abort();
18375
-		}
18376
-
18377
-		this.tablist
18378
-			.removeAttr( "role" )
18379
-			.off( this.eventNamespace );
18380
-
18381
-		this.anchors
18382
-			.removeAttr( "role tabIndex" )
18383
-			.removeUniqueId();
18384
-
18385
-		this.tabs.add( this.panels ).each( function() {
18386
-			if ( $.data( this, "ui-tabs-destroy" ) ) {
18387
-				$( this ).remove();
18388
-			} else {
18389
-				$( this ).removeAttr( "role tabIndex " +
18390
-					"aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded" );
18391
-			}
18392
-		} );
18393
-
18394
-		this.tabs.each( function() {
18395
-			var li = $( this ),
18396
-				prev = li.data( "ui-tabs-aria-controls" );
18397
-			if ( prev ) {
18398
-				li
18399
-					.attr( "aria-controls", prev )
18400
-					.removeData( "ui-tabs-aria-controls" );
18401
-			} else {
18402
-				li.removeAttr( "aria-controls" );
18403
-			}
18404
-		} );
18405
-
18406
-		this.panels.show();
18407
-
18408
-		if ( this.options.heightStyle !== "content" ) {
18409
-			this.panels.css( "height", "" );
18410
-		}
18411
-	},
18412
-
18413
-	enable: function( index ) {
18414
-		var disabled = this.options.disabled;
18415
-		if ( disabled === false ) {
18416
-			return;
18417
-		}
18418
-
18419
-		if ( index === undefined ) {
18420
-			disabled = false;
18421
-		} else {
18422
-			index = this._getIndex( index );
18423
-			if ( Array.isArray( disabled ) ) {
18424
-				disabled = $.map( disabled, function( num ) {
18425
-					return num !== index ? num : null;
18426
-				} );
18427
-			} else {
18428
-				disabled = $.map( this.tabs, function( li, num ) {
18429
-					return num !== index ? num : null;
18430
-				} );
18431
-			}
18432
-		}
18433
-		this._setOptionDisabled( disabled );
18434
-	},
18435
-
18436
-	disable: function( index ) {
18437
-		var disabled = this.options.disabled;
18438
-		if ( disabled === true ) {
18439
-			return;
18440
-		}
18441
-
18442
-		if ( index === undefined ) {
18443
-			disabled = true;
18444
-		} else {
18445
-			index = this._getIndex( index );
18446
-			if ( $.inArray( index, disabled ) !== -1 ) {
18447
-				return;
18448
-			}
18449
-			if ( Array.isArray( disabled ) ) {
18450
-				disabled = $.merge( [ index ], disabled ).sort();
18451
-			} else {
18452
-				disabled = [ index ];
18453
-			}
18454
-		}
18455
-		this._setOptionDisabled( disabled );
18456
-	},
18457
-
18458
-	load: function( index, event ) {
18459
-		index = this._getIndex( index );
18460
-		var that = this,
18461
-			tab = this.tabs.eq( index ),
18462
-			anchor = tab.find( ".ui-tabs-anchor" ),
18463
-			panel = this._getPanelForTab( tab ),
18464
-			eventData = {
18465
-				tab: tab,
18466
-				panel: panel
18467
-			},
18468
-			complete = function( jqXHR, status ) {
18469
-				if ( status === "abort" ) {
18470
-					that.panels.stop( false, true );
18471
-				}
18472
-
18473
-				that._removeClass( tab, "ui-tabs-loading" );
18474
-				panel.removeAttr( "aria-busy" );
18475
-
18476
-				if ( jqXHR === that.xhr ) {
18477
-					delete that.xhr;
18478
-				}
18479
-			};
18480
-
18481
-		// Not remote
18482
-		if ( this._isLocal( anchor[ 0 ] ) ) {
18483
-			return;
18484
-		}
18485
-
18486
-		this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
18487
-
18488
-		// Support: jQuery <1.8
18489
-		// jQuery <1.8 returns false if the request is canceled in beforeSend,
18490
-		// but as of 1.8, $.ajax() always returns a jqXHR object.
18491
-		if ( this.xhr && this.xhr.statusText !== "canceled" ) {
18492
-			this._addClass( tab, "ui-tabs-loading" );
18493
-			panel.attr( "aria-busy", "true" );
18494
-
18495
-			this.xhr
18496
-				.done( function( response, status, jqXHR ) {
18497
-
18498
-					// support: jQuery <1.8
18499
-					// http://bugs.jquery.com/ticket/11778
18500
-					setTimeout( function() {
18501
-						panel.html( response );
18502
-						that._trigger( "load", event, eventData );
18503
-
18504
-						complete( jqXHR, status );
18505
-					}, 1 );
18506
-				} )
18507
-				.fail( function( jqXHR, status ) {
18508
-
18509
-					// support: jQuery <1.8
18510
-					// http://bugs.jquery.com/ticket/11778
18511
-					setTimeout( function() {
18512
-						complete( jqXHR, status );
18513
-					}, 1 );
18514
-				} );
18515
-		}
18516
-	},
18517
-
18518
-	_ajaxSettings: function( anchor, event, eventData ) {
18519
-		var that = this;
18520
-		return {
18521
-
18522
-			// Support: IE <11 only
18523
-			// Strip any hash that exists to prevent errors with the Ajax request
18524
-			url: anchor.attr( "href" ).replace( /#.*$/, "" ),
18525
-			beforeSend: function( jqXHR, settings ) {
18526
-				return that._trigger( "beforeLoad", event,
18527
-					$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );
18528
-			}
18529
-		};
18530
-	},
18531
-
18532
-	_getPanelForTab: function( tab ) {
18533
-		var id = $( tab ).attr( "aria-controls" );
18534
-		return this.element.find( this._sanitizeSelector( "#" + id ) );
18535
-	}
18536
-} );
18537
-
18538
-// DEPRECATED
18539
-// TODO: Switch return back to widget declaration at top of file when this is removed
18540
-if ( $.uiBackCompat !== false ) {
18541
-
18542
-	// Backcompat for ui-tab class (now ui-tabs-tab)
18543
-	$.widget( "ui.tabs", $.ui.tabs, {
18544
-		_processTabs: function() {
18545
-			this._superApply( arguments );
18546
-			this._addClass( this.tabs, "ui-tab" );
18547
-		}
18548
-	} );
18549
-}
18550
-
18551
-var widgetsTabs = $.ui.tabs;
18552
-
18553
-
18554
-/*!
18555
- * jQuery UI Tooltip 1.13.2
18556
- * http://jqueryui.com
18557
- *
18558
- * Copyright jQuery Foundation and other contributors
18559
- * Released under the MIT license.
18560
- * http://jquery.org/license
18561
- */
18562
-
18563
-//>>label: Tooltip
18564
-//>>group: Widgets
18565
-//>>description: Shows additional information for any element on hover or focus.
18566
-//>>docs: http://api.jqueryui.com/tooltip/
18567
-//>>demos: http://jqueryui.com/tooltip/
18568
-//>>css.structure: ../../themes/base/core.css
18569
-//>>css.structure: ../../themes/base/tooltip.css
18570
-//>>css.theme: ../../themes/base/theme.css
18571
-
18572
-
18573
-$.widget( "ui.tooltip", {
18574
-	version: "1.13.2",
18575
-	options: {
18576
-		classes: {
18577
-			"ui-tooltip": "ui-corner-all ui-widget-shadow"
18578
-		},
18579
-		content: function() {
18580
-			var title = $( this ).attr( "title" );
18581
-
18582
-			// Escape title, since we're going from an attribute to raw HTML
18583
-			return $( "<a>" ).text( title ).html();
18584
-		},
18585
-		hide: true,
18586
-
18587
-		// Disabled elements have inconsistent behavior across browsers (#8661)
18588
-		items: "[title]:not([disabled])",
18589
-		position: {
18590
-			my: "left top+15",
18591
-			at: "left bottom",
18592
-			collision: "flipfit flip"
18593
-		},
18594
-		show: true,
18595
-		track: false,
18596
-
18597
-		// Callbacks
18598
-		close: null,
18599
-		open: null
18600
-	},
18601
-
18602
-	_addDescribedBy: function( elem, id ) {
18603
-		var describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ );
18604
-		describedby.push( id );
18605
-		elem
18606
-			.data( "ui-tooltip-id", id )
18607
-			.attr( "aria-describedby", String.prototype.trim.call( describedby.join( " " ) ) );
18608
-	},
18609
-
18610
-	_removeDescribedBy: function( elem ) {
18611
-		var id = elem.data( "ui-tooltip-id" ),
18612
-			describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ ),
18613
-			index = $.inArray( id, describedby );
18614
-
18615
-		if ( index !== -1 ) {
18616
-			describedby.splice( index, 1 );
18617
-		}
18618
-
18619
-		elem.removeData( "ui-tooltip-id" );
18620
-		describedby = String.prototype.trim.call( describedby.join( " " ) );
18621
-		if ( describedby ) {
18622
-			elem.attr( "aria-describedby", describedby );
18623
-		} else {
18624
-			elem.removeAttr( "aria-describedby" );
18625
-		}
18626
-	},
18627
-
18628
-	_create: function() {
18629
-		this._on( {
18630
-			mouseover: "open",
18631
-			focusin: "open"
18632
-		} );
18633
-
18634
-		// IDs of generated tooltips, needed for destroy
18635
-		this.tooltips = {};
18636
-
18637
-		// IDs of parent tooltips where we removed the title attribute
18638
-		this.parents = {};
18639
-
18640
-		// Append the aria-live region so tooltips announce correctly
18641
-		this.liveRegion = $( "<div>" )
18642
-			.attr( {
18643
-				role: "log",
18644
-				"aria-live": "assertive",
18645
-				"aria-relevant": "additions"
18646
-			} )
18647
-			.appendTo( this.document[ 0 ].body );
18648
-		this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );
18649
-
18650
-		this.disabledTitles = $( [] );
18651
-	},
18652
-
18653
-	_setOption: function( key, value ) {
18654
-		var that = this;
18655
-
18656
-		this._super( key, value );
18657
-
18658
-		if ( key === "content" ) {
18659
-			$.each( this.tooltips, function( id, tooltipData ) {
18660
-				that._updateContent( tooltipData.element );
18661
-			} );
18662
-		}
18663
-	},
18664
-
18665
-	_setOptionDisabled: function( value ) {
18666
-		this[ value ? "_disable" : "_enable" ]();
18667
-	},
18668
-
18669
-	_disable: function() {
18670
-		var that = this;
18671
-
18672
-		// Close open tooltips
18673
-		$.each( this.tooltips, function( id, tooltipData ) {
18674
-			var event = $.Event( "blur" );
18675
-			event.target = event.currentTarget = tooltipData.element[ 0 ];
18676
-			that.close( event, true );
18677
-		} );
18678
-
18679
-		// Remove title attributes to prevent native tooltips
18680
-		this.disabledTitles = this.disabledTitles.add(
18681
-			this.element.find( this.options.items ).addBack()
18682
-				.filter( function() {
18683
-					var element = $( this );
18684
-					if ( element.is( "[title]" ) ) {
18685
-						return element
18686
-							.data( "ui-tooltip-title", element.attr( "title" ) )
18687
-							.removeAttr( "title" );
18688
-					}
18689
-				} )
18690
-		);
18691
-	},
18692
-
18693
-	_enable: function() {
18694
-
18695
-		// restore title attributes
18696
-		this.disabledTitles.each( function() {
18697
-			var element = $( this );
18698
-			if ( element.data( "ui-tooltip-title" ) ) {
18699
-				element.attr( "title", element.data( "ui-tooltip-title" ) );
18700
-			}
18701
-		} );
18702
-		this.disabledTitles = $( [] );
18703
-	},
18704
-
18705
-	open: function( event ) {
18706
-		var that = this,
18707
-			target = $( event ? event.target : this.element )
18708
-
18709
-				// we need closest here due to mouseover bubbling,
18710
-				// but always pointing at the same event target
18711
-				.closest( this.options.items );
18712
-
18713
-		// No element to show a tooltip for or the tooltip is already open
18714
-		if ( !target.length || target.data( "ui-tooltip-id" ) ) {
18715
-			return;
18716
-		}
18717
-
18718
-		if ( target.attr( "title" ) ) {
18719
-			target.data( "ui-tooltip-title", target.attr( "title" ) );
18720
-		}
18721
-
18722
-		target.data( "ui-tooltip-open", true );
18723
-
18724
-		// Kill parent tooltips, custom or native, for hover
18725
-		if ( event && event.type === "mouseover" ) {
18726
-			target.parents().each( function() {
18727
-				var parent = $( this ),
18728
-					blurEvent;
18729
-				if ( parent.data( "ui-tooltip-open" ) ) {
18730
-					blurEvent = $.Event( "blur" );
18731
-					blurEvent.target = blurEvent.currentTarget = this;
18732
-					that.close( blurEvent, true );
18733
-				}
18734
-				if ( parent.attr( "title" ) ) {
18735
-					parent.uniqueId();
18736
-					that.parents[ this.id ] = {
18737
-						element: this,
18738
-						title: parent.attr( "title" )
18739
-					};
18740
-					parent.attr( "title", "" );
18741
-				}
18742
-			} );
18743
-		}
18744
-
18745
-		this._registerCloseHandlers( event, target );
18746
-		this._updateContent( target, event );
18747
-	},
18748
-
18749
-	_updateContent: function( target, event ) {
18750
-		var content,
18751
-			contentOption = this.options.content,
18752
-			that = this,
18753
-			eventType = event ? event.type : null;
18754
-
18755
-		if ( typeof contentOption === "string" || contentOption.nodeType ||
18756
-				contentOption.jquery ) {
18757
-			return this._open( event, target, contentOption );
18758
-		}
18759
-
18760
-		content = contentOption.call( target[ 0 ], function( response ) {
18761
-
18762
-			// IE may instantly serve a cached response for ajax requests
18763
-			// delay this call to _open so the other call to _open runs first
18764
-			that._delay( function() {
18765
-
18766
-				// Ignore async response if tooltip was closed already
18767
-				if ( !target.data( "ui-tooltip-open" ) ) {
18768
-					return;
18769
-				}
18770
-
18771
-				// JQuery creates a special event for focusin when it doesn't
18772
-				// exist natively. To improve performance, the native event
18773
-				// object is reused and the type is changed. Therefore, we can't
18774
-				// rely on the type being correct after the event finished
18775
-				// bubbling, so we set it back to the previous value. (#8740)
18776
-				if ( event ) {
18777
-					event.type = eventType;
18778
-				}
18779
-				this._open( event, target, response );
18780
-			} );
18781
-		} );
18782
-		if ( content ) {
18783
-			this._open( event, target, content );
18784
-		}
18785
-	},
18786
-
18787
-	_open: function( event, target, content ) {
18788
-		var tooltipData, tooltip, delayedShow, a11yContent,
18789
-			positionOption = $.extend( {}, this.options.position );
18790
-
18791
-		if ( !content ) {
18792
-			return;
18793
-		}
18794
-
18795
-		// Content can be updated multiple times. If the tooltip already
18796
-		// exists, then just update the content and bail.
18797
-		tooltipData = this._find( target );
18798
-		if ( tooltipData ) {
18799
-			tooltipData.tooltip.find( ".ui-tooltip-content" ).html( content );
18800
-			return;
18801
-		}
18802
-
18803
-		// If we have a title, clear it to prevent the native tooltip
18804
-		// we have to check first to avoid defining a title if none exists
18805
-		// (we don't want to cause an element to start matching [title])
18806
-		//
18807
-		// We use removeAttr only for key events, to allow IE to export the correct
18808
-		// accessible attributes. For mouse events, set to empty string to avoid
18809
-		// native tooltip showing up (happens only when removing inside mouseover).
18810
-		if ( target.is( "[title]" ) ) {
18811
-			if ( event && event.type === "mouseover" ) {
18812
-				target.attr( "title", "" );
18813
-			} else {
18814
-				target.removeAttr( "title" );
18815
-			}
18816
-		}
18817
-
18818
-		tooltipData = this._tooltip( target );
18819
-		tooltip = tooltipData.tooltip;
18820
-		this._addDescribedBy( target, tooltip.attr( "id" ) );
18821
-		tooltip.find( ".ui-tooltip-content" ).html( content );
18822
-
18823
-		// Support: Voiceover on OS X, JAWS on IE <= 9
18824
-		// JAWS announces deletions even when aria-relevant="additions"
18825
-		// Voiceover will sometimes re-read the entire log region's contents from the beginning
18826
-		this.liveRegion.children().hide();
18827
-		a11yContent = $( "<div>" ).html( tooltip.find( ".ui-tooltip-content" ).html() );
18828
-		a11yContent.removeAttr( "name" ).find( "[name]" ).removeAttr( "name" );
18829
-		a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" );
18830
-		a11yContent.appendTo( this.liveRegion );
18831
-
18832
-		function position( event ) {
18833
-			positionOption.of = event;
18834
-			if ( tooltip.is( ":hidden" ) ) {
18835
-				return;
18836
-			}
18837
-			tooltip.position( positionOption );
18838
-		}
18839
-		if ( this.options.track && event && /^mouse/.test( event.type ) ) {
18840
-			this._on( this.document, {
18841
-				mousemove: position
18842
-			} );
18843
-
18844
-			// trigger once to override element-relative positioning
18845
-			position( event );
18846
-		} else {
18847
-			tooltip.position( $.extend( {
18848
-				of: target
18849
-			}, this.options.position ) );
18850
-		}
18851
-
18852
-		tooltip.hide();
18853
-
18854
-		this._show( tooltip, this.options.show );
18855
-
18856
-		// Handle tracking tooltips that are shown with a delay (#8644). As soon
18857
-		// as the tooltip is visible, position the tooltip using the most recent
18858
-		// event.
18859
-		// Adds the check to add the timers only when both delay and track options are set (#14682)
18860
-		if ( this.options.track && this.options.show && this.options.show.delay ) {
18861
-			delayedShow = this.delayedShow = setInterval( function() {
18862
-				if ( tooltip.is( ":visible" ) ) {
18863
-					position( positionOption.of );
18864
-					clearInterval( delayedShow );
18865
-				}
18866
-			}, 13 );
18867
-		}
18868
-
18869
-		this._trigger( "open", event, { tooltip: tooltip } );
18870
-	},
18871
-
18872
-	_registerCloseHandlers: function( event, target ) {
18873
-		var events = {
18874
-			keyup: function( event ) {
18875
-				if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
18876
-					var fakeEvent = $.Event( event );
18877
-					fakeEvent.currentTarget = target[ 0 ];
18878
-					this.close( fakeEvent, true );
18879
-				}
18880
-			}
18881
-		};
18882
-
18883
-		// Only bind remove handler for delegated targets. Non-delegated
18884
-		// tooltips will handle this in destroy.
18885
-		if ( target[ 0 ] !== this.element[ 0 ] ) {
18886
-			events.remove = function() {
18887
-				var targetElement = this._find( target );
18888
-				if ( targetElement ) {
18889
-					this._removeTooltip( targetElement.tooltip );
18890
-				}
18891
-			};
18892
-		}
18893
-
18894
-		if ( !event || event.type === "mouseover" ) {
18895
-			events.mouseleave = "close";
18896
-		}
18897
-		if ( !event || event.type === "focusin" ) {
18898
-			events.focusout = "close";
18899
-		}
18900
-		this._on( true, target, events );
18901
-	},
18902
-
18903
-	close: function( event ) {
18904
-		var tooltip,
18905
-			that = this,
18906
-			target = $( event ? event.currentTarget : this.element ),
18907
-			tooltipData = this._find( target );
18908
-
18909
-		// The tooltip may already be closed
18910
-		if ( !tooltipData ) {
18911
-
18912
-			// We set ui-tooltip-open immediately upon open (in open()), but only set the
18913
-			// additional data once there's actually content to show (in _open()). So even if the
18914
-			// tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in
18915
-			// the period between open() and _open().
18916
-			target.removeData( "ui-tooltip-open" );
18917
-			return;
18918
-		}
18919
-
18920
-		tooltip = tooltipData.tooltip;
18921
-
18922
-		// Disabling closes the tooltip, so we need to track when we're closing
18923
-		// to avoid an infinite loop in case the tooltip becomes disabled on close
18924
-		if ( tooltipData.closing ) {
18925
-			return;
18926
-		}
18927
-
18928
-		// Clear the interval for delayed tracking tooltips
18929
-		clearInterval( this.delayedShow );
18930
-
18931
-		// Only set title if we had one before (see comment in _open())
18932
-		// If the title attribute has changed since open(), don't restore
18933
-		if ( target.data( "ui-tooltip-title" ) && !target.attr( "title" ) ) {
18934
-			target.attr( "title", target.data( "ui-tooltip-title" ) );
18935
-		}
18936
-
18937
-		this._removeDescribedBy( target );
18938
-
18939
-		tooltipData.hiding = true;
18940
-		tooltip.stop( true );
18941
-		this._hide( tooltip, this.options.hide, function() {
18942
-			that._removeTooltip( $( this ) );
18943
-		} );
18944
-
18945
-		target.removeData( "ui-tooltip-open" );
18946
-		this._off( target, "mouseleave focusout keyup" );
18947
-
18948
-		// Remove 'remove' binding only on delegated targets
18949
-		if ( target[ 0 ] !== this.element[ 0 ] ) {
18950
-			this._off( target, "remove" );
18951
-		}
18952
-		this._off( this.document, "mousemove" );
18953
-
18954
-		if ( event && event.type === "mouseleave" ) {
18955
-			$.each( this.parents, function( id, parent ) {
18956
-				$( parent.element ).attr( "title", parent.title );
18957
-				delete that.parents[ id ];
18958
-			} );
18959
-		}
18960
-
18961
-		tooltipData.closing = true;
18962
-		this._trigger( "close", event, { tooltip: tooltip } );
18963
-		if ( !tooltipData.hiding ) {
18964
-			tooltipData.closing = false;
18965
-		}
18966
-	},
18967
-
18968
-	_tooltip: function( element ) {
18969
-		var tooltip = $( "<div>" ).attr( "role", "tooltip" ),
18970
-			content = $( "<div>" ).appendTo( tooltip ),
18971
-			id = tooltip.uniqueId().attr( "id" );
18972
-
18973
-		this._addClass( content, "ui-tooltip-content" );
18974
-		this._addClass( tooltip, "ui-tooltip", "ui-widget ui-widget-content" );
18975
-
18976
-		tooltip.appendTo( this._appendTo( element ) );
18977
-
18978
-		return this.tooltips[ id ] = {
18979
-			element: element,
18980
-			tooltip: tooltip
18981
-		};
18982
-	},
18983
-
18984
-	_find: function( target ) {
18985
-		var id = target.data( "ui-tooltip-id" );
18986
-		return id ? this.tooltips[ id ] : null;
18987
-	},
18988
-
18989
-	_removeTooltip: function( tooltip ) {
18990
-
18991
-		// Clear the interval for delayed tracking tooltips
18992
-		clearInterval( this.delayedShow );
18993
-
18994
-		tooltip.remove();
18995
-		delete this.tooltips[ tooltip.attr( "id" ) ];
18996
-	},
18997
-
18998
-	_appendTo: function( target ) {
18999
-		var element = target.closest( ".ui-front, dialog" );
19000
-
19001
-		if ( !element.length ) {
19002
-			element = this.document[ 0 ].body;
19003
-		}
19004
-
19005
-		return element;
19006
-	},
19007
-
19008
-	_destroy: function() {
19009
-		var that = this;
19010
-
19011
-		// Close open tooltips
19012
-		$.each( this.tooltips, function( id, tooltipData ) {
19013
-
19014
-			// Delegate to close method to handle common cleanup
19015
-			var event = $.Event( "blur" ),
19016
-				element = tooltipData.element;
19017
-			event.target = event.currentTarget = element[ 0 ];
19018
-			that.close( event, true );
19019
-
19020
-			// Remove immediately; destroying an open tooltip doesn't use the
19021
-			// hide animation
19022
-			$( "#" + id ).remove();
19023
-
19024
-			// Restore the title
19025
-			if ( element.data( "ui-tooltip-title" ) ) {
19026
-
19027
-				// If the title attribute has changed since open(), don't restore
19028
-				if ( !element.attr( "title" ) ) {
19029
-					element.attr( "title", element.data( "ui-tooltip-title" ) );
19030
-				}
19031
-				element.removeData( "ui-tooltip-title" );
19032
-			}
19033
-		} );
19034
-		this.liveRegion.remove();
19035
-	}
19036
-} );
19037
-
19038
-// DEPRECATED
19039
-// TODO: Switch return back to widget declaration at top of file when this is removed
19040
-if ( $.uiBackCompat !== false ) {
19041
-
19042
-	// Backcompat for tooltipClass option
19043
-	$.widget( "ui.tooltip", $.ui.tooltip, {
19044
-		options: {
19045
-			tooltipClass: null
19046
-		},
19047
-		_tooltip: function() {
19048
-			var tooltipData = this._superApply( arguments );
19049
-			if ( this.options.tooltipClass ) {
19050
-				tooltipData.tooltip.addClass( this.options.tooltipClass );
19051
-			}
19052
-			return tooltipData;
19053
-		}
19054
-	} );
19055
-}
19056
-
19057
-var widgetsTooltip = $.ui.tooltip;
19058
-
19059
-
19060
-
19061
-
19062
-} );
19063 0
\ No newline at end of file
... ...
@@ -1,7 +0,0 @@
1
-/*! jQuery UI - v1.13.2 - 2022-07-14
2
-* http://jqueryui.com
3
-* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
4
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
5
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
6
-
7
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;-ms-filter:"alpha(opacity=0)"}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;-ms-filter:"alpha(opacity=25)";opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:pointer;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;-ms-filter:"alpha(opacity=70)";font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;-ms-filter:"alpha(opacity=35)";background-image:none}.ui-state-disabled .ui-icon{-ms-filter:"alpha(opacity=35)"}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank.ui-icon-blank.ui-icon-blank{background-image:none}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.003;-ms-filter:Alpha(Opacity=.3)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
8 0
\ No newline at end of file
... ...
@@ -1,6 +0,0 @@
1
-/*! jQuery UI - v1.13.2 - 2022-07-14
2
-* http://jqueryui.com
3
-* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
4
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
5
-
6
-!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(V){"use strict";V.ui=V.ui||{};V.ui.version="1.13.2";var n,i=0,a=Array.prototype.hasOwnProperty,r=Array.prototype.slice;V.cleanData=(n=V.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=V._data(i,"events"))&&e.remove&&V(i).triggerHandler("remove");n(t)}),V.widget=function(t,i,e){var s,n,o,a={},r=t.split(".")[0],l=r+"-"+(t=t.split(".")[1]);return e||(e=i,i=V.Widget),Array.isArray(e)&&(e=V.extend.apply(null,[{}].concat(e))),V.expr.pseudos[l.toLowerCase()]=function(t){return!!V.data(t,l)},V[r]=V[r]||{},s=V[r][t],n=V[r][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},V.extend(n,s,{version:e.version,_proto:V.extend({},e),_childConstructors:[]}),(o=new i).options=V.widget.extend({},o.options),V.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}a[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=V.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:l}),s?(V.each(s._childConstructors,function(t,e){var i=e.prototype;V.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),V.widget.bridge(t,n),n},V.widget.extend=function(t){for(var e,i,s=r.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],a.call(s[n],e)&&void 0!==i&&(V.isPlainObject(i)?t[e]=V.isPlainObject(t[e])?V.widget.extend({},t[e],i):V.widget.extend({},i):t[e]=i);return t},V.widget.bridge=function(o,e){var a=e.prototype.widgetFullName||o;V.fn[o]=function(i){var t="string"==typeof i,s=r.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=V.data(this,a);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V.data(this,a);t?(t.option(i||{}),t._init&&t._init()):V.data(this,a,new e(i,this))})),n}},V.Widget=function(){},V.Widget._childConstructors=[],V.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=V(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],a=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=a.classesElementLookup[t[s]]||V(),i=n.add?(function(){var i=[];n.element.each(function(t,e){V.map(a.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),a._on(V(i),{remove:"_untrackClassesElement"})}(),V(V.uniqueSort(i.get().concat(n.element.get())))):V(i.not(n.element).get()),a.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=V.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;V.each(s.classesElementLookup,function(t,e){-1!==V.inArray(i.target,e)&&(s.classesElementLookup[t]=V(e.not(i.target).get()))}),this._off(V(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,i={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return i.element.toggleClass(this._classes(i),s),this},_on:function(n,o,t){var a,r=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=a=V(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,a=this.widget()),V.each(t,function(t,e){function i(){if(n||!0!==r.options.disabled&&!V(this).hasClass("ui-state-disabled"))return("string"==typeof e?r[e]:e).apply(r,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||V.guid++);var s=t.match(/^([\w:-]*)\s*(.*)$/),t=s[1]+r.eventNamespace,s=s[2];s?a.on(t,s,i):o.on(t,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=V(this.bindings.not(t).get()),this.focusable=V(this.focusable.not(t).get()),this.hoverable=V(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(V(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(V(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=V.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},V.each({show:"fadeIn",hide:"fadeOut"},function(o,a){V.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||a:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!V.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&V.effects&&V.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){V(this)[o](),i&&i.call(e[0]),t()})}});var s,x,k,o,l,h,c,u,C;V.widget;function D(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function I(t,e){return parseInt(V.css(t,e),10)||0}function T(t){return null!=t&&t===t.window}x=Math.max,k=Math.abs,o=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,C=V.fn.position,V.position={scrollbarWidth:function(){if(void 0!==s)return s;var t,e=V("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>"),i=e.children()[0];return V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?V.position.scrollbarWidth():0,height:e?V.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=V(t||window),i=T(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?V(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},V.fn.position=function(u){if(!u||!u.of)return C.apply(this,arguments);var d,p,f,g,m,t,_="string"==typeof(u=V.extend({},u)).of?V(document).find(u.of):V(u.of),v=V.position.getWithinInfo(u.within),b=V.position.getScrollInfo(v),y=(u.collision||"flip").split(" "),w={},e=9===(t=(e=_)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:T(t)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return _[0].preventDefault&&(u.at="left top"),p=e.width,f=e.height,m=V.extend({},g=e.offset),V.each(["my","at"],function(){var t,e,i=(u[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):l.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=l.test(i[1])?i[1]:"center",t=h.exec(i[0]),e=h.exec(i[1]),w[this]=[t?t[0]:0,e?e[0]:0],u[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===y.length&&(y[1]=y[0]),"right"===u.at[0]?m.left+=p:"center"===u.at[0]&&(m.left+=p/2),"bottom"===u.at[1]?m.top+=f:"center"===u.at[1]&&(m.top+=f/2),d=D(w.at,p,f),m.left+=d[0],m.top+=d[1],this.each(function(){var i,t,a=V(this),r=a.outerWidth(),l=a.outerHeight(),e=I(this,"marginLeft"),s=I(this,"marginTop"),n=r+e+I(this,"marginRight")+b.width,o=l+s+I(this,"marginBottom")+b.height,h=V.extend({},m),c=D(w.my,a.outerWidth(),a.outerHeight());"right"===u.my[0]?h.left-=r:"center"===u.my[0]&&(h.left-=r/2),"bottom"===u.my[1]?h.top-=l:"center"===u.my[1]&&(h.top-=l/2),h.left+=c[0],h.top+=c[1],i={marginLeft:e,marginTop:s},V.each(["left","top"],function(t,e){V.ui.position[y[t]]&&V.ui.position[y[t]][e](h,{targetWidth:p,targetHeight:f,elemWidth:r,elemHeight:l,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+c[0],d[1]+c[1]],my:u.my,at:u.at,within:v,elem:a})}),u.using&&(t=function(t){var e=g.left-h.left,i=e+p-r,s=g.top-h.top,n=s+f-l,o={target:{element:_,left:g.left,top:g.top,width:p,height:f},element:{element:a,left:h.left,top:h.top,width:r,height:l},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};p<r&&k(e+i)<p&&(o.horizontal="center"),f<l&&k(s+n)<f&&(o.vertical="middle"),x(k(e),k(i))>x(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0<a&&r<=0?(i=t.left+a+e.collisionWidth-n-s,t.left+=a-i):t.left=!(0<r&&a<=0)&&r<a?s+n-e.collisionWidth:s:0<a?t.left+=a:0<r?t.left-=r:t.left=x(t.left-o,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,a=s-o,r=o+e.collisionHeight-n-s;e.collisionHeight>n?0<a&&r<=0?(i=t.top+a+e.collisionHeight-n-s,t.top+=a-i):t.top=!(0<r&&a<=0)&&r<a?s+n-e.collisionHeight:s:0<a?t.top+=a:0<r?t.top-=r:t.top=x(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,o=i.isWindow?i.scrollLeft:i.offset.left,a=t.left-e.collisionPosition.marginLeft,r=a-o,l=a+e.collisionWidth-n-o,h="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,i="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,a=-2*e.offset[0];r<0?((s=t.left+h+i+a+e.collisionWidth-n-s)<0||s<k(r))&&(t.left+=h+i+a):0<l&&(0<(o=t.left-e.collisionPosition.marginLeft+h+i+a-o)||k(o)<l)&&(t.left+=h+i+a)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,o=i.isWindow?i.scrollTop:i.offset.top,a=t.top-e.collisionPosition.marginTop,r=a-o,l=a+e.collisionHeight-n-o,h="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,i="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,a=-2*e.offset[1];r<0?((s=t.top+h+i+a+e.collisionHeight-n-s)<0||s<k(r))&&(t.top+=h+i+a):0<l&&(0<(o=t.top-e.collisionPosition.marginTop+h+i+a-o)||k(o)<l)&&(t.top+=h+i+a)}},flipfit:{left:function(){V.ui.position.flip.left.apply(this,arguments),V.ui.position.fit.left.apply(this,arguments)},top:function(){V.ui.position.flip.top.apply(this,arguments),V.ui.position.fit.top.apply(this,arguments)}}};V.ui.position,V.extend(V.expr.pseudos,{data:V.expr.createPseudo?V.expr.createPseudo(function(e){return function(t){return!!V.data(t,e)}}):function(t,e,i){return!!V.data(t,i[3])}}),V.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}});var t,d=V,p={},e=p.toString,f=/^([\-+])=\s*(\d+\.?\d*)/,g=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),t[4]?(parseInt(t[4],16)/255).toFixed(2):1]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16),t[4]?(parseInt(t[4]+t[4],16)/255).toFixed(2):1]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],m=d.Color=function(t,e,i,s){return new d.Color.fn.parse(t,e,i,s)},_={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},v={byte:{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},b=m.support={},y=d("<p>")[0],w=d.each;function P(t){return null==t?t+"":"object"==typeof t?p[e.call(t)]||"object":typeof t}function M(t,e,i){var s=v[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function S(s){var n=m(),o=n._rgba=[];return s=s.toLowerCase(),w(g,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[_[e].cache]=i[_[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&d.extend(o,B.transparent),n):B[s]}function H(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}y.style.cssText="background-color:rgba(1,1,1,.5)",b.rgba=-1<y.style.backgroundColor.indexOf("rgba"),w(_,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),d.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){p["[object "+e+"]"]=e.toLowerCase()}),(m.fn=d.extend(m.prototype,{parse:function(n,t,e,i){if(void 0===n)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=d(n).css(t),t=void 0);var o=this,s=P(n),a=this._rgba=[];return void 0!==t&&(n=[n,t,e,i],s="array"),"string"===s?this.parse(S(n)||B._default):"array"===s?(w(_.rgba.props,function(t,e){a[e.idx]=M(n[e.idx],e)}),this):"object"===s?(w(_,n instanceof m?function(t,e){n[e.cache]&&(o[e.cache]=n[e.cache].slice())}:function(t,i){var s=i.cache;w(i.props,function(t,e){if(!o[s]&&i.to){if("alpha"===t||null==n[t])return;o[s]=i.to(o._rgba)}o[s][e.idx]=M(n[t],e,!0)}),o[s]&&d.inArray(null,o[s].slice(0,3))<0&&(null==o[s][3]&&(o[s][3]=1),i.from&&(o._rgba=i.from(o[s])))}),this):void 0},is:function(t){var n=m(t),o=!0,a=this;return w(_,function(t,e){var i,s=n[e.cache];return s&&(i=a[e.cache]||e.to&&e.to(a._rgba)||[],w(e.props,function(t,e){if(null!=s[e.idx])return o=s[e.idx]===i[e.idx]})),o}),o},_space:function(){var i=[],s=this;return w(_,function(t,e){s[e.cache]&&i.push(t)}),i.pop()},transition:function(t,a){var e=(h=m(t))._space(),i=_[e],t=0===this.alpha()?m("transparent"):this,r=t[i.cache]||i.to(t._rgba),l=r.slice(),h=h[i.cache];return w(i.props,function(t,e){var i=e.idx,s=r[i],n=h[i],o=v[e.type]||{};null!==n&&(null===s?l[i]=n:(o.mod&&(n-s>o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=M((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=m(t)._rgba;return m(d.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=d.map(this._rgba,function(t,e){return null!=t?t:2<e?1:0});return 1===e[3]&&(e.pop(),t="rgb("),t+e.join()+")"},toHslaString:function(){var t="hsla(",e=d.map(this.hsla(),function(t,e){return null==t&&(t=2<e?1:0),t=e&&e<3?Math.round(100*t)+"%":t});return 1===e[3]&&(e.pop(),t="hsl("),t+e.join()+")"},toHexString:function(t){var e=this._rgba.slice(),i=e.pop();return t&&e.push(~~(255*i)),"#"+d.map(e,function(t){return 1===(t=(t||0).toString(16)).length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}})).parse.prototype=m.fn,_.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/255,i=t[1]/255,s=t[2]/255,n=t[3],o=Math.max(e,i,s),a=Math.min(e,i,s),r=o-a,l=o+a,t=.5*l,i=a===o?0:e===o?60*(i-s)/r+360:i===o?60*(s-e)/r+120:60*(e-i)/r+240,l=0==r?0:t<=.5?r/l:r/(2-l);return[Math.round(i)%360,l,t,null==n?1:n]},_.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],t=t[3],i=s<=.5?s*(1+i):s+i-s*i,s=2*s-i;return[Math.round(255*H(s,i,e+1/3)),Math.round(255*H(s,i,e)),Math.round(255*H(s,i,e-1/3)),t]},w(_,function(l,t){var e=t.props,o=t.cache,a=t.to,r=t.from;m.fn[l]=function(t){if(a&&!this[o]&&(this[o]=a(this._rgba)),void 0===t)return this[o].slice();var i=P(t),s="array"===i||"object"===i?t:arguments,n=this[o].slice();return w(e,function(t,e){t=s["object"===i?t:e.idx];null==t&&(t=n[e.idx]),n[e.idx]=M(t,e)}),r?((t=m(r(n)))[o]=n,t):m(n)},w(e,function(a,r){m.fn[a]||(m.fn[a]=function(t){var e,i=P(t),s="alpha"===a?this._hsla?"hsla":"rgba":l,n=this[s](),o=n[r.idx];return"undefined"===i?o:("function"===i&&(i=P(t=t.call(this,o))),null==t&&r.empty?this:("string"===i&&(e=f.exec(t))&&(t=o+parseFloat(e[2])*("+"===e[1]?1:-1)),n[r.idx]=t,this[s](n)))})})}),(m.hook=function(t){t=t.split(" ");w(t,function(t,o){d.cssHooks[o]={set:function(t,e){var i,s,n="";if("transparent"!==e&&("string"!==P(e)||(i=S(e)))){if(e=m(i||e),!b.rgba&&1!==e._rgba[3]){for(s="backgroundColor"===o?t.parentNode:t;(""===n||"transparent"===n)&&s&&s.style;)try{n=d.css(s,"backgroundColor"),s=s.parentNode}catch(t){}e=e.blend(n&&"transparent"!==n?n:"_default")}e=e.toRgbaString()}try{t.style[o]=e}catch(t){}}},d.fx.step[o]=function(t){t.colorInit||(t.start=m(t.elem,o),t.end=m(t.end),t.colorInit=!0),d.cssHooks[o].set(t.elem,t.start.transition(t.end,t.pos))}})})("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),d.cssHooks.borderColor={expand:function(i){var s={};return w(["Top","Right","Bottom","Left"],function(t,e){s["border"+e+"Color"]=i}),s}};var z,A,O,N,E,W,F,L,R,Y,B=d.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"},j="ui-effects-",q="ui-effects-style",K="ui-effects-animated";function U(t){var e,i,s=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(s&&s.length&&s[0]&&s[s[0]])for(i=s.length;i--;)"string"==typeof s[e=s[i]]&&(n[e.replace(/-([\da-z])/gi,function(t,e){return e.toUpperCase()})]=s[e]);else for(e in s)"string"==typeof s[e]&&(n[e]=s[e]);return n}function X(t,e,i,s){return t={effect:t=V.isPlainObject(t)?(e=t).effect:t},"function"==typeof(e=null==e?{}:e)&&(s=e,i=null,e={}),"number"!=typeof e&&!V.fx.speeds[e]||(s=i,i=e,e={}),"function"==typeof i&&(s=i,i=null),e&&V.extend(t,e),i=i||e.duration,t.duration=V.fx.off?0:"number"==typeof i?i:i in V.fx.speeds?V.fx.speeds[i]:V.fx.speeds._default,t.complete=s||e.complete,t}function $(t){return!t||"number"==typeof t||V.fx.speeds[t]||("string"==typeof t&&!V.effects.effect[t]||("function"==typeof t||"object"==typeof t&&!t.effect))}function G(t,e){var i=e.outerWidth(),e=e.outerHeight(),t=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t)||["",0,i,e,0];return{top:parseFloat(t[1])||0,right:"auto"===t[2]?i:parseFloat(t[2]),bottom:"auto"===t[3]?e:parseFloat(t[3]),left:parseFloat(t[4])||0}}V.effects={effect:{}},N=["add","remove","toggle"],E={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1},V.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,e){V.fx.step[e]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(d.style(t.elem,e,t.end),t.setAttr=!0)}}),V.fn.addBack||(V.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),V.effects.animateClass=function(n,t,e,i){var o=V.speed(t,e,i);return this.queue(function(){var i=V(this),t=i.attr("class")||"",e=(e=o.children?i.find("*").addBack():i).map(function(){return{el:V(this),start:U(this)}}),s=function(){V.each(N,function(t,e){n[e]&&i[e+"Class"](n[e])})};s(),e=e.map(function(){return this.end=U(this.el[0]),this.diff=function(t,e){var i,s,n={};for(i in e)s=e[i],t[i]!==s&&(E[i]||!V.fx.step[i]&&isNaN(parseFloat(s))||(n[i]=s));return n}(this.start,this.end),this}),i.attr("class",t),e=e.map(function(){var t=this,e=V.Deferred(),i=V.extend({},o,{queue:!1,complete:function(){e.resolve(t)}});return this.el.animate(this.diff,i),e.promise()}),V.when.apply(V,e.get()).done(function(){s(),V.each(arguments,function(){var e=this.el;V.each(this.diff,function(t){e.css(t,"")})}),o.complete.call(i[0])})})},V.fn.extend({addClass:(O=V.fn.addClass,function(t,e,i,s){return e?V.effects.animateClass.call(this,{add:t},e,i,s):O.apply(this,arguments)}),removeClass:(A=V.fn.removeClass,function(t,e,i,s){return 1<arguments.length?V.effects.animateClass.call(this,{remove:t},e,i,s):A.apply(this,arguments)}),toggleClass:(z=V.fn.toggleClass,function(t,e,i,s,n){return"boolean"==typeof e||void 0===e?i?V.effects.animateClass.call(this,e?{add:t}:{remove:t},i,s,n):z.apply(this,arguments):V.effects.animateClass.call(this,{toggle:t},e,i,s)}),switchClass:function(t,e,i,s,n){return V.effects.animateClass.call(this,{add:e,remove:t},i,s,n)}}),V.expr&&V.expr.pseudos&&V.expr.pseudos.animated&&(V.expr.pseudos.animated=(W=V.expr.pseudos.animated,function(t){return!!V(t).data(K)||W(t)})),!1!==V.uiBackCompat&&V.extend(V.effects,{save:function(t,e){for(var i=0,s=e.length;i<s;i++)null!==e[i]&&t.data(j+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;s<n;s++)null!==e[s]&&(i=t.data(j+e[s]),t.css(e[s],i))},setMode:function(t,e){return e="toggle"===e?t.is(":hidden")?"show":"hide":e},createWrapper:function(i){if(i.parent().is(".ui-effects-wrapper"))return i.parent();var s={width:i.outerWidth(!0),height:i.outerHeight(!0),float:i.css("float")},t=V("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.2",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1<e&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(q,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(q)||"",t.removeData(q)},mode:function(t,e){t=t.is(":hidden");return"toggle"===e&&(e=t?"show":"hide"),e=(t?"hide"===e:"show"===e)?"none":e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(t){var e,i=t.css("position"),s=t.position();return t.css({marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()),/^(static|relative)/.test(i)&&(i="absolute",e=V("<"+t[0].nodeName+">").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(j+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=j+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0<i[0]&&(o[e]=i[0]*n+i[1])}),o}}),V.fn.extend({effect:function(){function t(t){var e=V(this),i=V.effects.mode(e,r)||o;e.data(K,!0),l.push(i),o&&("show"===i||i===o&&"hide"===i)&&e.show(),o&&"none"===i||V.effects.saveStyle(e),"function"==typeof t&&t()}var s=X.apply(this,arguments),n=V.effects.effect[s.effect],o=n.mode,e=s.queue,i=e||"fx",a=s.complete,r=s.mode,l=[];return V.fx.off||!n?r?this[r](s.duration,a):this.each(function(){a&&a.call(this)}):!1===e?this.each(t).each(h):this.queue(i,t).queue(i,h);function h(t){var e=V(this);function i(){"function"==typeof a&&a.call(e[0]),"function"==typeof t&&t()}s.mode=l.shift(),!1===V.uiBackCompat||o?"none"===s.mode?(e[r](),i()):n.call(e[0],s,function(){e.removeData(K),V.effects.cleanUp(e),"hide"===s.mode&&e.hide(),i()}):(e.is(":hidden")?"hide"===r:"show"===r)?(e[r](),i()):n.call(e[0],s,i)}},show:(R=V.fn.show,function(t){if($(t))return R.apply(this,arguments);t=X.apply(this,arguments);return t.mode="show",this.effect.call(this,t)}),hide:(L=V.fn.hide,function(t){if($(t))return L.apply(this,arguments);t=X.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)}),toggle:(F=V.fn.toggle,function(t){if($(t)||"boolean"==typeof t)return F.apply(this,arguments);t=X.apply(this,arguments);return t.mode="toggle",this.effect.call(this,t)}),cssUnit:function(t){var i=this.css(t),s=[];return V.each(["em","px","%","pt"],function(t,e){0<i.indexOf(e)&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):G(this.css("clip"),this)},transfer:function(t,e){var i=V(this),s=V(t.to),n="fixed"===s.css("position"),o=V("body"),a=n?o.scrollTop():0,r=n?o.scrollLeft():0,o=s.offset(),o={top:o.top-a,left:o.left-r,height:s.innerHeight(),width:s.innerWidth()},s=i.offset(),l=V("<div class='ui-effects-transfer'></div>");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=G(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},Y={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){Y[t]=function(t){return Math.pow(t,e+2)}}),V.extend(Y,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(Y,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});y=V.effects,V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,r="show"===o,l=t.direction||"up",h=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===l||"down"===l?"top":"left",f="up"===l||"left"===l,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),l=n.css(p),h=h||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=l,n.css("opacity",0).css(p,f?2*-h:2*h).animate(s,u,d)),a&&(h/=Math.pow(2,c-1)),(s={})[p]=l;g<c;g++)(i={})[p]=(f?"-=":"+=")+h,n.animate(i,u,d).animate(s,u,d),h=a?2*h:h/2;a&&((i={opacity:0})[p]=(f?"-=":"+=")+h,n.animate(i,u,d)),n.queue(e),V.effects.unshift(n,t,1+o)}),V.effects.define("clip","hide",function(t,e){var i={},s=V(this),n=t.direction||"vertical",o="both"===n,a=o||"horizontal"===n,o=o||"vertical"===n,n=s.cssClip();i.clip={top:o?(n.bottom-n.top)/2:n.top,right:a?(n.right-n.left)/2:n.right,bottom:o?(n.bottom-n.top)/2:n.bottom,left:a?(n.right-n.left)/2:n.left},V.effects.createPlaceholder(s),"show"===t.mode&&(s.cssClip(i.clip),i.clip=n),s.animate(i,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("drop","hide",function(t,e){var i=V(this),s="show"===t.mode,n=t.direction||"left",o="up"===n||"down"===n?"top":"left",a="up"===n||"left"===n?"-=":"+=",r="+="==a?"-=":"+=",l={opacity:0};V.effects.createPlaceholder(i),n=t.distance||i["top"==o?"outerHeight":"outerWidth"](!0)/2,l[o]=a+n,s&&(i.css(l),l[o]=r+n,l.opacity=1),i.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("explode","hide",function(t,e){var i,s,n,o,a,r,l=t.pieces?Math.round(Math.sqrt(t.pieces)):3,h=l,c=V(this),u="show"===t.mode,d=c.show().css("visibility","hidden").offset(),p=Math.ceil(c.outerWidth()/h),f=Math.ceil(c.outerHeight()/l),g=[];function m(){g.push(this),g.length===l*h&&(c.css({visibility:"visible"}),V(g).remove(),e())}for(i=0;i<l;i++)for(o=d.top+i*f,r=i-(l-1)/2,s=0;s<h;s++)n=d.left+s*p,a=s-(h-1)/2,c.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l<o;l++)i.animate({opacity:r},a,t.easing),r=1-r;i.animate({opacity:r},a,t.easing),i.queue(e),V.effects.unshift(i,s,1+o)}),V.effects.define("shake",function(t,e){var i=1,s=V(this),n=t.direction||"left",o=t.distance||20,a=t.times||3,r=2*a+1,l=Math.round(t.duration/r),h="up"===n||"down"===n?"top":"left",c="up"===n||"left"===n,u={},d={},p={},n=s.queue().length;for(V.effects.createPlaceholder(s),u[h]=(c?"-=":"+=")+o,d[h]=(c?"+=":"-=")+2*o,p[h]=(c?"-=":"+=")+2*o,s.animate(u,l,t.easing);i<a;i++)s.animate(d,l,t.easing).animate(p,l,t.easing);s.animate(d,l,t.easing).animate(u,l/2,t.easing).queue(e),V.effects.unshift(s,n,1+r)}),V.effects.define("slide","show",function(t,e){var i,s,n=V(this),o={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},a=t.mode,r=t.direction||"left",l="up"===r||"down"===r?"top":"left",h="up"===r||"left"===r,c=t.distance||n["top"==l?"outerHeight":"outerWidth"](!0),u={};V.effects.createPlaceholder(n),i=n.cssClip(),s=n.position()[l],u[l]=(h?-1:1)*c+s,u.clip=n.cssClip(),u.clip[o[r][1]]=u.clip[o[r][0]],"show"===a&&(n.cssClip(u.clip),n.css(l,u[l]),u.clip=i,u[l]=s),n.animate(u,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),y=!1!==V.uiBackCompat?V.effects.define("transfer",function(t,e){V(this).transfer(t,e)}):y;V.ui.focusable=function(t,e){var i,s,n,o,a=t.nodeName.toLowerCase();return"area"===a?(s=(i=t.parentNode).name,!(!t.href||!s||"map"!==i.nodeName.toLowerCase())&&(0<(s=V("img[usemap='#"+s+"']")).length&&s.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(a)?(n=!t.disabled)&&(o=V(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===a&&t.href||e,n&&V(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"visible"===e}(V(t)))},V.extend(V.expr.pseudos,{focusable:function(t){return V.ui.focusable(t,null!=V.attr(t,"tabindex"))}});var Q,J;V.ui.focusable,V.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):V(this[0].form)},V.ui.formResetMixin={_formResetHandler:function(){var e=V(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");V.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element._form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(V.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}};V.expr.pseudos||(V.expr.pseudos=V.expr[":"]),V.uniqueSort||(V.uniqueSort=V.unique),V.escapeSelector||(Q=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,J=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},V.escapeSelector=function(t){return(t+"").replace(Q,J)}),V.fn.even&&V.fn.odd||V.fn.extend({even:function(){return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}});var Z;V.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},V.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+V.escapeSelector(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},V.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=V(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:V(this[0].ownerDocument||document)},V.extend(V.expr.pseudos,{tabbable:function(t){var e=V.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&V.ui.focusable(t,i)}}),V.fn.extend({uniqueId:(Z=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++Z)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&V(this).removeAttr("id")})}}),V.widget("ui.accordion",{version:"1.13.2",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(t){return t.find("> li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V("<span>"),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()<i.index()),c=this.options.animate||{},u=h&&c.down||c,h=function(){a._toggleComplete(e)};return n=(n="string"==typeof u?u:n)||u.easing||c.easing,o=(o="number"==typeof u?u:o)||u.duration||c.duration,i.length?t.length?(s=t.show().outerHeight(),i.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),void t.hide().animate(this.showProps,{duration:o,easing:n,complete:h,step:function(t,e){e.now=Math.round(t),"height"!==e.prop?"content-box"===l&&(r+=e.now):"content"!==a.options.heightStyle&&(e.now=Math.round(s-i.outerHeight()-r),r=0)}})):i.animate(this.hideProps,o,n,h):t.animate(this.showProps,o,n,h)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),V.ui.safeActiveElement=function(e){var i;try{i=e.activeElement}catch(t){i=e.body}return i=!(i=i||e.body).nodeName?e.body:i},V.widget("ui.menu",{version:"1.13.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("<span>").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s<e+t&&this.activeMenu.scrollTop(i+e-s+t))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=V.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(e)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var t=i?this.element:V(e&&e.target).closest(this.element.find(".ui-menu"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=t},i?0:this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!V(t.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,i){var s;(s=this.active?"first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first():s)&&s.length&&this.active||(s=this._menuItems(this.activeMenu)[e]()),this.focus(i,s)},nextPage:function(t){var e,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each(function(){return(e=V(this)).offset().top-i-s<0}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var e,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each(function(){return 0<(e=V(this)).offset().top-i+s}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||V(t.target).closest(".ui-menu-item");var e={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,e)},_filterMenuItems:function(t){var t=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),e=new RegExp("^"+t,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return e.test(String.prototype.trim.call(V(this).children(".ui-menu-item-wrapper").text()))})}});V.widget("ui.autocomplete",{version:"1.13.2",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("<div>").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==V.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=V("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}.bind(this)},__response:function(t){t=t&&this._normalize(t),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:V.map(t,function(t){return"string"==typeof t?{label:t,value:t}:V.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var e=this.menu.element.empty();this._renderMenu(e,t),this.isNewMenu=!0,this.menu.refresh(),e.show(),this._resizeMenu(),e.position(V.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,t){var s=this;V.each(t,function(t,e){s._renderItemData(i,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(t,e){return V("<li>").append(V("<div>").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("<div>").text(e))},100))}});V.ui.autocomplete;var tt=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.13.2",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};if(t)return"controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(a=a.concat(e.get()))):void(V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(tt,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.13.2",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",(t=this.label.contents().not(this.element[0])).length&&(this.originalLabel+=t.clone().wrapAll("<div></div>").parent().html()),this.originalLabel&&(e.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(e.disabled=t),e},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+V.escapeSelector(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(this)._form().length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V("<span>"),this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var et;V.ui.checkboxradio;V.widget("ui.button",{version:"1.13.2",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),null!=(t=this.element[0].disabled)&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(t){t.keyCode===V.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(t,e){var i="iconPosition"!==t,s=i?this.options.iconPosition:e,t="top"===s||"bottom"===s;this.icon?i&&this._removeClass(this.icon,null,this.options.icon):(this.icon=V("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),i&&this._addClass(this.icon,null,e),this._attachIcon(s),t?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(s))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=(void 0===t.showLabel?this.options:t).showLabel,i=(void 0===t.icon?this.options:t).icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),(this.element[0].disabled=e)&&this.element.trigger("blur"))},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),!1!==V.uiBackCompat&&(V.widget("ui.button",V.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){"text"!==t?("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments)):this._super("showLabel",e)}}),V.fn.button=(et=V.fn.button,function(i){var t="string"==typeof i,s=Array.prototype.slice.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t=V(this).attr("type"),e=V.data(this,"ui-"+("checkbox"!==t&&"radio"!==t?"button":"checkboxradio"));return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for button widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on button prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V(this).attr("type"),e="checkbox"!==t&&"radio"!==t?"button":"checkboxradio",t=V.data(this,"ui-"+e);t?(t.option(i||{}),t._init&&t._init()):"button"!=e?V(this).checkboxradio(V.extend({icon:!1},i)):et.call(V(this),i)})),n}),V.fn.buttonset=function(){return V.ui.controlgroup||V.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))});var it;V.ui.button;function st(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:"",selectMonthLabel:"Select month",selectYearLabel:"Select year"},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,onUpdateDatepicker:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},V.extend(this._defaults,this.regional[""]),this.regional.en=V.extend(!0,{},this.regional[""]),this.regional["en-US"]=V.extend(!0,{},this.regional.en),this.dpDiv=nt(V("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function nt(t){var e="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.on("mouseout",e,function(){V(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",e,ot)}function ot(){V.datepicker._isDisabledDatepicker((it.inline?it.dpDiv.parent():it.input)[0])||(V(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),V(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).addClass("ui-datepicker-next-hover"))}function at(t,e){for(var i in V.extend(t,e),e)null==e[i]&&(t[i]=e[i]);return t}V.extend(V.ui,{datepicker:{version:"1.13.2"}}),V.extend(st.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return at(this._defaults,t||{}),this},_attachDatepicker:function(t,e){var i,s=t.nodeName.toLowerCase(),n="div"===s||"span"===s;t.id||(this.uuid+=1,t.id="dp"+this.uuid),(i=this._newInst(V(t),n)).settings=V.extend({},e||{}),"input"===s?this._connectDatepicker(t,i):n&&this._inlineDatepicker(t,i)},_newInst:function(t,e){return{id:t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:e,dpDiv:e?nt(V("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,e){var i=V(t);e.append=V([]),e.trigger=V([]),i.hasClass(this.markerClassName)||(this._attachments(i,e),i.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(e),V.data(t,"datepicker",e),e.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,e){var i,s=this._get(e,"appendText"),n=this._get(e,"isRTL");e.append&&e.append.remove(),s&&(e.append=V("<span>").addClass(this._appendClass).text(s),t[n?"before":"after"](e.append)),t.off("focus",this._showDatepicker),e.trigger&&e.trigger.remove(),"focus"!==(i=this._get(e,"showOn"))&&"both"!==i||t.on("focus",this._showDatepicker),"button"!==i&&"both"!==i||(s=this._get(e,"buttonText"),i=this._get(e,"buttonImage"),this._get(e,"buttonImageOnly")?e.trigger=V("<img>").addClass(this._triggerClass).attr({src:i,alt:s,title:s}):(e.trigger=V("<button type='button'>").addClass(this._triggerClass),i?e.trigger.html(V("<img>").attr({src:i,alt:s,title:s})):e.trigger.text(s)),t[n?"before":"after"](e.trigger),e.trigger.on("click",function(){return V.datepicker._datepickerShowing&&V.datepicker._lastInput===t[0]?V.datepicker._hideDatepicker():(V.datepicker._datepickerShowing&&V.datepicker._lastInput!==t[0]&&V.datepicker._hideDatepicker(),V.datepicker._showDatepicker(t[0])),!1}))},_autoSize:function(t){var e,i,s,n,o,a;this._get(t,"autoSize")&&!t.inline&&(o=new Date(2009,11,20),(a=this._get(t,"dateFormat")).match(/[DM]/)&&(e=function(t){for(n=s=i=0;n<t.length;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length))},_inlineDatepicker:function(t,e){var i=V(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(e.dpDiv),V.data(t,"datepicker",e),this._setDate(e,this._getDefaultDate(e),!0),this._updateDatepicker(e),this._updateAlternate(e),e.settings.disabled&&this._disableDatepicker(t),e.dpDiv.css("display","block"))},_dialogDatepicker:function(t,e,i,s,n){var o,a=this._dialogInst;return a||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=V("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),V("body").append(this._dialogInput),(a=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},V.data(this._dialogInput[0],"datepicker",a)),at(a.settings,s||{}),e=e&&e.constructor===Date?this._formatDate(a,e):e,this._dialogInput.val(e),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(o=document.documentElement.clientWidth,s=document.documentElement.clientHeight,e=document.documentElement.scrollLeft||document.body.scrollLeft,n=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[o/2-100+e,s/2-150+n]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),a.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),V.blockUI&&V.blockUI(this.dpDiv),V.data(this._dialogInput[0],"datepicker",a),this},_destroyDatepicker:function(t){var e,i=V(t),s=V.data(t,"datepicker");i.hasClass(this.markerClassName)&&(e=t.nodeName.toLowerCase(),V.removeData(t,"datepicker"),"input"===e?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==e&&"span"!==e||i.removeClass(this.markerClassName).empty(),it===s&&(it=null,this._curInst=null))},_enableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!1,s.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==t&&"span"!==t||((i=i.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!0,s.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==t&&"span"!==t||((i=i.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;e<this._disabledInputs.length;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(t){try{return V.data(t,"datepicker")}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,e,i){var s,n,o=this._getInst(t);if(2===arguments.length&&"string"==typeof e)return"defaults"===e?V.extend({},V.datepicker._defaults):o?"all"===e?V.extend({},o.settings):this._get(o,e):null;s=e||{},"string"==typeof e&&((s={})[e]=i),o&&(this._curInst===o&&this._hideDatepicker(),n=this._getDateDatepicker(t,!0),e=this._getMinMaxDate(o,"min"),i=this._getMinMaxDate(o,"max"),at(o.settings,s),null!==e&&void 0!==s.dateFormat&&void 0===s.minDate&&(o.settings.minDate=this._formatDate(o,e)),null!==i&&void 0!==s.dateFormat&&void 0===s.maxDate&&(o.settings.maxDate=this._formatDate(o,i)),"disabled"in s&&(s.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(V(t),o),this._autoSize(o),this._setDate(o,n),this._updateAlternate(o),this._updateDatepicker(o))},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){t=this._getInst(t);t&&this._updateDatepicker(t)},_setDateDatepicker:function(t,e){t=this._getInst(t);t&&(this._setDate(t,e),this._updateDatepicker(t),this._updateAlternate(t))},_getDateDatepicker:function(t,e){t=this._getInst(t);return t&&!t.inline&&this._setDateFromField(t,e),t?this._getDate(t):null},_doKeyDown:function(t){var e,i,s=V.datepicker._getInst(t.target),n=!0,o=s.dpDiv.is(".ui-datepicker-rtl");if(s._keyEvent=!0,V.datepicker._datepickerShowing)switch(t.keyCode){case 9:V.datepicker._hideDatepicker(),n=!1;break;case 13:return(i=V("td."+V.datepicker._dayOverClass+":not(."+V.datepicker._currentClass+")",s.dpDiv))[0]&&V.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,i[0]),(e=V.datepicker._get(s,"onSelect"))?(i=V.datepicker._formatDate(s),e.apply(s.input?s.input[0]:null,[i,s])):V.datepicker._hideDatepicker(),!1;case 27:V.datepicker._hideDatepicker();break;case 33:V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 34:V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&V.datepicker._clearDate(t.target),n=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&V.datepicker._gotoToday(t.target),n=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?1:-1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,-7,"D"),n=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?-1:1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,7,"D"),n=t.ctrlKey||t.metaKey;break;default:n=!1}else 36===t.keyCode&&t.ctrlKey?V.datepicker._showDatepicker(this):n=!1;n&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var e,i=V.datepicker._getInst(t.target);if(V.datepicker._get(i,"constrainInput"))return e=V.datepicker._possibleChars(V.datepicker._get(i,"dateFormat")),i=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||i<" "||!e||-1<e.indexOf(i)},_doKeyUp:function(t){t=V.datepicker._getInst(t.target);if(t.input.val()!==t.lastVal)try{V.datepicker.parseDate(V.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,V.datepicker._getFormatConfig(t))&&(V.datepicker._setDateFromField(t),V.datepicker._updateAlternate(t),V.datepicker._updateDatepicker(t))}catch(t){}return!0},_showDatepicker:function(t){var e,i,s,n;"input"!==(t=t.target||t).nodeName.toLowerCase()&&(t=V("input",t.parentNode)[0]),V.datepicker._isDisabledDatepicker(t)||V.datepicker._lastInput===t||(n=V.datepicker._getInst(t),V.datepicker._curInst&&V.datepicker._curInst!==n&&(V.datepicker._curInst.dpDiv.stop(!0,!0),n&&V.datepicker._datepickerShowing&&V.datepicker._hideDatepicker(V.datepicker._curInst.input[0])),!1!==(i=(s=V.datepicker._get(n,"beforeShow"))?s.apply(t,[t,n]):{})&&(at(n.settings,i),n.lastVal=null,V.datepicker._lastInput=t,V.datepicker._setDateFromField(n),V.datepicker._inDialog&&(t.value=""),V.datepicker._pos||(V.datepicker._pos=V.datepicker._findPos(t),V.datepicker._pos[1]+=t.offsetHeight),e=!1,V(t).parents().each(function(){return!(e|="fixed"===V(this).css("position"))}),s={left:V.datepicker._pos[0],top:V.datepicker._pos[1]},V.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),V.datepicker._updateDatepicker(n),s=V.datepicker._checkOffset(n,s,e),n.dpDiv.css({position:V.datepicker._inDialog&&V.blockUI?"static":e?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"}),n.inline||(i=V.datepicker._get(n,"showAnim"),s=V.datepicker._get(n,"duration"),n.dpDiv.css("z-index",function(t){for(var e,i;t.length&&t[0]!==document;){if(("absolute"===(e=t.css("position"))||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}(V(t))+1),V.datepicker._datepickerShowing=!0,V.effects&&V.effects.effect[i]?n.dpDiv.show(i,V.datepicker._get(n,"showOptions"),s):n.dpDiv[i||"show"](i?s:null),V.datepicker._shouldFocusInput(n)&&n.input.trigger("focus"),V.datepicker._curInst=n)))},_updateDatepicker:function(t){this.maxRows=4,(it=t).dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var e,i=this._getNumberOfMonths(t),s=i[1],n=t.dpDiv.find("."+this._dayOverClass+" a"),o=V.datepicker._get(t,"onUpdateDatepicker");0<n.length&&ot.apply(n.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<s&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",17*s+"em"),t.dpDiv[(1!==i[0]||1!==i[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===V.datepicker._curInst&&V.datepicker._datepickerShowing&&V.datepicker._shouldFocusInput(t)&&t.input.trigger("focus"),t.yearshtml&&(e=t.yearshtml,setTimeout(function(){e===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year").first().replaceWith(t.yearshtml),e=t.yearshtml=null},0)),o&&o.apply(t.input?t.input[0]:null,[t])},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(t,e,i){var s=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,a=t.input?t.input.outerHeight():0,r=document.documentElement.clientWidth+(i?0:V(document).scrollLeft()),l=document.documentElement.clientHeight+(i?0:V(document).scrollTop());return e.left-=this._get(t,"isRTL")?s-o:0,e.left-=i&&e.left===t.input.offset().left?V(document).scrollLeft():0,e.top-=i&&e.top===t.input.offset().top+a?V(document).scrollTop():0,e.left-=Math.min(e.left,e.left+s>r&&s<r?Math.abs(e.left+s-r):0),e.top-=Math.min(e.top,e.top+n>l&&n<l?Math.abs(n+a):0),e},_findPos:function(t){for(var e=this._getInst(t),i=this._get(e,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||V.expr.pseudos.hidden(t));)t=t[i?"previousSibling":"nextSibling"];return[(e=V(t).offset()).left,e.top]},_hideDatepicker:function(t){var e,i,s=this._curInst;!s||t&&s!==V.data(t,"datepicker")||this._datepickerShowing&&(e=this._get(s,"showAnim"),i=this._get(s,"duration"),t=function(){V.datepicker._tidyDialog(s)},V.effects&&(V.effects.effect[e]||V.effects[e])?s.dpDiv.hide(e,V.datepicker._get(s,"showOptions"),i,t):s.dpDiv["slideDown"===e?"slideUp":"fadeIn"===e?"fadeOut":"hide"](e?i:null,t),e||t(),this._datepickerShowing=!1,(t=this._get(s,"onClose"))&&t.apply(s.input?s.input[0]:null,[s.input?s.input.val():"",s]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),V.blockUI&&(V.unblockUI(),V("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(t){var e;V.datepicker._curInst&&(e=V(t.target),t=V.datepicker._getInst(e[0]),(e[0].id===V.datepicker._mainDivId||0!==e.parents("#"+V.datepicker._mainDivId).length||e.hasClass(V.datepicker.markerClassName)||e.closest("."+V.datepicker._triggerClass).length||!V.datepicker._datepickerShowing||V.datepicker._inDialog&&V.blockUI)&&(!e.hasClass(V.datepicker.markerClassName)||V.datepicker._curInst===t)||V.datepicker._hideDatepicker())},_adjustDate:function(t,e,i){var s=V(t),t=this._getInst(s[0]);this._isDisabledDatepicker(s[0])||(this._adjustInstDate(t,e,i),this._updateDatepicker(t))},_gotoToday:function(t){var e=V(t),i=this._getInst(e[0]);this._get(i,"gotoCurrent")&&i.currentDay?(i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear):(t=new Date,i.selectedDay=t.getDate(),i.drawMonth=i.selectedMonth=t.getMonth(),i.drawYear=i.selectedYear=t.getFullYear()),this._notifyChange(i),this._adjustDate(e)},_selectMonthYear:function(t,e,i){var s=V(t),t=this._getInst(s[0]);t["selected"+("M"===i?"Month":"Year")]=t["draw"+("M"===i?"Month":"Year")]=parseInt(e.options[e.selectedIndex].value,10),this._notifyChange(t),this._adjustDate(s)},_selectDay:function(t,e,i,s){var n=V(t);V(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(n[0])||((n=this._getInst(n[0])).selectedDay=n.currentDay=parseInt(V("a",s).attr("data-date")),n.selectedMonth=n.currentMonth=e,n.selectedYear=n.currentYear=i,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){t=V(t);this._selectDate(t,"")},_selectDate:function(t,e){var i=V(t),t=this._getInst(i[0]);e=null!=e?e:this._formatDate(t),t.input&&t.input.val(e),this._updateAlternate(t),(i=this._get(t,"onSelect"))?i.apply(t.input?t.input[0]:null,[e,t]):t.input&&t.input.trigger("change"),t.inline?this._updateDatepicker(t):(this._hideDatepicker(),this._lastInput=t.input[0],"object"!=typeof t.input[0]&&t.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(t){var e,i,s=this._get(t,"altField");s&&(e=this._get(t,"altFormat")||this._get(t,"dateFormat"),i=this._getDate(t),t=this.formatDate(e,i,this._getFormatConfig(t)),V(document).find(s).val(t))},noWeekends:function(t){t=t.getDay();return[0<t&&t<6,""]},iso8601Week:function(t){var e=new Date(t.getTime());return e.setDate(e.getDate()+4-(e.getDay()||7)),t=e.getTime(),e.setMonth(0),e.setDate(1),Math.floor(Math.round((t-e)/864e5)/7)+1},parseDate:function(e,n,t){if(null==e||null==n)throw"Invalid arguments";if(""===(n="object"==typeof n?n.toString():n+""))return null;for(var i,s,o,a=0,r=(t?t.shortYearCutoff:null)||this._defaults.shortYearCutoff,r="string"!=typeof r?r:(new Date).getFullYear()%100+parseInt(r,10),l=(t?t.dayNamesShort:null)||this._defaults.dayNamesShort,h=(t?t.dayNames:null)||this._defaults.dayNames,c=(t?t.monthNamesShort:null)||this._defaults.monthNamesShort,u=(t?t.monthNames:null)||this._defaults.monthNames,d=-1,p=-1,f=-1,g=-1,m=!1,_=function(t){t=w+1<e.length&&e.charAt(w+1)===t;return t&&w++,t},v=function(t){var e=_(t),e="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,e=new RegExp("^\\d{"+("y"===t?e:1)+","+e+"}"),e=n.substring(a).match(e);if(!e)throw"Missing number at position "+a;return a+=e[0].length,parseInt(e[0],10)},b=function(t,e,i){var s=-1,e=V.map(_(t)?i:e,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(V.each(e,function(t,e){var i=e[1];if(n.substr(a,i.length).toLowerCase()===i.toLowerCase())return s=e[0],a+=i.length,!1}),-1!==s)return s+1;throw"Unknown name at position "+a},y=function(){if(n.charAt(a)!==e.charAt(w))throw"Unexpected literal at position "+a;a++},w=0;w<e.length;w++)if(m)"'"!==e.charAt(w)||_("'")?y():m=!1;else switch(e.charAt(w)){case"d":f=v("d");break;case"D":b("D",l,h);break;case"o":g=v("o");break;case"m":p=v("m");break;case"M":p=b("M",c,u);break;case"y":d=v("y");break;case"@":d=(o=new Date(v("@"))).getFullYear(),p=o.getMonth()+1,f=o.getDate();break;case"!":d=(o=new Date((v("!")-this._ticksTo1970)/1e4)).getFullYear(),p=o.getMonth()+1,f=o.getDate();break;case"'":_("'")?y():m=!0;break;default:y()}if(a<n.length&&(s=n.substr(a),!/^\s+/.test(s)))throw"Extra/unparsed characters found in date: "+s;if(-1===d?d=(new Date).getFullYear():d<100&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=r?0:-100)),-1<g)for(p=1,f=g;;){if(f<=(i=this._getDaysInMonth(d,p-1)))break;p++,f-=i}if((o=this._daylightSavingAdjust(new Date(d,p-1,f))).getFullYear()!==d||o.getMonth()+1!==p||o.getDate()!==f)throw"Invalid date";return o},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(e,t,i){if(!t)return"";function s(t,e,i){var s=""+e;if(c(t))for(;s.length<i;)s="0"+s;return s}function n(t,e,i,s){return(c(t)?s:i)[e]}var o,a=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,r=(i?i.dayNames:null)||this._defaults.dayNames,l=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,h=(i?i.monthNames:null)||this._defaults.monthNames,c=function(t){t=o+1<e.length&&e.charAt(o+1)===t;return t&&o++,t},u="",d=!1;if(t)for(o=0;o<e.length;o++)if(d)"'"!==e.charAt(o)||c("'")?u+=e.charAt(o):d=!1;else switch(e.charAt(o)){case"d":u+=s("d",t.getDate(),2);break;case"D":u+=n("D",t.getDay(),a,r);break;case"o":u+=s("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=s("m",t.getMonth()+1,2);break;case"M":u+=n("M",t.getMonth(),l,h);break;case"y":u+=c("y")?t.getFullYear():(t.getFullYear()%100<10?"0":"")+t.getFullYear()%100;break;case"@":u+=t.getTime();break;case"!":u+=1e4*t.getTime()+this._ticksTo1970;break;case"'":c("'")?u+="'":d=!0;break;default:u+=e.charAt(o)}return u},_possibleChars:function(e){for(var t="",i=!1,s=function(t){t=n+1<e.length&&e.charAt(n+1)===t;return t&&n++,t},n=0;n<e.length;n++)if(i)"'"!==e.charAt(n)||s("'")?t+=e.charAt(n):i=!1;else switch(e.charAt(n)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":s("'")?t+="'":i=!0;break;default:t+=e.charAt(n)}return t},_get:function(t,e){return(void 0!==t.settings[e]?t.settings:this._defaults)[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(t){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(r,t,e){var i,s,t=null==t||""===t?e:"string"==typeof t?function(t){try{return V.datepicker.parseDate(V.datepicker._get(r,"dateFormat"),t,V.datepicker._getFormatConfig(r))}catch(t){}for(var e=(t.toLowerCase().match(/^c/)?V.datepicker._getDate(r):null)||new Date,i=e.getFullYear(),s=e.getMonth(),n=e.getDate(),o=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=o.exec(t);a;){switch(a[2]||"d"){case"d":case"D":n+=parseInt(a[1],10);break;case"w":case"W":n+=7*parseInt(a[1],10);break;case"m":case"M":s+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s))}a=o.exec(t)}return new Date(i,s,n)}(t):"number"==typeof t?isNaN(t)?e:(i=t,(s=new Date).setDate(s.getDate()+i),s):new Date(t.getTime());return(t=t&&"Invalid Date"===t.toString()?e:t)&&(t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0)),this._daylightSavingAdjust(t)},_daylightSavingAdjust:function(t){return t?(t.setHours(12<t.getHours()?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,e=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=e.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=e.getMonth(),t.drawYear=t.selectedYear=t.currentYear=e.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){return!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay))},_attachHandlers:function(t){var e=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){V.datepicker._adjustDate(i,-e,"M")},next:function(){V.datepicker._adjustDate(i,+e,"M")},hide:function(){V.datepicker._hideDatepicker()},today:function(){V.datepicker._gotoToday(i)},selectDay:function(){return V.datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return V.datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return V.datepicker._selectMonthYear(i,this,"Y"),!1}};V(this).on(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,l,h,c,u,d,p,f,g,m,_,v,b,y,w,x,k,C,D,I,T,P,M,S,H,z,A=new Date,O=this._daylightSavingAdjust(new Date(A.getFullYear(),A.getMonth(),A.getDate())),N=this._get(t,"isRTL"),E=this._get(t,"showButtonPanel"),W=this._get(t,"hideIfNoPrevNext"),F=this._get(t,"navigationAsDateFormat"),L=this._getNumberOfMonths(t),R=this._get(t,"showCurrentAtPos"),A=this._get(t,"stepMonths"),Y=1!==L[0]||1!==L[1],B=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),j=this._getMinMaxDate(t,"min"),q=this._getMinMaxDate(t,"max"),K=t.drawMonth-R,U=t.drawYear;if(K<0&&(K+=12,U--),q)for(e=this._daylightSavingAdjust(new Date(q.getFullYear(),q.getMonth()-L[0]*L[1]+1,q.getDate())),e=j&&e<j?j:e;this._daylightSavingAdjust(new Date(U,K,1))>e;)--K<0&&(K=11,U--);for(t.drawMonth=K,t.drawYear=U,R=this._get(t,"prevText"),R=F?this.formatDate(R,this._daylightSavingAdjust(new Date(U,K-A,1)),this._getFormatConfig(t)):R,i=this._canAdjustMonth(t,-1,U,K)?V("<a>").attr({class:"ui-datepicker-prev ui-corner-all","data-handler":"prev","data-event":"click",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"e":"w")).text(R))[0].outerHTML:W?"":V("<a>").attr({class:"ui-datepicker-prev ui-corner-all ui-state-disabled",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"e":"w")).text(R))[0].outerHTML,R=this._get(t,"nextText"),R=F?this.formatDate(R,this._daylightSavingAdjust(new Date(U,K+A,1)),this._getFormatConfig(t)):R,s=this._canAdjustMonth(t,1,U,K)?V("<a>").attr({class:"ui-datepicker-next ui-corner-all","data-handler":"next","data-event":"click",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"w":"e")).text(R))[0].outerHTML:W?"":V("<a>").attr({class:"ui-datepicker-next ui-corner-all ui-state-disabled",title:R}).append(V("<span>").attr("class","ui-icon ui-icon-circle-triangle-"+(N?"w":"e")).text(R))[0].outerHTML,A=this._get(t,"currentText"),W=this._get(t,"gotoCurrent")&&t.currentDay?B:O,A=F?this.formatDate(A,W,this._getFormatConfig(t)):A,R="",t.inline||(R=V("<button>").attr({type:"button",class:"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all","data-handler":"hide","data-event":"click"}).text(this._get(t,"closeText"))[0].outerHTML),F="",E&&(F=V("<div class='ui-datepicker-buttonpane ui-widget-content'>").append(N?R:"").append(this._isInRange(t,W)?V("<button>").attr({type:"button",class:"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all","data-handler":"today","data-event":"click"}).text(A):"").append(N?"":R)[0].outerHTML),n=parseInt(this._get(t,"firstDay"),10),n=isNaN(n)?0:n,o=this._get(t,"showWeek"),a=this._get(t,"dayNames"),r=this._get(t,"dayNamesMin"),l=this._get(t,"monthNames"),h=this._get(t,"monthNamesShort"),c=this._get(t,"beforeShowDay"),u=this._get(t,"showOtherMonths"),d=this._get(t,"selectOtherMonths"),p=this._getDefaultDate(t),f="",m=0;m<L[0];m++){for(_="",this.maxRows=4,v=0;v<L[1];v++){if(b=this._daylightSavingAdjust(new Date(U,K,t.selectedDay)),y=" ui-corner-all",w="",Y){if(w+="<div class='ui-datepicker-group",1<L[1])switch(v){case 0:w+=" ui-datepicker-group-first",y=" ui-corner-"+(N?"right":"left");break;case L[1]-1:w+=" ui-datepicker-group-last",y=" ui-corner-"+(N?"left":"right");break;default:w+=" ui-datepicker-group-middle",y=""}w+="'>"}for(w+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+y+"'>"+(/all|left/.test(y)&&0===m?N?s:i:"")+(/all|right/.test(y)&&0===m?N?i:s:"")+this._generateMonthYearHeader(t,K,U,j,q,0<m||0<v,l,h)+"</div><table class='ui-datepicker-calendar'><thead><tr>",x=o?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",g=0;g<7;g++)x+="<th scope='col'"+(5<=(g+n+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+a[k=(g+n)%7]+"'>"+r[k]+"</span></th>";for(w+=x+"</tr></thead><tbody>",D=this._getDaysInMonth(U,K),U===t.selectedYear&&K===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,D)),C=(this._getFirstDayOfMonth(U,K)-n+7)%7,D=Math.ceil((C+D)/7),I=Y&&this.maxRows>D?this.maxRows:D,this.maxRows=I,T=this._daylightSavingAdjust(new Date(U,K,1-C)),P=0;P<I;P++){for(w+="<tr>",M=o?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(T)+"</td>":"",g=0;g<7;g++)S=c?c.apply(t.input?t.input[0]:null,[T]):[!0,""],z=(H=T.getMonth()!==K)&&!d||!S[0]||j&&T<j||q&&q<T,M+="<td class='"+(5<=(g+n+6)%7?" ui-datepicker-week-end":"")+(H?" ui-datepicker-other-month":"")+(T.getTime()===b.getTime()&&K===t.selectedMonth&&t._keyEvent||p.getTime()===T.getTime()&&p.getTime()===b.getTime()?" "+this._dayOverClass:"")+(z?" "+this._unselectableClass+" ui-state-disabled":"")+(H&&!u?"":" "+S[1]+(T.getTime()===B.getTime()?" "+this._currentClass:"")+(T.getTime()===O.getTime()?" ui-datepicker-today":""))+"'"+(H&&!u||!S[2]?"":" title='"+S[2].replace(/'/g,"&#39;")+"'")+(z?"":" data-handler='selectDay' data-event='click' data-month='"+T.getMonth()+"' data-year='"+T.getFullYear()+"'")+">"+(H&&!u?"&#xa0;":z?"<span class='ui-state-default'>"+T.getDate()+"</span>":"<a class='ui-state-default"+(T.getTime()===O.getTime()?" ui-state-highlight":"")+(T.getTime()===B.getTime()?" ui-state-active":"")+(H?" ui-priority-secondary":"")+"' href='#' aria-current='"+(T.getTime()===B.getTime()?"true":"false")+"' data-date='"+T.getDate()+"'>"+T.getDate()+"</a>")+"</td>",T.setDate(T.getDate()+1),T=this._daylightSavingAdjust(T);w+=M+"</tr>"}11<++K&&(K=0,U++),_+=w+="</tbody></table>"+(Y?"</div>"+(0<L[0]&&v===L[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}f+=_}return f+=F,t._keyEvent=!1,f},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="<div class='ui-datepicker-title'>",y="";if(o||!f)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' aria-label='"+_+"' data-handler='selectMonth' data-event='change'>",c=0;c<12;c++)(!l||c>=s.getMonth())&&(!h||c<=n.getMonth())&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(m||(b+=y+(!o&&f&&g?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!g)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="<select class='ui-datepicker-year' aria-label='"+v+"' data-handler='selectYear' data-event='change'>";d<=p;d++)t.yearshtml+="<option value='"+d+"'"+(d===i?" selected='selected'":"")+">"+d+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),e=i&&e<i?i:e;return t&&t<e?t:e},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){t=this._get(t,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),n=this._daylightSavingAdjust(new Date(i,s+(e<0?e:n[0]*n[1]),1));return e<0&&n.setDate(this._getDaysInMonth(n.getFullYear(),n.getMonth())),this._isInRange(t,n)},_isInRange:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=null,o=null,a=this._get(t,"yearRange");return a&&(t=a.split(":"),a=(new Date).getFullYear(),n=parseInt(t[0],10),o=parseInt(t[1],10),t[0].match(/[+\-].*/)&&(n+=a),t[1].match(/[+\-].*/)&&(o+=a)),(!i||e.getTime()>=i.getTime())&&(!s||e.getTime()<=s.getTime())&&(!n||e.getFullYear()>=n)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new st,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.2";V.datepicker,V.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var rt=!1;V(document).on("mouseup",function(){rt=!1});V.widget("ui.mouse",{version:"1.13.2",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!rt){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&V(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),rt=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(V.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,rt=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n<o.length;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},V.ui.safeBlur=function(t){t&&"body"!==t.nodeName.toLowerCase()&&V(t).trigger("blur")};V.widget("ui.draggable",V.ui.mouse,{version:"1.13.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(t){var e=this.options;return!(this.helper||e.disabled||0<V(t.target).closest(".ui-resizable-handle").length)&&(this.handle=this._getHandle(t),!!this.handle&&(this._blurActiveElement(t),this._blockFrames(!0===e.iframeFix?"iframe":e.iframeFix),!0))},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=V(this);return V("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=V.ui.safeActiveElement(this.document[0]);V(t.target).closest(e).length||V.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===V(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this._setContainment(),!1===this._trigger("start",t)?(this._clear(),!1):(this._cacheHelperProportions(),V.ui.ddmanager&&!e.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),V.ui.ddmanager&&V.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(t,e){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!e){e=this._uiHash();if(!1===this._trigger("drag",t,e))return this._mouseUp(new V.Event("mouseup",t)),!1;this.position=e.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var e=this,i=!1;return V.ui.ddmanager&&!this.options.dropBehaviour&&(i=V.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||!0===this.options.revert||"function"==typeof this.options.revert&&this.options.revert.call(this.element,i)?V(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==e._trigger("stop",t)&&e._clear()}):!1!==this._trigger("stop",t)&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),V.ui.ddmanager&&V.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),V.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new V.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return!this.options.handle||!!V(t.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var e=this.options,i="function"==typeof e.helper,t=i?V(e.helper.apply(this.element[0],[t])):"clone"===e.helper?this.element.clone().removeAttr("id"):this.element;return t.parents("body").length||t.appendTo("parent"===e.appendTo?this.element[0].parentNode:e.appendTo),i&&t[0]===this.element[0]&&this._setPositionRelative(),t[0]===this.element[0]||/(fixed|absolute)/.test(t.css("position"))||t.css("position","absolute"),t},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),e=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==e&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this._isRootNode(this.offsetParent[0])?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i,s=this.options,n=this.document[0];this.relativeContainer=null,s.containment?"window"!==s.containment?"document"!==s.containment?s.containment.constructor!==Array?("parent"===s.containment&&(s.containment=this.helper[0].parentNode),(i=(e=V(s.containment))[0])&&(t=/(scroll|auto)/.test(e.css("overflow")),this.containment=[(parseInt(e.css("borderLeftWidth"),10)||0)+(parseInt(e.css("paddingLeft"),10)||0),(parseInt(e.css("borderTopWidth"),10)||0)+(parseInt(e.css("paddingTop"),10)||0),(t?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(e.css("borderRightWidth"),10)||0)-(parseInt(e.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(e.css("borderBottomWidth"),10)||0)-(parseInt(e.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=e)):this.containment=s.containment:this.containment=[0,0,V(n).width()-this.helperProportions.width-this.margins.left,(V(n).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[V(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,V(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,V(window).scrollLeft()+V(window).width()-this.helperProportions.width-this.margins.left,V(window).scrollTop()+(V(window).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1,t=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:t?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:t?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s=this.options,n=this._isRootNode(this.scrollParent[0]),o=t.pageX,a=t.pageY;return n&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(i=this.relativeContainer?(i=this.relativeContainer.offset(),[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]):this.containment,t.pageX-this.offset.click.left<i[0]&&(o=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(a=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(a=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(a=this.originalPageY)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY<s.scrollSensitivity?o.scrollTop=n=o.scrollTop+s.scrollSpeed:t.pageY-i.overflowOffset.top<s.scrollSensitivity&&(o.scrollTop=n=o.scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+o.offsetWidth-t.pageX<s.scrollSensitivity?o.scrollLeft=n=o.scrollLeft+s.scrollSpeed:t.pageX-i.overflowOffset.left<s.scrollSensitivity&&(o.scrollLeft=n=o.scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(t.pageY-V(a).scrollTop()<s.scrollSensitivity?n=V(a).scrollTop(V(a).scrollTop()-s.scrollSpeed):V(window).height()-(t.pageY-V(a).scrollTop())<s.scrollSensitivity&&(n=V(a).scrollTop(V(a).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(t.pageX-V(a).scrollLeft()<s.scrollSensitivity?n=V(a).scrollLeft(V(a).scrollLeft()-s.scrollSpeed):V(window).width()-(t.pageX-V(a).scrollLeft())<s.scrollSensitivity&&(n=V(a).scrollLeft(V(a).scrollLeft()+s.scrollSpeed)))),!1!==n&&V.ui.ddmanager&&!s.dropBehaviour&&V.ui.ddmanager.prepareOffsets(i,t)}}),V.ui.plugin.add("draggable","snap",{start:function(t,e,i){var s=i.options;i.snapElements=[],V(s.snap.constructor!==String?s.snap.items||":data(ui-draggable)":s.snap).each(function(){var t=V(this),e=t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:e.top,left:e.left})})},drag:function(t,e,i){for(var s,n,o,a,r,l,h,c,u,d=i.options,p=d.snapTolerance,f=e.offset.left,g=f+i.helperProportions.width,m=e.offset.top,_=m+i.helperProportions.height,v=i.snapElements.length-1;0<=v;v--)l=(r=i.snapElements[v].left-i.margins.left)+i.snapElements[v].width,c=(h=i.snapElements[v].top-i.margins.top)+i.snapElements[v].height,g<r-p||l+p<f||_<h-p||c+p<m||!V.contains(i.snapElements[v].item.ownerDocument,i.snapElements[v].item)?(i.snapElements[v].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=!1):("inner"!==d.snapMode&&(s=Math.abs(h-_)<=p,n=Math.abs(c-m)<=p,o=Math.abs(r-g)<=p,a=Math.abs(l-f)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:h-i.helperProportions.height,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r-i.helperProportions.width}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:l}).left)),u=s||n||o||a,"outer"!==d.snapMode&&(s=Math.abs(h-m)<=p,n=Math.abs(c-_)<=p,o=Math.abs(r-f)<=p,a=Math.abs(l-g)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:h,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c-i.helperProportions.height,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:l-i.helperProportions.width}).left)),!i.snapElements[v].snapping&&(s||n||o||a||u)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=s||n||o||a||u)}}),V.ui.plugin.add("draggable","stack",{start:function(t,e,i){var s,i=i.options,i=V.makeArray(V(i.stack)).sort(function(t,e){return(parseInt(V(t).css("zIndex"),10)||0)-(parseInt(V(e).css("zIndex"),10)||0)});i.length&&(s=parseInt(V(i[0]).css("zIndex"),10)||0,V(i).each(function(t){V(this).css("zIndex",s+t)}),this.css("zIndex",s+i.length))}}),V.ui.plugin.add("draggable","zIndex",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("zIndex")&&(i._zIndex=e.css("zIndex")),e.css("zIndex",i.zIndex)},stop:function(t,e,i){i=i.options;i._zIndex&&V(e.helper).css("zIndex",i._zIndex)}});V.ui.draggable;V.widget("ui.resizable",V.ui.mouse,{version:"1.13.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){if("hidden"===V(t).css("overflow"))return!1;var i=e&&"left"===e?"scrollLeft":"scrollTop",e=!1;if(0<t[i])return!0;try{t[i]=1,e=0<t[i],t[i]=0}catch(t){}return e},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),V.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(V("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=String.prototype.trim.call(i[e])),n=V("<div>"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),s<n.maxWidth&&(n.maxWidth=s),t<n.maxHeight&&(n.maxHeight=t)),this._vBoundaries=n},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||V("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,n={width:i.size.width-a,height:i.size.height-o},a=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,o&&a?{top:o,left:a}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=V(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,a=o instanceof V?o.get(0):/parent/.test(o)?e.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(a,"left")?a.scrollWidth:o,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,a={top:0,left:0},r=e.containerElement,t=!0;r[0]!==document&&/static/.test(r.css("position"))&&(a=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-a.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-a.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-a.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,u=Math.round((s.height-n.height)/h)*h,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidth<d,g=i.maxHeight&&i.maxHeight<p,m=i.minWidth&&i.minWidth>d,s=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),s&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-h<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<p-h?(e.size.height=p,e.position.top=o.top-u):(p=h-t.height,e.size.height=p,e.position.top=o.top+n.height-p),0<d-l?(e.size.width=d,e.position.left=o.left-c):(d=l-t.width,e.size.width=d,e.position.left=o.left+n.width-d))}});V.ui.resizable;V.widget("ui.dialog",{version:"1.13.2",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var e=V(this).css(t).offset().top;e<0&&V(this).css("top",t.top-e)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&V.fn.draggable&&this._makeDraggable(),this.options.resizable&&V.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?V(t):this.document.find(t||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:V.noop,enable:V.noop,close:function(t){var e=this;this._isOpen&&!1!==this._trigger("beforeClose",t)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||V.ui.safeBlur(V.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){e._trigger("close",t)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!1,s=this.uiDialog.siblings(".ui-front:visible").map(function(){return+V(this).css("z-index")}).get(),s=Math.max.apply(null,s);return s>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(V.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=!(t=!(t=!(t=!(t=t||this.element.find("[autofocus]")).length?this.element.find(":tabbable"):t).length?this.uiDialogButtonPane.find(":tabbable"):t).length?this.uiDialogTitlebarClose.filter(":tabbable"):t).length?this.uiDialog:t).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=V.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=V("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);var e,i,s;t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("<button type='button'></button>").button({label:V("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=V("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("<button></button>",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("<a>").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i,s;this.options.modal&&(i=V.fn.jquery.substring(0,4),s=!0,this._delay(function(){s=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;s||((e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable(),"3.4."!==i&&"3.5."!==i||e._delay(e._restoreTabbableFocus)))}.bind(this)),this.overlay=V("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});V.ui.dialog;function lt(t,e,i){return e<=t&&t<e+i}V.widget("ui.droppable",{version:"1.13.2",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept="function"==typeof i?i:function(t){return t.is(i)},this.proportions=function(){if(!arguments.length)return t=t||{width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){V.ui.ddmanager.droppables[t]=V.ui.ddmanager.droppables[t]||[],V.ui.ddmanager.droppables[t].push(this)},_splice:function(t){for(var e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var t=V.ui.ddmanager.droppables[this.options.scope];this._splice(t)},_setOption:function(t,e){var i;"accept"===t?this.accept="function"==typeof e?e:function(t){return t.is(e)}:"scope"===t&&(i=V.ui.ddmanager.droppables[this.options.scope],this._splice(i),this._addToManager(e)),this._super(t,e)},_activate:function(t){var e=V.ui.ddmanager.current;this._addActiveClass(),e&&this._trigger("activate",t,this.ui(e))},_deactivate:function(t){var e=V.ui.ddmanager.current;this._removeActiveClass(),e&&this._trigger("deactivate",t,this.ui(e))},_over:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._addHoverClass(),this._trigger("over",t,this.ui(e)))},_out:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._removeHoverClass(),this._trigger("out",t,this.ui(e)))},_drop:function(e,t){var i=t||V.ui.ddmanager.current,s=!1;return!(!i||(i.currentItem||i.element)[0]===this.element[0])&&(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=V(this).droppable("instance");if(t.options.greedy&&!t.options.disabled&&t.options.scope===i.options.scope&&t.accept.call(t.element[0],i.currentItem||i.element)&&V.ui.intersect(i,V.extend(t,{offset:t.element.offset()}),t.options.tolerance,e))return!(s=!0)}),!s&&(!!this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(i)),this.element)))},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}}),V.ui.intersect=function(t,e,i,s){if(!e.offset)return!1;var n=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,a=n+t.helperProportions.width,r=o+t.helperProportions.height,l=e.offset.left,h=e.offset.top,c=l+e.proportions().width,u=h+e.proportions().height;switch(i){case"fit":return l<=n&&a<=c&&h<=o&&r<=u;case"intersect":return l<n+t.helperProportions.width/2&&a-t.helperProportions.width/2<c&&h<o+t.helperProportions.height/2&&r-t.helperProportions.height/2<u;case"pointer":return lt(s.pageY,h,e.proportions().height)&&lt(s.pageX,l,e.proportions().width);case"touch":return(h<=o&&o<=u||h<=r&&r<=u||o<h&&u<r)&&(l<=n&&n<=c||l<=a&&a<=c||n<l&&c<a);default:return!1}},!(V.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(t,e){var i,s,n=V.ui.ddmanager.droppables[t.options.scope]||[],o=e?e.type:null,a=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();t:for(i=0;i<n.length;i++)if(!(n[i].options.disabled||t&&!n[i].accept.call(n[i].element[0],t.currentItem||t.element))){for(s=0;s<a.length;s++)if(a[s]===n[i].element[0]){n[i].proportions().height=0;continue t}n[i].visible="none"!==n[i].element.css("display"),n[i].visible&&("mousedown"===o&&n[i]._activate.call(n[i],e),n[i].offset=n[i].element.offset(),n[i].proportions({width:n[i].element[0].offsetWidth,height:n[i].element[0].offsetHeight}))}},drop:function(t,e){var i=!1;return V.each((V.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&V.ui.intersect(t,this,this.options.tolerance,e)&&(i=this._drop.call(this,e)||i),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,e)))}),i},dragStart:function(t,e){t.element.parentsUntil("body").on("scroll.droppable",function(){t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)})},drag:function(n,o){n.options.refreshPositions&&V.ui.ddmanager.prepareOffsets(n,o),V.each(V.ui.ddmanager.droppables[n.options.scope]||[],function(){var t,e,i,s;this.options.disabled||this.greedyChild||!this.visible||(s=!(i=V.ui.intersect(n,this,this.options.tolerance,o))&&this.isover?"isout":i&&!this.isover?"isover":null)&&(this.options.greedy&&(e=this.options.scope,(i=this.element.parents(":data(ui-droppable)").filter(function(){return V(this).droppable("instance").options.scope===e})).length&&((t=V(i[0]).droppable("instance")).greedyChild="isover"===s)),t&&"isover"===s&&(t.isover=!1,t.isout=!0,t._out.call(t,o)),this[s]=!0,this["isout"===s?"isover":"isout"]=!1,this["isover"===s?"_over":"_out"].call(this,o),t&&"isout"===s&&(t.isout=!1,t.isover=!0,t._over.call(t,o)))})},dragStop:function(t,e){t.element.parentsUntil("body").off("scroll.droppable"),t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)}})!==V.uiBackCompat&&V.widget("ui.droppable",V.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}});V.ui.droppable,V.widget("ui.progressbar",{version:"1.13.2",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=V("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.13.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY;return l<a&&(t=l,l=a,a=t),h<r&&(t=h,h=r,r=t),this.helper.css({left:a,top:r,width:l-a,height:h-r}),this.selectees.each(function(){var t=V.data(this,"selectable-item"),e=!1,i={};t&&t.element!==n.element[0]&&(i.left=t.left+n.elementPos.left,i.right=t.right+n.elementPos.left,i.top=t.top+n.elementPos.top,i.bottom=t.bottom+n.elementPos.top,"touch"===o.tolerance?e=!(i.left>l||i.right<a||i.top>h||i.bottom<r):"fit"===o.tolerance&&(e=i.left>a&&i.right<l&&i.top>r&&i.bottom<h),e?(t.selected&&(n._removeClass(t.$element,"ui-selected"),t.selected=!1),t.unselecting&&(n._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1),t.selecting||(n._addClass(t.$element,"ui-selecting"),t.selecting=!0,n._trigger("selecting",s,{selecting:t.element}))):(t.selecting&&((s.metaKey||s.ctrlKey)&&t.startselected?(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,n._addClass(t.$element,"ui-selected"),t.selected=!0):(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,t.startselected&&(n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0),n._trigger("unselecting",s,{unselecting:t.element}))),t.selected&&(s.metaKey||s.ctrlKey||t.startselected||(n._removeClass(t.$element,"ui-selected"),t.selected=!1,n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,n._trigger("unselecting",s,{unselecting:t.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,V(".ui-unselecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1,t.startselected=!1,i._trigger("unselected",e,{unselected:t.element})}),V(".ui-selecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-selecting")._addClass(t.$element,"ui-selected"),t.selecting=!1,t.selected=!0,t.startselected=!0,i._trigger("selected",e,{selected:t.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),V.widget("ui.selectmenu",[V.ui.formResetMixin,{version:"1.13.2",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("<span>").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._setSelection(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("<span>");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("<li>",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("<li>"),s=V("<div>",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.trigger("focus"))},_documentClick:{mousedown:function(t){this.isOpen&&(V(t.target).closest(".ui-selectmenu-menu, #"+V.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){e.hidden||s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.13.2",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t<n;t++)s.push("<span tabindex='0'></span>");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(a),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e<s||s===e&&(t===r._lastChangedValue||r.values(t)===l.min))&&(s=e,n=V(this),o=t)}),!1!==this._start(t,o)&&(this._mouseSliding=!0,this._handleIndex=o,this._addClass(n,null,"ui-state-active"),n.trigger("focus"),e=n.offset(),a=!V(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=a?{left:0,top:0}:{left:t.pageX-e.left-n.width()/2,top:t.pageY-e.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,i),this._animateOff=!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},e=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,e),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,t="horizontal"===this.orientation?(e=this.elementSize.width,t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),t=t/e;return(t=1<t?1:t)<0&&(t=0),"vertical"===this.orientation&&(t=1-t),e=this._valueMax()-this._valueMin(),e=this._valueMin()+t*e,this._trimAlignValue(e)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n=this.value(),o=this.values();this._hasMultipleValues()&&(s=this.values(e?0:1),n=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(s,i):Math.max(s,i)),o[e]=i),i!==n&&!1!==this._trigger("slide",t,this._uiHash(e,i,o))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,e){var i,s,n;if(1<arguments.length)return this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!Array.isArray(t))return this._hasMultipleValues()?this._values(t):this.value();for(i=this.options.values,s=t,n=0;n<i.length;n+=1)i[n]=this._trimAlignValue(s[n]),this._change(null,n);this._refreshValue()},_setOption:function(t,e){var i,s=0;switch("range"===t&&!0===this.options.range&&("min"===e?(this.options.value=this._values(0),this.options.values=null):"max"===e&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),Array.isArray(this.options.values)&&(s=this.options.values.length),this._super(t,e),t){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(e),this.handles.css("horizontal"===e?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=s-1;0<=i;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i;if(arguments.length)return t=this.options.values[t],t=this._trimAlignValue(t);if(this._hasMultipleValues()){for(e=this.options.values.slice(),i=0;i<e.length;i+=1)e[i]=this._trimAlignValue(e[i]);return e}return[]},_trimAlignValue:function(t){if(t<=this._valueMin())return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=0<this.options.step?this.options.step:1,i=(t-this._valueMin())%e,t=t-i;return 2*Math.abs(i)>=e&&(t+=0<i?e:-e),parseFloat(t.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step;(t=Math.round((t-e)/i)*i+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.13.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t<e+i},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var t=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),V.each(this.items,function(){t._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;0<=t;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,e){var i=null,s=!1,n=this;return!this.reverting&&(!this.options.disabled&&"static"!==this.options.type&&(this._refreshItems(t),V(t.target).parents().each(function(){if(V.data(this,n.widgetName+"-item")===n)return i=V(this),!1}),!!(i=V.data(t.target,n.widgetName+"-item")===n?V(t.target):i)&&(!(this.options.handle&&!e&&(V(this.options.handle,i).find("*").addBack().each(function(){this===t.target&&(s=!0)}),!s))&&(this.currentItem=i,this._removeCurrentsFromItems(),!0))))},_mouseStart:function(t,e,i){var s,n,o=this.options;if((this.currentContainer=this).refreshPositions(),this.appendTo=V("parent"!==o.appendTo?o.appendTo:this.currentItem.parent()),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},V.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),this.scrollParent=this.placeholder.scrollParent(),V.extend(this.offset,{parent:this._getParentOffset()}),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",o.cursor),this.storedStylesheet=V("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<e.scrollSensitivity?this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop+e.scrollSpeed:t.pageY-this.overflowOffset.top<e.scrollSensitivity&&(this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop-e.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<e.scrollSensitivity?this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft+e.scrollSpeed:t.pageX-this.overflowOffset.left<e.scrollSensitivity&&(this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft-e.scrollSpeed)):(t.pageY-this.document.scrollTop()<e.scrollSensitivity?i=this.document.scrollTop(this.document.scrollTop()-e.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<e.scrollSensitivity&&(i=this.document.scrollTop(this.document.scrollTop()+e.scrollSpeed)),t.pageX-this.document.scrollLeft()<e.scrollSensitivity?i=this.document.scrollLeft(this.document.scrollLeft()-e.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<e.scrollSensitivity&&(i=this.document.scrollLeft(this.document.scrollLeft()+e.scrollSpeed))),i},_mouseDrag:function(t){var e,i,s,n,o=this.options;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),o.scroll&&!1!==this._scroll(t)&&(this._refreshItemPositions(!0),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t)),this.dragDirection={vertical:this._getDragVerticalDirection(),horizontal:this._getDragHorizontalDirection()},e=this.items.length-1;0<=e;e--)if(s=(i=this.items[e]).item[0],(n=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===n?"next":"prev"]()[0]===s||V.contains(this.placeholder[0],s)||"semi-dynamic"===this.options.type&&V.contains(this.element[0],s))){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,e){var i,s,n,o;if(t)return V.ui.ddmanager&&!this.options.dropBehaviour&&V.ui.ddmanager.drop(this,t),this.options.revert?(s=(i=this).placeholder.offset(),o={},(n=this.options.axis)&&"x"!==n||(o.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(o.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,V(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){i._clear(t)})):this._clear(t,e),!1},cancel:function(){if(this.dragging){this._mouseUp(new V.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var t=this.containers.length-1;0<=t;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),V.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?V(this.domPosition.prev).after(this.currentItem):V(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var t=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},V(t).each(function(){var t=(V(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);t&&i.push((e.key||t[1]+"[]")+"="+(e.key&&e.expression?t[1]:t[2]))}),!i.length&&e.key&&i.push(e.key+"="),i.join("&")},toArray:function(t){var e=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e.each(function(){i.push(V(t.item||this).attr(t.attribute||"id")||"")}),i},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,l=r+t.height,h=this.offset.click.top,c=this.offset.click.left,h="x"===this.options.axis||r<s+h&&s+h<l,c="y"===this.options.axis||o<e+c&&e+c<a;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?h&&c:o<e+this.helperProportions.width/2&&i-this.helperProportions.width/2<a&&r<s+this.helperProportions.height/2&&n-this.helperProportions.height/2<l},_intersectsWithPointer:function(t){var e="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),t="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width);return!(!e||!t)&&(e=this.dragDirection.vertical,t=this.dragDirection.horizontal,this.floating?"right"===t||"down"===e?2:1:e&&("down"===e?2:1))},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this.dragDirection.vertical,t=this.dragDirection.horizontal;return this.floating&&t?"right"===t&&i||"left"===t&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!=t&&(0<t?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!=t&&(0<t?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(t){var e,i,s,n,o=[],a=[],r=this._connectWith();if(r&&t)for(e=r.length-1;0<=e;e--)for(i=(s=V(r[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&a.push(["function"==typeof n.options.items?n.options.items.call(n.element):V(n.options.items,n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),n]);function l(){o.push(this)}for(a.push(["function"==typeof this.options.items?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):V(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),e=a.length-1;0<=e;e--)a[e][0].each(l);return V(o)},_removeCurrentsFromItems:function(){var i=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=V.grep(this.items,function(t){for(var e=0;e<i.length;e++)if(i[e]===t.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var e,i,s,n,o,a,r,l,h=this.items,c=[["function"==typeof this.options.items?this.options.items.call(this.element[0],t,{item:this.currentItem}):V(this.options.items,this.element),this]],u=this._connectWith();if(u&&this.ready)for(e=u.length-1;0<=e;e--)for(i=(s=V(u[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&(c.push(["function"==typeof n.options.items?n.options.items.call(n.element[0],t,{item:this.currentItem}):V(n.options.items,n.element),n]),this.containers.push(n));for(e=c.length-1;0<=e;e--)for(o=c[e][1],l=(a=c[e][i=0]).length;i<l;i++)(r=V(a[i])).data(this.widgetName+"-item",o),h.push({item:r,instance:o,width:0,height:0,left:0,top:0})},_refreshItemPositions:function(t){for(var e,i,s=this.items.length-1;0<=s;s--)e=this.items[s],this.currentContainer&&e.instance!==this.currentContainer&&e.item[0]!==this.currentItem[0]||(i=this.options.toleranceElement?V(this.options.toleranceElement,e.item):e.item,t||(e.width=i.outerWidth(),e.height=i.outerHeight()),i=i.offset(),e.left=i.left,e.top=i.top)},refreshPositions:function(t){var e,i;if(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),this._refreshItemPositions(t),this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;0<=e;e--)i=this.containers[e].element.offset(),this.containers[e].containerCache.left=i.left,this.containers[e].containerCache.top=i.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(i){var s,n,o=(i=i||this).options;o.placeholder&&o.placeholder.constructor!==String||(s=o.placeholder,n=i.currentItem[0].nodeName.toLowerCase(),o.placeholder={element:function(){var t=V("<"+n+">",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("<tr>",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V("<td>&#160;</td>",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)<i&&(i=Math.abs(t[h]-a),s=this.items[e],this.direction=r?"up":"down"));(s||this.options.dropOnEmpty)&&(this.currentContainer!==this.containers[u]?(s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[u].element,!0),this._trigger("change",t,this._uiHash()),this.containers[u]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[u],this.options.placeholder.update(this.currentContainer,this.placeholder),this.scrollParent=this.placeholder.scrollParent(),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1):this.currentContainer.containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1))}},_createHelper:function(t){var e=this.options,t="function"==typeof e.helper?V(e.helper.apply(this.element[0],[t,this.currentItem])):"clone"===e.helper?this.currentItem.clone():this.currentItem;return t.parents("body").length||this.appendTo[0].appendChild(t[0]),t[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),t[0].style.width&&!e.forceHelperSize||t.width(this.currentItem.width()),t[0].style.height&&!e.forceHelperSize||t.height(this.currentItem.height()),t},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&V.ui.ie?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i=this.options;"parent"===i.containment&&(i.containment=this.helper[0].parentNode),"document"!==i.containment&&"window"!==i.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===i.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===i.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(i.containment)||(t=V(i.containment)[0],e=V(i.containment).offset(),i="hidden"!==V(t).css("overflow"),this.containment=[e.left+(parseInt(V(t).css("borderLeftWidth"),10)||0)+(parseInt(V(t).css("paddingLeft"),10)||0)-this.margins.left,e.top+(parseInt(V(t).css("borderTopWidth"),10)||0)+(parseInt(V(t).css("paddingTop"),10)||0)-this.margins.top,e.left+(i?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(V(t).css("borderLeftWidth"),10)||0)-(parseInt(V(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,e.top+(i?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(V(t).css("borderTopWidth"),10)||0)-(parseInt(V(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1,s="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,t=/(html|body)/i.test(s[0].tagName);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():t?0:s.scrollTop())*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():t?0:s.scrollLeft())*i}},_generatePosition:function(t){var e=this.options,i=t.pageX,s=t.pageY,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(i=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(s=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i<s.length;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===V.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(t){var e=t||this;return{helper:e.helper,placeholder:e.placeholder||V([]),position:e.position,originalPosition:e.originalPosition,offset:e.positionAbs,item:e.currentItem,sender:t?t.element:null}}});function ht(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}V.widget("ui.spinner",{version:"1.13.2",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){var i=V.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0<e?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(t){var e;function i(){this.element[0]===V.ui.safeActiveElement(this.document[0])||(this.element.trigger("focus"),this.previous=e,this._delay(function(){this.previous=e}))}e=this.element[0]===V.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),!1!==this._start(t)&&this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(V(t.currentTarget).hasClass("ui-state-active"))return!1!==this._start(t)&&void this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0<this.uiSpinner.height()&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var e=this.options,i=V.ui.keyCode;switch(t.keyCode){case i.UP:return this._repeat(null,1,t),!0;case i.DOWN:return this._repeat(null,-1,t),!0;case i.PAGE_UP:return this._repeat(null,e.page,t),!0;case i.PAGE_DOWN:return this._repeat(null,-e.page,t),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:i})||(this._value(i),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?"function"==typeof e?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_adjustValue:function(t){var e=this.options,i=null!==e.min?e.min:0,s=t-i;return t=i+Math.round(s/e.step)*e.step,t=parseFloat(t.toFixed(this._precision())),null!==e.max&&t>e.max?e.max:null!==e.min&&t<e.min?e.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i;if("culture"===t||"numberFormat"===t)return i=this._parse(this.element.val()),this.options[t]=e,void this.element.val(this._format(i));"max"!==t&&"min"!==t&&"step"!==t||"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(i=this.buttons.first().find(".ui-icon"),this._removeClass(i,null,this.options.icons.up),this._addClass(i,null,e.up),i=this.buttons.last().find(".ui-icon"),this._removeClass(i,null,this.options.icons.down),this._addClass(i,null,e.down)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:ht(function(t){this._super(t)}),_parse:function(t){return""===(t="string"==typeof t&&""!==t?window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t:t)||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null!==t&&t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&null!==(i=this._parse(t))&&(e||(i=this._adjustValue(i)),t=this._format(i)),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:ht(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:ht(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:ht(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:ht(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){if(!arguments.length)return this._parse(this.element.val());ht(this._value).call(this,t)},widget:function(){return this.uiSpinner}}),!1!==V.uiBackCompat&&V.widget("ui.spinner",V.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}});var ct;V.ui.spinner;V.widget("ui.tabs",{version:"1.13.2",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(ct=/#.*$/,function(t){var e=t.href.replace(ct,""),i=location.href.replace(ct,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1<t.hash.length&&e===i}),_create:function(){var e=this,t=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,t.collapsible),this._processTabs(),t.active=this._initialActive(),Array.isArray(t.disabled)&&(t.disabled=V.uniqueSort(t.disabled.concat(V.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(t.active):this.active=V(),this._refresh(),this.active.length&&this.load(t.active)},_initialActive:function(){var i=this.options.active,t=this.options.collapsible,s=location.hash.substring(1);return null===i&&(s&&this.tabs.each(function(t,e){if(V(e).attr("aria-controls")===s)return i=t,!1}),null!==(i=null===i?this.tabs.index(this.tabs.filter(".ui-tabs-active")):i)&&-1!==i||(i=!!this.tabs.length&&0)),!1!==i&&-1===(i=this.tabs.index(this.tabs.eq(i)))&&(i=!t&&0),i=!t&&!1===i&&this.anchors.length?0:i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):V()}},_tabKeydown:function(t){var e=V(V.ui.safeActiveElement(this.document[0])).closest("li"),i=this.tabs.index(e),s=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:i++;break;case V.ui.keyCode.UP:case V.ui.keyCode.LEFT:s=!1,i--;break;case V.ui.keyCode.END:i=this.anchors.length-1;break;case V.ui.keyCode.HOME:i=0;break;case V.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i);case V.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,s),t.ctrlKey||t.metaKey||(e.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",i)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===V.ui.keyCode.UP&&(t.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(t){return t.altKey&&t.keyCode===V.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===V.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,e){var i=this.tabs.length-1;for(;-1!==V.inArray(t=(t=i<t?0:t)<0?i:t,this.options.disabled);)t=e?t+1:t-1;return t},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"!==t?(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e)):this._activate(e)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){V(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");l._isLocal(e)?(n=(i=e.hash).substring(1),s=l.element.find(l._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=l.element.find(i="#"+n)).length||(s=l._createPanel(n)).insertAfter(l.panels[t-1]||l.tablist),s.attr("aria-live","polite")),s.length&&(l.panels=l.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("<div>").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=!t.length?this.active:t).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+V.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});V.ui.tabs;V.widget("ui.tooltip",{version:"1.13.2",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,n.is(":hidden")||n.position(a)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(i=V("<div>").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(V.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},13)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("<div>").attr("role","tooltip"),i=V("<div>").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=!t.length?this.document[0].body:t},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});V.ui.tooltip});
7 0
\ No newline at end of file
... ...
@@ -1,886 +0,0 @@
1
-/*!
2
- * jQuery UI CSS Framework 1.13.2
3
- * http://jqueryui.com
4
- *
5
- * Copyright jQuery Foundation and other contributors
6
- * Released under the MIT license.
7
- * http://jquery.org/license
8
- *
9
- * http://api.jqueryui.com/category/theming/
10
- */
11
-/* Layout helpers
12
-----------------------------------*/
13
-.ui-helper-hidden {
14
-	display: none;
15
-}
16
-.ui-helper-hidden-accessible {
17
-	border: 0;
18
-	clip: rect(0 0 0 0);
19
-	height: 1px;
20
-	margin: -1px;
21
-	overflow: hidden;
22
-	padding: 0;
23
-	position: absolute;
24
-	width: 1px;
25
-}
26
-.ui-helper-reset {
27
-	margin: 0;
28
-	padding: 0;
29
-	border: 0;
30
-	outline: 0;
31
-	line-height: 1.3;
32
-	text-decoration: none;
33
-	font-size: 100%;
34
-	list-style: none;
35
-}
36
-.ui-helper-clearfix:before,
37
-.ui-helper-clearfix:after {
38
-	content: "";
39
-	display: table;
40
-	border-collapse: collapse;
41
-}
42
-.ui-helper-clearfix:after {
43
-	clear: both;
44
-}
45
-.ui-helper-zfix {
46
-	width: 100%;
47
-	height: 100%;
48
-	top: 0;
49
-	left: 0;
50
-	position: absolute;
51
-	opacity: 0;
52
-	-ms-filter: "alpha(opacity=0)"; /* support: IE8 */
53
-}
54
-
55
-.ui-front {
56
-	z-index: 100;
57
-}
58
-
59
-
60
-/* Interaction Cues
61
-----------------------------------*/
62
-.ui-state-disabled {
63
-	cursor: default !important;
64
-	pointer-events: none;
65
-}
66
-
67
-
68
-/* Icons
69
-----------------------------------*/
70
-.ui-icon {
71
-	display: inline-block;
72
-	vertical-align: middle;
73
-	margin-top: -.25em;
74
-	position: relative;
75
-	text-indent: -99999px;
76
-	overflow: hidden;
77
-	background-repeat: no-repeat;
78
-}
79
-
80
-.ui-widget-icon-block {
81
-	left: 50%;
82
-	margin-left: -8px;
83
-	display: block;
84
-}
85
-
86
-/* Misc visuals
87
-----------------------------------*/
88
-
89
-/* Overlays */
90
-.ui-widget-overlay {
91
-	position: fixed;
92
-	top: 0;
93
-	left: 0;
94
-	width: 100%;
95
-	height: 100%;
96
-}
97
-.ui-accordion .ui-accordion-header {
98
-	display: block;
99
-	cursor: pointer;
100
-	position: relative;
101
-	margin: 2px 0 0 0;
102
-	padding: .5em .5em .5em .7em;
103
-	font-size: 100%;
104
-}
105
-.ui-accordion .ui-accordion-content {
106
-	padding: 1em 2.2em;
107
-	border-top: 0;
108
-	overflow: auto;
109
-}
110
-.ui-autocomplete {
111
-	position: absolute;
112
-	top: 0;
113
-	left: 0;
114
-	cursor: default;
115
-}
116
-.ui-menu {
117
-	list-style: none;
118
-	padding: 0;
119
-	margin: 0;
120
-	display: block;
121
-	outline: 0;
122
-}
123
-.ui-menu .ui-menu {
124
-	position: absolute;
125
-}
126
-.ui-menu .ui-menu-item {
127
-	margin: 0;
128
-	cursor: pointer;
129
-	/* support: IE10, see #8844 */
130
-	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
131
-}
132
-.ui-menu .ui-menu-item-wrapper {
133
-	position: relative;
134
-	padding: 3px 1em 3px .4em;
135
-}
136
-.ui-menu .ui-menu-divider {
137
-	margin: 5px 0;
138
-	height: 0;
139
-	font-size: 0;
140
-	line-height: 0;
141
-	border-width: 1px 0 0 0;
142
-}
143
-.ui-menu .ui-state-focus,
144
-.ui-menu .ui-state-active {
145
-	margin: -1px;
146
-}
147
-
148
-/* icon support */
149
-.ui-menu-icons {
150
-	position: relative;
151
-}
152
-.ui-menu-icons .ui-menu-item-wrapper {
153
-	padding-left: 2em;
154
-}
155
-
156
-/* left-aligned */
157
-.ui-menu .ui-icon {
158
-	position: absolute;
159
-	top: 0;
160
-	bottom: 0;
161
-	left: .2em;
162
-	margin: auto 0;
163
-}
164
-
165
-/* right-aligned */
166
-.ui-menu .ui-menu-icon {
167
-	left: auto;
168
-	right: 0;
169
-}
170
-.ui-button {
171
-	padding: .4em 1em;
172
-	display: inline-block;
173
-	position: relative;
174
-	line-height: normal;
175
-	margin-right: .1em;
176
-	cursor: pointer;
177
-	vertical-align: middle;
178
-	text-align: center;
179
-	-webkit-user-select: none;
180
-	-moz-user-select: none;
181
-	-ms-user-select: none;
182
-	user-select: none;
183
-
184
-	/* Support: IE <= 11 */
185
-	overflow: visible;
186
-}
187
-
188
-.ui-button,
189
-.ui-button:link,
190
-.ui-button:visited,
191
-.ui-button:hover,
192
-.ui-button:active {
193
-	text-decoration: none;
194
-}
195
-
196
-/* to make room for the icon, a width needs to be set here */
197
-.ui-button-icon-only {
198
-	width: 2em;
199
-	box-sizing: border-box;
200
-	text-indent: -9999px;
201
-	white-space: nowrap;
202
-}
203
-
204
-/* no icon support for input elements */
205
-input.ui-button.ui-button-icon-only {
206
-	text-indent: 0;
207
-}
208
-
209
-/* button icon element(s) */
210
-.ui-button-icon-only .ui-icon {
211
-	position: absolute;
212
-	top: 50%;
213
-	left: 50%;
214
-	margin-top: -8px;
215
-	margin-left: -8px;
216
-}
217
-
218
-.ui-button.ui-icon-notext .ui-icon {
219
-	padding: 0;
220
-	width: 2.1em;
221
-	height: 2.1em;
222
-	text-indent: -9999px;
223
-	white-space: nowrap;
224
-
225
-}
226
-
227
-input.ui-button.ui-icon-notext .ui-icon {
228
-	width: auto;
229
-	height: auto;
230
-	text-indent: 0;
231
-	white-space: normal;
232
-	padding: .4em 1em;
233
-}
234
-
235
-/* workarounds */
236
-/* Support: Firefox 5 - 40 */
237
-input.ui-button::-moz-focus-inner,
238
-button.ui-button::-moz-focus-inner {
239
-	border: 0;
240
-	padding: 0;
241
-}
242
-.ui-controlgroup {
243
-	vertical-align: middle;
244
-	display: inline-block;
245
-}
246
-.ui-controlgroup > .ui-controlgroup-item {
247
-	float: left;
248
-	margin-left: 0;
249
-	margin-right: 0;
250
-}
251
-.ui-controlgroup > .ui-controlgroup-item:focus,
252
-.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
253
-	z-index: 9999;
254
-}
255
-.ui-controlgroup-vertical > .ui-controlgroup-item {
256
-	display: block;
257
-	float: none;
258
-	width: 100%;
259
-	margin-top: 0;
260
-	margin-bottom: 0;
261
-	text-align: left;
262
-}
263
-.ui-controlgroup-vertical .ui-controlgroup-item {
264
-	box-sizing: border-box;
265
-}
266
-.ui-controlgroup .ui-controlgroup-label {
267
-	padding: .4em 1em;
268
-}
269
-.ui-controlgroup .ui-controlgroup-label span {
270
-	font-size: 80%;
271
-}
272
-.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
273
-	border-left: none;
274
-}
275
-.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
276
-	border-top: none;
277
-}
278
-.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
279
-	border-right: none;
280
-}
281
-.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
282
-	border-bottom: none;
283
-}
284
-
285
-/* Spinner specific style fixes */
286
-.ui-controlgroup-vertical .ui-spinner-input {
287
-
288
-	/* Support: IE8 only, Android < 4.4 only */
289
-	width: 75%;
290
-	width: calc( 100% - 2.4em );
291
-}
292
-.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
293
-	border-top-style: solid;
294
-}
295
-
296
-.ui-checkboxradio-label .ui-icon-background {
297
-	box-shadow: inset 1px 1px 1px #ccc;
298
-	border-radius: .12em;
299
-	border: none;
300
-}
301
-.ui-checkboxradio-radio-label .ui-icon-background {
302
-	width: 16px;
303
-	height: 16px;
304
-	border-radius: 1em;
305
-	overflow: visible;
306
-	border: none;
307
-}
308
-.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
309
-.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
310
-	background-image: none;
311
-	width: 8px;
312
-	height: 8px;
313
-	border-width: 4px;
314
-	border-style: solid;
315
-}
316
-.ui-checkboxradio-disabled {
317
-	pointer-events: none;
318
-}
319
-.ui-datepicker {
320
-	width: 17em;
321
-	padding: .2em .2em 0;
322
-	display: none;
323
-}
324
-.ui-datepicker .ui-datepicker-header {
325
-	position: relative;
326
-	padding: .2em 0;
327
-}
328
-.ui-datepicker .ui-datepicker-prev,
329
-.ui-datepicker .ui-datepicker-next {
330
-	position: absolute;
331
-	top: 2px;
332
-	width: 1.8em;
333
-	height: 1.8em;
334
-}
335
-.ui-datepicker .ui-datepicker-prev-hover,
336
-.ui-datepicker .ui-datepicker-next-hover {
337
-	top: 1px;
338
-}
339
-.ui-datepicker .ui-datepicker-prev {
340
-	left: 2px;
341
-}
342
-.ui-datepicker .ui-datepicker-next {
343
-	right: 2px;
344
-}
345
-.ui-datepicker .ui-datepicker-prev-hover {
346
-	left: 1px;
347
-}
348
-.ui-datepicker .ui-datepicker-next-hover {
349
-	right: 1px;
350
-}
351
-.ui-datepicker .ui-datepicker-prev span,
352
-.ui-datepicker .ui-datepicker-next span {
353
-	display: block;
354
-	position: absolute;
355
-	left: 50%;
356
-	margin-left: -8px;
357
-	top: 50%;
358
-	margin-top: -8px;
359
-}
360
-.ui-datepicker .ui-datepicker-title {
361
-	margin: 0 2.3em;
362
-	line-height: 1.8em;
363
-	text-align: center;
364
-}
365
-.ui-datepicker .ui-datepicker-title select {
366
-	font-size: 1em;
367
-	margin: 1px 0;
368
-}
369
-.ui-datepicker select.ui-datepicker-month,
370
-.ui-datepicker select.ui-datepicker-year {
371
-	width: 45%;
372
-}
373
-.ui-datepicker table {
374
-	width: 100%;
375
-	font-size: .9em;
376
-	border-collapse: collapse;
377
-	margin: 0 0 .4em;
378
-}
379
-.ui-datepicker th {
380
-	padding: .7em .3em;
381
-	text-align: center;
382
-	font-weight: bold;
383
-	border: 0;
384
-}
385
-.ui-datepicker td {
386
-	border: 0;
387
-	padding: 1px;
388
-}
389
-.ui-datepicker td span,
390
-.ui-datepicker td a {
391
-	display: block;
392
-	padding: .2em;
393
-	text-align: right;
394
-	text-decoration: none;
395
-}
396
-.ui-datepicker .ui-datepicker-buttonpane {
397
-	background-image: none;
398
-	margin: .7em 0 0 0;
399
-	padding: 0 .2em;
400
-	border-left: 0;
401
-	border-right: 0;
402
-	border-bottom: 0;
403
-}
404
-.ui-datepicker .ui-datepicker-buttonpane button {
405
-	float: right;
406
-	margin: .5em .2em .4em;
407
-	cursor: pointer;
408
-	padding: .2em .6em .3em .6em;
409
-	width: auto;
410
-	overflow: visible;
411
-}
412
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
413
-	float: left;
414
-}
415
-
416
-/* with multiple calendars */
417
-.ui-datepicker.ui-datepicker-multi {
418
-	width: auto;
419
-}
420
-.ui-datepicker-multi .ui-datepicker-group {
421
-	float: left;
422
-}
423
-.ui-datepicker-multi .ui-datepicker-group table {
424
-	width: 95%;
425
-	margin: 0 auto .4em;
426
-}
427
-.ui-datepicker-multi-2 .ui-datepicker-group {
428
-	width: 50%;
429
-}
430
-.ui-datepicker-multi-3 .ui-datepicker-group {
431
-	width: 33.3%;
432
-}
433
-.ui-datepicker-multi-4 .ui-datepicker-group {
434
-	width: 25%;
435
-}
436
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
437
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
438
-	border-left-width: 0;
439
-}
440
-.ui-datepicker-multi .ui-datepicker-buttonpane {
441
-	clear: left;
442
-}
443
-.ui-datepicker-row-break {
444
-	clear: both;
445
-	width: 100%;
446
-	font-size: 0;
447
-}
448
-
449
-/* RTL support */
450
-.ui-datepicker-rtl {
451
-	direction: rtl;
452
-}
453
-.ui-datepicker-rtl .ui-datepicker-prev {
454
-	right: 2px;
455
-	left: auto;
456
-}
457
-.ui-datepicker-rtl .ui-datepicker-next {
458
-	left: 2px;
459
-	right: auto;
460
-}
461
-.ui-datepicker-rtl .ui-datepicker-prev:hover {
462
-	right: 1px;
463
-	left: auto;
464
-}
465
-.ui-datepicker-rtl .ui-datepicker-next:hover {
466
-	left: 1px;
467
-	right: auto;
468
-}
469
-.ui-datepicker-rtl .ui-datepicker-buttonpane {
470
-	clear: right;
471
-}
472
-.ui-datepicker-rtl .ui-datepicker-buttonpane button {
473
-	float: left;
474
-}
475
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
476
-.ui-datepicker-rtl .ui-datepicker-group {
477
-	float: right;
478
-}
479
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
480
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
481
-	border-right-width: 0;
482
-	border-left-width: 1px;
483
-}
484
-
485
-/* Icons */
486
-.ui-datepicker .ui-icon {
487
-	display: block;
488
-	text-indent: -99999px;
489
-	overflow: hidden;
490
-	background-repeat: no-repeat;
491
-	left: .5em;
492
-	top: .3em;
493
-}
494
-.ui-dialog {
495
-	position: absolute;
496
-	top: 0;
497
-	left: 0;
498
-	padding: .2em;
499
-	outline: 0;
500
-}
501
-.ui-dialog .ui-dialog-titlebar {
502
-	padding: .4em 1em;
503
-	position: relative;
504
-}
505
-.ui-dialog .ui-dialog-title {
506
-	float: left;
507
-	margin: .1em 0;
508
-	white-space: nowrap;
509
-	width: 90%;
510
-	overflow: hidden;
511
-	text-overflow: ellipsis;
512
-}
513
-.ui-dialog .ui-dialog-titlebar-close {
514
-	position: absolute;
515
-	right: .3em;
516
-	top: 50%;
517
-	width: 20px;
518
-	margin: -10px 0 0 0;
519
-	padding: 1px;
520
-	height: 20px;
521
-}
522
-.ui-dialog .ui-dialog-content {
523
-	position: relative;
524
-	border: 0;
525
-	padding: .5em 1em;
526
-	background: none;
527
-	overflow: auto;
528
-}
529
-.ui-dialog .ui-dialog-buttonpane {
530
-	text-align: left;
531
-	border-width: 1px 0 0 0;
532
-	background-image: none;
533
-	margin-top: .5em;
534
-	padding: .3em 1em .5em .4em;
535
-}
536
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
537
-	float: right;
538
-}
539
-.ui-dialog .ui-dialog-buttonpane button {
540
-	margin: .5em .4em .5em 0;
541
-	cursor: pointer;
542
-}
543
-.ui-dialog .ui-resizable-n {
544
-	height: 2px;
545
-	top: 0;
546
-}
547
-.ui-dialog .ui-resizable-e {
548
-	width: 2px;
549
-	right: 0;
550
-}
551
-.ui-dialog .ui-resizable-s {
552
-	height: 2px;
553
-	bottom: 0;
554
-}
555
-.ui-dialog .ui-resizable-w {
556
-	width: 2px;
557
-	left: 0;
558
-}
559
-.ui-dialog .ui-resizable-se,
560
-.ui-dialog .ui-resizable-sw,
561
-.ui-dialog .ui-resizable-ne,
562
-.ui-dialog .ui-resizable-nw {
563
-	width: 7px;
564
-	height: 7px;
565
-}
566
-.ui-dialog .ui-resizable-se {
567
-	right: 0;
568
-	bottom: 0;
569
-}
570
-.ui-dialog .ui-resizable-sw {
571
-	left: 0;
572
-	bottom: 0;
573
-}
574
-.ui-dialog .ui-resizable-ne {
575
-	right: 0;
576
-	top: 0;
577
-}
578
-.ui-dialog .ui-resizable-nw {
579
-	left: 0;
580
-	top: 0;
581
-}
582
-.ui-draggable .ui-dialog-titlebar {
583
-	cursor: move;
584
-}
585
-.ui-draggable-handle {
586
-	-ms-touch-action: none;
587
-	touch-action: none;
588
-}
589
-.ui-resizable {
590
-	position: relative;
591
-}
592
-.ui-resizable-handle {
593
-	position: absolute;
594
-	font-size: 0.1px;
595
-	display: block;
596
-	-ms-touch-action: none;
597
-	touch-action: none;
598
-}
599
-.ui-resizable-disabled .ui-resizable-handle,
600
-.ui-resizable-autohide .ui-resizable-handle {
601
-	display: none;
602
-}
603
-.ui-resizable-n {
604
-	cursor: n-resize;
605
-	height: 7px;
606
-	width: 100%;
607
-	top: -5px;
608
-	left: 0;
609
-}
610
-.ui-resizable-s {
611
-	cursor: s-resize;
612
-	height: 7px;
613
-	width: 100%;
614
-	bottom: -5px;
615
-	left: 0;
616
-}
617
-.ui-resizable-e {
618
-	cursor: e-resize;
619
-	width: 7px;
620
-	right: -5px;
621
-	top: 0;
622
-	height: 100%;
623
-}
624
-.ui-resizable-w {
625
-	cursor: w-resize;
626
-	width: 7px;
627
-	left: -5px;
628
-	top: 0;
629
-	height: 100%;
630
-}
631
-.ui-resizable-se {
632
-	cursor: se-resize;
633
-	width: 12px;
634
-	height: 12px;
635
-	right: 1px;
636
-	bottom: 1px;
637
-}
638
-.ui-resizable-sw {
639
-	cursor: sw-resize;
640
-	width: 9px;
641
-	height: 9px;
642
-	left: -5px;
643
-	bottom: -5px;
644
-}
645
-.ui-resizable-nw {
646
-	cursor: nw-resize;
647
-	width: 9px;
648
-	height: 9px;
649
-	left: -5px;
650
-	top: -5px;
651
-}
652
-.ui-resizable-ne {
653
-	cursor: ne-resize;
654
-	width: 9px;
655
-	height: 9px;
656
-	right: -5px;
657
-	top: -5px;
658
-}
659
-.ui-progressbar {
660
-	height: 2em;
661
-	text-align: left;
662
-	overflow: hidden;
663
-}
664
-.ui-progressbar .ui-progressbar-value {
665
-	margin: -1px;
666
-	height: 100%;
667
-}
668
-.ui-progressbar .ui-progressbar-overlay {
669
-	background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
670
-	height: 100%;
671
-	-ms-filter: "alpha(opacity=25)"; /* support: IE8 */
672
-	opacity: 0.25;
673
-}
674
-.ui-progressbar-indeterminate .ui-progressbar-value {
675
-	background-image: none;
676
-}
677
-.ui-selectable {
678
-	-ms-touch-action: none;
679
-	touch-action: none;
680
-}
681
-.ui-selectable-helper {
682
-	position: absolute;
683
-	z-index: 100;
684
-	border: 1px dotted black;
685
-}
686
-.ui-selectmenu-menu {
687
-	padding: 0;
688
-	margin: 0;
689
-	position: absolute;
690
-	top: 0;
691
-	left: 0;
692
-	display: none;
693
-}
694
-.ui-selectmenu-menu .ui-menu {
695
-	overflow: auto;
696
-	overflow-x: hidden;
697
-	padding-bottom: 1px;
698
-}
699
-.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
700
-	font-size: 1em;
701
-	font-weight: bold;
702
-	line-height: 1.5;
703
-	padding: 2px 0.4em;
704
-	margin: 0.5em 0 0 0;
705
-	height: auto;
706
-	border: 0;
707
-}
708
-.ui-selectmenu-open {
709
-	display: block;
710
-}
711
-.ui-selectmenu-text {
712
-	display: block;
713
-	margin-right: 20px;
714
-	overflow: hidden;
715
-	text-overflow: ellipsis;
716
-}
717
-.ui-selectmenu-button.ui-button {
718
-	text-align: left;
719
-	white-space: nowrap;
720
-	width: 14em;
721
-}
722
-.ui-selectmenu-icon.ui-icon {
723
-	float: right;
724
-	margin-top: 0;
725
-}
726
-.ui-slider {
727
-	position: relative;
728
-	text-align: left;
729
-}
730
-.ui-slider .ui-slider-handle {
731
-	position: absolute;
732
-	z-index: 2;
733
-	width: 1.2em;
734
-	height: 1.2em;
735
-	cursor: pointer;
736
-	-ms-touch-action: none;
737
-	touch-action: none;
738
-}
739
-.ui-slider .ui-slider-range {
740
-	position: absolute;
741
-	z-index: 1;
742
-	font-size: .7em;
743
-	display: block;
744
-	border: 0;
745
-	background-position: 0 0;
746
-}
747
-
748
-/* support: IE8 - See #6727 */
749
-.ui-slider.ui-state-disabled .ui-slider-handle,
750
-.ui-slider.ui-state-disabled .ui-slider-range {
751
-	filter: inherit;
752
-}
753
-
754
-.ui-slider-horizontal {
755
-	height: .8em;
756
-}
757
-.ui-slider-horizontal .ui-slider-handle {
758
-	top: -.3em;
759
-	margin-left: -.6em;
760
-}
761
-.ui-slider-horizontal .ui-slider-range {
762
-	top: 0;
763
-	height: 100%;
764
-}
765
-.ui-slider-horizontal .ui-slider-range-min {
766
-	left: 0;
767
-}
768
-.ui-slider-horizontal .ui-slider-range-max {
769
-	right: 0;
770
-}
771
-
772
-.ui-slider-vertical {
773
-	width: .8em;
774
-	height: 100px;
775
-}
776
-.ui-slider-vertical .ui-slider-handle {
777
-	left: -.3em;
778
-	margin-left: 0;
779
-	margin-bottom: -.6em;
780
-}
781
-.ui-slider-vertical .ui-slider-range {
782
-	left: 0;
783
-	width: 100%;
784
-}
785
-.ui-slider-vertical .ui-slider-range-min {
786
-	bottom: 0;
787
-}
788
-.ui-slider-vertical .ui-slider-range-max {
789
-	top: 0;
790
-}
791
-.ui-sortable-handle {
792
-	-ms-touch-action: none;
793
-	touch-action: none;
794
-}
795
-.ui-spinner {
796
-	position: relative;
797
-	display: inline-block;
798
-	overflow: hidden;
799
-	padding: 0;
800
-	vertical-align: middle;
801
-}
802
-.ui-spinner-input {
803
-	border: none;
804
-	background: none;
805
-	color: inherit;
806
-	padding: .222em 0;
807
-	margin: .2em 0;
808
-	vertical-align: middle;
809
-	margin-left: .4em;
810
-	margin-right: 2em;
811
-}
812
-.ui-spinner-button {
813
-	width: 1.6em;
814
-	height: 50%;
815
-	font-size: .5em;
816
-	padding: 0;
817
-	margin: 0;
818
-	text-align: center;
819
-	position: absolute;
820
-	cursor: default;
821
-	display: block;
822
-	overflow: hidden;
823
-	right: 0;
824
-}
825
-/* more specificity required here to override default borders */
826
-.ui-spinner a.ui-spinner-button {
827
-	border-top-style: none;
828
-	border-bottom-style: none;
829
-	border-right-style: none;
830
-}
831
-.ui-spinner-up {
832
-	top: 0;
833
-}
834
-.ui-spinner-down {
835
-	bottom: 0;
836
-}
837
-.ui-tabs {
838
-	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
839
-	padding: .2em;
840
-}
841
-.ui-tabs .ui-tabs-nav {
842
-	margin: 0;
843
-	padding: .2em .2em 0;
844
-}
845
-.ui-tabs .ui-tabs-nav li {
846
-	list-style: none;
847
-	float: left;
848
-	position: relative;
849
-	top: 0;
850
-	margin: 1px .2em 0 0;
851
-	border-bottom-width: 0;
852
-	padding: 0;
853
-	white-space: nowrap;
854
-}
855
-.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
856
-	float: left;
857
-	padding: .5em 1em;
858
-	text-decoration: none;
859
-}
860
-.ui-tabs .ui-tabs-nav li.ui-tabs-active {
861
-	margin-bottom: -1px;
862
-	padding-bottom: 1px;
863
-}
864
-.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
865
-.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
866
-.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
867
-	cursor: text;
868
-}
869
-.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
870
-	cursor: pointer;
871
-}
872
-.ui-tabs .ui-tabs-panel {
873
-	display: block;
874
-	border-width: 0;
875
-	padding: 1em 1.4em;
876
-	background: none;
877
-}
878
-.ui-tooltip {
879
-	padding: 8px;
880
-	position: absolute;
881
-	z-index: 9999;
882
-	max-width: 300px;
883
-}
884
-body .ui-tooltip {
885
-	border-width: 2px;
886
-}
... ...
@@ -1,5 +0,0 @@
1
-/*! jQuery UI - v1.13.2 - 2022-07-14
2
-* http://jqueryui.com
3
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
4
-
5
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;-ms-filter:"alpha(opacity=0)"}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;-ms-filter:"alpha(opacity=25)";opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:pointer;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}
6 0
\ No newline at end of file
... ...
@@ -1,446 +0,0 @@
1
-/*!
2
- * jQuery UI CSS Framework 1.13.2
3
- * http://jqueryui.com
4
- *
5
- * Copyright jQuery Foundation and other contributors
6
- * Released under the MIT license.
7
- * http://jquery.org/license
8
- *
9
- * http://api.jqueryui.com/category/theming/
10
- *
11
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
12
- */
13
-
14
-
15
-/* Component containers
16
-----------------------------------*/
17
-.ui-widget {
18
-	font-family: Arial,Helvetica,sans-serif;
19
-	font-size: 1em;
20
-}
21
-.ui-widget .ui-widget {
22
-	font-size: 1em;
23
-}
24
-.ui-widget input,
25
-.ui-widget select,
26
-.ui-widget textarea,
27
-.ui-widget button {
28
-	font-family: Arial,Helvetica,sans-serif;
29
-	font-size: 1em;
30
-}
31
-.ui-widget.ui-widget-content {
32
-	border: 1px solid #c5c5c5;
33
-}
34
-.ui-widget-content {
35
-	border: 1px solid #dddddd;
36
-	background: #ffffff;
37
-	color: #333333;
38
-}
39
-.ui-widget-content a {
40
-	color: #333333;
41
-}
42
-.ui-widget-header {
43
-	border: 1px solid #dddddd;
44
-	background: #e9e9e9;
45
-	color: #333333;
46
-	font-weight: bold;
47
-}
48
-.ui-widget-header a {
49
-	color: #333333;
50
-}
51
-
52
-/* Interaction states
53
-----------------------------------*/
54
-.ui-state-default,
55
-.ui-widget-content .ui-state-default,
56
-.ui-widget-header .ui-state-default,
57
-.ui-button,
58
-
59
-/* We use html here because we need a greater specificity to make sure disabled
60
-works properly when clicked or hovered */
61
-html .ui-button.ui-state-disabled:hover,
62
-html .ui-button.ui-state-disabled:active {
63
-	border: 1px solid #c5c5c5;
64
-	background: #f6f6f6;
65
-	font-weight: normal;
66
-	color: #454545;
67
-}
68
-.ui-state-default a,
69
-.ui-state-default a:link,
70
-.ui-state-default a:visited,
71
-a.ui-button,
72
-a:link.ui-button,
73
-a:visited.ui-button,
74
-.ui-button {
75
-	color: #454545;
76
-	text-decoration: none;
77
-}
78
-.ui-state-hover,
79
-.ui-widget-content .ui-state-hover,
80
-.ui-widget-header .ui-state-hover,
81
-.ui-state-focus,
82
-.ui-widget-content .ui-state-focus,
83
-.ui-widget-header .ui-state-focus,
84
-.ui-button:hover,
85
-.ui-button:focus {
86
-	border: 1px solid #cccccc;
87
-	background: #ededed;
88
-	font-weight: normal;
89
-	color: #2b2b2b;
90
-}
91
-.ui-state-hover a,
92
-.ui-state-hover a:hover,
93
-.ui-state-hover a:link,
94
-.ui-state-hover a:visited,
95
-.ui-state-focus a,
96
-.ui-state-focus a:hover,
97
-.ui-state-focus a:link,
98
-.ui-state-focus a:visited,
99
-a.ui-button:hover,
100
-a.ui-button:focus {
101
-	color: #2b2b2b;
102
-	text-decoration: none;
103
-}
104
-
105
-.ui-visual-focus {
106
-	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
107
-}
108
-.ui-state-active,
109
-.ui-widget-content .ui-state-active,
110
-.ui-widget-header .ui-state-active,
111
-a.ui-button:active,
112
-.ui-button:active,
113
-.ui-button.ui-state-active:hover {
114
-	border: 1px solid #003eff;
115
-	background: #007fff;
116
-	font-weight: normal;
117
-	color: #ffffff;
118
-}
119
-.ui-icon-background,
120
-.ui-state-active .ui-icon-background {
121
-	border: #003eff;
122
-	background-color: #ffffff;
123
-}
124
-.ui-state-active a,
125
-.ui-state-active a:link,
126
-.ui-state-active a:visited {
127
-	color: #ffffff;
128
-	text-decoration: none;
129
-}
130
-
131
-/* Interaction Cues
132
-----------------------------------*/
133
-.ui-state-highlight,
134
-.ui-widget-content .ui-state-highlight,
135
-.ui-widget-header .ui-state-highlight {
136
-	border: 1px solid #dad55e;
137
-	background: #fffa90;
138
-	color: #777620;
139
-}
140
-.ui-state-checked {
141
-	border: 1px solid #dad55e;
142
-	background: #fffa90;
143
-}
144
-.ui-state-highlight a,
145
-.ui-widget-content .ui-state-highlight a,
146
-.ui-widget-header .ui-state-highlight a {
147
-	color: #777620;
148
-}
149
-.ui-state-error,
150
-.ui-widget-content .ui-state-error,
151
-.ui-widget-header .ui-state-error {
152
-	border: 1px solid #f1a899;
153
-	background: #fddfdf;
154
-	color: #5f3f3f;
155
-}
156
-.ui-state-error a,
157
-.ui-widget-content .ui-state-error a,
158
-.ui-widget-header .ui-state-error a {
159
-	color: #5f3f3f;
160
-}
161
-.ui-state-error-text,
162
-.ui-widget-content .ui-state-error-text,
163
-.ui-widget-header .ui-state-error-text {
164
-	color: #5f3f3f;
165
-}
166
-.ui-priority-primary,
167
-.ui-widget-content .ui-priority-primary,
168
-.ui-widget-header .ui-priority-primary {
169
-	font-weight: bold;
170
-}
171
-.ui-priority-secondary,
172
-.ui-widget-content .ui-priority-secondary,
173
-.ui-widget-header .ui-priority-secondary {
174
-	opacity: .7;
175
-	-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
176
-	font-weight: normal;
177
-}
178
-.ui-state-disabled,
179
-.ui-widget-content .ui-state-disabled,
180
-.ui-widget-header .ui-state-disabled {
181
-	opacity: .35;
182
-	-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
183
-	background-image: none;
184
-}
185
-.ui-state-disabled .ui-icon {
186
-	-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
187
-}
188
-
189
-/* Icons
190
-----------------------------------*/
191
-
192
-/* states and images */
193
-.ui-icon {
194
-	width: 16px;
195
-	height: 16px;
196
-}
197
-.ui-icon,
198
-.ui-widget-content .ui-icon {
199
-	background-image: url("images/ui-icons_444444_256x240.png");
200
-}
201
-.ui-widget-header .ui-icon {
202
-	background-image: url("images/ui-icons_444444_256x240.png");
203
-}
204
-.ui-state-hover .ui-icon,
205
-.ui-state-focus .ui-icon,
206
-.ui-button:hover .ui-icon,
207
-.ui-button:focus .ui-icon {
208
-	background-image: url("images/ui-icons_555555_256x240.png");
209
-}
210
-.ui-state-active .ui-icon,
211
-.ui-button:active .ui-icon {
212
-	background-image: url("images/ui-icons_ffffff_256x240.png");
213
-}
214
-.ui-state-highlight .ui-icon,
215
-.ui-button .ui-state-highlight.ui-icon {
216
-	background-image: url("images/ui-icons_777620_256x240.png");
217
-}
218
-.ui-state-error .ui-icon,
219
-.ui-state-error-text .ui-icon {
220
-	background-image: url("images/ui-icons_cc0000_256x240.png");
221
-}
222
-.ui-button .ui-icon {
223
-	background-image: url("images/ui-icons_777777_256x240.png");
224
-}
225
-
226
-/* positioning */
227
-/* Three classes needed to override `.ui-button:hover .ui-icon` */
228
-.ui-icon-blank.ui-icon-blank.ui-icon-blank {
229
-	background-image: none;
230
-}
231
-.ui-icon-caret-1-n { background-position: 0 0; }
232
-.ui-icon-caret-1-ne { background-position: -16px 0; }
233
-.ui-icon-caret-1-e { background-position: -32px 0; }
234
-.ui-icon-caret-1-se { background-position: -48px 0; }
235
-.ui-icon-caret-1-s { background-position: -65px 0; }
236
-.ui-icon-caret-1-sw { background-position: -80px 0; }
237
-.ui-icon-caret-1-w { background-position: -96px 0; }
238
-.ui-icon-caret-1-nw { background-position: -112px 0; }
239
-.ui-icon-caret-2-n-s { background-position: -128px 0; }
240
-.ui-icon-caret-2-e-w { background-position: -144px 0; }
241
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
242
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
243
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
244
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
245
-.ui-icon-triangle-1-s { background-position: -65px -16px; }
246
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
247
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
248
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
249
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
250
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
251
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
252
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
253
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
254
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
255
-.ui-icon-arrow-1-s { background-position: -65px -32px; }
256
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
257
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
258
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
259
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
260
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
261
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
262
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
263
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
264
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
265
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
266
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
267
-.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
268
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
269
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
270
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
271
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
272
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
273
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
274
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
275
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
276
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
277
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
278
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
279
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
280
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
281
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
282
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
283
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
284
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
285
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
286
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
287
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
288
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
289
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
290
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
291
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
292
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
293
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
294
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
295
-.ui-icon-arrow-4 { background-position: 0 -80px; }
296
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
297
-.ui-icon-extlink { background-position: -32px -80px; }
298
-.ui-icon-newwin { background-position: -48px -80px; }
299
-.ui-icon-refresh { background-position: -64px -80px; }
300
-.ui-icon-shuffle { background-position: -80px -80px; }
301
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
302
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
303
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
304
-.ui-icon-folder-open { background-position: -16px -96px; }
305
-.ui-icon-document { background-position: -32px -96px; }
306
-.ui-icon-document-b { background-position: -48px -96px; }
307
-.ui-icon-note { background-position: -64px -96px; }
308
-.ui-icon-mail-closed { background-position: -80px -96px; }
309
-.ui-icon-mail-open { background-position: -96px -96px; }
310
-.ui-icon-suitcase { background-position: -112px -96px; }
311
-.ui-icon-comment { background-position: -128px -96px; }
312
-.ui-icon-person { background-position: -144px -96px; }
313
-.ui-icon-print { background-position: -160px -96px; }
314
-.ui-icon-trash { background-position: -176px -96px; }
315
-.ui-icon-locked { background-position: -192px -96px; }
316
-.ui-icon-unlocked { background-position: -208px -96px; }
317
-.ui-icon-bookmark { background-position: -224px -96px; }
318
-.ui-icon-tag { background-position: -240px -96px; }
319
-.ui-icon-home { background-position: 0 -112px; }
320
-.ui-icon-flag { background-position: -16px -112px; }
321
-.ui-icon-calendar { background-position: -32px -112px; }
322
-.ui-icon-cart { background-position: -48px -112px; }
323
-.ui-icon-pencil { background-position: -64px -112px; }
324
-.ui-icon-clock { background-position: -80px -112px; }
325
-.ui-icon-disk { background-position: -96px -112px; }
326
-.ui-icon-calculator { background-position: -112px -112px; }
327
-.ui-icon-zoomin { background-position: -128px -112px; }
328
-.ui-icon-zoomout { background-position: -144px -112px; }
329
-.ui-icon-search { background-position: -160px -112px; }
330
-.ui-icon-wrench { background-position: -176px -112px; }
331
-.ui-icon-gear { background-position: -192px -112px; }
332
-.ui-icon-heart { background-position: -208px -112px; }
333
-.ui-icon-star { background-position: -224px -112px; }
334
-.ui-icon-link { background-position: -240px -112px; }
335
-.ui-icon-cancel { background-position: 0 -128px; }
336
-.ui-icon-plus { background-position: -16px -128px; }
337
-.ui-icon-plusthick { background-position: -32px -128px; }
338
-.ui-icon-minus { background-position: -48px -128px; }
339
-.ui-icon-minusthick { background-position: -64px -128px; }
340
-.ui-icon-close { background-position: -80px -128px; }
341
-.ui-icon-closethick { background-position: -96px -128px; }
342
-.ui-icon-key { background-position: -112px -128px; }
343
-.ui-icon-lightbulb { background-position: -128px -128px; }
344
-.ui-icon-scissors { background-position: -144px -128px; }
345
-.ui-icon-clipboard { background-position: -160px -128px; }
346
-.ui-icon-copy { background-position: -176px -128px; }
347
-.ui-icon-contact { background-position: -192px -128px; }
348
-.ui-icon-image { background-position: -208px -128px; }
349
-.ui-icon-video { background-position: -224px -128px; }
350
-.ui-icon-script { background-position: -240px -128px; }
351
-.ui-icon-alert { background-position: 0 -144px; }
352
-.ui-icon-info { background-position: -16px -144px; }
353
-.ui-icon-notice { background-position: -32px -144px; }
354
-.ui-icon-help { background-position: -48px -144px; }
355
-.ui-icon-check { background-position: -64px -144px; }
356
-.ui-icon-bullet { background-position: -80px -144px; }
357
-.ui-icon-radio-on { background-position: -96px -144px; }
358
-.ui-icon-radio-off { background-position: -112px -144px; }
359
-.ui-icon-pin-w { background-position: -128px -144px; }
360
-.ui-icon-pin-s { background-position: -144px -144px; }
361
-.ui-icon-play { background-position: 0 -160px; }
362
-.ui-icon-pause { background-position: -16px -160px; }
363
-.ui-icon-seek-next { background-position: -32px -160px; }
364
-.ui-icon-seek-prev { background-position: -48px -160px; }
365
-.ui-icon-seek-end { background-position: -64px -160px; }
366
-.ui-icon-seek-start { background-position: -80px -160px; }
367
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
368
-.ui-icon-seek-first { background-position: -80px -160px; }
369
-.ui-icon-stop { background-position: -96px -160px; }
370
-.ui-icon-eject { background-position: -112px -160px; }
371
-.ui-icon-volume-off { background-position: -128px -160px; }
372
-.ui-icon-volume-on { background-position: -144px -160px; }
373
-.ui-icon-power { background-position: 0 -176px; }
374
-.ui-icon-signal-diag { background-position: -16px -176px; }
375
-.ui-icon-signal { background-position: -32px -176px; }
376
-.ui-icon-battery-0 { background-position: -48px -176px; }
377
-.ui-icon-battery-1 { background-position: -64px -176px; }
378
-.ui-icon-battery-2 { background-position: -80px -176px; }
379
-.ui-icon-battery-3 { background-position: -96px -176px; }
380
-.ui-icon-circle-plus { background-position: 0 -192px; }
381
-.ui-icon-circle-minus { background-position: -16px -192px; }
382
-.ui-icon-circle-close { background-position: -32px -192px; }
383
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
384
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
385
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
386
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
387
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
388
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
389
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
390
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
391
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
392
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
393
-.ui-icon-circle-check { background-position: -208px -192px; }
394
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
395
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
396
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
397
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
398
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
399
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
400
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
401
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
402
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
403
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
404
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
405
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
406
-
407
-
408
-/* Misc visuals
409
-----------------------------------*/
410
-
411
-/* Corner radius */
412
-.ui-corner-all,
413
-.ui-corner-top,
414
-.ui-corner-left,
415
-.ui-corner-tl {
416
-	border-top-left-radius: 3px;
417
-}
418
-.ui-corner-all,
419
-.ui-corner-top,
420
-.ui-corner-right,
421
-.ui-corner-tr {
422
-	border-top-right-radius: 3px;
423
-}
424
-.ui-corner-all,
425
-.ui-corner-bottom,
426
-.ui-corner-left,
427
-.ui-corner-bl {
428
-	border-bottom-left-radius: 3px;
429
-}
430
-.ui-corner-all,
431
-.ui-corner-bottom,
432
-.ui-corner-right,
433
-.ui-corner-br {
434
-	border-bottom-right-radius: 3px;
435
-}
436
-
437
-/* Overlays */
438
-.ui-widget-overlay {
439
-	background: #aaaaaa;
440
-	opacity: .003;
441
-	-ms-filter: Alpha(Opacity=.3); /* support: IE8 */
442
-}
443
-.ui-widget-shadow {
444
-	-webkit-box-shadow: 0px 0px 5px #666666;
445
-	box-shadow: 0px 0px 5px #666666;
446
-}
... ...
@@ -1,5 +0,0 @@
1
-/*! jQuery UI - v1.13.2 - 2022-07-14
2
-* http://jqueryui.com
3
-* Copyright jQuery Foundation and other contributors; Licensed MIT */
4
-
5
-.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;-ms-filter:"alpha(opacity=70)";font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;-ms-filter:"alpha(opacity=35)";background-image:none}.ui-state-disabled .ui-icon{-ms-filter:"alpha(opacity=35)"}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank.ui-icon-blank.ui-icon-blank{background-image:none}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.003;-ms-filter:Alpha(Opacity=.3)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
6 0
\ No newline at end of file
... ...
@@ -428,14 +428,6 @@ function html_select($name, $options, $default='', $free='')
428 428
 }
429 429
 
430 430
 
431
-function html_datepicker($htmlname, $timestamp)
432
-{
433
-    $date = date('Y-m-d', $timestamp);
434
-    $ret = '';
435
-    $ret .= '<input type="date" id="'.$htmlname.'" name="'.$htmlname.'" value="'.$date.'">';
436
-    return $ret;
437
-}
438
-
439 431
 function get_modules_info()
440 432
 {
441 433
     $modules = config('modules');
... ...
@@ -13,13 +13,11 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r
13 13
 
14 14
 require_once('inc/base.php');
15 15
 
16
-if (! defined('__JQUERY_INCLUDED')) {
17
-    define('__JQUERY_INCLUDED', '1');
16
+if (! defined('__JAVASCRIPT_INCLUDED')) {
17
+    define('__JAVASCRIPT_INCLUDED', '1');
18 18
     global $prefix;
19 19
     html_header('
20
-<link rel="stylesheet" href="'.$prefix.'external/jquery/ui/jquery-ui.min.css" />
21
-<script type="text/javascript" src="'.$prefix.'external/jquery/jquery.min.js" ></script>
22
-<script type="text/javascript" src="'.$prefix.'external/jquery/ui/jquery-ui.min.js" ></script>
20
+<script type="text/javascript" src="'.$prefix.'js/common.js" ></script>
23 21
 ');
24 22
 }
25 23
 
... ...
@@ -0,0 +1,20 @@
1
+/*
2
+This file belongs to the Webinterface of schokokeks.org Hosting
3
+
4
+Written by schokokeks.org Hosting, namely
5
+  Bernd Wurst <bernd@schokokeks.org>
6
+  Hanno Böck <hanno@schokokeks.org>
7
+
8
+This code is published under a 0BSD license.
9
+
10
+Nevertheless, in case you use a significant part of this code, we ask (but not require, see the license) that you keep the authors' names in place and return your changes to the public. We would be especially happy if you tell us what you're going to do with this code.
11
+*/
12
+
13
+// Define a convenience method
14
+// replacement for jquery $(function ...) => ready( () => { ... })
15
+var ready = (callback) => {
16
+  if (document.readyState != "loading") callback();
17
+  else document.addEventListener("DOMContentLoaded", callback);
18
+}
19
+
20
+
... ...
@@ -17,7 +17,6 @@ output('<p>Dieses Webinterface ist eine Eigenentwicklung von schokokeks.org Webh
17 17
 <p>Folgende Bestandteile wurden von anderen Autoren übernommen und unterliegen einer abweichenden Lizenz:</p>
18 18
 <ul>
19 19
   <li>Eine <a href="https://github.com/PHPGangsta/GoogleAuthenticator">Bibliothek zur Abwicklung der Google-Authenticator-Anmeldung</a> wurde von <a href="https://www.phpgangsta.de/2-faktor-authentifizierung-mit-dem-google-authenticator">Michael Kliewe (PHPGangsta)</a> übernommen und ist unter der BSD-Lizenz freigegeben</li>
20
-  <li>Die Bibliotheken <a href="https://jquery.com/">JQuery</a> und <a href="https://jqueryui.com/">JQueryUI</a>, veröffentlicht unter <a href="https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt">MIT-Lizenz</a></li>
21 20
   <li><a href="https://github.com/globalcitizen/php-iban">php-iban</a>, veröffentlicht unter <a href="https://www.gnu.org/licenses/gpl-3.0">GPLv3</a></li>
22 21
   <li><a href="https://github.com/giggsey/libphonenumber-for-php">libphonenumber-for-php</a>, eine PHP-Variante von Googles Telefonnummern-Bibliothek, veröffentlicht unter <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a></li>
23 22
   <li><a href="https://github.com/bjeavons/zxcvbn-php">zxcvbn-php</a> zur Kontrolle der Passwortstärke. Veröffentlicht unter <a href="https://github.com/bjeavons/zxcvbn-php/blob/master/LICENSE.txt">MIT-Lizenz</a></li>
... ...
@@ -11,6 +11,10 @@ This code is published under a 0BSD license.
11 11
 Nevertheless, in case you use a significant part of this code, we ask (but not require, see the license) that you keep the authors' names in place and return your changes to the public. We would be especially happy if you tell us what you're going to do with this code.
12 12
 */
13 13
 
14
+// FIXME: PGP functionality nonfunctional
15
+// disabled
16
+die();
17
+
14 18
 require_once('contacts.php');
15 19
 
16 20
 if (isset($_GET['q']) || isset($_GET['id'])) {
... ...
@@ -19,7 +23,9 @@ if (isset($_GET['q']) || isset($_GET['id'])) {
19 23
     $id = null;
20 24
     if (isset($_GET['q'])) {
21 25
         $id = search_pgp_key($_GET['q']);
26
+        if ($id) {
22 27
             fetch_pgp_key($id);
28
+        }
23 29
     } elseif (isset($_GET['id'])) {
24 30
         $id = fetch_pgp_key($_GET['id']);
25 31
     }
... ...
@@ -4,99 +4,106 @@ var pgpcheck_in_progress = false;
4 4
 function populate_number(result) {
5 5
   var field = result.field;
6 6
   if (result.valid == 1) {
7
-    $("#"+field).val(result.number);
8
-    $("#"+field+"_feedback").html('<img src="../../images/ok.png" style="height: 16px; width: 16px;" />');
7
+    document.querySelector("#"+field).value = result.number;
8
+    document.querySelector("#"+field+"_feedback").innerHTML = '<img src="../../images/ok.png" style="height: 16px; width: 16px;" />';
9 9
   } else {
10
-    $("#"+field+"_feedback").html('<img src="../../images/error.png" style="height: 16px; width: 16px;" alt="Nummer scheint nicht gültig zu sein" title="Nummer scheint nicht gültig zu sein" />');
10
+    document.querySelector("#"+field+"_feedback").innerHTML = '<img src="../../images/error.png" style="height: 16px; width: 16px;" alt="Nummer scheint nicht gültig zu sein" title="Nummer scheint nicht gültig zu sein" />';
11 11
   }
12 12
 }
13 13
 
14 14
 function check_number( field ) 
15 15
 {
16
-    return function () {
17
-        if ($("#"+field).val().length > 0) {
18
-            var number = $("#"+field).val();
19
-            var country = $("#land").val();
20
-            $("#"+field).prop("disabled", true);
21
-            $.getJSON("numbercheck?number="+encodeURIComponent(number)+"&country="+encodeURIComponent(country)+"&field="+field, populate_number)
22
-                .always( function() {
23
-                    $("#"+field).prop("disabled", false);
24
-                });
16
+    return async function () {
17
+        if (document.querySelector("#"+field).value.length > 0) {
18
+            var number = document.querySelector("#"+field).value;
19
+            var country = document.querySelector("#land").value;
20
+            document.querySelector("#"+field).disabled = true;
21
+            const response = await fetch("numbercheck?number="+encodeURIComponent(number)+"&country="+encodeURIComponent(country)+"&field="+field);
22
+            const data = await response.json();
23
+            document.querySelector("#"+field).disabled = false;
24
+            populate_number(data);
25 25
         } else {
26
-            $("#"+field+"_feedback").html('');
26
+            document.querySelector("#"+field+"_feedback").innerHTML = '';
27 27
         }
28 28
     }
29 29
 }
30 30
 
31
-
31
+/*
32 32
 function receive_pgpid(result) {
33 33
     if (result.status == 'found') {
34 34
         message = '<br>Es wurde ein PGP-Key auf einem Keyserver gefunden. Bitte prüfen Sie, ob die ID korrekt ist und Sie auch den dazu passenden privaten Schlüssel besitzen.';
35
-        if (result.id == $('#pgpid').val()) {
35
+        if (result.id == document.querySelector('#pgpid').value) {
36 36
             message = '';
37 37
         }
38
-        $('#pgpid').val(result.id);
39
-        $("#pgpid_feedback").html('<img src="../../images/ok.png" style="height: 16px; width: 16px;" />'+message);
38
+        document.querySelector('#pgpid').value = result.id;
39
+        document.querySelector("#pgpid_feedback").innerHTML = '<img src="../../images/ok.png" style="height: 16px; width: 16px;" />'+message;
40 40
     } else if (result.status == 'unusable') {
41
-        $('#pgpid').val(result.id);
42
-        $('#pgpkey').closest('tr').show();
43
-        $("#pgpid_feedback").html('<img src="../../images/error.png" style="height: 16px; width: 16px;" /><br>Es wurde ein Key gefunden, allerdings scheint dieser kaputt oder veraltet zu sein. Bitte geben Sie unten den kompletten aktuellen Key ein.');
41
+        document.querySelector('#pgpid').value = result.id;
42
+        document.querySelector('#pgpkey').closest('tr').style.display = "";
43
+        document.querySelector("#pgpid_feedback").innerHTML = '<img src="../../images/error.png" style="height: 16px; width: 16px;" /><br>Es wurde ein Key gefunden, allerdings scheint dieser kaputt oder veraltet zu sein. Bitte geben Sie unten den kompletten aktuellen Key ein.';
44 44
     } else {
45
-        $('#pgpkey').closest('tr').show();
46
-        $("#pgpid_feedback").html('<img src="../../images/error.png" style="height: 16px; width: 16px;" /><br>Es konnte kein PGP-Key zu dieser ID vom Keyserver-Netzwerk bezogen werden. Bitte geben Sie unten den kompletten Key ein.');
45
+        document.querySelector('#pgpkey').closest('tr').style.display = "";
46
+        document.querySelector("#pgpid_feedback").innerHTML = '<img src="../../images/error.png" style="height: 16px; width: 16px;" /><br>Es konnte kein PGP-Key zu dieser ID vom Keyserver-Netzwerk bezogen werden. Bitte geben Sie unten den kompletten Key ein.';
47 47
     }
48 48
 }
49
-
49
+*/
50 50
 
51 51
 function email_change() {
52
-    var new_email = $('#email').val();
53
-    if (new_email != old_email) {
54
-        $('#designated-row').show();
52
+    var new_email = document.querySelector('#email').value;
53
+    if (document.querySelector('#designated-row') && new_email != old_email) {
54
+        document.querySelector('#designated-row').style.display = "";
55 55
     } else {
56
-        $('#designated-row').hide();
57
-    }
58
-}
59
-
60
-function searchpgp() {
61
-    if ($('#pgpid').val()) {
62
-        $("#pgpid_feedback").html('<img src="../../images/spinner.gif" style="height: 16px; width: 16px;" />');
63
-        $.getJSON("ajax_pgp?id="+encodeURIComponent($('#pgpid').val().replace(/\s/g, "")), receive_pgpid)
64
-    } else if ($('#email').val() && ! $('#pgpid').val()) {
65
-        $("#pgpid_feedback").html('<img src="../../images/spinner.gif" style="height: 16px; width: 16px;" />');
66
-        $.getJSON("ajax_pgp?q="+encodeURIComponent($('#email').val()), receive_pgpid)
56
+        document.querySelector('#designated-row').style.display = "none";
67 57
     }
68 58
 }
69 59
 
60
+/*
61
+async function searchpgp() {
62
+    if (document.querySelector('#pgpid').value) {
63
+        document.querySelector("#pgpid_feedback").innerHTML = '<img src="../../images/spinner.gif" style="height: 16px; width: 16px;" />';
64
+        const response = await fetch("ajax_pgp?id="+encodeURIComponent(document.querySelector('#pgpid').value.replace(/\s/g, "")));
65
+        const data = await response.json();
66
+        receive_pgpid(data);
67
+    } else if (document.querySelector('#email').value && ! document.querySelector('#pgpid').value) {
68
+        document.querySelector("#pgpid_feedback").innerHTML = '<img src="../../images/spinner.gif" style="height: 16px; width: 16px;" />';
69
+        const response = await fetch("ajax_pgp?q="+encodeURIComponent(document.querySelector('#email').value));
70
+        const data = await response.json();
71
+        receive_pgpid(data);
72
+    }
73
+}
74
+*/
70 75
 function usepgp_yes() {
71
-    $('#pgpid').closest('tr').show();
72
-    $('#pgpkey').closest('tr').show();
76
+    document.querySelector('#pgpid').closest('tr').style.display = "";
77
+    document.querySelector('#pgpkey').closest('tr').style.display = "";
73 78
 }
74 79
 
75 80
 function usepgp_no() {
76
-    $('#pgpid').val('');
77
-    $("#pgpid_feedback").html('');
78
-    $('#pgpkey').val('');
79
-    $('#pgpid').closest('tr').hide();
80
-    $('#pgpkey').closest('tr').hide();
81
+    document.querySelector('#pgpid').value = "";
82
+    document.querySelector("#pgpid_feedback").innerHTML = '';
83
+    document.querySelector('#pgpkey').value = '';
84
+    document.querySelector('#pgpid').closest('tr').style.display = "none";
85
+    document.querySelector('#pgpkey').closest('tr').style.display = "none";
81 86
 }
82 87
 
83 88
 
84
-$(function() {
85
-    $('#telefon').on("focusout", check_number("telefon") );
86
-    $('#mobile').on("focusout", check_number("mobile") );
87
-    $('#telefax').on("focusout", check_number("telefax") );
89
+ready(() => {
90
+    document.querySelector('#telefon').addEventListener("focusout", (e) => check_number("telefon") );
91
+    document.querySelector('#mobile').addEventListener("focusout", (e) => check_number("mobile") );
92
+    document.querySelector('#telefax').addEventListener("focusout", (e) => check_number("telefax") );
88 93
     
89
-    if ($('#designated-row')) {
90
-        $('#designated-row').hide();
91
-        old_email = $('#email').val();
92
-    }
93
-    $('#email').on("focusout", email_change);
94
-    $(".buttonset").buttonset();
95
-    $("#usepgp-yes").click(usepgp_yes);
96
-    $("#usepgp-no").click(usepgp_no);
97
-    if ($('#usepgp-no').is(':checked')) {
98
-        $('#pgpid').closest('tr').hide();
99
-        $('#pgpkey').closest('tr').hide();
100
-    }
101
-    $('#searchpgp').click(searchpgp);
94
+    if (document.querySelector('#designated-row')) {
95
+        //console.log(document.querySelector('#designated-row').style.display);
96
+        document.querySelector('#designated-row').style.display = "none";
97
+        old_email = document.querySelector('#email').value;
98
+    }
99
+    document.querySelector('#email').addEventListener("focusout", email_change);
100
+    document.querySelector("#usepgp-yes").addEventListener("click", usepgp_yes);
101
+    document.querySelector("#usepgp-no").addEventListener("click", usepgp_no);
102
+    if (document.querySelector('#usepgp-no').checked) {
103
+        document.querySelector('#pgpid').closest('tr').style.display = "none";
104
+        document.querySelector('#pgpkey').closest('tr').style.display = "none";
105
+    }
106
+    // PGP-Suche deaktiviert weil sowieso disfunktional
107
+    document.querySelector('#searchpgp').remove();
108
+    //document.querySelector('#searchpgp').addEventListener("click", searchpgp);
102 109
 });
... ...
@@ -13,7 +13,7 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r
13 13
 
14 14
 require_once('contacts.php');
15 15
 require_once('inc/debug.php');
16
-require_once('inc/jquery.php');
16
+require_once('inc/javascript.php');
17 17
 javascript();
18 18
 
19 19
 require_once('session/start.php');
... ...
@@ -362,6 +362,9 @@ function search_pgp_key($search)
362 362
 
363 363
 function fetch_pgp_key($pgp_id)
364 364
 {
365
+    if (! $pgp_id) {
366
+        return null;
367
+    }
365 368
     $output = [];
366 369
     $ret = null;
367 370
     $command = '/usr/bin/timeout 10 /usr/bin/gpg --batch --keyserver hkps://hkps.pool.sks-keyservers.net --no-auto-check-trustdb --trust-model=always --recv-key '.escapeshellarg($pgp_id);
... ...
@@ -14,8 +14,6 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r
14 14
 require_once('contacts.php');
15 15
 require_once('inc/debug.php');
16 16
 require_once('inc/icons.php');
17
-require_once('inc/jquery.php');
18
-#javascript();
19 17
 
20 18
 require_once('session/start.php');
21 19
 
... ...
@@ -6,9 +6,6 @@
6 6
   <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
7 7
   <title></title>
8 8
   <style type="text/css">code{white-space: pre;}</style>
9
-  <!--[if lt IE 9]>
10
-    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
11
-  <![endif]-->
12 9
 </head>
13 10
 <body>
14 11
 <h2 id="auftraggeber-verantwortlicher">Auftraggeber (Verantwortlicher):</h2>
... ...
@@ -1,17 +0,0 @@
1
-
2
-
3
-
4
-
5
-$(document).ready(function(){
6
-    $('div#buttons').show();
7
-    $('div#transfer').hide();
8
-    $('div#external').hide();
9
-
10
-    $('button#domain-external').click( function() {
11
-        $('div#transfer').hide();
12
-        $('div#buttons').hide();
13
-        $('div#external').show();
14
-    });
15
-    $(".buttonset").buttonset();
16
- 
17
-});
... ...
@@ -13,8 +13,6 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r
13 13
 
14 14
 require_once('inc/security.php');
15 15
 require_once('inc/icons.php');
16
-require_once('inc/jquery.php');
17
-javascript();
18 16
 
19 17
 require_once('domainapi.php');
20 18
 require_once('domains.php');
... ...
@@ -108,20 +106,20 @@ if (isset($_REQUEST['domain'])) {
108 106
                 <p><strong>Beachten Sie:</strong> Um diese Domain nutzen zu können, benötigen Sie bei Ihrem bisherigen Domainregistrar die Möglichkeit, DNS-Records anzulegen oder die zuständigen DNS-Server zu ändern. Sie können dann entweder unsere DNS-Server nutzen oder einzelne DNS-Records auf unsere Server einrichten.</p>');
109 107
 
110 108
         output('<p>Mit Betätigen des unten stehenden Knopfes bestätigen Sie, dass Sie entweder der Domaininhaber sind oder mit expliziter Zustimmung des Domaininhabers handeln.</p>');
111
-        $form = '
112
-            <p class="buttonset" id="buttonset-external">
109
+        $form = '<p>
110
+            <span class="buttonset" id="buttonset-external">
113 111
             <input type="radio" name="dns" id="option-dns-enable" value="enable" />
114 112
             <label for="option-dns-enable">Lokalen DNS-Server aktivieren</label>
115 113
             <input type="radio" name="dns" id="option-dns-disable" value="disable" checked="checked" />
116 114
             <label for="option-dns-disable">Weiterhin externen DNS verwenden</label>
117
-            </p>
118
-
119
-            <p class="buttonset" id="buttonset-email">
115
+            </span>
116
+            </p><p>
117
+            <span class="buttonset" id="buttonset-email">
120 118
             <input type="radio" name="email" id="option-email-enable" value="enable" checked="checked" />
121 119
             <label for="option-email-enable">E-Mail-Nutzung aktivieren</label>
122 120
             <input type="radio" name="email" id="option-email-disable" value="disable" />
123 121
             <label for="option-email-disable">Nicht für E-Mail nutzen</label>
124
-            </p>';
122
+            </span></p>';
125 123
 
126 124
         $form .= '<p><input type="hidden" name="domain" value="'.filter_output_html($request).'">
127 125
             <input type="submit" name="submit" value="Diese Domain bei '.config('company_name').' verwenden"></p>';
... ...
@@ -1,9 +1,8 @@
1
-$(function() {
2
-  $(".buttonset input[type=submit]").remove();
3
-  $(".buttonset").buttonset();
4
-  $(".buttonset .disabled").buttonset("option", "disabled", true);
5
-  
6
-  $(".buttonset input").click( function() {
7
-    $(this).closest("form").submit();
1
+ready(() => {
2
+    document.querySelectorAll('.buttonset input[type=submit]').forEach(e => e.remove());
3
+    document.querySelectorAll('.buttonset').forEach(el => {
4
+        el.addEventListener('change', (e) => {
5
+            e.currentTarget.closest('form').submit();
8 6
         });
9 7
     });
8
+})
... ...
@@ -14,7 +14,7 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r
14 14
 require_once('inc/base.php');
15 15
 require_once('inc/security.php');
16 16
 require_role(ROLE_SYSTEMUSER);
17
-require_once('inc/jquery.php');
17
+require_once('inc/javascript.php');
18 18
 javascript('domains.js');
19 19
 
20 20
 require_once('vmail.php');
... ...
@@ -2,8 +2,8 @@
2 2
   function moreForward(e)
3 3
   {
4 4
     e.preventDefault();
5
-    last = $('div.vmail-forward:last');
6
-    last_id = parseInt(last.attr('id').match(/\d+/g));
5
+    last = [...document.querySelectorAll('div.vmail-forward')].at(-1);
6
+    last_id = parseInt(last.id.match(/\d+/g));
7 7
     new_id = ++last_id;
8 8
  
9 9
     if (new_id > 50) {
... ...
@@ -12,44 +12,36 @@
12 12
     }
13 13
 
14 14
 
15
-    var $clone = last.clone();
16
-    $clone.attr('id',$clone.attr('id').replace(/\d+$/, function(str) { return parseInt(str) + 1; }) ); 
15
+    var clone = last.cloneNode(true);
16
+    clone.id = clone.id.replace(/\d+$/, function(str) { return parseInt(str) + 1; }); 
17 17
 
18 18
     // Find all elements in $clone that have an ID, and iterate using each()
19
-    $clone.find('[id]').each(function() { 
19
+    clone.querySelectorAll('[id]').forEach(el => { 
20 20
       //Perform the same replace as above
21
-      var $th = $(this);
22
-      var newID = $th.attr('id').replace(/\d+$/, function(str) { return parseInt(str) + 1; });
23
-      $th.attr('id', newID);
21
+      el.id = el.id.replace(/\d+$/, function(str) { return parseInt(str) + 1; });
24 22
     });
25 23
     // Find all elements in $clone that have a name, and iterate using each()
26
-    $clone.find('[name]').each(function() { 
24
+    clone.querySelectorAll('[name]').forEach(el => { 
27 25
       //Perform the same replace as above
28
-      var $th = $(this);
29
-      var newName = $th.attr('name').replace(/\d+$/, function(str) { return parseInt(str) + 1; });
30
-      $th.attr('name', newName);
26
+      el.name = el.name.replace(/\d+$/, function(str) { return parseInt(str) + 1; });
31 27
     });
32 28
 
33
-    $clone.find('input:first-of-type').val('');
34
-    $clone.find('select:first-of-type')
35
-          .find('option:first-of-type').prop('selected', true);
36
-    $clone.find('.warning').text('');
37
-    $clone.find('.warning').hide();
29
+    clone.querySelector('input').value = '';
38 30
     
39
-    $clone.find('div.delete_forward').click(removeForward);
40
-    $clone.find('input').on("change keyup paste", checkForward);
31
+    clone.querySelector('div.delete_forward').addEventListener("click", removeForward);
32
+    clone.querySelector('input').addEventListener("change", checkForward);
33
+    clone.querySelector('input').addEventListener("keyup", checkForward);
34
+    clone.querySelector('input').addEventListener("paste", checkForward);
41 35
     
42
-    last.after($clone);
36
+    last.after(clone);
43 37
   }
44 38
 
45
-  function removeForward() 
39
+  function removeForward(ev) 
46 40
   {
47
-    div = $(this).closest('div.vmail-forward');
48
-    input = div.find('input:first');
49
-    input.val('');
50
-    select = div.find('select:first');
51
-    select.find('option:first').prop('selected', true);
52
-    if ($('div.vmail-forward').length > 1) {
41
+    div = this.closest('div.vmail-forward');
42
+    input = div.querySelector('input');
43
+    input.value = '';
44
+    if ([...document.querySelectorAll('div.vmail-forward')].length > 1) {
53 45
       div.remove();
54 46
     }
55 47
   }
... ...
@@ -57,11 +49,11 @@
57 49
 
58 50
   function removeUnneededForwards() {
59 51
     // Alle <div> nach dem Element mit der ID vmail_forward_1...
60
-    $('div#vmail_forward_1 ~ div').each( function (el) {
52
+    document.querySelectorAll('div#vmail_forward_1 ~ div').forEach(el => {
61 53
       // ... die leere Eingabefelder haben ...
62
-      if ($(this).find('input:first').val() == '') {
54
+      if (el.querySelector('input').value == '') {
63 55
         // ... werden gelöscht
64
-        $(this).remove();
56
+        el.remove();
65 57
       }
66 58
       });
67 59
   }
... ...
@@ -90,63 +82,46 @@
90 82
 function hideOrShowGroup( ev ) {
91 83
   checkbox = ev.target;
92 84
   the_id = checkbox.id;
93
-  checkbox = $('#'+the_id)
94
-  div = $('#'+the_id+'_config')
95
-  if (checkbox.is(':checked')) {
96
-    div.show(100);
85
+  checkbox = document.querySelector('#'+the_id)
86
+  div = document.querySelector('#'+the_id+'_config')
87
+  if (checkbox.checked) {
88
+    div.style.display = "";
97 89
   } else {
98
-    div.hide(100);
90
+    div.style.display = "none";
99 91
   }
100 92
 
101 93
 }
102 94
 
103 95
 
104 96
 function hideUnchecked() {
105
-  $('div.option_group').each( function(index) {
106
-    the_id = this.id.replace('_config', '');
107
-    checkbox = $('#'+the_id)
108
-    div = $('#'+the_id+'_config')
109
-    if (checkbox.is(':checked')) {
110
-      div.show();
97
+  document.querySelectorAll('div.option_group').forEach(index => {
98
+    the_id = index.id.replace('_config', '');
99
+    checkbox = document.querySelector('#'+the_id)
100
+    div = document.querySelector('#'+the_id+'_config')
101
+    if (checkbox.checked) {
102
+      div.style.display = "";
111 103
     } else {
112
-      div.hide();
104
+      div.style.display = "none";
113 105
     }
114 106
   });
115 107
 }
116 108
 
117 109
 
118
-function checkForward( ) {
119
-  input = $(this);
120
-  val = input.val();
110
+function checkForward(ev) {
111
+  input = ev.target;
112
+  val = input.value;
121 113
   atpos = val.indexOf('@');
122 114
   dot = val.lastIndexOf('.');
123 115
   if (atpos < 0 || val.length < atpos + 3 || dot < atpos || dot > val.length - 2) {
124 116
     return;
125 117
   }
126 118
   div = input.closest('div.vmail-forward');
119
+  // FIXME: Diese Funktion prüft nur und macht nichts
127 120
 }
128 121
 
129 122
 
130
-
131
-$(document).ready(function(){
132
-  // Automatisch Sternchen im Passwortfeld eintragen und entfernen
133
-  $('#password').on('blur', refillPassword);
134
-  $('#password').on('focus',clearPassword);    
135
-
136
-  hideUnchecked();
137
-  $('input.option_group').change(hideOrShowGroup);
138
-
139
-  removeUnneededForwards();
140
-  $('div.delete_forward').click(removeForward);
141
-  $('#more_forwards').click(moreForward);
142
-
143
-  $('div.vmail-forward input').on("change keyup paste", checkForward);
144
-  
145
-  // trigger setup of warnings
146
-  $('div.vmail-forward input').change();
147
-
148
-
149
-  document.querySelector("#ar_startdate").addEventListener("change", (e) => {
123
+function ar_startdate_changed(e) 
124
+{
150 125
       document.querySelector("#ar_enddate").min = document.querySelector("#ar_startdate").value;
151 126
       startdate = new Date(document.querySelector("#ar_startdate").value)
152 127
       minenddate = new Date(startdate);
... ...
@@ -160,7 +135,27 @@ $(document).ready(function(){
160 135
       document.querySelector("#ar_enddate").max = maxenddate.toISOString().split("T")[0];
161 136
 
162 137
       document.querySelector("#ar_valid_from_date").checked = true;
163
-      });
138
+ }
139
+
140
+
141
+
142
+ready(() => {
143
+  // Automatisch Sternchen im Passwortfeld eintragen und entfernen
144
+  document.querySelector('#password').addEventListener('blur', refillPassword);
145
+  document.querySelector('#password').addEventListener('focus',clearPassword);    
146
+
147
+  hideUnchecked();
148
+  document.querySelectorAll('input.option_group').forEach(el => el.addEventListener("change", hideOrShowGroup));
149
+
150
+  removeUnneededForwards();
151
+  document.querySelectorAll('div.delete_forward').forEach(el => el.addEventListener("click", removeForward));
152
+  document.querySelector('#more_forwards').addEventListener("click", moreForward);
153
+
154
+  document.querySelectorAll('div.vmail-forward input').forEach(el => el.addEventListener("change", checkForward));
155
+  document.querySelectorAll('div.vmail-forward input').forEach(el => el.addEventListener("keyup", checkForward));
156
+  document.querySelectorAll('div.vmail-forward input').forEach(el => el.addEventListener("paste", checkForward));
157
+  
158
+  document.querySelector("#ar_startdate").addEventListener("change", ar_startdate_changed)
164 159
 
165 160
 });
166 161
 
... ...
@@ -17,7 +17,7 @@ require_once('inc/icons.php');
17 17
 
18 18
 require_once('vmail.php');
19 19
 
20
-require_once('inc/jquery.php');
20
+require_once('inc/javascript.php');
21 21
 javascript();
22 22
 
23 23
 $section = 'email_vmail';
... ...
@@ -1,6 +1,8 @@
1
-$(function() {
2
-    $('#clear').click( function() { 
3
-        $('#filter').val('');
4
-        $('#vmail_filter').submit();
1
+ready(() => {
2
+    if (document.querySelector('#clear')) {
3
+        document.querySelector('#clear').addEventListener("click", () => { 
4
+            document.querySelector('#filter').value = '';
5
+            document.querySelector('#vmail_filter').submit();
5 6
         });
7
+    }
6 8
 });
... ...
@@ -15,7 +15,7 @@ require_once('inc/base.php');
15 15
 require_once('inc/icons.php');
16 16
 require_once('inc/security.php');
17 17
 require_role(ROLE_SYSTEMUSER);
18
-require_once('inc/jquery.php');
18
+require_once('inc/javascript.php');
19 19
 javascript();
20 20
 
21 21
 require_once('hasdomain.php');
... ...
@@ -1,9 +1,9 @@
1 1
 function setup_copy_buttons() {
2
-    $('button.copyurl').each(
3
-        function (i, obj) {
4
-            $(obj).click(function () {
5
-                var id=this.id;
6
-                input = $('#'+id+'_url')[0];
2
+    document.querySelectorAll('button.copyurl').forEach(
3
+        obj => {
4
+            obj.addEventListener("click", (e) => {
5
+                var id=e.currentTarget.id;
6
+                input = document.querySelector('#'+id+'_url');
7 7
                 input.focus();
8 8
                 input.select();
9 9
                 document.execCommand("copy");
... ...
@@ -12,6 +12,6 @@ function setup_copy_buttons() {
12 12
     );
13 13
 }
14 14
 
15
-$(function () {
15
+ready(() => {
16 16
     setup_copy_buttons();
17 17
 });
... ...
@@ -12,7 +12,7 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r
12 12
 */
13 13
 
14 14
 require_once('inc/icons.php');
15
-require_once('inc/jquery.php');
15
+require_once('inc/javascript.php');
16 16
 javascript();
17 17
 
18 18
 include('git.php');
... ...
@@ -13,13 +13,6 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r
13 13
 
14 14
 require_once('inc/security.php');
15 15
 
16
-function do_ajax_cert_login()
17
-{
18
-    global $prefix;
19
-    require_once('inc/jquery.php');
20
-    javascript('certlogin.js', 'index');
21
-}
22
-
23 16
 function get_logins_by_cert($cert)
24 17
 {
25 18
     $result = db_query("SELECT type,username,startpage FROM system.clientcert WHERE cert=? ORDER BY type,username", [$cert]);
... ...
@@ -1,8 +1,8 @@
1
-$(function() {
2
-  $(".buttonset input[type=submit]").remove();
3
-  $(".buttonset").buttonset();
4
-  
5
-  $(".buttonset input").click( function() {
6
-    $(this).closest("form").submit();
1
+ready(() => {
2
+    document.querySelectorAll('.buttonset input[type=submit]').forEach(e => e.remove());
3
+    document.querySelectorAll('.buttonset').forEach(el => {
4
+        el.addEventListener('change', (e) => {
5
+            e.currentTarget.closest('form').submit();
7 6
         });
8 7
     });
8
+})
... ...
@@ -13,8 +13,8 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r
13 13
 
14 14
 require_once('session/start.php');
15 15
 require_once('inc/icons.php');
16
-require_once('inc/jquery.php');
17
-javascript('more_storage.js');
16
+require_once('inc/javascript.php');
17
+javascript();
18 18
 
19 19
 require_once('invoice.php');
20 20
 
... ...
@@ -56,7 +56,7 @@ $checked = '';
56 56
 if ($count == 1024) {
57 57
     $checked = 'checked="checked" ';
58 58
 }
59
-$form = '<p class="buttonset"><input '.$checked.'type="radio" name="count" value="1024" id="count-1" /><label for="count-1">Zusätzlich <strong>1 GB</strong>, insgesamt also '.($customerquota+1024).' MB</label>';
59
+$form = '<span class="buttonset"><input '.$checked.'type="radio" name="count" value="1024" id="count-1" /><label for="count-1">Zusätzlich <strong>1 GB</strong>, insgesamt also '.($customerquota+1024).' MB</label> ';
60 60
 if ($count == 2048) {
61 61
     $checked = 'checked="checked" ';
62 62
 } else {
... ...
@@ -70,7 +70,7 @@ if ($count == 5120) {
70 70
 }
71 71
 $form .= '<input '.$checked.'type="radio" name="count" value="5120" id="count-5" /><label for="count-5">Zusätzlich <strong>5 GB</strong>, insgesamt also '.($customerquota+5120).' MB</label>';
72 72
 
73
-$form .= '<input type="submit" value="Wählen" /></p>';
73
+$form .= '<input type="submit" value="Wählen" /></span>';
74 74
 output(html_form("more_storage_selection", "more_storage", "", $form));
75 75
 
76 76
 $new_item = $hosting;
... ...
@@ -1,84 +1,78 @@
1 1
 function populate_bankinfo(result) {
2
-  bank = result[0];
2
+  bank = result;
3 3
   if (bank.iban_ok == 1) {
4
-    $("#iban_feedback").html('<img src="../../images/ok.png" style="height: 16px; width: 16px;" alt="" title="" />');
5
-    if ($('#bankname').val() == "") 
6
-      $('#bankname').val(bank.bankname);
7
-    if ($('#bic').val() == "")  
8
-      $('#bic').val(bank.bic);
4
+    document.querySelector("#iban_feedback").innerHTML = '<img src="../../images/ok.png" style="height: 16px; width: 16px;" alt="" title="" />';
5
+    if (document.querySelector('#bankname').value == "") 
6
+      document.querySelector('#bankname').value = bank.bankname;
7
+    if (document.querySelector('#bic').value == "")  
8
+      document.querySelector('#bic').value = bank.bic;
9 9
   } else {
10
-    $("#iban_feedback").html('<img src="../../images/error.png" style="height: 16px; width: 16px;" alt="IBAN scheint nicht gültig zu sein" title="IBAN scheint nicht gültig zu sein" />');
11
-    $('#bankname').val("");
12
-    $('#bic').val("");
10
+    document.querySelector("#iban_feedback").innerHTML = '<img src="../../images/error.png" style="height: 16px; width: 16px;" alt="IBAN scheint nicht gültig zu sein" title="IBAN scheint nicht gültig zu sein" />';
11
+    document.querySelector('#bankname').value = "";
12
+    document.querySelector('#bic').value = "";
13 13
   }
14 14
     
15 15
 }
16 16
 
17
-function searchbank() 
17
+async function searchbank() 
18 18
 {
19
-  var iban = $('#iban').val().toUpperCase().replace(/\s/g, '');
19
+  var iban = document.querySelector('#iban').value.toUpperCase().replace(/\s/g, '');
20 20
   if (iban.substr(0,2) == "DE" && iban.length == 22) {
21
-    $("#iban").val(iban);
22
-    $("#bankname").prop("disabled", true);
23
-    $("#bic").prop("disabled", true);
24
-    $.getJSON("sepamandat_banksearch?iban="+iban, populate_bankinfo)
25
-      .always( function() {
26
-        $("#bankname").prop("disabled", false);
27
-        $("#bic").prop("disabled", false);
28
-      });
21
+    document.querySelector("#iban").value = iban;
22
+    document.querySelector("#bankname").disabled = true;
23
+    document.querySelector("#bic").disabled = true;
24
+    const response = await fetch("sepamandat_banksearch?iban="+iban);
25
+    const data = await response.json();
26
+    populate_bankinfo(data);
27
+    document.querySelector("#bankname").disabled = false;
28
+    document.querySelector("#bic").disabled = false;
29 29
   } else {
30
-    $("#iban_feedback").html("");
30
+    document.querySelector("#iban_feedback").innerHTML = "";
31 31
   }
32 32
 }
33 33
 
34 34
 function copydata_worker( result ) {
35
-  $("#kontoinhaber").val(result.kundenname);
36
-  $("#adresse").val(result.adresse);
35
+  document.querySelector("#kontoinhaber").value = result.kundenname;
36
+  document.querySelector("#adresse").value = result.adresse;
37 37
 }
38 38
 
39
-function copydata( event ) {
39
+async function copydata( event ) {
40 40
   event.preventDefault();
41
-  var kunde = $.getJSON("sepamandat_copydata", copydata_worker);
41
+  const response = await fetch("sepamandat_copydata");
42
+  const data = await response.json();
43
+  copydata_worker(data);
42 44
 }
43 45
 
44 46
 function populate_iban(result) {
45
-  info = result[0];
46
-  $("#iban").val(info.iban);
47
+  document.querySelector("#iban").value = result.iban;
47 48
   populate_bankinfo(result)
48 49
 }
49 50
 
50
-function ktoblz( event ) {
51
+async function ktoblz( event ) {
51 52
   event.preventDefault();
52
-  var kto = $("#kto").val();
53
-  var blz = $("#blz").val();
54
-  $.getJSON("sepamandat_banksearch?kto="+kto+"&blz="+blz, populate_iban)
53
+  var kto = document.querySelector("#kto").value;
54
+  var blz = document.querySelector("#blz").value;
55
+  const response = await fetch("sepamandat_banksearch?kto="+kto+"&blz="+blz);
56
+  const data = await response.json();
57
+  populate_iban(data);
55 58
 }
56 59
 
57 60
 function showktoblz( event ) {
58 61
   event.preventDefault();
59
-  $("#ktoblz_button").hide();
60
-  $("#ktoblz_input").show();
61
-}
62
-
63
-
64
-// Define a convenience method and use it
65
-var ready = (callback) => {
66
-  if (document.readyState != "loading") callback();
67
-  else document.addEventListener("DOMContentLoaded", callback);
62
+  document.querySelector("#ktoblz_button").style.display = "none";
63
+  document.querySelector("#ktoblz_input").style.display = "";
68 64
 }
69 65
 
70 66
 ready(() => { 
71
-  /* Do things after DOM has fully loaded */ 
67
+    document.querySelector('#iban').addEventListener("change", searchbank );
68
+    document.querySelector('#iban').addEventListener("keyup", searchbank );
69
+    document.querySelector('#iban').addEventListener("paste", searchbank );
70
+    document.querySelector('#copydata').addEventListener("click", copydata);
71
+    document.querySelector('#showktoblz').addEventListener("click", showktoblz);
72
+    document.querySelector('#ktoblz').addEventListener("click", ktoblz);
72 73
 
73 74
     document.querySelector("#gueltig_ab_datum").addEventListener("change", (e) => {
74 75
         document.querySelector("#gueltig_ab_auswahl").checked = true;
75 76
         })
76 77
 });
77 78
 
78
-
79
-$(function() {
80
-    $('#iban').on("change keyup paste", searchbank );
81
-    $("#copydata").click(copydata);
82
-    $("#showktoblz").click(showktoblz);
83
-    $("#ktoblz").click(ktoblz);
84
-});
... ...
@@ -14,7 +14,7 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r
14 14
 require_once('inc/icons.php');
15 15
 require_once('invoice.php');
16 16
 
17
-require_once('inc/jquery.php');
17
+require_once('inc/javascript.php');
18 18
 javascript();
19 19
 
20 20
 require_role(ROLE_CUSTOMER);
... ...
@@ -58,7 +58,8 @@ if ($first_date != date('Y-m-d')) {
58 58
     $html .= '<p><input type="radio" id="gueltig_ab_'.$first_date.'" name="gueltig_ab" value="'.$first_date.'" checked="checked" /><label for="gueltig_ab_'.$first_date.'">Dieses Mandat gilt <strong>ab '.$first_date.'</strong> (Alle bisher offenen Forderungen werden ebenfalls abgebucht)</label></p>';
59 59
 }
60 60
 $html .= '<p><input type="radio" id="gueltig_ab_heute" name="gueltig_ab" value="'.date('Y-m-d').'" '.($checked ? '' : 'checked="checked"').' /><label for="gueltig_ab_heute">Dieses Mandat gilt <strong>ab heute</strong> ('.date('Y-m-d').')</label></p>';
61
-$html .= '<p><input type="radio" id="gueltig_ab_auswahl" name="gueltig_ab" value="datum" /><label for="gueltig_ab_datum">Dieses Mandat gilt <strong>erst ab</strong></label> '.html_datepicker("gueltig_ab_datum", time()).'</p>';
61
+$html .= '<p><input type="radio" id="gueltig_ab_auswahl" name="gueltig_ab" value="datum" /><label for="gueltig_ab_datum">Dieses Mandat gilt <strong>erst ab</strong></label> <input type="date" id="gueltig_ab_datum" name="gueltig_ab_datum" value="'.date('Y-m-d').'">';
62
+
62 63
 
63 64
 $html .= '<h4>Ihre Bankverbindung</h4>';
64 65
 $html .= '<table>
... ...
@@ -16,6 +16,12 @@ require_once('inc/debug.php');
16 16
 
17 17
 require_once('invoice.php');
18 18
 
19
+$result = [
20
+    "iban_ok" => 0,
21
+    "iban" => null,
22
+    "bic" => null,
23
+    "bankname" => null
24
+];
19 25
 
20 26
 $iban = null;
21 27
 if (isset($_GET['iban'])) {
... ...
@@ -23,18 +29,17 @@ if (isset($_GET['iban'])) {
23 29
 } elseif (isset($_GET['kto']) && isset($_GET['blz'])) {
24 30
     $iban = find_iban($_GET['blz'], $_GET['kto']);
25 31
 }
26
-if ($iban == null) {
27
-    echo "Fehler!";
28
-    die();
29
-}
30
-
32
+if ($iban != null) {
31 33
     $iban_ok = (verify_iban($iban) ? '1' : '0');
32
-
34
+    if ($iban_ok) {
35
+        $result["iban_ok"] = 1;
36
+        $result["iban"] = $iban;
33 37
         $bank = get_bank_info($iban);
38
+        $result["bic"] = $bank["bic"];
39
+        $result["bankname"] = $bank["name"];
40
+    }
41
+}
34 42
 
35
-header("Content-Type: text/javascript");
36
-echo "[\n";
37
-echo ' { "iban_ok": "'.$iban_ok.'", "iban": "'.$iban.'", "bic": "'.$bank['bic'].'", "bankname" : "'.$bank['name'].'" } ';
38
-echo '
39
-]';
43
+header("Content-Type: application/json; charset=utf-8");
44
+echo json_encode($result);
40 45
 die();
... ...
@@ -1,11 +1,60 @@
1
+// Without jQuery
1 2
 
2
-$(function () {
3
-$("#query").autocomplete({
4
-    source: "su_ajax",
5
-    select: function( event, ui ) {
6
-      if (ui.item) {
7
-        window.location.href = "?do="+ui.item.id;
3
+
4
+ready(() => { 
5
+  /* Do things after DOM has fully loaded */ 
6
+   const searchBox = document.getElementById('query');
7
+    const datalist = document.getElementById("suggestions");
8
+
9
+searchBox.addEventListener("input", function(event) { 
10
+
11
+    const timer = setTimeout(function () { 
12
+        var sr = event.target.value;
13
+        if (sr.length < 3) {
14
+            return;
8 15
         }
16
+
17
+        const request = new Request('su_ajax?term='+sr);
18
+        fetch(request)
19
+            .then((response) => response.json())
20
+            .then((data) => {
21
+                if (searchBox.value) { //src not cleaned, backspace removed
22
+                    datalist.replaceChildren(...searchResult(data));
9 23
                 }
10 24
             });
25
+
26
+    }, 200);
27
+
28
+    window.addEventListener('input', function (e) {
29
+        if (e.inputType == 'insertReplacementText') {
30
+            query = document.querySelector('#query').value;
31
+            if (query[0] == 'u' || query[0] == 'c') {
32
+                window.location.href = "?do="+query;
33
+            }
34
+        }
35
+    }, false);
36
+
11 37
 });
38
+
39
+function searchResult(result){
40
+    mylist = [];
41
+    result.forEach((x)=>{
42
+        if(!x)return;
43
+        mylist.push(createListItem(x))
44
+    })
45
+
46
+    return mylist;
47
+}
48
+
49
+function createListItem(x){
50
+    const option = document.createElement('option') 
51
+    option.value = x.id;
52
+    option.innerText = x.value;
53
+    return option
54
+}
55
+
56
+
57
+
58
+ document.querySelector("#query").focus();
59
+});
60
+
... ...
@@ -44,11 +44,14 @@ title("Benutzer wechseln");
44 44
 output('<p>Hiermit können Sie (als Admin) das Webinterface mit den Rechten eines beliebigen anderen Benutzers benutzen.</p>
45 45
 ');
46 46
 
47
-require_once('inc/jquery.php');
47
+require_once('inc/javascript.php');
48 48
 // lädt die JS-Datei mit gleichem basename
49 49
 javascript();
50 50
 
51
-output(html_form('su_su', '', '', '<p><label for="query"><strong>Suchtext:</strong></label> <input type="text" name="query" id="query" /> <input type="submit" value="Suchen" /></p>
51
+output(html_form('su_su', '', '', '<label for="query"><strong>Suchtext:</strong></label> <input type="text" name="query" list="suggestions" id="query" autocomplete="off" /> 
52
+<datalist id="suggestions">
53
+</datalist>
54
+<input type="submit" value="Suchen" />
52 55
 '));
53 56
 
54 57
 if ($search) {
... ...
@@ -1,145 +1,139 @@
1 1
  
2 2
   function selectedDomain() {
3
-      dom = $('#domain option:selected').text();
3
+      dom = [...document.querySelectorAll('#domain option')].filter((el) => {return el.selected}).at(0).text
4 4
       return dom.match(/\S+/g)[0]
5 5
     }
6 6
   
7 7
 
8 8
   function getDefaultDocroot() {
9 9
     var hostname;
10
-    if ($('#hostname').val() == '') 
10
+    if (document.querySelector('#hostname').value == '') 
11 11
       hostname = selectedDomain();
12 12
     else
13
-      hostname = $('#hostname').val() + '.' + selectedDomain();
13
+      hostname = document.querySelector('#hostname').value + '.' + selectedDomain();
14 14
     return hostname + '/htdocs';
15 15
   }
16 16
   
17 17
   function useDefaultDocroot( default_docroot ) {
18
-    var do_it = $('#use_default_docroot').prop('checked');
19
-    var inputfield = $('#docroot');
20
-    inputfield.attr('disabled', do_it);
18
+    var do_it = document.querySelector('#use_default_docroot').checked;
19
+    var inputfield = document.querySelector('#docroot');
20
+    inputfield.disabled = do_it;
21 21
     if (do_it) {
22
-      $('#docroot').val(getDefaultDocroot());
22
+      document.querySelector('#docroot').value = getDefaultDocroot();
23 23
     }
24 24
   }
25 25
   
26 26
   function showAppropriateLines() {
27
-    type = $('input[name="vhost_type"]:checked').val();
27
+    type = [...document.querySelectorAll('input[name="vhost_type"]')].filter((el) => {return el.checked}).at(0).value
28 28
     switch (type) {
29 29
       case "regular":
30
-        $('#options_docroot').show();
31
-        $('#options_scriptlang').show();
32
-        $('#options_webapp').hide();
30
+        document.querySelector('#options_docroot').style.display = '';
31
+        document.querySelector('#options_scriptlang').style.display = '';
33 32
         break;
34 33
       case "dav":
35
-        $('#options_docroot').show();
36
-        $('#options_scriptlang').hide();
37
-        $('#options_webapp').hide();
34
+        document.querySelector('#options_docroot').style.display = '';
35
+        document.querySelector('#options_scriptlang').style.display = 'none';
38 36
         break;
39 37
       case "svn":
40
-        $('#options_docroot').hide();
41
-        $('#options_scriptlang').hide();
42
-        $('#options_webapp').hide();
43
-        break;
44
-      case "webapp":
45
-        $('#options_docroot').hide();
46
-        $('#options_scriptlang').hide();
47
-        $('#options_webapp').show();
38
+        document.querySelector('#options_docroot').style.display = 'none';
39
+        document.querySelector('#options_scriptlang').style.display = 'none';
48 40
         break;
49 41
     }
50 42
   }
51 43
 
52 44
 
53 45
   function showhsts( event ) {
54
-    var ssl = $('#ssl option:selected').val();
46
+      ssl = [...document.querySelectorAll('#ssl option')].filter((el) => {return el.selected}).at(0).value
55 47
     if (ssl == 'forward') {
56
-      $('#hsts_block').show();
57
-      var cert = $('#cert option:selected').val();
58
-      if (cert == '0') {
59
-        $('#cert').val('-1');
48
+      document.querySelector('#hsts_block').style.display = '';
49
+      cert = [...document.querySelectorAll('#cert option')].filter((el) => {return el.selected}).at(0).value
50
+      if (cert == '') {
51
+        document.querySelector('#cert').value = '-1';
60 52
       }
61 53
     } else {
62
-      $('#hsts_block').hide();
54
+      document.querySelector('#hsts_block').style.display = 'none';
63 55
     }
64 56
     show_hsts_opts();
65 57
   }
66 58
 
67 59
   function hsts_preset( event ) {
68
-    var seconds = $('#hsts_preset option:selected').val();
60
+      seconds = [...document.querySelectorAll('#hsts_preset option')].filter((el) => {return el.selected}).at(0).value
69 61
     if (seconds == 'custom') {
70
-      $('#hsts_seconds').show();
71
-      if ($('#hsts').val() < 0) {
72
-        $('#hsts').val(2592000); /* 30 Tage */
62
+      document.querySelector('#hsts_seconds').style.display = '';
63
+      if (document.querySelector('#hsts').value < 0) {
64
+        document.querySelector('#hsts').value = 2592000; /* 30 Tage */
73 65
       }
74 66
     } else {
75
-      $('#hsts_seconds').hide();
76
-      $('#hsts').val(seconds);
67
+      document.querySelector('#hsts_seconds').style.display = 'none';
68
+      document.querySelector('#hsts').value = seconds;
77 69
     }
78 70
   }
79 71
   
80 72
   function show_hsts_opts( event ) {
81
-    var ssl = $('#ssl option:selected').val();
73
+    ssl = [...document.querySelectorAll('#ssl option')].filter((el) => {return el.selected}).at(0).value
82 74
     show_block = false;
83 75
     preload_enabled = false;
84 76
     if ( ssl == 'forward') {
85
-        if ($('#hsts').val() > 0) {
77
+        if (document.querySelector('#hsts').value > 0) {
86 78
             show_block = true;
87
-            if ($('#hsts_subdomains').prop('checked')) {
79
+            if (document.querySelector('#hsts_subdomains').checked) {
88 80
                 preload_enabled = true;
89 81
             }
90 82
         }
91 83
 
92 84
     }
93
-    if ($('#hostname').val() != '') {
85
+    if (document.querySelector('#hostname').value != '') {
94 86
         show_block = false;
95 87
     }
96 88
     if (show_block) {
97
-        $('#hsts_preload_options').show();
89
+        document.querySelector('#hsts_preload_options').style.display = '';
98 90
     } else {
99
-        $('#hsts_preload_options').hide();
100
-        $('#hsts_subdomains').prop('checked', false);
101
-        $('#hsts_preload').prop('checked', false);
91
+        document.querySelector('#hsts_preload_options').style.display = 'none';
92
+        document.querySelector('#hsts_subdomains').checked = false;
93
+        document.querySelector('#hsts_preload').checked = false;
102 94
     }
103 95
     if (preload_enabled) {
104
-        $('#hsts_preload').prop('disabled', false);
96
+        document.querySelector('#hsts_preload').disabled = false;
105 97
     } else {
106
-        $('#hsts_preload').prop('disabled', true);
107
-        $('#hsts_preload').prop('checked', false);
98
+        document.querySelector('#hsts_preload').disabled = true;
99
+        document.querySelector('#hsts_preload').checked = false;
108 100
     }
109 101
   }
110 102
   
111 103
 
112 104
   function showAliasWWWOptions( event ) {
113
-    if ($('#aliaswww').prop('checked')) {
114
-        $('#aliaswww_option').show();
105
+    if (document.querySelector('#aliaswww').checked) {
106
+        document.querySelector('#aliaswww_option').style.display = '';
115 107
     } else {
116
-        $('#aliaswww_option').hide();
108
+        document.querySelector('#aliaswww_option').style.display = 'none';
117 109
     
118 110
     }
119 111
   }
120 112
 
121 113
 
122
-$(function() {
114
+ready(() => {
123 115
 
124
-  $('#hostname').change(useDefaultDocroot);
125
-  $('#domain').change(useDefaultDocroot);
126
-  $('#use_default_docroot').change(useDefaultDocroot);
116
+  document.querySelector('#hostname').addEventListener("change", useDefaultDocroot);
117
+  document.querySelector('#domain').addEventListener("change", useDefaultDocroot);
118
+  document.querySelector('#use_default_docroot').addEventListener("change", useDefaultDocroot);
127 119
   useDefaultDocroot();
128 120
 
129
-  $('.usageoption').change(showAppropriateLines);
121
+  document.querySelector('.usageoption').addEventListener("change", showAppropriateLines);
130 122
 
131
-  $('#aliaswww').change(showAliasWWWOptions);
123
+  document.querySelector('#aliaswww').addEventListener("change", showAliasWWWOptions);
132 124
   showAliasWWWOptions();
133 125
 
134
-  $('#ssl').change(showhsts);
135
-  $('#hsts_select').show();
126
+  document.querySelector('#ssl').addEventListener("change", showhsts);
127
+  document.querySelector('#hsts_select').style.display = '';
136 128
   showhsts();
137
-  if ($('#hsts_preset option:selected').val() != 'custom') {
138
-    $('#hsts_seconds').hide();
129
+  seconds = [...document.querySelectorAll('#hsts_preset option')].filter((el) => {return el.selected}).at(0).value
130
+  if (seconds != 'custom') {
131
+    document.querySelector('#hsts_seconds').style.display = 'none';
139 132
   }
140
-  $('#hsts_preset').change(hsts_preset);
141
-  $('#hsts_select').change(show_hsts_opts);
142
-  $('#hsts_subdomains').change(show_hsts_opts);
133
+  
134
+  document.querySelector('#hsts_preset').addEventListener("change", hsts_preset);
135
+  document.querySelector('#hsts_select').addEventListener("change", show_hsts_opts);
136
+  document.querySelector('#hsts_subdomains').addEventListener("change", show_hsts_opts);
143 137
   show_hsts_opts();
144 138
   
145 139
 });
... ...
@@ -13,7 +13,7 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r
13 13
 
14 14
 require_once('inc/debug.php');
15 15
 require_once('inc/security.php');
16
-require_once('inc/jquery.php');
16
+require_once('inc/javascript.php');
17 17
 javascript();
18 18
 
19 19
 require_once('vhosts.php');
... ...
@@ -1,6 +1,8 @@
1
-$(function() {
2
-    $('#clear').click( function() { 
3
-        $('#filter').val('');
4
-        $('#vhosts_filter').submit();
1
+ready(() => {
2
+    if (document.querySelector('#clear')) {
3
+        document.querySelector('#clear').addEventListener("click", () => { 
4
+            document.querySelector('#filter').value = '';
5
+            document.querySelector('#vhosts_filter').submit();
5 6
         });
7
+    }
6 8
 });
... ...
@@ -15,7 +15,7 @@ require_once('inc/debug.php');
15 15
 require_once('inc/security.php');
16 16
 require_once('inc/icons.php');
17 17
 
18
-require_once('inc/jquery.php');
18
+require_once('inc/javascript.php');
19 19
 javascript();
20 20
 
21 21
 require_once('vhosts.php');
... ...
@@ -476,6 +476,32 @@ div.tile-container {
476 476
 }
477 477
 
478 478
 
479
+span.buttonset input[type="radio"]+label {
480
+    display: inline-block;
481
+    /*width: 8em;*/
482
+    border: 1px solid #425d6c;
483
+    border-radius: 4px;
484
+    background-color: #fff;
485
+    padding: 5px 20px;
486
+}
479 487
 
488
+span.buttonset input[type="radio"] {
489
+    position: absolute;
490
+    display: none;
491
+}
480 492
 
493
+span.buttonset input[type="radio"]:checked+label {
494
+    background-color: #425d6c;
495
+    color: #fff;
496
+}
497
+
498
+span.buttonset.disabled {
499
+    color: #444;
500
+    background-color: #eee;
501
+}
502
+
503
+span.buttonset.disabled input[type="radio"]:checked+label {
504
+    color: #eee;
505
+    background-color: #777;
506
+}
481 507
 
482 508