PageSourceSearch

https://leanagility.com/assets/ff46737a262a4d9917d3571cabdd05a5/lib/jquery/js/jquery.js

js leanagility.com collected 2026-10-04 05:28:59 UTC 162,987 bytes, 2,017 lines download raw bytes

vendor: 12,699 bytes, lines 1-2
1/*! jQuery v3.4.0 | (c) JS 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=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},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.4.0",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(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)}k.fn=k.prototype={jquery:f,constructor:k,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=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.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)},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},k.extend=k.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&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.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=v.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){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(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},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.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(d(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.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),A=ue(),N=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.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="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=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($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),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-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|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(m.childNodes),m.childNodes),t[m.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&&((e?e.ownerDocument||e:m)!==C&&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))&&y(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+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===k&&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[k]=!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 ve(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 ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(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:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),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=k,!C.getElementsByName||!C.getElementsByName(k).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=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),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&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.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("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=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},D=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===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,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]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N
vendor: 8,538 bytes, line 2
2(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.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(D),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=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(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(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){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)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&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]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&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[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===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[k]?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[k]?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:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(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=[S,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[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&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,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,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?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(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))[k]){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,v,y,m,x,r,i=[],o=[],a=
vendor: 5,832 bytes, line 2
2A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.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=S+=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=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[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+y.length&&se.uniqueSort(r)}return i&&(S=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)&&ye(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)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,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);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},A=k.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.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&&A.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.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 k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.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(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!A.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&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(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(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(N
vendor: 8,719 bytes, line 2
2(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(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])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.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){k.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 k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.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},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.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 k.Deferred(function(r){k.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,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.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=k.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&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=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)_(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(k(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},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(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[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(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(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.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&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.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=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.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=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.
vendor: 8,633 bytes, line 2
2attachShadow&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.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 ce={};function fe(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]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],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 ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(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))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.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<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ae(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ne(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)Ne(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=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n=void 0,r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n}else r&&(Q.set(this,i,k.event.trigger(k.extend(r.shift(),k.Event.prototype),r,this)),e.stopImmediatePropagation())}})):k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.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),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.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,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.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<k(i,this).index(l):k.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(k.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[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&N(t,"input")&&void 0===Q.get(t,"click")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&N(t,"input")&&void 0===Q.get(t,"click")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&N(t,"input")&&Q.get(t,"click")||N(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?
vendor: 1,513 bytes, line 2
2ke:Se,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&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.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:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ae),!1},trigger:function(){return De(this,e),!0},delegateType:t}}
vendor: 1,067 bytes, line 2
2),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ne(this,e,t,n,r)},one:function(e,t,n,r){return Ne(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(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=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return N(e,"table")&&N
vendor: 18,145 bytes, line 2
2(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],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&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(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||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.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 Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(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&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(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&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(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+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[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 tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(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=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.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=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.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=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.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):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.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=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),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:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.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=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.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=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,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),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.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&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._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--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.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||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.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&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.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&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.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||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.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})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.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)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.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=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&
vendor: 2,246 bytes, line 2
2N(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(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.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=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.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)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");
vendor: 5,840 bytes, line 2
2if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.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,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.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||!N(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.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]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.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=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(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)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var At=/\[\]$/,Nt=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||At.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.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&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(Nt,"\r\n")}}):{name:t.name,value:n.replace(N
vendor: 14,531 bytes, line 2
2t,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];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===Wt;function l(e){var r;return s[e]=!0,k.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 zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,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":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),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,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.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&&(v.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),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.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]}(v,T,n)),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}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.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(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(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){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!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(Ut[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()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.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 k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<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 Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.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(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.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?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.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,k.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)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.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"===k.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"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(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)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(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?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.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){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.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)}}),k.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||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=
vendor: 1,578 bytes, lines 2-47
2N,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
3
4
5
6/*!
7 * jQuery Form Plugin
8 * version: 3.18 (28-SEP-2012)
9 * @requires jQuery v1.5 or later
10 *
11 * Examples and documentation at: https://malsup.com/jquery/form/
12 * Project repository: https://github.com/malsup/form
13 * Dual licensed under the MIT and GPL licenses:
14 *    https://malsup.github.com/mit-license.txt
15 *    https://malsup.github.com/gpl-license-v2.txt
16 */
17/*global ActiveXObject alert */
18;
19(function($) {
20    "use strict";
21
22    /*
23     Usage Note:
24     -----------
25     Do not use both ajaxSubmit and ajaxForm on the same form.  These
26     functions are mutually exclusive.  Use ajaxSubmit if you want
27     to bind your own submit handler to the form.  For example,
28     
29     $(document).ready(function() {
30     $('#myForm').on('submit', function(e) {
31     e.preventDefault(); // <-- important
32     $(this).ajaxSubmit({
33     target: '#output'
34     });
35     });
36     });
37     
38     Use ajaxForm when you want the plugin to manage all the event binding
39     for you.  For example,
40     
41     $(document).ready(function() {
42     $('#myForm').ajaxForm({
43     target: '#output'
44     });
45     });
46     
47     You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
48     form does not have to exist when you invoke ajaxForm:
49     
50     $('#myForm').ajaxForm({
51     delegation: true,
52     target: '#output'
53     });
54     
55     When using ajaxForm, the ajaxSubmit function will be invoked for you
56     at the appropriate time.
57     */
58
59    /**
60     * Feature detection
61     */
62    var feature = {};
63    feature.fileapi = $("<input type='file'/>").get(0).files !== undefined;
64    feature.formdata = window.FormData !== undefined;
65
66    /**
67     * ajaxSubmit() provides a mechanism for immediately submitting
68     * an HTML form using AJAX.
69     */
70    $.fn.ajaxSubmit = function(options) {
71        /*jshint scripturl:true */
72
73        // fast fail if nothing selected (https://dev.jquery.com/ticket/2752)
74        if (!this.length) {
75            log('ajaxSubmit: skipping submit process - no element selected');
76            return this;
77        }
78
79        var method, action, url, $form = this;
80
81        if (typeof options == 'function') {
82            options = {success: options};
83        }
84
85        method = this.attr('method');
86        action = this.attr('action');
87        url = (typeof action === 'string') ? $.trim(action) : '';
88        url = url || window.location.href || '';
89        if (url) {
90            // clean url (don't include hash vaue)
91            url = (url.match(/^([^#]+)/) || [])[1];
92        }
93
94        options = $.extend(true, {
95            url: url,
96            success: $.ajaxSettings.success,
97            type: method || 'GET',
98            iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
99        }, options);
100
101        // hook for manipulating the form data before it is extracted;
102        // convenient for use with rich editors like tinyMCE or FCKEditor
103        var veto = {};
104        this.trigger('form-pre-serialize', [this, options, veto]);
105        if (veto.veto) {
106            log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
107            return this;
108        }
109
110        // provide opportunity to alter form data before it is serialized
111        if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
112            log('ajaxSubmit: submit aborted via beforeSerialize callback');
113            return this;
114        }
115
116        var traditional = options.traditional;
117        if (traditional === undefined) {
118            traditional = $.ajaxSettings.traditional;
119        }
120
121        var elements = [];
122        var qx, a = this.formToArray(options.semantic, elements);
123        if (options.data) {
124            options.extraData = options.data;
125            qx = $.param(options.data, traditional);
126        }
127
128        // give pre-submit callback an opportunity to abort the submit
129        if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
130            log('ajaxSubmit: submit aborted via beforeSubmit callback');
131            return this;
132        }
133
134        // fire vetoable 'validate' event
135        this.trigger('form-submit-validate', [a, this, options, veto]);
136        if (veto.veto) {
137            log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
138            return this;
139        }
140
141        var q = $.param(a, traditional);
142        if (qx) {
143            q = (q ? (q + '&' + qx) : qx);
144        }
145        if (options.type.toUpperCase() == 'GET') {
146            options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
147            options.data = null;  // data is null for 'get'
148        }
149        else {
150            options.data = q; // data is the query string for 'post'
151        }
152
153        var callbacks = [];
154        if (options.resetForm) {
155            callbacks.push(function() {
156                $form.resetForm();
157            });
158        }
159        if (options.clearForm) {
160            callbacks.push(function() {
161                $form.clearForm(options.includeHidden);
162            });
163        }
164
165        // perform a load on the target only if dataType is not provided
166        if (!options.dataType && options.target) {
167            var oldSuccess = options.success || function() {
168            };
169            callbacks.push(function(data) {
170                var fn = options.replaceTarget ? 'replaceWith' : 'html';
171                $(options.target)[fn](data).each(oldSuccess, arguments);
172            });
173        }
174        else if (options.success) {
175            callbacks.push(options.success);
176        }
177
178        options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
179            var context = options.context || this;    // jQuery 1.4+ supports scope context 
180            for (var i = 0, max = callbacks.length; i < max; i++) {
181                callbacks[i].apply(context, [data, status, xhr || $form, $form]);
182            }
183        };
184
185        // are there files to upload?
186        var fileInputs = $('input:file:enabled[value]', this); // [value] (issue #113)
187        var hasFileInputs = fileInputs.length > 0;
188        var mp = 'multipart/form-data';
189        var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
190
191        var fileAPI = feature.fileapi && feature.formdata;
192        log("fileAPI :" + fileAPI);
193        var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI;
194
195        var jqxhr;
196
197        // options.iframe allows user to force iframe mode
198        // 06-NOV-09: now defaulting to iframe mode if file input is detected
199        if (options.iframe !== false && (options.iframe || shouldUseFrame)) {
200            // hack to fix Safari hang (thanks to Tim Molendijk for this)
201            // see:  https://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
202            if (options.closeKeepAlive) {
203                $.get(options.closeKeepAlive, function() {
204                    jqxhr = fileUploadIframe(a);
205                });
206            }
207            else {
208                jqxhr = fileUploadIframe(a);
209            }
210        }
211        else if ((hasFileInputs || multipart) && fileAPI) {
212            jqxhr = fileUploadXhr(a);
213        }
214        else {
215            jqxhr = $.ajax(options);
216        }
217
218        $form.removeData('jqxhr').data('jqxhr', jqxhr);
219
220        // clear element array
221        for (var k = 0; k < elements.length; k++)
222            elements[k] = null;
223
224        // fire 'notify' event
225        this.trigger('form-submit-notify', [this, options]);
226        return this;
227
228        // utility fn for deep serialization
229        function deepSerialize(extraData) {
230            var serialized = $.param(extraData).split('&');
231            var len = serialized.length;
232            var result = {};
233            var i, part;
234            for (i = 0; i < len; i++) {
235                part = serialized[i].split('=');
236                result[decodeURIComponent(part[0])] = decodeURIComponent(part[1]);
237            }
238            return result;
239        }
240
241        // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)
242        function fileUploadXhr(a) {
243            var formdata = new FormData();
244
245            for (var i = 0; i < a.length; i++) {
246                formdata.append(a[i].name, a[i].value);
247            }
248
249            if (options.extraData) {
250                var serializedData = deepSerialize(options.extraData);
251                for (var p in serializedData)
252                    if (serializedData.hasOwnProperty(p))
253                        formdata.append(p, serializedData[p]);
254            }
255
256            options.data = null;
257
258            var s = $.extend(true, {}, $.ajaxSettings, options, {
259                contentType: false,
260                processData: false,
261                cache: false,
262                type: method || 'POST'
263            });
264
265            if (options.uploadProgress) {
266                // workaround because jqXHR does not expose upload property
267                s.xhr = function() {
268                    var xhr = jQuery.ajaxSettings.xhr();
269                    if (xhr.upload) {
270                        xhr.upload.onprogress = function(event) {
271                            var percent = 0;
272                            var position = event.loaded || event.position; /*event.position is deprecated*/
273                            var total = event.total;
274                            if (event.lengthComputable) {
275                                percent = Math.ceil(position / total * 100);
276                            }
277                            options.uploadProgress(event, position, total, percent);
278                        };
279                    }
280                    return xhr;
281                };
282            }
283
284            s.data = null;
285            var beforeSend = s.beforeSend;
286            s.beforeSend = function(xhr, o) {
287                o.data = formdata;
288                if (beforeSend)
289                    beforeSend.call(this, xhr, o);
290            };
291            return $.ajax(s);
292        }
293
294        // private function for handling file uploads (hat tip to YAHOO!)
295        function fileUploadIframe(a) {
296            var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;
297            var useProp = !!$.fn.prop;
298            var deferred = $.Deferred();
299
300            if ($(':input[name=submit],:input[id=submit]', form).length) {
301                // if there is an input with a name or id of 'submit' then we won't be
302                // able to invoke the submit fn on the form (at least not x-browser)
303                alert('Error: Form elements must not have name or id of "submit".');
304                deferred.reject();
305                return deferred;
306            }
307
308            if (a) {
309                // ensure that every serialized input is still enabled
310                for (i = 0; i < elements.length; i++) {
311                    el = $(elements[i]);
312                    if (useProp)
313                        el.prop('disabled', false);
314                    else
315                        el.removeAttr('disabled');
316                }
317            }
318
319            s = $.extend(true, {}, $.ajaxSettings, options);
320            s.context = s.context || s;
321            id = 'jqFormIO' + (new Date().getTime());
322            if (s.iframeTarget) {
323                $io = $(s.iframeTarget);
324                n = $io.attr('name');
325                if (!n)
326                    $io.attr('name', id);
327                else
328                    id = n;
329            }
330            else {
331                $io = $('<iframe name="' + id + '" src="' + s.iframeSrc + '" />');
332                $io.css({position: 'absolute', top: '-1000px', left: '-1000px'});
333            }
334            io = $io[0];
335
336
337            xhr = {// mock object
338                aborted: 0,
339                responseText: null,
340                responseXML: null,
341                status: 0,
342                statusText: 'n/a',
343                getAllResponseHeaders: function() {
344                },
345                getResponseHeader: function() {
346                },
347                setRequestHeader: function() {
348                },
349                abort: function(status) {
350                    var e = (status === 'timeout' ? 'timeout' : 'aborted');
351                    log('aborting upload... ' + e);
352                    this.aborted = 1;
353                    // #214
354                    if (io.contentWindow.document.execCommand) {
355                        try { // #214
356                            io.contentWindow.document.execCommand('Stop');
357                        } catch (ignore) {
358                        }
359                    }
360                    $io.attr('src', s.iframeSrc); // abort op in progress
361                    xhr.error = e;
362                    if (s.error)
363                        s.error.call(s.context, xhr, e, status);
364                    if (g)
365                        $.event.trigger("ajaxError", [xhr, s, e]);
366                    if (s.complete)
367                        s.complete.call(s.context, xhr, e);
368                }
369            };
370
371            g = s.global;
372            // trigger ajax global events so that activity/block indicators work like normal
373            if (g && 0 === $.active++) {
374                $.event.trigger("ajaxStart");
375            }
376            if (g) {
377                $.event.trigger("ajaxSend", [xhr, s]);
378            }
379
380            if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {
381                if (s.global) {
382                    $.active--;
383                }
384                deferred.reject();
385                return deferred;
386            }
387            if (xhr.aborted) {
388                deferred.reject();
389                return deferred;
390            }
391
392            // add submitting element to data if we know it
393            sub = form.clk;
394            if (sub) {
395                n = sub.name;
396                if (n && !sub.disabled) {
397                    s.extraData = s.extraData || {};
398                    s.extraData[n] = sub.value;
399                    if (sub.type == "image") {
400                        s.extraData[n + '.x'] = form.clk_x;
401                        s.extraData[n + '.y'] = form.clk_y;
402                    }
403                }
404            }
405
406            var CLIENT_TIMEOUT_ABORT = 1;
407            var SERVER_ABORT = 2;
408
409            function getDoc(frame) {
410                var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
411                return doc;
412            }
413
414            // Rails CSRF hack (thanks to Yvan Barthelemy)
415            var csrf_token = $('meta[name=csrf-token]').attr('content');
416            var csrf_param = $('meta[name=csrf-param]').attr('content');
417            if (csrf_param && csrf_token) {
418                s.extraData = s.extraData || {};
419                s.extraData[csrf_param] = csrf_token;
420            }
421
422            // take a breath so that pending repaints get some cpu time before the upload starts
423            function doSubmit() {
424                // make sure form attrs are set
425                var t = $form.attr('target'), a = $form.attr('action');
426
427                // update form attrs in IE friendly way
428                form.setAttribute('target', id);
429                if (!method) {
430                    form.setAttribute('method', 'POST');
431                }
432                if (a != s.url) {
433                    form.setAttribute('action', s.url);
434                }
435
436                // ie borks in some cases when setting encoding
437                if (!s.skipEncodingOverride && (!method || /post/i.test(method))) {
438                    $form.attr({
439                        encoding: 'multipart/form-data',
440                        enctype: 'multipart/form-data'
441                    });
442                }
443
444                // support timout
445                if (s.timeout) {
446                    timeoutHandle = setTimeout(function() {
447                        timedOut = true;
448                        cb(CLIENT_TIMEOUT_ABORT);
449                    }, s.timeout);
450                }
451
452                // look for server aborts
453                function checkState() {
454                    try {
455                        var state = getDoc(io).readyState;
456                        log('state = ' + state);
457                        if (state && state.toLowerCase() == 'uninitialized')
458                            setTimeout(checkState, 50);
459                    }
460                    catch (e) {
461                        log('Server abort: ', e, ' (', e.name, ')');
462                        cb(SERVER_ABORT);
463                        if (timeoutHandle)
464                            clearTimeout(timeoutHandle);
465                        timeoutHandle = undefined;
466                    }
467                }
468
469                // add "extra" data to form if provided in options
470                var extraInputs = [];
471                try {
472                    if (s.extraData) {
473                        for (var n in s.extraData) {
474                            if (s.extraData.hasOwnProperty(n)) {
475                                // if using the $.param format that allows for multiple values with the same name
476                                if ($.isPlainObject(s.extraData[n]) && s.extraData[n].hasOwnProperty('name') && s.extraData[n].hasOwnProperty('value')) {
477                                    extraInputs.push(
478                                            $('<input type="hidden" name="' + s.extraData[n].name + '">').attr('value', s.extraData[n].value)
479                                            .appendTo(form)[0]);
480                                } else {
481                                    extraInputs.push(
482                                            $('<input type="hidden" name="' + n + '">').attr('value', s.extraData[n])
483                                            .appendTo(form)[0]);
484                                }
485                            }
486                        }
487                    }
488
489                    if (!s.iframeTarget) {
490                        // add iframe to doc and submit the form
491                        $io.appendTo('body');
492                        if (io.attachEvent)
493                            io.attachEvent('onload', cb);
494                        else
495                            io.addEventListener('load', cb, false);
496                    }
497                    setTimeout(checkState, 15);
498                    form.submit();
499                }
500                finally {
501                    // reset attrs and remove "extra" input elements
502                    form.setAttribute('action', a);
503                    if (t) {
504                        form.setAttribute('target', t);
505                    } else {
506                        $form.removeAttr('target');
507                    }
508                    $(extraInputs).remove();
509                }
510            }
511
512            if (s.forceSync) {
513                doSubmit();
514            }
515            else {
516                setTimeout(doSubmit, 10); // this lets dom updates render
517            }
518
519            var data, doc, domCheckCount = 50, callbackProcessed;
520
521            function cb(e) {
522                if (xhr.aborted || callbackProcessed) {
523                    return;
524                }
525                try {
526                    doc = getDoc(io);
527                }
528                catch (ex) {
529                    log('cannot access response document: ', ex);
530                    e = SERVER_ABORT;
531                }
532                if (e === CLIENT_TIMEOUT_ABORT && xhr) {
533                    xhr.abort('timeout');
534                    deferred.reject(xhr, 'timeout');
535                    return;
536                }
537                else if (e == SERVER_ABORT && xhr) {
538                    xhr.abort('server abort');
539                    deferred.reject(xhr, 'error', 'server abort');
540                    return;
541                }
542
543                if (!doc || doc.location.href == s.iframeSrc) {
544                    // response not received yet
545                    if (!timedOut)
546                        return;
547                }
548                if (io.detachEvent)
549                    io.detachEvent('onload', cb);
550                else
551                    io.removeEventListener('load', cb, false);
552
553                var status = 'success', errMsg;
554                try {
555                    if (timedOut) {
556                        throw 'timeout';
557                    }
558
559                    var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
560                    log('isXml=' + isXml);
561                    if (!isXml && window.opera && (doc.body === null || !doc.body.innerHTML)) {
562                        if (--domCheckCount) {
563                            // in some browsers (Opera) the iframe DOM is not always traversable when
564                            // the onload callback fires, so we loop a bit to accommodate
565                            log('requeing onLoad callback, DOM not available');
566                            setTimeout(cb, 250);
567                            return;
568                        }
569                        // let this fall through because server response could be an empty document
570                        //log('Could not access iframe DOM after mutiple tries.');
571                        //throw 'DOMException: not available';
572                    }
573
574                    //log('response detected');
575                    var docRoot = doc.body ? doc.body : doc.documentElement;
576                    xhr.responseText = docRoot ? docRoot.innerHTML : null;
577                    xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
578                    if (isXml)
579                        s.dataType = 'xml';
580                    xhr.getResponseHeader = function(header) {
581                        var headers = {'content-type': s.dataType};
582                        return headers[header];
583                    };
584                    // support for XHR 'status' & 'statusText' emulation :
585                    if (docRoot) {
586                        xhr.status = Number(docRoot.getAttribute('status')) || xhr.status;
587                        xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;
588                    }
589
590                    var dt = (s.dataType || '').toLowerCase();
591                    var scr = /(json|script|text)/.test(dt);
592                    if (scr || s.textarea) {
593                        // see if user embedded response in textarea
594                        var ta = doc.getElementsByTagName('textarea')[0];
595                        if (ta) {
596                            xhr.responseText = ta.value;
597                            // support for XHR 'status' & 'statusText' emulation :
598                            xhr.status = Number(ta.getAttribute('status')) || xhr.status;
599                            xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;
600                        }
601                        else if (scr) {
602                            // account for browsers injecting pre around json response
603                            var pre = doc.getElementsByTagName('pre')[0];
604                            var b = doc.getElementsByTagName('body')[0];
605                            if (pre) {
606                                xhr.responseText = pre.textContent ? pre.textContent : pre.innerText;
607                            }
608                            else if (b) {
609                                xhr.responseText = b.textContent ? b.textContent : b.innerText;
610                            }
611                        }
612                    }
613                    else if (dt == 'xml' && !xhr.responseXML && xhr.responseText) {
614                        xhr.responseXML = toXml(xhr.responseText);
615                    }
616
617                    try {
618                        data = httpData(xhr, dt, s);
619                    }
620                    catch (e) {
621                        status = 'parsererror';
622                        xhr.error = errMsg = (e || status);
623                    }
624                }
625                catch (e) {
626                    log('error caught: ', e);
627                    status = 'error';
628                    xhr.error = errMsg = (e || status);
629                }
630
631                if (xhr.aborted) {
632                    log('upload aborted');
633                    status = null;
634                }
635
636                if (xhr.status) { // we've set xhr.status
637                    status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';
638                }
639
640                // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
641                if (status === 'success') {
642                    if (s.success)
643                        s.success.call(s.context, data, 'success', xhr);
644                    deferred.resolve(xhr.responseText, 'success', xhr);
645                    if (g)
646                        $.event.trigger("ajaxSuccess", [xhr, s]);
647                }
648                else if (status) {
649                    if (errMsg === undefined)
650                        errMsg = xhr.statusText;
651                    if (s.error)
652                        s.error.call(s.context, xhr, status, errMsg);
653                    deferred.reject(xhr, 'error', errMsg);
654                    if (g)
655                        $.event.trigger("ajaxError", [xhr, s, errMsg]);
656                }
657
658                if (g)
659                    $.event.trigger("ajaxComplete", [xhr, s]);
660
661                if (g && !--$.active) {
662                    $.event.trigger("ajaxStop");
663                }
664
665                if (s.complete)
666                    s.complete.call(s.context, xhr, status);
667
668                callbackProcessed = true;
669                if (s.timeout)
670                    clearTimeout(timeoutHandle);
671
672                // clean up
673                setTimeout(function() {
674                    if (!s.iframeTarget)
675                        $io.remove();
676                    xhr.responseXML = null;
677                }, 100);
678            }
679
680            var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)
681                if (window.ActiveXObject) {
682                    doc = new ActiveXObject('Microsoft.XMLDOM');
683                    doc.async = 'false';
684                    doc.loadXML(s);
685                }
686                else {
687                    doc = (new DOMParser()).parseFromString(s, 'text/xml');
688                }
689                return (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;
690            };
691            var parseJSON = $.parseJSON || function(s) {
692                /*jslint evil:true */
693                return window['eval']('(' + s + ')');
694            };
695
696            var httpData = function(xhr, type, s) { // mostly lifted from jq1.4.4
697
698                var ct = xhr.getResponseHeader('content-type') || '',
699                        xml = type === 'xml' || !type && ct.indexOf('xml') >= 0,
700                        data = xml ? xhr.responseXML : xhr.responseText;
701
702                if (xml && data.documentElement.nodeName === 'parsererror') {
703                    if ($.error)
704                        $.error('parsererror');
705                }
706                if (s && s.dataFilter) {
707                    data = s.dataFilter(data, type);
708                }
709                if (typeof data === 'string') {
710                    if (type === 'json' || !type && ct.indexOf('json') >= 0) {
711                        data = parseJSON(data);
712                    } else if (type === "script" || !type && ct.indexOf("javascript") >= 0) {
713                        $.globalEval(data);
714                    }
715                }
716                return data;
717            };
718
719            return deferred;
720        }
721    };
722
723    /**
724     * ajaxForm() provides a mechanism for fully automating form submission.
725     *
726     * The advantages of using this method instead of ajaxSubmit() are:
727     *
728     * 1: This method will include coordinates for <input type="image" /> elements (if the element
729     *    is used to submit the form).
730     * 2. This method will include the submit element's name/value data (for the element that was
731     *    used to submit the form).
732     * 3. This method binds the submit() method to the form for you.
733     *
734     * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
735     * passes the options argument along after properly binding events for submit elements and
736     * the form itself.
737     */
738    $.fn.ajaxForm = function(options) {
739        options = options || {};
740        options.delegation = options.delegation && $.isFunction($.fn.on);
741
742        // in jQuery 1.3+ we can fix mistakes with the ready state
743        if (!options.delegation && this.length === 0) {
744            var o = {s: this.selector, c: this.context};
745            if (!$.isReady && o.s) {
746                log('DOM not ready, queuing ajaxForm');
747                $(function() {
748                    $(o.s, o.c).ajaxForm(options);
749                });
750                return this;
751            }
752            // is your DOM ready?  https://docs.jquery.com/Tutorials:Introducing_$(document).ready()
753            log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
754            return this;
755        }
756
757        if (options.delegation) {
758            $(document)
759                    .off('submit.form-plugin', this.selector, doAjaxSubmit)
760                    .off('click.form-plugin', this.selector, captureSubmittingElement)
761                    .on('submit.form-plugin', this.selector, options, doAjaxSubmit)
762                    .on('click.form-plugin', this.selector, options, captureSubmittingElement);
763            return this;
764        }
765
766        return this.ajaxFormUnbind()
767                .bind('submit.form-plugin', options, doAjaxSubmit)
768                .bind('click.form-plugin', options, captureSubmittingElement);
769    };
770
771// private event handlers    
772    function doAjaxSubmit(e) {
773        /*jshint validthis:true */
774        var options = e.data;
775        if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
776            e.preventDefault();
777            $(this).ajaxSubmit(options);
778        }
779    }
780
781    function captureSubmittingElement(e) {
782        /*jshint validthis:true */
783        var target = e.target;
784        var $el = $(target);
785        if (!($el.is(":submit,input:image"))) {
786            // is this a child element of the submit el?  (ex: a span within a button)
787            var t = $el.closest(':submit');
788            if (t.length === 0) {
789                return;
790            }
791            target = t[0];
792        }
793        var form = this;
794        form.clk = target;
795        if (target.type == 'image') {
796            if (e.offsetX !== undefined) {
797                form.clk_x = e.offsetX;
798                form.clk_y = e.offsetY;
799            } else if (typeof $.fn.offset == 'function') {
800                var offset = $el.offset();
801                form.clk_x = e.pageX - offset.left;
802                form.clk_y = e.pageY - offset.top;
803            } else {
804                form.clk_x = e.pageX - target.offsetLeft;
805                form.clk_y = e.pageY - target.offsetTop;
806            }
807        }
808        // clear form vars
809        setTimeout(function() {
810            form.clk = form.clk_x = form.clk_y = null;
811        }, 100);
812    }
813
814
815// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
816    $.fn.ajaxFormUnbind = function() {
817        return this.unbind('submit.form-plugin click.form-plugin');
818    };
819
820    /**
821     * formToArray() gathers form element data into an array of objects that can
822     * be passed to any of the following ajax functions: $.get, $.post, or load.
823     * Each object in the array has both a 'name' and 'value' property.  An example of
824     * an array for a simple login form might be:
825     *
826     * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
827     *
828     * It is this array that is passed to pre-submit callback functions provided to the
829     * ajaxSubmit() and ajaxForm() methods.
830     */
831    $.fn.formToArray = function(semantic, elements) {
832        var a = [];
833        if (this.length === 0) {
834            return a;
835        }
836
837        var form = this[0];
838        var els = semantic ? form.getElementsByTagName('*') : form.elements;
839        if (!els) {
840            return a;
841        }
842
843        var i, j, n, v, el, max, jmax;
844        for (i = 0, max = els.length; i < max; i++) {
845            el = els[i];
846            n = el.name;
847            if (!n) {
848                continue;
849            }
850
851            if (semantic && form.clk && el.type == "image") {
852                // handle image inputs on the fly when semantic == true
853                if (!el.disabled && form.clk == el) {
854                    a.push({name: n, value: $(el).val(), type: el.type});
855                    a.push({name: n + '.x', value: form.clk_x}
855, {name: n + '.y', value: form.clk_y});
856                }
857                continue;
858            }
859
860            v = $.fieldValue(el, true);
861            if (v && v.constructor == Array) {
862                if (elements)
863                    elements.push(el);
864                for (j = 0, jmax = v.length; j < jmax; j++) {
865                    a.push({name: n, value: v[j]});
866                }
867            }
868            else if (feature.fileapi && el.type == 'file' && !el.disabled) {
869                if (elements)
870                    elements.push(el);
871                var files = el.files;
872                if (files.length) {
873                    for (j = 0; j < files.length; j++) {
874                        a.push({name: n, value: files[j], type: el.type});
875                    }
876                }
877                else {
878                    // #180
879                    a.push({name: n, value: '', type: el.type});
880                }
881            }
882            else if (v !== null && typeof v != 'undefined') {
883                if (elements)
884                    elements.push(el);
885                a.push({name: n, value: v, type: el.type, required: el.required});
886            }
887        }
888
889        if (!semantic && form.clk) {
890            // input type=='image' are not found in elements array! handle it here
891            var $input = $(form.clk), input = $input[0];
892            n = input.name;
893            if (n && !input.disabled && input.type == 'image') {
894                a.push({name: n, value: $input.val()});
895                a.push({name: n + '.x', value: form.clk_x}, {name: n + '.y', value: form.clk_y});
896            }
897        }
898        return a;
899    };
900
901    /**
902     * Serializes form data into a 'submittable' string. This method will return a string
903     * in the format: name1=value1&amp;name2=value2
904     */
905    $.fn.formSerialize = function(semantic) {
906        //hand off to jQuery.param for proper encoding
907        return $.param(this.formToArray(semantic));
908    };
909
910    /**
911     * Serializes all field elements in the jQuery object into a query string.
912     * This method will return a string in the format: name1=value1&amp;name2=value2
913     */
914    $.fn.fieldSerialize = function(successful) {
915        var a = [];
916        this.each(function() {
917            var n = this.name;
918            if (!n) {
919                return;
920            }
921            var v = $.fieldValue(this, successful);
922            if (v && v.constructor == Array) {
923                for (var i = 0, max = v.length; i < max; i++) {
924                    a.push({name: n, value: v[i]});
925                }
926            }
927            else if (v !== null && typeof v != 'undefined') {
928                a.push({name: this.name, value: v});
929            }
930        });
931        //hand off to jQuery.param for proper encoding
932        return $.param(a);
933    };
934
935    /**
936     * Returns the value(s) of the element in the matched set.  For example, consider the following form:
937     *
938     *  <form><fieldset>
939     *      <input name="A" type="text" />
940     *      <input name="A" type="text" />
941     *      <input name="B" type="checkbox" value="B1" />
942     *      <input name="B" type="checkbox" value="B2"/>
943     *      <input name="C" type="radio" value="C1" />
944     *      <input name="C" type="radio" value="C2" />
945     *  </fieldset></form>
946     *
947     *  var v = $(':text').fieldValue();
948     *  // if no values are entered into the text inputs
949     *  v == ['','']
950     *  // if values entered into the text inputs are 'foo' and 'bar'
951     *  v == ['foo','bar']
952     *
953     *  var v = $(':checkbox').fieldValue();
954     *  // if neither checkbox is checked
955     *  v === undefined
956     *  // if both checkboxes are checked
957     *  v == ['B1', 'B2']
958     *
959     *  var v = $(':radio').fieldValue();
960     *  // if neither radio is checked
961     *  v === undefined
962     *  // if first radio is checked
963     *  v == ['C1']
964     *
965     * The successful argument controls whether or not the field element must be 'successful'
966     * (per https://www.w3.org/TR/html4/interact/forms.html#successful-controls).
967     * The default value of the successful argument is true.  If this value is false the value(s)
968     * for each element is returned.
969     *
970     * Note: This method *always* returns an array.  If no valid value can be determined the
971     *    array will be empty, otherwise it will contain one or more values.
972     */
973    $.fn.fieldValue = function(successful) {
974        for (var val = [], i = 0, max = this.length; i < max; i++) {
975            var el = this[i];
976            var v = $.fieldValue(el, successful);
977            if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {
978                continue;
979            }
980            if (v.constructor == Array)
981                $.merge(val, v);
982            else
983                val.push(v);
984        }
985        return val;
986    };
987
988    /**
989     * Returns the value of the field element.
990     */
991    $.fieldValue = function(el, successful) {
992        var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
993        if (successful === undefined) {
994            successful = true;
995        }
996
997        if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
998                (t == 'checkbox' || t == 'radio') && !el.checked ||
999                (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
1000                tag == 'select' && el.selectedIndex == -1)) {
1001            return null;
1002        }
1003
1004        if (tag == 'select') {
1005            var index = el.selectedIndex;
1006            if (index < 0) {
1007                return null;
1008            }
1009            var a = [], ops = el.options;
1010            var one = (t == 'select-one');
1011            var max = (one ? index + 1 : ops.length);
1012            for (var i = (one ? index : 0); i < max; i++) {
1013                var op = ops[i];
1014                if (op.selected) {
1015                    var v = op.value;
1016                    if (!v) { // extra pain for IE...
1017                        v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
1018                    }
1019                    if (one) {
1020                        return v;
1021                    }
1022                    a.push(v);
1023                }
1024            }
1025            return a;
1026        }
1027        return $(el).val();
1028    };
1029
1030    /**
1031     * Clears the form data.  Takes the following actions on the form's input fields:
1032     *  - input text fields will have their 'value' property set to the empty string
1033     *  - select elements will have their 'selectedIndex' property set to -1
1034     *  - checkbox and radio inputs will have their 'checked' property set to false
1035     *  - inputs of type submit, button, reset, and hidden will *not* be effected
1036     *  - button elements will *not* be effected
1037     */
1038    $.fn.clearForm = function(includeHidden) {
1039        return this.each(function() {
1040            $('input,select,textarea', this).clearFields(includeHidden);
1041        });
1042    };
1043
1044    /**
1045     * Clears the selected form elements.
1046     */
1047    $.fn.clearFields = $.fn.clearInputs = function(includeHidden) {
1048        var re = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i; // 'hidden' is not in this list
1049        return this.each(function() {
1050            var t = this.type, tag = this.tagName.toLowerCase();
1051            if (re.test(t) || tag == 'textarea') {
1052                this.value = '';
1053            }
1054            else if (t == 'checkbox' || t == 'radio') {
1055                this.checked = false;
1056            }
1057            else if (tag == 'select') {
1058                this.selectedIndex = -1;
1059            }
1060            else if (includeHidden) {
1061                // includeHidden can be the value true, or it can be a selector string
1062                // indicating a special test; for example:
1063                //  $('#myForm').clearForm('.special:hidden')
1064                // the above would clean hidden inputs that have the class of 'special'
1065                if ((includeHidden === true && /hidden/.test(t)) ||
1066                        (typeof includeHidden == 'string' && $(this).is(includeHidden)))
1067                    this.value = '';
1068            }
1069        });
1070    };
1071
1072    /**
1073     * Resets the form data.  Causes all form elements to be reset to their original value.
1074     */
1075    $.fn.resetForm = function() {
1076        return this.each(function() {
1077            // guard against an input with the name of 'reset'
1078            // note that IE reports the reset function as an 'object'
1079            if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {
1080                this.reset();
1081            }
1082        });
1083    };
1084
1085    /**
1086     * Enables or disables any matching elements.
1087     */
1088    $.fn.enable = function(b) {
1089        if (b === undefined) {
1090            b = true;
1091        }
1092        return this.each(function() {
1093            this.disabled = !b;
1094        });
1095    };
1096
1097    /**
1098     * Checks/unchecks any matching checkboxes or radio buttons and
1099     * selects/deselects and matching option elements.
1100     */
1101    $.fn.selected = function(select) {
1102        if (select === undefined) {
1103            select = true;
1104        }
1105        return this.each(function() {
1106            var t = this.type;
1107            if (t == 'checkbox' || t == 'radio') {
1108                this.checked = select;
1109            }
1110            else if (this.tagName.toLowerCase() == 'option') {
1111                var $sel = $(this).parent('select');
1112                if (select && $sel[0] && $sel[0].type == 'select-one') {
1113                    // deselect all other options
1114                    $sel.find('option').selected(false);
1115                }
1116                this.selected = select;
1117            }
1118        });
1119    };
1120
1121// expose debug var
1122    $.fn.ajaxSubmit.debug = false;
1123
1124// helper fn for console logging
1125    function log() {
1126        if (!$.fn.ajaxSubmit.debug)
1127            return;
1128        var msg = '[jquery.form] ' + Array.prototype.join.call(arguments, '');
1129        if (window.console && window.console.log) {
1130            window.console.log(msg);
1131        }
1132        else if (window.opera && window.opera.postError) {
1133            window.opera.postError(msg);
1134        }
1135    }
1136
1137})(jQuery);
1138
1139
1140
1141
1142/**
1143 * Default settings
1144 */
1145var jqCronDefaultSettings = {
1146    texts: {
1147        fr: {
1148            empty: '-tout-',
1149            name_minute: 'minute',
1150            name_hour: 'heure',
1151            name_day: 'jour',
1152            name_week: 'semaine',
1153            name_month: 'mois',
1154            name_year: 'année',
1155            text_period: 'Chaque <b />',
1156            text_mins: 'à <b /> minutes',
1157            text_time: 'à <b />:<b />',
1158            text_dow: 'le <b />',
1159            text_month: 'de <b />',
1160            text_dom: 'le <b />',
1161            error1: 'La balise %s n\'est pas supportée !',
1162            error2: 'Mauvais nombre d\'éléments',
1163            error3: 'La propriété jquery_element doit être définie dans les paramètres jqCron',
1164            error4: 'Expression non reconnue',
1165            weekdays: ['lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'],
1166            months: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre']
1167        },
1168        en: {
1169            empty: '-all-',
1170            name_minute: 'minute',
1171            name_hour: 'hour',
1172            name_day: 'day',
1173            name_week: 'week',
1174            name_month: 'month',
1175            name_year: 'year',
1176            text_period: 'Every <b />',
1177            text_mins: 'at <b /> minutes past the hour',
1178            text_time: 'at <b />:<b />',
1179            text_dow: 'on <b />',
1180            text_month: 'of <b />',
1181            text_dom: 'on the <b />',
1182            error1: 'The tag %s is not supported !',
1183            error2: 'Bad number of elements',
1184            error3: 'The jquery_element should be set into jqCron settings',
1185            error4: 'Unrecognized expression',
1186            weekdays: ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'],
1187            months: ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december']
1188        }
1189    },
1190    monthdays: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
1191    hours: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
1192    minutes: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
1193    lang: 'fr',
1194    enabled_minute: false,
1195    enabled_hour: true,
1196    enabled_day: true,
1197    enabled_week: true,
1198    enabled_month: true,
1199    enabled_year: true,
1200    multiple_dom: false,
1201    multiple_month: false,
1202    multiple_mins: false,
1203    multiple_dow: false,
1204    multiple_time_hours: false,
1205    multiple_time_minutes: false,
1206    default_period: 'day',
1207    default_value: '',
1208    no_reset_button: true,
1209    disabled: false,
1210    bind_to: null,
1211    bind_method: {
1212        set: function($element, value) {
1213            $element.is(':input') ? $element.val(value) : $element.data('jqCronValue', value);
1214        },
1215        get: function($element) {
1216            return $element.is(':input') ? $element.val() : $element.data('jqCronValue');
1217        }
1218    }
1219};
1220
1221/**
1222 * Custom extend of json for jqCron settings.
1223 * We don't use jQuery.extend because simple extend does not fit our needs, and deep extend has a bad 
1224 * feature for us : it replaces keys of "Arrays" instead of replacing the full array.
1225 */
1226(function($) {
1227    var extend = function(dst, src) {
1228        for (var i in src) {
1229            if ($.isPlainObject(src[i])) {
1230                dst[i] = extend(dst[i] && $.isPlainObject(dst[i]) ? dst[i] : {}, src[i]);
1231            }
1232            else if ($.isArray(src[i])) {
1233                dst[i] = src[i].slice(0);
1234            }
1235            else if (src[i] !== undefined) {
1236                dst[i] = src[i];
1237            }
1238        }
1239        return dst;
1240    };
1241    this.jqCronMergeSettings = function(obj) {
1242        return extend(extend({}, jqCronDefaultSettings), obj || {});
1243    };
1244}).call(this, jQuery);
1245
1246/**
1247 * Shortcut to get the instance of jqCron instance from one jquery object
1248 */
1249(function($) {
1250    $.fn.jqCronGetInstance = function() {
1251        return this.data('jqCron');
1252    };
1253}).call(this, jQuery);
1254
1255/**
1256 * Main plugin
1257 */
1258(function($) {
1259    $.fn.jqCron = function(settings) {
1260        return this.each(function() {
1261            var cron, saved;
1262            var $this = $(this);
1263            settings = jqCronMergeSettings(settings); // clone settings
1264            if (!settings.jquery_container) {
1265                if ($this.is(':container')) {
1266                    settings.jquery_element = $this.uniqueId('jqCron');
1267                }
1268                else if ($this.is(':autoclose')) {
1269                    // delete already generated dom if exists
1270                    if ($this.next('.jqCron').length == 1) {
1271                        $this.next('.jqCron').remove();
1272                    }
1273                    // generate new
1274                    settings.jquery_element = $('<span class="jqCron"></span>').uniqueId('jqCron').insertAfter($this);
1275                }
1276                else {
1277                    console && console.error(settings.texts[settings.lang].error1.replace('%s', this.tagName));
1278                    return;
1279                }
1280            }
1281
1282            // autoset bind_to if it is an input
1283            if ($this.is(':input')) {
1284                settings.bind_to = settings.bind_to || $this;
1285            }
1286
1287            // init cron object
1288            if (settings.bind_to) {
1289                if (settings.bind_to.is(':input')) {
1290                    // auto bind from input to object if an input, textarea ...
1291                    settings.bind_to.blur(function() {
1292                        var value = settings.bind_method.get(settings.bind_to);
1293                        $this.jqCronGetInstance().setCron(value);
1294                    });
1295                }
1296                saved = settings.bind_method.get(settings.bind_to);
1297                cron = new jqCron(settings);
1298                cron.setCron(saved);
1299            }
1300            else {
1301                cron = new jqCron(settings);
1302            }
1303            $(this).data('jqCron', cron);
1304        });
1305    };
1306}).call(this, jQuery);
1307
1308/**
1309 * jqCron class
1310 */
1311(function($) {
1312    var jqCronInstances = [];
1313
1314    function jqCron(settings) {
1315        var _initialized = false;
1316        var _self = this;
1317        var _$elt = this;
1318        var _$obj = $('<span class="jqCron-container"></span>');
1319        var _$blocks = $('<span class="jqCron-blocks"></span>');
1320        var _$blockPERIOD = $('<span class="jqCron-period"></span>');
1321        var _$blockDOM = $('<span class="jqCron-dom"></span>');
1322        var _$blockMONTH = $('<span class="jqCron-month"></span>');
1323        var _$blockMINS = $('<span class="jqCron-mins"></span>');
1324        var _$blockDOW = $('<span class="jqCron-dow"></span>');
1325        var _$blockTIME = $('<span class="jqCron-time"></span>');
1326        var _$cross = $('<span class="jqCron-cross">&#10008;</span>');
1327        var _selectors = [];
1328        var _selectorPeriod, _selectorMins, _selectorTimeH, _selectorTimeM, _selectorDow, _selectorDom, _selectorMonth;
1329
1330        // instanciate a new selector
1331        function newSelector($block, multiple) {
1332            var selector = new jqCronSelector(_self, $block, multiple);
1333            selector.$.bind('selector:open', function() {
1334                // we close all opened selectors of all other jqCron
1335                for (var n = jqCronInstances.length; n--; ) {
1336                    if (jqCronInstances[n] != _self) {
1337                        jqCronInstances[n].closeSelectors();
1338                    }
1339                    else {
1340                        // we close all other opened selectors of this jqCron
1341                        for (var o = _selectors.length; o--; ) {
1342                            if (_selectors[o] != selector) {
1343                                _selectors[o].close();
1344                            }
1345                        }
1346                    }
1347                }
1348            });
1349            selector.$.bind('selector:change', function() {
1350                var boundChanged = false;
1351                // don't propagate if not initialized
1352                if (!_initialized)
1353                    return;
1354                // bind data between two minute selectors (only if they have the same multiple settings)
1355                if (settings.multiple_mins == settings.multiple_time_minutes) {
1356                    if (selector == _selectorMins) {
1357                        boundChanged = _selectorTimeM.setValue(_selectorMins.getValue());
1358                    }
1359                    else if (selector == _selectorTimeM) {
1360                        boundChanged = _selectorMins.setValue(_selectorTimeM.getValue());
1361                    }
1362                }
1363                // we propagate the change event to the main object
1364                boundChanged || _$obj.trigger('cron:change', _self.getCron());
1365            });
1366            _selectors.push(selector);
1367            return selector;
1368        }
1369
1370        // disable the selector
1371        this.disable = function() {
1372            _$obj.addClass('disable');
1373            settings.disable = true;
1374            _self.closeSelectors();
1375        };
1376
1377        // return if the selector is disabled
1378        this.isDisabled = function() {
1379            return settings.disable == true;
1380        };
1381
1382        // enable the selector
1383        this.enable = function() {
1384            _$obj.removeClass('disable');
1385            settings.disable = false;
1386        };
1387
1388        // get cron value
1389        this.getCron = function() {
1390            var period = _selectorPeriod.getValue();
1391            var items = ['*', '*', '*', '*', '*'];
1392            if (period == 'hour') {
1393                items[0] = _selectorMins.getCronValue();
1394            }
1395            if (period == 'day' || period == 'week' || period == 'month' || period == 'year') {
1396                items[0] = _selectorTimeM.getCronValue();
1397                items[1] = _selectorTimeH.getCronValue();
1398            }
1399            if (period == 'month' || period == 'year') {
1400                items[2] = _selectorDom.getCronValue();
1401            }
1402            if (period == 'year') {
1403                items[3] = _selectorMonth.getCronValue();
1404            }
1405            if (period == 'week') {
1406                items[4] = _selectorDow.getCronValue();
1407            }
1408            return items.join(' ');
1409        };
1410
1411        // set cron (string like * * * * *)
1412        this.setCron = function(str) {
1413            if (!str)
1414                return;
1415            try {
1416                str = str.replace(/\s+/g, ' ').replace(/^ +/, '').replace(/ +$/, ''); // sanitize
1417                var mask = str.replace(/[^\* ]/g, '-').replace(/-+/g, '-').replace(/ +/g, '');
1418                var items = str.split(' ');
1419                if (items.length != 5)
1420                    _self.error(_self.getText('error2'));
1421                if (mask == '*****') {						// 1 possibility
1422                    _selectorPeriod.setValue('minute');
1423                }
1424                else if (mask == '-****') {					// 1 possibility
1425                    _selectorPeriod.setValue('hour');
1426                    _selectorMins.setCronValue(items[0]);
1427                    _selectorTimeM.setCronValue(items[0]);
1428                }
1429                else if (mask.substr(-3) == '***') {			// 4 possibilities
1430                    _selectorPeriod.setValue('day');
1431                    _selectorMins.setCronValue(items[0]);
1432                    _selectorTimeM.setCronValue(items[0]);
1433                    _selectorTimeH.setCronValue(items[1]);
1434                }
1435                else if (mask.substr(-3) == '-**') {			// 4 possibilities
1436                    _selectorPeriod.setValue('month');
1437                    _selectorMins.setCronValue(items[0]);
1438                    _selectorTimeM.setCronValue(items[0]);
1439                    _selectorTimeH.setCronValue(items[1]);
1440                    _selectorDom.setCronValue(items[2]);
1441                }
1442                else if (mask.substr(-3) == '**-') {			// 4 possibilities
1443                    _selectorPeriod.setValue('week');
1444                    _selectorMins.setCronValue(items[0]);
1445                    _selectorTimeM.setCronValue(items[0]);
1446                    _selectorTimeH.setCronValue(items[1]);
1447                    _selectorDow.setCronValue(items[4]);
1448                }
1449                else if (mask.substr(-2) == '-*') {			// 8 possibilities
1450                    _selectorPeriod.setValue('year');
1451                    _selectorMins.setCronValue(items[0]);
1452                    _selectorTimeM.setCronValue(items[0]);
1453                    _selectorTimeH.setCronValue(items[1]);
1454                    _selectorDom.setCronValue(items[2]);
1455                    _selectorMonth.setCronValue(items[3]);
1456                }
1457                else {
1458                    _self.error(_self.getText('error4'));
1459                }
1460                _self.clearError();
1461            } catch (e) {
1462            }
1463        };
1464
1465        // close all child selectors
1466        this.closeSelectors = function() {
1467            for (var n = _selectors.length; n--; ) {
1468                _selectors[n].close();
1469            }
1470        };
1471
1472        // get the main element id
1473        this.getId = function() {
1474            return _$elt.attr('id');
1475        };
1476
1477        // get the translated text
1478        this.getText = function(key) {
1479            var text = settings.texts[settings.lang][key] || null;
1480            if (typeof(text) == "string" && text.match('<b')) {
1481                text = text.replace(/(<b *\/>)/gi, '</span><b /><span class="jqCron-text">');
1482                text = '<span class="jqCron-text">
1482' + text + '</span>';
1483            }
1484            return text;
1485        };
1486
1487        // get settings
1488        this.getSettings = function() {
1489            return settings;
1490        };
1491
1492        // display an error
1493        this.error = function(msg) {
1494            console && console.error('[jqCron Error] ' + msg);
1495            _$obj.addClass('jqCron-error').attr('title', msg);
1496            throw msg;
1497        };
1498
1499        // clear error
1500        this.clearError = function() {
1501            _$obj.attr('title', '').removeClass('jqCron-error');
1502        };
1503
1504        // clear
1505        this.clear = function() {
1506            _selectorDom.setValue([]);
1507            _selectorDow.setValue([]);
1508            _selectorMins.setValue([]);
1509            _selectorMonth.setValue([]);
1510            _selectorTimeH.setValue([]);
1511            _selectorTimeM.setValue([]);
1512            _self.triggerChange();
1513        };
1514
1515        // init (called in constructor)
1516        this.init = function() {
1517            var n, i, list;
1518            if (_initialized)
1519                return;
1520
1521            settings = jqCronMergeSettings(settings);
1522            settings.jquery_element || _self.error(_self.getText('error3'));
1523            _$elt = settings.jquery_element;
1524            _$elt.append(_$obj);
1525            _$obj.data('id', settings.id);
1526            _$obj.data('jqCron', _self);
1527            _$obj.append(_$blocks);
1528            settings.no_reset_button || _$obj.append(_$cross);
1529            (!settings.disable) || _$obj.addClass('disable');
1530            _$blocks.append(_$blockPERIOD);
1531            _$blocks.append(_$blockDOM);
1532            _$blocks.append(_$blockMONTH);
1533            _$blocks.append(_$blockMINS);
1534            _$blocks.append(_$blockDOW);
1535            _$blocks.append(_$blockTIME);
1536
1537            // various binding
1538            _$cross.click(function() {
1539                _self.isDisabled() || _self.clear();
1540            });
1541
1542            // binding from cron to target
1543            _$obj.bind('cron:change', function(evt, value) {
1544                if (!settings.bind_to)
1545                    return;
1546                settings.bind_method.set && settings.bind_method.set(settings.bind_to, value);
1547                _self.clearError();
1548            });
1549
1550            // PERIOD
1551            _$blockPERIOD.append(_self.getText('text_period'));
1552            _selectorPeriod = newSelector(_$blockPERIOD, false);
1553            settings.enabled_minute && _selectorPeriod.add('minute', _self.getText('name_minute'));
1554            settings.enabled_hour && _selectorPeriod.add('hour', _self.getText('name_hour'));
1555            settings.enabled_day && _selectorPeriod.add('day', _self.getText('name_day'));
1556            settings.enabled_week && _selectorPeriod.add('week', _self.getText('name_week'));
1557            settings.enabled_month && _selectorPeriod.add('month', _self.getText('name_month'));
1558            settings.enabled_year && _selectorPeriod.add('year', _self.getText('name_year'));
1559            _selectorPeriod.$.bind('selector:change', function(e, value) {
1560                _$blockDOM.hide();
1561                _$blockMONTH.hide();
1562                _$blockMINS.hide();
1563                _$blockDOW.hide();
1564                _$blockTIME.hide();
1565                if (value == 'hour') {
1566                    _$blockMINS.show();
1567                }
1568                else if (value == 'day') {
1569                    _$blockTIME.show();
1570                }
1571                else if (value == 'week') {
1572                    _$blockDOW.show();
1573                    _$blockTIME.show();
1574                }
1575                else if (value == 'month') {
1576                    _$blockDOM.show();
1577                    _$blockTIME.show();
1578                }
1579                else if (value == 'year') {
1580                    _$blockDOM.show();
1581                    _$blockMONTH.show();
1582                    _$blockTIME.show();
1583                }
1584            });
1585            _selectorPeriod.setValue(settings.default_period);
1586
1587            // MINS  (minutes)
1588            _$blockMINS.append(_self.getText('text_mins'));
1589            _selectorMins = newSelector(_$blockMINS, settings.multiple_mins);
1590            for (i = 0, list = settings.minutes; i < list.length; i++) {
1591                _selectorMins.add(list[i], list[i]);
1592            }
1593
1594            // TIME  (hour:min)
1595            _$blockTIME.append(_self.getText('text_time'));
1596            _selectorTimeH = newSelector(_$blockTIME, settings.multiple_time_hours);
1597            for (i = 0, list = settings.hours; i < list.length; i++) {
1598                _selectorTimeH.add(list[i], list[i]);
1599            }
1600            _selectorTimeM = newSelector(_$blockTIME, settings.multiple_time_minutes);
1601            for (i = 0, list = settings.minutes; i < list.length; i++) {
1602                _selectorTimeM.add(list[i], list[i]);
1603            }
1604
1605            // DOW  (day of week)
1606            _$blockDOW.append(_self.getText('text_dow'));
1607            _selectorDow = newSelector(_$blockDOW, settings.multiple_dow);
1608            for (i = 0, list = _self.getText('weekdays'); i < list.length; i++) {
1609                _selectorDow.add(i + 1, list[i]);
1610            }
1611
1612            // DOM  (day of month)
1613            _$blockDOM.append(_self.getText('text_dom'));
1614            _selectorDom = newSelector(_$blockDOM, settings.multiple_dom);
1615            for (i = 0, list = settings.monthdays; i < list.length; i++) {
1616                _selectorDom.add(list[i], list[i]);
1617            }
1618
1619            // MONTH  (day of week)
1620            _$blockMONTH.append(_self.getText('text_month'));
1621            _selectorMonth = newSelector(_$blockMONTH, settings.multiple_month);
1622            for (i = 0, list = _self.getText('months'); i < list.length; i++) {
1623                _selectorMonth.add(i + 1, list[i]);
1624            }
1625
1626            // close all selectors when we click in body
1627            $('body').click(function() {
1628                var i, n = _selectors.length;
1629                for (i = 0; i < n; i++) {
1630                    _selectors[i].close();
1631                }
1632            });
1633            _initialized = true;
1634
1635            // default value
1636            if (settings.default_value) {
1637                _self.setCron(settings.default_value);
1638            }
1639        };
1640
1641        // trigger a change event
1642        this.triggerChange = function() {
1643            _$obj.trigger('cron:change', _self.getCron());
1644        };
1645
1646        // store instance in array
1647        jqCronInstances.push(this);
1648
1649        // expose main jquery object
1650        this.$ = _$obj;
1651
1652        // init
1653        try {
1654            this.init();
1655            _self.triggerChange();
1656        } catch (e) {
1657        }
1658    }
1659    this.jqCron = jqCron;
1660}).call(this, jQuery);
1661
1662
1663/**
1664 * jqCronSelector class
1665 */
1666(function($) {
1667    function jqCronSelector(_cron, _$block, _multiple) {
1668        var _self = this;
1669        var _$list = $('<ul class="jqCron-selector-list"></ul>');
1670        var _$title = $('<span class="jqCron-selector-title"></span>');
1671        var _$selector = $('<span class="jqCron-selector"></span>');
1672        var _values = {};
1673        var _value = [];
1674        var _hasNumericTexts = true;
1675
1676        // return an array without doublon
1677        function array_unique(l) {
1678            var i = 0, n = l.length, k = {}, a = [];
1679            while (i < n) {
1680                k[l[i]] || (k[l[i]] = 1 && a.push(l[i]));
1681                i++;
1682            }
1683            return a;
1684        }
1685
1686        // get the value (an array if multiple, else a single value)
1687        this.getValue = function() {
1688            return _multiple ? _value : _value[0];
1689        };
1690
1691        // get a correct string for cron
1692        this.getCronValue = function() {
1693            if (_value.length == 0)
1694                return '*';
1695            var cron = [_value[0]], i, s = _value[0], c = _value[0], n = _value.length;
1696            for (i = 1; i < n; i++) {
1697                if (_value[i] == c + 1) {
1698                    c = _value[i];
1699                    cron[cron.length - 1] = s + '-' + c;
1700                }
1701                else {
1702                    s = c = _value[i];
1703                    cron.push(c);
1704                }
1705            }
1706            return cron.join(',');
1707        };
1708
1709        // set the cron value 
1710        this.setCronValue = function(str) {
1711            var values = [], m, i, n = str.length;
1712            if (str !== '*') {
1713                while (str != '') {
1714                    // test "*/n" expression
1715                    m = str.match(/^\*\/([0-9]+),?/);
1716                    if (m && m.length == 2) {
1717                        for (i = 0; i <= 59; i += (m[1] | 0)) {
1718                            values.push(i);
1719                        }
1720                        str = str.replace(m[0], '');
1721                    }
1722                    // test "a-b/n" expression
1723                    m = str.match(/^([0-9]+)-([0-9]+)\/([0-9]+),?/);
1724                    if (m && m.length == 4) {
1725                        for (i = (m[1] | 0); i <= (m[2] | 0); i += (m[3] | 0)) {
1726                            values.push(i);
1727                        }
1728                        str = str.replace(m[0], '');
1729                    }
1730                    // test "a-b" expression
1731                    m = str.match(/^([0-9]+)-([0-9]+),?/);
1732                    if (m && m.length == 3) {
1733                        for (i = (m[1] | 0); i <= (m[2] | 0); i++) {
1734                            values.push(i);
1735                        }
1736                        str = str.replace(m[0], '');
1737                    }
1738                    // test "c" expression
1739                    m = str.match(/^([0-9]+),?/);
1740                    if (m && m.length == 2) {
1741                        values.push(m[1] | 0);
1742                        str = str.replace(m[0], '');
1743                    }
1744                    if (n == str.length) {
1745                        // something goes wrong in the expression
1746                        return;
1747                    }
1748                    n = str.length;
1749                }
1750            }
1751            _self.setValue(values);
1752        };
1753
1754        // close the selector
1755        this.close = function() {
1756            _$selector.trigger('selector:close');
1757        };
1758
1759        // open the selector
1760        this.open = function() {
1761            _$selector.trigger('selector:open');
1762        };
1763
1764        // whether the selector is open
1765        this.isOpened = function() {
1766            return _$list.is(':visible');
1767        };
1768
1769        // add a selected value to the list
1770        this.addValue = function(key) {
1771            var values = _multiple ? _value.slice(0) : []; // clone array
1772            values.push(key);
1773            _self.setValue(values);
1774        };
1775
1776        // remove a selected value from the list
1777        this.removeValue = function(key) {
1778            if (_multiple) {
1779                var i, newValue = [];
1780                for (i = 0; i < _value.length; i++) {
1781                    if (key != [_value[i]]) {
1782                        newValue.push(_value[i]);
1783                    }
1784                }
1785                _self.setValue(newValue);
1786            }
1787            else {
1788                _self.clear();
1789            }
1790        };
1791
1792        // set the selected value(s) of the list
1793        this.setValue = function(keys) {
1794            var i, newKeys = [], saved = _value.join(' ');
1795            if (!$.isArray(keys))
1796                keys = [keys];
1797            _$list.find('li').removeClass('selected');
1798            keys = array_unique(keys);
1799            keys.sort(function(a, b) {
1800                var ta = typeof(a);
1801                var tb = typeof(b);
1802                if (ta == tb && ta == "number")
1803                    return a - b;
1804                else
1805                    return String(a) == String(b) ? 0 : (String(a) < String(b) ? -1 : 1);
1806            });
1807            if (_multiple) {
1808                for (i = 0; i < keys.length; i++) {
1809                    if (keys[i] in _values) {
1810                        _values[keys[i]].addClass('selected');
1811                        newKeys.push(keys[i]);
1812                    }
1813                }
1814            }
1815            else {
1816                if (keys[0] in _values) {
1817                    _values[keys[0]].addClass('selected');
1818                    newKeys.push(keys[0]);
1819                }
1820            }
1821            // remove unallowed values
1822            _value = newKeys;
1823            if (saved != _value.join(' ')) {
1824                _$selector.trigger('selector:change', _multiple ? keys : keys[0]);
1825                return true;
1826            }
1827            return false;
1828        };
1829
1830        // get the title text
1831        this.getTitleText = function() {
1832            var getValueText = function(key) {
1833                return (key in _values) ? _values[key].text() : key;
1834            };
1835
1836            if (_value.length == 0)
1837                return _cron.getText('empty');
1838            var cron = [getValueText(_value[0])], i, s = _value[0], c = _value[0], n = _value.length;
1839            for (i = 1; i < n; i++) {
1840                if (_value[i] == c + 1) {
1841                    c = _value[i];
1842                    cron[cron.length - 1] = getValueText(s) + '-' + getValueText(c);
1843                }
1844                else {
1845                    s = c = _value[i];
1846                    cron.push(getValueText(c));
1847                }
1848            }
1849            return cron.join(',');
1850        };
1851
1852        // clear list
1853        this.clear = function() {
1854            _values = {};
1855            _self.setValue([]);
1856            _$list.empty();
1857        };
1858
1859        // add a (key, value) pair
1860        this.add = function(key, value) {
1861            var $item = $('<li>' + value + '</li>');
1862            if (!(value + '').match(/^[0-9]+$/))
1863                _hasNumericTexts = false;
1864            _$list.append($item);
1865            _values[key] = $item;
1866            $item.click(function() {
1867                if (_multiple && $(this).hasClass('selected')) {
1868                    _self.removeValue(key);
1869                }
1870                else {
1871                    _self.addValue(key);
1872                    if (!_multiple)
1873                        _self.close();
1874                }
1875            });
1876        };
1877
1878        // expose main jquery object
1879        this.$ = _$selector;
1880
1881        // constructor
1882        _$block.find('b:eq(0)').after(_$selector).remove();
1883        _$selector
1884                .addClass('jqCron-selector-' + _$block.find('.jqCron-selector').length)
1885                .append(_$title)
1886                .append(_$list)
1887                .bind('selector:open', function() {
1888            if (_hasNumericTexts) {
1889                var nbcols = 1, n = _$list.find('li').length;
1890                if (n > 5 && n <= 16)
1891                    nbcols = 2;
1892                else if (n > 16 && n <= 23)
1893                    nbcols = 3;
1894                else if (n > 23 && n <= 40)
1895                    nbcols = 4;
1896                else if (n > 40)
1897                    nbcols = 5;
1898                _$list.addClass('cols' + nbcols);
1899            }
1900            _$list.show();
1901        })
1902                .bind('selector:close', function() {
1903            _$list.hide();
1904        })
1905                .bind('selector:change', function() {
1906            _$title.html(_self.getTitleText());
1907        })
1908                .click(function(e) {
1909            e.stopPropagation();
1910        })
1911                .trigger('selector:change')
1912                ;
1913        $.fn.disableSelection && _$selector.disableSelection();
1913 // only work with jQuery UI
1914        _$title.click(function(e) {
1915            (_self.isOpened() || _cron.isDisabled()) ? _self.close() : _self.open();
1916        });
1917        _self.close();
1918        _self.clear();
1919    }
1920    this.jqCronSelector = jqCronSelector;
1921}).call(this, jQuery);
1922
1923/**
1924 * Generate unique id for each element.
1925 * Skip elements which have already an id.
1926 */
1927(function($) {
1928    var jqUID = 0;
1929    var jqGetUID = function(prefix) {
1930        var id;
1931        while (1) {
1932            jqUID++;
1933            id = ((prefix || 'JQUID') + '') + jqUID;
1934            if (!document.getElementById(id))
1935                return id;
1936        }
1937    };
1938    $.fn.uniqueId = function(prefix) {
1939        return this.each(function() {
1940            if ($(this).attr('id'))
1941                return;
1942            var id = jqGetUID(prefix);
1943            $(this).attr('id', id);
1944        });
1945    };
1946}).call(this, jQuery);
1947
1948
1949/**
1950 * Extends jQuery selectors with new block selector
1951 */
1952(function($) {
1953    $.extend($.expr[':'], {
1954        container: function(a) {
1955            return (a.tagName + '').toLowerCase() in {
1956                a: 1,
1957                abbr: 1,
1958                acronym: 1,
1959                address: 1,
1960                b: 1,
1961                big: 1,
1962                blockquote: 1,
1963                button: 1,
1964                cite: 1,
1965                code: 1,
1966                dd: 1,
1967                del: 1,
1968                dfn: 1,
1969                div: 1,
1970                dt: 1,
1971                em: 1,
1972                fieldset: 1,
1973                form: 1,
1974                h1: 1,
1975                h2: 1,
1976                h3: 1,
1977                h4: 1,
1978                h5: 1,
1979                h6: 1,
1980                i: 1,
1981                ins: 1,
1982                kbd: 1,
1983                label: 1,
1984                li: 1,
1985                p: 1,
1986                pre: 1,
1987                q: 1,
1988                samp: 1,
1989                small: 1,
1990                span: 1,
1991                strong: 1,
1992                sub: 1,
1993                sup: 1,
1994                td: 1,
1995                tt: 1
1996            };
1997        },
1998        autoclose: function(a) {
1999            return (a.tagName + '').toLowerCase() in {
2000                area: 1,
2001                base: 1,
2002                basefont: 1,
2003                br: 1,
2004                col: 1,
2005                frame: 1,
2006                hr: 1,
2007                img: 1,
2008                input: 1,
2009                link: 1,
2010                meta: 1,
2011                param: 1
2012            };
2013        }
2014    });
2015}).call(this, jQuery);
2016
2017

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.