PageSourceSearch

https://amspirit.com/includes/js.php?p=contact&2026092516

js amspirit.com collected 2026-09-25 20:08:39 UTC 294,053 bytes, 3,089 lines download raw bytes

vendor: 47,525 bytes, lines 1-17
1/*!
2 * jQuery JavaScript Library v1.6.2
3 * http://jquery.com/
4 *
5 * Copyright 2011, John Resig
6 * Dual licensed under the MIT or GPL Version 2 licenses.
7 * http://jquery.org/license
8 *
9 * Includes Sizzle.js
10 * http://sizzlejs.com/
11 * Copyright 2011, The Dojo Foundation
12 * Released under the MIT, BSD, and GPL Licenses.
13 *
14 * Date: Thu Jun 30 14:16:56 2011 -0400
15 */
16(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bC.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bR,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bX(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bX(a,c,d,e,"*",g));return l}function bW(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bN),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bA(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bv:bw;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bg(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(x,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(H)return H.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:|^on/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.
17shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,N(a.origType,a.selector),f.extend({},a,{handler:M,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,N(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?E:D):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=E;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=E;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=E,this.stopPropagation()},isDefaultPrevented:D,isPropagationStopped:D,isImmediatePropagationStopped:D};var F=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},G=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?G:F,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?G:F)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&K("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&K("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var H,I=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var L={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||D,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=x.exec(h),k="",j&&(k=j[0],h=h.replace(x,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,L[h]?(a.push(L[h]+k),h=h+k):h=(L[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+N(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+N(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()}
vendor: 7,074 bytes, line 17
17,CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);
vendor: 36,957 bytes, lines 17-18
17if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=T.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/<tbody/i,ba=/<|&#?\w+;/,bb=/<(?:script|object|embed|option|style)/i,bc=/checked\s*(?:[^=]|=\s*.checked.)/i,bd=/\/(java|ecma)script/i,be=/^\s*<!(?:\[CDATA\[|\-\-)/,bf={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bc.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bg(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bm)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bb.test(a[0])&&(f.support.checkClone||!bc.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j
18)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1></$2>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bl(k[i]);else bl(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bd.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bn=/alpha\([^)]*\)/i,bo=/opacity=([^)]*)/,bp=/([A-Z]|^ms)/g,bq=/^-?\d+(?:px)?$/i,br=/^-?\d/,bs=/^[+\-]=/,bt=/[^+\-\.\de]+/g,bu={position:"absolute",visibility:"hidden",display:"block"},bv=["Left","Right"],bw=["Top","Bottom"],bx,by,bz;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bx(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bs.test(d)&&(d=+d.replace(bt,"")+parseFloat(f.css(a,c)),h="number"),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bx)return bx(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bA(a,b,d);f.swap(a,bu,function(){e=bA(a,b,d)});return e}},set:function(a,b){if(!bq.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cs(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cr("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cr("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cs(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cr("show",1),slideUp:cr("hide",1),slideToggle:cr("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cn||cp(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!cl&&(co?(cl=!0,g=function(){cl&&(co(g),e.tick())},co(g)):cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||cp(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var ct=/^t(?:able|d|h)$/i,cu=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cv(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!ct.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
18/*!
19 * jQuery UI 1.8.16
20 *
21 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
22 * Dual licensed under the MIT or GPL Version 2 licenses.
23 * http://jquery.org/license
24 *
25 * http://docs.jquery.com/UI
26 */
27(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.16",
28keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({propAttr:c.fn.prop||c.fn.attr,_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=
29this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,
30"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":
31"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,
32outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,
33"tabindex"),d=isNaN(b);return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&
34a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&
35c.ui.isOverAxis(b,e,i)}})}})(jQuery);
36;/*
37 * jQuery UI Datepicker 1.8.16
38 *
39 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
40 * Dual licensed under the MIT or GPL Version 2 licenses.
41 * http://jquery.org/license
42 *
43 * http://docs.jquery.com/UI/Datepicker
44 *
45 * Depends:
46 *	jquery.ui.core.js
47 */
48(function(d,C){function M(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
49"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Frid
49ay","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su",
50"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",
51minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false,disabled:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=N(d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function N(a){return a.bind("mouseout",
52function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");b.length&&b.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])||!b.length)){b.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
53b.addClass("ui-state-hover");b.hasClass("ui-datepicker-prev")&&b.addClass("ui-datepicker-prev-hover");b.hasClass("ui-datepicker-next")&&b.addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==C)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.16"}});var B=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},
54setDefaults:function(a){H(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,
55"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",
56function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b);b.settings.disabled&&this._disableDatepicker(a)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c==
57"focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():
58d.datepicker._showDatepicker(a[0]);return false})}}
58,_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,
59b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.settings.disabled&&this._disableDatepicker(a);b.dpDiv.css("display","block")}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=
601;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/
612-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=
62d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=
63a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,
64"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==
65a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?
66d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&this._hideDatepicker();var h=this._getDateDatepicker(a,true),i=this._getMinMaxDate(e,"min"),g=this._getMinMaxDate(e,"max");H(e.settings,f);if(i!==null&&f.dateFormat!==C&&f.minDate===C)e.settings.minDate=this._formatDate(e,i);if(g!==null&&f.dateFormat!==C&&f.maxDate===C)e.settings.maxDate=this._formatDate(e,g);this._attachments(d(a),e);this._autoSize(e);this._setDate(e,h);this._updateAlternate(e);
67this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);
67this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");
68b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass+":not(."+d.datepicker._currentClass+")",b.dpDiv);c[0]&&d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]);if(a=d.datepicker._get(b,"onSelect")){c=d.datepicker._formatDate(b);a.apply(b.input?b.input[0]:null,[c,b])}else d.datepicker._hideDatepicker();return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,
69a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=
70a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,
71"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));var c=String.fromCharCode(a.charCode==C?a.keyCode:a.charCode);
72return a.ctrlKey||a.metaKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",
73a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);if(d.datepicker._curInst&&d.datepicker._curInst!=b){d.datepicker._datepickerShowing&&d.datepicker._triggerOnClose(d.datepicker._curInst);d.datepicker._curInst.dpDiv.stop(true,true)}var c=d.datepicker._get(b,"beforeShow");c=c?c.apply(a,[a,b]):{};if(c!==false){H(b.settings,c);b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value=
74"";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);
75c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.f
75ind("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing=
76true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}}},_updateDatepicker:function(a){this.maxRows=4;var b=d.datepicker._getBorders(a.dpDiv);J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});
77a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&
78!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),
79h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=
80this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");if(b)b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);
81this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();d.datepicker._triggerOnClose(b);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},
82_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):
830),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e["selected"+(c=="M"?
84"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);
85this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);
85this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");
86if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?
87b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=A+1<a.length&&a.charAt(A+1)==p)&&A++;return p},m=function(p){var D=
88o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"&&D?4:p=="o"?3:2)+"}");p=b.substring(q).match(p);if(!p)throw"Missing number at position "+q;q+=p[0].length;return parseInt(p[0],10)},n=function(p,D,K){p=d.map(o(p)?K:D,function(w,x){return[[x,w]]}).sort(function(w,x){return-(w[1].length-x[1].length)});var E=-1;d.each(p,function(w,x){w=x[1];if(b.substr(q,w.length).toLowerCase()==w.toLowerCase()){E=x[0];q+=w.length;return false}});if(E!=-1)return E+1;else throw"Unknown name at position "+q;},s=
89function(){if(b.charAt(q)!=a.charAt(A))throw"Unexpected literal at position "+q;q++},q=0,A=0;A<a.length;A++)if(k)if(a.charAt(A)=="'"&&!o("'"))k=false;else s();else switch(a.charAt(A)){case "d":l=m("d");break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":j=m("m");break;case "M":j=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=new Date(m("@"));c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();j=v.getMonth()+
901;l=v.getDate();break;
90case "'":if(o("'"))s();else k=true;break;default:s()}if(q<b.length)throw"Extra/unparsed characters found in date: "+b.substring(q);if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",
91COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:
92null)||this._defaults.monthNames;var i=function(o){(o=k+1<a.length&&a.charAt(k+1)==o)&&k++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},j=function(o,m,n,s){return i(o)?s[m]:n[m]},l="",u=false;if(b)for(var k=0;k<a.length;k++)if(u)if(a.charAt(k)=="'"&&!i("'"))u=false;else l+=a.charAt(k);else switch(a.charAt(k)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=j("D",b.getDay(),e,f);break;case "o":l+=g("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-
93(new Date(b.getFullYear(),0,0)).getTime())/864E5),3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=j("M",b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;
93case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(k)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=
940;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==C?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);
95var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date;
96i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,j=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,k=u.exec(h);k;){switch(k[2]||"d"){case "d":case "D":g+=parseInt(k[1],10);break;case "w":case "W":g+=parseInt(k[1],10)*7;break;case "m":case "M":l+=parseInt(k[1],10);g=
97Math.min(g,d.datepicker._getDaysInMonth(j,l));break;case "y":case "Y":j+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break}k=u.exec(h)}return new Date(j,l,g)};if(b=(b=b==null||b===""?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):new Date(b.getTime()))&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>
9812?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&
99a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?
100new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&n<k?k:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));
101n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+B+".datepicker._adjustDate('#"+a.id+"', -"+j+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var s=this._get(a,"nextText");s=!h?s:this.formatDate(s,this._daylightSavingAdjust(new Date(m,
102g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+B+".datepicker._adjustDate('#"+a.id+"', +"+j+", 'M');\" title=\""+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>";j=this._get(a,"currentText");s=this._get(a,"gotoCurrent")&&
103a.currentDay?u:b;j=!h?j:this.formatDate(j,s,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+B+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,s)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
104B+".datepicker._gotoToday('#"+a.id+"');\">"+j+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");s=this._get(a,"dayNames");this._get(a,"dayNamesShort");var q=this._get(a,"dayNamesMin"),A=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),D=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x<i[0];x++){var O=
105"";this.maxRows=4;for(var G=0;G<i[1];G++){var P=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",y="";if(l){y+='<div class="ui-datepicker-group';if(i[1]>1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&
106x==0?c?f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,A,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var z=j?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var r=(t+h)%7;z+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+s[r]+'">'+q[r]+"</span></th>"}y+=z+"</tr></thead><tbody>";z=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,
107z);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;z=Math.ceil((t+z)/7);this.maxRows=z=l?this.maxRows>z?this.maxRows:z:z;r=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q<z;Q++){y+="<tr>";var R=!j?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(r)+"</td>";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[r]):[true,""],F=r.getMonth()!=g,L=F&&!K||!I[0]||k&&r<k||o&&r>o;R+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(r.getTime()==
108P.getTime()&&g==a.selectedMonth&&a._keyEvent||E.getTime()==r.getTime()&&E.getTime()==P.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!D?"":" "+I[1]+(r.getTime()==u.getTime()?" "+this._currentClass:"")+(r.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!F||D)&&I[2]?' title="'+I[2]+'"':"")+(L?"":' onclick="DP_jQuery_'+B+".datepicker._selectDay('#"+a.id+"',"+r.getMonth()+","+r.getFullYear()+', this);return false;"')+">"+(F&&!D?"&#xa0;":L?'<span class="ui-state-default">'+
109r.getDate()+"</span>":'<a class="ui-state-default'+(r.getTime()==b.getTime()?" ui-state-highlight":"")+(r.getTime()==u.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+'" href="#">'+r.getDate()+"</a>")+"</td>";r.setDate(r.getDate()+1);r=this._daylightSavingAdjust(r)}y+=R+"</tr>"}g++;if(g>11){g=0;m++}y+="</tbody></table>"+(l?"</div>"+(i[0]>0&&G==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':
110"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='<div class="ui-datepicker-title">',o="";if(h||!j)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+B+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" >";
110for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&
111(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(k+=o+(h||!(j&&l)?"&#xa0;":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var s=(new Date).getFullYear();i=function(q){q=q.match(/c[+-].*/)?c+parseInt(q.substring(1),10):q.match(/[+-].*/)?s+parseInt(q,10):parseInt(q,10);return isNaN(q)?s:q};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,
112e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+B+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" >";b<=g;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";a.yearshtml+="</select>";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?"&#xa0;":"")+o;k+="</div>";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c=="Y"?b:0),f=a.drawMonth+
113(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b}
113,_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");if(b)b.apply(a.input?
114a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);c=this._daylightSavingAdjust(new Date(c,
115e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,
116"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=function(a){if(!this.length)return this;
117if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));return this.each(function(){typeof a==
118"string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.16";window["DP_jQuery_"+B]=d})(jQuery);
119;/*
120* Input Mask plugin for jquery
121* http://github.com/RobinHerbots/jquery.inputmask
122* Copyright (c) 2010 -  Robin Herbots
123* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
124* Version: 0.0.0-dev
125*/
126
127(function ($) {
128    if ($.fn.inputmask === undefined) {
129
130        //helper functions
131        function isInputEventSupported(eventName) {
132            var el = document.createElement('input'),
133                evName = 'on' + eventName,
134                isSupported = (evName in el);
135            if (!isSupported) {
136                el.setAttribute(evName, 'return;');
137                isSupported = typeof el[evName] == 'function';
138            }
139            el = null;
140            return isSupported;
141        }
142
143        function isInputTypeSupported(inputType) {
144            var isSupported = inputType == "text" || inputType == "tel";
145            if (!isSupported) {
146                var el = document.createElement('input');
147                el.setAttribute("type", inputType);
148                isSupported = el.type === "text"; //apply mask only if the type is not natively supported
149                el = null;
150            }
151            return isSupported;
152        }
153
154        function resolveAlias(aliasStr, options, opts) {
155            var aliasDefinition = opts.aliases[aliasStr];
156            if (aliasDefinition) {
157                if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias, undefined, opts); //alias is another alias
158                $.extend(true, opts, aliasDefinition); //merge alias definition in the options
159                $.extend(true, opts, options); //reapply extra given options
160                return true;
161            }
162            return false;
163        }
164
165        function generateMaskSet(opts, nocache) {
166            var ms = undefined;
167
168            function analyseMask(mask) {
169                var tokenizer = /(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?\})\??|[^.?*+^${[]()|\\]+|./g,
170                    escaped = false;
171
172                function maskToken(isGroup, isOptional, isQuantifier, isAlternator) {
173                    this.matches = [];
174                    this.isGroup = isGroup || false;
175                    this.isOptional = isOptional || false;
176                    this.isQuantifier = isQuantifier || false;
177                    this.isAlternator = isAlternator || false;
178                    this.quantifier = { min: 1, max: 1 };
179                };
180
181                //test definition => {fn: RegExp/function, cardinality: int, optionality: bool, newBlockMarker: bool, casing: null/upper/lower, def: definitionSymbol, placeholder: placeholder, mask: real maskDefinition}
182                function insertTestDefinition(mtoken, element, position) {
183                    var maskdef = opts.definitions[element];
184                    var newBlockMarker = mtoken.matches.length == 0;
185                    position = position != undefined ? position : mtoken.matches.length;
186                    if (maskdef && !escaped) {
187                        maskdef["placeholder"] = $.isFunction(maskdef["placeholder"]) ? maskdef["placeholder"].call(this, opts) : maskdef["placeholder"];
188                        var prevalidators = maskdef["prevalidator"], prevalidatorsL = prevalidators ? prevalidators.length : 0;
189                        for (var i = 1; i < maskdef.cardinality; i++) {
190                            var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator["validator"], cardinality = prevalidator["cardinality"];
191                            mtoken.matches.splice(position++, 0, { fn: validator ? typeof validator == 'string' ? new RegExp(validator) : new function () { this.test = validator; } : new RegExp("."), cardinality: cardinality ? cardinality : 1, optionality: mtoken.isOptional, newBlockMarker: newBlockMarker, casing: maskdef["casing"], def: maskdef["definitionSymbol"] || element, placeholder: maskdef["placeholder"], mask: element });
192                        }
193                        mtoken.matches.splice(position++, 0, { fn: maskdef.validator ? typeof maskdef.validator == 'string' ? new RegExp(maskdef.validator) : new function () { this.test = maskdef.validator; } : new RegExp("."), cardinality: maskdef.cardinality, optionality: mtoken.isOptional, newBlockMarker: newBlockMarker, casing: maskdef["casing"], def: maskdef["definitionSymbol"] || element, placeholder: maskdef["placeholder"], mask: element });
194                    } else {
195                        mtoken.matches.splice(position++, 0, { fn: null, cardinality: 0, optionality: mtoken.isOptional, newBlockMarker: newBlockMarker, casing: null, def: element, placeholder: undefined, mask: element });
196                        escaped = false;
197                    }
198                }
199
200                var currentToken = new maskToken(),
201                    match,
202                    m,
203                    openenings = [],
204                    maskTokens = [],
205                    openingToken,
206                    currentOpeningToken,
207                    alternator,
208                    lastMatch;
209
210                while (match = tokenizer.exec(mask)) {
211                    m = match[0];
212                    switch (m.charAt(0)) {
213                        case opts.optionalmarker.end:
214                            // optional closing
215                        case opts.groupmarker.end:
216                            // Group closing
217                            openingToken = openenings.pop();
218                            if (openenings.length > 0) {
219                                currentOpeningToken = openenings[openenings.length - 1];
220                                currentOpeningToken["matches"].push(openingToken);
221                                if (currentOpeningToken.isAlternator) {  //handle alternator (a) | (b) case
222                                    alternator = openenings.pop();
223                                    for (var mndx = 0; mndx < alternator.matches.length; mndx++) {
224                                        alternator.matches[mndx].isGroup = false; //don't mark alternate groups as group
225                                    }
226                                    if (openenings.length > 0) {
227                                        currentOpeningToken = openenings[openenings.length - 1];
228                                        currentOpeningToken["matches"].push(alternator);
229                                    } else {
230                                        currentToken.matches.push(alternator);
231                                    }
232                                }
233                            } else {
234                                currentToken.matches.push(openingToken);
235                            }
236                            break;
237                        case opts.optionalmarker.start:
238                            // optional opening
239                            openenings.push(new maskToken(false, true));
240                            break;
241                        case opts.groupmarker.start:
242                            // Group opening
243                            openenings.push(new maskToken(true));
244                            break;
245                        case opts.quantifiermarker.start:
246                            //Quantifier
247                            var quantifier = new maskToken(false, false, true);
248
249                            m = m.replace(/[{}]/g, "");
250                            var mq = m.split(","),
251                                mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]),
252                                mq1 = mq.length == 1 ? mq0 : (isNaN(mq[1]) ? mq[1] : parseInt(mq[1]));
253                            if (mq1 == "*" || mq1 == "+") {
254                                mq0 = mq1 == "*" ? 0 : 1;
255                            }
256                            quantifier.quantifier = { min: mq0, max: mq1 };
257                            if (openenings.length > 0) {
258                                var matches = openenings[openenings.length - 1]["matches"];
259                                match = matches.pop();
260                                if (!match["isGroup"]) {
261                                    var groupToken = new maskToken(true);
262                                    groupToken.matches.push(match);
263                                    match = groupToken;
264                                }
265                                matches.push(match);
266                                matches.push(quantifier);
267                            } else {
268                                match = currentToken.matches.pop();
269                                if (!match["isGroup"]) {
270                                    var groupToken = new maskToken(true);
271                                    groupToken.matches.push(match);
272                                    match = groupToken;
273                                }
274                                currentToken.matches.push(match);
275                                currentToken.matches.push(quantifier);
276                            }
277                            break;
278                        case opts.escapeChar:
279                            escaped = true;
280                            break;
281                        case opts.alternatormarker:
282                            if (openenings.length > 0) {
283                                currentOpeningToken = openenings[openenings.length - 1];
284                                lastMatch = currentOpeningToken.matches.pop();
285                            } else {
286                                lastMatch = currentToken.matches.pop();
287                            }
288                            if (lastMatch.isAlternator) {
289                                openenings.push(lastMatch);
290                            } else {
291                                alternator = new maskToken(false, false, false, true);
292                                alternator.matches.push(lastMatch);
293                                openenings.push(alternator);
294                            }
295                            break;
296                        default:
297                            if (openenings.length > 0) {
298                                currentOpeningToken = openenings[openenings.length - 1];
299                                if (currentOpeningToken.matches.length > 0 && !currentOpeningToken.isAlternator) {
300                                    lastMatch = currentOpeningToken.matches[currentOpeningToken.matches.length - 1];
301                                    if (lastMatch["isGroup"]) { //this is not a group but a normal mask => convert
302                                        lastMatch.isGroup = false;
303                                        insertTestDefinition(lastMatch, opts.groupmarker.start, 0);
304                                        insertTestDefinition(lastMatch, opts.groupmarker.end);
305                                    }
306                                }
307                                insertTestDefinition(currentOpeningToken, m);
308                                if (currentOpeningToken.isAlternator) {  //handle alternator a | b case
309                                    alternator = openenings.pop();
310                                    for (var mndx = 0; mndx < alternator.matches.length; mndx++) {
311                                        alternator.matches[mndx].isGroup = false; //don't mark alternate groups as group
312                                    }
313                                    if (openenings.length > 0) {
314                                        currentOpeningToken = openenings[openenings.length - 1];
315                                        currentOpeningToken["matches"].push(alternator);
316                                    } else {
317                                        currentToken.matches.push(alternator);
318                                    }
319                                }
320                            } else {
321                                if (currentToken.matches.length > 0) {
322                                    lastMatch = currentToken.matches[currentToken.matches.length - 1];
323                                    if (lastMatch["isGroup"]) { //this is not a group but a normal mask => convert
324                                        lastMatch.isGroup = false;
325                                        insertTestDefinition(lastMatch, opts.groupmarker.start, 0);
326                                        insertTestDefinition(lastMatch, opts.groupmarker.end);
327                                    }
328                                }
329                                insertTestDefinition(currentToken, m);
330                            }
331                    }
332                }
333
334                if (currentToken.matches.length > 0) {
335                    lastMatch = currentToken.matches[currentToken.matches.length - 1];
336                    if (lastMatch["isGroup"]) { //this is not a group but a normal mask => convert
337                        lastMatch.isGroup = false;
338                        insertTestDefinition(lastMatch, opts.groupmarker.start, 0);
339                        insertTestDefinition(lastMatch, opts.groupmarker.end);
340                    }
341                    maskTokens.push(currentToken);
342                }
343
344                //console.log(JSON.stringify(maskTokens));
345                return maskTokens;
346            }
347
348            function generateMask(mask, metadata) {
349                if (mask == undefined || mask == "")
350                    return undefined;
351                else {
352                    if (mask.length == 1 && opts.greedy == false && opts.repeat != 0) {
353                        opts.placeholder = "";
354                    } //hide placeholder with single non-greedy mask
355                    if (opts.repeat > 0 || opts.repeat == "*" || opts.repeat == "+") {
356                        var repeatStart = opts.repeat == "*" ? 0 : (opts.repeat == "+" ? 1 : opts.repeat);
357                        mask = opts.groupmarker.start + mask + opts.groupmarker.end + opts.quantifiermarker.start + repeatStart + "," + opts.repeat + opts.quantifiermarker.end;
358                    }
359
360                    var masksetDefinition;
361                    if ($.inputmask.masksCache[mask] == undefined || nocache === true) {
362                        masksetDefinition = {
363                            "mask": mask,
364                            "maskToken": analyseMask(mask),
365                            "validPositions": {},
366                            "_buffer": undefined,
367                            "buffer": undefined,
368                            "tests": {},
369                            "metadata": metadata
370                        };
371                        if (nocache !== true)
372                            $.inputmask.masksCache[mask] = masksetDefinition;
373                    } else masksetDefinition = $.extend(true, {}, $.inputmask.masksCache[mask]);
374
375                    return masksetDefinition;
376                }
377            }
378            function preProcessMask(mask) {
379                mask = mask.toString();
380                if (opts.numericInput) { //TODO FIX FOR DYNAMIC MASKS WITH QUANTIFIERS
381                    mask = mask.split('').reverse();
382                    for (var ndx = 0; ndx < mask.length; ndx++) {
383                        if (mask[ndx] == opts.optionalmarker.start)
384                            mask[ndx] = opts.optionalmarker.end;
385                        else if (mask[ndx] == opts.optionalmarker.end)
386                            mask[ndx] = opts.optionalmarker.start;
387                        else if (mask[ndx] == opts.groupmarker.start)
388                            mask[ndx] = opts.groupmarker.end;
389                        else if (mask[ndx] == opts.groupmarker.end)
390                            mask[ndx] = opts.groupmarker.start;
391                    }
392                    mask = mask.join('');
393                }
394                return mask;
395            }
396
397            if ($.isFunction(opts.mask)) { //allow mask to be a preprocessing fn - should return a valid mask
398                opts.mask = opts.mask.call(this, opts);
399            }
400            if ($.isArray(opts.mask)) {
401                if (opts.mask.length > 1) {
402                    opts.keepStatic = opts.keepStatic == undefined ? true : opts.keepStatic; //enable by default when passing multiple masks when the option is not explicitly specified
403                    var altMask = "(";
404                    $.each(opts.mask, function (ndx, msk) {
405                        if (altMask.length > 1)
406                            altMask += ")|(";
407                        if (msk["mask"] != undefined && !$.isFunction(msk["mask"])) {
408                            altMask += preProcessMask(msk["mask"]);
409                        } else {
410                            altMask += preProcessMask(msk);
411                        }
412                    });
413                    altMask += ")";
414                    return generateMask(altMask, opts.mask);
415                } else opts.mask = opts.mask.pop();
416            }
417
418            if (opts.mask) {
419                if (opts.mask["mask"] != undefined && !$.isFunction(opts.mask["mask"])) {
420                    ms = generateMask(preProcessMask(opts.mask["mask"]), opts.mask);
421                } else {
422                    ms = generateMask(preProcessMask(opts.mask), opts.mask);
423                }
424            }
425
426            return ms;
427        }
428
429        var ua = navigator.userAgent,
430            iphone = ua.match(new RegExp("iphone", "i")) !== null,
431            android = ua.match(new RegExp("android.*safari.*", "i")) !== null,
432            androidchrome = ua.match(new RegExp("android.*chrome.*", "i")) !== null,
433            androidfirefox = ua.match(new RegExp("android.*firefox.*", "i")) !== null,
434            kindle = /Kindle/i.test(ua) || /Silk/i.test(ua) || /KFTT/i.test(ua) || /KFOT/i.test(ua) || /KFJWA/i.test(ua) || /KFJWI/i.test(ua) || /KFSOWI/i.test(ua) || /KFTHWA/i.test(ua) || /KFTHWI/i.test(ua) || /KFAPWA/i.test(ua) || /KFAPWI/i.test(ua),
435            PasteEventType = isInputEventSupported('paste') ? 'paste' : isInputEventSupported('input') ? 'input' : "propertychange";
436
437        //if (androidchrome) {
438        //    var browser = navigator.userAgent.match(new RegExp("chrome.*", "i")),
439        //        version = parseInt(new RegExp(/[0-9]+/).exec(browser));
440        //    androidchrome32 = (version == 32);
441        //}
442
443        //masking scope
444        //actionObj definition see below
445        function maskScope(actionObj, maskset, opts) {
446            var isRTL = false,
447                undoValue,
448                compositionValidPos,
449                compositionCaretPos,
450                compositionData,
451                $el,
452                skipKeyPressEvent = false, //Safari 5.1.x - modal dialog fires keypress twice workaround
453                skipInputEvent = false, //skip when triggered from within inputmask
454                ignorable = false,
455                maxLength,
456                firstClick = true;
457
458            //maskset helperfunctions
459
460
461            function getMaskTemplate(baseOnInput, minimalPos, includeInput) {
462                minimalPos = minimalPos || 0;
463                var maskTemplate = [], ndxIntlzr, pos = 0, test, testPos;
464                do {
465                    if (baseOnInput === true && getMaskSet()['validPositions'][pos]) {
466                        var validPos = getMaskSet()['validPositions'][pos];
467                        test = validPos["match"];
468                        ndxIntlzr = validPos["locator"].slice();
469                        maskTemplate.push(includeInput === true ? validPos["input"] : getPlaceholder(pos, test));
470                    } else {
471                        testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);
472                        test = testPos["match"];
473                        ndxIntlzr = testPos["locator"].slice();
474                        maskTemplate.push(getPlaceholder(pos, test));
475                    }
476                    pos++;
477                } while ((maxLength == undefined || pos - 1 < maxLength) && test["fn"] != null || (test["fn"] == null && test["def"] != "") || minimalPos >= pos);
478                maskTemplate.pop(); //drop the last one which is empty
479                return maskTemplate;
480            }
481            function getMaskSet() {
482                return maskset;
483            }
484            function resetMaskSet(soft) {
485                var maskset = getMaskSet();
486                maskset["buffer"] = undefined;
487                maskset["tests"] = {};
488                if (soft !== true) {
489                    maskset["_buffer"] = undefined;
490                    maskset["validPositions"] = {};
491                    maskset["p"] = 0;
492                }
493            }
494            function getLastValidPosition(closestTo, strict) {
495                var maskset = getMaskSet(), lastValidPosition = -1, valids = maskset["validPositions"];
496                if (closestTo == undefined) closestTo = -1;
497                var before = lastValidPosition, after = lastValidPosition;
498                for (var posNdx in valids) {
499                    var psNdx = parseInt(posNdx);
500                    if (valids[psNdx] && (strict || valids[psNdx]["match"].fn != null)) {
501                        if (psNdx <= closestTo) before = psNdx;
502                        if (psNdx >= closestTo) after = psNdx;
503                    }
504                }
505                lastValidPosition = (before != -1 && (closestTo - before) > 1) || after < closestTo ? before : after;
506                return lastValidPosition;
507            }
508            function setValidPosition(pos, validTest, fromSetValid) {
509                if (opts.insertMode && getMaskSet()["validPositions"][pos] != undefined && fromSetValid == undefined) {
510                    //reposition & revalidate others
511                    var positionsClone = $.extend(true, {}, getMaskSet()["validPositions"]), lvp = getLastValidPosition(), i;
512                    for (i = pos; i <= lvp; i++) { //clear selection
513                        delete getMaskSet()["validPositions"][i];
514                    }
515                    getMaskSet()["validPositions"][pos] = validTest;
516                    var valid = true, j, vps = getMaskSet()["validPositions"];
517                    for (i = (j = pos) ; i <= lvp ; i++) {
518                        var t = positionsClone[i];
519                        if (t != undefined) {
520                            var posMatch = j;
521                            while (posMatch < getMaskLength() && ((t.match.fn == null && vps[i] && (vps[i].match.optionalQuantifier === true || vps[i].match.optionality === true)) || t.match.fn != null)) {
522                                //determine next position
523                                if (t.match.fn == null || (!opts.keepStatic && vps[i] && (vps[i + 1] != undefined && getTests(i + 1, vps[i].locator.slice(), i).length > 1 || vps[i].alternation != undefined)))
524                                    posMatch++;
525                                else
526                                    posMatch = seekNext(j);
527
528                                //does it match
529                                if (positionCanMatchDefinition(posMatch, t["match"].def)) {
530                                    valid = isValid(posMatch, t["input"], true, true) !== false;
531                                    j = posMatch;
532                                    break;
533                                } else valid = t["match"].fn == null;
534                            }
535                        }
536                        if (!valid) break;
537                    }
538
539                    if (!valid) {
540                        getMaskSet()["validPositions"] = $.extend(true, {}, positionsClone);
541                        return false;
542                    }
543                } else
544                    getMaskSet()["validPositions"][pos] = validTest;
545
546                return true;
547            }
548            function stripValidPositions(start, end, nocheck, strict) {
549                var i, startPos = start;
550                getMaskSet()["p"] = start; //needed for alternated position after overtype selection
551                if (getMaskSet()["validPositions"][start] != undefined && getMaskSet()["validPositions"][start].input == opts.radixPoint) {
552                    end++;
553                    startPos++;
554                }
555                var endPos = end;
556                for (i = startPos; i < end; i++) { //clear selection
557                    if (getMaskSet()["validPositions"][i] != undefined) {
558                        if (nocheck === true || opts.canClearPosition(getMaskSet(), i, getLastValidPosition(), strict, opts) != false)
559                            delete getMaskSet()["validPositions"][i];
560                    }
561                }
562
563                resetMaskSet(true);
564                for (i = startPos + 1 ; i <= getLastValidPosition() ;) {
565                    while (getMaskSet()["validPositions"][startPos] != undefined) startPos++;
566                    var s = getMaskSet()["validPositions"][startPos];
567                    if (i < startPos) i = startPos + 1;
568                    var t = getMaskSet()["validPositions"][i];
569                    if (t != undefined && s == undefined) {
570                        if (positionCanMatchDefinition(startPos, t.match.def) && isValid(startPos, t["input"], true) !== false) {
571                            delete getMaskSet()["validPositions"][i];
572                            i++;
573                        }
574                        startPos++;
575                    } else i++;
576                }
577                //remove radixpoint if needed
578                var lvp = getLastValidPosition(), ml = getMaskLength();
579                if (start <= lvp && getMaskSet()["validPositions"][lvp] != undefined && (getMaskSet()["validPositions"][lvp].input == opts.radixPoint))
580                    delete getMaskSet()["validPositions"][lvp];
581
582                for (i = lvp + 1; i <= ml; i++) {
583                    if (getMaskSet()["validPositions"][i])
584                        delete getMaskSet()["validPositions"][i];
585                }
586
587                resetMaskSet(true);
588            }
589            function getTestTemplate(pos, ndxIntlzr, tstPs) {
590                var testPos = getMaskSet()["validPositions"][pos];
591                if (testPos == undefined) {
592                    var testPositions = getTests(pos, ndxIntlzr, tstPs),
593                        lvp = getLastValidPosition(),
594                        lvTest = getMaskSet()["validPositions"][lvp] || getTests(0, undefined, undefined)[0],
595                        lvTestAltArr = (lvTest.alternation != undefined) ? lvTest["locator"][lvTest.alternation].toString().split(',') : [];
596                    for (var ndx = 0; ndx < testPositions.length; ndx++) {
597                        testPos = testPositions[ndx];
598
599                        if (testPos["match"] &&
600                        (((opts.greedy && testPos["match"].optionalQuantifier !== true)
601                            || (testPos["match"].optionality === false || testPos["match"].newBlockMarker === false) && testPos["match"].optionalQuantifier !== true) &&
602                        (lvTest.alternation == undefined ||
603                        (testPos["locator"][lvTest.alternation] != undefined && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(","), lvTestAltArr))))) {
604                            break;
605                        }
606                    }
607                }
608
609                return testPos;
610            }
611            function getTest(pos) {
612                if (getMaskSet()['validPositions'][pos]) {
613                    return getMaskSet()['validPositions'][pos]["match"];
614                }
615                return getTests(pos)[0]["match"];
616            }
617            function positionCanMatchDefinition(pos, def) {
618                var valid = false, tests = getTests(pos);
619                for (var tndx = 0; tndx < tests.length; tndx++) {
620                    if (tests[tndx]["match"] && tests[tndx]["match"].def == def) {
621                        valid = true;
622                        break;
623                    }
624                }
625                return valid;
626            };
627            function getTests(pos, ndxIntlzr, tstPs, cacheable) {
628                var maskTokens = getMaskSet()["maskToken"], testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr || [0], matches = [], insertStop = false;
629                function ResolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) { //ndxInitilizer contains a set of indexes to speedup searches in the mtokens
630                    function handleMatch(match, loopNdx, quantifierRecurse) {
631                        if (testPos > 10000) {
632                            alert("jquery.inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. " + getMaskSet()["mask"]);
633                            return true;
634                        }
635                        if (testPos == pos && match.matches == undefined) {
636                            matches.push({ "match": match, "locator": loopNdx.reverse() });
637                            return true;
638                        } else if (match.matches != undefined) {
639                            if (match.isGroup && quantifierRecurse !== true) { //when a group pass along to the quantifier
640                                match = handleMatch(maskToken.matches[tndx + 1], loopNdx);
641                                if (match) return true;
642                            } else if (match.isOptional) {
643                                var optionalToken = match;
644                                match = ResolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse);
645                                if (match) {
646                                    var latestMatch = matches[matches.length - 1]["match"];
647                                    var isFirstMatch = $.inArray(latestMatch, optionalToken.matches) == 0;
648                                    if (isFirstMatch) {
649                                        insertStop = true; //insert a stop
650                                        testPos = pos; //match the position after the group
651                                    } else return true;
652                                }
653                            } else if (match.isAlternator) {
654                                var alternateToken = match, malternateMatches = [], maltMatches,
655                                    currentMatches = matches.slice(), loopNdxCnt = loopNdx.length;
656                                var altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1;
657                                if (altIndex == -1 || typeof altIndex == "string") {
658                                    var currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr;
659                                    if (typeof altIndex == "string") altIndexArr = altIndex.split(",");
660                                    //console.log(alternateToken.matches.length);
661                                    for (var amndx = 0; amndx < alternateToken.matches.length; amndx++) {
662                                        matches = [];
663                                        match = handleMatch(alternateToken.matches[amndx], [amndx].concat(loopNdx), quantifierRecurse) || match;
664                                        maltMatches = matches.slice();
665                                        testPos = currentPos;
666                                        matches = [];
667                                        //cloneback
668                                        for (var i = 0; i < ndxInitializerClone.length; i++) {
669                                            ndxInitializer[i] = ndxInitializerClone[i];
670                                        }
671                                        //fuzzy merge matches
672                                        for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {
673                                            var altMatch = maltMatches[ndx1];
674                                            altMatch.alternation = loopNdxCnt;
675                                            for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {
676                                                var altMatch2 = malternateMatches[ndx2];
677                                                //verify equality
678                                                if (altMatch.match.mask == altMatch2.match.mask && (typeof altIndex != "string" || $.inArray(altMatch.locator[loopNdxCnt].toString(), altIndexArr) != -1)) {
679                                                    maltMatches.splice(ndx1, 1);
680                                                    altMatch2.locator[loopNdxCnt] = altMatch2.locator[loopNdxCnt] + "," + altMatch.locator[loopNdxCnt];
681                                                    altMatch2.alternation = loopNdxCnt; //we pass the alternation index => used in determineLastRequiredPosition
682                                                    break;
683                                                }
684                                            }
685                                        }
686                                        malternateMatches = malternateMatches.concat(maltMatches);
687                                    }
688
689                                    if (typeof altIndex == "string") { //filter matches
690                                        malternateMatches = $.map(malternateMatches, function (lmnt, ndx) {
691                                            if (isFinite(ndx)) {
692                                                var altLocArr = lmnt.locator[loopNdxCnt].toString().split(",");
693                                                var mamatch;
694                                                lmnt.locator[loopNdxCnt] = undefined;
695                                                lmnt.alternation = undefined;
696                                                for (var alndx = 0; alndx < altLocArr.length; alndx++) {
697                                                    mamatch = $.inArray(altLocArr[alndx], altIndexArr) != -1;
698                                                    if (mamatch) { //rebuild the locator with valid entries
699                                                        if (lmnt.locator[loopNdxCnt] != undefined) {
700                                                            lmnt.locator[loopNdxCnt] += ",";
701                                                            //lmnt.alternation = loopNdxCnt; //only define alternation when there is more then 1 possibility
702                                                            lmnt.locator[loopNdxCnt] += altLocArr[alndx];
703                                                        } else
704                                                            lmnt.locator[loopNdxCnt] = parseInt(altLocArr[alndx]);
705
706                                                        lmnt.alternation = loopNdxCnt;
707                                                    }
708                                                }
709                                                if (lmnt.locator[loopNdxCnt] != undefined) return lmnt;
710                                            }
711                                        });
712                                    }
713
714                                    matches = currentMatches.concat(malternateMatches);
715                                    testPos = pos;
716                                    insertStop = true; //insert a stopelemnt when there is an alternate
717                                } else {
718                                    match = handleMatch(alternateToken.matches[altIndex], [altIndex].concat(loopNdx), quantifierRecurse);
719                                }
720                                if (match) return true;
721                            } else if (match.isQuantifier && quantifierRecurse !== true) {
722                                var qt = match;
723                                for (var qndx = (ndxInitializer.length > 0 && quantifierRecurse !== true) ? ndxInitializer.shift() : 0; (qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max)) && testPos <= pos; qndx++) {
724                                    var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1];
725                                    match = handleMatch(tokenGroup, [qndx].concat(loopNdx), true);
726                                    if (match) {
727                                        //get latest match
728                                        var latestMatch = matches[matches.length - 1]["match"];
729                                        latestMatch.optionalQuantifier = qndx > (qt.quantifier.min - 1);
730                                        var isFirstMatch = $.inArray(latestMatch, tokenGroup.matches) == 0;
731
732                                        if (isFirstMatch) { //search for next possible match
733                                            if (qndx > (qt.quantifier.min - 1)) {
734                                                insertStop = true;
735                                                testPos = pos; //match the position after the group
736                                                break; //stop quantifierloop
737                                            } else return true;
738                                        } else {
739                                            return true;
740                                        }
741                                    }
742                                }
743                            } else {
744                                match = ResolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse);
745                                if (match)
746                                    return true;
747                            }
748                        } else testPos++;
749                    }
750
751                    for (var tndx = (ndxInitializer.length > 0 ? ndxInitializer.shift() : 0) ; tndx < maskToken.matches.length; tndx++) {
752                        if (maskToken.matches[tndx]["isQuantifier"] !== true) {
753                            var match = handleMatch(maskToken.matches[tndx], [tndx].concat(loopNdx), quantifierRecurse);
754                            if (match && testPos == pos) {
755                                return match;
756                            } else if (testPos > pos) {
757                                break;
758                            }
759                        }
760                    }
761                }
762
763                if (false && cacheable !== false && getMaskSet()['tests'][pos]) {
764                    return getMaskSet()['tests'][pos];
765                }
766                if (ndxIntlzr == undefined) {
767                    var previousPos = pos - 1, test;
768                    while ((test = getMaskSet()['validPositions'][previousPos]) == undefined && previousPos > -1) {
769                        previousPos--;
770                    }
771                    if (test != undefined && previousPos > -1) {
772                        testPos = previousPos;
773                        ndxInitializer = test["locator"].slice();
774                    } else {
775                        previousPos = pos - 1;
776                        while ((test = getMaskSet()['tests'][previousPos]) == undefined && previousPos > -1) {
777                            previousPos--;
778                        }
779                        if (test != undefined && previousPos > -1) {
780                            testPos = previousPos;
781                            ndxInitializer = test[0]["locator"].slice();
782                        }
783                    }
784                }
785                for (var mtndx = ndxInitializer.shift() ; mtndx < maskTokens.length; mtndx++) {
786                    var match = ResolveTestFromToken(maskTokens[mtndx], ndxInitializer, [mtndx]);
787                    if ((match && testPos == pos) || testPos > pos) {
788                        break;
789                    }
790                }
791                if (matches.length == 0 || insertStop)
792                    matches.push({ "match": { fn: null, cardinality: 0, optionality: true, casing: null, def: "" }, "locator": [] });
793
794                getMaskSet()['tests'][pos] = $.extend(true, [], matches);
794 //set a clone to prevent overwriting some props
795                //console.log(pos + " - " + JSON.stringify(matches));
796                return getMaskSet()['tests'][pos];
797            }
798            function getBufferTemplate() {
799                if (getMaskSet()['_buffer'] == undefined) {
800                    //generate template
801                    getMaskSet()["_buffer"] = getMaskTemplate(false, 1);
802                }
803                return getMaskSet()['_buffer'];
804            }
805            function getBuffer() {
806                if (getMaskSet()['buffer'] == undefined) {
807                    getMaskSet()['buffer'] = getMaskTemplate(true, getLastValidPosition(), true);
808                }
809                return getMaskSet()['buffer'];
810            }
811            function refreshFromBuffer(start, end, buffer) {
812                buffer = buffer || getBuffer().slice(); //pass or work on clone
813                if (start === true) {
814                    resetMaskSet();
815                    start = 0;
816                    end = buffer.length;
817                } else {
818                    for (var i = start; i < end; i++) {
819                        delete getMaskSet()["validPositions"][i];
820                        delete getMaskSet()["tests"][i];
821                    }
822                }
823
824                for (var i = start; i < end; i++) {
825                    if (buffer[i] != opts.skipOptionalPartCharacter) {
826                        isValid(i, buffer[i], true, true);
827                    }
828                }
829            }
830            function casing(elem, test) {
831                switch (test.casing) {
832                    case "upper":
833                        elem = elem.toUpperCase();
834                        break;
835                    case "lower":
836                        elem = elem.toLowerCase();
837                        break;
838                }
839
840                return elem;
841            }
842            function checkAlternationMatch(altArr1, altArr2) {
843                var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1),
844                    isMatch = false;
845                for (var alndx = 0; alndx < altArr1.length; alndx++) {
846                    if ($.inArray(altArr1[alndx], altArrC) != -1) {
847                        isMatch = true;
848                        break;
849                    }
850                }
851                return isMatch;
852            }
853            function isValid(pos, c, strict, fromSetValid) { //strict true ~ no correction or autofill
854                strict = strict === true; //always set a value to strict to prevent possible strange behavior in the extensions 
855
856                function _isValid(position, c, strict, fromSetValid) {
857                    var rslt = false;
858                    //console.log(JSON.stringify(getTests(position)));
859                    $.each(getTests(position), function (ndx, tst) {
860                        var test = tst["match"];
861                        var loopend = c ? 1 : 0, chrs = '', buffer = getBuffer();
862                        for (var i = test.cardinality; i > loopend; i--) {
863                            chrs += getBufferElement(position - (i - 1));
864                        }
865                        if (c) {
866                            chrs += c;
867                        }
868
869                        //return is false or a json object => { pos: ??, c: ??} or true
870                        rslt = test.fn != null ?
871                            test.fn.test(chrs, getMaskSet(), position, strict, opts)
872                            : (c == test["def"] || c == opts.skipOptionalPartCharacter) && test["def"] != "" ? //non mask
873                            { c: test["def"], pos: position }
874                            : false;
875
876                        if (rslt !== false) {
877                            var elem = rslt.c != undefined ? rslt.c : c;
878                            elem = (elem == opts.skipOptionalPartCharacter && test["fn"] === null) ? test["def"] : elem;
879
880                            var validatedPos = position,
881                                possibleModifiedBuffer = getBuffer();
882
883                            if (rslt["remove"] != undefined) { //remove position(s)
884                                if (!$.isArray(rslt["remove"])) rslt["remove"] = [rslt["remove"]];
885                                $.each(rslt["remove"].sort(function (a, b) { return b - a; }), function (ndx, lmnt) {
886                                    stripValidPositions(lmnt, lmnt + 1, true);
887                                });
888                            }
889                            if (rslt["insert"] != undefined) { //insert position(s)
890                                if (!$.isArray(rslt["insert"])) rslt["insert"] = [rslt["insert"]];
891                                $.each(rslt["insert"].sort(function (a, b) { return a - b; }), function (ndx, lmnt) {
892                                    isValid(lmnt["pos"], lmnt["c"], true);
893                                });
894                            }
895
896                            if (rslt["refreshFromBuffer"]) {
897                                var refresh = rslt["refreshFromBuffer"];
898                                strict = true;
899                                refreshFromBuffer(refresh === true ? refresh : refresh["start"], refresh["end"], possibleModifiedBuffer);
900                                if (rslt.pos == undefined && rslt.c == undefined) {
901                                    rslt.pos = getLastValidPosition();
902                                    return false;//breakout if refreshFromBuffer && nothing to insert
903                                }
904                                validatedPos = rslt.pos != undefined ? rslt.pos : position;
905                                if (validatedPos != position) {
906                                    rslt = $.extend(rslt, isValid(validatedPos, elem, true)); //revalidate new position strict
907                                    return false;
908                                }
909
910                            } else if (rslt !== true && rslt.pos != undefined && rslt["pos"] != position) { //their is a position offset
911                                validatedPos = rslt["pos"];
912                                refreshFromBuffer(position, validatedPos);
913                                if (validatedPos != position) {
914                                    rslt = $.extend(rslt, isValid(validatedPos, elem, true)); //revalidate new position strict
915                                    return false;
916                                }
917                            }
918
919                            if (rslt != true && rslt.pos == undefined && rslt.c == undefined) {
920                                return false; //breakout if nothing to insert
921                            }
922
923                            if (ndx > 0) {
924                                resetMaskSet(true);
925                            }
926
927                            if (!setValidPosition(validatedPos, $.extend({}, tst, { "input": casing(elem, test) }), fromSetValid))
928                                rslt = false;
929                            return false; //break from $.each
930                        }
931                    });
932
933                    return rslt;
934                }
935                function alternate(pos, c, strict, fromSetValid) {
936                    var validPsClone = $.extend(true, {}, getMaskSet()["validPositions"]),
937                        lastAlt,
938                        alternation,
939                        isValidRslt,
940                        altPos;
941                    //find last alternation
942                    for (lastAlt = getLastValidPosition() ; lastAlt >= 0; lastAlt--) {
943                        altPos = getMaskSet()["validPositions"][lastAlt];
944                        if (altPos && altPos.alternation != undefined && altPos.locator[altPos.alternation].length > 1) {
945                            alternation = getMaskSet()["validPositions"][lastAlt].alternation;
946                            break;
947                        }
948                    }
949                    if (alternation != undefined) {
950                        //find first decision making position
951                        for (var decisionPos in getMaskSet()["validPositions"]) {
952                            altPos = getMaskSet()["validPositions"][decisionPos];
953                            if (parseInt(decisionPos) > parseInt(lastAlt) && altPos.alternation) {
954                                var decisionTaker = altPos.locator[alternation],
955                                 altNdxs = getMaskSet()["validPositions"][lastAlt].locator[alternation].toString().split(',');
956
957                                for (var mndx = 0; mndx < altNdxs.length; mndx++) {
958                                    if (decisionTaker < altNdxs[mndx]) {
959                                        var possibilityPos, possibilities;
960                                        for (var dp = decisionPos - 1; dp >= 0; dp--) {
961                                            possibilityPos = getMaskSet()["validPositions"][dp];
962                                            if (possibilityPos != undefined) {
963                                                possibilities = possibilityPos.locator[alternation]; //store to reset 
964                                                //possibilityPos.alternation = undefined;
965                                                possibilityPos.locator[alternation] = parseInt(altNdxs[mndx]);
966                                                break;
967                                            }
968                                        }
969                                        if (decisionTaker != possibilityPos.locator[alternation]) {
970                                            var validInputs = [];
971                                            for (var i = decisionPos; i < getLastValidPosition() + 1; i++) {
972                                                var validPos = getMaskSet()["validPositions"][i];
973                                                if (validPos && validPos.match.fn != null) {
974                                                    //console.log(validPos.input);
975                                                    validInputs.push(validPos.input);
976                                                }
977                                                delete getMaskSet()["validPositions"][i];
978                                                delete getMaskSet()["tests"][i];
979                                            }
980                                            resetMaskSet(true); //clear getbuffer
981                                            opts.keepStatic = !opts.keepStatic; //disable keepStatic on getMaskLength
982                                            isValidRslt = true;
983                                            while (validInputs.length > 0) {
984                                                var input = validInputs.shift();
985                                                //console.log(input);
986                                                if (input != opts.skipOptionalPartCharacter) {
987                                                    if (!(isValidRslt = isValid(getLastValidPosition() + 1, input, false, true))) {
988                                                        break;
989                                                    }
990                                                }
991                                            }
992
993                                            possibilityPos.alternation = alternation;
994                                            possibilityPos.locator[alternation] = possibilities; //reset forceddecision ~ needed for proper delete
995                                            if (isValidRslt)
996                                                isValidRslt = isValid(pos, c, strict, fromSetValid);
997                                            opts.keepStatic = !opts.keepStatic; //enable keepStatic on getMaskLength
998                                            if (!isValidRslt) {
999                                                resetMaskSet();
1000                                                getMaskSet()["validPositions"] = $.extend(true, {}, validPsClone);
1001                                            } else
1002                                                return isValidRslt;
1003                                        }
1004                                    }
1005                                }
1006                                break;
1007                            }
1008                        }
1009                    }
1010                    return false;
1011                }
1012
1013                //set alternator choice on previous skipped placeholder positions
1014                function trackbackAlternations(originalPos, newPos) {
1015                    var vp = getMaskSet()["validPositions"][newPos],
1016                         targetLocator = vp.locator,
1017                         tll = targetLocator.length;
1018
1019                    for (var ps = originalPos; ps < newPos; ps++) {
1020                        if (!isMask(ps)) {
1021                            var tests = getTests(ps),
1022                            bestMatch = tests[0], equality = -1;
1023                            $.each(tests, function (ndx, tst) {
1024                                for (var i = 0; i < tll; i++) {
1025                                    if (tst.locator[i] && checkAlternationMatch(tst.locator[i].toString().split(','), targetLocator[i].toString().split(',')) && equality < i) {
1026                                        equality = i;
1027                                        bestMatch = tst;
1028                                    }
1029                                }
1030                            });
1031                            setValidPosition(ps, $.extend({}, bestMatch, { "input": bestMatch["match"].def }), true)
1032                        }
1033                    }
1034                }
1035                //Check for a nonmask before the pos
1036                var buffer = getBuffer();
1037                //find previous valid
1038                for (var pndx = pos - 1; pndx > -1; pndx--) {
1039                    if (getMaskSet()["validPositions"][pndx])
1040                        break;
1041                }
1042                ////fill missing nonmask and valid placeholders
1043                pndx++;
1044                for (; pndx < pos; pndx++) {
1045                    //console.log("missing " + pndx + " " + buffer[pndx] + " ismask " + isMask(pndx) + " plchldr " + getPlaceholder(pndx) + " nrt " + getTests(pndx).len);
1046                    if (getMaskSet()["validPositions"][pndx] == undefined
1047                           && (((!isMask(pndx)
1048                           || buffer[pndx] != getPlaceholder(pndx))
1049                           && getTests(pndx).length > 1)
1050                           || (buffer[pndx] == opts.radixPoint || buffer[pndx] == "0" && $.inArray(opts.radixPoint, buffer) < pndx))) //special case for decimals ~ = placeholder but yet valid input
1051                    {
1052                        //console.log("inject " + pndx + " " + buffer[pndx]);
1053                        _isValid(pndx, buffer[pndx], true);
1054                    }
1055                }
1056
1057                var maskPos = pos,
1058                    result = false,
1059                    positionsClone = $.extend(true, {}, getMaskSet()["validPositions"]); //clone the currentPositions
1060
1061                //if (fromSetValid && maskPos >= getMaskLength()) {
1062                //    resetMaskSet(true); //masklenght can be altered on the process => reset to get the actual length
1063                //}
1064                if (maskPos < getMaskLength()) {
1065                    result = _isValid(maskPos, c, strict, fromSetValid);
1066                    if ((!strict || fromSetValid) && result === false) {
1067                        var currentPosValid = getMaskSet()["validPositions"][maskPos];
1068                        if (currentPosValid && currentPosValid["match"].fn == null && (currentPosValid["match"].def == c || c == opts.skipOptionalPartCharacter)) {
1069                            result = { "caret": seekNext(maskPos) };
1070                        } else if ((opts.insertMode || getMaskSet()["validPositions"][seekNext(maskPos)] == undefined) && !isMask(maskPos)) { //does the input match on a further position?
1071                            for (var nPos = maskPos + 1, snPos = seekNext(maskPos) ; nPos <= snPos; nPos++) {
1072                                result = _isValid(nPos, c, strict, fromSetValid);
1073                                if (result !== false) {
1074                                    trackbackAlternations(maskPos, nPos);
1075                                    maskPos = nPos;
1076                                    break;
1077                                }
1078                            }
1079                        }
1080                    }
1081                }
1082                if (result === false && opts.keepStatic && isComplete(buffer)) { //try fuzzy alternator logic
1083                    result = alternate(pos, c, strict, fromSetValid);
1084                }
1085                if (result === true) result = { "pos": maskPos };
1086
1087                if ($.isFunction(opts.postValidation) && result != false && !strict) {
1088                    resetMaskSet(true);
1089                    var postValidResult = opts.postValidation(getBuffer(), opts);
1090                    if (!postValidResult) {
1091                        resetMaskSet(true);
1092                        getMaskSet()["validPositions"] = $.extend(true, {}, positionsClone); //revert validation changes
1093                        return false;
1094                    }
1095                }
1096
1097                return result;
1098            }
1099            function isMask(pos) {
1100                var test = getTest(pos);
1101                if (test.fn != null)
1102                    return test.fn
1103                else if (!opts.keepStatic && getMaskSet()["validPositions"][pos] == undefined) {
1104                    var tests = getTests(pos), staticAlternations = true;
1105                    for (var i = 0; i < tests.length; i++) {
1106                        if (tests[i].match.def != "" && (tests[i].match.fn !== null || (tests[i].alternation == undefined || tests[i].locator[tests[i].alternation].length > 1))) {
1107                            staticAlternations = false;
1108                            break;
1109                        }
1110                    }
1111                    return staticAlternations;
1112                }
1113
1114                return false;
1115            }
1116            function getMaskLength() {
1117                var maskLength;
1118                maxLength = $el.prop('maxLength');
1119                if (maxLength == -1) maxLength = undefined; /* FF sets no defined max length to -1 */
1120                var pos, lvp = getLastValidPosition(), testPos = getMaskSet()["validPositions"][lvp],
1121                    ndxIntlzr = testPos != undefined ? testPos["locator"].slice() : undefined;
1122                for (pos = lvp + 1; testPos == undefined || (testPos["match"]["fn"] != null || (testPos["match"]["fn"] == null && testPos["match"]["def"] != "")) ; pos++) {
1123                    testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);
1124                    ndxIntlzr = testPos["locator"].slice();
1125                }
1126
1127                var lastTest = getTest(pos - 1);
1128                maskLength = (lastTest.def != "") ? pos : pos - 1;
1129                return (maxLength == undefined || maskLength < maxLength) ? maskLength : maxLength;
1130            }
1131            function seekNext(pos) {
1132                var maskL = getMaskLength();
1133                if (pos >= maskL) return maskL;
1134                var position = pos;
1135                while (++position < maskL && !isMask(position) && (opts.nojumps !== true || opts.nojumpsThreshold > position)) {
1136                }
1137
1138                return position;
1139            }
1140            function seekPrevious(pos) {
1141                var position = pos;
1142                if (position <= 0) return 0;
1143
1144                while (--position > 0 && !isMask(position)) {
1145                };
1146                return position;
1147            }
1148            function getBufferElement(position) {
1149                return getMaskSet()["validPositions"][position] == undefined ? getPlaceholder(position) : getMaskSet()["validPositions"][position]["input"];
1150            }
1151            function writeBuffer(input, buffer, caretPos, event, triggerInputEvent) {
1152                if (event && $.isFunction(opts.onBeforeWrite)) {
1153                    var result = opts.onBeforeWrite.call(input, event, buffer, caretPos, opts);
1154                    if (result) {
1155                        if (result["refreshFromBuffer"]) {
1156                            var refresh = result["refreshFromBuffer"];
1157                            refreshFromBuffer(refresh === true ? refresh : refresh["start"], refresh["end"], result["buffer"]);
1158
1159                            resetMaskSet(true);
1160                            buffer = getBuffer();
1161                        }
1162                        caretPos = result.caret || caretPos;
1163                    }
1164                }
1165                input._valueSet(buffer.join(''));
1166                if (caretPos != undefined) {
1167                    caret(input, caretPos);
1168                }
1169                if (triggerInputEvent === true) {
1170                    skipInputEvent = true;
1171                    $(input).trigger("input");
1172                }
1173            }
1174            function getPlaceholder(pos, test) {
1175                test = test || getTest(pos);
1176                if (test["placeholder"] != undefined)
1177                    return test["placeholder"];
1178                else if (test["fn"] == null) {
1179                    if (!opts.keepStatic && getMaskSet()["validPositions"][pos] == undefined) {
1180                        var tests = getTests(pos), staticAlternations = true;
1181                        for (var i = 0; i < tests.length; i++) {
1182                            if (tests[i].match.def != "" && (tests[i].match.fn !== null || (tests[i].alternation == undefined || tests[i].locator[tests[i].alternation].length > 1))) {
1183                                staticAlternations = false;
1184                                break;
1185                            }
1186                        }
1187
1188                        if (staticAlternations)
1189                            return opts.placeholder.charAt(pos % opts.placeholder.length);
1190                    }
1191                    return test["def"]
1192                } else {
1193                    return opts.placeholder.charAt(pos % opts.placeholder.length);
1194                }
1195            }
1196            function checkVal(input, writeOut, strict, nptvl) {
1197                function isTemplateMatch() {
1198                    var isMatch = false;
1199                    var charCodeNdx = getBufferTemplate().slice(initialNdx, seekNext(initialNdx)).join('').indexOf(charCodes);
1200                    if (charCodeNdx != -1 && !isMask(initialNdx)) {
1201                        isMatch = true;
1202                        var bufferTemplateArr = getBufferTemplate().slice(initialNdx, initialNdx + charCodeNdx);
1203                        for (var i = 0; i < bufferTemplateArr.length; i++) {
1204                            if (bufferTemplateArr[i] != " ") {
1205                                isMatch = false; break;
1206                            }
1207                        }
1208                    }
1209
1210                    return isMatch;
1211                }
1212                var inputValue = nptvl != undefined ? nptvl.slice() : input._valueGet().split(''), charCodes = "", initialNdx = 0;
1213                resetMaskSet();
1214                getMaskSet()["p"] = seekNext(-1);
1215                if (writeOut) input._valueSet(""); //initial clear
1216
1217                if (!strict) {
1218                    var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(''), matches = inputValue.join('').match(new RegExp(escapeRegex(staticInput), "g"));
1219                    if (matches && matches.length > 0) {
1220                        inputValue.splice(0, matches.length * staticInput.length);
1221                        initialNdx = seekNext(initialNdx);
1222                    }
1223                }
1224
1225
1226                $.each(inputValue, function (ndx, charCode) {
1227                    var keypress = $.Event("keypress");
1228                    keypress.which = charCode.charCodeAt(0);
1229                    charCodes += charCode;
1230                    var lvp = getLastValidPosition(undefined, true), lvTest = getMaskSet()["validPositions"][lvp], nextTest = getTestTemplate(lvp + 1, lvTest ? lvTest.locator.slice() : undefined, lvp);
1231                    if (!isTemplateMatch() || strict) {
1232                        var pos = strict ? ndx : (nextTest["match"].fn == null && nextTest["match"].optionality && (lvp + 1) < getMaskSet()["p"] ? lvp + 1 : getMaskSet()["p"]);
1233                        keypressEvent.call(input, keypress, true, false, strict, pos);
1234                        initialNdx = pos + 1;
1235                        charCodes = "";
1236                    } else {
1237                        keypressEvent.call(input, keypress, true, false, true, lvp + 1);
1238                    }
1239
1240                });
1241                if (writeOut) {
1242                    writeBuffer(input, getBuffer(), $(input).is(":focus") ? seekNext(getLastValidPosition(0)) : undefined, $.Event("checkval"));
1243                }
1244            }
1245            function escapeRegex(str) {
1246                return $.inputmask.escapeRegex(str);
1247            }
1248            function unmaskedvalue($input) {
1249                if ($input.data('_inputmask') && !$input.hasClass('hasDatepicker')) {
1250                    var umValue = [], vps = getMaskSet()["validPositions"];
1251                    for (var pndx in vps) {
1252                        if (vps[pndx]["match"] && vps[pndx]["match"].fn != null) {
1253                            umValue.push(vps[pndx]["input"]);
1254                        }
1255                    }
1256                    var unmaskedValue = (isRTL ? umValue.reverse() : umValue).join('');
1257                    var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join('');
1258                    if ($.isFunction(opts.onUnMask)) {
1259                        unmaskedValue = (opts.onUnMask.call($input, bufferValue, unmaskedValue, opts) || unmaskedValue);
1260                    }
1261                    return unmaskedValue;
1262                } else {
1263                    return $input[0]._valueGet();
1264                }
1265            }
1266            function TranslatePosition(pos) {
1267                if (isRTL && typeof pos == 'number' && (!opts.greedy || opts.placeholder != "")) {
1268                    var bffrLght = getBuffer().length;
1269                    pos = bffrLght - pos;
1270                }
1271                return pos;
1272            }
1273
1274            function caret(input, begin, end) {
1275                var npt = input.jquery && input.length > 0 ? input[0] : input, range;
1276                if (typeof begin == 'number') {
1277                    begin = TranslatePosition(begin);
1278                    end = TranslatePosition(end);
1279                    end = (typeof end == 'number') ? end : begin;
1280
1281                    if (!$(npt).is(":visible")) {
1282                        return;
1283                    }
1284
1285                    var scrollCalc = $(npt).css("font-size").replace("px", "") * end;
1286                    npt.scrollLeft = scrollCalc > npt.scrollWidth ? scrollCalc : 0;
1287                    if (!androidchrome && opts.insertMode == false && begin == end) end++; //set visualization for insert/overwrite mode
1288                    if (npt.setSelectionRange) {
1289                        npt.selectionStart = begin;
1290                        npt.selectionEnd = end;
1291                    } else if (window.getSelection) {
1292                        range = document.createRange();
1293                        range.setStart(npt.firstChild, begin < npt._valueGet().length ? begin : npt._valueGet().length);
1294                        range.setEnd(npt.firstChild, end < npt._valueGet().length ? end : npt._valueGet().length);
1295                        range.collapse(true);
1296                        var sel = window.getSelection();
1297                        sel.removeAllRanges();
1298                        sel.addRange(range);
1299                        //npt.focus();
1300                    } else if (npt.createTextRange) {
1301                        range = npt.createTextRange();
1302                        range.collapse(true);
1303                        range.moveEnd('character', end);
1304                        range.moveStart('character', begin);
1305                        range.select();
1306
1307                    }
1308                } else {
1309                    if (npt.setSelectionRange) {
1310                        begin = npt.selectionStart;
1311                        end = npt.selectionEnd;
1312                    } else if (window.getSelection) {
1313                        range = window.getSelection().getRangeAt(0);
1314                        if (range.commonAncestorContainer.parentNode == npt) {
1315                            begin = range.startOffset;
1316                            end = range.endOffset;
1317                        }
1318                    } else if (document.selection && document.selection.createRange) {
1319                        range = document.selection.createRange();
1320                        begin = 0 - range.duplicate().moveStart('character', -100000);
1321                        end = begin + range.text.length;
1322                    }
1323                    return { "begin": TranslatePosition(begin), "end": TranslatePosition(end) };
1324                }
1325            }
1326            function determineLastRequiredPosition(returnDefinition) {
1327                var buffer = getBuffer(), bl = buffer.length,
1328                   pos, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet()["validPositions"][lvp],
1329                   ndxIntlzr = lvTest != undefined ? lvTest["locator"].slice() : undefined, testPos;
1330                for (pos = lvp + 1; pos < buffer.length; pos++) {
1331                    testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);
1332                    ndxIntlzr = testPos["locator"].slice();
1333                    positions[pos] = $.extend(true, {}, testPos);
1334                }
1335
1336                var lvTestAlt = lvTest && lvTest.alternation != undefined ? lvTest["locator"][lvTest.alternation] : undefined;
1337                for (pos = bl - 1; pos > lvp; pos--) {
1338                    testPos = positions[pos]["match"];
1339                    if ((testPos.optionality ||
1340                        testPos.optionalQuantifier ||
1341                        (lvTestAlt && lvTestAlt != positions[pos]["locator"][lvTest.alternation]))
1342                        && buffer[pos] == getPlaceholder(pos, testPos)) {
1343                        bl--;
1344                    } else break;
1345                }
1346                return returnDefinition ? { "l": bl, "def": positions[bl] ? positions[bl]["match"] : undefined } : bl;
1347            }
1348            function clearOptionalTail(buffer) {
1349                var rl = determineLastRequiredPosition(), lmib = buffer.length - 1;
1350                for (; lmib > rl; lmib--) {
1351                    if (isMask(lmib)) break; //fixme ismask is not good enough
1352                }
1353                buffer.splice(rl, lmib + 1 - rl);
1354
1355                return buffer
1356            }
1357            function isComplete(buffer) { //return true / false / undefined (repeat *)
1358                if ($.isFunction(opts.isComplete)) return opts.isComplete.call($el, buffer, opts);
1359                if (opts.repeat == "*") return undefined;
1360                var complete = false, lrp = determineLastRequiredPosition(true), aml = seekPrevious(lrp["l"]), lvp = getLastValidPosition();
1361
1362                if (lrp["def"] == undefined || lrp["def"].newBlockMarker || lrp["def"].optionality || lrp["def"].optionalQuantifier) {
1363                    complete = true;
1364                    for (var i = 0; i <= aml; i++) {
1365                        var mask = isMask(i), test = getTest(i);
1366                        if ((mask && getMaskSet()["validPositions"][i] == undefined && test.optionality !== true && test.optionalQuantifier !== true) || (!mask && buffer[i] != getPlaceholder(i))) {
1367                            complete = false;
1368                            break;
1369                        }
1370                    }
1371                }
1372                return complete;
1373            }
1374            function isSelection(begin, end) {
1375                return isRTL ? (begin - end) > 1 || ((begin - end) == 1 && opts.insertMode) :
1376                (end - begin) > 1 || ((end - begin) == 1 && opts.insertMode);
1377            }
1378            function installEventRuler(npt) {
1379                var events = $._data(npt).events,
1380                    inComposition = false;
1381
1382                $.each(events, function (eventType, eventHandlers) {
1383                    $.each(eventHandlers, function (ndx, eventHandler) {
1384                        if (eventHandler.namespace == "inputmask") {
1385                            if (eventHandler.type != "setvalue") {
1386                                var handler = eventHandler.handler;
1387                                eventHandler.handler = function (e) {
1388                                    //console.log("triggered " + e.type);
1389                                    if (this.disabled || (this.readOnly && !(e.type == "keydown" && e.ctrlKey && e.keyCode == 67)))
1390                                        e.preventDefault();
1391                                    else {
1392                                        switch (e.type) {
1393                                            case "input":
1394                                                if (skipInputEvent === true || inComposition === true) {
1395                                                    skipInputEvent = false;
1396                                                    return e.preventDefault();
1397                                                }
1398                                                break;
1399                                            case "keydown":
1400                                                //Safari 5.1.x - modal dialog fires keypress twice workaround
1401                                                skipKeyPressEvent = false;
1402                                                inComposition = false;
1403                                                break;
1404                                            case "keypress":
1405                                                if (skipKeyPressEvent === true)
1406                                                    return e.preventDefault();
1407                                                skipKeyPressEvent = true;
1408
1409                                                break;
1410                                            case "compositionstart":
1411                                                inComposition = true;
1412                                                break;
1413                                            case "compositionupdate":
1414                                                skipInputEvent = true;
1415                                                break;
1416                                            case "compositionend":
1417                                                inComposition = false;
1418                                                break;
1419                                        }
1420                                        //console.log("executed " + e.type);
1421                                        return handler.apply(this, arguments);
1422                                    }
1423                                };
1424                            }
1425                        }
1426                    });
1427                });
1428            }
1429            function patchValueProperty(npt) {
1430                var valueGet;
1431                var valueSet;
1432                function PatchValhook(type) {
1433                    if ($.valHooks[type] == undefined || $.valHooks[type].inputmaskpatch != true) {
1434                        var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function (elem) { return elem.value; };
1435                        var valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function (elem, value) {
1436                            elem.value = value;
1437                            return elem;
1438                        };
1439
1440                        $.valHooks[type] = {
1441                            get: function (elem) {
1442                                var $elem = $(elem);
1443                                if ($elem.data('_inputmask')) {
1444                                    if ($elem.data('_inputmask')['opts'].autoUnmask)
1445                                        return $elem.inputmask('unmaskedvalue');
1446                                    else {
1447                                        var result = valhookGet(elem),
1448                                            inputData = $elem.data('_inputmask'),
1449                                            maskset = inputData['maskset'],
1450                                            bufferTemplate = maskset['_buffer'];
1451                                        bufferTemplate = bufferTemplate ? bufferTemplate.join('') : '';
1452                                        return result != bufferTemplate ? result : '';
1453                                    }
1454                                } else return valhookGet(elem);
1455                            },
1456                            set: function (elem, value) {
1457                                var $elem = $(elem), inputData = $elem.data('_inputmask'), result;
1458                                result = valhookSet(elem, value);
1459                                if (inputData)
1460                                    $elem.triggerHandler('setvalue.inputmask');
1461                                return result;
1462                            },
1463                            inputmaskpatch: true
1464                        };
1465                    }
1466                }
1467                function getter() {
1468                    var $self = $(this), inputData = $(this).data('_inputmask');
1469                    if (inputData) {
1470                        return inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : (valueGet.call(this) != getBufferTemplate().join('') ? valueGet.call(this) : '');
1471                    } else return valueGet.call(this);
1472                }
1473                function setter(value) {
1474                    var inputData = $(this).data('_inputmask');
1475                    valueSet.call(this, value);
1476                    if (inputData)
1477                        $(this).triggerHandler('setvalue.inputmask');
1478                }
1479                function InstallNativeValueSetFallback(npt) {
1480                    $(npt).bind("mouseenter.inputmask", function (event) {
1481                        var $input = $(this), input = this, value = input._valueGet();
1482                        if (value != "" && value != getBuffer().join(''))
1483                            $input.triggerHandler('setvalue.inputmask');
1484                    });
1485                    //!! the bound handlers are executed in the order they where bound
1486                    //reorder the events - the mouseenter event is internally mapped to the mouseover event
1487                    var events = $._data(npt).events;
1488                    var handlers = events["mouseover"];
1489                    if (handlers) {
1490                        var ourHandler = handlers[handlers.length - 1];
1491                        for (var i = handlers.length - 1; i > 0; i--) {
1492                            handlers[i] = handlers[i - 1];
1493                        }
1494                        handlers[0] = ourHandler;
1495                    }
1496                }
1497
1498                if (!npt._valueGet) {
1499                    var valueProperty;
1500                    if (Object.getOwnPropertyDescriptor && npt.value == undefined) { // && npt.isContentEditable) {
1501                        valueGet = function () {
1502                            return this.textContent;
1503                        }
1504                        valueSet = function (value) {
1505                            this.textContent = value;
1506                        }
1507
1508                        Object.defineProperty(npt, "value", {
1509                            get: getter,
1510                            set: setter
1511                        });
1512                    } else if ((valueProperty = (Object.getOwnPropertyDescriptor && Ob
1512ject.getOwnPropertyDescriptor(npt, "value"))) && valueProperty.configurable && false) { //experimental for chrome
1513                        npt._value = valueProperty.value;
1514                        valueGet = function () {
1515                            return this._value || "";
1516                        }
1517                        valueSet = function (value) {
1518                            this._value = value;
1519                            this.select();
1520                            this.setRangeText(value);
1521                            this.selectionStart = this.selectionEnd;
1522                        }
1523
1524                        Object.defineProperty(npt, "value", {
1525                            get: getter,
1526                            set: setter
1527                        });
1528                    } else if (document.__lookupGetter__ && npt.__lookupGetter__("value")) {
1529                        valueGet = npt.__lookupGetter__("value");
1530                        valueSet = npt.__lookupSetter__("value");
1531
1532                        npt.__defineGetter__("value", getter);
1533                        npt.__defineSetter__("value", setter);
1534                    } else { //jquery.val 
1535                        valueGet = function () { return npt.value; }
1536                        valueSet = function (value) { npt.value = value; }
1537                        PatchValhook(npt.type);
1538                        InstallNativeValueSetFallback(npt);
1539                    }
1540                    npt._valueGet = function (overruleRTL) {
1541                        return isRTL && overruleRTL !== true ? valueGet.call(this).split('').reverse().join('') : valueGet.call(this);
1542                    };
1543                    npt._valueSet = function (value) {
1544                        valueSet.call(this, isRTL ? value.split('').reverse().join('') : value);
1545                    };
1546                }
1547            }
1548            function handleRemove(input, k, pos, strict) {
1549                function generalize() {
1550                    if (opts.keepStatic) {
1551                        resetMaskSet(true);
1552                        var validInputs = [],
1553                          lastAlt, positionsClone = $.extend(true, {}, getMaskSet()["validPositions"]);
1554                        //find last alternation
1555                        for (lastAlt = getLastValidPosition() ; lastAlt >= 0; lastAlt--) {
1556                            var validPos = getMaskSet()["validPositions"][lastAlt];
1557                            if (validPos) {
1558                                if (validPos.alternation != undefined && validPos.locator[validPos.alternation] == getTestTemplate(lastAlt).locator[validPos.alternation]) {
1559                                    break;
1560                                }
1561                                if (validPos.match.fn != null)
1562                                    validInputs.push(validPos.input);
1563                                delete getMaskSet()["validPositions"][lastAlt];
1564                            }
1565                        }
1566                        if (lastAlt > 0) {
1567                            while (validInputs.length > 0) {
1568                                getMaskSet()["p"] = seekNext(getLastValidPosition());
1569                                var keypress = $.Event("keypress");
1570                                keypress.which = validInputs.pop().charCodeAt(0);
1571                                keypressEvent.call(input, keypress, true, false, false, getMaskSet()["p"]);
1572                            }
1573                        } else {
1574                            //restore original positions
1575                            getMaskSet()["validPositions"] = $.extend(true, {}, positionsClone);
1576                        }
1577                    }
1578                }
1579
1580                if (opts.numericInput || isRTL) {
1581                    if (k == $.inputmask.keyCode.BACKSPACE)
1582                        k = $.inputmask.keyCode.DELETE;
1583                    else if (k == $.inputmask.keyCode.DELETE)
1584                        k = $.inputmask.keyCode.BACKSPACE;
1585
1586                    if (isRTL) {
1587                        var pend = pos.end;
1588                        pos.end = pos.begin;
1589                        pos.begin = pend;
1590                    }
1591                }
1592
1593                if (k == $.inputmask.keyCode.BACKSPACE && (pos.end - pos.begin < 1 || opts.insertMode == false))
1594                    pos.begin = seekPrevious(pos.begin);
1595                else if (k == $.inputmask.keyCode.DELETE && pos.begin == pos.end)
1596                    pos.end = isMask(pos.end) ? pos.end + 1 : seekNext(pos.end) + 1;
1597
1598                stripValidPositions(pos.begin, pos.end, false, strict);
1599                if (strict !== true) {
1600                    generalize(); //revert the alternation
1601
1602                    var lvp = getLastValidPosition(pos.begin);
1603                    if (lvp < pos.begin) {
1604                        if (lvp == -1) resetMaskSet();
1605                        getMaskSet()["p"] = seekNext(lvp);
1606                    } else {
1607                        getMaskSet()["p"] = pos.begin;
1608                    }
1609                }
1610            }
1611            //postprocessing of the validpositions according to the buffer manipulations
1612            function handleOnKeyResult(input, keyResult, caretPos) {
1613                if (keyResult && keyResult["refreshFromBuffer"]) {
1614                    var refresh = keyResult["refreshFromBuffer"];
1615                    refreshFromBuffer(refresh === true ? refresh : refresh["start"], refresh["end"], keyResult["buffer"]);
1616
1617                    resetMaskSet(true);
1618                    if (caretPos != undefined) {
1619                        writeBuffer(input, getBuffer());
1620                        caret(input, keyResult.caret || caretPos.begin, keyResult.caret || caretPos.end);
1621                    }
1622                }
1623            }
1624            function keydownEvent(e) {
1625                var input = this, $input = $(input), k = e.keyCode, pos = caret(input);
1626
1627                //backspace, delete, and escape get special treatment
1628                if (k == $.inputmask.keyCode.BACKSPACE || k == $.inputmask.keyCode.DELETE || (iphone && k == 127) || (e.ctrlKey && k == 88 && !isInputEventSupported("cut"))) { //backspace/delete
1629                    e.preventDefault(); //stop default action but allow propagation
1630                    if (k == 88) undoValue = getBuffer().join('');
1631                    handleRemove(input, k, pos);
1632                    writeBuffer(input, getBuffer(), getMaskSet()["p"], e, undoValue != getBuffer().join(''));
1633                    if (input._valueGet() == getBufferTemplate().join(''))
1634                        $input.trigger('cleared');
1635                    else if (isComplete(getBuffer()) === true)
1636                        $input.trigger("complete");
1637                    if (opts.showTooltip) { //update tooltip
1638                        $input.prop("title", getMaskSet()["mask"]);
1639                    }
1640                } else if (k == $.inputmask.keyCode.END || k == $.inputmask.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch
1641                    setTimeout(function () {
1642                        var caretPos = seekNext(getLastValidPosition());
1643                        if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--;
1644                        caret(input, e.shiftKey ? pos.begin : caretPos, caretPos);
1645                    }, 0);
1646                } else if ((k == $.inputmask.keyCode.HOME && !e.shiftKey) || k == $.inputmask.keyCode.PAGE_UP) { //Home or page_up
1647                    caret(input, 0, e.shiftKey ? pos.begin : 0);
1648                } else if (((opts.undoOnEscape && k == $.inputmask.keyCode.ESCAPE) || (k == 90 && e.ctrlKey)) && e.altKey !== true) { //escape && undo && #762
1649                    checkVal(input, true, false, undoValue.split(''));
1650                    $input.click();
1651                } else if (k == $.inputmask.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { //insert
1652                    opts.insertMode = !opts.insertMode;
1653                    caret(input, !opts.insertMode && pos.begin == getMaskLength() ? pos.begin - 1 : pos.begin);
1654                } else if (opts.insertMode == false && !e.shiftKey) {
1655                    if (k == $.inputmask.keyCode.RIGHT) {
1656                        setTimeout(function () {
1657                            var caretPos = caret(input);
1658                            caret(input, caretPos.begin);
1659                        }, 0);
1660                    } else if (k == $.inputmask.keyCode.LEFT) {
1661                        setTimeout(function () {
1662                            var caretPos = caret(input);
1663                            caret(input, isRTL ? caretPos.begin + 1 : caretPos.begin - 1);
1664                        }, 0);
1665                    }
1666                }
1667                opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts);
1668                ignorable = $.inArray(k, opts.ignorables) != -1;
1669            }
1670            function keypressEvent(e, checkval, writeOut, strict, ndx) {
1671                var input = this, $input = $(input),
1672                    k = e.which || e.charCode || e.keyCode;
1673
1674                if (checkval !== true && (!(e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable))) {
1675                    return true;
1676                } else {
1677                    if (k) {
1678                        //special treat the decimal separator
1679                        if (k == 46 && e.shiftKey == false && opts.radixPoint == ",") k = 44;
1680                        var pos = checkval ? { begin: ndx, end: ndx } : caret(input), forwardPosition, c = String.fromCharCode(k);
1681
1682                        //should we clear a possible selection??
1683                        var isSlctn = isSelection(pos.begin, pos.end);
1684                        if (isSlctn) {
1685                            getMaskSet()["undoPositions"] = $.extend(true, {}, getMaskSet()["validPositions"]); //init undobuffer for recovery when not valid
1686                            handleRemove(input, $.inputmask.keyCode.DELETE, pos, true);
1687                            pos.begin = getMaskSet()["p"];
1688                            if (!opts.insertMode) { //preserve some space
1689                                opts.insertMode = !opts.insertMode;
1690                                setValidPosition(pos.begin, strict);
1691                                opts.insertMode = !opts.insertMode;
1692                            }
1693                            isSlctn = !opts.multi;
1694                        }
1695
1696                        getMaskSet()["writeOutBuffer"] = true;
1697                        var p = isRTL && !isSlctn ? pos.end : pos.begin;
1698                        var valResult = isValid(p, c, strict);
1699                        if (valResult !== false) {
1700                            if (valResult !== true) {
1701                                p = valResult.pos != undefined ? valResult.pos : p; //set new position from isValid
1702                                c = valResult.c != undefined ? valResult.c : c; //set new char from isValid
1703                            }
1704                            resetMaskSet(true);
1705                            if (valResult.caret != undefined)
1706                                forwardPosition = valResult.caret;
1707                            else {
1708                                var vps = getMaskSet()["validPositions"];
1709                                if (!opts.keepStatic && (vps[p + 1] != undefined && getTests(p + 1, vps[p].locator.slice(), p).length > 1 || vps[p].alternation != undefined))
1710                                    forwardPosition = p + 1;
1711                                else
1712                                    forwardPosition = seekNext(p);
1713                            }
1714                            getMaskSet()["p"] = forwardPosition; //needed for checkval
1715                        }
1716
1717                        if (writeOut !== false) {
1718                            var self = this;
1719                            setTimeout(function () { opts.onKeyValidation.call(self, valResult, opts); }, 0);
1720                            if (getMaskSet()["writeOutBuffer"] && valResult !== false) {
1721                                var buffer = getBuffer();
1722                                writeBuffer(input, buffer, checkval ? undefined : opts.numericInput ? seekPrevious(forwardPosition) : forwardPosition, e, checkval !== true);
1723                                if (checkval !== true) {
1724                                    setTimeout(function () { //timeout needed for IE
1725                                        if (isComplete(buffer) === true)
1726                                            $input.trigger("complete");
1727                                    }, 0);
1728                                }
1729                            } else if (isSlctn) {
1730                                getMaskSet()["buffer"] = undefined;
1731                                getMaskSet()["validPositions"] = getMaskSet()["undoPositions"];
1732                            }
1733                        } else if (isSlctn) {
1734                            getMaskSet()["buffer"] = undefined;
1735                            getMaskSet()["validPositions"] = getMaskSet()["undoPositions"];
1736                        }
1737
1738                        if (opts.showTooltip) { //update tooltip
1739                            $input.prop("title", getMaskSet()["mask"]);
1740                        }
1741
1742                        if (checkval && $.isFunction(opts.onBeforeWrite)) {
1743                            var result = opts.onBeforeWrite.call(this, e, getBuffer(), forwardPosition, opts);
1744                            if (result && result["refreshFromBuffer"]) {
1745                                var refresh = result["refreshFromBuffer"];
1746                                refreshFromBuffer(refresh === true ? refresh : refresh["start"], refresh["end"], result["buffer"]);
1747
1748                                resetMaskSet(true);
1749                                if (result.caret) {
1750                                    getMaskSet()["p"] = result.caret;
1751                                }
1752                            }
1753                        }
1754                        e.preventDefault();
1755                    }
1756                }
1757            }
1758            function pasteEvent(e) {
1759                var input = this, $input = $(input), inputValue = input._valueGet(true), caretPos = caret(input);
1760                //paste event for IE8 and lower I guess ;-)
1761                if (e.type == "propertychange" && input._valueGet().length <= getMaskLength()) {
1762                    return true;
1763                } else if (e.type == "paste") {
1764                    var valueBeforeCaret = inputValue.substr(0, caretPos.begin),
1765                        valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);
1766
1767                    if (valueBeforeCaret == getBufferTemplate().slice(0, caretPos.begin).join('')) valueBeforeCaret = "";
1768                    if (valueAfterCaret == getBufferTemplate().slice(caretPos.end).join('')) valueAfterCaret = "";
1769
1770                    if (window.clipboardData && window.clipboardData.getData) { // IE
1771                        inputValue = valueBeforeCaret + window.clipboardData.getData('Text') + valueAfterCaret;
1772                    } else if (e.originalEvent && e.originalEvent.clipboardData && e.originalEvent.clipboardData.getData) {
1773                        inputValue = valueBeforeCaret + e.originalEvent.clipboardData.getData('text/plain') + valueAfterCaret;
1774                    }
1775                }
1776
1777                var pasteValue = inputValue;
1778                if ($.isFunction(opts.onBeforePaste)) {
1779                    pasteValue = opts.onBeforePaste.call(input, inputValue, opts);
1780                    if (pasteValue === false) {
1781                        e.preventDefault();
1782                        return false;
1783                    }
1784                    if (!pasteValue)
1785                        pasteValue = inputValue;
1786                }
1787                checkVal(input, true, false, isRTL ? pasteValue.split('').reverse() : pasteValue.split(''));
1788                $input.click();
1789                if (isComplete(getBuffer()) === true)
1790                    $input.trigger("complete");
1791
1792                return false;
1793            }
1794            //function mobileInputEvent(e) {
1795            //    var input = this;
1796
1797            //    //backspace in chrome32 only fires input event - detect & treat
1798            //    var caretPos = caret(input),
1799            //        currentValue = input._valueGet();
1800
1801            //    currentValue = currentValue.replace(new RegExp("(" + escapeRegex(getBufferTemplate().join('')) + ")*"), "");
1802            //    //correct caretposition for chrome
1803            //    if (caretPos.begin > currentValue.length) {
1804            //        caret(input, currentValue.length);
1805            //        caretPos = caret(input);
1806            //    }
1807            //    if ((getBuffer().length - currentValue.length) == 1 && currentValue.charAt(caretPos.begin) != getBuffer()[caretPos.begin]
1808            //        && currentValue.charAt(caretPos.begin + 1) != getBuffer()[caretPos.begin]
1809            //        && !isMask(caretPos.begin)) {
1810            //        e.keyCode = $.inputmask.keyCode.BACKSPACE;
1811            //        keydownEvent.call(input, e);
1812            //    }
1813            //    e.preventDefault();
1814            //}
1815            function inputFallBackEvent(e) { //fallback when keypress & compositionevents fail
1816                var input = this;
1817                checkVal(input, true, false);
1818
1819                if (isComplete(getBuffer()) === true)
1820                    $(input).trigger("complete");
1821
1822                e.preventDefault();
1823            }
1824            function compositionStartEvent(e) {
1825                var input = this;
1826                undoValue = getBuffer().join('');
1827                if (compositionData == "" || e.originalEvent.data.indexOf(compositionData) != 0) {
1828                    compositionCaretPos = caret(input);
1829                }
1830            }
1831            function compositionUpdateEvent(e) {
1832                var input = this, caretPos = compositionCaretPos || caret(input);
1833                if (e.originalEvent.data.indexOf(compositionData) == 0) {
1834                    resetMaskSet();
1835                    caretPos = { begin: 0, end: 0 };
1836                }
1837                var newData = e.originalEvent.data;
1838                caret(input, caretPos.begin, caretPos.end);
1839                for (var i = 0; i < newData.length; i++) {
1840                    var keypress = $.Event("keypress");
1841                    keypress.which = newData.charCodeAt(i);
1842                    skipKeyPressEvent = false;
1843                    ignorable = false;
1844                    keypressEvent.call(input, keypress); //needs update
1845                }
1846                setTimeout(function () {
1847                    var forwardPosition = getMaskSet()["p"];
1848                    writeBuffer(input, getBuffer(), opts.numericInput ? seekPrevious(forwardPosition) : forwardPosition);
1849                }, 0);
1850                compositionData = e.originalEvent.data;
1851            }
1852            function compositionEndEvent(e) {
1853                //pickup by inputfallback
1854            }
1855            function mask(el) {
1856                $el = $(el);
1857                if (($el.is(":input") && isInputTypeSupported($el.attr("type"))) || el.isContentEditable || $el.is("div")) {
1858                    //store tests & original buffer in the input element - used to get the unmasked value
1859                    $el.data('_inputmask', {
1860                        'maskset': maskset,
1861                        'opts': opts,
1862                        'isRTL': false
1863                    });
1864
1865                    //show tooltip
1866                    if (opts.showTooltip) {
1867                        $el.prop("title", getMaskSet()["mask"]);
1868                    }
1869
1870                    if (el.dir == "rtl" || opts.rightAlign)
1871                        $el.css("text-align", "right");
1872
1873                    if (el.dir == "rtl" || opts.numericInput) {
1874                        el.dir = "ltr";
1875                        $el.removeAttr("dir");
1876                        var inputData = $el.data('_inputmask');
1877                        inputData['isRTL'] = true;
1878                        $el.data('_inputmask', inputData);
1879                        isRTL = true;
1880                    }
1881
1882                    //unbind all events - to make sure that no other mask will interfere when re-masking
1883                    $el.unbind(".inputmask");
1884
1885                    if ($el.is(":input") || el.isContentEditable) {
1886                        //bind events
1887                        $el.closest('form').bind("submit", function (e) { //trigger change on submit if any
1888                            if (undoValue != getBuffer().join('')) {
1889                                $el.change();
1890                            }
1891                            if ($el[0]._valueGet && $el[0]._valueGet() == getBufferTemplate().join('')) {
1892                                $el[0]._valueSet(''); //clear masktemplete on submit and still has focus
1893                            }
1894                            if (opts.removeMaskOnSubmit) {
1895                                $el.inputmask("remove");
1896                            }
1897                        }).bind('reset', function () {
1898                            setTimeout(function () {
1899                                $el.triggerHandler('setvalue.inputmask');
1900                            }, 0);
1901                        });
1902                        $el.bind("mouseenter.inputmask", function () {
1903                            var $input = $(this), input = this;
1904                            if (!$input.is(":focus") && opts.showMaskOnHover) {
1905                                if (input._valueGet() != getBuffer().join('')) {
1906                                    writeBuffer(input, getBuffer());
1907                                }
1908                            }
1909                        }).bind("blur.inputmask", function (e) {
1910                            var $input = $(this), input = this;
1911                            if ($input.data('_inputmask')) {
1912                                var nptValue = input._valueGet(), buffer = getBuffer().slice();
1913                                firstClick = true;
1914                                if (undoValue != buffer.join('')) {
1915                                    setTimeout(function () { //change event should be triggered after the other buffer manipulations on blur
1916                                        $input.change();
1917                                        undoValue = buffer.join('');
1918                                    }, 0);
1919                                }
1920                                if (nptValue != '') {
1921                                    if (opts.clearMaskOnLostFocus) {
1922                                        if (nptValue == getBufferTemplate().join(''))
1923                                            buffer = [];
1924                                        else { //clearout optional tail of the mask
1925                                            clearOptionalTail(buffer);
1926                                        }
1927                                    }
1928                                    if (isComplete(buffer) === false) {
1929                                        $input.trigger("incomplete");
1930                                        if (opts.clearIncomplete) {
1931                                            resetMaskSet();
1932                                            if (opts.clearMaskOnLostFocus)
1933                                                buffer = [];
1934                                            else {
1935                                                buffer = getBufferTemplate().slice();
1936
1937                                            }
1938                                        }
1939                                    }
1940
1941                                    writeBuffer(input, buffer, undefined, e);
1942                                }
1943                            }
1944                        }).bind("focus.inputmask", function (e) {
1945                            var $input = $(this), input = this, nptValue = input._valueGet();
1946                            if (opts.showMaskOnFocus && (!opts.showMaskOnHover || (opts.showMaskOnHover && nptValue == ''))) {
1947                                if (input._valueGet() != getBuffer().join('')) {
1948                                    writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()));
1949                                }
1950                            }
1951                            undoValue = getBuffer().join('');
1952                        }).bind("mouseleave.inputmask", function () {
1953                            var $input = $(this), input = this;
1954                            if (opts.clearMaskOnLostFocus) {
1955                                var buffer = getBuffer().slice(), nptValue = input._valueGet();
1956                                if (!$input.is(":focus") && nptValue != $input.attr("placeholder") && nptValue != '') {
1957                                    if (nptValue == getBufferTemplate().join(''))
1958                                        buffer = [];
1959                                    else { //clearout optional tail of the mask
1960                                        clearOptionalTail(buffer);
1961                                    }
1962                                    writeBuffer(input, buffer);
1963                                }
1964                            }
1965                        }).bind("click.inputmask", function () {
1966                            var $input = $(this), input = this;
1967                            if ($input.is(":focus")) {
1968                                var selectedCaret = caret(input);
1969                                if (selectedCaret.begin == selectedCaret.end) {
1970                                    if (opts.radixFocus && opts.radixPoint != "" && $.inArray(opts.radixPoint, getBuffer()) != -1 && (firstClick || getBuffer().join('') == getBufferTemplate().join(''))) {
1971                                        caret(input, $.inArray(opts.radixPoint, getBuffer()));
1972                                        firstClick = false;
1973                                    } else {
1974                                        var clickPosition = isRTL ? TranslatePosition(selectedCaret.begin) : selectedCaret.begin,
1975                                            lastPosition = seekNext(getLastValidPosition(clickPosition));
1976                                        if (clickPosition < lastPosition) {
1977                                            caret(input, isMask(clickPosition) ? clickPosition : seekNext(clickPosition));
1978                                        } else {
1979                                            caret(input, lastPosition);
1980                                        }
1981                                    }
1982                                }
1983                            }
1984                        }).bind('dblclick.inputmask', function () {
1985                            var input = this;
1986                            setTimeout(function () {
1987                                caret(input, 0, seekNext(getLastValidPosition()));
1988                            }, 0);
1989                        }).bind(PasteEventType + ".inputmask dragdrop.inputmask drop.inputmask", pasteEvent
1990                        ).bind('cut.inputmask', function (e) {
1991                            skipInputEvent = true; //stop inputFallback
1992                            var input = this, $input = $(input), pos = caret(input);
1993
1994                            handleRemove(input, $.inputmask.keyCode.DELETE, pos);
1995                            writeBuffer(input, getBuffer(), getMaskSet()["p"], e, undoValue != getBuffer().join(''));
1996
1997                            if (input._valueGet() == getBufferTemplate().join(''))
1998                                $input.trigger('cleared');
1999
2000                            if (opts.showTooltip) { //update tooltip
2001                                $input.prop("title", getMaskSet()["mask"]);
2002                            }
2003                        }).bind('complete.inputmask', opts.oncomplete
2004                        ).bind('incomplete.inputmask', opts.onincomplete
2005                        ).bind('cleared.inputmask', opts.oncleared);
2006
2007                        $el.bind("keydown.inputmask", keydownEvent
2008                        ).bind("keypress.inputmask", keypressEvent);
2009
2010                        if (!androidfirefox) {
2011                            $el.bind("compositionstart.inputmask", compositionStartEvent
2012                            ).bind("compositionupdate.inputmask", compositionUpdateEvent
2013                            ).bind("compositionend.inputmask", compositionEndEvent);
2014                        }
2015
2016                        if (PasteEventType === "paste") {
2017                            $el.bind("input.inputmask", inputFallBackEvent);
2018                        }
2019
2020                        //if (android || androidfirefox || androidchrome || kindle) {
2021                        //    $el.unbind("input.inputmask");
2022                        //    $el.bind("input.inputmask", mobileInputEvent);
2023                        //}
2024                    }
2025
2026                    $el.bind('setvalue.inputmask', function () {
2027                        var input = this, value = input._valueGet();
2028                        input._valueSet($.isFunction(opts.onBeforeMask) ? (opts.onBeforeMask.call(input, value, opts) || value) : value);
2029                        checkVal(input, true, false);
2030                        undoValue = getBuffer().join('');
2031                        if ((opts.clearMaskOnLostFocus || opts.clearIncomplete) && input._valueGet() == getBufferTemplate().join(''))
2032                            input._valueSet('');
2033                    });
2034
2035                    patchValueProperty(el);
2036
2037                    //apply mask
2038                    var initialValue = $.isFunction(opts.onBeforeMask) ? (opts.onBeforeMask.call(el, el._valueGet(), opts) || el._valueGet()) : el._valueGet();
2039                    checkVal(el, true, false, initialValue.split(''));
2040                    var buffer = getBuffer().slice();
2041                    undoValue = buffer.join('');
2042                    // Wrap document.activeElement in a try/catch block since IE9 throw "Unspecified error" if document.activeElement is undefined when we are in an IFrame.
2043                    var activeElement;
2044                    try {
2045                        activeElement = document.activeElement;
2046                    } catch (e) {
2047                    }
2048                    if (isComplete(buffer) === false) {
2049                        if (opts.clearIncomplete)
2050                            resetMaskSet();
2051                    }
2052                    if (opts.clearMaskOnLostFocus) {
2053                        if (buffer.join('') == getBufferTemplate().join('')) {
2054                            buffer = [];
2055                        } else {
2056                            clearOptionalTail(buffer);
2057                        }
2058                    }
2059                    writeBuffer(el, buffer);
2060                    if (activeElement === el) { //position the caret when in focus
2061                        caret(el, seekNext(getLastValidPosition()));
2062                    }
2063
2064                    installEventRuler(el);
2065                }
2066            }
2067
2068            //action object
2069            if (actionObj != undefined) {
2070                switch (actionObj["action"]) {
2071                    case "isComplete":
2072                        $el = $(actionObj["el"]);
2073                        maskset = $el.data('_inputmask')['maskset'];
2074                        opts = $el.data('_inputmask')['opts'];
2075                        return isComplete(actionObj["buffer"]);
2076                    case "unmaskedvalue":
2077                        $el = actionObj["$input"];
2078                        maskset = $el.data('_inputmask')['maskset'];
2079                        opts = $el.data('_inputmask')['opts'];
2080                        isRTL = actionObj["$input"].data('_inputmask')['isRTL'];
2081                        return unmaskedvalue(actionObj["$input"]);
2082                    case "mask":
2083                        undoValue = getBuffer().join('');
2084                        mask(actionObj["el"]);
2085                        break;
2086                    case "format":
2087                        $el = $({});
2088                        $el.data('_inputmask', {
2089                            'maskset': maskset,
2090                            'opts': opts,
2091                            'isRTL': opts.numericInput
2092                        });
2093                        if (opts.numericInput) {
2094                            isRTL = true;
2095                        }
2096                        var valueBuffer = ($.isFunction(opts.onBeforeMask) ? (opts.onBeforeMask.call($el, actionObj["value"], opts) || actionObj["value"]) : actionObj["value"]).split('');
2097                        checkVal($el, false, false, isRTL ? valueBuffer.reverse() : valueBuffer);
2098                        $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite.call(this, undefined, getBuffer(), 0, opts);
2099
2100                        if (actionObj["metadata"]) {
2101                            return {
2102                                value: isRTL ? getBuffer().slice().reverse().join('') : getBuffer().join(''),
2103                                metadata: $el.inputmask("getmetadata")
2104                            }
2105                        }
2106
2107                        return isRTL ? getBuffer().slice().reverse().join('') : getBuffer().join('');
2108                    case "isValid":
2109                        $el = $({});
2110                        $el.data('_inputmask', {
2111                            'maskset': maskset,
2112                            'opts': opts,
2113                            'isRTL': opts.numericInput
2114                        });
2115                        if (opts.numericInput) {
2116                            isRTL = true;
2117                        }
2118                        var valueBuffer = actionObj["value"].split('');
2119                        checkVal($el, false, true, isRTL ? valueBuffer.reverse() : valueBuffer);
2120                        var buffer = getBuffer();
2121                        var rl = determineLastRequiredPosition(), lmib = buffer.length - 1;
2122                        for (; lmib > rl; lmib--) {
2123                            if (isMask(lmib)) break;
2124                        }
2125                        buffer.splice(rl, lmib + 1 - rl);
2126
2127                        return isComplete(buffer) && actionObj["value"] == buffer.join('');
2128                    case "getemptymask":
2129                        $el = $(actionObj["el"]);
2130                        maskset = $el.data('_inputmask')['maskset'];
2131                        opts = $el.data('_inputmask')['opts'];
2132                        return getBufferTemplate();
2133                    case "remove":
2134                        var el = actionObj["el"];
2135                        $el = $(el);
2136                        maskset = $el.data('_inputmask')['maskset'];
2137                        opts = $el.data('_inputmask')['opts'];
2138                        //writeout the unmaskedvalue
2139                        el._valueSet(unmaskedvalue($el));
2140                        //unbind all events
2141                        $el.unbind(".inputmask");
2142                        //clear data
2143                        $el.removeData('_inputmask');
2144                        //restore the value property
2145                        var valueProperty;
2146                        if (Object.getOwnPropertyDescriptor)
2147                            valueProperty = Object.getOwnPropertyDescriptor(el, "value");
2148                        if (valueProperty && valueProperty.get) {
2149                            if (el._valueGet) {
2150                                Object.defineProperty(el, "value", {
2151                                    get: el._valueGet,
2152                                    set: el._valueSet
2153                                });
2154                            }
2155                        } else if (document.__lookupGetter__ && el.__lookupGetter__("value")) {
2156                            if (el._valueGet) {
2157                                el.__defineGetter__("value", el._valueGet);
2158                                el.__defineSetter__("value", el._valueSet);
2159                            }
2160                        }
2161                        try { //try catch needed for IE7 as it does not supports deleting fns
2162                            delete el._valueGet;
2163                            delete el._valueSet;
2164                        } catch (e) {
2165                            el._valueGet = undefined;
2166                            el._valueSet = undefined;
2167
2168                        }
2169                        break;
2170                    case "getmetadata":
2171                        $el = $(actionObj["el"]);
2172                        maskset = $el.data('_inputmask')['maskset'];
2173                        opts = $el.data('_inputmask')['opts'];
2174                        if ($.isArray(maskset["metadata"])) {
2175                            //find last alternation
2176                            var alternation, lvp = getLastValidPosition();
2177                            for (var firstAlt = lvp; firstAlt >= 0; firstAlt--) {
2178                                if (getMaskSet()["validPositions"][firstAlt] && getMaskSet()["validPositions"][firstAlt].alternation != undefined) {
2179                                    alternation = getMaskSet()["validPositions"][firstAlt].alternation;
2180                                    break;
2181                                }
2182                            }
2183                            if (alternation != undefined) {
2184                                return maskset["metadata"][getMaskSet()["validPositions"][lvp].locator[alternation]];
2185                            } else return maskset["metadata"][0];
2186                        }
2187
2188                        return maskset["metadata"];
2189                }
2190            }
2191        }
2192
2193        $.inputmask = {
2194            //options default
2195            defaults: {
2196                placeholder: "_",
2197                optionalmarker: { start: "[", end: "]" },
2198                quantifiermarker: { start: "{", end: "}" },
2199                groupmarker: { start: "(", end: ")" },
2200                alternatormarker: "|",
2201                escapeChar: "\\",
2202                mask: null,
2203                oncomplete: $.noop, //executes when the mask is complete
2204                onincomplete: $.noop, //executes when the mask is incomplete and focus is lost
2205                oncleared: $.noop, //executes when the mask is cleared
2206                repeat: 0, //repetitions of the mask: * ~ forever, otherwise specify an integer
2207                greedy: true, //true: allocated buffer for the mask and repetitions - false: allocate only if needed
2208                autoUnmask: false, //automatically unmask when retrieving the value with $.fn.val or value if the browser supports __lookupGetter__ or getOwnPropertyDescriptor
2209                removeMaskOnSubmit: false, //remove the mask before submitting the form.
2210                clearMaskOnLostFocus: true,
2211                insertMode: true, //insert the input or overwrite the input
2212                clearIncomplete: false, //clear the incomplete input on blur
2213                aliases: {}, //aliases definitions => see jquery.inputmask.extensions.js
2214                alias: null,
2215                onKeyDown: $.noop, //callback to implement autocomplete on certain keys for example. args => event, buffer, caretPos, opts
2216                onBeforeMask: undefined, //executes before masking the initial value to allow preprocessing of the initial value.  args => initialValue, opts => return processedValue
2217                onBeforePaste: undefined, //executes before masking the pasted value to allow preprocessing of the pasted value.  args => pastedValue, opts => return processedValue
2218                onBeforeWrite: undefined, //executes before writing to the masked element. args => event, opts
2219                onUnMask: undefined, //executes after unmasking to allow postprocessing of the unmaskedvalue.  args => maskedValue, unmaskedValue, opts
2220                showMaskOnFocus: true, //show the mask-placeholder when the input has focus
2221                showMaskOnHover: true, //show the mask-placeholder when hovering the empty input
2222                onKeyValidation: $.noop, //executes on every key-press with the result of isValid. Params: result, opts
2223                skipOptionalPartCharacter: " ", //a character which can be used to skip an optional part of a mask
2224                showTooltip: false, //show the activemask as tooltip
2225                numericInput: false, //numericInput input direction style (input shifts to the left while holding the caret position)
2226                rightAlign: false, //align to the right
2227                undoOnEscape: true, //pressing escape reverts the value to the value before focus
2228                //numeric basic properties
2229                radixPoint: "", //".", // | ","
2230                radixFocus: false, //position caret to radixpoint on initial click
2231                //numeric basic properties
2232                nojumps: false, //do not jump over fixed parts in the mask
2233                nojumpsThreshold: 0, //start nojumps as of
2234                keepStatic: undefined, //try to keep the mask static while typing. Decisions to alter the mask will be posponed if possible - undefined see auto selection for multi masks
2235                definitions: {
2236                    '9': {
2237                        validator: "[0-9]",
2238                        cardinality: 1,
2239                        definitionSymbol: "*"
2240                    },
2241                    'a': {
2242                        validator: "[A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
2243                        cardinality: 1,
2244                        definitionSymbol: "*"
2245                    },
2246                    '*': {
2247                        validator: "[0-9A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
2248                        cardinality: 1
2249                    }
2250                },
2251                //specify keyCodes which should not be considered in the keypress event, otherwise the preventDefault will stop their default behavior especially in FF
2252                ignorables: [8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123],
2253                isComplete: undefined, //override for isComplete - args => buffer, opts - return true || false
2254                canClearPosition: $.noop, //hook to alter the clear behavior in the stripValidPositions args => maskset, position, lastValidPosition, opts => return true|false
2255                postValidation: undefined //hook to postValidate the result from isValid.  Usefull for validating the entry as a whole.  args => buffer, opts => return true/false
2256            },
2257            keyCode: {
2258                ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108,
2259                NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91
2260            },
2261            masksCache: {},
2262            escapeRegex: function (str) {
2263                var specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^'];
2264                return str.replace(new RegExp('(\\' + specials.join('|\\') + ')', 'gim'), '\\$1');
2265            },
2266            format: function (value, options, metadata) {
2267                var opts = $.extend(true, {}, $.inputmask.defaults, options);
2268                resolveAlias(opts.alias, options, opts);
2269                return maskScope({ "action": "format", "value": value, "metadata": metadata }, generateMaskSet(opts, options && options.definitions !== undefined), opts);
2270            },
2271            isValid: function (value, options) {
2272                var opts = $.extend(true, {}, $.inputmask.defaults, options);
2273                resolveAlias(opts.alias, options, opts);
2274                return maskScope({ "action": "isValid", "value": value }, generateMaskSet(opts, options && options.definitions !== undefined), opts);
2275            }
2276        };
2277
2278        $.fn.inputmask = function (fn, options) {
2279            function importAttributeOptions(npt, opts, importedOptionsContainer) {
2280                var $npt = $(npt);
2281                if ($npt.data("inputmask-alias")) {
2282                    resolveAlias($npt.data("inputmask-alias"), $.extend(true, {}, opts), opts);
2283                }
2284                for (var option in opts) {
2285                    var optionData = $npt.data("inputmask-" + option.toLowerCase());
2286                    if (optionData != undefined) {
2287                        if (option == "mask" && optionData.indexOf("[") == 0) {
2288                            opts[option] = optionData.replace(/[\s[\]]/g, "").split("','");
2289                            opts[option][0] = opts[option][0].replace("'", "");
2290                            opts[option][opts[option].length - 1] = opts[option][opts[option].length - 1].replace("'", "");
2291                        } else
2292                            opts[option] = typeof optionData == "boolean" ? optionData : optionData.toString();
2293                        if (importedOptionsContainer)
2294                            importedOptionsContainer[option] = opts[option];
2295                    }
2296                }
2297                return opts;
2298            }
2299            var opts = $.extend(true, {}, $.inputmask.defaults, options),
2300                maskset;
2301
2302            if (typeof fn === "string") {
2303                switch (fn) {
2304                    case "mask":
2305                        resolveAlias(opts.alias, options, opts);
2306                        return this.each(function () {
2307                            importAttributeOptions(this, opts)
2308                            maskset = generateMaskSet(opts, options && options.definitions !== undefined);
2309                            if (maskset == undefined) { return this; }
2310                            maskScope({ "action": "mask", "el": this }, maskset, opts);
2311                        });
2312                    case "unmaskedvalue":
2313                        var $input = $(this);
2314                        if ($input.data("_inputmask")) {
2315                            return maskScope({ "action": "unmaskedvalue", "$input": $input });
2316                        } else return $input.val();
2317                    case "remove":
2318                        return this.each(function () {
2319                            var $input = $(this);
2320                            if ($input.data("_inputmask")) {
2321                                maskScope({ "action": "remove", "el": this });
2322                            }
2323                        });
2324                    case "getemptymask": //return the default (empty) mask value, usefull for setting the default value in validation
2325                        if (this.data("_inputmask")) {
2326                            return maskScope({ "action": "getemptymask", "el": this });
2327                        }
2328                        else return "";
2329                    case "hasMaskedValue": //check wheter the returned value is masked or not;
2329 currently only works reliable when using jquery.val fn to retrieve the value 
2330                        return this.data("_inputmask") ? !this.data("_inputmask")['opts'].autoUnmask : false;
2331                    case "isComplete":
2332                        if (this.data("_inputmask")) {
2333                            return maskScope({ "action": "isComplete", "buffer": this[0]._valueGet().split(''), "el": this });
2334                        } else return true;
2335                    case "getmetadata": //return mask metadata if exists
2336                        if (this.data("_inputmask")) {
2337                            return maskScope({ "action": "getmetadata", "el": this });
2338                        }
2339                        else return undefined;
2340                    default:
2341                        resolveAlias(opts.alias, options, opts);
2342                        //check if the fn is an alias
2343                        if (!resolveAlias(fn, options, opts)) {
2344                            //maybe fn is a mask so we try
2345                            //set mask
2346                            opts.mask = fn;
2347                        }
2348
2349                        return this.each(function () {
2350                            importAttributeOptions(this, opts);
2351                            maskset = generateMaskSet(opts, options && options.definitions !== undefined);
2352                            if (maskset == undefined) { return this; }
2353                            maskScope({ "action": "mask", "el": this }, maskset, opts);
2354                        });
2355                }
2356            } else if (typeof fn == "object") {
2357                opts = $.extend(true, {}, $.inputmask.defaults, fn);
2358                resolveAlias(opts.alias, fn, opts); //resolve aliases
2359                return this.each(function () {
2360                    importAttributeOptions(this, opts);
2361                    maskset = generateMaskSet(opts, fn && fn.definitions !== undefined);
2362                    if (maskset == undefined) { return this; }
2363                    maskScope({ "action": "mask", "el": this }, maskset, opts);
2364                });
2365            } else if (fn == undefined) {
2366                //look for data-inputmask atribute - the attribute should only contain optipns
2367                return this.each(function () {
2368                    var attrOptions = $(this).attr("data-inputmask");
2369                    if (attrOptions && attrOptions != "") {
2370                        try {
2371                            attrOptions = attrOptions.replace(new RegExp("'", "g"), '"');
2372                            var dataoptions = $.parseJSON("{" + attrOptions + "}");
2373                            $.extend(true, dataoptions, options);
2374                            opts = $.extend(true, {}, $.inputmask.defaults, dataoptions);
2375                            opts = importAttributeOptions(this, opts);
2376                            resolveAlias(opts.alias, dataoptions, opts);
2377                            opts.alias = undefined;
2378                            $(this).inputmask("mask", opts);
2379                        } catch (ex) { } //need a more relax parseJSON
2380                    }
2381                    if ($(this).attr("data-inputmask-mask") || $(this).attr("data-inputmask-alias")) {
2382                        opts = $.extend(true, {}, $.inputmask.defaults, {});
2383                        var dataOptions = {};
2384                        opts = importAttributeOptions(this, opts, dataOptions);
2385                        resolveAlias(opts.alias, dataOptions, opts);
2386                        opts.alias = undefined;
2387                        $(this).inputmask("mask", opts);
2388                    }
2389                });
2390            }
2391        };
2392    }
2393    return $.fn.inputmask;
2394})(jQuery);
2395$(document).ready(function() {
2396	$('a[href^="http://"]').attr({target:"_blank",title:"Opens in a new window"});
2397	$('#custom-region-toggle').click(function() {
2398		$('#custom-regions-list').show();
2399	});
2400	$('.datepicker').datepicker({dateFormat: "m/d/y"});
2401
2402	// Member selection
2403	$("#form-recipientcid").change(function(){
2404		var cid=document.getElementById('form-recipientcid').value;
2405		if (document.getElementById('form-currentcid')) {
2406			var currentcid=document.getElementById('form-currentcid').value;
2407		}
2408		var recipientid=document.getElementById('form-savedrecipientid').value;
2409		$("#form-ccrecipientid").html("");
2410		$.get("includes/chaptermembers.php", {cid:cid, currentcid:currentcid, recipientid:recipientid}, function(data){
2411			$("#form-ccrecipientid").html(data);
2412		});
2413	});
2414
2415
2416	// select year for referrals submitted on chapter-referrals-submitted.php
2417	$("#year_referrals_submitted_form #form-referralyear").change(function() {
2418
2419		  console.log("change");
2420
2421		  $("#year_referrals_submitted_form").submit(); // submit form
2422
2423	});
2424
2425
2426	// non-member popup
2427	$("#non-member-note").click(function(){
2428	     alert_name = "A Note About Non-Members";
2429	     msg = 'With this online system, Non-Members cannot neither give nor receive referrals. If a Non-Member is responsible for a referral (whether given or received), either wait until they become a member to process the referral (potentially in a subsequent month) or attribute the referrals (whether given or received) to the member responsible for them being at the Chapter.';
2430
2431	     $('#alert_name').html(alert_name);
2432	     $('#popup').css({
2433		   'top':'150px',
2434		   'width':'600px'
2435	     });
2436
2437	     showPopup(msg);
2438
2439
2440	});
2441
2442
2443
2444	// show non-member info -- referral input
2445	$('form-giverid').change(function() {
2446
2447		if (document.getElementById('form-giverid').value=="Non-Member") {
2448
2449			document.getElementById('form-guestgiver').style.display='block';
2450			//document.getElementById('form-guestgiver').style.height='90px';
2451			$("#row-1 > div").css("height","90px");
2452
2453		} else {
2454			document.getElementById('form-guestgiver').style.display='none';
2455			document.getElementById('form-givername').value='';
2456		}
2457
2458	});
2459
2460
2461
2462	// new member bonus referrals -- newmember-edit.php
2463	$("#form-newmembercid").change(function(){
2464	    var cid=document.getElementById('form-newmembercid').value;
2465		  if (document.getElementById('form-currentcid')) {
2466		    var currentcid=document.getElementById('form-currentcid').value;
2467	    }
2468	    var recipientid=document.getElementById('form-savedrecipientid').value;
2469	    $("#form-newmembername").html("");
2470	    $.get("includes/chaptermembers.php", {cid:cid, currentcid:currentcid, recipientid:recipientid}, function(data){
2471		    $("#form-newmembername").html(data);
2472	    });
2473	});
2474
2475	$("#form-referringmembercid").change(function(){
2476	    var cid=document.getElementById('form-referringmembercid').value;
2477		  if (document.getElementById('form-currentcid')) {
2478		    var currentcid=document.getElementById('form-currentcid').value;
2479	    }
2480	    var recipientid=document.getElementById('form-savedrecipientid').value;
2481	    $("#form-referringmembername").html("");
2482	    $.get("includes/chaptermembers.php", {cid:cid, currentcid:currentcid, recipientid:recipientid}, function(data){
2483		    $("#form-referringmembername").html(data);
2484	    });
2485	});
2486	
2487	$("#form-referringmembername").change(function(){
2488	    var mid=document.getElementById('form-referringmembername').value;
2489	    $("#form-referringmembercid").html("");
2490	    $.get("includes/chapterlist.php", {mid:mid}, function(data){
2491		    $("#form-referringmembercid").html(data);
2492	    });
2493	});
2494
2495	// franchise video swap
2496	var path1 = "http://www.youtube.com/embed/H-r5V1LULWQ";
2497	var path2 = "http://www.youtube.com/embed/anzt_g26M6Q";
2498	var path3 = "http://www.youtube.com/embed/ISBvZ4XilFA";
2499
2500	$('#custom-img-franchise-1').click(function() {
2501		$(this).css('display', 'none');
2502		$('#custom-img-franchise-2').css({'display':'block','margin-top':'0px'});
2503		$('#custom-img-franchise-3').css({'display':'block','margin-top':'15px'});
2504
2505		$('#custom-video-franchise-1').show();
2506		$('#custom-video-franchise-2').hide();
2507		$('#custom-video-franchise-3').hide();
2508
2509		$('#custom-video-franchise-1').attr('src', path1+'?autoplay=1');
2510		$('#custom-video-franchise-2').attr('src', path2);
2511		$('#custom-video-franchise-3').attr('src', path3);
2512	});
2513	$('#custom-img-franchise-2').click(function() {
2514		$(this).css('display', 'none');
2515		$('#custom-img-franchise-1').css({'display':'block','margin-top':'0px'});
2516		$('#custom-img-franchise-3').css({'display':'block','margin-top':'15px'});
2517
2518		$('#custom-video-franchise-1').hide();
2519		$('#custom-video-franchise-2').show();
2520		$('#custom-video-franchise-3').hide();
2521
2522		$('#custom-video-franchise-1').attr('src', path1);
2523		$('#custom-video-franchise-2').attr('src', path2+'?autoplay=1');
2524		$('#custom-video-franchise-3').attr('src', path3);
2525	});
2526	$('#custom-img-franchise-3').click(function() {
2527		$(this).css('display', 'none');
2528		$('#custom-img-franchise-1').css({'display':'block','margin-top':'0px'});
2529		$('#custom-img-franchise-2').css({'display':'block','margin-top':'15px'});
2530
2531		$('#custom-video-franchise-1').hide();
2532		$('#custom-video-franchise-2').hide();
2533		$('#custom-video-franchise-3').show();
2534
2535		$('#custom-video-franchise-1').attr('src', path1);
2536		$('#custom-video-franchise-2').attr('src', path2);
2537		$('#custom-video-franchise-3').attr('src', path3+'?autoplay=1');
2538	});
2539
2540	// franchise show Pre-Qualifying Application
2541	$('.custom-preq-link').click(function() {
2542		if ($('#custom-preq-app').css('display') == 'none') {
2543			$('#custom-preq-app').show();
2544			//return false;
2545		} else {
2546			$('#custom-preq-app').hide();
2547			return false;
2548		}
2549	});
2550
2551
2552
2553
2554
2555        // admin-users-edit.php -- if user is a director, show dropdown menu of members
2556        $("#form-usertypeid").change(function() {
2557            var usertypeid=document.getElementById('form-usertypeid').value;
2558
2559            if (usertypeid > 2) {
2560                $("#form-memberid").css("display","block");
2561                $("label[for='form-memberid']").css("display","block");
2562
2563                $(".adminusers-firstname").css("display","none");
2564                $(".adminusers-lastname").css("display","none");
2565                $("label[for='form-firstname']").css("display","none");
2566                $("label[for='form-lastname']").css("display","none");
2567                $("#adminusers-memberemail").css("display","none");
2568                $(".adminusers-inputemail").css("display","none");
2569                $("label[for='email']").css("display","none");
2570
2571                // reset memberid dropdown
2572                $('#form-memberid option:selected').removeAttr('selected');
2573
2574		    $("#form-director-email").css("display","block");
2575
2576            } else {
2577                $("#form-memberid").css("display","none");
2578                $("label[for='form-memberid']").css("display","none");
2579                $("#adminusers-memberemail").css("display","none");
2580
2581                // show text inputs for first, last name and email if user is an administrator
2582                $(".adminusers-firstname").css("display","block");
2583                $(".adminusers-lastname").css("display","block");
2584                $("label[for='form-firstname']").css("display","block");
2585                $("label[for='form-lastname']").css("display","block");
2586                $(".adminusers-inputemail").css("display","block");
2587                $("label[for='email']").css("display","block");
2588
2589		    $("#form-director-email").css("display","none");
2590            }
2591
2592        });
2593
2594        // admin-users-edit.php -- get member's email
2595        $("#form-memberid").change(function() {
2596
2597             var id=document.getElementById('form-memberid').value;
2598
2599            $.get("includes/memberemail.php", {id:id}, function(data){
2600                    $("#adminusers-memberemail").css("display","block");
2601                    $("#adminusers-memberemail").html(data);
2602            });
2603
2604        });
2605});
2606
2607function addRecipientDetails() {
2608	document.getElementById('form-recipienttype-2').style.display='none';
2609	document.getElementById('form-recipienttype-3').style.display='none';
2610	document.getElementById('form-recipienttype-3b').style.display='none';
2611	document.getElementById('form-recipienttype-3b1').style.display='none';
2612	document.getElementById('form-guestname').style.display='none';
2613	document.getElementById('form-referraltypeid').disabled=false;
2614	$("option[value='3']").removeAttr("disabled");
2615	$("option[value='4']").removeAttr("disabled");
2616	if (document.getElementById('form-recipientid').value=='Non-Member') {
2617		document.getElementById('form-recipienttype-2').style.display='block';
2618		document.getElementById('form-recipientcid').value='';
2619		document.getElementById('form-ccrecipientid').value='';
2620		document.getElementById('form-ccrecipientname').value='';
2621		document.getElementById('form-guesttype').value='';
2622		document.getElementById('form-personreferred').value='';
2623		if (document.getElementById('form-referraltypeid').value=='3' || document.getElementById('form-referraltypeid').value=='4') {
2624			document.getElementById('form-referraltypeid').value='';
2625		}
2626		$("option[value='3']").attr("disabled", "disabled");
2627		$("option[value='4']").attr("disabled", "disabled");
2628	} else if (document.getElementById('form-recipientid').value=='Member of Other Chapter') {
2629		document.getElementById('form-recipienttype-3').style.display='block';
2630		document.getElementById('form-recipienttype-3b').style.display='block';
2631		if (document.getElementById('form-recipientname')) {
2632			document.getElementById('form-recipientname').value='';
2633		}
2634		document.getElementById('form-guesttype').value='';
2635		document.getElementById('form-personreferred').value='';
2636		document.getElementById('form-referraltypeid').value='3';
2637		document.getElementById('form-referraltypeid').disabled=true;
2638	} else if (document.getElementById('form-recipientid').value=='AmSpirit Business Connections') {
2639		document.getElementById('form-guestname').style.display='block';
2640		if (document.getElementById('form-recipientname')) {
2641			document.getElementById('form-recipientname').value='';
2642		}
2643		document.getElementById('form-recipientcid').value='';
2644		document.getElementById('form-ccrecipientid').value='';
2645		document.getElementById('form-ccrecipientname').value='';
2646		document.getElementById('form-referraltypeid').value='4';
2647		document.getElementById('form-referraltypeid').disabled=true;
2648	} else if (document.getElementById('form-recipientid').value>0) {
2649		if (document.getElementById('form-recipientname')) {
2650			document.getElementById('form-recipientname').value='';
2651		}
2652		document.getElementById('form-recipientcid').value='';
2653		document.getElementById('form-ccrecipientid').value='';
2654		document.getElementById('form-ccrecipientname').value='';
2655		document.getElementById('form-guesttype').value='';
2656		document.getElementById('form-personreferred').value='';
2657		if (document.getElementById('form-referraltypeid').value=='3' || document.getElementById('form-referraltypeid').value=='4') {
2658			document.getElementById('form-referraltypeid').value='';
2659		}
2660		$("option[value='3']").attr("disabled", "disabled");
2661		$("option[value='4']").attr("disabled", "disabled");
2662	}
2663
2664
2665}
2666
2667function adjustReferralType() {
2668	if (document.getElementById('form-recipientid').value=='AmSpirit Business Connections') {
2669		if (document.getElementById('form-guesttype').value=='Guest Referred to Another Chapter') {
2670			document.getElementById('form-referraltypeid').value='3';
2671		} else {
2672			document.getElementById('form-referraltypeid').value='4';
2673		};
2674	}
2675}
2676
2677function confirmCheckbox(theId) {
2678    var isChecked = document.getElementById(theId).checked;
2679    var confirmAlert = confirm("Are you sure?");
2680    if (confirmAlert == true) {
2681        if (isChecked) {
2682            document.getElementById(theId).checked = true;
2683        } else {
2684            document.getElementById(theId).checked = false;
2685        }
2686    } else {
2687        document.getElementById(theId).checked = !isChecked;
2688    };
2689}
2690
2691function confirmLink(theLink, actionItem) {
2692	var is_confirmed=confirm(actionItem);
2693	return is_confirmed;
2694}
2695
2696function confirmDelete(recordName) {
2697	var is_confirmed=confirm('Are you sure you want to delete this ' + recordName + '?');
2698	return is_confirmed;
2699}
2700
2701function enableReferralType() {
2702	document.getElementById('form-referraltypeid').disabled=false;
2703}
2704
2705function openSearch() {
2706	if (document.getElementById('admin-search').style.display=='none' || document.getElementById('admin-search').style.display=='') {
2707		document.getElementById('admin-search').style.display='block';
2708		document.getElementById('admin-search-toggle').innerHTML='Hide Search';
2709	} else {
2710		document.getElementById('admin-search').style.display='none';
2711		document.getElementById('admin-search-toggle').innerHTML='Search';
2712	}
2713}
2714
2715// New Referral Ticket functions
2716
2717function toggleRecipientChapter() {
2718	if (document.getElementById('form_outbound').value=="2") {
2719		document.getElementById('form-recipienttype-3b1').style.display='block';
2720	} else {
2721		document.getElementById('form-recipienttype-3b1').style.display='none';
2722	}
2723}
2724
2725function toggleNewRecipientName() {
2726    if (document.getElementById('form-recipientid').value=='Non-Member' || document.getElementById('form-ccrecipientid').value=='Non-Member') {
2727            document.getElementById('form-recipienttype-3b1').style.display='block';
2728
2729    }
2730}
2731
2732
2733
2734/*function toggleCCRecipient() {
2735	if (document.getElementById('form-ccrecipientid').value=="Non-Member") {
2736		document.getElementById('form-recipienttype-3').style.display='block';
2737	} else {
2738		document.getElementById('form-recipienttype-3').style.display='none';
2739	}
2740}*/
2741
2742function toggleGiver() {
2743	if (document.getElementById('form-giverid').value=="Non-Member") {
2744		document.getElementById('form-guestgiver').style.display='block';
2745	} else {
2746		document.getElementById('form-guestgiver').style.display='none';
2747		document.getElementById('form-givername').value='';
2748	}
2749}
2750
2751function togglePaymentFields() {
2752	if (document.getElementById('form-billingmethod').value=="Auto Pay") {
2753		if (document.getElementById('form-nextinvoicedate').value=="") {
2754			document.getElementById('invoice-fields').style.display='none';
2755		}
2756		document.getElementById('autopay-fields').style.display='block';
2757	} else if (document.getElementById('form-billingmethod').value=="Invoice") {
2758		if (document.getElementById('form-nextchargedate').value=="" && document.getElementById('form-lastfour').value=="" && document.getElementById('form-expiration').value=="") {
2759			document.getElementById('autopay-fields').style.display='none';
2760		}
2761		document.getElementById('invoice-fields').style.display='block';
2762	} else {
2763		if (document.getElementById('form-nextinvoicedate').value=="") {
2764			document.getElementById('invoice-fields').style.display='none';
2765		}
2766		if (document.getElementById('form-nextchargedate').value=="" && document.getElementById('form-lastfour').value=="" && document.getElementById('form-expiration').value=="") {
2767			document.getElementById('autopay-fields').style.display='none';
2768		}
2769	}
2770}
2771
2772function newTicketToggleGiver() {
2773	if (document.getElementById('form-giverid').value=="Non-Member") {
2774		document.getElementById('form-guestgiver').style.display='block';
2775                //document.getElementById('form-guestgiver').style.height='90px';
2776                $("#row-1 > div").css("height","90px");
2777	} else {
2778		document.getElementById('form-guestgiver').style.display='none';
2779		document.getElementById('form-givername').value='';
2780	}
2781}
2782
2783function newTicketDisplayQualifiedReferral() {
2784	$("#display-qualified-referral").show(); // show area with qualified referral form inputs
2785	$("#display-guest-referral").hide(); // hide area with guest referral form inputs
2786	$("#type-qualified-referral").css({"color":"#cc0000","font-weight":"bold"}); // change style of selected button
2787	$("#type-guest-referral").css({"color":"#000000","font-weight":"normal"}); // revert style of nonselected button
2788	$("#display-placeholder").hide(); // hide placeholder message
2789
2790        // reset qualified referral form data
2791        $('#form_referraltypeid_1').attr('checked', false);
2792        $('#form_referraltypeid_2').attr('checked', false);
2793        $('#form_inbound').attr('checked', false);
2794        $('#form_outbound').attr('checked', false);
2795        $('#form-recipientcid option:selected').prop('selected', false);
2796        $('#form-recipientid option:selected').prop('selected', false);
2797        $('#form-ccrecipientid option:selected').prop('selected', false);
2798        $('#form-recipienttype-3').hide();
2799        $('#form-recipientid').hide();
2800        $('#form-ccrecipientid').hide();
2801        $('#receivingmember p').show();
2802        $("#form-recipientid-allmembers").show(); // show all members dropdown
2803        $('#form-recipientid-allmembers option:selected').prop('selected', false);
2804        $("#form-recipientname").val("");
2805        $("#form-recipienttype-3b1").hide();
2806
2807        // reset Chapter Guest form data
2808        $('#form_inbound_guest').attr('checked', false);
2809        $('#form_outbound_guest').attr('checked', false);
2810        $('#form-chapter-guest-select option:selected').prop('selected', false);
2811        $("#form_guest_name").val("");
2812        $("#form_guest_email").val("");
2813}
2814
2815function newTicketDisplayGuestReferral() {
2816	$("#display-qualified-referral").hide(); // hide area with qualified referral form inputs
2817	$("#display-guest-referral").show(); // show area with guest referral form inputs
2818	$("#type-guest-referral").css({"color":"#cc0000","font-weight":"bold"}); // change style of selected button
2819	$("#type-qualified-referral").css({"color":"#000000","font-weight":"normal"}); // revert style of nonselected button
2820	$("#display-placeholder").hide(); // hide placeholder message
2821
2822        // reset Chapter Guest form data
2823        $('#form_inbound_guest').attr('checked', false);
2824        $('#form_outbound_guest').attr('checked', false);
2825        $('#form-chapter-guest-select option:selected').prop('selected', false);
2826        $("#form_guest_name").val("");
2827        $("#form_guest_email").val("");
2828
2829        // reset qualified referral form data
2830        $('#form_referraltypeid_1').attr('checked', false);
2831        $('#form_referraltypeid_2').attr('checked', false);
2832        $('#form_inbound').attr('checked', false);
2833        $('#form_outbound').attr('checked', false);
2834        $('#form-recipientcid option:selected').prop('selected', false);
2835        $('#form-recipientid option:selected').prop('selected', false);
2836        $('#form-ccrecipientid option:selected').prop('selected', false);
2837        $('#form-recipienttype-3').hide();
2838        $('#form-recipientid').hide();
2839        $('#form-ccrecipientid').hide();
2840        $('#receivingmember p').show();
2841}
2842
2843
2844
2845function toggleMembers() {
2846	if (document.getElementById('form-recipientcid').value>0) {
2847		document.getElementById('form-recipienttype-3b').style.display='block';
2848	} else {
2849		document.getElementById('form-recipienttype-3b').style.display='none';
2850	}
2851}
2852
2853function newTicketShowCrossChaptersGuest() {
2854    $("#form-chapter-guest").show();
2855}
2856
2857function newTicketShowHomeMembersGuest() {
2858    $("#form-chapter-guest").hide();
2859}
2860
2861function newTicketShowHomeMembers() {
2862    $("#receivingmember p").hide(); // hide message
2863    $("#form-recipientid-allmembers").hide(); // hide all members dropdown
2864    $("#form-recipientid").show(); // show home Chapter members
2865    $('#form-recipientid option:selected').prop('selected', false); // clear out data
2866    $("#form-ccrecipientid").hide(); // hide cross Chapter members
2867    $("#form-recipienttype-3").hide(); // hide cross Chapter choice
2868    $("#form-ccrecipientid").hide(); // hide cross Chapter members
2869    $("#form-recipientname").val("");
2870    $('#form-recipientid-allmembers option:selected').prop('selected', false); // clear out data
2871    $("#form-recipienttype-3b1").hide();
2872
2873}
2874
2875function newTicketShowCrossChapters() {
2876    $("#receivingmember p").show(); // show message
2877    $("#form-recipientid").hide(); // hide home Chapter members
2878    $("#form-recipienttype-3").show(); // show Chapter choice
2879    $('#form-recipienttype-3 option:selected').prop('selected', false); // clear out data
2880    $("#form-recipientid-allmembers").show(); // all members dropdown
2881    $('#form-recipientid-allmembers option:selected').prop('selected', false); // clear out data
2882    $('#form-ccrecipientid').hide();
2883    $("#form-recipientname").val("");
2884    $("#form-recipienttype-3b1").hide();
2885
2886}
2887
2888function newTicketShowCrossChapterMembers() {
2889    $("#receivingmember p").hide(); // hide message
2890    $("#form-ccrecipientid").show(); // show cross Chapter members
2891    $("#form-recipientid-allmembers").hide(); // hide all members dropdown
2892
2893}
2894
2895function newTicketMemberSelectedUpdateChapter(homeChapter) {
2896	// find the member's chapter
2897	var memberinfo = $("#form-recipientid-allmembers option:selected").val(); // get member data
2898	var memberinfoarray = memberinfo.split('['); // separate member data
2899	var memberid = memberinfoarray[0]; // member's ID
2900	var membercid = memberinfoarray[1].slice(0,-1); // member's chapter
2901
2902
2903	// change the "within Home chapter" or "cross chapter" selection
2904	if (homeChapter == membercid) {
2905		$("#form_inbound").prop("checked", true);
2906
2907	} else {
2908		$("#form_outbound").prop("checked", true);
2909
2910                // show cross chapters dropdown
2911                $("#form-recipientid").hide(); // hide home Chapter members
2912                $("#form-recipienttype-3").show(); // show Chapter choice
2913
2914		$("#form-recipientcid option[value="+membercid+"]").prop('selected', true); // select correct cross Chapter
2915	}
2916}
2917
2918function toggleRecipient() {
2919	document.getElementById('form-recipienttype-1').style.display='none';
2920	document.getElementById('form-recipienttype-2').style.display='none';
2921	document.getElementById('form-recipienttype-3').style.display='none';
2922	document.getElementById('form-recipienttype-3b').style.display='none';
2923	document.getElementById('form-recipienttype-3b1').style.display='none';
2924	document.getElementById('form-guestname').style.display='none';
2925	document.getElementById('form-referraltypeid').value='';
2926	document.getElementById('form-referraltypeid').disabled=false;
2927	if (document.getElementById('form-recipienttype').value==1) {
2928		document.getElementById('form-recipienttype-1').style.display='block';
2929		if (document.getElementById('form-recipientname')) {
2930			document.getElementById('form-recipientname').value='';
2931		}
2932		document.getElementById('form-recipientcid').value='';
2933		document.getElementById('form-ccrecipientid').value='';
2934		document.getElementById('form-ccrecipientname').value='';
2935		document.getElementById('form-guesttype').value='';
2936		document.getElementById('form-personreferred').value='';
2937	} else if (document.getElementById('form-recipienttype').value==2) {
2938		document.getElementById('form-recipienttype-2').style.display='block';
2939		document.getElementById('form-recipientid').value='';
2940		document.getElementById('form-recipientcid').value='';
2941		document.getElementById('form-ccrecipientid').value='';
2942		document.getElementById('form-ccrecipientname').value='';
2943		document.getElementById('form-guesttype').value='';
2944		document.getElementById('form-personreferred').value='';
2945	} else if (document.getElementById('form-recipienttype').value==3) {
2946		document.getElementById('form-recipienttype-3').style.display='block';
2947		document.getElementById('form-recipientid').value='';
2948		if (document.getElementById('form-recipientname')) {
2949			document.getElementById('form-recipientname').value='';
2950		}
2951		document.getElementById('form-guesttype').value='';
2952		document.getElementById('form-personreferred').value='';
2953		document.getElementById('form-referraltypeid').value='3';
2954		document.getElementById('form-referraltypeid').disabled=true;
2955	} else if (document.getElementById('form-recipienttype').value==4) {
2956		document.getElementById('form-guestname').style.display='block';
2957		document.getElementById('form-recipientid').value='';
2958		if (document.getElementById('form-recipientname')) {
2959			document.getElementById('form-recipientname').value='';
2960		}
2961		document.getElementById('form-recipientcid').value='';
2962		document.getElementById('form-ccrecipientid').value='';
2963		document.getElementById('form-ccrecipientname').value='';
2964		document.getElementById('form-referraltypeid').value='4';
2965		document.getElementById('form-referraltypeid').disabled=true;
2966	}
2967}
2968
2969function toggleRecipientType() {
2970	if ((document.getElementById('form-referraltypeid').value=='1' || document.getElementById('form-referraltypeid').value=='2') && (document.getElementById('form-recipienttype').value=='3' || document.getElementById('form-recipienttype').value=='4')) {
2971		document.getElementById('form-guestname').style.display='none';
2972		document.getElementById('form-recipienttype').value='';
2973		document.getElementById('form-guesttype').value='';
2974		document.getElementById('form-personreferred').value='';
2975	} else if (document.getElementById('form-referraltypeid').value=='3' || document.getElementById('form-referraltypeid').value=='4') {
2976		document.getElementById('form-recipienttype-1').style.display='none';
2977		document.getElementById('form-recipienttype-2').style.display='none';
2978		document.getElementById('form-guestname').style.display='none';
2979		document.getElementById('form-recipientid').value='';
2980		if (document.getElementById('form-recipientname')) {
2981			document.getElementById('form-recipientname').value='';
2982		}
2983		document.getElementById('form-guesttype').value='';
2984		document.getElementById('form-personreferred').value='';
2985		if (document.getElementById('form-referraltypeid').value=='3') {
2986			document.getElementById('form-recipienttype').value=3;
2987		} else if (document.getElementById('form-referraltypeid').value=='4') {
2988			document.getElementById('form-recipienttype-3b').style.display='none';
2989			document.getElementById('form-recipienttype-3b1').style.display='none';
2990			document.getElementById('form-guestname').style.display='block';
2991			document.getElementById('form-recipientcid').value='';
2992			document.getElementById('form-ccrecipientid').value='';
2993			document.getElementById('form-ccrecipientname').value='';
2994			document.getElementById('form-recipienttype').value=4;
2995		}
2996	}
2997}
2998
2999function toggleReferralType() {
3000	if ((document.getElementById('form-referraltypeid').value=='1' || document.getElementById('form-referraltypeid').value=='2') && (document.getElementById('form-recipientid').value=='Member of Other Chapter' || document.getElementById('form-recipientid').value=='AmSpirit Business Connections')) {
3001		document.getElementById('form-recipienttype-3').style.display='none';
3002		document.getElementById('form-recipienttype-3b').style.display='none';
3003		document.getElementById('form-recipienttype-3b1').style.display='none';
3004		document.getElementById('form-guestname').style.display='none';
3005		document.getElementById('form-recipientid').value='';
3006		document.getElementById('form-recipientcid').value='';
3007		document.getElementById('form-ccrecipientid').value='';
3008		document.getElementById('form-ccrecipientname').value='';
3009		document.getElementById('form-guesttype').value='';
3010		document.getElementById('form-personreferred').value='';
3011	} else if (document.getElementById('form-referraltypeid').value=='3' || document.getElementById('form-referraltypeid').value=='4') {
3012		document.getElementById('form-recipienttype-2').style.display='none';
3013		document.getElementById('form-guestname').style.display='none';
3014		if (document.getElementById('form-recipientname')) {
3015			document.getElementById('form-recipientname').value='';
3016		}
3017		document.getElementById('form-guesttype').value='';
3018		document.getElementById('form-personreferred').value='';
3019		if (document.getElementById('form-referraltypeid').value=='3') {
3020			document.getElementById('form-recipienttype-3').style.display='block';
3021			document.getElementById('form-recipienttype-3b').style.display='block';
3022			document.getElementById('form-recipientid').value='Member of Other Chapter';
3023		} else if (document.getElementById('form-referraltypeid').value=='4') {
3024			document.getElementById('form-recipienttype-3').style.display='none';
3025			document.getElementById('form-recipienttype-3b').style.display='none';
3026			document.getElementById('form-recipienttype-3b1').style.display='none';
3027			document.getElementById('form-guestname').style.display='block';
3028			document.getElementById('form-recipientid').value='AmSpirit Business Connections';
3029			document.getElementById('form-recipientcid').value='';
3030			document.getElementById('form-ccrecipientid').value='';
3031			document.getElementById('form-ccrecipientname').value='';
3032		}
3033	}
3034}
3035
3036function toggleSecondary($ii) {
3037	var v=document.getElementById('form-primary').value;
3038	var s='form-secondary-'+v;
3039	var div='';
3040	for (var i=1; i<=$ii; i++) {
3041		div='form-secondary-'+i;
3042		document.getElementById(div).style.display='none';
3043		document.getElementById(div).disabled=true;
3044	}
3045	if (v>0) {
3046		document.getElementById('secondary-row').style.color='#363636';
3047	} else {
3048		document.getElementById('secondary-row').style.color='#ffffff';
3049	}
3050	document.getElementById(s).style.display='block';
3051	document.getElementById(s).disabled=false;
3052}
3053
3054function training() {
3055	if (document.getElementById('trainingtype').value=="Other") {
3056		document.getElementById('trainingtext').style.display='block';
3057	} else {
3058		document.getElementById('trainingtext').style.display='none';
3059	}
3060}
3061
3062function search(which,value) {
3063	location.href='directorcontacts-new.php?' + which + '=' + value;
3064}
3065
3066function submitMonthlyReferrals(){
3067    var decision = window.confirm("This will notify AmSpirit Business Connections HQ that you have entered all your Chapter referrals for the month and that they can now put together your Chapter's Performance Report.")
3068
3069    if (decision == true) {
3070        document.getElementByID("submit-monthly-referrals").submit();
3071    } else {
3072        return false;
3073    }
3074}
3075
3076function exitAddReferralPage(){
3077    var decision = window.confirm("Are you finished submitting the referrals for this month? If so, click 'OK' to notify AmSpirit HQ to produce your Chapter's Performance Report.")
3078
3079    if (decision == true) {
3080        document.getElementById("input_submitmonthlyreferrals").value = "monthly-true";
3081        return true;
3082    } else {
3083        document.getElementById("input_submitmonthlyreferrals").value = "monthly-false";
3084        return true;
3085    }
3086}
3087$(document).ready(function () {
3088    $('a[href^="http"]').not('a[href*=amspirit]').attr('target', '_blank');
3089});

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.