/* >>>>>>> plugins/jquery-2.2.2.min.js <<<<<<< */ /*! jQuery v2.2.2 | (c) jQuery Foundation | jquery.org/license */ !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.2",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c; }catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length",""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,la=/\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("' ).bind('load', function () { var fileInputClones, paramNames = $.isArray(options.paramName) ? options.paramName : [options.paramName]; iframe .unbind('load') .bind('load', function () { var response; // Wrap in a try/catch block to catch exceptions thrown // when trying to access cross-domain iframe contents: try { response = iframe.contents(); // Google Chrome and Firefox do not throw an // exception when calling iframe.contents() on // cross-domain requests, so we unify the response: if (!response.length || !response[0].firstChild) { throw new Error(); } } catch (e) { response = undefined; } // The complete callback returns the // iframe content document as response object: completeCallback( 200, 'success', {'iframe': response} ); // Fix for IE endless progress bar activity bug // (happens on form submits to iframe targets): $('') .appendTo(form); window.setTimeout(function () { // Removing the form in a setTimeout call // allows Chrome's developer tools to display // the response result form.remove(); }, 0); }); form .prop('target', iframe.prop('name')) .prop('action', options.url) .prop('method', options.type); if (options.formData) { $.each(options.formData, function (index, field) { $('') .prop('name', field.name) .val(field.value) .appendTo(form); }); } if (options.fileInput && options.fileInput.length && options.type === 'POST') { fileInputClones = options.fileInput.clone(); // Insert a clone for each file input field: options.fileInput.after(function (index) { return fileInputClones[index]; }); if (options.paramName) { options.fileInput.each(function (index) { $(this).prop( 'name', paramNames[index] || options.paramName ); }); } // Appending the file input fields to the hidden form // removes them from their original location: form .append(options.fileInput) .prop('enctype', 'multipart/form-data') // enctype must be set as encoding for IE: .prop('encoding', 'multipart/form-data'); // Remove the HTML5 form attribute from the input(s): options.fileInput.removeAttr('form'); } form.submit(); // Insert the file input fields at their original location // by replacing the clones with the originals: if (fileInputClones && fileInputClones.length) { options.fileInput.each(function (index, input) { var clone = $(fileInputClones[index]); // Restore the original name and form properties: $(input) .prop('name', clone.prop('name')) .attr('form', clone.attr('form')); clone.replaceWith(input); }); } }); form.append(iframe).appendTo(document.body); }, abort: function () { if (iframe) { // javascript:false as iframe src aborts the request // and prevents warning popups on HTTPS in IE6. // concat is used to avoid the "Script URL" JSLint error: iframe .unbind('load') .prop('src', initialIframeSrc); } if (form) { form.remove(); } } }; } }); // The iframe transport returns the iframe content document as response. // The following adds converters from iframe to text, json, html, xml // and script. // Please note that the Content-Type for JSON responses has to be text/plain // or text/html, if the browser doesn't include application/json in the // Accept header, else IE will show a download dialog. // The Content-Type for XML responses on the other hand has to be always // application/xml or text/xml, so IE properly parses the XML response. // See also // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation $.ajaxSetup({ converters: { 'iframe text': function (iframe) { return iframe && $(iframe[0].body).text(); }, 'iframe json': function (iframe) { return iframe && $.parseJSON($(iframe[0].body).text()); }, 'iframe html': function (iframe) { return iframe && $(iframe[0].body).html(); }, 'iframe xml': function (iframe) { var xmlDoc = iframe && iframe[0]; return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc : $.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) || $(xmlDoc.body).html()); }, 'iframe script': function (iframe) { return iframe && $.globalEval($(iframe[0].body).text()); } } }); })); /* >>>>>>> END plugins/fileupload/jquery.iframe-transport.js <<<<<<< */ /* >>>>>>> plugins/fileupload/jquery.fileupload.js <<<<<<< */ /* * jQuery File Upload Plugin 5.42.3 * https://github.com/blueimp/jQuery-File-Upload * * Copyright 2010, Sebastian Tschan * https://blueimp.net * * Licensed under the MIT license: * http://www.opensource.org/licenses/MIT */ /* jshint nomen:false */ /* global define, require, window, document, location, Blob, FormData */ (function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: define([ 'jquery', 'jquery.ui.widget' ], factory); } else if (typeof exports === 'object') { // Node/CommonJS: factory( require('jquery'), require('./vendor/jquery.ui.widget') ); } else { // Browser globals: factory(window.jQuery); } }(function ($) { 'use strict'; // Detect file input support, based on // http://viljamis.com/blog/2012/file-upload-support-on-mobile/ $.support.fileInput = !(new RegExp( // Handle devices which give false positives for the feature detection: '(Android (1\\.[0156]|2\\.[01]))' + '|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' + '|(w(eb)?OSBrowser)|(webOS)' + '|(Kindle/(1\\.0|2\\.[05]|3\\.0))' ).test(window.navigator.userAgent) || // Feature detection for all other devices: $('').prop('disabled')); // The FileReader API is not actually used, but works as feature detection, // as some Safari versions (5?) support XHR file uploads via the FormData API, // but not non-multipart XHR file uploads. // window.XMLHttpRequestUpload is not available on IE10, so we check for // window.ProgressEvent instead to detect XHR2 file upload capability: $.support.xhrFileUpload = !!(window.ProgressEvent && window.FileReader); $.support.xhrFormDataFileUpload = !!window.FormData; // Detect support for Blob slicing (required for chunked uploads): $.support.blobSlice = window.Blob && (Blob.prototype.slice || Blob.prototype.webkitSlice || Blob.prototype.mozSlice); // Helper function to create drag handlers for dragover/dragenter/dragleave: function getDragHandler(type) { var isDragOver = type === 'dragover'; return function (e) { e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; var dataTransfer = e.dataTransfer; if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1 && this._trigger( type, $.Event(type, {delegatedEvent: e}) ) !== false) { e.preventDefault(); if (isDragOver) { dataTransfer.dropEffect = 'copy'; } } }; } // The fileupload widget listens for change events on file input fields defined // via fileInput setting and paste or drop events of the given dropZone. // In addition to the default jQuery Widget methods, the fileupload widget // exposes the "add" and "send" methods, to add or directly send files using // the fileupload API. // By default, files added via file input selection, paste, drag & drop or // "add" method are uploaded immediately, but it is possible to override // the "add" callback option to queue file uploads. $.widget('blueimp.fileupload', { options: { // The drop target element(s), by the default the complete document. // Set to null to disable drag & drop support: dropZone: $(document), // The paste target element(s), by the default undefined. // Set to a DOM node or jQuery object to enable file pasting: pasteZone: undefined, // The file input field(s), that are listened to for change events. // If undefined, it is set to the file input fields inside // of the widget element on plugin initialization. // Set to null to disable the change listener. fileInput: undefined, // By default, the file input field is replaced with a clone after // each input field change event. This is required for iframe transport // queues and allows change events to be fired for the same file // selection, but can be disabled by setting the following option to false: replaceFileInput: true, // The parameter name for the file form data (the request argument name). // If undefined or empty, the name property of the file input field is // used, or "files[]" if the file input name property is also empty, // can be a string or an array of strings: paramName: undefined, // By default, each file of a selection is uploaded using an individual // request for XHR type uploads. Set to false to upload file // selections in one request each: singleFileUploads: true, // To limit the number of files uploaded with one XHR request, // set the following option to an integer greater than 0: limitMultiFileUploads: undefined, // The following option limits the number of files uploaded with one // XHR request to keep the request size under or equal to the defined // limit in bytes: limitMultiFileUploadSize: undefined, // Multipart file uploads add a number of bytes to each uploaded file, // therefore the following option adds an overhead for each file used // in the limitMultiFileUploadSize configuration: limitMultiFileUploadSizeOverhead: 512, // Set the following option to true to issue all file upload requests // in a sequential order: sequentialUploads: false, // To limit the number of concurrent uploads, // set the following option to an integer greater than 0: limitConcurrentUploads: undefined, // Set the following option to true to force iframe transport uploads: forceIframeTransport: false, // Set the following option to the location of a redirect url on the // origin server, for cross-domain iframe transport uploads: redirect: undefined, // The parameter name for the redirect url, sent as part of the form // data and set to 'redirect' if this option is empty: redirectParamName: undefined, // Set the following option to the location of a postMessage window, // to enable postMessage transport uploads: postMessage: undefined, // By default, XHR file uploads are sent as multipart/form-data. // The iframe transport is always using multipart/form-data. // Set to false to enable non-multipart XHR uploads: multipart: true, // To upload large files in smaller chunks, set the following option // to a preferred maximum chunk size. If set to 0, null or undefined, // or the browser does not support the required Blob API, files will // be uploaded as a whole. maxChunkSize: undefined, // When a non-multipart upload or a chunked multipart upload has been // aborted, this option can be used to resume the upload by setting // it to the size of the already uploaded bytes. This option is most // useful when modifying the options object inside of the "add" or // "send" callbacks, as the options are cloned for each file upload. uploadedBytes: undefined, // By default, failed (abort or error) file uploads are removed from the // global progress calculation. Set the following option to false to // prevent recalculating the global progress data: recalculateProgress: true, // Interval in milliseconds to calculate and trigger progress events: progressInterval: 100, // Interval in milliseconds to calculate progress bitrate: bitrateInterval: 500, // By default, uploads are started automatically when adding files: autoUpload: true, // Error and info messages: messages: { uploadedBytes: 'Uploaded bytes exceed file size' }, // Translation function, gets the message key to be translated // and an object with context specific data as arguments: i18n: function (message, context) { message = this.messages[message] || message.toString(); if (context) { $.each(context, function (key, value) { message = message.replace('{' + key + '}', value); }); } return message; }, // Additional form data to be sent along with the file uploads can be set // using this option, which accepts an array of objects with name and // value properties, a function returning such an array, a FormData // object (for XHR file uploads), or a simple object. // The form of the first fileInput is given as parameter to the function: formData: function (form) { return form.serializeArray(); }, // The add callback is invoked as soon as files are added to the fileupload // widget (via file input selection, drag & drop, paste or add API call). // If the singleFileUploads option is enabled, this callback will be // called once for each file in the selection for XHR file uploads, else // once for each file selection. // // The upload starts when the submit method is invoked on the data parameter. // The data object contains a files property holding the added files // and allows you to override plugin options as well as define ajax settings. // // Listeners for this callback can also be bound the following way: // .bind('fileuploadadd', func); // // data.submit() returns a Promise object and allows to attach additional // handlers using jQuery's Deferred callbacks: // data.submit().done(func).fail(func).always(func); add: function (e, data) { if (e.isDefaultPrevented()) { return false; } if (data.autoUpload || (data.autoUpload !== false && $(this).fileupload('option', 'autoUpload'))) { data.process().done(function () { data.submit(); }); } }, // Other callbacks: // Callback for the submit event of each file upload: // submit: function (e, data) {}, // .bind('fileuploadsubmit', func); // Callback for the start of each file upload request: // send: function (e, data) {}, // .bind('fileuploadsend', func); // Callback for successful uploads: // done: function (e, data) {}, // .bind('fileuploaddone', func); // Callback for failed (abort or error) uploads: // fail: function (e, data) {}, // .bind('fileuploadfail', func); // Callback for completed (success, abort or error) requests: // always: function (e, data) {}, // .bind('fileuploadalways', func); // Callback for upload progress events: // progress: function (e, data) {}, // .bind('fileuploadprogress', func); // Callback for global upload progress events: // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func); // Callback for uploads start, equivalent to the global ajaxStart event: // start: function (e) {}, // .bind('fileuploadstart', func); // Callback for uploads stop, equivalent to the global ajaxStop event: // stop: function (e) {}, // .bind('fileuploadstop', func); // Callback for change events of the fileInput(s): // change: function (e, data) {}, // .bind('fileuploadchange', func); // Callback for paste events to the pasteZone(s): // paste: function (e, data) {}, // .bind('fileuploadpaste', func); // Callback for drop events of the dropZone(s): // drop: function (e, data) {}, // .bind('fileuploaddrop', func); // Callback for dragover events of the dropZone(s): // dragover: function (e) {}, // .bind('fileuploaddragover', func); // Callback for the start of each chunk upload request: // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func); // Callback for successful chunk uploads: // chunkdone: function (e, data) {}, // .bind('fileuploadchunkdone', func); // Callback for failed (abort or error) chunk uploads: // chunkfail: function (e, data) {}, // .bind('fileuploadchunkfail', func); // Callback for completed (success, abort or error) chunk upload requests: // chunkalways: function (e, data) {}, // .bind('fileuploadchunkalways', func); // The plugin options are used as settings object for the ajax calls. // The following are jQuery ajax settings required for the file uploads: processData: false, contentType: false, cache: false, timeout: 0 }, // A list of options that require reinitializing event listeners and/or // special initialization code: _specialOptions: [ 'fileInput', 'dropZone', 'pasteZone', 'multipart', 'forceIframeTransport' ], _blobSlice: $.support.blobSlice && function () { var slice = this.slice || this.webkitSlice || this.mozSlice; return slice.apply(this, arguments); }, _BitrateTimer: function () { this.timestamp = ((Date.now) ? Date.now() : (new Date()).getTime()); this.loaded = 0; this.bitrate = 0; this.getBitrate = function (now, loaded, interval) { var timeDiff = now - this.timestamp; if (!this.bitrate || !interval || timeDiff > interval) { this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8; this.loaded = loaded; this.timestamp = now; } return this.bitrate; }; }, _isXHRUpload: function (options) { return !options.forceIframeTransport && ((!options.multipart && $.support.xhrFileUpload) || $.support.xhrFormDataFileUpload); }, _getFormData: function (options) { var formData; if ($.type(options.formData) === 'function') { return options.formData(options.form); } if ($.isArray(options.formData)) { return options.formData; } if ($.type(options.formData) === 'object') { formData = []; $.each(options.formData, function (name, value) { formData.push({name: name, value: value}); }); return formData; } return []; }, _getTotal: function (files) { var total = 0; $.each(files, function (index, file) { total += file.size || 1; }); return total; }, _initProgressObject: function (obj) { var progress = { loaded: 0, total: 0, bitrate: 0 }; if (obj._progress) { $.extend(obj._progress, progress); } else { obj._progress = progress; } }, _initResponseObject: function (obj) { var prop; if (obj._response) { for (prop in obj._response) { if (obj._response.hasOwnProperty(prop)) { delete obj._response[prop]; } } } else { obj._response = {}; } }, _onProgress: function (e, data) { if (e.lengthComputable) { var now = ((Date.now) ? Date.now() : (new Date()).getTime()), loaded; if (data._time && data.progressInterval && (now - data._time < data.progressInterval) && e.loaded !== e.total) { return; } data._time = now; loaded = Math.floor( e.loaded / e.total * (data.chunkSize || data._progress.total) ) + (data.uploadedBytes || 0); // Add the difference from the previously loaded state // to the global loaded counter: this._progress.loaded += (loaded - data._progress.loaded); this._progress.bitrate = this._bitrateTimer.getBitrate( now, this._progress.loaded, data.bitrateInterval ); data._progress.loaded = data.loaded = loaded; data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate( now, loaded, data.bitrateInterval ); // Trigger a custom progress event with a total data property set // to the file size(s) of the current upload and a loaded data // property calculated accordingly: this._trigger( 'progress', $.Event('progress', {delegatedEvent: e}), data ); // Trigger a global progress event for all current file uploads, // including ajax calls queued for sequential file uploads: this._trigger( 'progressall', $.Event('progressall', {delegatedEvent: e}), this._progress ); } }, _initProgressListener: function (options) { var that = this, xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); // Accesss to the native XHR object is required to add event listeners // for the upload progress event: if (xhr.upload) { $(xhr.upload).bind('progress', function (e) { var oe = e.originalEvent; // Make sure the progress event properties get copied over: e.lengthComputable = oe.lengthComputable; e.loaded = oe.loaded; e.total = oe.total; that._onProgress(e, options); }); options.xhr = function () { return xhr; }; } }, _isInstanceOf: function (type, obj) { // Cross-frame instanceof check return Object.prototype.toString.call(obj) === '[object ' + type + ']'; }, _initXHRData: function (options) { var that = this, formData, file = options.files[0], // Ignore non-multipart setting if not supported: multipart = options.multipart || !$.support.xhrFileUpload, paramName = $.type(options.paramName) === 'array' ? options.paramName[0] : options.paramName; options.headers = $.extend({}, options.headers); if (options.contentRange) { options.headers['Content-Range'] = options.contentRange; } if (!multipart || options.blob || !this._isInstanceOf('File', file)) { options.headers['Content-Disposition'] = 'attachment; filename="' + encodeURI(file.name) + '"'; } if (!multipart) { options.contentType = file.type || 'application/octet-stream'; options.data = options.blob || file; } else if ($.support.xhrFormDataFileUpload) { if (options.postMessage) { // window.postMessage does not allow sending FormData // objects, so we just add the File/Blob objects to // the formData array and let the postMessage window // create the FormData object out of this array: formData = this._getFormData(options); if (options.blob) { formData.push({ name: paramName, value: options.blob }); } else { $.each(options.files, function (index, file) { formData.push({ name: ($.type(options.paramName) === 'array' && options.paramName[index]) || paramName, value: file }); }); } } else { if (that._isInstanceOf('FormData', options.formData)) { formData = options.formData; } else { formData = new FormData(); $.each(this._getFormData(options), function (index, field) { formData.append(field.name, field.value); }); } if (options.blob) { formData.append(paramName, options.blob, file.name); } else { $.each(options.files, function (index, file) { // This check allows the tests to run with // dummy objects: if (that._isInstanceOf('File', file) || that._isInstanceOf('Blob', file)) { formData.append( ($.type(options.paramName) === 'array' && options.paramName[index]) || paramName, file, file.uploadName || file.name ); } }); } } options.data = formData; } // Blob reference is not needed anymore, free memory: options.blob = null; }, _initIframeSettings: function (options) { var targetHost = $('').prop('href', options.url).prop('host'); // Setting the dataType to iframe enables the iframe transport: options.dataType = 'iframe ' + (options.dataType || ''); // The iframe transport accepts a serialized array as form data: options.formData = this._getFormData(options); // Add redirect url to form data on cross-domain uploads: if (options.redirect && targetHost && targetHost !== location.host) { options.formData.push({ name: options.redirectParamName || 'redirect', value: options.redirect }); } }, _initDataSettings: function (options) { if (this._isXHRUpload(options)) { if (!this._chunkedUpload(options, true)) { if (!options.data) { this._initXHRData(options); } this._initProgressListener(options); } if (options.postMessage) { // Setting the dataType to postmessage enables the // postMessage transport: options.dataType = 'postmessage ' + (options.dataType || ''); } } else { this._initIframeSettings(options); } }, _getParamName: function (options) { var fileInput = $(options.fileInput), paramName = options.paramName; if (!paramName) { paramName = []; fileInput.each(function () { var input = $(this), name = input.prop('name') || 'files[]', i = (input.prop('files') || [1]).length; while (i) { paramName.push(name); i -= 1; } }); if (!paramName.length) { paramName = [fileInput.prop('name') || 'files[]']; } } else if (!$.isArray(paramName)) { paramName = [paramName]; } return paramName; }, _initFormSettings: function (options) { // Retrieve missing options from the input field and the // associated form, if available: if (!options.form || !options.form.length) { options.form = $(options.fileInput.prop('form')); // If the given file input doesn't have an associated form, // use the default widget file input's form: if (!options.form.length) { options.form = $(this.options.fileInput.prop('form')); } } options.paramName = this._getParamName(options); if (!options.url) { options.url = options.form.prop('action') || location.href; } // The HTTP request method must be "POST" or "PUT": options.type = (options.type || ($.type(options.form.prop('method')) === 'string' && options.form.prop('method')) || '' ).toUpperCase(); if (options.type !== 'POST' && options.type !== 'PUT' && options.type !== 'PATCH') { options.type = 'POST'; } if (!options.formAcceptCharset) { options.formAcceptCharset = options.form.attr('accept-charset'); } }, _getAJAXSettings: function (data) { var options = $.extend({}, this.options, data); this._initFormSettings(options); this._initDataSettings(options); return options; }, // jQuery 1.6 doesn't provide .state(), // while jQuery 1.8+ removed .isRejected() and .isResolved(): _getDeferredState: function (deferred) { if (deferred.state) { return deferred.state(); } if (deferred.isResolved()) { return 'resolved'; } if (deferred.isRejected()) { return 'rejected'; } return 'pending'; }, // Maps jqXHR callbacks to the equivalent // methods of the given Promise object: _enhancePromise: function (promise) { promise.success = promise.done; promise.error = promise.fail; promise.complete = promise.always; return promise; }, // Creates and returns a Promise object enhanced with // the jqXHR methods abort, success, error and complete: _getXHRPromise: function (resolveOrReject, context, args) { var dfd = $.Deferred(), promise = dfd.promise(); context = context || this.options.context || promise; if (resolveOrReject === true) { dfd.resolveWith(context, args); } else if (resolveOrReject === false) { dfd.rejectWith(context, args); } promise.abort = dfd.promise; return this._enhancePromise(promise); }, // Adds convenience methods to the data callback argument: _addConvenienceMethods: function (e, data) { var that = this, getPromise = function (args) { return $.Deferred().resolveWith(that, args).promise(); }; data.process = function (resolveFunc, rejectFunc) { if (resolveFunc || rejectFunc) { data._processQueue = this._processQueue = (this._processQueue || getPromise([this])).pipe( function () { if (data.errorThrown) { return $.Deferred() .rejectWith(that, [data]).promise(); } return getPromise(arguments); } ).pipe(resolveFunc, rejectFunc); } return this._processQueue || getPromise([this]); }; data.submit = function () { if (this.state() !== 'pending') { data.jqXHR = this.jqXHR = (that._trigger( 'submit', $.Event('submit', {delegatedEvent: e}), this ) !== false) && that._onSend(e, this); } return this.jqXHR || that._getXHRPromise(); }; data.abort = function () { if (this.jqXHR) { return this.jqXHR.abort(); } this.errorThrown = 'abort'; that._trigger('fail', null, this); return that._getXHRPromise(false); }; data.state = function () { if (this.jqXHR) { return that._getDeferredState(this.jqXHR); } if (this._processQueue) { return that._getDeferredState(this._processQueue); } }; data.processing = function () { return !this.jqXHR && this._processQueue && that ._getDeferredState(this._processQueue) === 'pending'; }; data.progress = function () { return this._progress; }; data.response = function () { return this._response; }; }, // Parses the Range header from the server response // and returns the uploaded bytes: _getUploadedBytes: function (jqXHR) { var range = jqXHR.getResponseHeader('Range'), parts = range && range.split('-'), upperBytesPos = parts && parts.length > 1 && parseInt(parts[1], 10); return upperBytesPos && upperBytesPos + 1; }, // Uploads a file in multiple, sequential requests // by splitting the file up in multiple blob chunks. // If the second parameter is true, only tests if the file // should be uploaded in chunks, but does not invoke any // upload requests: _chunkedUpload: function (options, testOnly) { options.uploadedBytes = options.uploadedBytes || 0; var that = this, file = options.files[0], fs = file.size, ub = options.uploadedBytes, mcs = options.maxChunkSize || fs, slice = this._blobSlice, dfd = $.Deferred(), promise = dfd.promise(), jqXHR, upload; if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) || options.data) { return false; } if (testOnly) { return true; } if (ub >= fs) { file.error = options.i18n('uploadedBytes'); return this._getXHRPromise( false, options.context, [null, 'error', file.error] ); } // The chunk upload method: upload = function () { // Clone the options object for each chunk upload: var o = $.extend({}, options), currentLoaded = o._progress.loaded; o.blob = slice.call( file, ub, ub + mcs, file.type ); // Store the current chunk size, as the blob itself // will be dereferenced after data processing: o.chunkSize = o.blob.size; // Expose the chunk bytes position range: o.contentRange = 'bytes ' + ub + '-' + (ub + o.chunkSize - 1) + '/' + fs; // Process the upload data (the blob and potential form data): that._initXHRData(o); // Add progress listeners for this chunk upload: that._initProgressListener(o); jqXHR = ((that._trigger('chunksend', null, o) !== false && $.ajax(o)) || that._getXHRPromise(false, o.context)) .done(function (result, textStatus, jqXHR) { ub = that._getUploadedBytes(jqXHR) || (ub + o.chunkSize); // Create a progress event if no final progress event // with loaded equaling total has been triggered // for this chunk: if (currentLoaded + o.chunkSize - o._progress.loaded) { that._onProgress($.Event('progress', { lengthComputable: true, loaded: ub - o.uploadedBytes, total: ub - o.uploadedBytes }), o); } options.uploadedBytes = o.uploadedBytes = ub; o.result = result; o.textStatus = textStatus; o.jqXHR = jqXHR; that._trigger('chunkdone', null, o); that._trigger('chunkalways', null, o); if (ub < fs) { // File upload not yet complete, // continue with the next chunk: upload(); } else { dfd.resolveWith( o.context, [result, textStatus, jqXHR] ); } }) .fail(function (jqXHR, textStatus, errorThrown) { o.jqXHR = jqXHR; o.textStatus = textStatus; o.errorThrown = errorThrown; that._trigger('chunkfail', null, o); that._trigger('chunkalways', null, o); dfd.rejectWith( o.context, [jqXHR, textStatus, errorThrown] ); }); }; this._enhancePromise(promise); promise.abort = function () { return jqXHR.abort(); }; upload(); return promise; }, _beforeSend: function (e, data) { if (this._active === 0) { // the start callback is triggered when an upload starts // and no other uploads are currently running, // equivalent to the global ajaxStart event: this._trigger('start'); // Set timer for global bitrate progress calculation: this._bitrateTimer = new this._BitrateTimer(); // Reset the global progress values: this._progress.loaded = this._progress.total = 0; this._progress.bitrate = 0; } // Make sure the container objects for the .response() and // .progress() methods on the data object are available // and reset to their initial state: this._initResponseObject(data); this._initProgressObject(data); data._progress.loaded = data.loaded = data.uploadedBytes || 0; data._progress.total = data.total = this._getTotal(data.files) || 1; data._progress.bitrate = data.bitrate = 0; this._active += 1; // Initialize the global progress values: this._progress.loaded += data.loaded; this._progress.total += data.total; }, _onDone: function (result, textStatus, jqXHR, options) { var total = options._progress.total, response = options._response; if (options._progress.loaded < total) { // Create a progress event if no final progress event // with loaded equaling total has been triggered: this._onProgress($.Event('progress', { lengthComputable: true, loaded: total, total: total }), options); } response.result = options.result = result; response.textStatus = options.textStatus = textStatus; response.jqXHR = options.jqXHR = jqXHR; this._trigger('done', null, options); }, _onFail: function (jqXHR, textStatus, errorThrown, options) { var response = options._response; if (options.recalculateProgress) { // Remove the failed (error or abort) file upload from // the global progress calculation: this._progress.loaded -= options._progress.loaded; this._progress.total -= options._progress.total; } response.jqXHR = options.jqXHR = jqXHR; response.textStatus = options.textStatus = textStatus; response.errorThrown = options.errorThrown = errorThrown; this._trigger('fail', null, options); }, _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) { // jqXHRorResult, textStatus and jqXHRorError are added to the // options object via done and fail callbacks this._trigger('always', null, options); }, _onSend: function (e, data) { if (!data.submit) { this._addConvenienceMethods(e, data); } var that = this, jqXHR, aborted, slot, pipe, options = that._getAJAXSettings(data), send = function () { that._sending += 1; // Set timer for bitrate progress calculation: options._bitrateTimer = new that._BitrateTimer(); jqXHR = jqXHR || ( ((aborted || that._trigger( 'send', $.Event('send', {delegatedEvent: e}), options ) === false) && that._getXHRPromise(false, options.context, aborted)) || that._chunkedUpload(options) || $.ajax(options) ).done(function (result, textStatus, jqXHR) { that._onDone(result, textStatus, jqXHR, options); }).fail(function (jqXHR, textStatus, errorThrown) { that._onFail(jqXHR, textStatus, errorThrown, options); }).always(function (jqXHRorResult, textStatus, jqXHRorError) { that._onAlways( jqXHRorResult, textStatus, jqXHRorError, options ); that._sending -= 1; that._active -= 1; if (options.limitConcurrentUploads && options.limitConcurrentUploads > that._sending) { // Start the next queued upload, // that has not been aborted: var nextSlot = that._slots.shift(); while (nextSlot) { if (that._getDeferredState(nextSlot) === 'pending') { nextSlot.resolve(); break; } nextSlot = that._slots.shift(); } } if (that._active === 0) { // The stop callback is triggered when all uploads have // been completed, equivalent to the global ajaxStop event: that._trigger('stop'); } }); return jqXHR; }; this._beforeSend(e, options); if (this.options.sequentialUploads || (this.options.limitConcurrentUploads && this.options.limitConcurrentUploads <= this._sending)) { if (this.options.limitConcurrentUploads > 1) { slot = $.Deferred(); this._slots.push(slot); pipe = slot.pipe(send); } else { this._sequence = this._sequence.pipe(send, send); pipe = this._sequence; } // Return the piped Promise object, enhanced with an abort method, // which is delegated to the jqXHR object of the current upload, // and jqXHR callbacks mapped to the equivalent Promise methods: pipe.abort = function () { aborted = [undefined, 'abort', 'abort']; if (!jqXHR) { if (slot) { slot.rejectWith(options.context, aborted); } return send(); } return jqXHR.abort(); }; return this._enhancePromise(pipe); } return send(); }, _onAdd: function (e, data) { var that = this, result = true, options = $.extend({}, this.options, data), files = data.files, filesLength = files.length, limit = options.limitMultiFileUploads, limitSize = options.limitMultiFileUploadSize, overhead = options.limitMultiFileUploadSizeOverhead, batchSize = 0, paramName = this._getParamName(options), paramNameSet, paramNameSlice, fileSet, i, j = 0; if (!filesLength) { return false; } if (limitSize && files[0].size === undefined) { limitSize = undefined; } if (!(options.singleFileUploads || limit || limitSize) || !this._isXHRUpload(options)) { fileSet = [files]; paramNameSet = [paramName]; } else if (!(options.singleFileUploads || limitSize) && limit) { fileSet = []; paramNameSet = []; for (i = 0; i < filesLength; i += limit) { fileSet.push(files.slice(i, i + limit)); paramNameSlice = paramName.slice(i, i + limit); if (!paramNameSlice.length) { paramNameSlice = paramName; } paramNameSet.push(paramNameSlice); } } else if (!options.singleFileUploads && limitSize) { fileSet = []; paramNameSet = []; for (i = 0; i < filesLength; i = i + 1) { batchSize += files[i].size + overhead; if (i + 1 === filesLength || ((batchSize + files[i + 1].size + overhead) > limitSize) || (limit && i + 1 - j >= limit)) { fileSet.push(files.slice(j, i + 1)); paramNameSlice = paramName.slice(j, i + 1); if (!paramNameSlice.length) { paramNameSlice = paramName; } paramNameSet.push(paramNameSlice); j = i + 1; batchSize = 0; } } } else { paramNameSet = paramName; } data.originalFiles = files; $.each(fileSet || files, function (index, element) { var newData = $.extend({}, data); newData.files = fileSet ? element : [element]; newData.paramName = paramNameSet[index]; that._initResponseObject(newData); that._initProgressObject(newData); that._addConvenienceMethods(e, newData); result = that._trigger( 'add', $.Event('add', {delegatedEvent: e}), newData ); return result; }); return result; }, _replaceFileInput: function (data) { var input = data.fileInput, inputClone = input.clone(true); // Add a reference for the new cloned file input to the data argument: data.fileInputClone = inputClone; $('
').append(inputClone)[0].reset(); // Detaching allows to insert the fileInput on another form // without loosing the file input value: input.after(inputClone).detach(); // Avoid memory leaks with the detached file input: $.cleanData(input.unbind('remove')); // Replace the original file input element in the fileInput // elements set with the clone, which has been copied including // event handlers: this.options.fileInput = this.options.fileInput.map(function (i, el) { if (el === input[0]) { return inputClone[0]; } return el; }); // If the widget has been initialized on the file input itself, // override this.element with the file input clone: if (input[0] === this.element[0]) { this.element = inputClone; } }, _handleFileTreeEntry: function (entry, path) { var that = this, dfd = $.Deferred(), errorHandler = function (e) { if (e && !e.entry) { e.entry = entry; } // Since $.when returns immediately if one // Deferred is rejected, we use resolve instead. // This allows valid files and invalid items // to be returned together in one set: dfd.resolve([e]); }, successHandler = function (entries) { that._handleFileTreeEntries( entries, path + entry.name + '/' ).done(function (files) { dfd.resolve(files); }).fail(errorHandler); }, readEntries = function () { dirReader.readEntries(function (results) { if (!results.length) { successHandler(entries); } else { entries = entries.concat(results); readEntries(); } }, errorHandler); }, dirReader, entries = []; path = path || ''; if (entry.isFile) { if (entry._file) { // Workaround for Chrome bug #149735 entry._file.relativePath = path; dfd.resolve(entry._file); } else { entry.file(function (file) { file.relativePath = path; dfd.resolve(file); }, errorHandler); } } else if (entry.isDirectory) { dirReader = entry.createReader(); readEntries(); } else { // Return an empy list for file system items // other than files or directories: dfd.resolve([]); } return dfd.promise(); }, _handleFileTreeEntries: function (entries, path) { var that = this; return $.when.apply( $, $.map(entries, function (entry) { return that._handleFileTreeEntry(entry, path); }) ).pipe(function () { return Array.prototype.concat.apply( [], arguments ); }); }, _getDroppedFiles: function (dataTransfer) { dataTransfer = dataTransfer || {}; var items = dataTransfer.items; if (items && items.length && (items[0].webkitGetAsEntry || items[0].getAsEntry)) { return this._handleFileTreeEntries( $.map(items, function (item) { var entry; if (item.webkitGetAsEntry) { entry = item.webkitGetAsEntry(); if (entry) { // Workaround for Chrome bug #149735: entry._file = item.getAsFile(); } return entry; } return item.getAsEntry(); }) ); } return $.Deferred().resolve( $.makeArray(dataTransfer.files) ).promise(); }, _getSingleFileInputFiles: function (fileInput) { fileInput = $(fileInput); var entries = fileInput.prop('webkitEntries') || fileInput.prop('entries'), files, value; if (entries && entries.length) { return this._handleFileTreeEntries(entries); } files = $.makeArray(fileInput.prop('files')); if (!files.length) { value = fileInput.prop('value'); if (!value) { return $.Deferred().resolve([]).promise(); } // If the files property is not available, the browser does not // support the File API and we add a pseudo File object with // the input value as name with path information removed: files = [{name: value.replace(/^.*\\/, '')}]; } else if (files[0].name === undefined && files[0].fileName) { // File normalization for Safari 4 and Firefox 3: $.each(files, function (index, file) { file.name = file.fileName; file.size = file.fileSize; }); } return $.Deferred().resolve(files).promise(); }, _getFileInputFiles: function (fileInput) { if (!(fileInput instanceof $) || fileInput.length === 1) { return this._getSingleFileInputFiles(fileInput); } return $.when.apply( $, $.map(fileInput, this._getSingleFileInputFiles) ).pipe(function () { return Array.prototype.concat.apply( [], arguments ); }); }, _onChange: function (e) { var that = this, data = { fileInput: $(e.target), form: $(e.target.form) }; this._getFileInputFiles(data.fileInput).always(function (files) { data.files = files; if (that.options.replaceFileInput) { that._replaceFileInput(data); } if (that._trigger( 'change', $.Event('change', {delegatedEvent: e}), data ) !== false) { that._onAdd(e, data); } }); }, _onPaste: function (e) { var items = e.originalEvent && e.originalEvent.clipboardData && e.originalEvent.clipboardData.items, data = {files: []}; if (items && items.length) { $.each(items, function (index, item) { var file = item.getAsFile && item.getAsFile(); if (file) { data.files.push(file); } }); if (this._trigger( 'paste', $.Event('paste', {delegatedEvent: e}), data ) !== false) { this._onAdd(e, data); } } }, _onDrop: function (e) { e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; var that = this, dataTransfer = e.dataTransfer, data = {}; if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { e.preventDefault(); this._getDroppedFiles(dataTransfer).always(function (files) { data.files = files; if (that._trigger( 'drop', $.Event('drop', {delegatedEvent: e}), data ) !== false) { that._onAdd(e, data); } }); } }, _onDragOver: getDragHandler('dragover'), _onDragEnter: getDragHandler('dragenter'), _onDragLeave: getDragHandler('dragleave'), _initEventHandlers: function () { if (this._isXHRUpload(this.options)) { this._on(this.options.dropZone, { dragover: this._onDragOver, drop: this._onDrop, // event.preventDefault() on dragenter is required for IE10+: dragenter: this._onDragEnter, // dragleave is not required, but added for completeness: dragleave: this._onDragLeave }); this._on(this.options.pasteZone, { paste: this._onPaste }); } if ($.support.fileInput) { this._on(this.options.fileInput, { change: this._onChange }); } }, _destroyEventHandlers: function () { this._off(this.options.dropZone, 'dragenter dragleave dragover drop'); this._off(this.options.pasteZone, 'paste'); this._off(this.options.fileInput, 'change'); }, _setOption: function (key, value) { var reinit = $.inArray(key, this._specialOptions) !== -1; if (reinit) { this._destroyEventHandlers(); } this._super(key, value); if (reinit) { this._initSpecialOptions(); this._initEventHandlers(); } }, _initSpecialOptions: function () { var options = this.options; if (options.fileInput === undefined) { options.fileInput = this.element.is('input[type="file"]') ? this.element : this.element.find('input[type="file"]'); } else if (!(options.fileInput instanceof $)) { options.fileInput = $(options.fileInput); } if (!(options.dropZone instanceof $)) { options.dropZone = $(options.dropZone); } if (!(options.pasteZone instanceof $)) { options.pasteZone = $(options.pasteZone); } }, _getRegExp: function (str) { var parts = str.split('/'), modifiers = parts.pop(); parts.shift(); return new RegExp(parts.join('/'), modifiers); }, _isRegExpOption: function (key, value) { return key !== 'url' && $.type(value) === 'string' && /^\/.*\/[igm]{0,3}$/.test(value); }, _initDataAttributes: function () { var that = this, options = this.options, data = this.element.data(); // Initialize options set via HTML5 data-attributes: $.each( this.element[0].attributes, function (index, attr) { var key = attr.name.toLowerCase(), value; if (/^data-/.test(key)) { // Convert hyphen-ated key to camelCase: key = key.slice(5).replace(/-[a-z]/g, function (str) { return str.charAt(1).toUpperCase(); }); value = data[key]; if (that._isRegExpOption(key, value)) { value = that._getRegExp(value); } options[key] = value; } } ); }, _create: function () { this._initDataAttributes(); this._initSpecialOptions(); this._slots = []; this._sequence = this._getXHRPromise(true); this._sending = this._active = 0; this._initProgressObject(this); this._initEventHandlers(); }, // This method is exposed to the widget API and allows to query // the number of active uploads: active: function () { return this._active; }, // This method is exposed to the widget API and allows to query // the widget upload progress. // It returns an object with loaded, total and bitrate properties // for the running uploads: progress: function () { return this._progress; }, // This method is exposed to the widget API and allows adding files // using the fileupload API. The data parameter accepts an object which // must have a files property and can contain additional options: // .fileupload('add', {files: filesList}); add: function (data) { var that = this; if (!data || this.options.disabled) { return; } if (data.fileInput && !data.files) { this._getFileInputFiles(data.fileInput).always(function (files) { data.files = files; that._onAdd(null, data); }); } else { data.files = $.makeArray(data.files); this._onAdd(null, data); } }, // This method is exposed to the widget API and allows sending files // using the fileupload API. The data parameter accepts an object which // must have a files or fileInput property and can contain additional options: // .fileupload('send', {files: filesList}); // The method returns a Promise object for the file upload call. send: function (data) { if (data && !this.options.disabled) { if (data.fileInput && !data.files) { var that = this, dfd = $.Deferred(), promise = dfd.promise(), jqXHR, aborted; promise.abort = function () { aborted = true; if (jqXHR) { return jqXHR.abort(); } dfd.reject(null, 'abort', 'abort'); return promise; }; this._getFileInputFiles(data.fileInput).always( function (files) { if (aborted) { return; } if (!files.length) { dfd.reject(); return; } data.files = files; jqXHR = that._onSend(null, data); jqXHR.then( function (result, textStatus, jqXHR) { dfd.resolve(result, textStatus, jqXHR); }, function (jqXHR, textStatus, errorThrown) { dfd.reject(jqXHR, textStatus, errorThrown); } ); } ); return this._enhancePromise(promise); } data.files = $.makeArray(data.files); if (data.files.length) { return this._onSend(null, data); } } return this._getXHRPromise(false, data && data.context); } }); })); /* >>>>>>> END plugins/fileupload/jquery.fileupload.js <<<<<<< */ /* >>>>>>> plugins/fileupload/jquery.fileupload-process.js <<<<<<< */ /* * jQuery File Upload Processing Plugin 1.3.1 * https://github.com/blueimp/jQuery-File-Upload * * Copyright 2012, Sebastian Tschan * https://blueimp.net * * Licensed under the MIT license: * http://www.opensource.org/licenses/MIT */ /* jshint nomen:false */ /* global define, require, window */ (function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: define([ 'jquery', './jquery.fileupload' ], factory); } else if (typeof exports === 'object') { // Node/CommonJS: factory(require('jquery')); } else { // Browser globals: factory( window.jQuery ); } }(function ($) { 'use strict'; var originalAdd = $.blueimp.fileupload.prototype.options.add; // The File Upload Processing plugin extends the fileupload widget // with file processing functionality: $.widget('blueimp.fileupload', $.blueimp.fileupload, { options: { // The list of processing actions: processQueue: [ /* { action: 'log', type: 'debug' } */ ], add: function (e, data) { var $this = $(this); data.process(function () { return $this.fileupload('process', data); }); originalAdd.call(this, e, data); } }, processActions: { /* log: function (data, options) { console[options.type]( 'Processing "' + data.files[data.index].name + '"' ); } */ }, _processFile: function (data, originalData) { var that = this, dfd = $.Deferred().resolveWith(that, [data]), chain = dfd.promise(); this._trigger('process', null, data); $.each(data.processQueue, function (i, settings) { var func = function (data) { if (originalData.errorThrown) { return $.Deferred() .rejectWith(that, [originalData]).promise(); } return that.processActions[settings.action].call( that, data, settings ); }; chain = chain.pipe(func, settings.always && func); }); chain .done(function () { that._trigger('processdone', null, data); that._trigger('processalways', null, data); }) .fail(function () { that._trigger('processfail', null, data); that._trigger('processalways', null, data); }); return chain; }, // Replaces the settings of each processQueue item that // are strings starting with an "@", using the remaining // substring as key for the option map, // e.g. "@autoUpload" is replaced with options.autoUpload: _transformProcessQueue: function (options) { var processQueue = []; $.each(options.processQueue, function () { var settings = {}, action = this.action, prefix = this.prefix === true ? action : this.prefix; $.each(this, function (key, value) { if ($.type(value) === 'string' && value.charAt(0) === '@') { settings[key] = options[ value.slice(1) || (prefix ? prefix + key.charAt(0).toUpperCase() + key.slice(1) : key) ]; } else { settings[key] = value; } }); processQueue.push(settings); }); options.processQueue = processQueue; }, // Returns the number of files currently in the processsing queue: processing: function () { return this._processing; }, // Processes the files given as files property of the data parameter, // returns a Promise object that allows to bind callbacks: process: function (data) { var that = this, options = $.extend({}, this.options, data); if (options.processQueue && options.processQueue.length) { this._transformProcessQueue(options); if (this._processing === 0) { this._trigger('processstart'); } $.each(data.files, function (index) { var opts = index ? $.extend({}, options) : options, func = function () { if (data.errorThrown) { return $.Deferred() .rejectWith(that, [data]).promise(); } return that._processFile(opts, data); }; opts.index = index; that._processing += 1; that._processingQueue = that._processingQueue.pipe(func, func) .always(function () { that._processing -= 1; if (that._processing === 0) { that._trigger('processstop'); } }); }); } return this._processingQueue; }, _create: function () { this._super(); this._processing = 0; this._processingQueue = $.Deferred().resolveWith(this) .promise(); } }); })); /* >>>>>>> END plugins/fileupload/jquery.fileupload-process.js <<<<<<< */ /* >>>>>>> plugins/fileupload/jquery.fileupload-image.js <<<<<<< */ /* * jQuery File Upload Image Preview & Resize Plugin 1.7.3 * https://github.com/blueimp/jQuery-File-Upload * * Copyright 2013, Sebastian Tschan * https://blueimp.net * * Licensed under the MIT license: * http://www.opensource.org/licenses/MIT */ /* jshint nomen:false */ /* global define, require, window, Blob */ (function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: define([ 'jquery', 'load-image', 'load-image-meta', 'load-image-exif', 'load-image-ios', 'canvas-to-blob', './jquery.fileupload-process' ], factory); } else if (typeof exports === 'object') { // Node/CommonJS: factory( require('jquery'), require('load-image') ); } else { // Browser globals: factory( window.jQuery, window.loadImage ); } }(function ($, loadImage) { 'use strict'; // Prepend to the default processQueue: $.blueimp.fileupload.prototype.options.processQueue.unshift( { action: 'loadImageMetaData', disableImageHead: '@', disableExif: '@', disableExifThumbnail: '@', disableExifSub: '@', disableExifGps: '@', disabled: '@disableImageMetaDataLoad' }, { action: 'loadImage', // Use the action as prefix for the "@" options: prefix: true, fileTypes: '@', maxFileSize: '@', noRevoke: '@', disabled: '@disableImageLoad' }, { action: 'resizeImage', // Use "image" as prefix for the "@" options: prefix: 'image', maxWidth: '@', maxHeight: '@', minWidth: '@', minHeight: '@', crop: '@', orientation: '@', forceResize: '@', disabled: '@disableImageResize' }, { action: 'saveImage', quality: '@imageQuality', type: '@imageType', disabled: '@disableImageResize' }, { action: 'saveImageMetaData', disabled: '@disableImageMetaDataSave' }, { action: 'resizeImage', // Use "preview" as prefix for the "@" options: prefix: 'preview', maxWidth: '@', maxHeight: '@', minWidth: '@', minHeight: '@', crop: '@', orientation: '@', thumbnail: '@', canvas: '@', disabled: '@disableImagePreview' }, { action: 'setImage', name: '@imagePreviewName', disabled: '@disableImagePreview' }, { action: 'deleteImageReferences', disabled: '@disableImageReferencesDeletion' } ); // The File Upload Resize plugin extends the fileupload widget // with image resize functionality: $.widget('blueimp.fileupload', $.blueimp.fileupload, { options: { // The regular expression for the types of images to load: // matched against the file type: loadImageFileTypes: /^image\/(gif|jpeg|png|svg\+xml)$/, // The maximum file size of images to load: loadImageMaxFileSize: 10000000, // 10MB // The maximum width of resized images: imageMaxWidth: 1920, // The maximum height of resized images: imageMaxHeight: 1080, // Defines the image orientation (1-8) or takes the orientation // value from Exif data if set to true: imageOrientation: false, // Define if resized images should be cropped or only scaled: imageCrop: false, // Disable the resize image functionality by default: disableImageResize: true, // The maximum width of the preview images: previewMaxWidth: 80, // The maximum height of the preview images: previewMaxHeight: 80, // Defines the preview orientation (1-8) or takes the orientation // value from Exif data if set to true: previewOrientation: true, // Create the preview using the Exif data thumbnail: previewThumbnail: true, // Define if preview images should be cropped or only scaled: previewCrop: false, // Define if preview images should be resized as canvas elements: previewCanvas: true }, processActions: { // Loads the image given via data.files and data.index // as img element, if the browser supports the File API. // Accepts the options fileTypes (regular expression) // and maxFileSize (integer) to limit the files to load: loadImage: function (data, options) { if (options.disabled) { return data; } var that = this, file = data.files[data.index], dfd = $.Deferred(); if (($.type(options.maxFileSize) === 'number' && file.size > options.maxFileSize) || (options.fileTypes && !options.fileTypes.test(file.type)) || !loadImage( file, function (img) { if (img.src) { data.img = img; } dfd.resolveWith(that, [data]); }, options )) { return data; } return dfd.promise(); }, // Resizes the image given as data.canvas or data.img // and updates data.canvas or data.img with the resized image. // Also stores the resized image as preview property. // Accepts the options maxWidth, maxHeight, minWidth, // minHeight, canvas and crop: resizeImage: function (data, options) { if (options.disabled || !(data.canvas || data.img)) { return data; } options = $.extend({canvas: true}, options); var that = this, dfd = $.Deferred(), img = (options.canvas && data.canvas) || data.img, resolve = function (newImg) { if (newImg && (newImg.width !== img.width || newImg.height !== img.height || options.forceResize)) { data[newImg.getContext ? 'canvas' : 'img'] = newImg; } data.preview = newImg; dfd.resolveWith(that, [data]); }, thumbnail; if (data.exif) { if (options.orientation === true) { options.orientation = data.exif.get('Orientation'); } if (options.thumbnail) { thumbnail = data.exif.get('Thumbnail'); if (thumbnail) { loadImage(thumbnail, resolve, options); return dfd.promise(); } } // Prevent orienting the same image twice: if (data.orientation) { delete options.orientation; } else { data.orientation = options.orientation; } } if (img) { resolve(loadImage.scale(img, options)); return dfd.promise(); } return data; }, // Saves the processed image given as data.canvas // inplace at data.index of data.files: saveImage: function (data, options) { if (!data.canvas || options.disabled) { return data; } var that = this, file = data.files[data.index], dfd = $.Deferred(); if (data.canvas.toBlob) { data.canvas.toBlob( function (blob) { if (!blob.name) { if (file.type === blob.type) { blob.name = file.name; } else if (file.name) { blob.name = file.name.replace( /\.\w+$/, '.' + blob.type.substr(6) ); } } // Don't restore invalid meta data: if (file.type !== blob.type) { delete data.imageHead; } // Store the created blob at the position // of the original file in the files list: data.files[data.index] = blob; dfd.resolveWith(that, [data]); }, options.type || file.type, options.quality ); } else { return data; } return dfd.promise(); }, loadImageMetaData: function (data, options) { if (options.disabled) { return data; } var that = this, dfd = $.Deferred(); loadImage.parseMetaData(data.files[data.index], function (result) { $.extend(data, result); dfd.resolveWith(that, [data]); }, options); return dfd.promise(); }, saveImageMetaData: function (data, options) { if (!(data.imageHead && data.canvas && data.canvas.toBlob && !options.disabled)) { return data; } var file = data.files[data.index], blob = new Blob([ data.imageHead, // Resized images always have a head size of 20 bytes, // including the JPEG marker and a minimal JFIF header: this._blobSlice.call(file, 20) ], {type: file.type}); blob.name = file.name; data.files[data.index] = blob; return data; }, // Sets the resized version of the image as a property of the // file object, must be called after "saveImage": setImage: function (data, options) { if (data.preview && !options.disabled) { data.files[data.index][options.name || 'preview'] = data.preview; } return data; }, deleteImageReferences: function (data, options) { if (!options.disabled) { delete data.img; delete data.canvas; delete data.preview; delete data.imageHead; } return data; } } }); })); /* >>>>>>> END plugins/fileupload/jquery.fileupload-image.js <<<<<<< */ /* >>>>>>> plugins/fileupload/jquery.fileupload-validate.js <<<<<<< */ /* * jQuery File Upload Validation Plugin 1.1.3 * https://github.com/blueimp/jQuery-File-Upload * * Copyright 2013, Sebastian Tschan * https://blueimp.net * * Licensed under the MIT license: * http://www.opensource.org/licenses/MIT */ /* global define, require, window */ (function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: define([ 'jquery', './jquery.fileupload-process' ], factory); } else if (typeof exports === 'object') { // Node/CommonJS: factory(require('jquery')); } else { // Browser globals: factory( window.jQuery ); } }(function ($) { 'use strict'; // Append to the default processQueue: $.blueimp.fileupload.prototype.options.processQueue.push( { action: 'validate', // Always trigger this action, // even if the previous action was rejected: always: true, // Options taken from the global options map: acceptFileTypes: '@', maxFileSize: '@', minFileSize: '@', maxNumberOfFiles: '@', disabled: '@disableValidation' } ); // The File Upload Validation plugin extends the fileupload widget // with file validation functionality: $.widget('blueimp.fileupload', $.blueimp.fileupload, { options: { /* // The regular expression for allowed file types, matches // against either file type or file name: acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, // The maximum allowed file size in bytes: maxFileSize: 10000000, // 10 MB // The minimum allowed file size in bytes: minFileSize: undefined, // No minimal file size // The limit of files to be uploaded: maxNumberOfFiles: 10, */ // Function returning the current number of files, // has to be overriden for maxNumberOfFiles validation: getNumberOfFiles: $.noop, // Error and info messages: messages: { maxNumberOfFiles: 'Maximum number of files exceeded', acceptFileTypes: 'File type not allowed', maxFileSize: 'File is too large', minFileSize: 'File is too small' } }, processActions: { validate: function (data, options) { if (options.disabled) { return data; } var dfd = $.Deferred(), settings = this.options, file = data.files[data.index], fileSize; if (options.minFileSize || options.maxFileSize) { fileSize = file.size; } if ($.type(options.maxNumberOfFiles) === 'number' && (settings.getNumberOfFiles() || 0) + data.files.length > options.maxNumberOfFiles) { file.error = settings.i18n('maxNumberOfFiles'); } else if (options.acceptFileTypes && !(options.acceptFileTypes.test(file.type) || options.acceptFileTypes.test(file.name))) { file.error = settings.i18n('acceptFileTypes'); } else if (fileSize > options.maxFileSize) { file.error = settings.i18n('maxFileSize'); } else if ($.type(fileSize) === 'number' && fileSize < options.minFileSize) { file.error = settings.i18n('minFileSize'); } else { delete file.error; } if (file.error || data.files.error) { data.files.error = true; dfd.rejectWith(this, [data]); } else { dfd.resolveWith(this, [data]); } return dfd.promise(); } } }); })); /* >>>>>>> END plugins/fileupload/jquery.fileupload-validate.js <<<<<<< */ /* >>>>>>> plugins/api.js <<<<<<< */ var gapi=window.gapi=window.gapi||{};gapi._bs=new Date().getTime();(function(){/* gapi.loader.OBJECT_CREATE_TEST_OVERRIDE &&*/ var g=window,h=document,m=g.location,n=function(){},q=/\[native code\]/,u=function(a,b,c){return a[b]=a[b]||c},aa=function(a){for(var b=0;baa.call(b,e)&&c.push(e)}return c},U=function(){var a=A.nonce;if(void 0!==a)return a&&a===String(a)&&a.match(S)?a:A.nonce=null;var b=u(A,"us",[]);if(!b||!b.length)return A.nonce=null;for(var c=h.getElementsByTagName(R),d=0,e=c.length;d")}},V=function(a){var b=h.createElement(R);b.setAttribute("src",a);a=U();null!==a&&b.setAttribute("nonce",a);b.async="true";(a=h.getElementsByTagName(R)[0])?a.parentNode.insertBefore(b,a):(h.head||h.body||h.documentElement).appendChild(b)},qa=function(a,b){var c=b&&b._c;if(c)for(var d=0;d>>>>>> END plugins/api.js <<<<<<< */ /* >>>>>>> plugins/notificationfx/js/modernizr.custom.js <<<<<<< */ /* Modernizr 2.8.3 (Custom Build) | MIT & BSD * Build: http://modernizr.com/download/#-cssanimations-shiv-cssclasses-prefixed-testprop-testallprops-domprefixes-load */ ;window.Modernizr=function(a,b,c){function x(a){j.cssText=a}function y(a,b){return x(prefixes.join(a+";")+(b||""))}function z(a,b){return typeof a===b}function A(a,b){return!!~(""+a).indexOf(b)}function B(a,b){for(var d in a){var e=a[d];if(!A(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function C(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:z(f,"function")?f.bind(d||b):f}return!1}function D(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+n.join(d+" ")+d).split(" ");return z(b,"string")||z(b,"undefined")?B(e,b):(e=(a+" "+o.join(d+" ")+d).split(" "),C(e,b,c))}var d="2.8.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m="Webkit Moz O ms",n=m.split(" "),o=m.toLowerCase().split(" "),p={},q={},r={},s=[],t=s.slice,u,v={}.hasOwnProperty,w;!z(v,"undefined")&&!z(v.call,"undefined")?w=function(a,b){return v.call(a,b)}:w=function(a,b){return b in a&&z(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=t.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(t.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(t.call(arguments)))};return e}),p.cssanimations=function(){return D("animationName")};for(var E in p)w(p,E)&&(u=E.toLowerCase(),e[u]=p[E](),s.push((e[u]?"":"no-")+u));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)w(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},x(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._domPrefixes=o,e._cssomPrefixes=n,e.testProp=function(a){return B([a])},e.testAllProps=D,e.prefixed=function(a,b,c){return b?D(a,b,c):D(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+s.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f>>>>>> END plugins/notificationfx/js/modernizr.custom.js <<<<<<< */ /* >>>>>>> plugins/notificationfx/js/classie.js <<<<<<< */ /*! * classie - class helper functions * from bonzo https://github.com/ded/bonzo * * classie.has( elem, 'my-class' ) -> true/false * classie.add( elem, 'my-new-class' ) * classie.remove( elem, 'my-unwanted-class' ) * classie.toggle( elem, 'my-class' ) */ /*jshint browser: true, strict: true, undef: true */ /*global define: false */ ( function( window ) { 'use strict'; // class helper functions from bonzo https://github.com/ded/bonzo function classReg( className ) { return new RegExp("(^|\\s+)" + className + "(\\s+|$)"); } // classList support for class management // altho to be fair, the api sucks because it won't accept multiple classes at once var hasClass, addClass, removeClass; if ( 'classList' in document.documentElement ) { hasClass = function( elem, c ) { return elem.classList.contains( c ); }; addClass = function( elem, c ) { elem.classList.add( c ); }; removeClass = function( elem, c ) { elem.classList.remove( c ); }; } else { hasClass = function( elem, c ) { return classReg( c ).test( elem.className ); }; addClass = function( elem, c ) { if ( !hasClass( elem, c ) ) { elem.className = elem.className + ' ' + c; } }; removeClass = function( elem, c ) { elem.className = elem.className.replace( classReg( c ), ' ' ); }; } function toggleClass( elem, c ) { var fn = hasClass( elem, c ) ? removeClass : addClass; fn( elem, c ); } var classie = { // full names hasClass: hasClass, addClass: addClass, removeClass: removeClass, toggleClass: toggleClass, // short names has: hasClass, add: addClass, remove: removeClass, toggle: toggleClass }; // transport if ( typeof define === 'function' && define.amd ) { // AMD define( classie ); } else { // browser global window.classie = classie; } })( window ); /* >>>>>>> END plugins/notificationfx/js/classie.js <<<<<<< */ /* >>>>>>> plugins/notificationfx/js/snap.svg-min.js <<<<<<< */ // Snap.svg 0.3.0 // // Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // build: 2014-06-03 !function(a){var b,c,d="0.4.2",e="hasOwnProperty",f=/[\.\/]/,g=/\s*,\s*/,h="*",i=function(a,b){return a-b},j={n:{}},k=function(){for(var a=0,b=this.length;b>a;a++)if("undefined"!=typeof this[a])return this[a]},l=function(){for(var a=this.length;--a;)if("undefined"!=typeof this[a])return this[a]},m=function(a,d){a=String(a);var e,f=c,g=Array.prototype.slice.call(arguments,2),h=m.listeners(a),j=0,n=[],o={},p=[],q=b;p.firstDefined=k,p.lastDefined=l,b=a,c=0;for(var r=0,s=h.length;s>r;r++)"zIndex"in h[r]&&(n.push(h[r].zIndex),h[r].zIndex<0&&(o[h[r].zIndex]=h[r]));for(n.sort(i);n[j]<0;)if(e=o[n[j++]],p.push(e.apply(d,g)),c)return c=f,p;for(r=0;s>r;r++)if(e=h[r],"zIndex"in e)if(e.zIndex==n[j]){if(p.push(e.apply(d,g)),c)break;do if(j++,e=o[n[j]],e&&p.push(e.apply(d,g)),c)break;while(e)}else o[e.zIndex]=e;else if(p.push(e.apply(d,g)),c)break;return c=f,b=q,p};m._events=j,m.listeners=function(a){var b,c,d,e,g,i,k,l,m=a.split(f),n=j,o=[n],p=[];for(e=0,g=m.length;g>e;e++){for(l=[],i=0,k=o.length;k>i;i++)for(n=o[i].n,c=[n[m[e]],n[h]],d=2;d--;)b=c[d],b&&(l.push(b),p=p.concat(b.f||[]));o=l}return p},m.on=function(a,b){if(a=String(a),"function"!=typeof b)return function(){};for(var c=a.split(g),d=0,e=c.length;e>d;d++)!function(a){for(var c,d=a.split(f),e=j,g=0,h=d.length;h>g;g++)e=e.n,e=e.hasOwnProperty(d[g])&&e[d[g]]||(e[d[g]]={n:{}});for(e.f=e.f||[],g=0,h=e.f.length;h>g;g++)if(e.f[g]==b){c=!0;break}!c&&e.f.push(b)}(c[d]);return function(a){+a==+a&&(b.zIndex=+a)}},m.f=function(a){var b=[].slice.call(arguments,1);return function(){m.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}},m.stop=function(){c=1},m.nt=function(a){return a?new RegExp("(?:\\.|\\/|^)"+a+"(?:\\.|\\/|$)").test(b):b},m.nts=function(){return b.split(f)},m.off=m.unbind=function(a,b){if(!a)return void(m._events=j={n:{}});var c=a.split(g);if(c.length>1)for(var d=0,i=c.length;i>d;d++)m.off(c[d],b);else{c=a.split(f);var k,l,n,d,i,o,p,q=[j];for(d=0,i=c.length;i>d;d++)for(o=0;od;d++)for(k=q[d];k.n;){if(b){if(k.f){for(o=0,p=k.f.length;p>o;o++)if(k.f[o]==b){k.f.splice(o,1);break}!k.f.length&&delete k.f}for(l in k.n)if(k.n[e](l)&&k.n[l].f){var r=k.n[l].f;for(o=0,p=r.length;p>o;o++)if(r[o]==b){r.splice(o,1);break}!r.length&&delete k.n[l].f}}else{delete k.f;for(l in k.n)k.n[e](l)&&k.n[l].f&&delete k.n[l].f}k=k.n}}},m.once=function(a,b){var c=function(){return m.unbind(a,c),b.apply(this,arguments)};return m.on(a,c)},m.version=d,m.toString=function(){return"You are running Eve "+d},"undefined"!=typeof module&&module.exports?module.exports=m:"function"==typeof define&&define.amd?define("eve",[],function(){return m}):a.eve=m}(this),function(a,b){"function"==typeof define&&define.amd?define(["eve"],function(c){return b(a,c)}):b(a,a.eve)}(this,function(a,b){var c=function(b){var c={},d=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(a){setTimeout(a,16)},e=Array.isArray||function(a){return a instanceof Array||"[object Array]"==Object.prototype.toString.call(a)},f=0,g="M"+(+new Date).toString(36),h=function(){return g+(f++).toString(36)},i=Date.now||function(){return+new Date},j=function(a){var b=this;if(null==a)return b.s;var c=b.s-a;b.b+=b.dur*c,b.B+=b.dur*c,b.s=a},k=function(a){var b=this;return null==a?b.spd:void(b.spd=a)},l=function(a){var b=this;return null==a?b.dur:(b.s=b.s*a/b.dur,void(b.dur=a))},m=function(){var a=this;delete c[a.id],a.update(),b("mina.stop."+a.id,a)},n=function(){var a=this;a.pdif||(delete c[a.id],a.update(),a.pdif=a.get()-a.b)},o=function(){var a=this;a.pdif&&(a.b=a.get()-a.pdif,delete a.pdif,c[a.id]=a)},p=function(){var a,b=this;if(e(b.start)){a=[];for(var c=0,d=b.start.length;d>c;c++)a[c]=+b.start[c]+(b.end[c]-b.start[c])*b.easing(b.s)}else a=+b.start+(b.end-b.start)*b.easing(b.s);b.set(a)},q=function(){var a=0;for(var e in c)if(c.hasOwnProperty(e)){var f=c[e],g=f.get();a++,f.s=(g-f.b)/(f.dur/f.spd),f.s>=1&&(delete c[e],f.s=1,a--,function(a){setTimeout(function(){b("mina.finish."+a.id,a)})}(f)),f.update()}a&&d(q)},r=function(a,b,e,f,g,i,s){var t={id:h(),start:a,end:b,b:e,s:0,dur:f-e,spd:1,get:g,set:i,easing:s||r.linear,status:j,speed:k,duration:l,stop:m,pause:n,resume:o,update:p};c[t.id]=t;var u,v=0;for(u in c)if(c.hasOwnProperty(u)&&(v++,2==v))break;return 1==v&&d(q),t};return r.time=i,r.getById=function(a){return c[a]||null},r.linear=function(a){return a},r.easeout=function(a){return Math.pow(a,1.7)},r.easein=function(a){return Math.pow(a,.48)},r.easeinout=function(a){if(1==a)return 1;if(0==a)return 0;var b=.48-a/1.04,c=Math.sqrt(.1734+b*b),d=c-b,e=Math.pow(Math.abs(d),1/3)*(0>d?-1:1),f=-c-b,g=Math.pow(Math.abs(f),1/3)*(0>f?-1:1),h=e+g+.5;return 3*(1-h)*h*h+h*h*h},r.backin=function(a){if(1==a)return 1;var b=1.70158;return a*a*((b+1)*a-b)},r.backout=function(a){if(0==a)return 0;a-=1;var b=1.70158;return a*a*((b+1)*a+b)+1},r.elastic=function(a){return a==!!a?a:Math.pow(2,-10*a)*Math.sin(2*(a-.075)*Math.PI/.3)+1},r.bounce=function(a){var b,c=7.5625,d=2.75;return 1/d>a?b=c*a*a:2/d>a?(a-=1.5/d,b=c*a*a+.75):2.5/d>a?(a-=2.25/d,b=c*a*a+.9375):(a-=2.625/d,b=c*a*a+.984375),b},a.mina=r,r}("undefined"==typeof b?function(){}:b),d=function(){function d(a,b){if(a){if(a.tagName)return y(a);if(f(a,"array")&&d.set)return d.set.apply(d,a);if(a instanceof u)return a;if(null==b)return a=z.doc.querySelector(a),y(a)}return a=null==a?"100%":a,b=null==b?"100%":b,new x(a,b)}function e(a,b){if(b){if("#text"==a&&(a=z.doc.createTextNode(b.text||"")),"string"==typeof a&&(a=e(a)),"string"==typeof b)return"xlink:"==b.substring(0,6)?a.getAttributeNS(W,b.substring(6)):"xml:"==b.substring(0,4)?a.getAttributeNS(X,b.substring(4)):a.getAttribute(b);for(var c in b)if(b[A](c)){var d=B(b[c]);d?"xlink:"==c.substring(0,6)?a.setAttributeNS(W,c.substring(6),d):"xml:"==c.substring(0,4)?a.setAttributeNS(X,c.substring(4),d):a.setAttribute(c,d):a.removeAttribute(c)}}else a=z.doc.createElementNS(X,a);return a}function f(a,b){return b=B.prototype.toLowerCase.call(b),"finite"==b?isFinite(a):"array"==b&&(a instanceof Array||Array.isArray&&Array.isArray(a))?!0:"null"==b&&null===a||b==typeof a&&null!==a||"object"==b&&a===Object(a)||L.call(a).slice(8,-1).toLowerCase()==b}function h(a){if("function"==typeof a||Object(a)!==a)return a;var b=new a.constructor;for(var c in a)a[A](c)&&(b[c]=h(a[c]));return b}function i(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function j(a,b,c){function d(){var e=Array.prototype.slice.call(arguments,0),f=e.join("␀"),g=d.cache=d.cache||{},h=d.count=d.count||[];return g[A](f)?(i(h,f),c?c(g[f]):g[f]):(h.length>=1e3&&delete g[h.shift()],h.push(f),g[f]=a.apply(b,e),c?c(g[f]):g[f])}return d}function k(a,b,c,d,e,f){if(null==e){var g=a-c,h=b-d;return g||h?(180+180*E.atan2(-h,-g)/I+360)%360:0}return k(a,b,e,f)-k(c,d,e,f)}function l(a){return a%360*I/180}function m(a){return 180*a/I%360}function n(a){var b=[];return a=a.replace(/(?:^|\s)(\w+)\(([^)]+)\)/g,function(a,c,d){return d=d.split(/\s*,\s*|\s+/),"rotate"==c&&1==d.length&&d.push(0,0),"scale"==c&&(d.length>2?d=d.slice(0,2):2==d.length&&d.push(0,0),1==d.length&&d.push(d[0],0,0)),b.push("skewX"==c?["m",1,0,E.tan(l(d[0])),1,0,0]:"skewY"==c?["m",1,E.tan(l(d[0])),0,1,0,0]:[c.charAt(0)].concat(d)),a}),b}function o(a,b){var c=eb(a),e=new d.Matrix;if(c)for(var f=0,g=c.length;g>f;f++){var h,i,j,k,l,m=c[f],n=m.length,o=B(m[0]).toLowerCase(),p=m[0]!=o,q=p?e.invert():0;"t"==o&&2==n?e.translate(m[1],0):"t"==o&&3==n?p?(h=q.x(0,0),i=q.y(0,0),j=q.x(m[1],m[2]),k=q.y(m[1],m[2]),e.translate(j-h,k-i)):e.translate(m[1],m[2]):"r"==o?2==n?(l=l||b,e.rotate(m[1],l.x+l.width/2,l.y+l.height/2)):4==n&&(p?(j=q.x(m[2],m[3]),k=q.y(m[2],m[3]),e.rotate(m[1],j,k)):e.rotate(m[1],m[2],m[3])):"s"==o?2==n||3==n?(l=l||b,e.scale(m[1],m[n-1],l.x+l.width/2,l.y+l.height/2)):4==n?p?(j=q.x(m[2],m[3]),k=q.y(m[2],m[3]),e.scale(m[1],m[1],j,k)):e.scale(m[1],m[1],m[2],m[3]):5==n&&(p?(j=q.x(m[3],m[4]),k=q.y(m[3],m[4]),e.scale(m[1],m[2],j,k)):e.scale(m[1],m[2],m[3],m[4])):"m"==o&&7==n&&e.add(m[1],m[2],m[3],m[4],m[5],m[6])}return e}function p(a,b){if(null==b){var c=!0;if(b=a.node.getAttribute("linearGradient"==a.type||"radialGradient"==a.type?"gradientTransform":"pattern"==a.type?"patternTransform":"transform"),!b)return new d.Matrix;b=n(b)}else b=d._.rgTransform.test(b)?B(b).replace(/\.{3}|\u2026/g,a._.transform||J):n(b),f(b,"array")&&(b=d.path?d.path.toString.call(b):B(b)),a._.transform=b;var e=o(b,a.getBBox(1));return c?e:void(a.matrix=e)}function q(a){var b=a.node.ownerSVGElement&&y(a.node.ownerSVGElement)||a.node.parentNode&&y(a.node.parentNode)||d.select("svg")||d(0,0),c=b.select("defs"),e=null==c?!1:c.node;return e||(e=w("defs",b.node).node),e}function r(a){return a.node.ownerSVGElement&&y(a.node.ownerSVGElement)||d.select("svg")}function s(a,b,c){function d(a){if(null==a)return J;if(a==+a)return a;e(j,{width:a});try{return j.getBBox().width}catch(b){return 0}}function f(a){if(null==a)return J;if(a==+a)return a;e(j,{height:a});try{return j.getBBox().height}catch(b){return 0}}function g(d,e){null==b?i[d]=e(a.attr(d)||0):d==b&&(i=e(null==c?a.attr(d)||0:c))}var h=r(a).node,i={},j=h.querySelector(".svg---mgr");switch(j||(j=e("rect"),e(j,{x:-9e9,y:-9e9,width:10,height:10,"class":"svg---mgr",fill:"none"}),h.appendChild(j)),a.type){case"rect":g("rx",d),g("ry",f);case"image":g("width",d),g("height",f);case"text":g("x",d),g("y",f);break;case"circle":g("cx",d),g("cy",f),g("r",d);break;case"ellipse":g("cx",d),g("cy",f),g("rx",d),g("ry",f);break;case"line":g("x1",d),g("x2",d),g("y1",f),g("y2",f);break;case"marker":g("refX",d),g("markerWidth",d),g("refY",f),g("markerHeight",f);break;case"radialGradient":g("fx",d),g("fy",f);break;case"tspan":g("dx",d),g("dy",f);break;default:g(b,d)}return h.removeChild(j),i}function t(a){f(a,"array")||(a=Array.prototype.slice.call(arguments,0));for(var b=0,c=0,d=this.node;this[b];)delete this[b++];for(b=0;be)return b-e;if(e>a-c)return b-e+a}return b},d.getRGB=j(function(a){if(!a||(a=B(a)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bb};if("none"==a)return{r:-1,g:-1,b:-1,hex:"none",toString:bb};if(!(P[A](a.toLowerCase().substring(0,2))||"#"==a.charAt())&&(a=$(a)),!a)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bb};var b,c,e,g,h,i,j=a.match(M);return j?(j[2]&&(e=D(j[2].substring(5),16),c=D(j[2].substring(3,5),16),b=D(j[2].substring(1,3),16)),j[3]&&(e=D((h=j[3].charAt(3))+h,16),c=D((h=j[3].charAt(2))+h,16),b=D((h=j[3].charAt(1))+h,16)),j[4]&&(i=j[4].split(O),b=C(i[0]),"%"==i[0].slice(-1)&&(b*=2.55),c=C(i[1]),"%"==i[1].slice(-1)&&(c*=2.55),e=C(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),"rgba"==j[1].toLowerCase().slice(0,4)&&(g=C(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100)),j[5]?(i=j[5].split(O),b=C(i[0]),"%"==i[0].slice(-1)&&(b/=100),c=C(i[1]),"%"==i[1].slice(-1)&&(c/=100),e=C(i[2]),"%"==i[2].slice(-1)&&(e/=100),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(b/=360),"hsba"==j[1].toLowerCase().slice(0,4)&&(g=C(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),d.hsb2rgb(b,c,e,g)):j[6]?(i=j[6].split(O),b=C(i[0]),"%"==i[0].slice(-1)&&(b/=100),c=C(i[1]),"%"==i[1].slice(-1)&&(c/=100),e=C(i[2]),"%"==i[2].slice(-1)&&(e/=100),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(b/=360),"hsla"==j[1].toLowerCase().slice(0,4)&&(g=C(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),d.hsl2rgb(b,c,e,g)):(b=G(E.round(b),255),c=G(E.round(c),255),e=G(E.round(e),255),g=G(F(g,0),1),j={r:b,g:c,b:e,toString:bb},j.hex="#"+(16777216|e|c<<8|b<<16).toString(16).slice(1),j.opacity=f(g,"finite")?g:1,j)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bb}},d),d.hsb=j(function(a,b,c){return d.hsb2rgb(a,b,c).hex}),d.hsl=j(function(a,b,c){return d.hsl2rgb(a,b,c).hex}),d.rgb=j(function(a,b,c,d){if(f(d,"finite")){var e=E.round;return"rgba("+[e(a),e(b),e(c),+d.toFixed(2)]+")"}return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)});var $=function(a){var b=z.doc.getElementsByTagName("head")[0]||z.doc.getElementsByTagName("svg")[0],c="rgb(255, 0, 0)";return($=j(function(a){if("red"==a.toLowerCase())return c;b.style.color=c,b.style.color=a;var d=z.doc.defaultView.getComputedStyle(b,J).getPropertyValue("color");return d==c?null:d}))(a)},_=function(){return"hsb("+[this.h,this.s,this.b]+")"},ab=function(){return"hsl("+[this.h,this.s,this.l]+")"},bb=function(){return 1==this.opacity||null==this.opacity?this.hex:"rgba("+[this.r,this.g,this.b,this.opacity]+")"},cb=function(a,b,c){if(null==b&&f(a,"object")&&"r"in a&&"g"in a&&"b"in a&&(c=a.b,b=a.g,a=a.r),null==b&&f(a,string)){var e=d.getRGB(a);a=e.r,b=e.g,c=e.b}return(a>1||b>1||c>1)&&(a/=255,b/=255,c/=255),[a,b,c]},db=function(a,b,c,e){a=E.round(255*a),b=E.round(255*b),c=E.round(255*c);var g={r:a,g:b,b:c,opacity:f(e,"finite")?e:1,hex:d.rgb(a,b,c),toString:bb};return f(e,"finite")&&(g.opacity=e),g};d.color=function(a){var b;return f(a,"object")&&"h"in a&&"s"in a&&"b"in a?(b=d.hsb2rgb(a),a.r=b.r,a.g=b.g,a.b=b.b,a.opacity=1,a.hex=b.hex):f(a,"object")&&"h"in a&&"s"in a&&"l"in a?(b=d.hsl2rgb(a),a.r=b.r,a.g=b.g,a.b=b.b,a.opacity=1,a.hex=b.hex):(f(a,"string")&&(a=d.getRGB(a)),f(a,"object")&&"r"in a&&"g"in a&&"b"in a&&!("error"in a)?(b=d.rgb2hsl(a),a.h=b.h,a.s=b.s,a.l=b.l,b=d.rgb2hsb(a),a.v=b.b):(a={hex:"none"},a.r=a.g=a.b=a.h=a.s=a.v=a.l=-1,a.error=1)),a.toString=bb,a},d.hsb2rgb=function(a,b,c,d){f(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,a=a.h,d=a.o),a*=360;var e,g,h,i,j;return a=a%360/60,j=c*b,i=j*(1-H(a%2-1)),e=g=h=c-j,a=~~a,e+=[j,i,0,0,i,j][a],g+=[i,j,j,i,0,0][a],h+=[0,0,i,j,j,i][a],db(e,g,h,d)},d.hsl2rgb=function(a,b,c,d){f(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h),(a>1||b>1||c>1)&&(a/=360,b/=100,c/=100),a*=360;var e,g,h,i,j;return a=a%360/60,j=2*b*(.5>c?c:1-c),i=j*(1-H(a%2-1)),e=g=h=c-j/2,a=~~a,e+=[j,i,0,0,i,j][a],g+=[i,j,j,i,0,0][a],h+=[0,0,i,j,j,i][a],db(e,g,h,d)},d.rgb2hsb=function(a,b,c){c=cb(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;return f=F(a,b,c),g=f-G(a,b,c),d=0==g?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=0==g?0:g/f,{h:d,s:e,b:f,toString:_}},d.rgb2hsl=function(a,b,c){c=cb(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;return g=F(a,b,c),h=G(a,b,c),i=g-h,d=0==i?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=0==i?0:.5>f?i/(2*f):i/(2-2*f),{h:d,s:e,l:f,toString:ab}},d.parsePathString=function(a){if(!a)return null;var b=d.path(a);if(b.arr)return d.path.clone(b.arr);var c={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},e=[];return f(a,"array")&&f(a[0],"array")&&(e=d.path.clone(a)),e.length||B(a).replace(Q,function(a,b,d){var f=[],g=b.toLowerCase();if(d.replace(S,function(a,b){b&&f.push(+b)}),"m"==g&&f.length>2&&(e.push([b].concat(f.splice(0,2))),g="l",b="m"==b?"l":"L"),"o"==g&&1==f.length&&e.push([b,f[0]]),"r"==g)e.push([b].concat(f));else for(;f.length>=c[g]&&(e.push([b].concat(f.splice(0,c[g]))),c[g]););}),e.toString=d.path.toString,b.arr=d.path.clone(e),e};var eb=d.parseTransformString=function(a){if(!a)return null;var b=[];return f(a,"array")&&f(a[0],"array")&&(b=d.path.clone(a)),b.length||B(a).replace(R,function(a,c,d){{var e=[];c.toLowerCase()}d.replace(S,function(a,b){b&&e.push(+b)}),b.push([c].concat(e))}),b.toString=d.path.toString,b};d._.svgTransform2string=n,d._.rgTransform=new RegExp("^[a-z]["+N+"]*-?\\.?\\d","i"),d._.transform2matrix=o,d._unit2px=s;z.doc.contains||z.doc.compareDocumentPosition?function(a,b){var c=9==a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a==d||!(!d||1!=d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)for(;b;)if(b=b.parentNode,b==a)return!0;return!1};d._.getSomeDefs=q,d._.getSomeSVG=r,d.select=function(a){return y(z.doc.querySelector(a))},d.selectAll=function(a){for(var b=z.doc.querySelectorAll(a),c=(d.set||Array)(),e=0;ej;j++){d=f[j],b(d,"fill"),b(d,"stroke"),b(d,"filter"),b(d,"mask"),b(d,"clip-path"),c(d);var l=e(d.node,"id");l&&(e(d.node,{id:d.id}),h.push({old:l,id:d.id}))}for(j=0,k=h.length;k>j;j++){var m=i[h[j].old];if(m)for(var n=0,o=m.length;o>n;n++)m[n](h[j].id)}}function h(a,b,c){return function(d){var e=d.slice(a,b);return 1==e.length&&(e=e[0]),c?c(e):e}}function i(a){return function(){var b=a?"<"+this.type:"",c=this.node.attributes,d=this.node.childNodes;if(a)for(var e=0,f=c.length;f>e;e++)b+=" "+c[e].name+'="'+c[e].value.replace(/"/g,'\\"')+'"';if(d.length){for(a&&(b+=">"),e=0,f=d.length;f>e;e++)3==d[e].nodeType?b+=d[e].nodeValue:1==d[e].nodeType&&(b+=y(d[e]).toString());a&&(b+="")}else a&&(b+="/>");return b}}a.attr=function(a,c){{var d=this;d.node}if(!a)return d;if(f(a,"string")){if(!(arguments.length>1))return b("snap.util.getattr."+a,d).firstDefined();var e={};e[a]=c,a=e}for(var g in a)a[A](g)&&b("snap.util.attr."+g,d,a[g]);return d},a.getBBox=function(a){if(!d.Matrix||!d.path)return this.node.getBBox();var b=this,c=new d.Matrix;if(b.removed)return d._.box();for(;"use"==b.type;)if(a||(c=c.add(b.transform().localMatrix.translate(b.attr("x")||0,b.attr("y")||0))),b.original)b=b.original;else{var e=b.attr("xlink:href");b=b.original=b.node.ownerDocument.getElementById(e.substring(e.indexOf("#")+1))}var f=b._,g=d.path.get[b.type]||d.path.get.deflt;try{return a?(f.bboxwt=g?d.path.getBBox(b.realPath=g(b)):d._.box(b.node.getBBox()),d._.box(f.bboxwt)):(b.realPath=g(b),b.matrix=b.transform().localMatrix,f.bbox=d.path.getBBox(d.path.map(b.realPath,c.add(b.matrix))),d._.box(f.bbox))}catch(h){return d._.box()}};var j=function(){return this.string};a.transform=function(a){var b=this._;if(null==a){for(var c,f=this,g=new d.Matrix(this.node.getCTM()),h=p(this),i=[h],k=new d.Matrix,l=h.toTransformString(),m=B(h)==B(this.matrix)?B(b.transform):l;"svg"!=f.type&&(f=f.parent());)i.push(p(f));for(c=i.length;c--;)k.add(i[c]);return{string:m,globalMatrix:g,totalMatrix:k,localMatrix:h,diffMatrix:g.clone().add(h.invert()),global:g.toTransformString(),total:k.toTransformString(),local:l,toString:j}}return a instanceof d.Matrix?this.matrix=a:p(this,a),this.node&&("linearGradient"==this.type||"radialGradient"==this.type?e(this.node,{gradientTransform:this.matrix}):"pattern"==this.type?e(this.node,{patternTransform:this.matrix}):e(this.node,{transform:this.matrix})),this},a.parent=function(){return y(this.node.parentNode)},a.append=a.add=function(a){if(a){if("set"==a.type){var b=this;return a.forEach(function(a){b.add(a)}),this}a=y(a),this.node.appendChild(a.node),a.paper=this.paper}return this},a.appendTo=function(a){return a&&(a=y(a),a.append(this)),this},a.prepend=function(a){if(a){if("set"==a.type){var b,c=this;return a.forEach(function(a){b?b.after(a):c.prepend(a),b=a}),this}a=y(a);var d=a.parent();this.node.insertBefore(a.node,this.node.firstChild),this.add&&this.add(),a.paper=this.paper,this.parent()&&this.parent().add(),d&&d.add()}return this},a.prependTo=function(a){return a=y(a),a.prepend(this),this},a.before=function(a){if("set"==a.type){var b=this;return a.forEach(function(a){var c=a.parent();b.node.parentNode.insertBefore(a.node,b.node),c&&c.add()}),this.parent().add(),this}a=y(a);var c=a.parent();return this.node.parentNode.insertBefore(a.node,this.node),this.parent()&&this.parent().add(),c&&c.add(),a.paper=this.paper,this},a.after=function(a){a=y(a);var b=a.parent();return this.node.nextSibling?this.node.parentNode.insertBefore(a.node,this.node.nextSibling):this.node.parentNode.appendChild(a.node),this.parent()&&this.parent().add(),b&&b.add(),a.paper=this.paper,this},a.insertBefore=function(a){a=y(a);var b=this.parent();return a.node.parentNode.insertBefore(this.node,a.node),this.paper=a.paper,b&&b.add(),a.parent()&&a.parent().add(),this},a.insertAfter=function(a){a=y(a);var b=this.parent();return a.node.parentNode.insertBefore(this.node,a.node.nextSibling),this.paper=a.paper,b&&b.add(),a.parent()&&a.parent().add(),this},a.remove=function(){var a=this.parent();return this.node.parentNode&&this.node.parentNode.removeChild(this.node),delete this.paper,this.removed=!0,a&&a.add(),this},a.select=function(a){return y(this.node.querySelector(a))},a.selectAll=function(a){for(var b=this.node.querySelectorAll(a),c=(d.set||Array)(),e=0;eb;b++)a[b].stop();return this},a.animate=function(a,d,e,g){"function"!=typeof e||e.length||(g=e,e=c.linear),a instanceof l&&(g=a.callback,e=a.easing,d=e.dur,a=a.attr);var i,j,k,m,n=[],o=[],p={},q=this;for(var r in a)if(a[A](r)){q.equal?(m=q.equal(r,B(a[r])),i=m.from,j=m.to,k=m.f):(i=+q.attr(r),j=+a[r]);var s=f(i,"array")?i.length:1;p[r]=h(n.length,n.length+s,k),n=n.concat(i),o=o.concat(j)}var t=c.time(),u=c(n,o,t,t+d,c.time,function(a){var b={};for(var c in p)p[A](c)&&(b[c]=p[c](a));q.attr(b)},e);return q.anims[u.id]=u,u._attrs=a,u._callback=g,b("snap.animcreated."+q.id,u),b.once("mina.finish."+u.id,function(){delete q.anims[u.id],g&&g.call(q)}),b.once("mina.stop."+u.id,function(){delete q.anims[u.id]}),q};var m={};a.data=function(a,c){var e=m[this.id]=m[this.id]||{};if(0==arguments.length)return b("snap.data.get."+this.id,this,e,null),e;if(1==arguments.length){if(d.is(a,"object")){for(var f in a)a[A](f)&&this.data(f,a[f]);return this}return b("snap.data.get."+this.id,this,e[a],a),e[a]}return e[a]=c,b("snap.data.set."+this.id,this,c,a),this},a.removeData=function(a){return null==a?m[this.id]={}:m[this.id]&&delete m[this.id][a],this},a.outerSVG=a.toString=i(1),a.innerSVG=i()}(u.prototype),d.parse=function(a){var b=z.doc.createDocumentFragment(),c=!0,d=z.doc.createElement("div");if(a=B(a),a.match(/^\s*<\s*svg(?:\s|>)/)||(a=""+a+"",c=!1),d.innerHTML=a,a=d.getElementsByTagName("svg")[0])if(c)b=a;else for(;a.firstChild;)b.appendChild(a.firstChild);return d.innerHTML=J,new v(b)},v.prototype.select=u.prototype.select,v.prototype.selectAll=u.prototype.selectAll,d.fragment=function(){for(var a=Array.prototype.slice.call(arguments,0),b=z.doc.createDocumentFragment(),c=0,e=a.length;e>c;c++){var f=a[c];f.node&&f.node.nodeType&&b.appendChild(f.node),f.nodeType&&b.appendChild(f),"string"==typeof f&&b.appendChild(d.parse(f).node)}return new v(b)},d._.make=w,d._.wrap=y,x.prototype.el=function(a,b){var c=w(a,this.node);return b&&c.attr(b),c},b.on("snap.util.getattr",function(){var a=b.nt();a=a.substring(a.lastIndexOf(".")+1);var c=a.replace(/[A-Z]/g,function(a){return"-"+a.toLowerCase()});return fb[A](c)?this.node.ownerDocument.defaultView.getComputedStyle(this.node,null).getPropertyValue(c):e(this.node,a)});var fb={"alignment-baseline":0,"baseline-shift":0,clip:0,"clip-path":0,"clip-rule":0,color:0,"color-interpolation":0,"color-interpolation-filters":0,"color-profile":0,"color-rendering":0,cursor:0,direction:0,display:0,"dominant-baseline":0,"enable-background":0,fill:0,"fill-opacity":0,"fill-rule":0,filter:0,"flood-color":0,"flood-opacity":0,font:0,"font-family":0,"font-size":0,"font-size-adjust":0,"font-stretch":0,"font-style":0,"font-variant":0,"font-weight":0,"glyph-orientation-horizontal":0,"glyph-orientation-vertical":0,"image-rendering":0,kerning:0,"letter-spacing":0,"lighting-color":0,marker:0,"marker-end":0,"marker-mid":0,"marker-start":0,mask:0,opacity:0,overflow:0,"pointer-events":0,"shape-rendering":0,"stop-color":0,"stop-opacity":0,stroke:0,"stroke-dasharray":0,"stroke-dashoffset":0,"stroke-linecap":0,"stroke-linejoin":0,"stroke-miterlimit":0,"stroke-opacity":0,"stroke-width":0,"text-anchor":0,"text-decoration":0,"text-rendering":0,"unicode-bidi":0,visibility:0,"word-spacing":0,"writing-mode":0};b.on("snap.util.attr",function(a){var c=b.nt(),d={};c=c.substring(c.lastIndexOf(".")+1),d[c]=a;var f=c.replace(/-(\w)/gi,function(a,b){return b.toUpperCase()}),g=c.replace(/[A-Z]/g,function(a){return"-"+a.toLowerCase()});fb[A](g)?this.node.style[f]=null==a?J:a:e(this.node,d)}),function(){}(x.prototype),d.ajax=function(a,c,d,e){var g=new XMLHttpRequest,h=V();if(g){if(f(c,"function"))e=d,d=c,c=null;else if(f(c,"object")){var i=[];for(var j in c)c.hasOwnProperty(j)&&i.push(encodeURIComponent(j)+"="+encodeURIComponent(c[j]));c=i.join("&")}return g.open(c?"POST":"GET",a,!0),c&&(g.setRequestHeader("X-Requested-With","XMLHttpRequest"),g.setRequestHeader("Content-type","application/x-www-form-urlencoded")),d&&(b.once("snap.ajax."+h+".0",d),b.once("snap.ajax."+h+".200",d),b.once("snap.ajax."+h+".304",d)),g.onreadystatechange=function(){4==g.readyState&&b("snap.ajax."+h+"."+g.status,e,g)},4==g.readyState?g:(g.send(c),g)}},d.load=function(a,b,c){d.ajax(a,function(a){var e=d.parse(a.responseText);c?b.call(c,e):b(e)})};var gb=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,h=e.clientLeft||d.clientLeft||0,i=b.top+(g.win.pageYOffset||e.scrollTop||d.scrollTop)-f,j=b.left+(g.win.pageXOffset||e.scrollLeft||d.scrollLeft)-h;return{y:i,x:j}};return d.getElementByPoint=function(a,b){var c=this,d=(c.canvas,z.doc.elementFromPoint(a,b));if(z.win.opera&&"svg"==d.tagName){var e=gb(d),f=d.createSVGRect();f.x=a-e.x,f.y=b-e.y,f.width=f.height=1;var g=d.getIntersectionList(f,null);g.length&&(d=g[g.length-1])}return d?y(d):null},d.plugin=function(a){a(d,u,x,z,v)},z.win.Snap=d,d}();return d.plugin(function(a){function b(a,b,d,e,f,g){return null==b&&"[object SVGMatrix]"==c.call(a)?(this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.e=a.e,void(this.f=a.f)):void(null!=a?(this.a=+a,this.b=+b,this.c=+d,this.d=+e,this.e=+f,this.f=+g):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0))}var c=Object.prototype.toString,d=String,e=Math,f="";!function(c){function g(a){return a[0]*a[0]+a[1]*a[1] }function h(a){var b=e.sqrt(g(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)}c.add=function(a,c,d,e,f,g){var h,i,j,k,l=[[],[],[]],m=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],n=[[a,d,f],[c,e,g],[0,0,1]];for(a&&a instanceof b&&(n=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]),h=0;3>h;h++)for(i=0;3>i;i++){for(k=0,j=0;3>j;j++)k+=m[h][j]*n[j][i];l[h][i]=k}return this.a=l[0][0],this.b=l[1][0],this.c=l[0][1],this.d=l[1][1],this.e=l[0][2],this.f=l[1][2],this},c.invert=function(){var a=this,c=a.a*a.d-a.b*a.c;return new b(a.d/c,-a.b/c,-a.c/c,a.a/c,(a.c*a.f-a.d*a.e)/c,(a.b*a.e-a.a*a.f)/c)},c.clone=function(){return new b(this.a,this.b,this.c,this.d,this.e,this.f)},c.translate=function(a,b){return this.add(1,0,0,1,a,b)},c.scale=function(a,b,c,d){return null==b&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d),this},c.rotate=function(b,c,d){b=a.rad(b),c=c||0,d=d||0;var f=+e.cos(b).toFixed(9),g=+e.sin(b).toFixed(9);return this.add(f,g,-g,f,c,d),this.add(1,0,0,1,-c,-d)},c.x=function(a,b){return a*this.a+b*this.c+this.e},c.y=function(a,b){return a*this.b+b*this.d+this.f},c.get=function(a){return+this[d.fromCharCode(97+a)].toFixed(4)},c.toString=function(){return"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")"},c.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},c.determinant=function(){return this.a*this.d-this.b*this.c},c.split=function(){var b={};b.dx=this.e,b.dy=this.f;var c=[[this.a,this.c],[this.b,this.d]];b.scalex=e.sqrt(g(c[0])),h(c[0]),b.shear=c[0][0]*c[1][0]+c[0][1]*c[1][1],c[1]=[c[1][0]-c[0][0]*b.shear,c[1][1]-c[0][1]*b.shear],b.scaley=e.sqrt(g(c[1])),h(c[1]),b.shear/=b.scaley,this.determinant()<0&&(b.scalex=-b.scalex);var d=-c[0][1],f=c[1][1];return 0>f?(b.rotate=a.deg(e.acos(f)),0>d&&(b.rotate=360-b.rotate)):b.rotate=a.deg(e.asin(d)),b.isSimple=!(+b.shear.toFixed(9)||b.scalex.toFixed(9)!=b.scaley.toFixed(9)&&b.rotate),b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate,b.noRotation=!+b.shear.toFixed(9)&&!b.rotate,b},c.toTransformString=function(a){var b=a||this.split();return+b.shear.toFixed(9)?"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]:(b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4),(b.dx||b.dy?"t"+[+b.dx.toFixed(4),+b.dy.toFixed(4)]:f)+(1!=b.scalex||1!=b.scaley?"s"+[b.scalex,b.scaley,0,0]:f)+(b.rotate?"r"+[+b.rotate.toFixed(4),0,0]:f))}}(b.prototype),a.Matrix=b,a.matrix=function(a,c,d,e,f,g){return new b(a,c,d,e,f,g)}}),d.plugin(function(a,c,d,e,f){function g(d){return function(e){if(b.stop(),e instanceof f&&1==e.node.childNodes.length&&("radialGradient"==e.node.firstChild.tagName||"linearGradient"==e.node.firstChild.tagName||"pattern"==e.node.firstChild.tagName)&&(e=e.node.firstChild,n(this).appendChild(e),e=l(e)),e instanceof c)if("radialGradient"==e.type||"linearGradient"==e.type||"pattern"==e.type){e.node.id||p(e.node,{id:e.id});var g=q(e.node.id)}else g=e.attr(d);else if(g=a.color(e),g.error){var h=a(n(this).ownerSVGElement).gradient(e);h?(h.node.id||p(h.node,{id:h.id}),g=q(h.node.id)):g=e}else g=r(g);var i={};i[d]=g,p(this.node,i),this.node.style[d]=t}}function h(a){b.stop(),a==+a&&(a+="px"),this.node.style.fontSize=a}function i(a){for(var b=[],c=a.childNodes,d=0,e=c.length;e>d;d++){var f=c[d];3==f.nodeType&&b.push(f.nodeValue),"tspan"==f.tagName&&b.push(1==f.childNodes.length&&3==f.firstChild.nodeType?f.firstChild.nodeValue:i(f))}return b}function j(){return b.stop(),this.node.style.fontSize}var k=a._.make,l=a._.wrap,m=a.is,n=a._.getSomeDefs,o=/^url\(#?([^)]+)\)$/,p=a._.$,q=a.url,r=String,s=a._.separator,t="";b.on("snap.util.attr.mask",function(a){if(a instanceof c||a instanceof f){if(b.stop(),a instanceof f&&1==a.node.childNodes.length&&(a=a.node.firstChild,n(this).appendChild(a),a=l(a)),"mask"==a.type)var d=a;else d=k("mask",n(this)),d.node.appendChild(a.node);!d.node.id&&p(d.node,{id:d.id}),p(this.node,{mask:q(d.id)})}}),function(a){b.on("snap.util.attr.clip",a),b.on("snap.util.attr.clip-path",a),b.on("snap.util.attr.clipPath",a)}(function(a){if(a instanceof c||a instanceof f){if(b.stop(),"clipPath"==a.type)var d=a;else d=k("clipPath",n(this)),d.node.appendChild(a.node),!d.node.id&&p(d.node,{id:d.id});p(this.node,{"clip-path":q(d.id)})}}),b.on("snap.util.attr.fill",g("fill")),b.on("snap.util.attr.stroke",g("stroke"));var u=/^([lr])(?:\(([^)]*)\))?(.*)$/i;b.on("snap.util.grad.parse",function(a){a=r(a);var b=a.match(u);if(!b)return null;var c=b[1],d=b[2],e=b[3];return d=d.split(/\s*,\s*/).map(function(a){return+a==a?+a:a}),1==d.length&&0==d[0]&&(d=[]),e=e.split("-"),e=e.map(function(a){a=a.split(":");var b={color:a[0]};return a[1]&&(b.offset=parseFloat(a[1])),b}),{type:c,params:d,stops:e}}),b.on("snap.util.attr.d",function(c){b.stop(),m(c,"array")&&m(c[0],"array")&&(c=a.path.toString.call(c)),c=r(c),c.match(/[ruo]/i)&&(c=a.path.toAbsolute(c)),p(this.node,{d:c})})(-1),b.on("snap.util.attr.#text",function(a){b.stop(),a=r(a);for(var c=e.doc.createTextNode(a);this.node.firstChild;)this.node.removeChild(this.node.firstChild);this.node.appendChild(c)})(-1),b.on("snap.util.attr.path",function(a){b.stop(),this.attr({d:a})})(-1),b.on("snap.util.attr.class",function(a){b.stop(),this.node.className.baseVal=a})(-1),b.on("snap.util.attr.viewBox",function(a){var c;c=m(a,"object")&&"x"in a?[a.x,a.y,a.width,a.height].join(" "):m(a,"array")?a.join(" "):a,p(this.node,{viewBox:c}),b.stop()})(-1),b.on("snap.util.attr.transform",function(a){this.transform(a),b.stop()})(-1),b.on("snap.util.attr.r",function(a){"rect"==this.type&&(b.stop(),p(this.node,{rx:a,ry:a}))})(-1),b.on("snap.util.attr.textpath",function(a){if(b.stop(),"text"==this.type){var d,e,f;if(!a&&this.textPath){for(e=this.textPath;e.node.firstChild;)this.node.appendChild(e.node.firstChild);return e.remove(),void delete this.textPath}if(m(a,"string")){var g=n(this),h=l(g.parentNode).path(a);g.appendChild(h.node),d=h.id,h.attr({id:d})}else a=l(a),a instanceof c&&(d=a.attr("id"),d||(d=a.id,a.attr({id:d})));if(d)if(e=this.textPath,f=this.node,e)e.attr({"xlink:href":"#"+d});else{for(e=p("textPath",{"xlink:href":"#"+d});f.firstChild;)e.appendChild(f.firstChild);f.appendChild(e),this.textPath=l(e)}}})(-1),b.on("snap.util.attr.text",function(a){if("text"==this.type){for(var c=this.node,d=function(a){var b=p("tspan");if(m(a,"array"))for(var c=0;c1&&(a=Array.prototype.slice.call(arguments,0));var b={};return g(a,"object")&&!g(a,"array")?b=a:null!=a&&(b={points:a}),this.el("polyline",b)},f.polygon=function(a){arguments.length>1&&(a=Array.prototype.slice.call(arguments,0));var b={};return g(a,"object")&&!g(a,"array")?b=a:null!=a&&(b={points:a}),this.el("polygon",b)},function(){function c(){return this.selectAll("stop")}function d(b,c){var d=j("stop"),e={offset:+c+"%"};return b=a.color(b),e["stop-color"]=b.hex,b.opacity<1&&(e["stop-opacity"]=b.opacity),j(d,e),this.node.appendChild(d),this}function e(){if("linearGradient"==this.type){var b=j(this.node,"x1")||0,c=j(this.node,"x2")||1,d=j(this.node,"y1")||0,e=j(this.node,"y2")||0;return a._.box(b,d,math.abs(c-b),math.abs(e-d))}var f=this.node.cx||.5,g=this.node.cy||.5,h=this.node.r||0;return a._.box(f-h,g-h,2*h,2*h)}function g(a,c){function d(a,b){for(var c=(b-l)/(a-m),d=m;a>d;d++)g[d].offset=+(+l+c*(d-m)).toFixed(2);m=a,l=b}var e,f=b("snap.util.grad.parse",null,c).firstDefined();if(!f)return null;f.params.unshift(a),e="l"==f.type.toLowerCase()?h.apply(0,f.params):i.apply(0,f.params),f.type!=f.type.toLowerCase()&&j(e.node,{gradientUnits:"userSpaceOnUse"});var g=f.stops,k=g.length,l=0,m=0;k--;for(var n=0;k>n;n++)"offset"in g[n]&&d(n,g[n].offset);for(g[k].offset=g[k].offset||100,d(k,g[k].offset),n=0;k>=n;n++){var o=g[n];e.addStop(o.color,o.offset)}return e}function h(b,f,g,h,i){var k=a._.make("linearGradient",b);return k.stops=c,k.addStop=d,k.getBBox=e,null!=f&&j(k.node,{x1:f,y1:g,x2:h,y2:i}),k}function i(b,f,g,h,i,k){var l=a._.make("radialGradient",b);return l.stops=c,l.addStop=d,l.getBBox=e,null!=f&&j(l.node,{cx:f,cy:g,r:h}),null!=i&&null!=k&&j(l.node,{fx:i,fy:k}),l}var j=a._.$;f.gradient=function(a){return g(this.defs,a)},f.gradientLinear=function(a,b,c,d){return h(this.defs,a,b,c,d)},f.gradientRadial=function(a,b,c,d,e){return i(this.defs,a,b,c,d,e)},f.toString=function(){var b,c=this.node.ownerDocument,d=c.createDocumentFragment(),e=c.createElement("div"),f=this.node.cloneNode(!0);return d.appendChild(e),e.appendChild(f),a._.$(f,{xmlns:"http://www.w3.org/2000/svg"}),b=e.innerHTML,d.removeChild(d.firstChild),b},f.clear=function(){for(var a,b=this.node.firstChild;b;)a=b.nextSibling,"defs"!=b.tagName?b.parentNode.removeChild(b):f.clear.call({node:b}),b=a}}()}),d.plugin(function(a,b){function c(a){var b=c.ps=c.ps||{};return b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[K](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])}),b[a]}function d(a,b,c,d){return null==a&&(a=b=c=d=0),null==b&&(b=a.y,c=a.width,d=a.height,a=a.x),{x:a,y:b,width:c,w:c,height:d,h:d,x2:a+c,y2:b+d,cx:a+c/2,cy:b+d/2,r1:N.min(c,d)/2,r2:N.max(c,d)/2,r0:N.sqrt(c*c+d*d)/2,path:w(a,b,c,d),vb:[a,b,c,d].join(" ")}}function e(){return this.join(",").replace(L,"$1")}function f(a){var b=J(a);return b.toString=e,b}function g(a,b,c,d,e,f,g,h,j){return null==j?n(a,b,c,d,e,f,g,h):i(a,b,c,d,e,f,g,h,o(a,b,c,d,e,f,g,h,j))}function h(c,d){function e(a){return+(+a).toFixed(3)}return a._.cacher(function(a,f,h){a instanceof b&&(a=a.attr("d")),a=E(a);for(var j,k,l,m,n,o="",p={},q=0,r=0,s=a.length;s>r;r++){if(l=a[r],"M"==l[0])j=+l[1],k=+l[2];else{if(m=g(j,k,l[1],l[2],l[3],l[4],l[5],l[6]),q+m>f){if(d&&!p.start){if(n=g(j,k,l[1],l[2],l[3],l[4],l[5],l[6],f-q),o+=["C"+e(n.start.x),e(n.start.y),e(n.m.x),e(n.m.y),e(n.x),e(n.y)],h)return o;p.start=o,o=["M"+e(n.x),e(n.y)+"C"+e(n.n.x),e(n.n.y),e(n.end.x),e(n.end.y),e(l[5]),e(l[6])].join(),q+=m,j=+l[5],k=+l[6];continue}if(!c&&!d)return n=g(j,k,l[1],l[2],l[3],l[4],l[5],l[6],f-q)}q+=m,j=+l[5],k=+l[6]}o+=l.shift()+l}return p.end=o,n=c?q:d?p:i(j,k,l[0],l[1],l[2],l[3],l[4],l[5],1)},null,a._.clone)}function i(a,b,c,d,e,f,g,h,i){var j=1-i,k=R(j,3),l=R(j,2),m=i*i,n=m*i,o=k*a+3*l*i*c+3*j*i*i*e+n*g,p=k*b+3*l*i*d+3*j*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,w=j*e+i*g,x=j*f+i*h,y=90-180*N.atan2(q-s,r-t)/O;return{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:w,y:x},alpha:y}}function j(b,c,e,f,g,h,i,j){a.is(b,"array")||(b=[b,c,e,f,g,h,i,j]);var k=D.apply(null,b);return d(k.min.x,k.min.y,k.max.x-k.min.x,k.max.y-k.min.y)}function k(a,b,c){return b>=a.x&&b<=a.x+a.width&&c>=a.y&&c<=a.y+a.height}function l(a,b){return a=d(a),b=d(b),k(b,a.x,a.y)||k(b,a.x2,a.y)||k(b,a.x,a.y2)||k(b,a.x2,a.y2)||k(a,b.x,b.y)||k(a,b.x2,b.y)||k(a,b.x,b.y2)||k(a,b.x2,b.y2)||(a.xb.x||b.xa.x)&&(a.yb.y||b.ya.y)}function m(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function n(a,b,c,d,e,f,g,h,i){null==i&&(i=1),i=i>1?1:0>i?0:i;for(var j=i/2,k=12,l=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],n=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],o=0,p=0;k>p;p++){var q=j*l[p]+j,r=m(q,a,c,e,g),s=m(q,b,d,f,h),t=r*r+s*s;o+=n[p]*N.sqrt(t)}return j*o}function o(a,b,c,d,e,f,g,h,i){if(!(0>i||n(a,b,c,d,e,f,g,h)o;)l/=2,m+=(i>j?1:-1)*l,j=n(a,b,c,d,e,f,g,h,m);return m}}function p(a,b,c,d,e,f,g,h){if(!(Q(a,c)Q(e,g)||Q(b,d)Q(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(k){var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(!(n<+P(a,c).toFixed(2)||n>+Q(a,c).toFixed(2)||n<+P(e,g).toFixed(2)||n>+Q(e,g).toFixed(2)||o<+P(b,d).toFixed(2)||o>+Q(b,d).toFixed(2)||o<+P(f,h).toFixed(2)||o>+Q(f,h).toFixed(2)))return{x:l,y:m}}}}function q(a,b,c){var d=j(a),e=j(b);if(!l(d,e))return c?0:[];for(var f=n.apply(0,a),g=n.apply(0,b),h=~~(f/8),k=~~(g/8),m=[],o=[],q={},r=c?0:[],s=0;h+1>s;s++){var t=i.apply(0,a.concat(s/h));m.push({x:t.x,y:t.y,t:s/h})}for(s=0;k+1>s;s++)t=i.apply(0,b.concat(s/k)),o.push({x:t.x,y:t.y,t:s/k});for(s=0;h>s;s++)for(var u=0;k>u;u++){var v=m[s],w=m[s+1],x=o[u],y=o[u+1],z=S(w.x-v.x)<.001?"y":"x",A=S(y.x-x.x)<.001?"y":"x",B=p(v.x,v.y,w.x,w.y,x.x,x.y,y.x,y.y);if(B){if(q[B.x.toFixed(4)]==B.y.toFixed(4))continue;q[B.x.toFixed(4)]=B.y.toFixed(4);var C=v.t+S((B[z]-v[z])/(w[z]-v[z]))*(w.t-v.t),D=x.t+S((B[A]-x[A])/(y[A]-x[A]))*(y.t-x.t);C>=0&&1>=C&&D>=0&&1>=D&&(c?r++:r.push({x:B.x,y:B.y,t1:C,t2:D}))}}return r}function r(a,b){return t(a,b)}function s(a,b){return t(a,b,1)}function t(a,b,c){a=E(a),b=E(b);for(var d,e,f,g,h,i,j,k,l,m,n=c?0:[],o=0,p=a.length;p>o;o++){var r=a[o];if("M"==r[0])d=h=r[1],e=i=r[2];else{"C"==r[0]?(l=[d,e].concat(r.slice(1)),d=l[6],e=l[7]):(l=[d,e,d,e,h,i,h,i],d=h,e=i);for(var s=0,t=b.length;t>s;s++){var u=b[s];if("M"==u[0])f=j=u[1],g=k=u[2];else{"C"==u[0]?(m=[f,g].concat(u.slice(1)),f=m[6],g=m[7]):(m=[f,g,f,g,j,k,j,k],f=j,g=k);var v=q(l,m,c);if(c)n+=v;else{for(var w=0,x=v.length;x>w;w++)v[w].segment1=o,v[w].segment2=s,v[w].bez1=l,v[w].bez2=m;n=n.concat(v)}}}}}return n}function u(a,b,c){var d=v(a);return k(d,b,c)&&t(a,[["M",b,c],["H",d.x2+10]],1)%2==1}function v(a){var b=c(a);if(b.bbox)return J(b.bbox);if(!a)return d();a=E(a);for(var e,f=0,g=0,h=[],i=[],j=0,k=a.length;k>j;j++)if(e=a[j],"M"==e[0])f=e[1],g=e[2],h.push(f),i.push(g);else{var l=D(f,g,e[1],e[2],e[3],e[4],e[5],e[6]);h=h.concat(l.min.x,l.max.x),i=i.concat(l.min.y,l.max.y),f=e[5],g=e[6]}var m=P.apply(0,h),n=P.apply(0,i),o=Q.apply(0,h),p=Q.apply(0,i),q=d(m,n,o-m,p-n);return b.bbox=J(q),q}function w(a,b,c,d,f){if(f)return[["M",+a+ +f,b],["l",c-2*f,0],["a",f,f,0,0,1,f,f],["l",0,d-2*f],["a",f,f,0,0,1,-f,f],["l",2*f-c,0],["a",f,f,0,0,1,-f,-f],["l",0,2*f-d],["a",f,f,0,0,1,f,-f],["z"]];var g=[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]];return g.toString=e,g}function x(a,b,c,d,f){if(null==f&&null==d&&(d=c),a=+a,b=+b,c=+c,d=+d,null!=f)var g=Math.PI/180,h=a+c*Math.cos(-d*g),i=a+c*Math.cos(-f*g),j=b+c*Math.sin(-d*g),k=b+c*Math.sin(-f*g),l=[["M",h,j],["A",c,c,0,+(f-d>180),0,i,k]];else l=[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]];return l.toString=e,l}function y(b){var d=c(b),g=String.prototype.toLowerCase;if(d.rel)return f(d.rel);a.is(b,"array")&&a.is(b&&b[0],"array")||(b=a.parsePathString(b));var h=[],i=0,j=0,k=0,l=0,m=0;"M"==b[0][0]&&(i=b[0][1],j=b[0][2],k=i,l=j,m++,h.push(["M",i,j]));for(var n=m,o=b.length;o>n;n++){var p=h[n]=[],q=b[n];if(q[0]!=g.call(q[0]))switch(p[0]=g.call(q[0]),p[0]){case"a":p[1]=q[1],p[2]=q[2],p[3]=q[3],p[4]=q[4],p[5]=q[5],p[6]=+(q[6]-i).toFixed(3),p[7]=+(q[7]-j).toFixed(3);break;case"v":p[1]=+(q[1]-j).toFixed(3);break;case"m":k=q[1],l=q[2];default:for(var r=1,s=q.length;s>r;r++)p[r]=+(q[r]-(r%2?i:j)).toFixed(3)}else{p=h[n]=[],"m"==q[0]&&(k=q[1]+i,l=q[2]+j);for(var t=0,u=q.length;u>t;t++)h[n][t]=q[t]}var v=h[n].length;switch(h[n][0]){case"z":i=k,j=l;break;case"h":i+=+h[n][v-1];break;case"v":j+=+h[n][v-1];break;default:i+=+h[n][v-2],j+=+h[n][v-1]}}return h.toString=e,d.rel=f(h),h}function z(b){var d=c(b);if(d.abs)return f(d.abs);if(I(b,"array")&&I(b&&b[0],"array")||(b=a.parsePathString(b)),!b||!b.length)return[["M",0,0]];var g,h=[],i=0,j=0,k=0,l=0,m=0;"M"==b[0][0]&&(i=+b[0][1],j=+b[0][2],k=i,l=j,m++,h[0]=["M",i,j]);for(var n,o,p=3==b.length&&"M"==b[0][0]&&"R"==b[1][0].toUpperCase()&&"Z"==b[2][0].toUpperCase(),q=m,r=b.length;r>q;q++){if(h.push(n=[]),o=b[q],g=o[0],g!=g.toUpperCase())switch(n[0]=g.toUpperCase(),n[0]){case"A":n[1]=o[1],n[2]=o[2],n[3]=o[3],n[4]=o[4],n[5]=o[5],n[6]=+o[6]+i,n[7]=+o[7]+j;break;case"V":n[1]=+o[1]+j;break;case"H":n[1]=+o[1]+i;break;case"R":for(var s=[i,j].concat(o.slice(1)),t=2,u=s.length;u>t;t++)s[t]=+s[t]+i,s[++t]=+s[t]+j;h.pop(),h=h.concat(G(s,p));break;case"O":h.pop(),s=x(i,j,o[1],o[2]),s.push(s[0]),h=h.concat(s);break;case"U":h.pop(),h=h.concat(x(i,j,o[1],o[2],o[3])),n=["U"].concat(h[h.length-1].slice(-2));break;case"M":k=+o[1]+i,l=+o[2]+j;default:for(t=1,u=o.length;u>t;t++)n[t]=+o[t]+(t%2?i:j)}else if("R"==g)s=[i,j].concat(o.slice(1)),h.pop(),h=h.concat(G(s,p)),n=["R"].concat(o.slice(-2));else if("O"==g)h.pop(),s=x(i,j,o[1],o[2]),s.push(s[0]),h=h.concat(s);else if("U"==g)h.pop(),h=h.concat(x(i,j,o[1],o[2],o[3])),n=["U"].concat(h[h.length-1].slice(-2));else for(var v=0,w=o.length;w>v;v++)n[v]=o[v];if(g=g.toUpperCase(),"O"!=g)switch(n[0]){case"Z":i=+k,j=+l;break;case"H":i=n[1];break;case"V":j=n[1];break;case"M":k=n[n.length-2],l=n[n.length-1];default:i=n[n.length-2],j=n[n.length-1]}}return h.toString=e,d.abs=f(h),h}function A(a,b,c,d){return[a,b,c,d,c,d]}function B(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]}function C(b,c,d,e,f,g,h,i,j,k){var l,m=120*O/180,n=O/180*(+f||0),o=[],p=a._.cacher(function(a,b,c){var d=a*N.cos(c)-b*N.sin(c),e=a*N.sin(c)+b*N.cos(c);return{x:d,y:e}});if(k)y=k[0],z=k[1],w=k[2],x=k[3];else{l=p(b,c,-n),b=l.x,c=l.y,l=p(i,j,-n),i=l.x,j=l.y;var q=(N.cos(O/180*f),N.sin(O/180*f),(b-i)/2),r=(c-j)/2,s=q*q/(d*d)+r*r/(e*e);s>1&&(s=N.sqrt(s),d=s*d,e=s*e);var t=d*d,u=e*e,v=(g==h?-1:1)*N.sqrt(S((t*u-t*r*r-u*q*q)/(t*r*r+u*q*q))),w=v*d*r/e+(b+i)/2,x=v*-e*q/d+(c+j)/2,y=N.asin(((c-x)/e).toFixed(9)),z=N.asin(((j-x)/e).toFixed(9));y=w>b?O-y:y,z=w>i?O-z:z,0>y&&(y=2*O+y),0>z&&(z=2*O+z),h&&y>z&&(y-=2*O),!h&&z>y&&(z-=2*O)}var A=z-y;if(S(A)>m){var B=z,D=i,E=j;z=y+m*(h&&z>y?1:-1),i=w+d*N.cos(z),j=x+e*N.sin(z),o=C(i,j,d,e,f,0,h,D,E,[z,B,w,x])}A=z-y;var F=N.cos(y),G=N.sin(y),H=N.cos(z),I=N.sin(z),J=N.tan(A/4),K=4/3*d*J,L=4/3*e*J,M=[b,c],P=[b+K*G,c-L*F],Q=[i+K*I,j-L*H],R=[i,j];if(P[0]=2*M[0]-P[0],P[1]=2*M[1]-P[1],k)return[P,Q,R].concat(o);o=[P,Q,R].concat(o).join().split(",");for(var T=[],U=0,V=o.length;V>U;U++)T[U]=U%2?p(o[U-1],o[U],n).y:p(o[U],o[U+1],n).x;return T}function D(a,b,c,d,e,f,g,h){for(var i,j,k,l,m,n,o,p,q=[],r=[[],[]],s=0;2>s;++s)if(0==s?(j=6*a-12*c+6*e,i=-3*a+9*c-9*e+3*g,k=3*c-3*a):(j=6*b-12*d+6*f,i=-3*b+9*d-9*f+3*h,k=3*d-3*b),S(i)<1e-12){if(S(j)<1e-12)continue;l=-k/j,l>0&&1>l&&q.push(l)}else o=j*j-4*k*i,p=N.sqrt(o),0>o||(m=(-j+p)/(2*i),m>0&&1>m&&q.push(m),n=(-j-p)/(2*i),n>0&&1>n&&q.push(n));for(var t,u=q.length,v=u;u--;)l=q[u],t=1-l,r[0][u]=t*t*t*a+3*t*t*l*c+3*t*l*l*e+l*l*l*g,r[1][u]=t*t*t*b+3*t*t*l*d+3*t*l*l*f+l*l*l*h;return r[0][v]=a,r[1][v]=b,r[0][v+1]=g,r[1][v+1]=h,r[0].length=r[1].length=v+2,{min:{x:P.apply(0,r[0]),y:P.apply(0,r[1])},max:{x:Q.apply(0,r[0]),y:Q.apply(0,r[1])}}}function E(a,b){var d=!b&&c(a);if(!b&&d.curve)return f(d.curve);for(var e=z(a),g=b&&z(b),h={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},i={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},j=(function(a,b,c){var d,e;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];switch(!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null),a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"].concat(C.apply(0,[b.x,b.y].concat(a.slice(1))));break;case"S":"C"==c||"S"==c?(d=2*b.x-b.bx,e=2*b.y-b.by):(d=b.x,e=b.y),a=["C",d,e].concat(a.slice(1));break;case"T":"Q"==c||"T"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y),a=["C"].concat(B(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"].concat(B(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"].concat(A(b.x,b.y,a[1],a[2]));break;case"H":a=["C"].concat(A(b.x,b.y,a[1],b.y));break;case"V":a=["C"].concat(A(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"].concat(A(b.x,b.y,b.X,b.Y))}return a}),k=function(a,b){if(a[b].length>7){a[b].shift();for(var c=a[b];c.length;)m[b]="A",g&&(n[b]="A"),a.splice(b++,0,["C"].concat(c.splice(0,6)));a.splice(b,1),r=Q(e.length,g&&g.length||0)}},l=function(a,b,c,d,f){a&&b&&"M"==a[f][0]&&"M"!=b[f][0]&&(b.splice(f,0,["M",d.x,d.y]),c.bx=0,c.by=0,c.x=a[f][1],c.y=a[f][2],r=Q(e.length,g&&g.length||0))},m=[],n=[],o="",p="",q=0,r=Q(e.length,g&&g.length||0);r>q;q++){e[q]&&(o=e[q][0]),"C"!=o&&(m[q]=o,q&&(p=m[q-1])),e[q]=j(e[q],h,p),"A"!=m[q]&&"C"==o&&(m[q]="C"),k(e,q),g&&(g[q]&&(o=g[q][0]),"C"!=o&&(n[q]=o,q&&(p=n[q-1])),g[q]=j(g[q],i,p),"A"!=n[q]&&"C"==o&&(n[q]="C"),k(g,q)),l(e,g,h,i,q),l(g,e,i,h,q);var s=e[q],t=g&&g[q],u=s.length,v=g&&t.length;h.x=s[u-2],h.y=s[u-1],h.bx=M(s[u-4])||h.x,h.by=M(s[u-3])||h.y,i.bx=g&&(M(t[v-4])||i.x),i.by=g&&(M(t[v-3])||i.y),i.x=g&&t[v-2],i.y=g&&t[v-1]}return g||(d.curve=f(e)),g?[e,g]:e}function F(a,b){if(!b)return a;var c,d,e,f,g,h,i;for(a=E(a),e=0,g=a.length;g>e;e++)for(i=a[e],f=1,h=i.length;h>f;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d;return a}function G(a,b){for(var c=[],d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}var H=b.prototype,I=a.is,J=a._.clone,K="hasOwnProperty",L=/,?([a-z]),?/gi,M=parseFloat,N=Math,O=N.PI,P=N.min,Q=N.max,R=N.pow,S=N.abs,T=h(1),U=h(),V=h(0,1),W=a._unit2px,X={path:function(a){return a.attr("path")},circle:function(a){var b=W(a);return x(b.cx,b.cy,b.r)},ellipse:function(a){var b=W(a);return x(b.cx||0,b.cy||0,b.rx,b.ry)},rect:function(a){var b=W(a);return w(b.x||0,b.y||0,b.width,b.height,b.rx,b.ry)},image:function(a){var b=W(a);return w(b.x||0,b.y||0,b.width,b.height)},line:function(a){return"M"+[a.attr("x1")||0,a.attr("y1")||0,a.attr("x2"),a.attr("y2")]},polyline:function(a){return"M"+a.attr("points")},polygon:function(a){return"M"+a.attr("points")+"z"},deflt:function(a){var b=a.node.getBBox();return w(b.x,b.y,b.width,b.height)}};a.path=c,a.path.getTotalLength=T,a.path.getPointAtLength=U,a.path.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return V(a,b).end;var d=V(a,c,1);return b?V(d,b).end:d},H.getTotalLength=function(){return this.node.getTotalLength?this.node.getTotalLength():void 0},H.getPointAtLength=function(a){return U(this.attr("d"),a)},H.getSubpath=function(b,c){return a.path.getSubpath(this.attr("d"),b,c)},a._.box=d,a.path.findDotsAtSegment=i,a.path.bezierBBox=j,a.path.isPointInsideBBox=k,a.path.isBBoxIntersect=l,a.path.intersection=r,a.path.intersectionNumber=s,a.path.isPointInside=u,a.path.getBBox=v,a.path.get=X,a.path.toRelative=y,a.path.toAbsolute=z,a.path.toCubic=E,a.path.map=F,a.path.toString=e,a.path.clone=f}),d.plugin(function(a){var d=Math.max,e=Math.min,f=function(a){if(this.items=[],this.bindings={},this.length=0,this.type="set",a)for(var b=0,c=a.length;c>b;b++)a[b]&&(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},g=f.prototype;g.push=function(){for(var a,b,c=0,d=arguments.length;d>c;c++)a=arguments[c],a&&(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},g.pop=function(){return this.length&&delete this[this.length--],this.items.pop()},g.forEach=function(a,b){for(var c=0,d=this.items.length;d>c;c++)if(a.call(b,this.items[c],c)===!1)return this;return this},g.animate=function(d,e,f,g){"function"!=typeof f||f.length||(g=f,f=c.linear),d instanceof a._.Animation&&(g=d.callback,f=d.easing,e=f.dur,d=d.attr);var h=arguments;if(a.is(d,"array")&&a.is(h[h.length-1],"array"))var i=!0;var j,k=function(){j?this.b=j:j=this.b},l=0,m=g&&function(){l++==this.length&&g.call(this)};return this.forEach(function(a,c){b.once("snap.animcreated."+a.id,k),i?h[c]&&a.animate.apply(a,h[c]):a.animate(d,e,f,m)})},g.remove=function(){for(;this.length;)this.pop().remove();return this},g.bind=function(a,b,c){var d={};if("function"==typeof b)this.bindings[a]=b;else{var e=c||a;this.bindings[a]=function(a){d[e]=a,b.attr(d)}}return this},g.attr=function(a){var b={};for(var c in a)this.bindings[c]?this.bindings[c](a[c]):b[c]=a[c];for(var d=0,e=this.items.length;e>d;d++)this.items[d].attr(b);return this},g.clear=function(){for(;this.length;)this.pop()},g.splice=function(a,b){a=0>a?d(this.length+a,0):a,b=d(0,e(this.length-a,b));var c,g=[],h=[],i=[];for(c=2;cc;c++)h.push(this[a+c]);for(;cc?i[c]:g[c-j];for(c=this.items.length=this.length-=b-j;this[c];)delete this[c++];return new f(h)},g.exclude=function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]==a)return this.splice(b,1),!0;return!1},g.insertAfter=function(a){for(var b=this.items.length;b--;)this.items[b].insertAfter(a);return this},g.getBBox=function(){for(var a=[],b=[],c=[],f=[],g=this.items.length;g--;)if(!this.items[g].removed){var h=this.items[g].getBBox();a.push(h.x),b.push(h.y),c.push(h.x+h.width),f.push(h.y+h.height)}return a=e.apply(0,a),b=e.apply(0,b),c=d.apply(0,c),f=d.apply(0,f),{x:a,y:b,x2:c,y2:f,width:c-a,height:f-b,cx:a+(c-a)/2,cy:b+(f-b)/2}},g.clone=function(a){a=new f;for(var b=0,c=this.items.length;c>b;b++)a.push(this.items[b].clone());return a},g.toString=function(){return"Snap‘s set"},g.type="set",a.set=function(){var a=new f;return arguments.length&&a.push.apply(a,Array.prototype.slice.call(arguments,0)),a}}),d.plugin(function(a,c){function d(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return 4==a.length?[b,0,a[2],a[3]]:[b,0];case"s":return 5==a.length?[b,1,1,a[3],a[4]]:3==a.length?[b,1,1]:[b,1]}}function e(b,c,e){c=m(c).replace(/\.{3}|\u2026/g,b),b=a.parseTransformString(b)||[],c=a.parseTransformString(c)||[];for(var f,g,h,k,l=Math.max(b.length,c.length),n=[],o=[],p=0;l>p;p++){if(h=b[p]||d(c[p]),k=c[p]||d(h),h[0]!=k[0]||"r"==h[0].toLowerCase()&&(h[2]!=k[2]||h[3]!=k[3])||"s"==h[0].toLowerCase()&&(h[3]!=k[3]||h[4]!=k[4])){b=a._.transform2matrix(b,e()),c=a._.transform2matrix(c,e()),n=[["m",b.a,b.b,b.c,b.d,b.e,b.f]],o=[["m",c.a,c.b,c.c,c.d,c.e,c.f]];break}for(n[p]=[],o[p]=[],f=0,g=Math.max(h.length,k.length);g>f;f++)f in h&&(n[p][f]=h[f]),f in k&&(o[p][f]=k[f])}return{from:j(n),to:j(o),f:i(n)}}function f(a){return a}function g(a){return function(b){return+b.toFixed(3)+a}}function h(b){return a.rgb(b[0],b[1],b[2])}function i(a){var b,c,d,e,f,g,h=0,i=[];for(b=0,c=a.length;c>b;b++){for(f="[",g=['"'+a[b][0]+'"'],d=1,e=a[b].length;e>d;d++)g[d]="val["+h++ +"]"; f+=g+"]",i[b]=f}return Function("val","return Snap.path.toString.call(["+i+"])")}function j(a){for(var b=[],c=0,d=a.length;d>c;c++)for(var e=1,f=a[c].length;f>e;e++)b.push(a[c][e]);return b}var k={},l=/[a-z]+$/i,m=String;k.stroke=k.fill="colour",c.prototype.equal=function(a,c){return b("snap.util.equal",this,a,c).firstDefined()},b.on("snap.util.equal",function(b,c){var d,n,o=m(this.attr(b)||""),p=this;if(o==+o&&c==+c)return{from:+o,to:+c,f:f};if("colour"==k[b])return d=a.color(o),n=a.color(c),{from:[d.r,d.g,d.b,d.opacity],to:[n.r,n.g,n.b,n.opacity],f:h};if("transform"==b||"gradientTransform"==b||"patternTransform"==b)return c instanceof a.Matrix&&(c=c.toTransformString()),a._.rgTransform.test(c)||(c=a._.svgTransform2string(c)),e(o,c,function(){return p.getBBox(1)});if("d"==b||"path"==b)return d=a.path.toCubic(o,c),{from:j(d[0]),to:j(d[1]),f:i(d[0])};if("points"==b)return d=m(o).split(a._.separator),n=m(c).split(a._.separator),{from:d,to:n,f:function(a){return a}};aUnit=o.match(l);var q=m(c).match(l);return aUnit&&aUnit==q?{from:parseFloat(o),to:parseFloat(c),f:g(aUnit)}:{from:this.asPX(b),to:this.asPX(b,c),f:f}})}),d.plugin(function(a,c,d,e){for(var f=c.prototype,g="hasOwnProperty",h=("createTouch"in e.doc),i=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup","touchstart","touchmove","touchend","touchcancel"],j={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},k=(function(a,b){var c="y"==a?"scrollTop":"scrollLeft",d=b&&b.node?b.node.ownerDocument:e.doc;return d[c in d.documentElement?"documentElement":"body"][c]}),l=function(){this.returnValue=!1},m=function(){return this.originalEvent.preventDefault()},n=function(){this.cancelBubble=!0},o=function(){return this.originalEvent.stopPropagation()},p=function(){return e.doc.addEventListener?function(a,b,c,d){var e=h&&j[b]?j[b]:b,f=function(e){var f=k("y",d),i=k("x",d);if(h&&j[g](b))for(var l=0,n=e.targetTouches&&e.targetTouches.length;n>l;l++)if(e.targetTouches[l].target==a||a.contains(e.targetTouches[l].target)){var p=e;e=e.targetTouches[l],e.originalEvent=p,e.preventDefault=m,e.stopPropagation=o;break}var q=e.clientX+i,r=e.clientY+f;return c.call(d,e,q,r)};return b!==e&&a.addEventListener(b,f,!1),a.addEventListener(e,f,!1),function(){return b!==e&&a.removeEventListener(b,f,!1),a.removeEventListener(e,f,!1),!0}}:e.doc.attachEvent?function(a,b,c,d){var e=function(a){a=a||d.node.ownerDocument.window.event;var b=k("y",d),e=k("x",d),f=a.clientX+e,g=a.clientY+b;return a.preventDefault=a.preventDefault||l,a.stopPropagation=a.stopPropagation||n,c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){return a.detachEvent("on"+b,e),!0};return f}:void 0}(),q=[],r=function(a){for(var c,d=a.clientX,e=a.clientY,f=k("y"),g=k("x"),i=q.length;i--;){if(c=q[i],h){for(var j,l=a.touches&&a.touches.length;l--;)if(j=a.touches[l],j.identifier==c.el._drag.id||c.el.node.contains(j.target)){d=j.clientX,e=j.clientY,(a.originalEvent?a.originalEvent:a).preventDefault();break}}else a.preventDefault();{var m=c.el.node;m.nextSibling,m.parentNode,m.style.display}d+=g,e+=f,b("snap.drag.move."+c.el.id,c.move_scope||c.el,d-c.el._drag.x,e-c.el._drag.y,d,e,a)}},s=function(c){a.unmousemove(r).unmouseup(s);for(var d,e=q.length;e--;)d=q[e],d.el._drag={},b("snap.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,c);q=[]},t=i.length;t--;)!function(b){a[b]=f[b]=function(c,d){return a.is(c,"function")&&(this.events=this.events||[],this.events.push({name:b,f:c,unbind:p(this.node||document,b,c,d||this)})),this},a["un"+b]=f["un"+b]=function(a){for(var c=this.events||[],d=c.length;d--;)if(c[d].name==b&&(c[d].f==a||!a))return c[d].unbind(),c.splice(d,1),!c.length&&delete this.events,this;return this}}(i[t]);f.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},f.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var u=[];f.drag=function(c,d,e,f,g,h){function i(i,j,k){(i.originalEvent||i).preventDefault(),this._drag.x=j,this._drag.y=k,this._drag.id=i.identifier,!q.length&&a.mousemove(r).mouseup(s),q.push({el:this,move_scope:f,start_scope:g,end_scope:h}),d&&b.on("snap.drag.start."+this.id,d),c&&b.on("snap.drag.move."+this.id,c),e&&b.on("snap.drag.end."+this.id,e),b("snap.drag.start."+this.id,g||f||this,j,k,i)}if(!arguments.length){var j;return this.drag(function(a,b){this.attr({transform:j+(j?"T":"t")+[a,b]})},function(){j=this.transform().local})}return this._drag={},u.push({el:this,start:i}),this.mousedown(i),this},f.undrag=function(){for(var c=u.length;c--;)u[c].el==this&&(this.unmousedown(u[c].start),u.splice(c,1),b.unbind("snap.drag.*."+this.id));return!u.length&&a.unmousemove(r).unmouseup(s),this}}),d.plugin(function(a,c,d){var e=(c.prototype,d.prototype),f=/^\s*url\((.+)\)/,g=String,h=a._.$;a.filter={},e.filter=function(b){var d=this;"svg"!=d.type&&(d=d.paper);var e=a.parse(g(b)),f=a._.id(),i=(d.node.offsetWidth,d.node.offsetHeight,h("filter"));return h(i,{id:f,filterUnits:"userSpaceOnUse"}),i.appendChild(e.node),d.defs.appendChild(i),new c(i)},b.on("snap.util.getattr.filter",function(){b.stop();var c=h(this.node,"filter");if(c){var d=g(c).match(f);return d&&a.select(d[1])}}),b.on("snap.util.attr.filter",function(d){if(d instanceof c&&"filter"==d.type){b.stop();var e=d.node.id;e||(h(d.node,{id:d.id}),e=d.id),h(this.node,{filter:a.url(e)})}d&&"none"!=d||(b.stop(),this.node.removeAttribute("filter"))}),a.filter.blur=function(b,c){null==b&&(b=2);var d=null==c?b:[b,c];return a.format('',{def:d})},a.filter.blur.toString=function(){return this()},a.filter.shadow=function(b,c,d,e,f){return"string"==typeof d&&(e=d,f=e,d=4),"string"!=typeof e&&(f=e,e="#000"),e=e||"#000",null==d&&(d=4),null==f&&(f=1),null==b&&(b=0,c=2),null==c&&(c=b),e=a.color(e),a.format('',{color:e,dx:b,dy:c,blur:d,opacity:f})},a.filter.shadow.toString=function(){return this()},a.filter.grayscale=function(b){return null==b&&(b=1),a.format('',{a:.2126+.7874*(1-b),b:.7152-.7152*(1-b),c:.0722-.0722*(1-b),d:.2126-.2126*(1-b),e:.7152+.2848*(1-b),f:.0722-.0722*(1-b),g:.2126-.2126*(1-b),h:.0722+.9278*(1-b)})},a.filter.grayscale.toString=function(){return this()},a.filter.sepia=function(b){return null==b&&(b=1),a.format('',{a:.393+.607*(1-b),b:.769-.769*(1-b),c:.189-.189*(1-b),d:.349-.349*(1-b),e:.686+.314*(1-b),f:.168-.168*(1-b),g:.272-.272*(1-b),h:.534-.534*(1-b),i:.131+.869*(1-b)})},a.filter.sepia.toString=function(){return this()},a.filter.saturate=function(b){return null==b&&(b=1),a.format('',{amount:1-b})},a.filter.saturate.toString=function(){return this()},a.filter.hueRotate=function(b){return b=b||0,a.format('',{angle:b})},a.filter.hueRotate.toString=function(){return this()},a.filter.invert=function(b){return null==b&&(b=1),a.format('',{amount:b,amount2:1-b})},a.filter.invert.toString=function(){return this()},a.filter.brightness=function(b){return null==b&&(b=1),a.format('',{amount:b})},a.filter.brightness.toString=function(){return this()},a.filter.contrast=function(b){return null==b&&(b=1),a.format('',{amount:b,amount2:.5-b/2})},a.filter.contrast.toString=function(){return this()}}),d}); /* >>>>>>> END plugins/notificationfx/js/snap.svg-min.js <<<<<<< */ /* >>>>>>> plugins/notificationfx/js/notificationFx.js <<<<<<< */ /** * notificationFx.js v1.0.0 * http://www.codrops.com * * Licensed under the MIT license. * http://www.opensource.org/licenses/mit-license.php * * Copyright 2014, Codrops * http://www.codrops.com */ ;( function( window ) { 'use strict'; var docElem = window.document.documentElement, support = { animations : Modernizr.cssanimations }, animEndEventNames = { 'WebkitAnimation' : 'webkitAnimationEnd', 'OAnimation' : 'oAnimationEnd', 'msAnimation' : 'MSAnimationEnd', 'animation' : 'animationend' }, // animation end event name animEndEventName = animEndEventNames[ Modernizr.prefixed( 'animation' ) ]; /** * extend obj function */ function extend( a, b ) { for( var key in b ) { if( b.hasOwnProperty( key ) ) { a[key] = b[key]; } } return a; } /** * NotificationFx function */ function NotificationFx( options ) { this.options = extend( {}, this.options ); extend( this.options, options ); this._init(); } /** * NotificationFx options */ NotificationFx.prototype.options = { // element to which the notification will be appended // defaults to the document.body wrapper : document.body, // the message message : 'yo!', // layout type: growl|attached|bar|other layout : 'growl', // effects for the specified layout: // for growl layout: scale|slide|genie|jelly // for attached layout: flip|bouncyflip // for other layout: boxspinner|cornerexpand|loadingcircle|thumbslider // ... effect : 'slide', // notice, warning, error, success // will add class ns-type-warning, ns-type-error or ns-type-success type : 'error', // if the user doesn´t close the notification then we remove it // after the following time ttl : 6000, // callbacks onClose : function() { return false; }, onOpen : function() { return false; } } /** * init function * initialize and cache some vars */ NotificationFx.prototype._init = function() { // create HTML structure this.ntf = document.createElement( 'div' ); this.ntf.className = 'ns-box ns-' + this.options.layout + ' ns-effect-' + this.options.effect + ' ns-type-' + this.options.type; var strinner = '
'; strinner += this.options.message; strinner += '
'; strinner += ''; this.ntf.innerHTML = strinner; // append to body or the element specified in options.wrapper this.options.wrapper.insertBefore( this.ntf, this.options.wrapper.firstChild ); // dismiss after [options.ttl]ms var self = this; if(this.options.ttl) { // checks to make sure ttl is not set to false in notification initialization this.dismissttl = setTimeout( function() { if( self.active ) { self.dismiss(); } }, this.options.ttl ); } // init events this._initEvents(); } /** * init events */ NotificationFx.prototype._initEvents = function() { var self = this; // dismiss notification this.ntf.querySelector( '.ns-close' ).addEventListener( 'click', function() { self.dismiss(); } ); } /** * show the notification */ NotificationFx.prototype.show = function() { this.active = true; classie.remove( this.ntf, 'ns-hide' ); classie.add( this.ntf, 'ns-show' ); if (typeof this.options.onOpen === 'function') this.options.onOpen(); } /** * dismiss the notification */ NotificationFx.prototype.dismiss = function() { var self = this; this.active = false; clearTimeout( this.dismissttl ); classie.remove( this.ntf, 'ns-show' ); setTimeout( function() { classie.add( self.ntf, 'ns-hide' ); // callback if (typeof self.options.onClose === 'function') self.options.onClose(); }, 25 ); // after animation ends remove ntf from the DOM var onEndAnimationFn = function( ev ) { if( support.animations ) { if( ev.target !== self.ntf ) return false; this.removeEventListener( animEndEventName, onEndAnimationFn ); } self.options.wrapper.removeChild( self.ntf ); }; if( support.animations ) { this.ntf.addEventListener( animEndEventName, onEndAnimationFn ); } else { onEndAnimationFn(); } } /** * add to global namespace */ window.NotificationFx = NotificationFx; } )( window ); /* >>>>>>> END plugins/notificationfx/js/notificationFx.js <<<<<<< */ /* >>>>>>> plugins/jquery.card.js <<<<<<< */ /*! For license information please see jquery.card.js.LICENSE.txt */ var card;(()=>{var r,e,t={579:function(r,e,t){var a,n,o;t(346),n=t(202),t(28),o=t(907),a=function(){var r,e;class t{template(r,e){return r.replace(/\{\{(.*?)\}\}/g,(function(r,t,a){return e[t]}))}constructor(r){var e;this.maskCardNumber=this.maskCardNumber.bind(this),this.options=o(!0,this.defaults,r),this.options.form?(this.$el=n(this.options.form),this.options.container?(this.$container=n(this.options.container),(e=n.isDOMElement(this.$container)?this.$container:this.$container[0]).getAttribute(this.initializedDataAttr)||(e.setAttribute(this.initializedDataAttr,!0),this.render(),this.attachHandlers(),this.handleInitialPlaceholders())):console.log("Please provide a container")):console.log("Please provide a form")}render(){var r,e,t,a,i,d,c,p;for(t in n.append(this.$container,this.template(this.cardTemplate,o({},this.options.messages,this.options.placeholders))),i=this.options.cardSelectors)c=i[t],this[`$${t}`]=n.find(this.$container,c);for(t in d=this.options.formSelectors)c=d[t],c=this.options[t]?this.options[t]:c,!(a=n.find(this.$el,c)).length&&this.options.debug&&console.error(`Card can't find a ${t} in your form.`),this[`$${t}`]=a;if(this.options.formatting&&(Payment.formatCardNumber(this.$numberInput),Payment.formatCardCVC(this.$cvcInput),Payment.formatCardExpiry(this.$expiryInput)),this.options.width&&(r=n(this.options.cardSelectors.cardContainer)[0],e=parseInt(r.clientWidth||window.getComputedStyle(r).width),r.style.transform=`scale(${this.options.width/e})`),("undefined"!=typeof navigator&&null!==navigator?navigator.userAgent:void 0)&&-1!==(p=navigator.userAgent.toLowerCase()).indexOf("safari")&&-1===p.indexOf("chrome")&&n.addClass(this.$card,"jp-card-safari"),/MSIE 10\./i.test(navigator.userAgent)&&n.addClass(this.$card,"jp-card-ie-10"),/rv:11.0/i.test(navigator.userAgent))return n.addClass(this.$card,"jp-card-ie-11")}attachHandlers(){var e,t;return t=[this.validToggler("cardNumber")],this.options.masks.cardNumber&&t.push(this.maskCardNumber),r(this.$numberInput,this.$numberDisplay,{fill:!1,filters:t}),n.on(this.$numberInput,"payment.cardType",this.handle("setCardType")),(e=[function(r){return 1===r.length&&"0"===r[0]?"":r.replace(/(\s+)/g,"")}]).push(this.validToggler("cardExpiry")),r(this.$expiryInput,this.$expiryDisplay,{join:function(r){return 2===r[0].length||r[1]?"/":""},filters:e}),r(this.$cvcInput,this.$cvcDisplay,{filters:this.validToggler("cardCVC")}),n.on(this.$cvcInput,"focus",this.handle("flipCard")),n.on(this.$cvcInput,"blur",this.handle("unflipCard")),r(this.$nameInput,this.$nameDisplay,{fill:!1,filters:this.validToggler("cardHolderName"),join:" "})}handleInitialPlaceholders(){var r,e,t,a;for(e in a=[],t=this.options.formSelectors)t[e],(r=this[`$${e}`])instanceof NodeList&&(r=r[0]),n.val(r)?(n.trigger(r,"paste"),a.push(function(r){return setTimeout((function(){return n.trigger(r,"keyup")}))}(r))):a.push(void 0);return a}handle(r){return e=>{var t;return(t=Array.prototype.slice.call(arguments)).unshift(e.target),this.handlers[r].apply(this,t)}}validToggler(r){var e;return"cardExpiry"===r?e=function(r){var e;return e=Payment.fns.cardExpiryVal(r),Payment.fns.validateCardExpiry(e.month,e.year)}:"cardCVC"===r?e=r=>Payment.fns.validateCardCVC(r,this.cardType):"cardNumber"===r?e=function(r){return Payment.fns.validateCardNumber(r)}:"cardHolderName"===r&&(e=function(r){return""!==r}),(r,t,a)=>{var n;return n=e(r),this.toggleValidClass(t,n),this.toggleValidClass(a,n),r}}toggleValidClass(r,e){return n.toggleClass(r,this.options.classes.valid,e),n.toggleClass(r,this.options.classes.invalid,!e)}maskCardNumber(r,e,t){var a,n;return a=this.options.masks.cardNumber,(n=r.split(" ")).length>=3?(n.forEach((function(r,e){if(e!==n.length-1)return n[e]=n[e].replace(/\d/g,a)})),n.join(" ")):r.replace(/\d/g,a)}getCardType(){return Payment.fns.cardType(this.$numberInput[0].value)||"unknown"}}return t.prototype.initializedDataAttr="data-jp-card-initialized",t.prototype.cardTemplate='',t.prototype.cardTypes=["jp-card-amex","jp-card-dankort","jp-card-dinersclub","jp-card-discover","jp-card-unionpay","jp-card-jcb","jp-card-laser","jp-card-maestro","jp-card-mastercard","jp-card-troy","jp-card-unionpay","jp-card-visa","jp-card-visaelectron","jp-card-elo","jp-card-hipercard"],t.prototype.defaults={formatting:!0,formSelectors:{numberInput:'input[name="number"]',expiryInput:'input[name="expiry"]',cvcInput:'input[name="cvc"]',nameInput:'input[name="name"]'},cardSelectors:{cardContainer:".jp-card-container",card:".jp-card",numberDisplay:".jp-card-number",expiryDisplay:".jp-card-expiry",cvcDisplay:".jp-card-cvc",nameDisplay:".jp-card-name"},messages:{validDate:"valid\nthru",monthYear:"month/year"},placeholders:{number:"•••• •••• •••• ••••",cvc:"•••",expiry:"••/••",name:"Full Name"},masks:{cardNumber:!1},classes:{valid:"jp-card-valid",invalid:"jp-card-invalid"},debug:!1},t.prototype.handlers={setCardType:function(r,e){var t,a;if(t=e.data,a=new CustomEvent("card-type-changed",{detail:e.data}),document.dispatchEvent(a),!n.hasClass(this.$card,t))return n.removeClass(this.$card,"jp-card-unknown"),n.removeClass(this.$card,this.cardTypes.join(" ")),n.addClass(this.$card,`jp-card-${t}`),n.toggleClass(this.$card,"jp-card-identified","unknown"!==t),this.cardType=t},flipCard:function(){return n.addClass(this.$card,"jp-card-flipped")},unflipCard:function(){return n.removeClass(this.$card,"jp-card-flipped")}},r=function(r,t,a={}){var o,i,d;return a.fill=a.fill||!1,a.filters=a.filters||[],a.filters instanceof Array||(a.filters=[a.filters]),a.join=a.join||"","function"!=typeof a.join&&(o=a.join,a.join=function(){return o}),d=function(){var r,e,a;for(a=[],r=0,e=t.length;r{"use strict";t.d(e,{Z:()=>d});var a=t(81),n=t.n(a),o=t(645),i=t.n(o)()(n());i.push([r.id,'.jp-card.jp-card-safari.jp-card-identified .jp-card-front:before,.jp-card.jp-card-safari.jp-card-identified .jp-card-back:before{background-image:repeating-linear-gradient(45deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-linear-gradient(135deg, rgba(255,255,255,0.05) 1px, rgba(255,255,255,0) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.03) 4px),repeating-linear-gradient(90deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-linear-gradient(210deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),-webkit-linear-gradient(-245deg, rgba(255,255,255,0) 50%,rgba(255,255,255,0.2) 70%,rgba(255,255,255,0) 90%);background-image:repeating-linear-gradient(45deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-linear-gradient(135deg, rgba(255,255,255,0.05) 1px, rgba(255,255,255,0) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.03) 4px),repeating-linear-gradient(90deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-linear-gradient(210deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),linear-gradient(-25deg, rgba(255,255,255,0) 50%,rgba(255,255,255,0.2) 70%,rgba(255,255,255,0) 90%)}.jp-card.jp-card-ie-10.jp-card-flipped,.jp-card.jp-card-ie-11.jp-card-flipped{-webkit-transform:0deg;-moz-transform:0deg;-ms-transform:0deg;-o-transform:0deg;transform:0deg}.jp-card.jp-card-ie-10.jp-card-flipped .jp-card-front,.jp-card.jp-card-ie-11.jp-card-flipped .jp-card-front{-webkit-transform:rotateY(0deg);-moz-transform:rotateY(0deg);-ms-transform:rotateY(0deg);-o-transform:rotateY(0deg);transform:rotateY(0deg)}.jp-card.jp-card-ie-10.jp-card-flipped .jp-card-back,.jp-card.jp-card-ie-11.jp-card-flipped .jp-card-back{-webkit-transform:rotateY(0deg);-moz-transform:rotateY(0deg);-ms-transform:rotateY(0deg);-o-transform:rotateY(0deg);transform:rotateY(0deg)}.jp-card.jp-card-ie-10.jp-card-flipped .jp-card-back:after,.jp-card.jp-card-ie-11.jp-card-flipped .jp-card-back:after{left:18%}.jp-card.jp-card-ie-10.jp-card-flipped .jp-card-back .jp-card-cvc,.jp-card.jp-card-ie-11.jp-card-flipped .jp-card-back .jp-card-cvc{-webkit-transform:rotateY(180deg);-moz-transform:rotateY(180deg);-ms-transform:rotateY(180deg);-o-transform:rotateY(180deg);transform:rotateY(180deg);left:5%}.jp-card.jp-card-ie-10.jp-card-flipped .jp-card-back .jp-card-shiny,.jp-card.jp-card-ie-11.jp-card-flipped .jp-card-back .jp-card-shiny{left:84%}.jp-card.jp-card-ie-10.jp-card-flipped .jp-card-back .jp-card-shiny:after,.jp-card.jp-card-ie-11.jp-card-flipped .jp-card-back .jp-card-shiny:after{left:-480%;-webkit-transform:rotateY(180deg);-moz-transform:rotateY(180deg);-ms-transform:rotateY(180deg);-o-transform:rotateY(180deg);transform:rotateY(180deg)}.jp-card.jp-card-ie-10.jp-card-amex .jp-card-back,.jp-card.jp-card-ie-11.jp-card-amex .jp-card-back{display:none}.jp-card-logo{height:36px;width:60px;font-style:italic}.jp-card-logo,.jp-card-logo:before,.jp-card-logo:after{box-sizing:border-box}.jp-card-logo.jp-card-amex{text-transform:uppercase;font-size:4px;font-weight:bold;color:white;background-image:repeating-radial-gradient(circle at center, #fff 1px, #999 2px);background-image:repeating-radial-gradient(circle at center, #fff 1px, #999 2px);border:1px solid #EEE}.jp-card-logo.jp-card-amex:before,.jp-card-logo.jp-card-amex:after{width:28px;display:block;position:absolute;left:16px}.jp-card-logo.jp-card-amex:before{height:28px;content:"american";top:3px;text-align:left;padding-left:2px;padding-top:11px;background:#267AC3}.jp-card-logo.jp-card-amex:after{content:"express";bottom:11px;text-align:right;padding-right:2px}.jp-card.jp-card-amex.jp-card-flipped{-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none}.jp-card.jp-card-amex.jp-card-identified .jp-card-front:before,.jp-card.jp-card-amex.jp-card-identified .jp-card-back:before{background-color:#108168}.jp-card.jp-card-amex.jp-card-identified .jp-card-front .jp-card-logo.jp-card-amex{opacity:1}.jp-card.jp-card-amex.jp-card-identified .jp-card-front .jp-card-cvc{visibility:visible}.jp-card.jp-card-amex.jp-card-identified .jp-card-front:after{opacity:1}.jp-card-logo.jp-card-discover{background:#f60;color:#111;text-transform:uppercase;font-style:normal;font-weight:bold;font-size:10px;text-align:center;overflow:hidden;z-index:1;padding-top:9px;letter-spacing:.03em;border:1px solid #EEE}.jp-card-logo.jp-card-discover:before,.jp-card-logo.jp-card-discover:after{content:" ";display:block;position:absolute}.jp-card-logo.jp-card-discover:before{background:white;width:200px;height:200px;border-radius:200px;bottom:-5%;right:-80%;z-index:-1}.jp-card-logo.jp-card-discover:after{width:8px;height:8px;border-radius:4px;top:10px;left:27px;background-color:#f60;background-image:-webkit-radial-gradient(#f60,#fff);background-image:radial-gradient(#f60,#fff);content:"network";font-size:4px;line-height:24px;text-indent:-7px}.jp-card .jp-card-front .jp-card-logo.jp-card-discover{right:12%;top:18%}.jp-card.jp-card-discover.jp-card-identified .jp-card-front:before,.jp-card.jp-card-discover.jp-card-identified .jp-card-back:before{background-color:#86B8CF}.jp-card.jp-card-discover.jp-card-identified .jp-card-logo.jp-card-discover{opacity:1}.jp-card.jp-card-discover.jp-card-identified .jp-card-front:after{-webkit-transition:400ms;-moz-transition:400ms;transition:400ms;content:" ";display:block;background-color:#f60;background-image:-webkit-linear-gradient(#f60,#ffa366,#f60);background-image:linear-gradient(#f60,#ffa366,#f60);height:50px;width:50px;border-radius:25px;position:absolute;left:100%;top:15%;margin-left:-25px;box-shadow:inset 1px 1px 3px 1px rgba(0,0,0,0.5)}.jp-card-logo.jp-card-unionpay{width:60px;display:block;height:40px;background:#e21836;-webkit-transform:skew(-15deg);-moz-transform:skew(20deg);-o-transform:skew(20deg);border-radius:5px;font-size:10px;z-index:1;line-height:33px;color:#fff;text-align:center;font-family:"Sans-serif", "Microsoft Yahei", "\\5FAE\\8F6F\\96C5\\9ED1", "Hiragino Sans", "Gulim", "\\5B8B\\4F53";font-weight:bold}.jp-card-logo.jp-card-unionpay:after,.jp-card-logo.jp-card-unionpay:before{display:block;margin:0 auto;position:absolute;height:40px;top:0;z-index:-1}.jp-card-logo.jp-card-unionpay:before{content:" ";width:28px;background:#00447c;left:14px;border-top-left-radius:5px;border-bottom-left-radius:5px}.jp-card-logo.jp-card-unionpay:after{content:"银联";width:26px;background:#007b84;left:34px;border-radius:5px;font-size:10px;line-height:54px;text-indent:-17px}.jp-card.jp-card-unionpay.jp-card-identified .jp-card-back:before,.jp-card.jp-card-unionpay.jp-card-identified .jp-card-front:before{background-color:#987c00}.jp-card.jp-card-unionpay.jp-card-identified .jp-card-logo.jp-card-unionpay{opacity:1}.jp-card-logo.jp-card-visa{text-transform:uppercase;color:white;text-align:center;font-weight:bold;font-size:24px;line-height:18px;margin-top:5px}.jp-card-logo.jp-card-visa:before,.jp-card-logo.jp-card-visa:after{content:" ";display:block;width:100%;height:25%}.jp-card-logo.jp-card-visa:before{position:absolute;left:-4px;width:0;height:0;border-style:solid;border-width:0 12px 6px 0;border-color:transparent #ffffff transparent transparent}.jp-card.jp-card-visa.jp-card-identified .jp-card-front:before,.jp-card.jp-card-visa.jp-card-identified .jp-card-back:before{background-color:#191278}.jp-card.jp-card-visa.jp-card-identified .jp-card-logo.jp-card-visa{opacity:1;box-shadow:none}.jp-card-logo.jp-card-visaelectron{background:white;text-transform:uppercase;color:#1A1876;text-align:center;font-weight:bold;font-size:15px;line-height:18px}.jp-card-logo.jp-card-visaelectron:before,.jp-card-logo.jp-card-visaelectron:after{content:" ";display:block;width:100%;height:25%}.jp-card-logo.jp-card-visaelectron:before{background:#1A1876}.jp-card-logo.jp-card-visaelectron:after{background:#E79800}.jp-card-logo.jp-card-visaelectron .elec{float:right;font-family:arial;font-size:9px;margin-right:1px;margin-top:-5px;text-transform:none}.jp-card.jp-card-visaelectron.jp-card-identified .jp-card-front:before,.jp-card.jp-card-visaelectron.jp-card-identified .jp-card-back:before{background-color:#191278}.jp-card.jp-card-visaelectron.jp-card-identified .jp-card-logo.jp-card-visaelectron{opacity:1}.jp-card-logo.jp-card-mastercard{color:white;font-style:normal;text-transform:lowercase;font-weight:bold;text-align:center;font-size:9px;line-height:84px;z-index:1;text-shadow:1px 1px rgba(0,0,0,0.6)}.jp-card-logo.jp-card-mastercard:before,.jp-card-logo.jp-card-mastercard:after{content:" ";display:block;width:36px;top:0;position:absolute;height:36px;border-radius:18px}.jp-card-logo.jp-card-mastercard:before{left:0;background:#EB001B;z-index:-1;opacity:0.9}.jp-card-logo.jp-card-mastercard:after{right:0;background:#FF5F00;z-index:-2}.jp-card.jp-card-mastercard.jp-card-identified .jp-card-front .jp-card-logo.jp-card-mastercard,.jp-card.jp-card-mastercard.jp-card-identified .jp-card-back .jp-card-logo.jp-card-mastercard{box-shadow:none}.jp-card.jp-card-mastercard.jp-card-identified .jp-card-front:before,.jp-card.jp-card-mastercard.jp-card-identified .jp-card-back:before{background-color:#0061A8}.jp-card.jp-card-mastercard.jp-card-identified .jp-card-logo.jp-card-mastercard{opacity:1}.jp-card-logo.jp-card-maestro{color:white;font-style:normal;text-transform:lowercase;font-weight:bold;text-align:center;font-size:14px;line-height:84px;z-index:1;text-shadow:1px 1px rgba(0,0,0,0.6)}.jp-card-logo.jp-card-maestro:before,.jp-card-logo.jp-card-maestro:after{content:" ";display:block;width:36px;top:0;position:absolute;height:36px;border-radius:18px}.jp-card-logo.jp-card-maestro:before{left:0;background:#EB001B;z-index:-2}.jp-card-logo.jp-card-maestro:after{right:0;background:#00A2E5;z-index:-1;opacity:0.8}.jp-card.jp-card-maestro.jp-card-identified .jp-card-front .jp-card-logo.jp-card-maestro,.jp-card.jp-card-maestro.jp-card-identified .jp-card-back .jp-card-logo.jp-card-maestro{box-shadow:none}.jp-card.jp-card-maestro.jp-card-identified .jp-card-front:before,.jp-card.jp-card-maestro.jp-card-identified .jp-card-back:before{background-color:#0B2C5F}.jp-card.jp-card-maestro.jp-card-identified .jp-card-logo.jp-card-maestro{opacity:1}.jp-card-logo.jp-card-dankort{width:60px;height:36px;padding:3px;border-radius:8px;border:#000 1px solid;background-color:#fff}.jp-card-logo.jp-card-dankort .dk{position:relative;width:100%;height:100%;overflow:hidden}.jp-card-logo.jp-card-dankort .dk:before{background-color:#ED1C24;content:\'\';position:absolute;width:100%;height:100%;display:block;border-radius:6px}.jp-card-logo.jp-card-dankort .dk:after{content:\'\';position:absolute;top:50%;margin-top:-7.7px;right:0;width:0;height:0;border-style:solid;border-width:7px 7px 10px 0;border-color:transparent #ED1C24 transparent transparent;z-index:1}.jp-card-logo.jp-card-dankort .d,.jp-card-logo.jp-card-dankort .k{position:absolute;top:50%;width:50%;display:block;height:15.4px;margin-top:-7.7px;background:white}.jp-card-logo.jp-card-dankort .d{left:0;border-radius:0 8px 10px 0}.jp-card-logo.jp-card-dankort .d:before{content:\'\';position:absolute;top:50%;left:50%;display:block;background:#ED1C24;border-radius:2px 4px 6px 0px;height:5px;width:7px;margin:-3px 0 0 -4px}.jp-card-logo.jp-card-dankort .k{right:0}.jp-card-logo.jp-card-dankort .k:before,.jp-card-logo.jp-card-dankort .k:after{content:\'\';position:absolute;right:50%;width:0;height:0;border-style:solid;margin-right:-1px}.jp-card-logo.jp-card-dankort .k:before{top:0;border-width:8px 5px 0 0;border-color:#ED1C24 transparent transparent transparent}.jp-card-logo.jp-card-dankort .k:after{bottom:0;border-width:0 5px 8px 0;border-color:transparent transparent #ED1C24 transparent}.jp-card.jp-card-dankort.jp-card-identified .jp-card-front:before,.jp-card.jp-card-dankort.jp-card-identified .jp-card-back:before{background-color:#0055C7}.jp-card.jp-card-dankort.jp-card-identified .jp-card-logo.jp-card-dankort{opacity:1}.jp-card-logo.jp-card-elo{height:50px;width:50px;border-radius:100%;background:black;color:white;text-align:center;text-transform:lowercase;font-size:21px;font-style:normal;letter-spacing:1px;font-weight:bold;padding-top:13px}.jp-card-logo.jp-card-elo .e,.jp-card-logo.jp-card-elo .l,.jp-card-logo.jp-card-elo .o{display:inline-block;position:relative}.jp-card-logo.jp-card-elo .e{-webkit-transform:rotate(-15deg);-moz-transform:rotate(-15deg);-ms-transform:rotate(-15deg);-o-transform:rotate(-15deg);transform:rotate(-15deg)}.jp-card-logo.jp-card-elo .o{position:relative;display:inline-block;width:12px;height:12px;right:0;top:7px;border-radius:100%;background-image:-webkit-linear-gradient( #ff0 50%,red 50%);background-image:linear-gradient( #ff0 50%,red 50%);-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);text-indent:-9999px}.jp-card-logo.jp-card-elo .o:before{content:"";position:absolute;width:49%;height:49%;background:black;border-radius:100%;text-indent:-99999px;top:25%;left:25%}.jp-card.jp-card-elo.jp-card-identified .jp-card-front:before,.jp-card.jp-card-elo.jp-card-identified .jp-card-back:before{background-color:#6F6969}.jp-card.jp-card-elo.jp-card-identified .jp-card-logo.jp-card-elo{opacity:1}.jp-card-logo.jp-card-jcb{border-radius:5px 0px 5px 0px;-moz-border-radius:5px 0px 5px 0px;-webkit-border-radius:5px 0px 5px 0px;background-color:white;font-style:normal;color:white;width:50px;padding:2px 0 0 2px}.jp-card-logo.jp-card-jcb>div{width:15px;margin-right:1px;display:inline-block;text-align:center;text-shadow:1px 1px rgba(0,0,0,0.6);border-radius:5px 0px 5px 0px;-moz-border-radius:5px 0px 5px 0px;-webkit-border-radius:5px 0px 5px 0px}.jp-card-logo.jp-card-jcb>div:before,.jp-card-logo.jp-card-jcb>div:after{content:" ";display:block;height:8px}.jp-card-logo.jp-card-jcb>div.j{background-color:#000063;background-image:-webkit-linear-gradient(left, #000063,#008cff);background-image:linear-gradient(to right,#000063,#008cff)}.jp-card-logo.jp-card-jcb>div.c{background-color:#630000;background-image:-webkit-linear-gradient(left, #630000,#ff008d);background-image:linear-gradient(to right,#630000,#ff008d)}.jp-card-logo.jp-card-jcb>div.b{background-color:#006300;background-image:-webkit-linear-gradient(left, #006300,lime);background-image:linear-gradient(to right,#006300,lime)}.jp-card.jp-card-jcb.jp-card-identified .jp-card-front:before,.jp-card.jp-card-jcb.jp-card-identified .jp-card-back:before{background-color:#CB8000}.jp-card.jp-card-jcb.jp-card-identified .jp-card-logo.jp-card-jcb{opacity:1;box-shadow:none}.jp-card-logo.jp-card-dinersclub{font-family:serif;height:40px;width:100px;color:white;font-size:17px;font-style:normal;letter-spacing:1px}.jp-card-logo.jp-card-dinersclub::before,.jp-card-logo.jp-card-dinersclub::after{display:block;position:relative}.jp-card-logo.jp-card-dinersclub::before{content:\'Diners Club\'}.jp-card-logo.jp-card-dinersclub::after{content:\'International\';text-transform:uppercase;font-size:0.6em}.jp-card.jp-card-dinersclub .jp-card-front .jp-card-logo{box-shadow:none !important}.jp-card.jp-card-dinersclub.jp-card-identified .jp-card-front:before,.jp-card.jp-card-dinersclub.jp-card-identified .jp-card-back:before{background-color:#999}.jp-card.jp-card-dinersclub.jp-card-identified .jp-card-logo.jp-card-dinersclub{opacity:1}.jp-card-logo.jp-card-hipercard{height:20px;width:100px;color:white;font-size:21px;font-style:italic;font-weight:bold}.jp-card-logo.jp-card-hipercard::before,.jp-card-logo.jp-card-hipercard::after{display:block;position:relative}.jp-card.jp-card-hipercard.jp-card-identified .jp-card-front:before,.jp-card.jp-card-hipercard.jp-card-identified .jp-card-back:before{background-color:#770304}.jp-card.jp-card-hipercard.jp-card-identified .jp-card-logo.jp-card-hipercard{opacity:1;box-shadow:none}.jp-card-logo.jp-card-troy{text-transform:lowercase;color:#fff;text-align:center;font-weight:700;font-size:24px;line-height:18px;margin-top:5px}.jp-card-logo.jp-card-troy:before,.jp-card-logo.jp-card-troy:after{content:\\"\\";display:block;width:26%;height:6%;background:#22b8c3;right:32%;top:24%;position:absolute;transform:rotate(105deg)}.jp-card.jp-card-troy.jp-card-identified .jp-card-front:before,.jp-card.jp-card-troy.jp-card-identified .jp-card-back:before{background-color:#01adba}.jp-card.jp-card-troy.jp-card-identified .jp-card-logo.jp-card-troy{opacity:1;box-shadow:none}.jp-card-container{-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px;width:350px;max-width:100%;height:200px;margin:auto;z-index:1;position:relative}.jp-card{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1;position:relative;width:100%;height:100%;min-width:315px;border-radius:10px;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;-o-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition:all 400ms linear;-moz-transition:all 400ms linear;transition:all 400ms linear}.jp-card>*,.jp-card>*:after,.jp-card>*:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:inherit}.jp-card.jp-card-flipped{-webkit-transform:rotateY(180deg);-moz-transform:rotateY(180deg);-ms-transform:rotateY(180deg);-o-transform:rotateY(180deg);transform:rotateY(180deg)}.jp-card .jp-card-back,.jp-card .jp-card-front{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;-o-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition:all 400ms linear;-moz-transition:all 400ms linear;transition:all 400ms linear;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden;border-radius:10px;background:#ddd}.jp-card .jp-card-back:before,.jp-card .jp-card-front:before{content:" ";display:block;position:absolute;width:100%;height:100%;top:0;left:0;opacity:0;border-radius:10px;-webkit-transition:all 400ms ease;-moz-transition:all 400ms ease;transition:all 400ms ease}.jp-card .jp-card-back:after,.jp-card .jp-card-front:after{content:" ";display:block}.jp-card .jp-card-back .jp-card-display,.jp-card .jp-card-front .jp-card-display{color:#fff;font-weight:normal;opacity:0.5;-webkit-transition:opacity 400ms linear;-moz-transition:opacity 400ms linear;transition:opacity 400ms linear}.jp-card .jp-card-back .jp-card-display.jp-card-focused,.jp-card .jp-card-front .jp-card-display.jp-card-focused{opacity:1;font-weight:700}.jp-card .jp-card-back .jp-card-cvc,.jp-card .jp-card-front .jp-card-cvc{font-family:"Bitstream Vera Sans Mono",Consolas,Courier,monospace;font-size:14px}.jp-card .jp-card-back .jp-card-shiny,.jp-card .jp-card-front .jp-card-shiny{width:50px;height:35px;border-radius:5px;background:#ccc;position:relative}.jp-card .jp-card-back .jp-card-shiny:before,.jp-card .jp-card-front .jp-card-shiny:before{content:" ";display:block;width:70%;height:60%;border-top-right-radius:5px;border-bottom-right-radius:5px;background:#d9d9d9;position:absolute;top:20%}.jp-card .jp-card-front .jp-card-logo{position:absolute;opacity:0;right:5%;top:8%;-webkit-transition:400ms;-moz-transition:400ms;transition:400ms}.jp-card .jp-card-front .jp-card-lower{width:80%;position:absolute;left:10%;bottom:30px}@media only screen and (max-width: 480px){.jp-card .jp-card-front .jp-card-lower{width:90%;left:5%}}.jp-card .jp-card-front .jp-card-lower .jp-card-cvc{visibility:hidden;float:right;position:relative;bottom:5px}.jp-card .jp-card-front .jp-card-lower .jp-card-number{font-family:"Bitstream Vera Sans Mono",Consolas,Courier,monospace;font-size:24px;clear:both;margin-bottom:30px}.jp-card .jp-card-front .jp-card-lower .jp-card-expiry{font-family:"Bitstream Vera Sans Mono",Consolas,Courier,monospace;letter-spacing:0;position:relative;float:right;width:25%}.jp-card .jp-card-front .jp-card-lower .jp-card-expiry:after,.jp-card .jp-card-front .jp-card-lower .jp-card-expiry:before{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;font-size:7px;white-space:pre;display:block;opacity:0.5}.jp-card .jp-card-front .jp-card-lower .jp-card-expiry:before{content:attr(data-before);margin-bottom:2px;font-size:7px;text-transform:uppercase}.jp-card .jp-card-front .jp-card-lower .jp-card-expiry:after{position:absolute;content:attr(data-after);text-align:right;right:100%;margin-right:5px;margin-top:2px;bottom:0}.jp-card .jp-card-front .jp-card-lower .jp-card-name{text-transform:uppercase;font-family:"Bitstream Vera Sans Mono",Consolas,Courier,monospace;font-size:20px;max-height:45px;position:absolute;bottom:0;width:190px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:horizontal;overflow:hidden;text-overflow:ellipsis}.jp-card .jp-card-back{-webkit-transform:rotateY(180deg);-moz-transform:rotateY(180deg);-ms-transform:rotateY(180deg);-o-transform:rotateY(180deg);transform:rotateY(180deg)}.jp-card .jp-card-back .jp-card-bar{background-color:#444;background-image:-webkit-linear-gradient(#444,#333);background-image:linear-gradient(#444,#333);width:100%;height:20%;position:absolute;top:10%}.jp-card .jp-card-back:after{content:" ";display:block;background-color:#fff;background-image:-webkit-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff);width:80%;height:16%;position:absolute;top:40%;left:2%}.jp-card .jp-card-back .jp-card-cvc{position:absolute;top:40%;left:85%;-webkit-transition-delay:600ms;-moz-transition-delay:600ms;transition-delay:600ms}.jp-card .jp-card-back .jp-card-shiny{position:absolute;top:66%;left:2%}.jp-card .jp-card-back .jp-card-shiny:after{content:"This card has been issued by Jesse Pollak and is licensed for anyone to use anywhere for free. It comes with no warranty. For support issues, please visit: github.com/jessepollak/card.";position:absolute;left:120%;top:5%;color:white;font-size:7px;width:230px;opacity:0.5}.jp-card.jp-card-identified{box-shadow:0 0 20px rgba(0,0,0,0.3)}.jp-card.jp-card-identified .jp-card-back,.jp-card.jp-card-identified .jp-card-front{background-color:#000;background-color:rgba(0,0,0,0.5)}.jp-card.jp-card-identified .jp-card-back:before,.jp-card.jp-card-identified .jp-card-front:before{-webkit-transition:all 400ms ease;-moz-transition:all 400ms ease;transition:all 400ms ease;background-image:repeating-linear-gradient(45deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-linear-gradient(135deg, rgba(255,255,255,0.05) 1px, rgba(255,255,255,0) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.03) 4px),repeating-linear-gradient(90deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-linear-gradient(210deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-radial-gradient(circle at 30% 30%, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-radial-gradient(circle at 70% 70%, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-radial-gradient(circle at 90% 20%, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-radial-gradient(circle at 15% 80%, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),-webkit-linear-gradient(-245deg, rgba(255,255,255,0) 50%,rgba(255,255,255,0.2) 70%,rgba(255,255,255,0) 90%);background-image:repeating-linear-gradient(45deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-linear-gradient(135deg, rgba(255,255,255,0.05) 1px, rgba(255,255,255,0) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.03) 4px),repeating-linear-gradient(90deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-linear-gradient(210deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-radial-gradient(circle at 30% 30%, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-radial-gradient(circle at 70% 70%, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-radial-gradient(circle at 90% 20%, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-radial-gradient(circle at 15% 80%, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),linear-gradient(-25deg, rgba(255,255,255,0) 50%,rgba(255,255,255,0.2) 70%,rgba(255,255,255,0) 90%);opacity:1}.jp-card.jp-card-identified .jp-card-back .jp-card-logo,.jp-card.jp-card-identified .jp-card-front .jp-card-logo{box-shadow:0 0 0 2px rgba(255,255,255,0.3)}.jp-card.jp-card-identified.no-radial-gradient .jp-card-back:before,.jp-card.jp-card-identified.no-radial-gradient .jp-card-front:before{background-image:repeating-linear-gradient(45deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-linear-gradient(135deg, rgba(255,255,255,0.05) 1px, rgba(255,255,255,0) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.03) 4px),repeating-linear-gradient(90deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-linear-gradient(210deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),-webkit-linear-gradient(-245deg, rgba(255,255,255,0) 50%,rgba(255,255,255,0.2) 70%,rgba(255,255,255,0) 90%);background-image:repeating-linear-gradient(45deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-linear-gradient(135deg, rgba(255,255,255,0.05) 1px, rgba(255,255,255,0) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.03) 4px),repeating-linear-gradient(90deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),repeating-linear-gradient(210deg, rgba(255,255,255,0) 1px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.04) 3px, rgba(255,255,255,0.05) 4px),linear-gradient(-25deg, rgba(255,255,255,0) 50%,rgba(255,255,255,0.2) 70%,rgba(255,255,255,0) 90%)}@media (max-width: 450px){.card-wrapper{max-width:80vw;width:100%;margin:20px auto;overflow-x:hidden}.card-wrapper>.jp-card-container{transform:scale(0.625);transform-origin:left center}}\n',""]);const d=i},645:r=>{"use strict";r.exports=function(r){var e=[];return e.toString=function(){return this.map((function(e){var t="",a=void 0!==e[5];return e[4]&&(t+="@supports (".concat(e[4],") {")),e[2]&&(t+="@media ".concat(e[2]," {")),a&&(t+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),t+=r(e),a&&(t+="}"),e[2]&&(t+="}"),e[4]&&(t+="}"),t})).join("")},e.i=function(r,t,a,n,o){"string"==typeof r&&(r=[[null,r,void 0]]);var i={};if(a)for(var d=0;d0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=o),t&&(l[2]?(l[1]="@media ".concat(l[2]," {").concat(l[1],"}"),l[2]=t):l[2]=t),n&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=n):l[4]="".concat(n)),e.push(l))}},e}},81:r=>{"use strict";r.exports=function(r){return r[1]}},648:r=>{"use strict";var e="Function.prototype.bind called on incompatible ",t=Array.prototype.slice,a=Object.prototype.toString,n="[object Function]";r.exports=function(r){var o=this;if("function"!=typeof o||a.call(o)!==n)throw new TypeError(e+o);for(var i,d=t.call(arguments,1),c=function(){if(this instanceof i){var e=o.apply(this,d.concat(t.call(arguments)));return Object(e)===e?e:this}return o.apply(r,d.concat(t.call(arguments)))},p=Math.max(0,o.length-d.length),l=[],s=0;s{"use strict";var a=t(648);r.exports=Function.prototype.bind||a},221:r=>{"use strict";"undefined"!=typeof self?r.exports=self:"undefined"!=typeof window?r.exports=window:r.exports=Function("return this")()},168:(r,e,t)=>{"use strict";var a=t(221);r.exports=function(){return"object"==typeof t.g&&t.g&&t.g.Math===Math&&t.g.Array===Array?t.g:a}},642:(r,e,t)=>{"use strict";var a=t(612);r.exports=a.call(Function.call,Object.prototype.hasOwnProperty)},452:r=>{"use strict";var e,t,a=Object.prototype,n=a.hasOwnProperty,o=a.toString;"function"==typeof Symbol&&(e=Symbol.prototype.valueOf),"function"==typeof BigInt&&(t=BigInt.prototype.valueOf);var i=function(r){return r!=r},d={boolean:1,number:1,string:1,undefined:1},c=/^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$/,p=/^[A-Fa-f0-9]+$/,l={};l.a=l.type=function(r,e){return typeof r===e},l.defined=function(r){return void 0!==r},l.empty=function(r){var e,t=o.call(r);if("[object Array]"===t||"[object Arguments]"===t||"[object String]"===t)return 0===r.length;if("[object Object]"===t){for(e in r)if(n.call(r,e))return!1;return!0}return!r},l.equal=function(r,e){if(r===e)return!0;var t,a=o.call(r);if(a!==o.call(e))return!1;if("[object Object]"===a){for(t in r)if(!l.equal(r[t],e[t])||!(t in e))return!1;for(t in e)if(!l.equal(r[t],e[t])||!(t in r))return!1;return!0}if("[object Array]"===a){if((t=r.length)!==e.length)return!1;for(;t--;)if(!l.equal(r[t],e[t]))return!1;return!0}return"[object Function]"===a?r.prototype===e.prototype:"[object Date]"===a&&r.getTime()===e.getTime()},l.hosted=function(r,e){var t=typeof e[r];return"object"===t?!!e[r]:!d[t]},l.instance=l.instanceof=function(r,e){return r instanceof e},l.nil=l.null=function(r){return null===r},l.undef=l.undefined=function(r){return void 0===r},l.args=l.arguments=function(r){var e="[object Arguments]"===o.call(r),t=!l.array(r)&&l.arraylike(r)&&l.object(r)&&l.fn(r.callee);return e||t},l.array=Array.isArray||function(r){return"[object Array]"===o.call(r)},l.args.empty=function(r){return l.args(r)&&0===r.length},l.array.empty=function(r){return l.array(r)&&0===r.length},l.arraylike=function(r){return!!r&&!l.bool(r)&&n.call(r,"length")&&isFinite(r.length)&&l.number(r.length)&&r.length>=0},l.bool=l.boolean=function(r){return"[object Boolean]"===o.call(r)},l.false=function(r){return l.bool(r)&&!1===Boolean(Number(r))},l.true=function(r){return l.bool(r)&&!0===Boolean(Number(r))},l.date=function(r){return"[object Date]"===o.call(r)},l.date.valid=function(r){return l.date(r)&&!isNaN(Number(r))},l.element=function(r){return void 0!==r&&"undefined"!=typeof HTMLElement&&r instanceof HTMLElement&&1===r.nodeType},l.error=function(r){return"[object Error]"===o.call(r)},l.fn=l.function=function(r){if("undefined"!=typeof window&&r===window.alert)return!0;var e=o.call(r);return"[object Function]"===e||"[object GeneratorFunction]"===e||"[object AsyncFunction]"===e},l.number=function(r){return"[object Number]"===o.call(r)},l.infinite=function(r){return r===1/0||r===-1/0},l.decimal=function(r){return l.number(r)&&!i(r)&&!l.infinite(r)&&r%1!=0},l.divisibleBy=function(r,e){var t=l.infinite(r),a=l.infinite(e),n=l.number(r)&&!i(r)&&l.number(e)&&!i(e)&&0!==e;return t||a||n&&r%e==0},l.integer=l.int=function(r){return l.number(r)&&!i(r)&&r%1==0},l.maximum=function(r,e){if(i(r))throw new TypeError("NaN is not a valid value");if(!l.arraylike(e))throw new TypeError("second argument must be array-like");for(var t=e.length;--t>=0;)if(r=0;)if(r>e[t])return!1;return!0},l.nan=function(r){return!l.number(r)||r!=r},l.even=function(r){return l.infinite(r)||l.number(r)&&r==r&&r%2==0},l.odd=function(r){return l.infinite(r)||l.number(r)&&r==r&&r%2!=0},l.ge=function(r,e){if(i(r)||i(e))throw new TypeError("NaN is not a valid value");return!l.infinite(r)&&!l.infinite(e)&&r>=e},l.gt=function(r,e){if(i(r)||i(e))throw new TypeError("NaN is not a valid value");return!l.infinite(r)&&!l.infinite(e)&&r>e},l.le=function(r,e){if(i(r)||i(e))throw new TypeError("NaN is not a valid value");return!l.infinite(r)&&!l.infinite(e)&&r<=e},l.lt=function(r,e){if(i(r)||i(e))throw new TypeError("NaN is not a valid value");return!l.infinite(r)&&!l.infinite(e)&&r=e&&r<=t},l.object=function(r){return"[object Object]"===o.call(r)},l.primitive=function(r){return!r||!("object"==typeof r||l.object(r)||l.fn(r)||l.array(r))},l.hash=function(r){return l.object(r)&&r.constructor===Object&&!r.nodeType&&!r.setInterval},l.regexp=function(r){return"[object RegExp]"===o.call(r)},l.string=function(r){return"[object String]"===o.call(r)},l.base64=function(r){return l.string(r)&&(!r.length||c.test(r))},l.hex=function(r){return l.string(r)&&(!r.length||p.test(r))},l.symbol=function(r){return"function"==typeof Symbol&&"[object Symbol]"===o.call(r)&&"symbol"==typeof e.call(r)},l.bigint=function(r){return"function"==typeof BigInt&&"[object BigInt]"===o.call(r)&&"bigint"==typeof t.call(r)},r.exports=l},907:(r,e,t)=>{"use strict";r.exports=t(886)},886:(r,e,t)=>{"use strict";var a=t(452),n=t(642),o=Object.defineProperty,i=Object.getOwnPropertyDescriptor,d=function(r,e,t){o&&"__proto__"===e?o(r,e,{enumerable:!0,configurable:!0,value:t,writable:!0}):r[e]=t},c=function(r,e){if("__proto__"===e){if(!n(r,e))return;if(i)return i(r,e).value}return r[e]};r.exports=function r(){var e,t,n,o,i,p,l=arguments[0]||{},s=1,f=arguments.length,g=!1;for("boolean"==typeof l&&(g=l,l=arguments[1]||{},s=2),"object"==typeof l||a.fn(l)||(l={});st[1][0].length)&&(t=[e,o]);return t&&t[0]},o=function(r){var e,t,a;for(t=0,a=i.length;t9&&(e-=9),i+=e;return i%10==0},h=function(r){var e;try{if(null!=r.selectionStart&&r.selectionStart!==r.selectionEnd)return!0;if(null!=("undefined"!=typeof document&&null!==document&&null!=(e=document.selection)?e.createRange:void 0)&&document.selection.createRange().text)return!0}catch(r){}return!1},v=function(r){return setTimeout((function(){var t,n;return t=r.target,n=a.val(t),n=e.fns.formatCardNumber(n),d(t,n),a.trigger(t,"change")}))},s=function(r){return function(e){var t,o,i,d,c,p,l,s,f,g,u;if(e.which>0?(o=String.fromCharCode(e.which),u=a.val(e.target)+o):(o=e.data,u=a.val(e.target)),/^\d+$/.test(o)){for(s=e.target,t=n(u),p=u.replace(/\D/g,"").length,g=[16],t&&(g=t.length),r&&(g=g.filter((function(e){return e<=r}))),i=d=0,c=g.length;d=(f=g[i])&&g[i+1])&&p>=f)return;if(!h(s))return l=t&&"amex"===t.type?/^(\d{4}|\d{4}\s\d{6})$/:/(?:^|\s)(\d{4})$/,u=u.substring(0,u.length-1),l.test(u)?(e.preventDefault(),a.val(s,u+" "+o),a.trigger(s,"change")):void 0}}},p=function(r){var e,t;if(e=r.target,t=a.val(e),!r.meta&&8===r.which&&!h(e))return/\d\s$/.test(t)?(r.preventDefault(),a.val(e,t.replace(/\d\s$/,"")),a.trigger(e,"change")):/\s\d?$/.test(t)?(r.preventDefault(),a.val(e,t.replace(/\s\d?$/,"")),a.trigger(e,"change")):void 0},f=function(r){var e,t,n;if(t=r.target,r.which>0?(e=String.fromCharCode(r.which),n=a.val(t)+e):(e=r.data,n=a.val(t)),/^\d+$/.test(e))return/^\d$/.test(n)&&"0"!==n&&"1"!==n?(r.preventDefault(),a.val(t,"0"+n+" / "),a.trigger(t,"change")):/^\d\d$/.test(n)?(r.preventDefault(),a.val(t,n+" / "),a.trigger(t,"change")):void 0},j=function(r){var e,t,n;if(e=String.fromCharCode(r.which),/^\d+$/.test(e))return t=r.target,n=a.val(t)+e,/^\d$/.test(n)&&"0"!==n&&"1"!==n?(r.preventDefault(),a.val(t,"0"+n),a.trigger(t,"change")):/^\d\d$/.test(n)?(r.preventDefault(),a.val(t,""+n),a.trigger(t,"change")):void 0},g=function(r){var e,t,n;if(e=String.fromCharCode(r.which),/^\d+$/.test(e))return t=r.target,n=a.val(t),/^\d\d$/.test(n)?(a.val(t,n+" / "),a.trigger(t,"change")):void 0},u=function(r){var e,t;if("/"===String.fromCharCode(r.which))return e=r.target,t=a.val(e),/^\d$/.test(t)&&"0"!==t?(a.val(e,"0"+t+" / "),a.trigger(e,"change")):void 0},l=function(r){var e,t;if(!r.metaKey&&(e=r.target,t=a.val(e),8===r.which&&!h(e)))return/\d(\s|\/)+$/.test(t)?(r.preventDefault(),a.val(e,t.replace(/\d(\s|\/)*$/,"")),a.trigger(e,"change")):/\s\/\s?\d?$/.test(t)?(r.preventDefault(),a.val(e,t.replace(/\s\/\s?\d?$/,"")),a.trigger(e,"change")):void 0},E=function(r){var e;return!(!r.metaKey&&!r.ctrlKey)||(32===r.which?r.preventDefault():0===r.which||r.which<33||(e=String.fromCharCode(r.which),/[\d\s]/.test(e)?void 0:r.preventDefault()))},y=function(r){return function(e){var t,o,i,d,c;if(d=e.target,o=String.fromCharCode(e.which),/^\d+$/.test(o)&&!h(d))return c=(a.val(d)+o).replace(/\D/g,""),i=16,(t=n(c))&&(i=t.length[t.length.length-1]),r&&(i=Math.min(i,r)),c.length<=i?void 0:e.preventDefault()}},w=function(r,e){var t,n;if(n=r.target,t=String.fromCharCode(r.which),/^\d+$/.test(t)&&!h(n))return(a.val(n)+t).replace(/\D/g,"").length>e?r.preventDefault():void 0},k=function(r){return w(r,6)},C=function(r){return w(r,2)},$=function(r){return w(r,4)},x=function(r){var e,t;if(t=r.target,e=String.fromCharCode(r.which),/^\d+$/.test(e)&&!h(t))return(a.val(t)+e).length<=4?void 0:r.preventDefault()},z=function(r){var t,n,o,d,c;if(d=r.target,c=a.val(d),o=e.fns.cardType(c)||"unknown",!a.hasClass(d,o))return t=function(){var r,e,t;for(t=[],r=0,e=i.length;r=0&&(!1===e.luhn||m(r)))},validateCardExpiry:function(e,t){var n,o,i,d;return"object"==typeof e&&"month"in e?(e=(i=e).month,t=i.year):"string"==typeof e&&D.call(e,"/")>=0&&(e=(d=r.fns.cardExpiryVal(e)).month,t=d.year),!(!e||!t)&&(e=a.trim(e),t=a.trim(t),!!/^\d+$/.test(e)&&!!/^\d+$/.test(t)&&!!((e=parseInt(e,10))&&e<=12)&&(2===t.length&&(t=(new Date).getFullYear().toString().slice(0,2)+t),o=new Date(t,e),n=new Date,o.setMonth(o.getMonth()-1),o.setMonth(o.getMonth()+1,1),o>n))},validateCardCVC:function(r,e){var t,n;return r=a.trim(r),!!/^\d+$/.test(r)&&(e&&o(e)?(t=r.length,D.call(null!=(n=o(e))?n.cvcLength:void 0,t)>=0):r.length>=3&&r.length<=4)},cardType:function(r){var e;return r&&(null!=(e=n(r))?e.type:void 0)||null},formatCardNumber:function(r){var e,t,a,o;return(e=n(r))?(o=e.length[e.length.length-1],r=(r=r.replace(/\D/g,"")).slice(0,o),e.format.global?null!=(a=r.match(e.format))?a.join(" "):void 0:null!=(t=e.format.exec(r))?(t.shift(),(t=t.filter((function(r){return r}))).join(" ")):void 0):r}},r.restrictNumeric=function(r){return a.on(r,"keypress",E),a.on(r,"input",E)},r.cardExpiryVal=function(e){return r.fns.cardExpiryVal(a.val(e))},r.formatCardCVC=function(e){return r.restrictNumeric(e),a.on(e,"keypress",x),a.on(e,"input",x),e},r.formatCardExpiry=function(e){var t,n;return r.restrictNumeric(e),e.length&&2===e.length?(t=e[0],n=e[1],this.formatCardExpiryMultiple(t,n)):(a.on(e,"keypress",k),a.on(e,"keypress",f),a.on(e,"keypress",u),a.on(e,"keypress",g),a.on(e,"keydown",l),a.on(e,"input",f)),e},r.formatCardExpiryMultiple=function(r,e){return a.on(r,"keypress",C),a.on(r,"keypress",j),a.on(r,"input",j),a.on(e,"keypress",$),a.on(e,"input",$)},r.formatCardNumber=function(e,t){return r.restrictNumeric(e),a.on(e,"keypress",y(t)),a.on(e,"keypress",s(t)),a.on(e,"keydown",p),a.on(e,"keyup blur",z),a.on(e,"blur",s(t)),a.on(e,"paste",v),a.on(e,"input",s(t)),e},r.getCardArray=function(){return i},r.setCardArray=function(r){return i=r,!0},r.addToCardArray=function(r){return i.push(r)},r.removeFromCardArray=function(r){var e;for(e in i)i[e].type===r&&i.splice(e,1);return!0},r}(),r.exports=e,b.Payment=e}).call(this)},202:function(r){(function(){var e,t,a;(e=function(r){return e.isDOMElement(r)?r:document.querySelectorAll(r)}).isDOMElement=function(r){return r&&null!=r.nodeName},a=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,e.trim=function(r){return null===r?"":(r+"").replace(a,"")},t=/\r/g,e.val=function(r,e){var a;return arguments.length>1?r.value=e:"string"==typeof(a=r.value)?a.replace(t,""):null===a?"":a},e.preventDefault=function(r){if("function"!=typeof r.preventDefault)return r.returnValue=!1,!1;r.preventDefault()},e.normalizeEvent=function(r){var t;return null==(r={which:null!=(t=r).which?t.which:void 0,target:t.target||t.srcElement,preventDefault:function(){return e.preventDefault(t)},originalEvent:t,data:t.data||t.detail}).which&&(r.which=null!=t.charCode?t.charCode:t.keyCode),r},e.on=function(r,t,a){var n,o,i,d,c,p,l,s;if(r.length)for(o=0,d=r.length;o{"use strict";t.r(e),t.d(e,{default:()=>h});var a=t(379),n=t.n(a),o=t(795),i=t.n(o),d=t(569),c=t.n(d),p=t(565),l=t.n(p),s=t(216),f=t.n(s),g=t(589),u=t.n(g),j=t(120),b={};b.styleTagTransform=u(),b.setAttributes=l(),b.insert=c().bind(null,"head"),b.domAPI=i(),b.insertStyleElement=f(),n()(j.Z,b);const h=j.Z&&j.Z.locals?j.Z.locals:void 0},379:r=>{"use strict";var e=[];function t(r){for(var t=-1,a=0;a{"use strict";var e={};r.exports=function(r,t){var a=function(r){if(void 0===e[r]){var t=document.querySelector(r);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(r){t=null}e[r]=t}return e[r]}(r);if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(t)}},216:r=>{"use strict";r.exports=function(r){var e=document.createElement("style");return r.setAttributes(e,r.attributes),r.insert(e,r.options),e}},565:(r,e,t)=>{"use strict";r.exports=function(r){var e=t.nc;e&&r.setAttribute("nonce",e)}},795:r=>{"use strict";r.exports=function(r){var e=r.insertStyleElement(r);return{update:function(t){!function(r,e,t){var a="";t.supports&&(a+="@supports (".concat(t.supports,") {")),t.media&&(a+="@media ".concat(t.media," {"));var n=void 0!==t.layer;n&&(a+="@layer".concat(t.layer.length>0?" ".concat(t.layer):""," {")),a+=t.css,n&&(a+="}"),t.media&&(a+="}"),t.supports&&(a+="}");var o=t.sourceMap;o&&"undefined"!=typeof btoa&&(a+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),e.styleTagTransform(a,r,e.options)}(e,r,t)},remove:function(){!function(r){if(null===r.parentNode)return!1;r.parentNode.removeChild(r)}(e)}}}},589:r=>{"use strict";r.exports=function(r,e){if(e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}},311:r=>{"use strict";r.exports=jQuery}},a={};function n(r){var e=a[r];if(void 0!==e)return e.exports;var o=a[r]={id:r,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.exports}n.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return n.d(e,{a:e}),e},n.d=(r,e)=>{for(var t in e)n.o(e,t)&&!n.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:e[t]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(r){if("object"==typeof window)return window}}(),n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),n.r=r=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},n.nc=void 0,e=n(579),(r=n(311)).card={},r.card.fn={},r.fn.card=function(e){return r.card.fn.construct.apply(this,e)},r.fn.extend({card:function(t,...a){return this.each((function(){var n,o;if((o=(n=r(this)).data("card"))||(r.each(t,((r,e)=>{if(e instanceof jQuery)return t[r]=e[0]})),t.form=this,n.data("card",o=new e(t))),"string"==typeof t)return o[t].apply(o,a)}))}}),card={}})(); /* >>>>>>> END plugins/jquery.card.js <<<<<<< */ /* >>>>>>> main.js <<<<<<< */ var Main = { setup: function () { var __this = this; $('input[type="submit"]').prop("disabled", false); $("button").prop("disabled", false); jQuery("#filterResource").submit(function (event) { event.preventDefault(); jQuery(".filter-form_ajax").trigger("submit"); }); jQuery("input[required]").on("invalid", function (event) { event.preventDefault(); }); jQuery( "#nav-main-mobile, #nav-admin-mobile, #nav-backoffice-mobile" ).change(function () { window.location.assign(jQuery(this).val()); }); // SLIDES GLIDE.JS //SLIDE TOPO FATURAS $(document).ready(function () { if (jQuery("#topoFaturaSlide").length) { let slideCount = jQuery("#topoFaturaSlide .glide__slide").length; if (slideCount > 1) { let glideInstance = new Glide("#topoFaturaSlide", { type: "carousel", perView: 3, gap: 20, autoplay: 4000, hoverpause: true, breakpoints: { 3000: { perView: 1 }, 1440: { perView: 1 }, 1024: { perView: 1 }, 768: { perView: 1 }, }, }); glideInstance.on("mount.after", function () { jQuery("#topoFaturaSlide .glide__slides").css( "visibility", "visible" ); }); glideInstance.mount(); } else { // Se houver apenas um slide, torná-lo visível manualmente jQuery("#topoFaturaSlide .glide__slides").css( "visibility", "visible" ); } } //SLIDE TOPO FINANCEIRO if (jQuery("#topoFinanceiroSlide").length) { let slideCount = jQuery("#topoFinanceiroSlide .glide__slide").length; if (slideCount > 1) { let glideInstance = new Glide("#topoFinanceiroSlide", { type: "carousel", perView: 3, gap: 20, autoplay: 4000, hoverpause: true, breakpoints: { 3000: { perView: 1 }, 1440: { perView: 1 }, 1024: { perView: 1 }, 768: { perView: 1 }, }, }); glideInstance.on("mount.after", function () { jQuery("#topoFinanceiroSlide .glide__slides").css( "visibility", "visible" ); }); glideInstance.mount(); } else { // Se houver apenas um slide, torná-lo visível manualmente jQuery("#topoFinanceiroSlide .glide__slides").css( "visibility", "visible" ); } } //SLIDE TOPO DASHBOARD if (jQuery("#topoDashboardSlide").length) { let slideCount = jQuery("#topoDashboardSlide .glide__slide").length; if (slideCount > 1) { let glideInstance = new Glide("#topoDashboardSlide", { type: "carousel", perView: 3, gap: 20, autoplay: 4000, hoverpause: true, breakpoints: { 3000: { perView: 1 }, 1440: { perView: 1 }, 1024: { perView: 1 }, 768: { perView: 1 }, }, }); glideInstance.on("mount.after", function () { jQuery("#topoDashboardSlide .glide__slides").css( "visibility", "visible" ); }); glideInstance.mount(); } else { // Se houver apenas um slide, torná-lo visível manualmente jQuery("#topoDashboardSlide .glide__slides").css( "visibility", "visible" ); } } //SLIDE LATERAL DASHBOARD if (jQuery("#lateralDashboardSlide").length) { let slideCount = jQuery("#lateralDashboardSlide .glide__slide").length; if (slideCount > 1) { let glideInstance = new Glide("#lateralDashboardSlide", { type: "carousel", perView: 3, gap: 20, autoplay: 4000, hoverpause: true, breakpoints: { 3000: { perView: 1 }, 1440: { perView: 1 }, 1024: { perView: 1 }, 768: { perView: 1 }, }, }); glideInstance.on("mount.after", function () { jQuery("#lateralDashboardSlide .glide__slides").css( "visibility", "visible" ); }); glideInstance.mount(); } else { // Se houver apenas um slide, torná-lo visível manualmente jQuery("#lateralDashboardSlide .glide__slides").css( "visibility", "visible" ); } } }); jQuery.ajaxSetup({ converters: { "text json": function (data) { if ( data.search("Notice:") != -1 || data.search("Exception information:") != -1 || data.search("Fatal Error:") != -1 ) { return false; } if ( data.search('{"erro":') != -1 || (data.search("codigo") != -1 && data.search("qualificacaoAtual") != -1 && data.search("proximaQualificacao") != -1) ) { data = JSON.parse(data); if (data.manutencao == 1) { setTimeout("Main.Misc.manutencao()", 150); return false; } } return data; }, "text html": function (data) { var dataString = data; if ( data.search("Notice:") != -1 || data.search("Exception information:") != -1 || data.search("Fatal Error:") != -1 ) { Main.Misc.failModal(); return false; } if ( data.search('{"erro":') != -1 || (data.search("codigo") != -1 && data.search("qualificacaoAtual") != -1 && data.search("proximaQualificacao") != -1) ) { data = JSON.parse(data); if (data.manutencao == 1) { setTimeout("Main.Misc.manutencao()", 150); return "manutencao"; } } if (dataString.search("erro-404") != -1) { jQuery(".modal").modal("hide"); Main.Misc.failModal( "A página que você procura não foi encontrada!" ); return false; } if (dataString.search(" 0) { modalGranatum.modal("show"); } __this.Header.setup(); __this.Comunicados.setup(); __this.Filter.setup(); __this.Filter.dateBox(); __this.Filter.dateBoxMonth(); __this.Pagination.setup(); __this.Actions.setup(); __this.Form.setup(); __this.Misc.setup(); __this.Authenticator.setup(); }, Header: { setup: function () { var __this = this, navFast = jQuery(".nav-fast-click"); navFast.on("click", 'a:not(".chosen-single")', function (event) { if (jQuery(this).attr("target") != "_blank") { Main.Misc.waitModal(); } }); navFast.on("click", "a", function (event) { navFast.find("a").removeClass("active"); jQuery(this).addClass("active"); }); jQuery("#open-sub-nav").on("click", function (event) { event.preventDefault(); var sub = jQuery("#sub-nav"); sub.stop().slideToggle(); }); jQuery(document).on( "click", "#logout, .logout-nav-mobile", function (event) { event.preventDefault(); var _this = jQuery(this); Main.Misc.sureModal( "Você tem certeza que deseja sair?", function (isConfirm) { if (isConfirm) { Main.Misc.waitModal(); setTimeout(function () { window.location.assign(_this.attr("href")); }, 500); } } ); } ); jQuery(document).on("click", ".nav-mobile", function (event) { event.preventDefault(); var _this = jQuery(this); _this.toggleClass("opened"); navFast.toggleClass("opened"); }); jQuery(document).on( "click", ".notification-enabled .fa-bell", function (event) { event.preventDefault(); var _this = jQuery(this); _this.parent().toggleClass("opened"); } ); __this.Support.setup(); }, Support: { setup: function () { var __this = this, modal = jQuery("#modalSupport"), modalTicket = jQuery("#modalSupportTicket"), modalAdd = jQuery("#modalSupportAdd"), deleteButton = jQuery( '' ); modalTicket.on("show.bs.modal", function () { modal.modal("hide"); tinyMCE.editors = []; tinymce.init({ selector: "#modalSupportTicket textarea", language_url: _URL + "/js/plugins/tinymce/langs/pt_BR.js", height: "150", theme: "modern", }); __this.uploadFile(deleteButton); setTimeout(function () { modalTicket .find(".support-discussion") .animate({ scrollTop: "999999em" }, 0); }, 300); }); modalAdd.on("show.bs.modal", function () { modal.modal("hide"); Main.Misc.autoComplete( modalAdd.find(".box-autocomplete"), function (data, resultAuto) { jQuery.each(data.cadastros, function (index, cadastro) { resultAuto.append( '
  • ' + cadastro.id + " - " + cadastro.login + " - " + cadastro.nome + "
  • " ); }); } ); tinyMCE.editors = []; tinymce.init({ selector: "#modalSupportAdd textarea", language_url: _URL + "/js/plugins/tinymce/langs/pt_BR.js", height: "200", theme: "modern", plugins: ["link"], }); __this.uploadFile(deleteButton); }); jQuery(document).off("click", ".ticket-upload-file"); jQuery(document).on("click", ".ticket-upload-file", function (event) { event.preventDefault(); var _this = jQuery(this); jQuery(".upload-file-input").attr({ multiple: "" }); jQuery(".upload-file-input").trigger("click"); }); jQuery("#modalSupportTicket, #modalSupportAdd").on( "submit", "form", function (event) { event.preventDefault(); var _this = jQuery(this); if (Main.Form.validation(_this) == 0) { jQuery.ajax({ url: _this.attr("action"), data: _this.serialize(), type: "POST", context: jQuery(".ticket-upload-file-input")[0], success: function (data) { if (data == "manutencao") { return false; } if (data.erro == 0) { jQuery(".upload-file-input").fileupload( "option", "url", _URL + "/backoffice/suporte/anexararquivos/idChamado/" + data.id ); var files = _this.find(".list-files .file-trash"); if (files.length > 0) { files.each(function (index, el) { var file = jQuery(el).data(); file.url = jQuery("#fileupload").attr("data-url"); if (typeof file.submit == "function") { file.submit(function (event) { event.preventDefault(); }); } }); } swal( { title: "Bom trabalho!", text: data.msg, type: "success", }, function (isConfirm) { __this.fileTicketID = _this .find("input[name=idChamado]") .val(); if ( _this.parents(".modal").attr("id") == "modalSupportTicket" ) { setTimeout(function () { Main.Misc.waitModal(); if (jQuery(".content-admin").length > 0) { jQuery( "#list-consult tr[data-id=" + _this.find("input[name=idChamado]").val() + "] .action-event" ) .eq(0) .trigger("click"); } else { modal .find( ".tickets > li[data-id=" + _this.find("input[name=idChamado]").val() + "]" ) .trigger("click"); } }, 100); } else { modalAdd.modal("hide"); jQuery(".filter-form_ajax").trigger("submit"); } } ); } else { Main.Misc.failModal(data.msg); } }, }); } } ); deleteButton.off("click"); deleteButton.on("click", function (event) { event.preventDefault(); var _this = jQuery(this), data = _this.data(); _this.parents("tr").remove(); data.abort(); }); if (jQuery(".content-admin").length == 0) { jQuery("#modalSupportTicket, #modalSupportAdd").on( "hide.bs.modal", function () { if (jQuery(this).is(":visible")) { jQuery(".support.action-event").trigger("click"); } } ); } }, uploadFile: function (deleteButton) { Main.Form.uploadFile({ url: _URL + "/administrador/suporte/anexararquivos/", acceptFileTypes: /(\.|\/)(pdf|doc|docx|jpe?g|png|)$/i, autoUpload: false, previewMaxWidth: 30, previewMaxHeight: 30, success: function (data) {}, fileuploadprocessalways: function (e, data) { var index = data.index, file = data.files[index], node = jQuery(""); if (!index) { node.append( jQuery('').html( deleteButton.clone(true).data(data) ) ); node.append(jQuery("").text(file.name)); } node.appendTo(jQuery(".list-files")); Main.Misc.closeModal(); }, }); }, detailsCallback: function (_this, data) { var flag = _this.parents("tr").find(".fa-flag"); if (_this.is("li")) { flag = _this.find(".fa-flag"); } if (flag.length > 0) { var count = jQuery("#header .support .notification-count"); if (count.text() == 1) { count.remove(); } else { count.text(Number(count.text()) - 1); } flag.remove(); } }, }, }, Comunicados: { setup: function () { var modal = jQuery("#comunicadosModal"), comunicado = jQuery("#comunicadosOpenModal"), comunicado_count = jQuery(".count-comunicados, .notification-count"), notification_box = jQuery(".box-notifications"); if (jQuery("#contratoModal").length > 0) { jQuery("#contratoModal").modal("show"); } if (jQuery("#termosLGPDModal").length > 0) { jQuery("#termosLGPDModal").modal("show"); } jQuery("#contratoModal").on("hide.bs.modal", function (e) { e.preventDefault(); e.stopImmediatePropagation(); return false; }); jQuery("#termosLGPDModal").on("hide.bs.modal", function (e) { e.preventDefault(); e.stopImmediatePropagation(); return false; }); jQuery(document).on("click", "#checkTermoContrato", function (event) { if (jQuery(this).is(":checked")) { jQuery(".buttons-actions .btn-continue.disabled").removeClass( "disabled" ); } else { jQuery(".buttons-actions .btn-continue").addClass("disabled"); } }); jQuery(document).on( "click", '#termosLGPDModal input[type="checkbox"]', function () { if ( jQuery('[name="consentimento"]').is(":checked") && jQuery('[name="privacidade"]').is(":checked") ) { jQuery(".termos-actions .btn-continue.disabled").removeClass( "disabled" ); } else { jQuery(".termos-actions .btn-continue").addClass("disabled"); } } ); jQuery(document).on("click", ".close", function (event) { $(".modal-body iframe:first").remove(); $(".modal-body iframe:first").remove(); }); jQuery(document).on( "click", "#contratoModal .btn-continue", function (event) { jQuery("#contratoModal").off("hide.bs.modal"); jQuery("#contratoModal").modal("hide"); } ); jQuery(document).off("submit", "#termosLGPDModal form"); jQuery(document).on("submit", "#termosLGPDModal form", function (event) { event.preventDefault(); var _this = jQuery(this); var action = _this.attr("action"); jQuery.ajax({ type: "POST", url: _URL + action, data: _this.serialize(), success: function (data) { if (data == "manutenção") { return false; } if (data.erro == 0) { swal({ title: "Bom trabalho!", text: data.msg, type: "success", timer: 3000, }); setTimeout(function () { jQuery("#termosLGPDModal").off("hide.bs.modal"); jQuery("#termosLGPDModal").modal("hide"); Main.Misc.closeModal(); window.location.reload(); }, 3000); } else { swal({ title: "Oops!", text: data.msg, type: "error", timer: 3000, }); } }, }); }); jQuery(document).on( "click", ".box-notifications ol > li, #comunicadosModal .list-group-item, .quadro-comunicados > li", function (event) { event.preventDefault(); var _this = jQuery(this), conteudo = _this.find(".desc").html(); if ( _this.find("> .fa").length > 0 || _this.find(".unread").length > 0 || _this.hasClass("exibir-ao-logar") ) { Main.Misc.blockWaitModal = false; Main.Misc.waitModal(); jQuery.ajax({ type: "POST", url: _URL + "/administrador/comunicados/marcarlida", data: { id_comunicado: _this.attr("data-id"), id_cadastro: _ID_CADASTRO, }, success: function (data) { if (data == "manutencao") { return false; } if (data.erro == 0) { _this.find("> .fa").remove(); _this .find(".unread") .find("> .fa-exclamation") .remove() .end() .removeClass("unread"); comunicado_count.text( notification_box.find(".unread").length ); if (comunicado_count.text() == 0) { comunicado_count.remove(); } comunicado.find(".modal-title").text(_this.attr("title")); comunicado.find(".modal-body").html(conteudo); modal.modal("hide"); comunicado.modal("show"); Main.Misc.closeModal(); swal.close(); } else { Main.Misc.failModal(data.msg); } }, }); } else { comunicado.find(".modal-title").text(_this.attr("title")); comunicado.find(".modal-body").html(conteudo); modal.modal("hide"); comunicado.modal("show"); Main.Misc.closeModal(); } } ); jQuery(document).on("click", ".notification-read-all", function (event) { event.preventDefault(); var _this = jQuery(this); jQuery.ajax({ url: _URL + "/administrador/comunicados/marcartodaslida", data: { id_cadastro: _ID_CADASTRO, }, success: function (data) { if (data == "manutencao") { return false; } if (data.erro == 0) { jQuery(".box-notifications .unread") .find("> .fa-exclamation") .remove() .end() .removeClass("unread"); modal .find(".list-group-item > .fa-exclamation-triangle") .remove(); comunicado_count.remove(); Main.Misc.closeModal(); swal.close(); } else { Main.Misc.failModal(data.msg); } }, }); }); jQuery(".exibir-ao-logar").trigger("click"); }, }, Filter: { setup: function (callback) { var __this = this, form = jQuery(".filter-form_ajax"), inputOrder = jQuery(".filter-form_ajax input[name=orderBy]"); jQuery(document).off("submit", ".filter-form_ajax"); jQuery(document).on("submit", ".filter-form_ajax", function (event) { event.preventDefault(); var _this = jQuery(this), url = _this.attr("action"), requiredOR = _this.find(".required-or"); if (requiredOR.length > 0) { var requiredOrError = 1; requiredOR.each(function (index, el) { var inputVal = jQuery(el).val(); if (inputVal != "") { requiredOrError = 0; } jQuery(el).off("keyup"); jQuery(el).on("keyup", function (event) { var inputVal = jQuery(el).val(); if (inputVal != "") { requiredOrError = 0; } else { requiredOrError = 1; } if (requiredOrError == 1) { requiredOR.addClass("error"); } else { requiredOR.removeClass("error"); } }); }); var inputOrder = jQuery(".filter-form_ajax input[name=orderBy]"); if (inputOrder.attr("data-order") != undefined) { var order = inputOrder.attr("data-order"), th = jQuery( '.table th[data-field="' + inputOrder.attr("data-field") + '"]' ); if (order == "asc") { th.prepend(''); } else if (order == "desc") { th.prepend(''); } } if (requiredOrError == 1) { requiredOR.addClass("error"); } else { requiredOR.removeClass("error"); } } if (requiredOR.length == 0 || requiredOR.filter(".error").length == 0) { jQuery.ajax({ url: url, type: "POST", data: _this.serialize(), success: function (data) { if (data == "manutencao") { return false; } if (undefined == data.erro || data.erro == 0) { var result = jQuery( '.result-content_ajax[data-action="' + url + '"]' ); if (result.length == 0) { result = jQuery(".result-content_ajax"); } if (data.html != undefined) { result.html(data.html); } else { result.html(data); } } else { Main.Misc.failModal(data.msg); var resultContent = jQuery( ".result-content_ajax tbody.result-content" ); // .../views/scripts/gerenciarconteudo/bannersgrid.phtml if (resultContent.length > 0) { resultContent.html( '' + data.msg + "" ); } } Main.Misc.setup(); if (typeof callback == "function") { callback(_this, data); } Main.Misc.customSelect(); swal.close(); }, }); } }); jQuery(document).off("change", ".pageLengthSelect"); jQuery(document).on("change", ".pageLengthSelect", function () { var _this = jQuery(this), val = _this.val(), dataAction = _this.parents(".pageLength").attr("data-action"); if (dataAction != undefined) { form = jQuery('form[action="' + dataAction + '"]'); } form.find("input[name=itemPerPage]").val(val); form.trigger("submit"); }); form.off("click", "button[type=reset]"); form.on("click", "button[type=reset]", function (event) { event.preventDefault(); var _this = jQuery(this), form = _this.parents("form"); form.find("input[type=text]").val(""); form.find("select").val("").trigger("chosen:updated"); form.find("#tipoData").val("1").trigger("chosen:updated"); form.trigger("submit"); }); if (form.attr("data-autosubmit") != "off") { form.trigger("submit"); } __this.orderBy(); }, update: function () { var page = jQuery( ".result-content_ajax .paginationControl .page-current" ); if (page.length > 0) { page.trigger("click"); } else { jQuery(".filter-form_ajax").trigger("submit"); } }, dateBox: function (params) { if (params == undefined) { params = {}; } var elem = params.elem || jQuery(".datepicker-custom"); elem.each(function (index, el) { var el = jQuery(el); var startDate = el.attr("data-startDate") || params.startDate || "-120y", endDate = el.attr("data-endDate") || params.endDate || "+0d", format = el.attr("data-format") || params.format || "DD/MM/YYYY", startView = el.attr("data-startView") || params.startView || 0, minViewMode = el.attr("data-minViewMode") || params.minViewMode || 0, maxViewMode = el.attr("data-maxViewMode") || params.maxViewMode || 2; if (params.elem != undefined) { el.datepicker("destroy"); } jQuery(this) .datepicker({ startDate: startDate, endDate: endDate, format: format, startView: Number(startView), minViewMode: Number(minViewMode), maxViewMode: Number(maxViewMode), language: "pt-BR", autoclose: true, todayHighlight: true, }) .on("changeDate", function (e) { var date = moment(e.date); el.find("span").text(`${date.format(format)}`); if (el.attr("data-content") != undefined) { jQuery.ajax({ url: el.attr("href"), type: "POST", data: { mes: date.get("month") + 1, ano: date.get("year"), }, success: function (data) { if (data == "manutencao") { return false; } jQuery(el.attr("data-content")).html(data); swal.close(); }, }); } if (typeof params.changeDate != "undefined") { params.changeDate(e, el); } }) .on("changeYear", function (e) { if (typeof params.changeYear != "undefined") { params.changeYear(e, el); } }) .on("changeMonth", function (e) { if (typeof params.changeMonth != "undefined") { params.changeMonth(e, el); } }) .on("changeDay", function (e) { if (typeof params.changeMonth != "undefined") { params.changeDay(e, el); } }); jQuery(this) .datepicker("setDate", el.attr("data-date-init")) .datepicker("update"); }); }, dateBoxMonth: function () { jQuery(".select-date").each(function () { var selectDate = jQuery(this), urlFilter = selectDate.attr("data-url"), contentReplace = jQuery(selectDate.attr("data-content")), data = selectDate.find(".box-datas"), inputAno = selectDate.find(".ano-input"), inputMes = selectDate.find(".mes-input"), ano = selectDate.find(".ano-cal span"), meses = selectDate.find(".mes-cal td"), callback = eval(selectDate.attr("data-callback")); selectDate.on("click", "> h4", function (event) { data.toggle(); }); data.on("click", ".ano-cal i", function (event) { event.preventDefault(); var _this = jQuery(this), atual = Number(ano.text()), anoSelected = ano.attr("data-ano-selected"), mesSelected = ano.attr("data-mes-selected"); if (_this.hasClass("fa-angle-left")) { ano.text(atual - 1); inputAno.text(atual - 1); } else { ano.text(atual + 1); inputAno.text(atual + 1); } if (anoSelected == Number(ano.text())) { data .find('.mes-cal td[data-m="' + mesSelected + '"]') .addClass("active"); } else { meses.removeClass("active"); } }); meses.on("click", function (event) { event.preventDefault(); var _this = jQuery(this), m = _this.data("m"), mes = _this.data("mes"); meses.removeClass("active"); _this.addClass("active"); inputMes.text(mes); ano.attr("data-mes-selected", m); ano.attr("data-ano-selected", ano.text()); jQuery.ajax({ url: urlFilter, data: { mes: m, ano: ano.text(), }, success: function (data) { if (data == "manutencao") { return false; } contentReplace.html(data); Main.Misc.closeModal(); if (typeof callback != "undefined") { callback(data); } }, }); data.toggle(); }); }); }, orderBy: function () { var input = jQuery(".filter-form_ajax input[name=orderBy]"), orderDefault = input.val(); jQuery(document).off("click", ".table th[data-field]"); jQuery(document).on("click", ".table th[data-field]", function (event) { event.preventDefault(); var _this = jQuery(this), val = "", name = _this.attr("data-field"), order = input.attr("data-order"); if (name != input.attr("data-field")) { order = ""; } if (order != "desc" && order != "asc") { val = name + " asc"; order = "asc"; } else if (order == "asc") { val = name + " desc"; order = "desc"; } else if (order == "desc") { val = orderDefault; order = ""; } input.val(val); input.attr({ "data-field": name, "data-order": order, }); jQuery(".filter-form_ajax").trigger("submit"); }); }, }, Pagination: { setup: function () { var filter = jQuery(".filter-form_ajax"); jQuery(document).on("click", ".paginationControl a", function (event) { event.preventDefault(); var _this = jQuery(this), url = _this.attr("href"), result = _this.parents(".result-content_ajax"), filter = jQuery(".filter-form_ajax"); if (typeof result.attr("data-action") != "undefined") { filter = jQuery( '.filter-form_ajax[action="' + result.attr("data-action") + '"]' ); } Main.Misc.waitModal(); jQuery.ajax({ url: url, type: "POST", data: filter.serialize(), success: function (data) { if (data == "manutencao") { return false; } if (data.html != undefined) { result.html(data.html); } else { result.html(data); } Main.Misc.closeModal(); }, }); }); }, }, Actions: { setup: function () { var __this = this; jQuery(document).off("click change", ".action-event, .action-options"); jQuery(document).on( "click change", ".action-event, .action-options", function (event) { event.preventDefault(); var _this = jQuery(this); if (_this.is("select")) { _this = _this.find("option[value=" + _this.val() + "]"); jQuery(this).val("").trigger("chosen:updated"); } var url = _this.attr("href"), type = _this.attr("data-type"), size = _this.attr("data-size"), modal = _this.attr("data-modal"), sureMsg = _this.attr("data-sure-msg"), callback = eval(_this.attr("data-callback")), value = _this.val(); if (value == "managerTypes") { window.location.href = url; } if (typeof modal == "undefined") { modal = "#modalActionsOptions"; } if (type == "post") { if (typeof sureMsg != "undefined") { Main.Misc.sureModal(sureMsg, function (isConfirm) { if (isConfirm) { __this.post(_this, url, callback); } }); } else { __this.post(_this, url, callback); } } if (type == "modal") { if (typeof sureMsg != "undefined") { Main.Misc.sureModal(sureMsg, function (isConfirm) { if (isConfirm) { if (typeof callback == "function") { callback(_this); } jQuery(modal).modal("show"); } }); } else { if (typeof callback == "function") { callback(_this); } jQuery(modal).modal("show"); } } if (type == "modal-ajax") { setTimeout(function () { Main.Form.limitCharacters(); Main.Form.validPassport(); }, 3000); if (typeof sureMsg != "undefined") { Main.Misc.sureModal(sureMsg, function (isConfirm) { if (isConfirm) { __this.modalAjax(_this, url, modal, callback); } }); } else { __this.modalAjax(_this, url, modal, callback); } } if (type == "remove") { __this.remove(_this, url, sureMsg, callback); } if (type == "action") { __this.action(_this, url, sureMsg, callback); } if (type == "print") { window.open( url, "_blank", "toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=760,height=600" ); } if (type == "_blank") { window.open(url, "_blank"); } if (type == "link") { window.location.href = url; } if (typeof size == "undefined") { jQuery(modal) .find(".modal-dialog") .removeClass("modal-lg modal-md modal-sm") .addClass("modal-md"); } else { jQuery(modal) .find(".modal-dialog") .removeClass("modal-lg modal-md modal-sm") .addClass("modal-" + size); } } ); jQuery("#modalActionsOptions").off( "submit", 'form:not(".filter-form_ajax, .form-modal-ajax, [submit=off]")' ); jQuery("#modalActionsOptions").on( "submit", 'form:not(".filter-form_ajax, .form-modal-ajax, [submit=off]")', function (event) { event.preventDefault(); var _this = jQuery(this); var dataReload = _this.data("reload"); var formReload = _this.data("formreload"); var formData = new FormData(_this[0]); if (Main.Form.validation(_this) == 0) { jQuery .ajax({ url: _this.attr("action"), type: "POST", data: _this.serialize(), data: formData, processData: false, contentType: false, success: function (data) { if (data == "manutencao") { return false; } if (data.erro == 0) { jQuery("#modalActionsOptions").modal("hide"); _this[0].reset(); swal({ title: "Bom trabalho!", text: data.msg, type: "success", timer: 3000, }); if ("undefined" != typeof data.urlRedirect) { window.open(data.urlRedirect, "_blank"); } if (dataReload) { window.location.reload(); } if (formReload) { jQuery(document).off("submit", "#form-config"); jQuery("." + formReload).submit(); ADMIN_Configuracoes.salvar(); } else { jQuery(".filter-form_ajax").trigger("submit"); } } else { swal({ title: "Oops!", text: data.msg, type: "error", timer: 3000, }); } }, }) .fail(function () { Main.Misc.failModal(); }); } } ); }, post: function (_this, url, callback) { jQuery.ajax({ url: url, success: function (data) { if (data == "manutencao") { return false; } if (typeof callback == "function") { if (undefined == data.erro || data.erro == 0) { callback(_this, data); } if (data.erro == 0) { swal({ title: "Bom trabalho!", text: data.msg, type: "success", timer: 3000, }); } return; } if (data.erro == 0) { swal({ title: "Bom trabalho!", text: data.msg, type: "success", timer: 3000, }); // console.log(data); // return; if ("undefined" != typeof data.urlRedirect) { document.location = _URL + data.urlRedirect; return; } else { setTimeout(function () { Main.Filter.update(); }, 3100); } } else { Main.Misc.failModal(data.msg); } }, }); }, modalAjax: function (_this, url, modal, callback) { var modal = jQuery(modal); jQuery.ajax({ url: url, success: function (data) { if (data == "manutencao") { return false; } if (jQuery(data).filter(".modal-body").length > 0) { modal.find(".modal-content").html(data); } else { modal.find(".modal-body").html(data); } if (typeof callback == "function") { callback(_this, data); } setTimeout(function () { modal.modal("show"); }, 300); Main.Misc.closeModal(); }, error: function (data) { Main.Misc.failModal(data.msg); }, }); }, remove: function (_this, url, sureMsg, callback) { Main.Misc.sureModal(sureMsg, function (isConfirm) { if (isConfirm) { jQuery.ajax({ url: url, type: "POST", success: function (data) { if (data == "manutencao") { return false; } if (data.erro == 0) { swal({ title: "Bom trabalho!", text: data.msg, type: "success", timer: 3000, }); _this.parents("tr").remove(); } else { Main.Misc.failModal(data.msg); } if (typeof callback == "function") { callback(_this, data); } }, }); } }); }, action: function (_this, url, sureMsg, callback) { Main.Misc.sureModal(sureMsg, function (isConfirm) { if (isConfirm) { jQuery.ajax({ url: url, type: "POST", success: function (data) { if (data == "manutencao") { return false; } if (data.erro == 0) { swal({ title: "Bom trabalho!", text: data.msg, type: "success", timer: 3000, }); if (jQuery(".filter-form_ajax").length) { setTimeout(function () { jQuery(".filter-form_ajax").submit(); }, 2500); } } else { Main.Misc.failModal(data.msg); } if (typeof callback == "function") { callback(_this, data); } }, }); } }); }, // targetEvent: function () { // $(document).on('click', function(event) { // var targetElement = event.target; // console.log('Clicou em:', targetElement); // }); // $(document).on('focusout', function(event) { // var targetElement = event.target; // console.log('Perdeu o foco em:', targetElement); // }); // } }, Form: { setup: function () { var __this = this; jQuery(document).off("keyup", "#nomeEmpresa"); jQuery(document).on("keyup", "#nomeEmpresa", function (event) { event.preventDefault(); var nome_empresa_old = jQuery("#nomeEmpresaOld").val().trim(); //var nome_empresa = _this.val().trim(); var _this = jQuery(this), val = _this.val(); val = Main.Misc.removeAccents(val); val = val.replace(/[^a-zA-Z] /g, ""); //val = val.replace(/ /g,''); _this.val(val); if (event.keyCode == 32) { return false; } clearTimeout(_this.data("timeout")); _this.prev().hide(); _this.removeClass("error alert-fail alert-ok"); /* // REQUIRED if (val == "") { _this.addClass('error alert-fail').removeClass('alert-ok'); }*/ if (val.length > 1) { if (val != "" && _this.attr("data-empresa") != val) { _this.prev().show(); _this.animate({ "padding-left": "35px" }); _this.data( "timeout", setTimeout(function () { Main.Misc.blockWaitModal = true; jQuery.ajax({ url: "/cadastro/validanomeempresa", type: "POST", data: { "nome-empresa": val, "nome-empresa-old": nome_empresa_old, }, success: function (data) { Main.Misc.blockWaitModal = false; if (data == "manutencao") { return false; } _this.prev().hide(); _this.animate({ "padding-left": "10px" }); if (data.erro == 0) { swal.close(); _this .removeClass("error alert-fail") .addClass("alert-ok"); _this.attr("data-empresa", val); } else { Main.Misc.failModal(data.msg); _this.addClass("error alert-fail"); _this.attr("data-empresa", ""); _this.attr("placeholder", data.msg); setTimeout(function () { _this.focus(); _this.val(""); }, 800); } }, }); }, 2000) ); } } else { _this.prev().hide(); _this.animate({ "padding-left": "10px" }); } }); /*jQuery(document).off('focusout', '#nomeEmpresa'); jQuery(document).on('focusout', '#nomeEmpresa', function(event){ event.preventDefault(); var _this = jQuery(this); var nome_empresa = _this.val().trim(); var nome_empresa_old = jQuery('#nomeEmpresaOld').val().trim(); if (nome_empresa != "") { jQuery.ajax({ url: '/cadastro/validanomeempresa', type: 'POST', data: { 'nome-empresa': nome_empresa, 'nome-empresa-old': nome_empresa_old }, success: function(data) { if (data == "manutencao") { return false; } if (data.erro == 0) { swal.close(); } else { Main.Misc.failModal(data.msg); setTimeout( function(){ _this.focus(); _this.val(''); }, 800); } } }); } });*/ jQuery(document).off("click", ".check-fake div"); jQuery(document).on("click", ".check-fake div", function (event) { var _this = jQuery(this), val = _this.attr("value"), inputsFake = _this.parent().find("div"); input = _this.parent().find("input"); inputsFake.removeClass("checked error alert-fail"); _this.addClass("checked"); input.val(val); input.trigger("change"); }); __this.validateKeyUp(); __this.loginPatrocinador(); __this.modal(); __this.limitCharacters(); __this.validPassport(); }, loginPatrocinador: function () { jQuery(document).off("click", "#btn-patrocinador"); jQuery(document).on("click", "#btn-patrocinador", function (event) { event.preventDefault(); var _this = jQuery(this), patrocinadorVal = jQuery("#patrocinador").val(); jQuery(this).trigger("blur"); jQuery.ajax({ url: _this.attr("data-url"), type: "GET", data: { login: patrocinadorVal }, success: function (data) { if (data == "manutencao") { return false; } if (data.erro == 0) { var nomeEmpresaPatrocinador = data.empresaPatrocinador ? data.empresaPatrocinador : data.nomePatrocinador; jQuery("#patrocinador") .removeClass("error alert-fail") .addClass("alert-ok"); jQuery("input[name=indicanteId]").val(data.idPatrocinador); jQuery("#nomePatrocinador").val(nomeEmpresaPatrocinador); jQuery(".box-nome-patrocinador").removeClass("hidden"); if (!jQuery(".cadastro-loja").length) { swal({ title: "Bom trabalho!", text: data.msg, type: "success", timer: 3000, }); } else { swal.close(); } } else { jQuery("#nomePatrocinador").val(""); jQuery("#patrocinador") .addClass("error alert-fail") .removeClass("alert-ok"); jQuery("input[name=indicanteId]").val(""); Main.Misc.failModal(data.msg); } }, }); }); jQuery("#patrocinador").on("keyup", function (event) { event.preventDefault(); jQuery(this).removeClass("error alert-fail alert-ok"); var code = event.keyCode || event.which; if (code == 13) { jQuery(this).trigger("blur"); jQuery("#btn-patrocinador").click(); } }); }, validateKeyUp: function () { var __this = this; jQuery("body .required").each(function (index, el) { var _this = jQuery(this); jQuery(_this).keyup(function () { return __this.fields(_this); }); }); }, validation: function (form, callback) { var __this = this; form.find(".required").each(function (index, el) { var _this = jQuery(this); __this.fields(_this, callback); }); form.find(".no-special-characters").each(function (index, el) { var _this = jQuery(this); __this.fields(_this, callback); }); var errors = form.find(".error").length; if (errors > 0) { jQuery("body").animate( { scrollTop: form.find(".error").eq(0).offset().top - 50, }, 400 ); } Main.Misc.setup(); return errors; }, fields: function (input, callback) { var _this = input, thisVal = input.val(), regexEmail = new RegExp( /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i ); (regexCPF_CNPJ = new RegExp( /([0-9]{2}[\.]?[0-9]{3}[\.]?[0-9]{3}[\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\.]?[0-9]{3}[\.]?[0-9]{3}[-]?[0-9]{2})/ )), (regexDateBirthday = new RegExp( /^(((((0[1-9])|(1\d)|(2[0-8]))\/((0[1-9])|(1[0-2])))|((31\/((0[13578])|(1[02])))|((29|30)\/((0[1,3-9])|(1[0-2])))))\/((20[0-9][0-9])|(19[0-9][0-9])))|((29\/02\/(19|20)(([02468][048])|([13579][26]))))$/ )), (regexPassLetters = new RegExp(/[a-zA-Z]+/)), (regexPassNumbers = new RegExp(/[0-9]+/)), (regexPunctuation = new RegExp(/[^\w\s]|_/)), (regexHasSpecialCharacters = new RegExp(/[^\w\s]/gi)), (regexCEP = new RegExp(/[0-9]{5}-[0-9]{3}/gi)); var isTab = input.parents(".tab-pane"); if (thisVal == "") { input.addClass("error alert-fail"); if (isTab) { var idTab = isTab.attr("id"); var tabError = jQuery(`[href="#${idTab}"]`); tabError.addClass("error-tab"); } } else { input.removeClass("error alert-fail").addClass("alert-ok"); if (isTab && isTab.find(".error").length == 0) { var idTab = isTab.attr("id"); var tabError = jQuery(`[href="#${idTab}"]`); tabError.removeClass("error-tab"); } } if (_this.hasClass("password-confirm")) { var passFields = jQuery(".password-confirm"), pass_1 = passFields.eq(0), pass_2 = passFields.eq(1), regexPass1 = false, regexPass2 = false; _this.removeClass("error alert-fail alert-ok"); if ( !regexPassNumbers.test(pass_1.val()) || !regexPassLetters.test(pass_1.val()) || !pass_1.val().match(regexHasSpecialCharacters) || pass_1.val().length < 6 ) { pass_1.addClass("error alert-fail").removeClass("alert-ok"); regexPass1 = false; } else { pass_1.removeClass("error alert-fail").addClass("alert-ok"); regexPass1 = true; } if ( !regexPassNumbers.test(pass_2.val()) || !regexPassLetters.test(pass_2.val()) || !pass_2.val().match(regexHasSpecialCharacters) || pass_2.val().length < 6 ) { pass_2.addClass("error alert-fail").removeClass("alert-ok"); regexPass2 = false; } else { pass_2.removeClass("error alert-fail").addClass("alert-ok"); regexPass2 = true; } if ( pass_1.val() == pass_2.val() && pass_1.val() != "" && pass_2.val() != "" && regexPass1 && regexPass2 ) { pass_1.removeClass("error alert-fail").addClass("alert-ok"); pass_2.removeClass("error alert-fail").addClass("alert-ok"); } else { _this.addClass("error alert-fail").removeClass("alert-ok"); } } if (_this.hasClass("senha")) { var senha = _this; // O próprio elemento com classe 'senha' var senhaVal = senha.val(); // Expressões regulares para cada critério var lengthRequirement = senhaVal.length >= 6; // Corrigido para verificar o valor var letterRequirement = /[a-zA-Z]/.test(senhaVal); var numberRequirement = /\d/.test(senhaVal); var specialRequirement = /[!@#$%^&*(),.?":{}|<>]/.test(senhaVal); // Atualizar os requisitos com a função updateRequirement( "#req-length", lengthRequirement, "Mín. 6 caracteres" ); updateRequirement("#req-letter", letterRequirement, "Mín. 1 letra"); updateRequirement("#req-number", numberRequirement, "Mín. 1 número"); updateRequirement( "#req-special", specialRequirement, "Mín. 1 caracter especial" ); // Função para atualizar o estado dos requisitos function updateRequirement(selector, isValid, text) { var $element = jQuery(selector); // Garante que o seletor funcione com jQuery if (isValid) { $element.addClass("valid").removeClass("invalid").html(`✔ ${text}`); // Adiciona "✔" } else { $element.addClass("invalid").removeClass("valid").html(`✗ ${text}`); // Adiciona "✗" } } // Verificar se todos os critérios foram atendidos if ( lengthRequirement && letterRequirement && numberRequirement && specialRequirement ) { senha.removeClass("error alert-fail").addClass("alert-ok"); } else { senha.addClass("error alert-fail").removeClass("alert-ok"); } } if (_this.hasClass("mask-cep-no-ajax")) { if (!regexCEP.test(_this.val())) { _this.removeClass("alert-ok").addClass("error alert-fail"); } else { _this.removeClass("error alert-fail").addClass("alert-ok"); } } if (_this.hasClass("password-validation")) { if ( !regexPassNumbers.test(_this.val()) || !regexPassLetters.test(_this.val()) || !_this.val().match(regexHasSpecialCharacters) || _this.val().length < 6 ) { _this.addClass("error alert-fail").removeClass("alert-ok"); } else { _this.removeClass("error alert-fail").addClass("alert-ok"); } } if (_this.hasClass("no-special-characters")) { if (thisVal.match(regexHasSpecialCharacters)) { _this.removeClass("alert-ok").addClass("alert-fail error"); } else { _this.removeClass("alert-fail error").addClass("alert-ok"); } } if (_this.is("select")) { _this.removeClass("error check-error"); if (thisVal == "") { _this.next().addClass("error check-error"); } else { _this.next().removeClass("error check-error"); } _this.off("change"); _this.on("change", function () { var _this = jQuery(this); if (_this.val() == "") { _this.next().addClass("error check-error"); } else { _this.next().removeClass("error check-error"); } }); } if (_this.attr("type") == "email") { if (_this.hasClass("email-confirm")) { var emailsFields = jQuery(".email-confirm"), email_1 = emailsFields.eq(0), email_2 = emailsFields.eq(1); if (!regexEmail.test(email_1.val())) { email_1.removeClass("alert-ok").addClass("error alert-fail"); } else { email_1.removeClass("error alert-fail").addClass("alert-ok"); } if (!regexEmail.test(email_2.val())) { email_2.removeClass("alert-ok").addClass("error alert-fail"); } else { email_2.removeClass("error alert-fail").addClass("alert-ok"); } if ( email_1.val() != email_2.val() || email_1.val() == "" || email_2.val() == "" ) { _this.addClass("error alert-fail"); _this.addClass("error alert-fail"); } else { _this.removeClass("alert-fail").addClass("alert-ok"); _this .parents(".contatos") .find("input[name=email]") .removeClass("alert-fail") .addClass("alert-ok"); } } else { if (!regexEmail.test(_this.val())) { _this.removeClass("alert-ok").addClass("error alert-fail"); } else { _this.removeClass("error alert-fail").addClass("alert-ok"); } } } if (_this.hasClass("valida-telefone")) { if (_this.val().length < 14) { _this.removeClass("alert-ok").addClass("error alert-fail"); } else { _this.removeClass("error alert-fail").addClass("alert-ok"); } } if (_this.hasClass("valida-rg")) { if (_this.val().length < 7) { _this.removeClass("alert-ok"); _this.addClass("alert-fail"); } else { _this.removeClass("alert-fail").addClass("alert-ok"); } } if (_this.hasClass("mask-date")) { if (!regexDateBirthday.test(thisVal)) { _this.addClass("error alert-fail"); } else { _this.removeClass("error alert-fail").addClass("alert-ok"); } } if (_this.hasClass("mask-cpf") && thisVal.length > 0) { if ( thisVal == "000.000.000-00" || thisVal == "111.111.111-11" || thisVal == "222.222.222-22" || thisVal == "333.333.333-33" || thisVal == "444.444.444-44" || thisVal == "555.555.555-55" || thisVal == "666.666.666-66" || thisVal == "777.777.777-77" || thisVal == "888.888.888-88" || thisVal == "999.999.999-99" ) { _this.addClass("error alert-fail").removeClass("alert-ok"); } else { if (!regexCPF_CNPJ.test(thisVal)) { _this.addClass("error alert-fail").removeClass("alert-ok"); } else { _this.removeClass("error alert-fail").addClass("alert-ok"); } } } if (_this.hasClass("mask-cnpj")) { if ( thisVal == "00.000.000/0000-00" || thisVal == "11.111.111/1111-11" || thisVal == "22.222.222/2222-22" || thisVal == "33.333.333/3333-33" || thisVal == "44.444.444/4444-44" || thisVal == "55.555.555/5555-55" || thisVal == "666.666.666-66" || thisVal == "77.777.777/7777-77" || thisVal == "88.888.888/8888-88" || thisVal == "99.999.999/9999-99" ) { _this.addClass("error"); } else { if (!regexCPF_CNPJ.test(thisVal) || thisVal.length < 18) { _this.addClass("error alert-fail").removeClass("alert-ok"); } else { _this.removeClass("error alert-fail").addClass("alert-ok"); } } } if (_this.parent().hasClass("check-fake")) { _this.removeClass("error alert-fail"); if (thisVal == "") { _this.parent().find("> div").addClass("error alert-fail"); } else { _this.parent().find("> div").removeClass("error alert-fail"); } } if (_this.is("input[type=checkbox]") || _this.is("input[type=radio]")) { if (!_this.is(":checked")) { _this.addClass("error"); } else { _this.removeClass("error"); } _this.off("change"); _this.on("change", function () { if (!_this.is(":checked")) { _this.addClass("error"); } else { _this.removeClass("error"); if (_this.is("input[type=radio]")) { jQuery( "input[type=radio][name=" + _this.attr("name") + "].required" ).removeClass("error"); } } }); } if (_this.is("input[type=radio]")) { var radios = jQuery( "input[type=radio][name=" + _this.attr("name") + "].required" ); if (!radios.is(":checked")) { radios.addClass("error"); } else { radios.removeClass("error"); } } if (typeof callback == "function") { callback(_this, thisVal); } var termoAdesao = jQuery('input[name="termo"]'); var termoConsentimento = jQuery('input[name="consentimento"]'); var termoPrivacidade = jQuery('input[name="privacidade"]'); termoAdesao.off("change"); termoAdesao.on("change", function () { if (!termoAdesao.is(":checked")) { termoAdesao .parent(".termo") .removeClass("alert-ok") .addClass("alert-fail"); } else { termoAdesao .parent(".termo") .removeClass("alert-fail") .addClass("alert-ok"); } }); termoConsentimento.off("change"); termoConsentimento.on("change", function () { if (!termoConsentimento.is(":checked")) { termoConsentimento .parent(".termo") .removeClass("alert-ok") .addClass("alert-fail"); } else { termoConsentimento .parent(".termo") .removeClass("alert-fail") .addClass("alert-ok"); } }); termoPrivacidade.off("change"); termoPrivacidade.on("change", function () { if (!termoPrivacidade.is(":checked")) { termoPrivacidade .parent(".termo") .removeClass("alert-ok") .addClass("alert-fail"); } else { termoPrivacidade .parent(".termo") .removeClass("alert-fail") .addClass("alert-ok"); } }); }, uploadFile: function (params) { var typeFiles = /(\.|\/)(pdf|doc|docx|gif|jpe?g|png|rtf|xlsx|zip|rar|tar|mp4|mp3|txt|csv|xsl|ppt|pptx)$/i, autoUpload = true, previewMaxWidth = 80, previewMaxHeight = 80, fileUploadInput = jQuery(".upload-file-input"); if (typeof params.acceptFileTypes != "undefined") { typeFiles = params.acceptFileTypes; } if (typeof params.previewMaxWidth != "undefined") { previewMaxWidth = params.previewMaxWidth; } if (typeof params.previewMaxHeight != "undefined") { previewMaxHeight = params.previewMaxHeight; } if (typeof params.success != "undefined") { success = params.success; } if (typeof params.autoUpload != "undefined") { autoUpload = params.autoUpload; } if (typeof params.done != "undefined") { done = params.done; } fileUploadInput.off("fileuploadadd"); fileUploadInput.off("fileuploadprocessalways"); fileUploadInput .fileupload({ url: params.url, dataType: "json", autoUpload: autoUpload, acceptFileTypes: typeFiles, previewMaxWidth: previewMaxWidth, previewMaxHeight: previewMaxHeight, maxFileSize: 3e7, // 28.61MB success: function (data) { if (data == "manutencao") { return false; } if (typeof params.success == "function") { params.success(data); } else { if (data.erro == 0) { swal({ title: "Bom trabalho!", text: data.msg, type: "success", timer: 3000, }); } else { Main.Misc.failModal(data.msg); } } if (typeof params.callback == "function") { params.callback(data); } }, done: function (e, data) { if (typeof params.done == "function") { params.done(data); } }, }) .on("fileuploadadd", function (e, data) { if (typeof params.fileuploadadd == "function") { params.fileuploadadd(e, data); } }) .on("fileuploadprocessalways", function (e, data) { var file = data.files[0]; if (file.error) { var msg = ""; if (file.error == "File is too large") { msg = "Arquivo muito grande."; } if (file.error == "File type not allowed") { msg = "Tipo de arquivo inválido."; } Main.Misc.failModal(msg); console.log(file.error); } else { if (typeof params.fileuploadprocessalways == "function") { params.fileuploadprocessalways(e, data); } } }) .prop("disabled", !$.support.fileInput) .parent() .addClass($.support.fileInput ? undefined : "disabled"); }, modal: function () { var __this = this; jQuery(document).off("submit", ".form-modal-ajax"); jQuery(document).on("submit", ".form-modal-ajax", function (event) { event.preventDefault(); var _this = jQuery(this), callback = eval(_this.attr("data-callback")); if (__this.validation(_this) == 0) { jQuery.ajax({ url: _this.attr("action"), type: "POST", data: new FormData(this), processData: false, contentType: false, success: function success(data) { if (data == "manutencao") { return false; } if (data.erro == 0) { swal({ title: "Bom trabalho!", text: data.msg, type: "success", timer: 3000, }); if (!callback) { if (data.url != undefined) { window.location.href = data.url; } else { location.reload(); } } } else { Main.Misc.failModal(data.msg); } if (typeof callback == "function") { callback(data); } }, }); } }); }, limitCharacters: function () { var inputs = jQuery("[data-limit]"); inputs.each(function (index, item) { var _item = jQuery(item); _item.on("keyup", function (event) { var _this = jQuery(this); var limit = _item.data("limit"); if ( _this.val().length >= limit && event.keyCode != 8 && event.keyCode != 9 && event.keyCode != 46 ) { _this.val(_this.val().substring(0, limit)); return; } }); }); }, validPassport: function () { var inputs = jQuery("[data-passport]"); inputs.each(function (index, item) { var _item = jQuery(item); _item.on("keyup", function (event) { var _this = jQuery(this); var passport = _item.data("passport"); if (passport) { _this.val(function () { return this.value.toUpperCase(); }); } }); }); }, generateSelectFrete: function (cep, idProduto, idPlano) { /* if (jQuery('.div-fretes-envio').length > 0) { var freteEnvio = jQuery('.div-fretes-envio'), dataName = freteEnvio.data('name'), dataId = (jQuery('input[name=idFrete]').length && jQuery('input[name=idFrete]').val() != '') ? jQuery('input[name=idFrete]').val() : freteEnvio.data('id'), dataValorTotal = (freteEnvio.data('valor-total') > 0)? freteEnvio.data('valor-total') : 0, dataCep = (typeof cep != 'undefined' && cep != '')? cep : freteEnvio.data('cep'), dataProduto = (typeof idProduto != 'undefined' && idProduto != '')? idProduto : freteEnvio.data('idProduto'), dataPlano = (typeof idPlano != 'undefined' && idPlano != '')? idPlano : freteEnvio.data('idPlano'), moduleName = (typeof freteEnvio.data('module-name') != 'undefined' && freteEnvio.data('module-name') != '')? freteEnvio.data('module-name') : 'shopping'; jQuery.ajax({ url: _URL + '/shopping/frete/generateselectfretes', type: 'POST', data: {cep: dataCep, name: dataName, id: dataId, idProduto: dataProduto, idPlano: dataPlano, valorTotal: dataValorTotal, moduleName: moduleName}, success: function (data) { if (data == "manutencao") { return false; } if (data.erro == 0) { if (data.selectFretes) { freteEnvio.html(data.selectFretes); new lc_select('select[name='+dataName+']'); } } else { // Main.Misc.failModal(data.msg); // console.log(data.msg); } if (dataId > 0) { jQuery('.lcslt').trigger('click'); setTimeout(function () { jQuery('.lcslt').trigger('click'); }, 100); // EXIBINDO OS LOCAIS DE RETIRADA // setTimeout(function () { // if (dataType == 'retirar_no_local') { // jQuery('.box-local_retirada').removeClass('hide'); // } // }, 100); } Main.Misc.closeModal(); } }); } */ }, }, Misc: { setup: function () { var __this = this; __this.customSelect(); __this.exportExcel(); __this.searchCEP(); __this.masks(); var inputNum = jQuery("#num"); if (inputNum.val() == "" || inputNum.val() == "S/N") { $("#semnum").attr("checked", "checked"); $("#num").attr("readonly", "true"); inputNum.val("S/N"); } else { $("#semnum").removeAttr("checked"); } jQuery("#semnum").on("click", function (event) { var _this = jQuery(this); var inputNum = jQuery("#num"); if (_this.attr("checked") == "checked") { inputNum.val("S/N"); $("#num").attr("readonly", "true"); } else { $("#num").removeAttr("readonly"); inputNum.val(""); } }); jQuery('[data-toggle="tooltip"]').tooltip(); var datepicker = jQuery(".datepicker"); if (datepicker.length > 0) { datepicker .datepicker({ format: "dd/mm/yyyy", language: "pt-BR", autoclose: true, todayHighlight: true, autoHide: true, }) .on("changeDate", function () { jQuery(this).trigger("keyup"); }); } jQuery(document).on( "chosen:showing_dropdown", "select", function (event) { var _this = jQuery(this), table = _this.parents("table.table"), docHeight = jQuery(document).height(), chosenDrop = _this.next().find(".chosen-drop"), chosenHeight = chosenDrop.height(), chosenPosition = _this.next().offset(); if (table.height() < 395) { table.css("margin-bottom", 205); } if (180 + chosenHeight + chosenPosition.top >= docHeight) { chosenDrop.css({ top: "inherit", bottom: "100%", }); } else { chosenDrop.css({ bottom: "inherit", top: "100%", }); } } ); jQuery(document).on("focusin", function (e) { if (jQuery(e.target).closest(".mce-window").length) { e.stopImmediatePropagation(); } }); jQuery(document).off("click", ".add-user-not-found"); jQuery(document).on("click", ".add-user-not-found", function (event) { var __this = jQuery(this); jQuery('[data-modal="#cadastroModal"]').trigger("click"); }); jQuery(".modal").attr("data-backdrop", "static"); setTimeout(function () { jQuery(".fake-autofill-fields").hide(); }, 1); }, verificaSituacaoPagamento: function (loja = false) { var aguardandoPagamento = jQuery(".aguardando-pagamento").length; if (aguardandoPagamento == 1) { var idFatura = jQuery(".aguardando-pagamento").attr("data-id-fatura"); const intervaloConsultaSituacao = setInterval(consultaSituacao, 2000); function consultaSituacao() { aguardandoPagamento = jQuery(".aguardando-pagamento").length; if (aguardandoPagamento != 1) { stopConsultaSituacao(); } var urlAction = loja ? "/loja/dashboard/atualizasituacaopagamento" : "/backoffice/faturas/atualizasituacaopagamento"; Main.Misc.blockWaitModal = true; jQuery.ajax({ url: _URL + urlAction, type: "POST", data: { idFatura: idFatura }, success: function (data) { if (data == "manutencao") { return false; } if (data.html != "") { jQuery(".situacao-pagamento").html(data.html); jQuery(".filter-form_ajax").submit(); } }, }); jQuery("#modalActionsOptions").on("hidden.bs.modal", function () { clearInterval(intervaloConsultaSituacao); }); } function stopConsultaSituacao() { clearInterval(intervaloConsultaSituacao); } } }, exportExcel: function () { var exportURL = jQuery(".btn-export").attr("href"); jQuery(document).off("click", ".btn-export"); jQuery(document).on("click", ".btn-export", function (event) { event.preventDefault(); var _this = jQuery(this), serialize = jQuery(".filter-form_ajax").serialize(); window.open(exportURL + "/?" + serialize, "_blank"); }); }, searchCEP: function () { var self = this; jQuery(document).ready(function () { Main.Misc.blockWaitModal = false; jQuery(".mask-cep").each(function () { var _this = jQuery(this), val = _this.val(), box = _this.parents(".box-address"); if (_this.attr("data-search-cep") == "false") { return false; } if (val.length === 9 && _this.data("data-cep") !== val) { _this.data("data-cep", val); self.buscarEnderecoPorCEP(_this, box, val); } }); jQuery(document).on("keyup", ".mask-cep", function () { var _this = jQuery(this), val = _this.val(), box = _this.parents(".box-address"); if (_this.attr("data-search-cep") === "false") { return false; } if (val.length === 9 && _this.data("data-cep") !== val) { _this.data("data-cep", val); self.buscarEnderecoPorCEP(_this, box, val); } }); }); }, // Função para buscar o endereço por CEP buscarEnderecoPorCEP: function (_this, box, val) { // Exibe o modal apenas se a máscara do CEP está correta if (_this.is(".mask-cep") && val.length === 9) { Main.Misc.waitModal(); } clearTimeout(_this.data("timeout")); _this.data( "timeout", setTimeout(function () { swal({ title: "Oops!", text: "Não foi possível encontrar o endereço, por favor, informe manualmente.", type: "error", timer: 3000, }); _this.data("timeout", true); box.find("[readonly]").removeAttr("readonly"); Main.Misc.closeModal(); // Garante que o modal é fechado mesmo no caso de erro }, 15000) ); jQuery.ajax({ url: _URL + "/backoffice/cadastro/retornaenderecoporcep", type: "GET", data: { cep: val }, success: function (data) { if (data === "manutencao") { Main.Misc.closeModal(); return false; } if (_this.data("timeout") !== true) { clearTimeout(_this.data("timeout")); if (data.erro === 0) { var bairro = data.bairro, cidade = data.localidade, end = data.logradouro, uf = data.uf; // Fecha o modal após o sucesso Main.Misc.closeModal(); _this.removeClass("error alert-fail").addClass("alert-ok"); if (end !== "") { box .find(".field-address") .removeClass("error alert-fail") .addClass("alert-ok") .val(end) .attr("readonly", true); } if (cidade !== "") { box .find(".field-city") .removeClass("error alert-fail") .addClass("alert-ok") .val(cidade) .attr("readonly", true); } if (bairro !== "") { box .find(".field-district") .removeClass("error alert-fail") .addClass("alert-ok") .val(bairro) .attr("readonly", true); } if (uf !== "") { box .find(".field-state") .val(uf) .trigger("change") .trigger("chosen:updated"); box .find(".field-state option:selected") .attr("disabled", false) .trigger("change") .trigger("chosen:updated"); box .find(".field-state option:not(:selected)") .attr("disabled", true) .trigger("change") .trigger("chosen:updated"); } setTimeout(function () { box.find(".field-number").trigger("focus"); }, 1100); } else { Main.Misc.failModal(data.msg); _this.removeClass("alert-ok").addClass("error alert-fail"); } } }, error: function () { swal({ title: "Erro", text: "Não foi possível buscar o endereço. Tente novamente.", type: "error", timer: 3000, }); Main.Misc.closeModal(); // Garante o fechamento do modal mesmo em caso de erro na requisição }, }); }, autoComplete: function (selector, callback) { selector.each(function (index, el) { var box = jQuery(this), results = box.find(".box-autocomplete_results"), resultAuto = results.find("ul"); box.off("keydown", ".box-autocomplete_search-input"); box.on("keydown", ".box-autocomplete_search-input", function (event) { var code = event.keyCode || event.which; if (code == 13) { return false; } }); box.off("keyup", ".box-autocomplete_search-input"); box.on("keyup", ".box-autocomplete_search-input", function (event) { event.preventDefault(); var _this = jQuery(this), val = Main.Misc.removeAccents(_this.val()).trim(); _this.attr("data-touched", false); box.find(".fa-refresh").show(); if ( val.trim().length > 0 && (val.trim().length >= 3 || !isNaN(val)) ) { clearTimeout(_this.data("timeout")); _this.data( "timeout", setTimeout(function () { results.show(); resultAuto.show(); if (_this.attr("data-url") != undefined) { var separete = _this.val().trim(); if ( separete.indexOf("-") > 0 && !isNaN(separete.split("-")[0]) ) { val = separete.split("-")[0]; val = val.trim(); } jQuery.ajax({ url: _this.attr("data-url"), type: "POST", data: { searchString: val }, global: false, success: function (data) { resultAuto.empty(); if (data.erro == 0) { if (typeof callback == "function") { callback(data, resultAuto); } else { jQuery.each( data.cadastros, function (index, cadastro) { resultAuto.append( '
  • ' + cadastro.id + " - " + cadastro.login + " - " + cadastro.nome + "
  • " ); } ); } } else { if (typeof callback == "function") { callback(data, resultAuto); } else { resultAuto.append("
  • Nenhum item encontrado.
  • "); } } box.find(".fa-refresh").hide(); }, }); } }, 400) ); } else { results.hide(); box.find(".fa-refresh").hide(); } }); box.off("focusout", ".box-autocomplete_search-input"); box.on("focusout", ".box-autocomplete_search-input", function (event) { setTimeout(function () { results.hide(); }, 500); }); box.off("click", "li"); box.on("click", "li", function (event) { event.preventDefault(); var _this = jQuery(this), id = _this.attr("data-id"); results.hide(); _this.addClass("active"); box.find("input[type=hidden]").val(id); box.find(".box-autocomplete_search-input").val(_this.text()); box.find(".box-autocomplete_search-input").attr("data-touched", true); }); // if (box.find('.box-autocomplete_search-input').val().length>0 && box.find('.box-autocomplete_search-input').attr('data-url')!=undefined) { // box.find('.box-autocomplete_search-input').trigger('keyup'); // } }); }, customSelect: function () { $(document).ready(function () { // Inicializa o Select2 $("select:not([data-no-select2='true'])").select2(); // Define 100% de largura para todos os selects, MENOS o com a classe .select-fixa $("select").not(".select-fixa").css({ width: "100%", }); }); }, // jQuery('select:not(".chosen-disable")').each(function () { // var _this = jQuery(this), // search = _this.attr("data-disable_search_threshold") || 0; // if (!_this.hasClass("goog-te-combo") && !_this.hasClass("no-chosen")) { // _this.chosen({ // allow_single_deselect: true, // max_selected_options: 3, // disable_search_threshold: search, // no_results_text: "Nenhuma opção encontrada com o termo ", // width: "100%", // }); // } // if (Main.isMobile) { // var placeholder = _this.attr("data-placeholder"); // _this.find('option[value=""]').text(placeholder); // } // }); // if (jQuery(".module-shopping").length == 0) { // jQuery(".chosen-single div b").addClass("fa fa-caret-down"); // } else { // jQuery(".chosen-single div b").addClass("fa fa-angle-down"); // } // jQuery(".chosen-single .fa-search").remove(); // jQuery(".chosen-search").append(''); removeAccents: function (val) { var str = val; return str .replace(/[áàãâä]/gi, "a") .replace(/[éè¨ê]/gi, "e") .replace(/[íìïî]/gi, "i") .replace(/[óòöôõ]/gi, "o") .replace(/[úùüû]/gi, "u") .replace(/[ç]/gi, "c") .replace(/[ñ]/gi, "n") .replace(/[^a-zA-Z0-9 ]/g, ""); }, removeAccentsSomeEspecialsCharacters: function (val) { var str = val; return str .replace(/[áàãâä]/gi, "a") .replace(/[éè¨ê]/gi, "e") .replace(/[íìïî]/gi, "i") .replace(/[óòöôõ]/gi, "o") .replace(/[úùüû]/gi, "u") .replace(/[ç]/gi, "c") .replace(/[ñ]/gi, "n") .replace(/[^a-zA-Z0-9@._\-]/g, ""); }, existsEspecialCharacters: function (val) { var regex = new RegExp(/[^a-zA-Z0-9@._\-]/g); return regex.test(val); }, statusPagSeguro: function (id, callback, callbackParams) { jQuery .ajax({ url: _URL + "/default/pagseguro/consultarstatus/", data: { id: id }, }) .complete(function (data) { if (typeof callback == "function") { callback(callbackParams); } }); }, moedaBR: function (val) { var inputFake = jQuery("").maskMoney({ allowNegative: true, thousands: ".", decimal: ",", allowNegative: true, }); inputFake.val(val).maskMoney("mask"); return inputFake.val(); }, moedaBRL: function (val) { var numeroFormatado = val.toLocaleString("pt-BR", { style: "currency", currency: "BRL", }); return numeroFormatado; }, moedaUS: function (val) { var inputFake = jQuery("").maskMoney({ thousands: "", decimal: "", allowZero: true, allowNegative: true, }); inputFake.val(val).maskMoney("mask"); return inputFake.val(); }, moedaUSL: function (val, moeda) { if (moeda > 1) { var inputFake = val.toLocaleString( ("en-US", { style: "currency", currency: "USD" }) ); } else { var inputFake = val.toLocaleString("en-US"); } return inputFake.val(); }, formatBRToUS: function (valor) { var valorNumerico = valor.replace(/[^\d,.]/g, ""); // Remover caracteres não numéricos (exceto o ponto decimal e a vírgula) var valorComPontoDecimal = valorNumerico.replace(",", "."); // Substituir a vírgula por ponto decimal (caso exista) var valorSemPontosExtras = valorComPontoDecimal.replace( /\.(?=.*\.)/g, "" ); // Remover todos os pontos que não sejam o último (caso existam) var numero = Number(valorSemPontosExtras); // Converter a string em um número return numero; }, maskText: function (val, mask) { var input = jQuery(""); return input.val(val).mask(mask).val(); }, masks: function () { jQuery(".mask-cpf").mask("000.000.000-00"); jQuery(".mask-nit").mask("000.000.0000-0"); jQuery(".mask-cnpj").mask("00.000.000/0000-00"); jQuery(".mask-agencia").mask("####"); jQuery(".mask-conta").mask("#########"); jQuery(".mask-date").mask("00/00/0000"); jQuery(".mask-cep").mask("00000-000"); jQuery(".mask-cm").mask("00"); jQuery(".mask-cep-no-ajax").mask("00000-000"); jQuery(".mask-number").mask("###################"); jQuery(".mask-creditcard-number").mask("0000 0000 0000 0000"); jQuery(".mask-creditcard-expiration").mask("00/0000"); jQuery(".mask-creditcard-cvv").mask("000"); jQuery(".mask-weight").mask("#000,000", { reverse: true }); jQuery(".mask-moneyBR") .maskMoney({ prefix: "R$ ", allowZero: true, allowNegative: false, thousands: ".", decimal: ",", affixesStay: true, }) .maskMoney("mask"); jQuery(".mask-decimal") .maskMoney({ allowZero: true, defaults: "", defaultZero: false, allowNegative: false, thousands: ".", decimal: ",", affixesStay: true, }) .maskMoney("mask"); jQuery(".mask-percentBR") .maskMoney({ allowZero: true, allowNegative: false, precision: 4, thousands: "", decimal: ",", affixesStay: true, }) .maskMoney("mask"); jQuery(".mask-percentBR2") .maskMoney({ suffix: "%", allowZero: true, allowNegative: false, thousands: "", decimal: ",", affixesStay: true, precision: 2, }) .maskMoney("mask"); jQuery(".mask-percentAdvanced").mask("00,0000", { reverse: false }); $(".mask-percentAdvanced3").maskMoney({ allowZero: true, allowNegative: false, thousands: "", decimal: ",", affixesStay: true, suffix: "%", }); jQuery(".mask-percentBR2") .maskMoney({ suffix: "%", allowZero: true, allowNegative: false, thousands: "", decimal: ",", affixesStay: true, precision: 2, }) .maskMoney("mask"); $(".mask-percentAdvanced3") .maskMoney({ allowZero: true, allowNegative: false, thousands: "", decimal: ",", affixesStay: true, suffix: "%", // Adiciona o símbolo de porcentagem como sufixo }) .maskMoney("mask"); jQuery(".mask-percentAdvanced").mask("0,00000", { reverse: false }); jQuery(".mask-percentAdvanced2").mask("000,0000%", { reverse: true }); jQuery(".mask-percent-discount").mask("#00,000", { reverse: true }); jQuery(".mask-percentBRSuffix") .maskMoney({ suffix: " %", allowZero: true, allowNegative: false, thousands: "", decimal: ",", affixesStay: true, }) .maskMoney("mask"); // phone var maskPhoneBehavior = function (val) { return val.replace(/\D/g, "").length === 11 ? "(00) 00000-0000" : "(00) 0000-00009"; }, phoneOptions = { onKeyPress: function (val, e, field, phoneOptions) { field.mask(maskPhoneBehavior.apply({}, arguments), phoneOptions); }, }; jQuery(".mask-phone").mask(maskPhoneBehavior, phoneOptions); // CPF-CNPJ var maskCpfCnpjBehavior = function (val) { return val.replace(/[^a-zA-Z 0-9]+/g, "").length <= 11 ? "000.000.000-009999" : "00.000.000/0000-00"; }, cpfCnpjOptions = { onKeyPress: function (val, e, field, phoneOptions) { field.mask( maskCpfCnpjBehavior.apply({}, arguments), cpfCnpjOptions ); }, }; jQuery(".mask-cpf-cnpj").mask(maskCpfCnpjBehavior, cpfCnpjOptions); }, blockWaitModal: false, waitModal: function (time) { var time = typeof time == "undefined" ? 50000 : time; if (Main.Misc.blockWaitModal == false) { swal( { title: '', type: "", text: "", html: true, customClass: "swal-loading", showConfirmButton: false, allowEscapeKey: false, timer: time, }, function (isConfirm) { Main.Misc.closeModal(); } ); jQuery("body").removeClass("stop-scrolling"); } }, failModal: function (msg, callback) { if (typeof msg == "undefined") { var msg = "Ocorreu um erro na aplicação, por favor tente mais tarde."; } swal( { title: "Oops...", type: "error", text: msg, timer: 5000, html: true, }, function (isConfirm) { if (typeof callback == "function") { callback(isConfirm); } } ); }, warningModal: function (title, msg, callback) { if (typeof title == "undefined") { var title = "Atenção!"; } if (typeof msg == "undefined") { var msg = "Ocorreu um erro na aplicação, por favor tente mais tarde."; } swal( { title: title, type: "warning", text: msg, closeOnConfirm: false, closeOnCancel: false, showLoaderOnConfirm: true, confirmButtonText: "Continuar...", html: true, }, function (isConfirm) { Main.Misc.closeModal(); setTimeout(function () { if (typeof callback == "function") { callback(isConfirm); } }, 1750); } ); }, sureModal: function (msg, callback) { swal( { title: "Você tem certeza?", text: msg, type: "warning", closeOnConfirm: false, confirmButtonText: "Sim", showCancelButton: true, cancelButtonText: "Não", html: true, }, function (isConfirm) { callback(isConfirm); } ); }, closeModal: function () { if (Main.Misc.blockWaitModal == false) { clearTimeout(timeout); var timeout = setTimeout("swal.close()", 1000); } }, reloadDetail: function (_this, data) { setTimeout(function () { // // data-reload-url > ex: http://maxx-mlm.local/backoffice/faturas/index/detalhes/1/idFatura/83 // window.location.assign(_this.attr('data-reload-url')); jQuery("#modalActionsOptions").modal("hide"); jQuery(document) .find('tr[data-id="' + _this.attr("data-id") + '"] .action-detalhes') .trigger("click"); }, 3000); }, notificationfx: function (params) { var timer = params.timer ? params.timer : 5000; var icon = params.icon ? params.icon : "fa fa-bell"; var type = params.type ? params.type : "notice"; // notice, warning or error; var effect = params.effect ? params.effect : "slidetop"; var layout = params.layout ? params.layout : "bar"; var notification = new NotificationFx({ message: `

    ${params.message}

    `, ttl: timer, type: type, effect: effect, layout: layout, }); notification.show(); }, manutencao: function () { if (jQuery("#box-login").length == 1) { swal({ title: "Manutenção", text: "Estamos realizando algumas melhorias.
    Em breve voltaremos com novidades para você.", type: "warning", html: true, }); } else { swal( { title: "Manutenção", text: "Estamos realizando algumas melhorias.
    Em breve voltaremos com novidades para você.
    Você deseja ser redirecionado para a tela de login?", type: "warning", html: true, showCancelButton: true, confirmButtonText: "Sim!", cancelButtonText: "Não, prefiro aguardar!", closeOnConfirm: false, closeOnCancel: true, showLoaderOnConfirm: true, }, function (isConfirm) { if (isConfirm) { window.location.href = _URL + "/login"; } } ); } }, loading: function (action) { var _this = jQuery(this), loadingScope = `
    `; if (action == "start") { jQuery(".cart__btn--calcular").append(loadingScope); jQuery(".loading").addClass("lds-dual-ring"); } if (action == "stop") { // jQuery('.cart__btn--calcular').remove(loadingScope); jQuery(".loading").remove(); jQuery(".loading").removeClass("lds-dual-ring"); } }, }, isMobile: function () { var ua = navigator.userAgent; if (ua.match(/Android/i)) { if (ua.match(/Mobile/i)) { return true; } else { return false; } } if (ua.match(/iPhone/i)) { return true; } if (ua.match(/iPod/i)) { return true; } if (ua.match(/Opera Mini/i)) { return true; } if (ua.match(/IEMobile/i)) { return true; } if (ua.match(/BlackBerry/i)) { return true; } return false; }, Authenticator: { setup: function () { jQuery(document).on("keyup", ".codigo-google-modal", function (event) { var _this = jQuery(this), currentIndex = _this.attr("tabindex") * 1; if (currentIndex <= 6) { if ( jQuery('[name="codigo-google-' + currentIndex + '"]') .val() .trim() == "" ) { //currentIndex = currentIndex-1; jQuery('[name="codigo-google-' + currentIndex + '"]').focus(); } else { currentIndexProx = currentIndex + 1; jQuery('[name="codigo-google-' + currentIndexProx + '"]').focus(); /*setTimeout( function(){ jQuery('[name="codigo-google-' + currentIndex + '"]').attr('type', 'password'); }, 500);*/ } } var codigoDigitado = ""; for (var i = 1; i < 7; i++) { codigoDigitado += jQuery('[name="codigo-google-' + i + '"]').val(); } jQuery('[name="codigo-autenticacao"]').val(codigoDigitado); }); if (jQuery(".google-authenticator-force").length > 0) { setTimeout(function () { jQuery(".btn-ativar-2fa").trigger("click"); }, 500); setTimeout(function () { jQuery("#editarPerfil .modal-header").html( '' ); jQuery('[name="codigo-google-1"]').focus(); /*jQuery("button[type='button'].close").addClass('hide'); jQuery(".alterar-senha").addClass('hide');*/ }, 1000); } else { jQuery("button[type='button'].close").removeClass("hide"); jQuery(".alterar-senha").removeClass("hide"); } }, }, }; jQuery(document).ready(function ($) { Main.setup(); }); jQuery(document).on("shown.bs.modal", "#modalActionsOptions", function () { // Inicializar o TinyMCE apenas quando o modal for exibido tinymce.init({ selector: "#modalActionsOptions textarea:not(.no-tinymce)", // Seletor correto dentro do modal language_url: _URL + "/js/plugins/tinymce/langs/pt_BR.js", height: 200, theme: "modern", plugins: ["image media link table code jbimages imagetools"], toolbar: ["jbimages"], relative_urls: false, convert_urls: false, }); }); jQuery(document).on("hidden.bs.modal", "#modalActionsOptions", function () { // Remove as instâncias do TinyMCE ao fechar o modal if (tinymce.editors.length > 0) { tinymce.remove(); } }); /* >>>>>>> END main.js <<<<<<< */ /* >>>>>>> GUEST/main.js <<<<<<< */ var GUEST = { setup: function () { var __this = this; $('input[type="submit"]').prop("disabled", false); $("button").prop("disabled", false); if ( jQuery("#form-login").length > 0 || jQuery("#form-reset-pass").length > 0 ) { __this.Login.setup(); } if (jQuery("#form-cadastro").length > 0) { __this.Cadastro.setup(); } if (jQuery("input[name=manutencao]").val() == 1) { Main.Misc.manutencao(); } jQuery(document).off("click", ".show-hide-password"); jQuery(document).on("click", ".show-hide-password", function (event) { var _this = jQuery(this); var icon = _this.find("i"); if (_this.hasClass("show-password")) { _this.removeClass("show-password").addClass("hide-password"); icon.removeClass("fa-eye").addClass("fa-eye-slash"); jQuery('[name="senha"]').attr("type", "text"); } else { _this.removeClass("hide-password").addClass("show-password"); icon.removeClass("fa-eye-slash").addClass("fa-eye"); jQuery('[name="senha"]').attr("type", "password"); } }); }, Login: { setup: function () { var __this = this; var location = window.location.href; var local = true; if (typeof grecaptcha !== "undefined") { local = false; } jQuery(".input .input__field").on({ focus: function (event) { var _this = jQuery(this), val = _this.val(); _this.parent().addClass("input--filled"); }, blur: function (event) { var _this = jQuery(this), val = _this.val(); if (val === "") { _this.parent().removeClass("input--filled"); } }, }); jQuery(document).off("submit", "#form-login"); jQuery(document).on("submit", "#form-login", function (event) { event.preventDefault(); var _this = jQuery(this); jQuery('[name="senha"]').attr("type", "password"); if (!local) { if (Main.Form.validation(_this) == 0) { grecaptcha.ready(function () { grecaptcha .execute("6Lf7MJ4pAAAAAFpUQo1ycSoVxW67vZ5SvIpgw1LI", { action: "submit", }) .then(function (token) { if (!_this.hasClass("reset-senha")) { jQuery("input[name=token]").val(token); } jQuery.ajax({ type: "POST", url: _this.attr("action"), data: _this.serialize(), success: function (data) { if (data == "manutencao") { return false; } if (data.erro == 0) { Main.Misc.closeModal(); jQuery(".load-success").animate( { width: "90%", }, 1500, function () { jQuery(this).addClass("ok"); window.location = data.urlRedirect; } ); } else { Main.Misc.failModal(data.msg); } }, }); }); }); } } else { if (Main.Form.validation(_this) == 0) { jQuery.ajax({ type: "POST", url: _this.attr("action"), data: _this.serialize(), success: function (data) { if (data == "manutencao") { return false; } if (data.codigo_verificador == 1) { jQuery(".codigo-autenticador") .addClass("required error") .focus(); } if (data.erro == 0) { Main.Misc.closeModal(); jQuery(".load-success").animate( { width: "90%", }, 1500, function () { jQuery(this).addClass("ok"); window.location = data.urlRedirect; } ); } else { Main.Misc.failModal(data.msg); } }, }); } } }); setTimeout(function () { jQuery(".input .input__field").each(function () { jQuery(this).trigger("focus").trigger("blur"); }); }, 1000); if (jQuery("#form-login").length > 0) { __this.lostPass(); } if (jQuery("#form-reset-pass").length > 0) { __this.resetPass(); } var msgTitle = jQuery(".btn-cadastro").attr("data-original-title"); jQuery(document).off("click", ".btn-cadastro"); jQuery(document).on("click", ".btn-cadastro", function (event) { //Main.Misc.failModal(msgTitle); swal({ title: "Oops...", text: msgTitle, type: "error", html: true, confirmButtonText: "Fechar", }); }); if ( jQuery(".register-user").length > 0 && jQuery(".register-user").val() == "disabled" ) { //Main.Misc.failModal(msgTitle); swal({ title: "Oops...", text: msgTitle, type: "error", html: true, confirmButtonText: "Fechar", }); } }, lostPass: function () { // var __this = this; // var location = window.location.href; var local = true; // if (location.indexOf('local') < 0 && jQuery('#gcaptcha-resetpassword').length > 0) { // local = false; // var resetCaptcha = grecaptcha.render(document.getElementById('gcaptcha-resetpassword'), { 'sitekey': '6LdZUPgZAAAAADCFw8xAOYe7zLn3uqdF7T_bCG-Q' }); // } jQuery("input[name='reset_radio']").change(function () { var _this = jQuery(this), id = _this.attr("data-id"); jQuery(".input-type").addClass("hide").removeClass("required error"); jQuery("#" + id) .removeClass("hide") .addClass("required"); }); jQuery(document).off("submit", "#esqueciModal form"); jQuery(document).on("submit", "#esqueciModal form", function (event) { event.preventDefault(); var _this = jQuery(this); if (local == false) { if (grecaptcha.getResponse(resetCaptcha) != "") { if (Main.Form.validation(_this) == 0) { jQuery.ajax({ type: "POST", url: _this.attr("action"), data: _this.serialize(), success: function (data) { if (data.erro == 0) { jQuery(".modal").modal("hide"); swal({ title: "Bom trabalho!", text: data.msg, type: "success", html: true, }); } else { swal({ title: "Oops!", text: data.msg, type: "error", timer: 3000, }); } }, }); } } else { Main.Misc.failModal("Preencha o captcha"); grecaptcha.reset(resetCaptcha); } } else { if (Main.Form.validation(_this) == 0) { jQuery.ajax({ type: "POST", url: _this.attr("action"), data: _this.serialize(), success: function (data) { if (data.erro == 0) { jQuery(".modal").modal("hide"); swal({ title: "Bom trabalho!", text: data.msg, type: "success", html: true, }); } else { swal({ title: "Oops!", text: data.msg, type: "error", timer: 3000, }); } }, }); } } }); }, resetPass: function () { var __this = this; jQuery("#form-reset-pass").off("submit"); jQuery("#form-reset-pass").on("submit", function (event) { event.preventDefault(); var _this = jQuery(this); if (Main.Form.validation(_this) == 0) { jQuery.ajax({ type: "POST", url: _this.attr("action"), data: _this.serialize(), success: function (data) { if (data.erro == 0) { jQuery(".modal").modal("hide"); swal( { title: "Bom trabalho!", text: data.msg, type: "success", html: true, closeOnConfirm: false, timer: 999999, confirmButtonText: "Clique aqui para fazer o Login.", showLoaderOnConfirm: true, }, function () { window.location.href = _URL + "/login"; } ); } else { swal({ title: "Oops!", text: data.msg, type: "error", timer: 3000, }); } }, }); } }); var erroToken = jQuery(".erro-token"); if (erroToken.text().length > 0) { swal( { title: "Oops!", text: erroToken.html(), type: "error", html: true, closeOnConfirm: false, allowEscapeKey: false, }, function (isConfirm) { if (isConfirm) { window.location.href = _URL + "/login"; } } ); } }, }, Cadastro: { setup: function () { var __this = this; // jQuery("#cep").on('keyup', function (event) { // var _this = jQuery(this), // val = _this.val(); // if (val.length == 9) { // if (jQuery('#plano').val() != "") { // // __this.adesaoEnvio(jQuery('#plano').val(), jQuery('#cep').val()); // } // }; // }); jQuery("#semnum").on("click", function (event) { var _this = jQuery(this); var checado = false; var inputNum = jQuery("#num"); if (_this.attr("checked") == "checked") { checado = true; inputNum.val("S/N"); } else { inputNum.val(""); } }); jQuery(document).off("click", ".selecionapatrocinadorPadrao"); jQuery(document).on( "click", ".selecionapatrocinadorPadrao", function (event) { var usrPadrao = jQuery(this).attr("data-usuariopadrao"); jQuery("#patrocinador").val(usrPadrao); jQuery("#btn-patrocinador").click(); jQuery(".selecionarPatrocinador").addClass("hide"); } ); jQuery(document).off("submit", "#form-cadastro"); jQuery(document).on("submit", "#form-cadastro", function (event) { event.preventDefault(); var _this = jQuery(this); var termoAdesao = jQuery('input[name="termo"]'); if (!termoAdesao.is(":checked")) { termoAdesao .parent(".termo") .removeClass("alert-ok") .addClass("alert-fail"); } else { termoAdesao .parent(".termo") .removeClass("alert-fail") .addClass("alert-ok"); } if (jQuery("#patrocinador:focus").is("input") == false) { if (__this.validation(_this) == 0) { if ( jQuery(".cadastro-loja").length <= 0 && jQuery("#plano").val() == "" && jQuery("#tab-planos").hasClass("opened") ) { swal({ title: "Oops!", text: "Selecione um Plano de Adesão", type: "error", timer: 3000, }); GUEST.Cadastro.setup(); } else { var serialize = _this.serialize(); jQuery.ajax({ url: _this.attr("action"), type: "POST", data: serialize, success: function (data) { if (data == "manutencao") { return false; } if (data.erro == 0) { setTimeout(function () { var nome = jQuery("form input[name=nome]") .val() .split(" ")[0]; jQuery(".submit-form") .removeAttr("class") .attr("href", data.urlRedirect) .text("Clique aqui para acessar seu backoffice"); var buttonText = "Clique aqui para acessar seu backoffice"; if ( typeof data.tipoAdesao != "undefined" && data.tipoAdesao > 1 ) { buttonText = "Clique aqui para acessar nossa loja e concluir sua adesão"; } var msg = `
    Oi ${nome},
    Seja bem-vindo, o seu cadastro foi realizado com sucesso!
    Boa sorte e bons negócios!`; if (jQuery("input[name=cadastrologado]").length) { msg = `
    Sua Adesão foi atualizaca com sucesso!
    Boa sorte e bons negócios!`; } var clipboard = new Clipboard(".link-copy"); jQuery(document).on( "click", ".link-copy", function (event) { event.preventDefault(); } ); clipboard.on("success", function (event) { jQuery(".link-copy").html( ' Link copiado com sucesso!' ); }); if ( typeof data.patrocinador_logado != "undefined" && data.patrocinador_logado == 1 ) { msg = `
    Seu downline foi cadastrado com sucesso!
    Boa sorte e bons negócios!`; if ( typeof data.fatura != "undefined" && data.fatura != "" ) { linkPedido = _URL + "/shopping/checkout/pagamento/p/" + data.fatura; msg = `
    Seu downline foi cadastrado com sucesso!
    Boa sorte e bons negócios!

    Linkk para pagamento da adesão:

    ` + linkPedido + `

    Copiar Link de pagamento
    `; } buttonText = "Clique aqui para voltar ao seu backoffice"; } swal( { title: "Cadastro Concluído!", text: msg, type: "success", html: true, closeOnConfirm: false, closeOnCancel: false, confirmButtonText: buttonText, timer: 99999999, showLoaderOnConfirm: true, }, function (isConfirm) { if (isConfirm) { window.location.href = data.urlRedirect; } } ); }, 600); } else { setTimeout(function () { Main.Misc.failModal(data.msg); GUEST.Cadastro.tabs(); }, 600); } }, }); } } else { Main.Misc.failModal("Por favor, preencha os campos obrigatórios."); GUEST.Cadastro.setup(); } } }); jQuery(".btn-detalhes-plano").on("click", function (event) { event.preventDefault(); var _this = jQuery(this); jQuery("#detalhesPlano .modal-title").text(_this.attr("title")); jQuery("#detalhesPlano .modal-body").html(_this.next().html()); jQuery("#detalhesPlano #produtosPlanos").attr( "id", "produtosPlanos" + _this.attr("data-id") ); jQuery("#detalhesPlano [href='#produtosPlanos']").attr( "href", "#produtosPlanos" + _this.attr("data-id") ); jQuery("#detalhesPlano").modal("show"); }); var todosTermos = jQuery('input[name="todos-termo"]'); todosTermos.off("change"); todosTermos.on("change", function () { var _this = jQuery(this); var checkboxs = jQuery('input[type="checkbox"].check'); if (todosTermos.is(":checked")) { checkboxs.each(function (index, item) { jQuery(item).prop("checked", true); }); } else { checkboxs.each(function (index, item) { jQuery(item).prop("checked", false); }); } }); __this.tabs(); __this.tipoCadastro(); __this.login_Existe(); __this.CPF_CNPJ_Existe(); __this.planCheck(); // __this.tipoEnvio(); __this.notCopyPaste(); // __this.nome_loja_Existe(); }, tabs: function () { var __this = this, tabs = jQuery("#tabs li"), tabPanes = jQuery(".tab-pane"); jQuery("#tabs").off("click", "li"); jQuery("#tabs").on("click", "li", function (event) { event.preventDefault(); var _this = jQuery(this), tab = _this.attr("href"); if (_this.hasClass("blocked") == false) { tabs.removeClass("active"); _this.addClass("active"); tabPanes.removeClass("opened"); jQuery(tab).addClass("opened"); } }); jQuery(document).off("click", ".btn-continue"); jQuery(document).on("click", ".btn-continue", function (event) { event.preventDefault(); var _this = jQuery(this), tab = _this.parents(".tab-pane"), next = _this.attr("href"); Main.Misc.blockWaitModal = false; if (__this.validation(tab) == 0) { if (jQuery("[name=nome]").hasClass("error")) { Main.Misc.failModal( "Por favor informe o seu nome completo (No mínimo 1 sobrenome)" ); return false; } if (jQuery(".password-confirm").hasClass("error")) { Main.Misc.failModal( "A senha deve conter letras;
    A senha deve conter números;
    A senha deve conter caracteres especiais;
    A senha deve conter 6 ou mais caracteres;" ); return false; } jQuery('#tabs li[href="' + next + '"]') .removeClass("blocked") .trigger("click"); } if (_this.hasClass("submit-form")) { jQuery(document) .off("click", ".btn-continue") .attr("href", "javascript: void(0);"); Main.Misc.waitModal(9999); Main.Misc.blockWaitModal = true; setTimeout(function () { jQuery("#form-cadastro").trigger("submit"); }, 500); } }); }, onDatepicker: function (el, opts) { var __this = this, options = jQuery.extend(opts, { format: "dd/mm/yyyy", language: "pt-BR", autoclose: true, todayHighlight: true, autoHide: true, }); el.datepicker("destroy") .datepicker(options) .on("changeDate", function () { el.trigger("keyup"); }); }, tipoCadastro: function () { var _this = this, inputNasc = jQuery("#dnasc"), boxCNPJ = jQuery(".cnpj"), inputCNPJ = jQuery("input[name=cnpj]"), boxCPF = jQuery(".cpf"), inputCPF = jQuery("input[name=cpf]"), boxRG = jQuery(".rg"), inputRG = jQuery("input[name=rg]"), boxPF = jQuery(".type-tpf"), inputSexo = jQuery("input[name=sexo]"), inputPF = jQuery(".type-tpf input").not(".chosen-search input"), inputCEP = jQuery("input[name=cep]"); jQuery(document).off("change", "input[name=tipoCadastro]"); jQuery(document).on( "change", "input[name=tipoCadastro]", function (event) { var _this = jQuery(this), type = _this.attr("id"); if (type == "tpj" || _this.val() == 1) { inputCNPJ.addClass("required"); boxCNPJ.removeClass("hide"); GUEST.Cadastro.onDatepicker(inputNasc); } else { inputCNPJ.removeClass("required error"); boxCNPJ.addClass("hide"); GUEST.Cadastro.onDatepicker(inputNasc, { changeYear: false, startDate: "-120y", endDate: "-" + IDADE_MINIMA_CADASTRO + "y", }); if (typeof jQuery("#nacionalidade") != "undefined") { if (jQuery("#nacionalidade option:selected").val() == 33) { jQuery("input[name=passaporte]").removeClass("required"); inputCPF.addClass("required"); } else { jQuery("input[name=passaporte]").addClass("required"); inputCPF.removeClass("required"); } } } jQuery(".chosen-search input").removeClass("required error"); } ); jQuery(document).off("change", "select[name=nacionalidade]"); jQuery(document).on( "change", "select[name=nacionalidade]", function (event) { if ( jQuery("select[name=nacionalidade] option:selected").val() == 33 ) { jQuery("input[name=passaporte]").removeClass( "required error alert-fail" ); jQuery("input[name=cpf]").addClass("required"); } else { jQuery("input[name=passaporte]").addClass("required"); jQuery("input[name=cpf]").removeClass("required error fail-alert"); } } ); jQuery("input[name=tipoCadastro]").trigger("change"); }, login_Existe: function () { var inputLogin = jQuery("#tab-dados input[name=login]"); var inputNasc = jQuery("#dnasc"); // Seleciona o campo de data de nascimento inputLogin.off("keyup"); inputLogin.on("keyup", function (event) { var _this = jQuery(this), val = _this.val(), hasEspecial = Main.Misc.existsEspecialCharacters(val); val = Main.Misc.removeAccentsSomeEspecialsCharacters(val).trim(); val = val.replace(/[^a-zA-Z] /g, ""); val = val.replace(/ /g, ""); _this.val(val); if (hasEspecial) { jQuery(".info-caracteres").removeClass("hide"); return false; } setTimeout(() => { jQuery(".info-caracteres").addClass("hide"); }, 7000); if (event.keyCode == 32) { return false; } clearTimeout(_this.data("timeout")); _this.prev().hide(); _this.removeClass("error alert-fail alert-ok"); if (val == "") { _this.addClass("error alert-fail").removeClass("alert-ok"); } if (val.length > 3) { if ( val != "" && jQuery("#tab-dados").hasClass("opened") && _this.attr("data-login") != val ) { _this.prev().show(); _this.animate({ "padding-left": "35px" }); // Bloqueia o campo de data de nascimento no início da verificação inputNasc.prop("disabled", true); _this.data( "timeout", setTimeout(function () { Main.Misc.blockWaitModal = true; jQuery.ajax({ url: _URL + "/cadastro/loginexiste", data: { login: val }, success: function (data) { Main.Misc.blockWaitModal = false; if (data == "manutencao") { return false; } _this.prev().hide(); _this.animate({ "padding-left": "10px" }); if (data.erro == 1) { Main.Misc.failModal(data.msg); _this.addClass("error alert-fail").val(""); _this.attr("data-login", ""); } else { _this .removeClass("error alert-fail") .addClass("alert-ok"); _this.attr("data-login", val); } // Desbloqueia o campo de data de nascimento após a verificação inputNasc.prop("disabled", false); }, error: function () { // Em caso de erro, desbloqueia o campo de nascimento inputNasc.prop("disabled", false); }, }); }, 2000) ); } } }); }, CPF_CNPJ_Existe: function () { var inputNasc = jQuery("#dnasc"); // Seleciona o campo de data de nascimento jQuery("#tab-dados input[name=cpf], #tab-dados input[name=cnpj]").on( "keyup", function () { var _this = jQuery(this), url = _URL + "/cadastro/cpfexiste", valid = true; if (_this.val().length < 14) { valid = false; } if (_this.attr("name") == "cnpj") { url = _URL + "/cadastro/cnpjexiste"; if (_this.val().length < 18) { valid = false; } } clearTimeout(_this.data("timeout")); _this.prev().hide(); _this.removeClass("error alert-fail"); if (_this.val() == "") { _this.addClass("error alert-fail"); } if ( valid && _this.val() != "" && jQuery("#tab-dados").hasClass("opened") && _this.attr("data-valor") != _this.val() ) { if (_this.val().length > 0) { _this.prev().show(); _this.animate({ "padding-left": "35px" }); } // Bloqueia o campo de data de nascimento inputNasc.prop("disabled", true); _this.data( "timeout", setTimeout(function () { Main.Misc.blockWaitModal = true; jQuery.ajax({ url: url, data: { valor: _this.val() }, success: function (data) { Main.Misc.blockWaitModal = false; if (data == "manutencao") { return false; } _this.prev().hide(); _this.animate({ "padding-left": "10px" }); if (data.erro == 1) { Main.Misc.failModal(data.msg); _this .removeClass("alert-ok") .addClass("error error2 alert-fail"); _this.attr("data-valor", ""); } else { _this.removeClass("error error2 alert-fail"); _this.attr("data-valor", _this.val()); } // Desbloqueia o campo de data de nascimento após a verificação inputNasc.prop("disabled", false); }, error: function () { // Desbloqueia o campo de nascimento em caso de erro inputNasc.prop("disabled", false); }, }); }, 2000) ); } } ); }, planCheck: function () { var __this = this, planChecks = jQuery(".plan-check"), planInput = jQuery("#plano"), divContent = jQuery("#dependentesContainer"), i = parseInt(2); jQuery(document).off("click", ".plan-check"); jQuery(document).on("click", ".plan-check", function (event) { event.preventDefault(); var _this = jQuery(this), planoID = _this.attr("data-plano-id"), totalDependentesProduto = _this.attr("data-qtd-dependentes"); planChecks.removeClass("checked"); _this.addClass("checked"); planInput.val(planoID); jQuery(".plan-cell").text(_this.attr("data-valor")); if (totalDependentesProduto > 0) { jQuery("#fieldBeneficiaries").removeClass("hide"); } else { jQuery("#fieldBeneficiaries").addClass("hide"); } jQuery(".shipping-cell").text(Main.Misc.moedaBRL("0.00")); }); jQuery("#linkRemoverBeneficiario").live("click", function (event) { event.preventDefault(); var qtdDependentes = jQuery(".plan-check").attr("data-qtd-dependentes"); jQuery(this).parents(".camposBeneficiario").remove(); i--; var limit = parseInt(qtdDependentes); if (jQuery("#solteiro").is(":checked")) { limit = parseInt(qtdDependentes) + parseInt(1); } if (i <= limit) { jQuery(".btn-add-beneficiarie").removeClass("hide"); } }); jQuery(document).off("click", "#solteiro"); jQuery("#solteiro").on("click", function (event) { var qtdDependentes = jQuery(".plan-check").attr("data-qtd-dependentes"); if (i > parseInt(qtdDependentes) + parseInt(1)) { return false; } else { if (jQuery(this).is(":checked")) { jQuery( "#relacao-beneficiario-1,#nome-beneficiario-1,#cpf-beneficiario-1,#email-beneficiario-1,#data-nascimento-beneficiario-1" ).prop("disabled", true); if (i == parseInt(qtdDependentes) + parseInt(1)) { jQuery(".btn-add-beneficiarie").removeClass("hide"); } } else { if (i == parseInt(qtdDependentes) + parseInt(1)) { jQuery(".btn-add-beneficiarie").addClass("hide"); } jQuery( "#relacao-beneficiario-1,#nome-beneficiario-1,#cpf-beneficiario-1,#email-beneficiario-1,#data-nascimento-beneficiario-1" ).prop("disabled", false); } } }); jQuery(document).off("click", ".btn-add-beneficiarie"); jQuery(".btn-add-beneficiarie").on("click", function (event) { event.preventDefault(); var labelDependentes = jQuery("input[name=labelDependentes]").val(); var qtdDependentes = jQuery(".plan-check").attr("data-qtd-dependentes"); jQuery(`
    ${labelDependentes} ${i}

    `).appendTo(divContent); jQuery("#relacao-beneficiario-" + i).chosen({ allow_single_deselect: true, max_selected_options: 3, disable_search_threshold: 0, no_results_text: "Nenhuma opção encontrada com o termo ", width: "100%", }); if (jQuery(".module-shopping").length == 0) { jQuery(".chosen-single div b").addClass("fa fa-caret-down"); } else { jQuery(".chosen-single div b").addClass("fa fa-angle-down"); } jQuery(".chosen-single .fa-search").remove(); jQuery(".chosen-search").append(''); i++; var limit = parseInt(qtdDependentes); if (jQuery("#solteiro").is(":checked")) { limit = parseInt(qtdDependentes) + parseInt(1); } if (i > limit) { jQuery(".btn-add-beneficiarie").addClass("hide"); } else { jQuery(".btn-add-beneficiarie").removeClass("hide"); } jQuery("#removehidden").remove(); jQuery(".mask-cpf").mask("000.000.000-00"); jQuery(".data-bene").mask("00/00/0000"); GUEST.Cadastro.onDatepicker(jQuery(".data-bene"), { endDate: "+1d", datesDisabled: "+1d", }); __this.notCopyPaste(); }); }, notCopyPaste: function () { jQuery('input[type="email"]').bind("cut copy paste", function (event) { event.preventDefault(); }); }, validation: function (form) { var result = Main.Form.validation(form, function (_this, thisVal) { if (_this.attr("id") == "patrocinador") { var indicanteId = jQuery("input[name=indicanteId]"); if (indicanteId.val() == "") { _this.addClass("error alert-fail"); } else { _this.removeClass("error alert-ok"); } } if (_this.attr("name") == "nome") { var nome = _this.val().split(" "); if (nome.length <= 1) { _this.addClass("error alert-fail"); Main.Misc.failModal( "Por favor informe o seu nome completo (No mínimo 1 sobrenome)" ); } else { _this.removeClass("error alert-ok"); } } }); return result; }, }, }; jQuery(document).ready(function ($) { if (jQuery("#box-login").length || jQuery('form[id="login"]').length) { GUEST.setup(); } }); /* >>>>>>> END GUEST/main.js <<<<<<< */ /* >>>>>>> custom.js <<<<<<< */ var Custom = { setup: function() { } } jQuery(document).ready(function($) { Custom.setup(); }); /* >>>>>>> END custom.js <<<<<<< */