PageSourceSearch

https://www.viszony.hu/assets/js/cache/b2cdfe372afe4333df8bf1918d26fcf3.js?_=d5056

js viszony.hu collected 2026-09-24 12:59:47 UTC 228,717 bytes, 3,888 lines download raw bytes

1/* cached content from: config.js */
2var config = Object();
3config['domain'] = location.hostname;
4
5config['path'] = location.protocol+"//" + config['domain'] + "/";
6config['nSocketUrl'] = "wss://ws.viszony.hu:443";
7config['nPollTime'] = '30000';
8
9config['assets'] = "assets/";
10config['path_ajaxRequest'] = config['path'] + "ajaxRequest/";
11config["path_upload"] = config['assets'] + "upload/";
12
13/* Google configs */
14config['GA_EventTracking'] = false;
15
16/* site settings */
17config['DEBUG'] = 1;
18
19/* RTC */
20config['rtc_host'] = 'rtc.viszony.hu';
21config['rtc_port'] = 9001;
22config['rtc_path'] = '/vc';
23
24/* cached content from: data.js */
25const data = {
26    app: null,
27    appAndroid: null,
28    appIOS: null,
29    loginService: null,
30    fullWidth: false,
31    credentials: {
32        googleSSO: "1030529615611-odkbbnal67bqf6mgo5ds1re9q1plr0f1.apps.googleusercontent.com",
33        appleSSO: "com.dace.viszony.client",
34    },
35    data: {},
36};
37
38function loadServerData() {
39    const dataElement = document.getElementById('server-data');
40    const serverData = JSON.parse(dataElement.textContent);
41    data.app = serverData.environment.app;
42    data.appAndroid = serverData.environment.appAndroid;
43    data.appIOS = serverData.environment.appIOS;
44    data.loginService = serverData.environment.loginService;
45    delete serverData.environment;
46    data.data = serverData;
47    data.fullWidth = $('body').hasClass('fullWidth');
48}
49/* cached content from: jquery-min.js */
vendor: 7,382 bytes, lines 50-51
50/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */
51!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.4",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}
vendor: 10,969 bytes, line 51
51function 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 id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",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;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){
vendor: 11,965 bytes, line 51
51c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;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 href='#'></a>","#"===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="<input/>",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<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-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;
51for(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;
52}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<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=N.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}
vendor: 6,021 bytes, line 52
52});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function W(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&T.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var X=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,Z=/^$|\/(?:java|ecma)script/i,$={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};$.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="<textarea>x</textarea>",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<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{}
vendor: 2,502 bytes, line 52
52,keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||d,e=c.documentElement,f=c.body,a.pageX=b.clientX+(e&&e.scrollLeft||f&&f.scrollLeft||0)-(e&&e.clientLeft||f&&f.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||f&&f.scrollTop||0)-(e&&e.clientTop||f&&f.clientTop||0)),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ea.test(f)?this.mouseHooks:da.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=d),3===a.target.nodeType&&(a.target=a.target.parentNode),h.filter?h.filter(a,g):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ia()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===ia()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ga:ha):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:ha,isPropagationStopped:ha,isImmediatePropagationStopped:ha,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ga,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ga,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ga,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}}
vendor: 8,636 bytes, line 52
52,n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),n.fn.extend({on:function(a,b,c,d){return ja(this,a,b,c,d)},one:function(a,b,c,d){return ja(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ha),this.each(function(){n.event.remove(this,a,c,b)})}});var ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,la=/<script|<style|<link/i,ma=/checked\s*(?:[^=]|=\s*.checked.)/i,na=/^true\/(.*)/,oa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\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></$2>")},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("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=wa[0].contentDocument,b.write(),b.close(),c=ya(a,b),wa.detach()),xa[a]=c),c}var Aa=/^margin/,Ba=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ca=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Ea=d.documentElement;!function(){var b,c,e,f,g=d.createElement("div"),h=d.createElement("div");if(h.style){h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,g.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",g.appendChild(h);function i(){h.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",h.innerHTML="",Ea.appendChild(g);var d=a.getComputedStyle(h);b="1%"!==d.top,f="2px"===d.marginLeft,c="4px"===d.width,h.style.marginRight="50%",e="4px"===d.marginRight,Ea.removeChild(g)}n.extend(l,{pixelPosition:function(){return i(),b},boxSizingReliable:function(){return null==c&&i(),c},pixelMarginRight:function(){return null==c&&i(),e},reliableMarginLeft:function(){return null==c&&i(),f},reliableMarginRight:function(){var b,c=h.appendChild(d.createElement("div"));return c.style.cssText=h.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",h.style.width="1px",Ea.appendChild(g),b=!parseFloat(a.getComputedStyle(c).marginRight),Ea.removeChild(g),h.removeChild(c),b}})}}();function Fa(a,b,c){var d,e,f,g,h=a.style;return c=c||Ca(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Ba.test(g)&&Aa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0!==g?g+"":g}function Ga(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Ha=/^(none|table(?!-c[ea]).+)/,Ia={position:"absolute",visibility:"hidden",display:"block"},Ja={letterSpacing:"0",fontWeight:"400"},Ka=["Webkit","O","Moz","ms"],La=d.createElement("div").style;function Ma(a){if(a in La)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ka.length;while(c--)if(a=Ka[c]+b,a in La)return a}function Na(a,b,c){var d=T.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Oa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Pa(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ca(a),g="border-box"===n.css(a,"boxSizing",!1,f);
vendor: 10,521 bytes, line 52
52if(0>=e||null==e){if(e=Fa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ba.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Oa(a,b,c||(g?"border":"content"),d,f)+"px"}function Qa(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=N.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=N.access(d,"olddisplay",za(d.nodeName)))):(e=V(d),"none"===c&&e||N.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Fa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=T.exec(c))&&e[1]&&(c=W(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Fa(a,b,d)),"normal"===e&&b in Ja&&(e=Ja[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Ha.test(n.css(a,"display"))&&0===a.offsetWidth?Da(a,Ia,function(){return Pa(a,b,d)}):Pa(a,b,d):void 0},set:function(a,c,d){var e,f=d&&Ca(a),g=d&&Oa(a,b,d,"border-box"===n.css(a,"boxSizing",!1,f),f);return g&&(e=T.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=n.css(a,b)),Na(a,c,g)}}}),n.cssHooks.marginLeft=Ga(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Fa(a,"marginLeft"))||a.getBoundingClientRect().left-Da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),n.cssHooks.marginRight=Ga(l.reliableMarginRight,function(a,b){return b?Da(a,{display:"inline-block"},Fa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Aa.test(a)||(n.cssHooks[a+b].set=Na)}),n.fn.extend({css:function(a,b){return K(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ca(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Qa(this,!0)},hide:function(){return Qa(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function Ra(a,b,c,d,e){return new Ra.prototype.init(a,b,c,d,e)}n.Tween=Ra,Ra.prototype={constructor:Ra,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ra.propHooks[this.prop];return a&&a.get?a.get(this):Ra.propHooks._default.get(this)},run:function(a){var b,c=Ra.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ra.propHooks._default.set(this),this}},Ra.prototype.init.prototype=Ra.prototype,Ra.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},Ra.propHooks.scrollTop=Ra.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=Ra.prototype.init,n.fx.step={};var Sa,Ta,Ua=/^(?:toggle|show|hide)$/,Va=/queueHooks$/;function Wa(){return a.setTimeout(function(){Sa=void 0}),Sa=n.now()}function Xa(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=U[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ya(a,b,c){for(var d,e=(_a.tweeners[b]||[]).concat(_a.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Za(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&V(a),q=N.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?N.get(a,"olddisplay")||za(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Ua.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?za(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=N.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;N.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ya(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function $a(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function _a(a,b,c){var d,e,f=0,g=_a.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Sa||Wa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:Sa||Wa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for($a(k,j.opts.specialEasing);g>f;f++)if(d=_a.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,Ya,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(_a,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return W(c.elem,a,T.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],_a.tweeners[c]=_a.tweeners[c]||[],_a.tweeners[c].unshift(b)},prefilters:[Za],prefilter:function(a,b){b?_a.prefilters.unshift(a):_a.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=_a(this,n.extend({},a),f);(e||N.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=N.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Va.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=N.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Xa(b,!0),a,d,e)}}),n.each({slideDown:Xa("show"),slideUp:Xa("hide"),slideToggle:Xa("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Sa=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Sa=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ta||(Ta=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(Ta),Ta=null},n.fx.speeds={slow:600,fast:200,_default:400}
vendor: 6,137 bytes, lines 52-53
52,n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",l.checkOn=""!==a.value,l.optSelected=c.selected,b.disabled=!0,l.optDisabled=!c.disabled,a=d.createElement("input"),a.value="t",a.type="radio",l.radioValue="t"===a.value}();var ab,bb=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return K(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ab:void 0)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)}}),ab={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=bb[b]||n.find.attr;bb[b]=function(a,b,d){var e,f;return d||(f=bb[b],bb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,bb[b]=f),e}});var cb=/^(?:input|select|textarea|button)$/i,db=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return K(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),
53void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):cb.test(a.nodeName)||db.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var eb=/[\t\r\n\f]/g;function fb(a){return a.getAttribute&&a.getAttribute("class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,fb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,fb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,fb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=fb(this),b&&N.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":N.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+fb(c)+" ").replace(eb," ").indexOf(b)>-1)return!0;return!1}});var gb=/\r/g,hb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(gb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(hb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(n.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var ib=/^(?:focusinfocus|focusoutblur)$/;n.extend(n.event,{trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!ib.test(q+n.event.triggered)&&(q.indexOf(".")>
vendor: 4,848 bytes, line 53
53-1&&(r=q.split("."),q=r.shift(),r.sort()),l=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},f||!o.trigger||o.trigger.apply(e,c)!==!1)){if(!f&&!o.noBubble&&!n.isWindow(e)){for(j=o.delegateType||q,ib.test(j+q)||(h=h.parentNode);h;h=h.parentNode)p.push(h),i=h;i===(e.ownerDocument||d)&&p.push(i.defaultView||i.parentWindow||a)}g=0;while((h=p[g++])&&!b.isPropagationStopped())b.type=g>1?j:o.bindType||q,m=(N.get(h,"events")||{})[b.type]&&N.get(h,"handle"),m&&m.apply(h,c),m=l&&h[l],m&&m.apply&&L(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=q,f||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!L(e)||l&&n.isFunction(e[q])&&!n.isWindow(e)&&(i=e[l],i&&(e[l]=null),n.event.triggered=q,e[q](),n.event.triggered=void 0,i&&(e[l]=i)),b.result}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b)}}),n.fn.extend({trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),l.focusin="onfocusin"in a,l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=N.access(d,b);e||d.addEventListener(a,c,!0),N.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=N.access(d,b)-1;e?N.access(d,b,e):(d.removeEventListener(a,c,!0),N.remove(d,b))}}});var jb=a.location,kb=n.now(),lb=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var mb=/#.*$/,nb=/([?&])_=[^&]*/,ob=/^(.*?):[ \t]*([^\r\n]*)$/gm,pb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,qb=/^(?:GET|HEAD)$/,rb=/^\/\//,sb={},tb={},ub="*/".concat("*"),vb=d.createElement("a");vb.href=jb.href;function wb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function xb(a,b,c,d){var e={},f=a===tb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function yb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function zb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Ab(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:jb.href,type:"GET",isLocal:pb.test(jb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ub,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML}
vendor: 2,391 bytes, line 53
53,flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?yb(yb(a,n.ajaxSettings),b):yb(n.ajaxSettings,a)},ajaxPrefilter:wb(sb),ajaxTransport:wb(tb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m=n.ajaxSetup({},c),o=m.context||m,p=m.context&&(o.nodeType||o.jquery)?n(o):n.event,q=n.Deferred(),r=n.Callbacks("once memory"),s=m.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,getResponseHeader:function(a){var b;if(2===v){if(!h){h={};while(b=ob.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===v?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return v||(a=u[c]=u[c]||a,t[a]=b),this},overrideMimeType:function(a){return v||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>v)for(b in a)s[b]=[s[b],a[b]];else x.always(a[x.status]);return this},abort:function(a){var b=a||w;return e&&e.abort(b),z(0,b),this}};if(q.promise(x).complete=r.add,x.success=x.done,x.error=x.fail,m.url=((b||m.url||jb.href)+"").replace(mb,"").replace(rb,jb.protocol+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=n.trim(m.dataType||"*").toLowerCase().match(G)||[""],null==m.crossDomain){j=d.createElement("a");try{j.href=m.url,j.href=j.href,m.crossDomain=vb.protocol+"//"+vb.host!=j.protocol+"//"+j.host}catch(y){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=n.param(m.data,m.traditional)),xb(sb,m,c,x),2===v)return x;k=n.event&&m.global,k&&0===n.active++&&n.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!qb.test(m.type),f=m.url,m.hasContent||(m.data&&(f=m.url+=(lb.test(f)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=nb.test(f)?f.replace(nb,"$1_="+kb++):f+(lb.test(f)?"&":"?")+"_="+kb++)),m.ifModified&&(n.lastModified[f]&&x.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&x.setRequestHeader("If-None-Match",n.etag[f])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",m.contentType),x.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+ub+"; q=0.01":""):m.accepts["*"]);for(l in m.headers)x.setRequestHeader(l,m.headers[l]);if(m.beforeSend&&(m.beforeSend.call(o,x,m)===!1||2===v))return x.abort();w="abort";for(l in{success:1,error:1,complete:1})x[l](m[l]);
vendor: 5,045 bytes, line 53
53if(e=xb(tb,m,c,x)){if(x.readyState=1,k&&p.trigger("ajaxSend",[x,m]),2===v)return x;m.async&&m.timeout>0&&(i=a.setTimeout(function(){x.abort("timeout")},m.timeout));try{v=1,e.send(t,z)}catch(y){if(!(2>v))throw y;z(-1,y)}}else z(-1,"No Transport");function z(b,c,d,h){var j,l,t,u,w,y=c;2!==v&&(v=2,i&&a.clearTimeout(i),e=void 0,g=h||"",x.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(u=zb(m,x,d)),u=Ab(m,u,x,j),j?(m.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(n.lastModified[f]=w),w=x.getResponseHeader("etag"),w&&(n.etag[f]=w)),204===b||"HEAD"===m.type?y="nocontent":304===b?y="notmodified":(y=u.state,l=u.data,t=u.error,j=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),x.status=b,x.statusText=(c||y)+"",j?q.resolveWith(o,[l,y,x]):q.rejectWith(o,[x,y,t]),x.statusCode(s),s=void 0,k&&p.trigger(j?"ajaxSuccess":"ajaxError",[x,m,j?l:t]),r.fireWith(o,[x,y]),k&&(p.trigger("ajaxComplete",[x,m]),--n.active||n.event.trigger("ajaxStop")))}return x},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return!n.expr.filters.visible(a)},n.expr.filters.visible=function(a){return a.offsetWidth>0||a.offsetHeight>0||a.getClientRects().length>0};var Bb=/%20/g,Cb=/\[\]$/,Db=/\r?\n/g,Eb=/^(?:submit|button|image|reset|file)$/i,Fb=/^(?:input|select|textarea|keygen)/i;function Gb(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Cb.test(a)?d(a,e):Gb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Gb(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Gb(c,a[c],b,e);return d.join("&").replace(Bb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Fb.test(this.nodeName)&&!Eb.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Db,"\r\n")}}):{name:b.name,value:c.replace(Db,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Hb={0:200,1223:204},Ib=n.ajaxSettings.xhr();l.cors=!!Ib&&"withCredentials"in Ib,l.ajax=Ib=!!Ib,n.ajaxTransport(function(b){var c,d;return l.cors||Ib&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Hb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}
53),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=n("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Jb=[],Kb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Jb.pop()||n.expando+"_"+kb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Kb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Kb,"$1"+e):b.jsonp!==!1&&(b.url+=(lb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Jb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ca([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var Lb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Lb)return Lb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function Mb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(e=d.getBoundingClientRect(),c=Mb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ea})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;n.fn[a]=function(d){return K(this,function(a,d,e){var f=Mb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ga(l.pixelPosition,function(a,c){return c?(c=Fa(a,b),Ba.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return K(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},size:function(){return this.length}}),n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Nb=a.jQuery,Ob=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Ob),b&&a.jQuery===n&&(a.jQuery=Nb),n},b||(a.jQuery=a.$=n),n});
54
55/* cached content from: js.cookie.min.js */
56/*! js-cookie v3.0.0-rc.0 | MIT */
57!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var r=e.Cookies,n=e.Cookies=t();n.noConflict=function(){return e.Cookies=r,n}}())}(this,function(){"use strict";function e(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)e[n]=r[n]}return e}var t={read:function(e){return e.replace(/%3B/g,";")},write:function(e){return e.replace(/;/g,"%3B")}};return function r(n,i){function o(r,o,u){if("undefined"!=typeof document){"number"==typeof(u=e({},i,u)).expires&&(u.expires=new Date(Date.now()+864e5*u.expires)),u.expires&&(u.expires=u.expires.toUTCString()),r=t.write(r).replace(/=/g,"%3D"),o=n.write(String(o),r);var c="";for(var f in u)u[f]&&(c+="; "+f,!0!==u[f]&&(c+="="+u[f].split(";")[0]));return document.cookie=r+"="+o+c}}return Object.create({set:o,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var r=document.cookie?document.cookie.split("; "):[],i={},o=0;o<r.length;o++){var u=r[o].split("="),c=u.slice(1).join("="),f=t.read(u[0]).replace(/%3D/g,"=");if(i[f]=n.read(c,f),e===f)break}return e?i[e]:i}},remove:function(t,r){o(t,"",e({},r,{expires:-1}))},withAttributes:function(t){return r(this.converter,e({},this.attributes,t))},withConverter:function(t){return r(e({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(i)},converter:{value:Object.freeze(n)}})}(t,{path:"/"})});
58
59/* cached content from: ajax-form.js */
60/**
61 * Form kezelő osztály ami submit esetén automatikusan AJAx kérést indít
62 * @constructor
63 */
64function AjaxForm(){
65    let instance = this;
66    /**
67     * Form objektuma amit kezel az osztály
68     * @type {jQuery}
69     */
70    this.$form = null;
71    /**
72     * Callback ami kérésnél lesz végrehajva válasznál
73     * @type {AjaxCallback}
74     */
75    this.callback = null;
76    /**
77     * Beállításokat tároló tömb
78     * <strong>ajaxHandleResponseOnSuccess</strong>: Ha true akkor hozzáadja az alap kezelő AjaxRepsonse kezelőt<br/>
79     * <strong>dataType</strong>: ajax kérés válasz típusa<br/>
80     * <strong>method</strong>: ajax kérés methodja(GET, POST, stb...)<br/>
81     * <strong>cache</strong>: ha true akkor nem lesz a cache disabled
82     * @type {Object}
83     */
84    this.options = {
85        handleResponseOnSuccess: true,
86        dataType: "json",
87        method: "POST",
88        cache: false,
89        action: null,
90    };
91
92    this.settings = {
93        active: true,
94    };
95
96    this.beforeProcessListeners = [];
97
98    /**
99     * Inicializációs függévny
100     * @param {jQuery} $form form aminek az eseményei kezelve lesznek
101     * @param {undefined|AjaxCallback} callback
102     * @param {undefined|Object} options tulajdonságai:<br/>
103     * <strong>ajaxHandleResponseOnSuccess</strong>: Ha true akkor hozzáadja az alap kezelő AjaxRepsonse kezelőt<br/>
104     * @return {void}
105     */
106    this.init =  function($form, callback, options) {
107        this.$form = $form;
108        if (typeof callback === "object" && callback instanceof AjaxCallback) {
109            this.callback = callback
110        } else {
111            this.callback = new AjaxCallback();
112        }
113        if (typeof options === "object") {
114            if (typeof options.handleResponseOnSuccess === "boolean") {
115                this.options.handleResponseOnSuccess = options.handleResponseOnSuccess;
116            }
117            if (typeof options.action === "string") {
118                this.options.action = options.action;
119            }
120        }
121        if (this.options.action === null) {
122            this.options.action = this.$form.prop("action");
123        }
124        this.bindEvents();
125    };
126
127    /**
128     * Eseményke hozzáadása
129     * @return {void}
130     */
131    this.bindEvents = function() {
132        this.$form.on("submit", function (e) {
133            instance.submit(e);
134        });
135    };
136
137    /**
138     * Form submit esetén futt le az ajax kérést intézi el és a form serializálását
139     * @param {Event} e
140     * @return {void}
141     */
142    this.submit = function (e) {
143        if (this.settings.active) {
144            e.preventDefault();
145            let options = {
146                method: "post",
147                dataType: Ajax.dataTypeJson,
148                handleResponseOnSuccess: this.options.handleResponseOnSuccess,
149            };
150            for (const func of this.beforeProcessListeners) {
151                func();
152            }
153            Ajax.process(this.options.action, this.getFormData(), options, this.callback, instance.$form);
154        }
155    };
156
157    this.setActive = function (active) {
158        this.settings.active = active;
159    }
160
161    this.getFormData = function () {
162        return instance.$form.serialize();
163    };
164
165    this.addBeforeProcessListener = function (func) {
166        if (typeof func === "function") {
167            this.beforeProcessListeners.push(func);
168        }
169    }
170}
171/* cached content from: ajax-response-handler.js */
172/**
173 * Ajax válaszokat kezelő objektum
174 * @type {Object}
175 */
176window.AjaxResponseHandler = {
177    /**
178     * Válasz típusa átirányítás
179     * @return {void}
180     */
181    responseTypeRedirect: "redirect",
182    /**
183     * Válasz típusa átadott függvény meghívása
184     * @return {void}
185     */
186    responseTypeScript: "script",
187    /**
188     * Válasz típusa rendszer üzenet
189     * @return {void}
190     */
191    responseTypeSysMsg: "sysmsg",
192    /**
193     * Válasz típusa nincs végrehajtás
194     * Abban az esetben hasznos ha csak vissza adunk adatokat amiket egy custom handler fog kezelni
195     * @return {void}
196     */
197    responseTypeNoExecute: "no_execute",
198
199    /**
200     * Sikeres ajax kérés esetén kell meghívni a válasz feldogolgozására
201     * @param {Object} response
202     * @return {void}
203     */
204    process: function(response){
205        switch (response.type){
206            case this.responseTypeRedirect:
207                this.processRedirect(response.data);
208                break;
209            case this.responseTypeScript:
210                this.processScript(response.data);
211                break;
212            case this.responseTypeSysMsg:
213                this.processSysMsg(response.data);
214                if(this.responseTypeScript in response.data) {
215                    this.processScript(response.data);
216                }
217                break;
218            case this.responseTypeNoExecute:
219                break;
220            default:
221                if (config['debug'] === 1) {
222                    console.error("Nincs ilyen válasz típus: " + response.type);
223                }
224                break;
225        }
226    },
227
228    /**
229     * Az átirányítás válasz feldolgozását intézi
230     * @param {Object} data
231     * @return {void}
232     */
233    processRedirect: function (data) {
234        if (data.param === 'refresh') {
235            location.reload();
236        } else {
237            location.href = data.param;
238        }
239    },
240
241    /**
242     * Script feldolgozását végző függvény
243     * @param {Object} data
244     * @return {void}
245     */
246    processScript: function (data) {
247        if (typeof data.script !== "undefined") {
248            let lastPoint = data.script.lastIndexOf(".");
249            if (lastPoint === -1) {
250                if (typeof window[data.script] === "function") {
251                    window[data.script](data.param);
252                }
253            } else {
254                let arr = data.script.split(".");
255                let obj = window;
256                for (let i = 0; i < arr.length - 1; i++) {
257                    if (typeof obj[arr[i]] === "object") {
258                        obj = obj[arr[i]];
259                    } else {
260                        break;
261                    }
262                }
263                if (typeof obj[arr[arr.length - 1]] === "function") {
264                    obj[arr[arr.length - 1]](data.param);
265                }
266            }
267        }
268    },
269
270    /**
271     * Egy rendszer üzenet választ hajt végre
272     * @param {Object} data
273     * @return {void}
274     */
275    processSysMsg: function (data) {
276        Viszony.LayerHandler.showFlashMessage(data.message);
277    },
278};
279/* cached content from: ajax.js */
280/**
281 * Ajax kéréseket kezelő Objektum
282 * @type {Object}
283 */
284Ajax = {
285
286    /**
287     * Visszatérési típust jelőlő változó
288     * @type {string}
289     */
290    dataTypeJson: "json",
291
292    responseError: "error",
293
294    responseSuccess: "success",
295
296    /**
297     * A controller és method változókból elkészíti ajax kérés url-t amit átadva a tövvi változóval meghívja a process függvényt
298     * @param {string} controller
299     * @param {string} method
300     * @param {Object} data
301     * @param {Object} [options]
302     * @param {AjaxCallback} [callback]
303     * @return {jqXHR}
304     */
305    processByParams: function(controller, method, data, options, callback) {
306        let url;
307        if (typeof method !== "string") {
308            url = config['path_ajaxRequest'] + controller;
309        } else {
310            url = config['path_ajaxRequest'] + controller + "/" + method;
311        }
312        return this.process(url, data, options, callback);
313    },
314
315    /**
316     * Ajax kérést hoz létre a megadott url-re
317     * @param {string} url
318     * @param {Object} data átadott adat Objecktum ami el les POST-olvas vagy GET paraméterekhez hozzáadva
319     * @param {Object} [options] értékei:<br/>
320     * <strong>method</strong>: string a kérés típusa(POST, GET, stb....)
321     * @param {AjaxCallback} [callback] ha undefined akkor létre hoz egy sajátot és hozzáadja a AjaxResponseHandler-t
322     * @param form Ha meg van adva, akkor az ajax hívás idejére form--loading class-t ad a formnak
323     * @return {jqXHR}
324     */
325    process: function(url, data, options, callback, form) {
326        let opts = {
327            method: null,
328            dataType: this.dataTypeJson,
329            handleResponseOnSuccess: true,
330            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
331            processData: true,
332        };
333        if (!(callback instanceof AjaxCallback)) {
334            callback = new AjaxCallback();
335        }
336        opts.method = "POST";
337        if (typeof options === "object" && options !== null) {
338            if (typeof options.method === "string") {
339                opts.method = options.method;
340            }
341            if (typeof options.contentType === "boolean") {
342                opts.contentType = options.contentType;
343            }
344            if (typeof options.processData === "boolean") {
345                opts.processData = options.processData;
346            }
347        }
348        if (opts.handleResponseOnSuccess) {
349            let callbacks = callback.getSuccessCallbacks();
350            let found = false;
351            for (let i = 0; i < callbacks.length; i++) {
352                if (callbacks[i] === this.successCallback) {
353                    found = true;
354                    break;
355                }
356            }
357            if (!found) {
358                callback.addSuccessCallback(this.successCallback);
359            }
360        }
361        if (typeof data === "undefined") {
362            data = {};
363        }
364        if(typeof form != 'undefined') {
365            form.addClass('form--loading');
366        }
367        return $.ajax({
368            url: url,
369            method: opts.method,
370            dataType: opts.dataType,
371            data: data,
372            cache: false,
373            contentType: opts.contentType,
374            processData: opts.processData,
375            success: function (result) {
376                let functions = callback.getSuccessCallbacks();
377                for (let i = 0; i < functions.length; i++) {
378                    functions[i](result);
379                }
380                if(typeof form != 'undefined') {
381                    form.removeClass('form--loading');
382                }
383            },
384            error: function (error) {
385                callback.errorCallback(error);
386                if(typeof form != 'undefined') {
387                    form.removeClass('form--loading');
388                }
389            },
390            completed: function () {
391                for (const func of callback.getExecutedCallbacks()) {
392                    func();
393                }
394            },
395        });
396    },
397
398    /**
399     * Ha nincs megadva vagy az alap kezelés engedélyezve van akkor ez a függvény fut le
400     * @param {array} result
401     * @return {void}
402     */
403    successCallback: function (result) {
404        AjaxResponseHandler.process(result);
405    },
406
407    /**
408     * @param {string} url
409     * @param {Object|FormData} data
410     * @param {Object} [settings]
411     * @return {Promise}
412     */
413    get(url, data, settings) {
414        return this.request(url, 'GET', data, settings);
415    },
416
417    /**
418     * @param {string} url
419     * @param {Object|FormData} data
420     * @param {Object} [settings]
421     * @return {Promise}
422     */
423    post(url, data, settings) {
424        return this.request(url, 'POST', data, settings);
425    },
426
427    /**
428     *
429     * @param {string} url
430     * @param {string} method
431     * @param {Object|FormData} data
432     * @param {Object} [settings]
433     * @return {Promise}
434     */
435    request(url, method, data, settings) {
436        const opts = {
437            dataType: 'json',
438            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
439            processData: true,
440        };
441        if (typeof settings === 'object') {
442            for (const key in opts) {
443                if (typeof settings[key] !== 'undefined') {
444                    opts[key] = settings[key];
445                }
446            }
447        }
448        return  new Promise((resolve, reject) => {
449            return $.ajax({
450                url: url,
451                method: method,
452                dataType: opts.dataType,
453                data: data,
454                cache: false,
455                contentType: opts.contentType,
456                processData: opts.processData,
457                success: function (result) {
458                    AjaxResponseHandler.process(result);
459                    resolve(result);
460                },
461                error: function (error) {
462                    reject(error);
463                },
464            });
465        });
466
467    },
468}
469
470/* cached content from: form-errors.js */
471/**
472 * Form hibákat kezelő osztály
473 * @constructor
474 */
475function FormErrors() {
476    let instance = this;
477    /**
478     * Form aminek a hibáit kezel az objektum
479     * @type {jQuery}
480     */
481    this.$form = null;
482    /**
483     * Input groupokat tároló Objektum az input name tag-jét használja property kulcsnak
484     * @type {Object}
485     */
486    this.inputGroups = {};
487    /**
488     * A formra vonatkozó beáállítások<br/>
489     * <strong>inputGroupClass</strong>: input gropuok azonosítására szolgáló osztály<br/>
490     * <strong>inputGroupErrorClass</strong>: input group hibáját jelző osztály<br/>
491     * <strong>ierrorElementClass</strong>: Hiba üzenet aktív státuszát jelszó osztály<br/>
492     * @type {Object}
493     */
494    this.options = {
495        inputGroupClass: "input-group",
496        inputGroupErrorClass: "input-group--has-error",
497        inputGroupHideLabelErrorClass: "input-group--hide-error-label",
498        errorElementClass: "input-group__error",
499        hideErrorsAfterTime: 3000,
500        hideAnimationTime: 400,
501    };
502
503    /**
504     * Inicializációs függvény
505     * @param {jQuery} $form a Form amit kezel az osztály
506     * @param {undefined|Object} options az osztály options objektumával mergeli összes a valid elemeket tulajdonságai:<br/>
507     * <strong>inputGroupClass</strong>: input gropuok azonosítására szolgáló osztály<br/>
508     * <strong>inputGroupErrorClass</strong>: input group hibáját jelző osztály<br/>
509     * <strong>ierrorElementClass</strong>: Hiba üzenet aktív státuszát jelszó osztály<br/>
510     * @return {void}
511     */
512    this.init = function ($form, options) {
513        this.$form = $form;
514        if (typeof options === "object") {
515            if (typeof options.inputGroupClass === "string") {
516                this.options.inputGroupClass = options.inputGroupClass;
517            }
518            if (typeof options.inputGroupErrorClass === "string") {
519                this.options.inputGroupErrorClass = options.inputGroupErrorClass;
520            }
521            if (typeof options.errorElementClass === "string") {
522                this.options.errorElementClass = options.errorElementClass;
523            }
524        }
525        this.refreshElements();
526        this.bindEvents();
527    };
528
529    this.bindEvents = function () {
530        this.$form.on("focus", ".input-group input, .input-group textarea, .input-group select", function (e) {
531            let $inputGroup = $($(e.target).parents(".input-group"));
532            if ($inputGroup.hasClass(instance.options.inputGroupErrorClass) && !$inputGroup.hasClass(instance.options.inputGroupHideLabelErrorClass)) {
533                $inputGroup.addClass(instance.options.inputGroupHideLabelErrorClass);
534            }
535        });
536    };
537
538    this.refreshElements = function () {
539        this.inputGroups = {};
540        $.each(this.$form.find("." + this.options.inputGroupClass), function (index, element) {
541            let $element = $(element);
542            instance.addElement($element, $element.find("." + instance.options.errorElementClass), $element.data('inputName'));
543        });
544    };
545
546    /**
547     * Hozzáad az elemkehz egy új elemet
548     * @param {jQuery} $element input group elem
549     * @param {jQuery} $errorMessage input group hibe üzenet eleme
550     * @param {string} name input neve
551     * @return {void}
552     */
553    this.addElement = function($element, $errorMessage, name) {
554         this.inputGroups[name] = {
555             $element: $element,
556             $errorMessage: $errorMessage,
557             name: name,
558         };
559    };
560
561    /**
562     * Elrejti a meglevő hibaüzeneteket és megjeleínti az újjakat
563     * @param {Object} result
564     * @return {void}
565     */
566    this.showErrors = function (result) {
567        this.hideErrors();
568        for (let name in result) {
569            if (typeof result[name] === "string") {
570                this.showError(name, result[name]);
571            } else {
572                this.showError(name, result[name][0]);
573            }
574        }
575        let errors = $('.input-group.' + this.options.inputGroupErrorClass);
576        if(errors.length > 0) {
577            var scrollTop = errors.first().offset().top - 90;
578            if($(window).innerWidth() >= 768 || $('.mobile-tab-handler').length == 0) {
579                var container = $('html, body');
580            } else {
581                var container = $('.mobile-tab-handler');
582                scrollTop += $('.mobile-tab-handler').scrollTop();
583            }
584            container.animate({
585                scrollTop: scrollTop + 'px'
586            }, 500);
587        }
588        setTimeout(function () {
589            instance.hideErrorsExpire();
590        }, this.options.hideErrorsAfterTime);
591    };
592
593    /**
594     * Megjelít egy hiba üzenetet az elemhez
595     * @param {string} name elem neve amihez tartozik az üzenet
596     * @param {string} message üzenet tartalma
597     * @return {void}
598     */
599    this.showError = function (name, message) {
600        if (typeof this.inputGroups[name] === "object") {
601            this.inputGroups[name].$element.addClass(this.options.inputGroupErrorClass);
602            this.inputGroups[name].$errorMessage.html(message);
603        } else {
604            if (config['DEBUG'] === 1) {
605                console.error('Mező nem található: ' + name);
606            }
607        }
608    };
609
610    this.hideErrorsExpire = function () {
611        for (let name in this.inputGroups) {
612            this.inputGroups[name].$errorMessage.animate({
613                opacity: 0,
614            }, this.options.hideAnimationTime, function () {
615                instance.inputGroups[name].$element.addClass(instance.options.inputGroupHideLabelErrorClass);
616                instance.inputGroups[name].$errorMessage.css({
617                    opacity: 1,
618                });
619            });
620        }
621    };
622
623    /**
624     * Elrejti a hibaüzeteket az összes elemnél
625     * @return {void}
626     */
627    this.hideErrors = function () {
628        for (let name in this.inputGroups) {
629            this.inputGroups[name].$element.removeClass(this.options.inputGroupErrorClass);
630            this.inputGroups[name].$element.removeClass(this.options.inputGroupHideLabelErrorClass);
631        }
632    };
633}
634
635/* cached content from: ajax-callback.js */
636/**
637 * Ajax callback osztály, callback-ek tárolására
638 * Sikeresek kérés kezelésére több callback adható hozzá
639 * @constructor
640 */
641function AjaxCallback(){
642    /**
643     * Sikeres hívások callbackjeit tároló tömb
644     * @type {function[]}
645     */
646    this.successCallbacks = [];
647
648    /**
649     * Ha visszatért a vcálasz és fel lett dolgozva akkor fut le és mindenképpen lefut
650     * @type {function[]}
651     */
652    this.executedCallbacks = [];
653
654    /**
655     * Felülírandó függvény az ajax kérés esetén fellépő hiba kezelésére
656     * @return {void}
657     */
658    this.errorCallback = function(error){
659        if (config['DEBUG']) {
660            console.error(error);
661        }
662    };
663
664    /**
665     * Hozzáad egy sikeres ajax kérést kezelő függvényt a meglevőkhöz
666     * @param {function} fn
667     */
668    this.addSuccessCallback = function(fn) {
669        this.successCallbacks.push(fn);
670    };
671
672    /**
673     * Visszaadja a sikeres ajax kérést kezelő callback függvényeket
674     * @return {function[]}
675     */
676    this.getSuccessCallbacks = function () {
677        return this.successCallbacks;
678    };
679
680    /**
681     *
682     * @param {function} func
683     */
684    this.addExecutedCallback = function (func) {
685        if (typeof func !== "function") {
686            if (config['DEBUG']) {
687                console.error("Nem függvény paraméter");
688            }
689            return;
690        }
691        this.executedCallbacks.push(func);
692    }
693
694    /**
695     *
696     * @return {function[]}
697     */
698    this.getExecutedCallbacks = function () {
699        return this.executedCallbacks;
700    }
701}
702/* cached content from: layer.js */
703/**
704 * Layer kezelő osztály
705 * @param {jQuery} $overlay
706 * @constructor
707 */
708function Layer($overlay) {
709    let instance = this;
710    /**
711     * Overlay
712     * @type {jQuery}
713     */
714    this.$overlay = $overlay;
715    /**
716     * Layer
717     * @type {jQuery}
718     */
719    this.$content = null;
720    /**
721     * Aktív állapotot jelölő osztály
722     * @type {string}
723     */
724    this.activateClass = "layer--active";
725
726    this.options = {
727        closeOnOverlayClick: true,
728    };
729
730    /**
731     * Inicializálást végrehajtó függvény
732     * @param {Object} options
733     * @return {void}
734     */
735    this.init = function (options) {
736        this.mergeOptions(options);
737        if (!this.options.closeOnOverlayClick) {
738            this.$overlay.addClass("layer--not-close-overlay");
739        }
740        this.$content = this.$overlay.find(".layer__content");
741        this.bindEvents();
742    };
743
744    /**
745     * Események hozzáadása
746     * @return {void}
747     */
748    this.bindEvents = function () {
749        if (this.options.closeOnOverlayClick) {
750            let closeAllowed = false;
751            this.$overlay.on("mouseup", function (e) {
752                if (closeAllowed) {
753                    const $target = $(e.target);
754                    if ($target[0] === instance.$overlay[0] || $target.hasClass('layer__container')) {
755                        instance.close();
756                    }
757                }
758                closeAllowed = false;
759            });
760            this.$overlay.on("mousedown", function (e) {
761                const $target = $(e.target);
762                if ($target[0] === instance.$overlay[0] || $target.hasClass('layer__container')) {
763                    closeAllowed = true;
764                }
765            });
766        }
767        this.$content.find(".layer__close").on("click", function () {
768            instance.close();
769        });
770    };
771
772    /**
773     * Layer megnyitása
774     * @return {void}
775     */
776    this.open = function () {
777        this.$overlay.addClass(this.activateClass);
778    };
779
780    this.isOpen = function (){
781        return this.$overlay.hasClass(this.activateClass);
782    };
783
784    /**
785     * Layer bezárása
786     * @return {void}
787     */
788    this.close = function () {
789        this.$overlay.removeClass(this.activateClass);
790        this.closeListener();
791    };
792
793    this.mergeOptions = function (options) {
794        if (typeof options === "object") {
795            if (typeof options.closeOnOverlayClick === "boolean") {
796                this.options.closeOnOverlayClick = options.closeOnOverlayClick;
797            }
798        }
799    };
800
801    this.closeListener = function () {
802    };
803}
804
805/* cached content from: confirm-message.js */
806function ConfirmMessage($overlay){
807    let instance = this;
808
809    this.$overlay = $overlay;
810
811    this.layer = null;
812
813    this.$message = null;
814
815    this.$accept = null;
816
817    this.$cancel = null;
818
819    this.init = function(){
820        this.layer = new Layer(this.$overlay);
821        this.layer.init();
822        this.$message = $("#confirm-message-text");
823        this.$accept = $("#confirm-message-accept");
824        this.$cancel = $("#confirm-message-cancel");
825        this.bindEvents();
826    };
827
828    this.bindEvents = function(){
829        this.$accept.on("click", function () {
830            instance.acceptCallback();
831        });
832        this.$cancel.on("click", function () {
833            instance.cancelCallback();
834        });
835    };
836
837    this.setMessage = function(message) {
838        this.$message.html(message);
839    };
840
841    this.setAcceptLabel = function (label) {
842        this.$accept.html(label);
843    };
844
845    this.setCancelLabel = function (label) {
846        this.$cancel.html(label);
847    };
848
849    this.open = function () {
850        this.layer.open();
851    };
852
853    this.close = function () {
854        this.layer.close();
855    };
856
857    this.acceptCallback = function(){
858    };
859
860    this.cancelCallback = function(){
861    }
862}
863/* cached content from: init.js */
864if (typeof Viszony === "undefined") {
865    var Viszony = {};
866}
867
868$(document).ready(function() {
869    if (typeof loadServerData === 'function') {
870        loadServerData();
871    }
872    initModules();
873});
874
875function initModules() {
876    $.each(Viszony, function (index, element) {
877        if (typeof element.init === "function") {
878            element.init();
879        }
880    });
881}
882/* cached content from: utils.js */
883
884Viszony.Utils = {
885    loadScript: function (fileName) {
886        return new Promise((resolve, reject) => {
887            const script = document.createElement("script");
888            script.setAttribute("src", fileName);
889            script.setAttribute("type", "text/javascript");
890            document.body.appendChild(script);
891
892            script.addEventListener("load", () => {
893                resolve();
894            });
895
896            script.addEventListener("error", (err) => {
897                reject(err);
898            })
899        });
900    },
901
902    requestUrl: function (name) {
903        return 'ajaxRequest/' + name;
904    }
905
906}
907/* cached content from: responsiveness.js */
908/**
909 * Automatikus kicsinyítést megvalósító objektum
910 *
911 * @type {Object}
912 */
913Viszony.responsiveness = {
914
915    init: function() {
916        this.scaleContainer();
917        this.bindEvents();
918    },
919
920    scaleContainer: function() {
921        var element = $('.container.layout');
922        var w = window.innerWidth;
923        var paddingTop = element.data('padding-top');
924
925        var scale = 1;
926        if(w >= 768 && w < 960) {
927            if(typeof paddingTop == 'undefined') {
928                paddingTop = parseInt(element.css('padding-top'));
929                element.data('padding-top', paddingTop);
930            }
931
932            scale = (w - 10) / 960;
933            paddingTop = Math.round(paddingTop / scale);
934
935            element.css({
936                'transform': 'scale(' + scale + ')',
937                'padding-top': paddingTop + 'px'
938            });
939        } else {
940            element.css({
941                'transform': '',
942                'padding-top': ''
943            });
944        }
945    },
946
947    bindEvents: function() {
948        var self = this;
949
950        $(window).resize(function() {
951           self.scaleContainer();
952        });
953    }
954
955};
956/* cached content from: helper.js */
957Viszony.Helper = {
958    tablet_breakpoint: 768,
959
960    search_url: config['path_ajaxRequest'] + "search/search",
961    favourites_search_url: config['path_ajaxRequest'] + "connection/favouritesSearch",
962    connection_search_url: config['path_ajaxRequest'] + "connection/connectionSearch",
963    connection_other_search_url: config['path_ajaxRequest'] + "connection/connectionOtherSearch",
964    story_search_url: config['path_ajaxRequest'] + "story/search",
965
966    Url: {
967        setEnding: function(value, replace) {
968            if(typeof replace == 'undefined') replace = true;
969            baseUrl = [location.protocol, '//', location.host, location.pathname].join('');
970            urlQueryString = document.location.search;
971            urlParts = baseUrl.split('/');
972            var lastPart = urlParts[urlParts.length - 1];
973
974            if($.isNumeric(lastPart)) {
975                urlParts[urlParts.length - 1] = undefined;
976                var newUrl = urlParts.join('/') + value + urlQueryString;
977            } else {
978                var newUrl = baseUrl;
979                if(newUrl.charAt(newUrl.length - 1) != '/') {
980                    newUrl += '/';
981                }
982                newUrl += value + urlQueryString;
983            }
984
985            if(replace) {
986                window.history.replaceState({}, "", newUrl);
987            } else{
988                window.history.pushState({}, "", newUrl);
989            }
990        },
991
992        removeParameter: function(param) {
993            var urlParts = window.location.href.split('?');
994            if(urlParts.length == 1) return;
995            var url = urlParts[0]+'?';
996            var sPageURL = decodeURIComponent(window.location.search.substring(1)),
997                sURLVariables = sPageURL.split('&');
998
999            for (var i = 0; i < sURLVariables.length; i++) {
1000                var sParameterName = sURLVariables[i].split('=');
1001                if (sParameterName[0] != param) {
1002                    url = url + sParameterName[0] + '=' + sParameterName[1] + '&'
1003                }
1004            }
1005
1006            window.history.replaceState({}, "", url.substring(0, url.length - 1));
1007        }
1008    },
1009
1010    getScrollTop: function() {
1011        return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
1012    },
1013
1014    ConsentManagement: {
1015        gtag: function() {
1016            window.dataLayer.push(arguments);
1017        },
1018
1019        setGoogleConsentMode: function() {
1020            let version = Cookies.get('cookieOptionsVersion');
1021
1022            if (typeof version == 'undefined' || version < 2) {
1023                let options = Cookies.get('cookieOptions');
1024                if (typeof options == 'undefined') return;
1025
1026                options = options.split(';');
1027                if(options.indexOf('marketing=1') != -1) {
1028                    this.gtag('consent', 'update', {
1029                        'ad_user_data': 'granted',
1030                        'ad_personalization': 'granted'
1031                    });
1032                }
1033
1034                Cookies.set('cookieOptionsVersion', 2, {
1035                    expires: 3650,
1036                    path: "/",
1037                });
1038            }
1039        }
1040    }
1041
1042};
1043/* cached content from: form-handler.js */
1044/**
1045 * Form kezelő objektum
1046 * @type {Object}
1047 */
1048Viszony.FormHandler = {
1049
1050    /**
1051     * Inicializációs függvény
1052     * az ajax-form osztállyal rendelkező formok-hoz automatikusan létrehoz egy AjaxForm objektumot
1053     * és hozzáadja a megfelelő kezelő objektumot
1054     * @return {void}
1055     */
1056    init: function () {
1057        let instance = this;
1058        $.each($(".ajax-form"), function (index, element) {
1059            instance.addAjaxForm($(element));
1060        });
1061    },
1062
1063    addAjaxForm: function($form, ajaxCallback, options) {
1064        let instance = this;
1065        if (typeof ajaxCallback === "undefined" || ajaxCallback === null) {
1066            ajaxCallback = new AjaxCallback();
1067        }
1068        let formErrors = new FormErrors();
1069        formErrors.init($form);
1070        ajaxCallback.addSuccessCallback(function (result) {
1071            instance.showErrors(formErrors, result);
1072        });
1073        let ajaxForm = new AjaxForm();
1074        ajaxForm.init($form, ajaxCallback, options);
1075        return ajaxForm;
1076    },
1077
1078    /**
1079     * Ha vannak a válaszban hibák akkor automatikus megjeléeníti őket ha nincs akkor elrejti őket
1080     * @param {FormErrors} formErrors
1081     * @param {Object} result
1082     * @return {void}
1083     */
1084    showErrors: function (formErrors, result) {
1085        if (typeof result.data.param === "object" && typeof result.data.param.errors === "object") {
1086            formErrors.showErrors(result.data.param.errors);
1087        } else {
1088            formErrors.hideErrors();
1089        }
1090    },
1091};
1092
1093/* cached content from: layer-handler.js */
1094/**
1095 * Layerek kezelését végző objektum
1096 * @type {Object}
1097 */
1098Viszony.LayerHandler = {
1099
1100    /**
1101     * Flash masseage layer objektum
1102     * @type {Layer}
1103     */
1104    flashMessage: null,
1105
1106    confirmMessage: null,
1107
1108    /**
1109     * Inicializációs függvény
1110     * Sys message inicializálása és ha van üzeneet megjelenítése
1111     * @return {void}
1112     */
1113    init: function(){
1114        this.initFlashMessage();
1115        if (typeof sysMessage !== "undefined") {
1116            this.showFlashMessage(sysMessage);
1117        }
1118        this.initConfirmMessage();
1119        let $openLayers = $(".layer[data-show=\"1\"]");
1120        $.each($openLayers, function (index, element) {
1121            let layer = new Layer($(element));
1122            layer.init();
1123            layer.open();
1124        });
1125    },
1126
1127    /**
1128     * Flash message megjelenítését végzi
1129     * @param {string} message üzenet
1130     * @return {void}
1131     */
1132    showFlashMessage: function (message) {
1133        this.flashMessage.setMessage(message);
1134        this.flashMessage.open();
1135    },
1136
1137    showConfirmMessage: function (message, acceptCallback, cancelCallback, acceptLabel, cancelLabel) {
1138        this.confirmMessage.setMessage(message);
1139        this.confirmMessage.acceptCallback = acceptCallback;
1140        if (typeof cancelCallback === "function") {
1141            this.confirmMessage.cancelCallback = cancelCallback;
1142        }
1143        if(typeof acceptLabel !== "string") {
1144            acceptLabel = lang['common.accept'];
1145        }
1146        this.confirmMessage.setAcceptLabel(acceptLabel);
1147        if(typeof cancelLabel !== "string") {
1148            cancelLabel = lang['common.cancel'];
1149        }
1150        this.confirmMessage.setCancelLabel(cancelLabel);
1151        this.confirmMessage.open();
1152    },
1153
1154    /**
1155     * Inicialiizálja a flash messaget
1156     * @return {void}
1157     */
1158    initFlashMessage: function () {
1159        let $flashMessageOverlay = $("#flash-message");
1160        this.flashMessage = new Layer($flashMessageOverlay);
1161        this.flashMessage.init();
1162        this.flashMessage.$message = $flashMessageOverlay.find("#flash-message-text");
1163        this.flashMessage.setMessage = function (message) {
1164            this.$message.html(message);
1165        };
1166    },
1167
1168    initConfirmMessage: function () {
1169        let $overlay = $("#confirm-message");
1170        this.confirmMessage = new ConfirmMessage($overlay);
1171        this.confirmMessage.init();
1172    },
1173
1174};
1175
1176/* cached content from: vc-common.js */
1177Viszony.vcCommon = {
1178
1179    partnerID: undefined,
1180
1181    token: undefined,
1182
1183    termsLayer: undefined,
1184
1185    requestLayer: undefined,
1186
1187    ringSignal: undefined,
1188
1189    messageUrl: undefined,
1190
1191    callerHasVideo: true,
1192
1193    termsLayerCallback: undefined,
1194
1195    invitationCallback: undefined,
1196
1197    init: function() {
1198        if($('.videochat-request-layer').length > 0) {
1199            this.termsLayer = new Layer($('#videochat-terms-layer'));
1200            this.termsLayer.init();
1201
1202            this.requestLayer = new Layer($('#videochat-request-layer'));
1203            this.requestLayer.init();
1204
1205            this.ringSignal = $('.videochat-request-layer__ring-signal')[0];
1206            this.ringSignal.volume = 0.5;
1207        }
1208
1209        this.bindEvents();
1210    },
1211
1212    showRequestLayer: function(param) {
1213        if(typeof Viszony.videochat == 'object') {
1214            if(Viszony.videochat.isBusy) {
1215                Viszony.vcCommon.vBusy(param.callerID, param.params.token);
1216                return;
1217            }
1218
1219            Viszony.videochat.setCallerData(param.callerID, param.params.token, param.params.msgID);
1220        }
1221
1222        this.partnerID = param.callerID;
1223        this.token = param.params.token;
1224        this.messageUrl = param.params.messageUrl;
1225        this.callerHasVideo = param.params.callerHasVideo;
1226
1227        var data = {
1228            'nick': param.params.callerNick,
1229            'avatar': param.params.callerAvatar
1230        };
1231
1232        $('.videochat-request-layer__avatar').attr('src', data.avatar);
1233        $('.videochat-request-layer h2 .nick').text(data.nick);
1234
1235        this.requestLayer.open();
1236
1237        if(param.params.recipientMuted === false) {
1238            this.ringSignal.currentTime = 0;
1239            this.ringSignal.play();
1240        }
1241    },
1242
1243    hideRequestLayer: function() {
1244        this.ringSignal.pause();
1245        this.requestLayer.close();
1246    },
1247
1248    answerCall: function() {
1249        if(typeof Viszony.videochat == 'object') {
1250            if(Viszony.messages.getPartnerId() != this.partnerID) {
1251                var item = $('.messages-page .conversations__item[data-id="' + this.partnerID + '"]');
1252
1253                if(item.length > 0) {
1254                    Viszony.messages.loadConversation(this.partnerID);
1255                    setTimeout(function() {
1256                        Viszony.videochat.showPreview(true);
1257                    }, 0);
1258                } else {
1259                    location.href = this.messageUrl;
1260                }
1261            } else {
1262                Viszony.videochat.showPreview(true);
1263            }
1264        } else {
1265            location.href = this.messageUrl;
1266        }
1267    },
1268
1269    showTermsLayer: function(callback) {
1270        var self = this;
1271
1272        this.termsLayerCallback = callback;
1273
1274        setTimeout(function() {
1275            self.termsLayer.open();
1276        }, 100);
1277    },
1278
1279    bindEvents: function() {
1280        var self = this;
1281
1282        $('.videochat-request-layer__button--answer').click(function() {
1283            self.ringSignal.pause();
1284            self.requestLayer.close();
1285
1286            if($('.videochat-terms-layer').length > 0) {
1287                self.showTermsLayer(function() {
1288                    self.answerCall();
1289                });
1290                return;
1291            }
1292
1293            self.answerCall();
1294        });
1295
1296        $('.videochat-request-layer__button--reject').click(function() {
1297            self.ringSignal.pause();
1298            self.requestLayer.close();
1299
1300            Viszony.vcCommon.vDeny(self.partnerID, self.token);
1301        });
1302
1303        $('.videochat-terms-layer__button--cancel').click(function() {
1304            if(typeof self.token != 'undefined') {
1305                Viszony.vcCommon.vDeny(self.partnerID, self.token);
1306            }
1307            self.termsLayer.close();
1308        });
1309
1310        $('.videochat-terms-layer__button--continue').click(function() {
1311            if(!$('.videochat-terms-layer input[name="accept"]').is(':checked')) {
1312                $('.videochat-terms-layer__error').show();
1313                return;
1314            }
1315
1316            Ajax.processByParams('message', 'setVideoChatTermsAccepted');
1317
1318            $('.messages-page .start-videochat').removeClass('start-videochat--show-vi
1318deochat-terms-layer');
1319
1320            self.termsLayer.close();
1321
1322            setTimeout(function() {
1323                $('.videochat-terms-layer').remove();
1324            }, 1000);
1325
1326            if(typeof self.termsLayerCallback == 'function') {
1327                self.termsLayerCallback();
1328                self.termsLayerCallback = undefined;
1329            }
1330        });
1331
1332    },
1333
1334    // websocket callbacks
1335
1336    // bejövő videóhívás
1337    _vIncomingCall: function(param){
1338        this.showRequestLayer(param);
1339    },
1340
1341    // hívás elfogadása utáni callback
1342    _vStartCall: function(param){
1343        if(Viszony.videochat.hasVideo()) {
1344            Viszony.videochat.connect(param.token);
1345        } else {
1346            Viszony.videochat.token = param.token;
1347            Viszony.videochat.accept();
1348        }
1349    },
1350
1351    // hívás elutasítása utáni callback
1352    _vEndCall: function(param){
1353        Viszony.videochat.showEndInfo(param.action);
1354    },
1355
1356    // hiba történt
1357    _vErrorHandler: function(param){
1358        if(typeof param.msg != 'undefined' && param.msg != '') {
1359            Viszony.LayerHandler.showFlashMessage(param.msg);
1360        }
1361    },
1362
1363    // websocket methods
1364
1365    // accept video call
1366    vAccept: function(uid, token){
1367        scope.sendRequest('videochat', 'acceptVideo', {userID: uid, token: token});
1368        return true;
1369    },
1370
1371    // deny video call
1372    vDeny: function(uid, token){
1373        // hasonlóan mint az elfogadást
1374        scope.sendRequest('videochat', 'denyVideo', {userID: uid, token: token});
1375        return false;
1376    },
1377
1378    // iam busy
1379    vBusy: function(uid, token){
1380        // hasonlóan mint az elfogadást csak instant válasz van, hogy foglalt.
1381        scope.sendRequest('videochat', 'busyVideo', {userID: uid, token: token});
1382        return false;// callback legyen?
1383    },
1384
1385    // stop video call
1386    vStop: function(uid, token){
1387        // hasonlóan mint az elfogadást
1388        scope.sendRequest('videochat', 'stopVideo', {userID: uid, token: token});
1389        return false;
1390    }
1391
1392};
1393/* cached content from: crosstab.min.js */
1394/*!
1395 * crosstab JavaScript Library v0.2.12
1396 * https://github.com/tejacques/crosstab
1397 *
1398 * License: Apache 2.0 https://github.com/tejacques/crosstab/blob/master/LICENSE
1399 *
1400 *  Copyright 2015 Tom Jacques
1401 *
1402 *  Licensed under the Apache License, Version 2.0 (the "License");
1403 *  you may not use this file except in compliance with the License.
1404 *  You may obtain a copy of the License at
1405 *
1406 *      http://www.apache.org/licenses/LICENSE-2.0
1407 *
1408 *  Unless required by applicable law or agreed to in writing, software
1409 *  distributed under the License is distributed on an "AS IS" BASIS,
1410 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1411 *  See the License for the specific language governing permissions and
1412 *  limitations under the License.
1413 *
1414 */
1415(function(window,define){define("crosstab",function(require,exports,module){var useragent=(window.navigator&&(window.navigator.userAgent||window.navigator.vendor))||window.opera||"none";var isMobile=(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(useragent)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
1415sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(useragent.substr(0,4)));var localStorage;try{localStorage=window.localStorage;localStorage=window["ie8-eventlistener/storage"]||window.localStorage;}catch(e){}var setItemAllowed=true;try{localStorage.setItem("__crosstab","");localStorage.removeItem("__crosstab");}catch(e){setItemAllowed=false;}var frozenTabEnvironment=false;function notSupported(){if(crosstab.supported){return;}var errorMsg="crosstab not supported";var reasons=[];if(!localStorage){reasons.push("localStorage not availabe");}if(!window.addEventListener){reasons.push("addEventListener not available");}if(isMobile){reasons.push("mobile browser");}if(frozenTabEnvironment){reasons.push("frozen tab environment detected");}if(!setItemAllowed){reasons.push("localStorage.setItem not allowed");}if(reasons.length>0){errorMsg+=": "+reasons.join(", ");}throw new Error(errorMsg);}var util={keys:{MESSAGE_KEY:"crosstab.MESSAGE_KEY",TABS_KEY:"crosstab.TABS_KEY",MASTER_TAB:"MASTER_TAB",SUPPORTED_KEY:"crosstab.SUPPORTED",FROZEN_TAB_ENVIRONMENT:"crosstab.FROZEN_TAB_ENVIRONMENT"}};util.isArray=Array.isArray||function(arr){return arr instanceof Array;};util.isNumber=function(num){return typeof num==="number";};util.isFunction=function(fn){return typeof fn==="function";};util.forEachObj=function(obj,fn){for(var key in obj){if(obj.hasOwnProperty(key)){fn.call(obj,obj[key],key,obj);}}};util.forEachArr=function(arr,fn){var len=arr.length;for(var i=0;i<len;i++){fn.call(arr,arr[i],i,arr);}};util.forEach=function(thing,fn){if(util.isArray(thing)){util.forEachArr(thing,fn);}else{util.forEachObj(thing,fn);}};util.map=function(thing,fn){var res=[];util.forEach(thing,function(item,key,obj){res.push(fn(item,key,obj));});return res;};util.filter=function(thing,fn){var isArr=util.isArray(thing);var res=isArr?[]:{};if(isArr){util.forEachArr(thing,function(value,key){if(fn(value,key)){res.push(value);}});}else{util.forEachObj(thing,function(value,key){if(fn(value,key)){res[key]=value;}});}return res;};util.reduce=function(thing,fn,accumulator){var first=arguments.length<3;util.forEach(thing,function(item,key,obj){if(first){accumulator=item;first=false;}else{accumulator=fn(accumulator,item,key,obj);}});return accumulator;};util.now=function(){return(new Date()).getTime();};util.tabs=getStoredTabs();util.eventTypes={becomeMaster:"becomeMaster",demoteFromMaster:"demotedFromMaster",tabUpdated:"tabUpdated",tabClosed:"tabClosed",tabPromoted:"tabPromoted"};util.storageEventKeys=util.reduce(util.keys,function(keys,val){keys[val]=1;return keys;},{});util.createEventHandler=function(){var events={};var subscribeKeyToListener={};var findHandlerByKey=function(event,key){var handler;if(subscribeKeyToListener[event]){handler=subscribeKeyToListener[event][key];}return handler;};var findHandlerIndex=function(event,listener){var listenerIndex=-1;var eventList=events[event];if(eventList&&listener){var len=eventList.length||0;for(var i=0;i<len;i++){if(eventList[i]===listener){listenerIndex=i;break;}}}return listenerIndex;};var addListener=function(event,listener,key){var handlers=listeners(event);var storedHandler=findHandlerByKey(event,key);var listenerIndex;if(storedHandler===undefined){listenerIndex=handlers.length;handlers[listenerIndex]=listener;if(!subscribeKeyToListener[event]){(subscribeKeyToListener[event]={});}if(key){subscribeKeyToListener[event][key]=listener;}}else{listenerIndex=findHandlerIndex(event,storedHandler);handlers[listenerIndex]=listener;}return key||listener;};var removeListener=function(event,key){var handler=util.isFunction(key)?key:findHandlerByKey(event,key);var listenerIndex=findHandlerIndex(event,handler);if(listenerIndex===-1){return false;}if(events[event]&&events[event][listenerIndex]){events[event].splice(listenerIndex,1);delete subscribeKeyToListener[event][key];return true;}return false;};var removeAllListeners=function(event){var successful=false;if(event){if(events[event]){delete events[event];successful=true;}if(subscribeKeyToListener[event]){delete subscribeKeyToListener[event];successful=successful&&true;}}else{events={};subscribeKeyToListener={};successful=true;}return successful;};var emit=function(event){var args=Array.prototype.slice.call(arguments,1
1415);var handlers=listeners(event);util.forEach(handlers,function(listener){if(util.isFunction(listener)){listener.apply(this,args);}});};var once=function(event,listener,key){while(!key||(findHandlerByKey(event,key)!==undefined)){key=util.generateId();}addListener(event,function(){removeListener(event,key);var args=Array.prototype.slice.call(arguments);listener.apply(this,args);},key);return key;};var listeners=function(event){var handlers=events[event]=events[event]||[];return handlers;};var destructor=function(){clearInterval(crosstab.keepAliveInterval);removeAllListeners();};return{addListener:addListener,destructor:destructor,on:addListener,off:function(event,key){var argsLen=arguments.length;if(!argsLen){return removeAllListeners();}else{if(argsLen===1){return removeAllListeners(event);}else{return removeListener(event,key);}}},once:once,emit:emit,listeners:listeners,removeListener:removeListener,removeAllListeners:removeAllListeners};};var eventHandler=util.createEventHandler();util.events={addListener:eventHandler.addListener,on:eventHandler.on,off:eventHandler.off,once:eventHandler.once,emit:eventHandler.emit,listeners:eventHandler.listeners,removeListener:eventHandler.removeListener,removeAllListeners:eventHandler.removeAllListeners,destructor:eventHandler.destructor};var lastNewValue;var lastOldValue;function onStorageEvent(event){if(!event||!(event.key in util.storageEventKeys)){return;}var eventValue;try{eventValue=event.newValue?JSON.parse(event.newValue):{};}catch(e){eventValue={};}if(!eventValue||!eventValue.id||eventValue.id===crosstab.id){return;}if(event.newValue===lastNewValue&&event.oldValue===lastOldValue){return;}lastNewValue=event.newValue;lastOldValue=event.oldValue;if(event.key===util.keys.MESSAGE_KEY){var message=eventValue.data;if(!message.destination||message.destination===crosstab.id){eventHandler.emit(message.event,message);}}else{if(event.key===util.keys.FROZEN_TAB_ENVIRONMENT){frozenTabEnvironment=eventValue.data;crosstab.supported=crosstab.supported&&!eventValue.data;}else{if(event.key===util.keys.SUPPORTED_KEY){crosstab.supported=crosstab.supported&&eventValue.data;}}}}function setLocalStorageItem(key,data){var storageItem={id:crosstab.id,data:data,timestamp:util.now()};localStorage.setItem(key,JSON.stringify(storageItem));}function getLocalStorageItem(key){var item=getLocalStorageRaw(key);return item.data;}function getLocalStorageRaw(key){var json=localStorage?localStorage.getItem(key):null;var item=json?JSON.parse(json):{};return item;}function unload(){crosstab.stopKeepalive=true;var numTabs=0;util.forEach(util.tabs,function(tab,key){if(key!==util.keys.MASTER_TAB){numTabs++;}});if(numTabs===1){util.tabs={};setStoredTabs();}else{broadcast(util.eventTypes.tabClosed,crosstab.id);}}function restoreLoop(){crosstab.stopKeepalive=false;keepaliveLoop();}function swapUnloadEvents(){window.removeEventListener("beforeunload",unload,false);window.addEventListener("unload",unload,false);restoreLoop();}function getMaster(){return util.tabs[util.keys.MASTER_TAB];}function setMaster(newMaster){util.tabs[util.keys.MASTER_TAB]=newMaster;}function deleteMaster(){delete util.tabs[util.keys.MASTER_TAB];}function getMasterId(){var master=getMaster();return master?master.id:0;}function isMaster(){return getMasterId()===crosstab.id;}function masterTabElection(){var maxId=null;util.forEach(util.tabs,function(tab){if(!maxId||tab.id<maxId){maxId=tab.id;}});if(maxId===crosstab.id){broadcast(util.eventTypes.tabPromoted,crosstab.id);}else{setMaster({id:maxId,lastUpdated:util.now()});}}eventHandler.addListener(util.eventTypes.tabClosed,function(message){var id=message.data;if(id in util.tabs){delete util.tabs[id];}var master=getMaster();if(!master||master.id===id){if(master){deleteMaster();}masterTabElection();}else{if(master.id===crosstab.id){setStoredTabs();}}});eventHandler.addListener(util.eventTypes.tabUpdated,function(message){var tab=message.data;util.tabs[tab.id]=tab;if(!getMaster()){masterTabElection();}if(getMasterId()===tab.id){setMaster(tab);}if(isMaster()){setStoredTabs();}});var bullying;eventHandler.addListener(util.eventTypes.tabPromoted,function(message){var id=message.data;var lastUpdated=message.timestamp;var previousMaster=getMasterId();if(crosstab.id<id){if(!bullying){bullying=setTimeout(function(){bullying=0;broadcast(util.eventTypes.tabPromoted,crosstab.id);},0);}return;}setMaster({id:id,lastUpdated:lastUpdated});if(isMaster()){setStoredTabs();}if(isMaster()&&previousMaster!==crosstab.id){util.events.emit(util.eventTypes.becomeMaster);}else{if(!isMaster()&&previousMaster===crosstab.id){util.events.emit(util.eventTypes.demoteFromMaster);}}});function pad(num,width,padChar){padChar=padChar||"0";var numStr=(num.toString());if(numStr.length>=width){return numStr;}return new Array(width-numStr.length+1).join(padChar)+numStr;}util.generateId=function(){return util.now().toString()+pad((Math.random()*2147483647)|0,10);};function broadcast(event,data,destination){if(!crosstab.supported){notSupported();}
1415var message={id:util.generateId(),event:event,data:data,destination:destination,origin:crosstab.id,timestamp:util.now()};if(message.destination!==message.origin){setLocalStorageItem(util.keys.MESSAGE_KEY,message);}if(!message.destination||message.destination===message.origin){eventHandler.emit(event,message);}}function broadcastMaster(event,data){broadcast(event,data,getMaster().id);}var setupComplete=false;util.events.once("setupComplete",function(){setupComplete=true;});var crosstab=function(fn){if(setupComplete){fn();}else{util.events.once("setupComplete",fn);}};crosstab.id=util.generateId();crosstab.supported=!!localStorage&&window.addEventListener&&!isMobile&&setItemAllowed;crosstab.util=util;crosstab.broadcast=broadcast;crosstab.broadcastMaster=broadcastMaster;crosstab.on=util.events.on;crosstab.once=util.events.once;crosstab.off=util.events.off;var CACHE_TIMEOUT=10*60*1000;if(!setupComplete&&crosstab.supported){var frozenTabsRaw=getLocalStorageRaw(util.keys.FROZEN_TAB_ENVIRONMENT);if(frozenTabsRaw.timestamp){var frozenTabs=frozenTabsRaw.data;if(util.now()-frozenTabsRaw.timestamp>CACHE_TIMEOUT){localStorage.removeItem(util.keys.FROZEN_TAB_ENVIRONMENT);}else{if(frozenTabs===true){frozenTabEnvironmentDetected();}}}var supportedRaw=getLocalStorageRaw(util.keys.SUPPORTED_KEY);if(supportedRaw.timestamp){var supported=supportedRaw.data;if(util.now()-supportedRaw.timestamp>CACHE_TIMEOUT){localStorage.removeItem(util.keys.SUPPORTED_KEY);}else{if(supported===false||supported===true){crosstab.supported=supported;util.events.emit("setupComplete");}}}}function frozenTabEnvironmentDetected(){crosstab.supported=false;frozenTabEnvironment=true;setLocalStorageItem(util.keys.FROZEN_TAB_ENVIRONMENT,true);setLocalStorageItem(util.keys.SUPPORTED_KEY,false);}var TAB_KEEPALIVE=3*1000;var TAB_TIMEOUT=5*1000;var PING_TIMEOUT=500;function getStoredTabs(){var storedTabs=getLocalStorageItem(util.keys.TABS_KEY);util.tabs=storedTabs||util.tabs||{};return util.tabs;}function setStoredTabs(){setLocalStorageItem(util.keys.TABS_KEY,util.tabs);}function keepalive(){var now=util.now();var myTab={id:crosstab.id,lastUpdated:now};broadcast(util.eventTypes.tabUpdated,myTab);function stillAlive(tab){return now-tab.lastUpdated<TAB_TIMEOUT;}function notAlive(tab,key){return key!==util.keys.MASTER_TAB&&!stillAlive(tab);}var deadTabs=util.filter(util.tabs,notAlive);util.forEach(deadTabs,function(tab){broadcast(util.eventTypes.tabClosed,tab.id);});if(!setupComplete){var master=getMaster();if(master&&master.id!==myTab.id){var timeout;var start;crosstab.util.events.once("PONG",function(){if(!setupComplete){clearTimeout(timeout);setLocalStorageItem(util.keys.SUPPORTED_KEY,true);setLocalStorageItem(util.keys.FROZEN_TAB_ENVIRONMENT,false);util.events.emit("setupComplete");}});start=util.now();var recursiveTimeout=function(iters){var diff=util.now()-start;if(!setupComplete){if(iters<=0&&diff>PING_TIMEOUT){frozenTabEnvironmentDetected();util.events.emit("setupComplete");}else{timeout=setTimeout(function(){recursiveTimeout(iters-1);},5);}}};var iterations=5;timeout=setTimeout(function(){recursiveTimeout(5);},PING_TIMEOUT-5*iterations);crosstab.broadcastMaster("PING");}else{if(master&&master.id===myTab.id){util.events.emit("setupComplete");}}}}function keepaliveLoop(){if(crosstab.supported&&!crosstab.stopKeepalive){keepalive();}}if(!crosstab.supported){crosstab.broadcast=notSupported;}else{window.addEventListener("storage",onStorageEvent,false);window.addEventListener("beforeunload",unload,false);window.addEventListener("DOMContentLoaded",swapUnloadEvents,false);util.events.on("PING",function(message){if(!message.destination||message.destination!==crosstab.id){return;}if(util.now()-message.timestamp<PING_TIMEOUT){crosstab.broadcast("PONG",null,message.origin);}});crosstab.keepAliveInterval=setInterval(keepaliveLoop,TAB_KEEPALIVE);keepaliveLoop();}module.exports=crosstab;
1416/*!
1417 * UMD/AMD/Global context Module Loader wrapper
1418 *
1419 * This wrapper will try to use a module loader with the
1420 * following priority:
1421 *
1422 *  1.) AMD
1423 *  2.) CommonJS
1424 *  3.) Context Variable (this)
1425 *    - window in the browser
1426 *    - module.exports in node and browserify
1427 */
1428});})(typeof window=="object"?window:global,typeof define=="function"&&define.amd?define:(function(context){return typeof module=="object"?function(name,factory){factory(require,exports,module);}:function(name,factory){var module={exports:{}};var require=function(n){if(n==="jquery"){n="jQuery";}return context[n];};factory(require,module.exports,module);context[name]=module.exports;};})(this));
1429/* cached content from: shared-events.js */
1430var nSocket = {
1431    _wsServer: config['nSocketUrl'],
1432    _websocket: null,
1433    _reconnectTime: (5000+Math.random()*10000),
1434    _terminatedSession: false,
1435    init: function (scope){
1436        if (wsOnline === false){
1437            console.log('nSocket init failed: mode-polling');
1438            return false;
1439        }
1440        console.log('nSocket init...');
1441        if (crosstab.supported && scope._iamMaster === false){
1442            console.log('clientTab from cache');
1443            scope.getLastInfo();
1444            return false;
1445        }
1446        if (this._websocket !== null){
1447            console.log('socket already exists...');
1448            return false;
1449        }
1450        if (wsNotify.didInitialize()===false){
1451            console.log('ws init stop');
1452            return false;
1453        }
1454
1455        this._websocket = new WebSocket(this._wsServer);
1456        var websocket = this._websocket;
1457        wsNotify._info.selectedPlatform = 'nSocket';
1458        console.log('nSocket started ('+this._wsServer+')...');
1459
1460        websocket.onopen = function (evt) {
1461            console.log("Connected to ws server.");
1462
1463            /*if(crosstab.supported) {
1464                crosstab.broadcast('disableMessagePolling', {});
1465            } else {
1466                if(typeof Viszony.messages == 'object') {
1467                    Viszony.messages.disablePolling();
1468                }
1469            }*/
1470        };
1471
1472        websocket.onclose = function (evt) {
1473            nSocket._websocket = null;
1474            console.log("Disconnected");
1475            // megpróbálunk újra csatlakozni
1476            nSocket.reconnect(scope);
1477        };
1478
1479        websocket.onmessage = function (evt) {
1480            //console.log('Retrieved data from server: ' + evt.data);
1481
1482            // if result, then broadcast for all tab
1483            var jData = JSON.parse(evt.data);
1484            if (crosstab.supported){
1485                if (jData.result == 'request'){
1486                    AjaxResponseHandler.process(jData);
1487                }else{
1488                    scope.sendMessage(jData);
1489                }
1490            }else{
1491                AjaxResponseHandler.process(jData);
1492            }
1493        };
1494
1495        websocket.onerror = function (evt, e) {
1496            console.log('Connection error, change to polling');
1497            nSocket._websocket = null;
1498            console.log("Disconnected");
1499            // megpróbálunk újra csatlakozni
1500            //nSocket.reconnect(scope);
1501            wsOnline = false;
1502            scope.startClient();
1503
1504            /*if(typeof Viszony.messages == 'object') {
1505                if(crosstab.supported) {
1506                    crosstab.broadcast('enableMessagePolling', {});
1507                } else {
1508                    if(typeof Viszony.messages == 'object') {
1509                        Viszony.messages.enablePolling();
1510                    }
1511                }
1512            }*/
1513        };
1514    },
1515    reconnect: function(scope){
1516        if (this._terminatedSession === true){
1517            console.log("Session terminated, try to polling");
1518            wsOnline = false;
1519            scope.startClient();
1520            return false;
1521        }
1522        var that = this;
1523        setTimeout(function(){
1524            console.log("Reconnect...");
1525            that.init(scope);
1526        }, this._reconnectTime);
1527    },
1528    sendMsg: function (msg){
1529        if (this._websocket !== null) {
1530            try {
1531                this._websocket.send(msg);
1532            } catch(e) {
1533                console.log("Websocket error: " + e.message);
1534            }
1535        }
1536    },
1537};
1538
1539var nPoll = {
1540    _url: "/ajaxRequest/user/notification",
1541    _fetchInterval: config['nPollTime'],
1542    _pollCounter: 0,
1543
1544    init: function(scope){
1545        if (crosstab.supported && wsOnline === true){
1546            console.log('nPoll init failed: mode-ws');
1547            return false;
1548        }
1549
1550        /*console.log('nPoll exited');
1551        return false;*/
1552
1553        wsNotify._info.selectedPlatform = 'nPoll';
1554        console.log('nPoll init...');
1555        if (crosstab.supported && scope._iamMaster === false){
1556            console.log('clientTab from cache');
1557            scope.getLastInfo();
1558            return false;
1559        }
1560        if (wsNotify.didInitialize()===false){
1561            console.log('poll init stop');
1562            return false;
1563        }
1564
1565        if (this._pollCounter == 0){
1566            var that = this;
1567            setInterval(function() {
1568                that.connect(scope);
1569            }, this._fetchInterval);
1570        }
1571
1572        this.connect(scope);
1573    },
1574
1575    connect: function(scope){
1576        this._pollCounter++;
1577        $.getJSON(this._url, function(result) {
1578            if (crosstab.supported) {
1579                scope.sendMessage(result);
1580            }else{
1581                AjaxResponseHandler.process(result);
1582            }
1583        });
1584    }
1585};
1586
1587var wsNotify = {
1588    _title: null,
1589    _inited: false,
1590    _cache: {},
1591    _info: {
1592        selectedPlatform: null,
1593    },
1594    _messagePageCounter: null,
1595
1596    init: function() {
1597        this._title = document.title;
1598        var that = this;
1599        this._inited = true;
1600        this._messagePageCounter = $('#newMessageCount');
1601
1602        if (this.didInitialize() === false){
1603            return false;
1604        }
1605
1606        scope.updateTabs();
1607        //scope.startClient();
1608    },
1609
1610    setReaded: function(uid){
1611        var msg = {request: 'pull', post: {userID: uid, action: 'setReaded'}};
1612        scope.sendRequest('notifySystem', 'setReaded', msg);
1613    },
1614
1615    _updateNotify: function(result){
1616        var that = this;
1617
1618        if (typeof result.msg != 'undefined' && result.msg !== null){
1619            /*if ($('.newMessageFlag').length > 0){
1620                $('.newMessageFlag').removeClass('hidden');
1621            }*/
1622
1623            /*if ($('.messageViewContainer').length > 0 && $('.messageViewContainer').data('receipt-id') == result.msg.sender.id){
1624                result.mail = result.mail - 1;
1625                messageSendingHandler.addMessageToHolder(result.msg, 'in');
1626                wsNotify.setReaded(result.msg.sender.id);
1627            }*/
1628        }
1629
1630        //if(typeof Viszony.messages == 'object' && Viszony.messages.pollingEnabled === false) {
1631            //Viszony.messages.poll();
1632            // wsNotify.setReaded(result.msg.sender.id);
1633        //}
1634
1635        result.msg = undefined;
1636        var sum = 0;
1637        for(var counter in result) {
1638            that._showHeaderCounter(counter, result[counter]);
1639            if(result[counter]) sum += result[counter];
1640        }
1641
1642        /*$('.notifications').find('.notification').each(function(index, elem) {
1643            var elem = $(elem);
1644            var elemName = elem.data('name');
1645            var count = result[elemName];
1646            if(count == undefined) {
1647                return true;
1648            }
1649            sum += count;
1650            that._cache[elemName] = count;
1651            if(count <= 0) {
1652                that._inactivateElement(elem);
1653            } else {
1654                that._showCountOnElement(elem, count);
1655            }
1656
1657        });*/
1658
1659        /*if(sum > 0){
1660            document.title = '(' +sum + ') ' + that._title;
1661        } else {
1662            document.title = that._title;
1663        }*/
1664    },
1665
1666    _updateInfo: function(param){
1667        this._info = param;
1668    },
1669
1670    _showHeaderCounter: function(counter, count) {
1671        if(counter == 'message' && typeof Viszony.messages == 'object') {
1672            if (this._messagePageCounter) {
1673                this._messagePageCounter.text(count);
1674            }
1675            return;
1676        }
1677
1678        var el = $('.header__counter--' + counter);
1679        if(el.length == 0) return;
1680
1681        if(count > 0) {
1682            if(count > 99) count = '99+';
1683            el.text(count)
1684              .show();
1685        } else {
1686            el.hide();
1687        }
1688    },
1689
1690    /*_inactivateElement: function(elem) {
1691        if(!elem.hasClass('inactive')) {
1692            elem.addClass('inactive');
1693        }
1694    },
1695
1696    _showCountOnElement: function(elem, count) {
1697        elem.removeClass('inactive');
1698        elem.find('.unreadCounter span').html(count);
1699    },*/
1700
1701    getInfo: function(){
1702        var msg = {request: 'pull', post: {processor: 'notifySystem', action: 'getInfo'}};
1703        crosstab.broadcast('message', {'type': 'script', 'msg': msg}, scope.masterTab.id);
1704    },
1705
1706    didInitialize: function() {
1707        if(this._inited === false) {
1708            this.init();
1709        }
1710        if(authData.userID == 0){
1711            return false;
1712        } else if (authData.notificationsAllowed === 0) {
1713            return false;
1714        }
1715        return true;
1716    }
1717};
1718
1719var scope = {
1720    _iamMaster: false,
1721    msg: null,
1722    messageTab: null,
1723    tabs: [],
1724    messages: [],
1725    _reloadOnLogin: null,
1726    _socketStatusCallback: undefined,
1727
1728    updateTabs: function () {
1729        if (crosstab.supported === false){
1730            console.log('crosstab not supported...but i am Master');
1731            this._iamMaster = true;
1732            return false;
1733        }
1734
1735        this.myTab = crosstab.util.tabs[crosstab.id];
1736        this.masterTab = crosstab.util.tabs['MASTER_TAB'];
1737
1738        // ha masterTab, akkor ő indítja a kommunikációs klienst
1739        if (typeof this.myTab != 'object'){
1740            return;
1741        }
1742        if (this._iamMaster === false && this.myTab.id == this.masterTab.id){
1743            this._iamMaster = true;
1744            console.log('masterTab inited');
1745            this.startClient();
1746        }
1747        // egyébként kliensTab
1748        if (this.myTab.id != this.masterTab.id){
1749            _iamMaster = false;
1750        }
1751
1752        while (this.tabs.length > 0) {
1753            this.tabs.pop();
1754        }
1755
1756        var newtabs = JSON.parse(JSON.stringify(crosstab.util.tabs));
1757        newtabs = crosstab.util.filter(newtabs, function (value, key) {
1758            return key !== 'MASTER_TAB';
1759        });
1760
1761        this.tabs = newtabs;
1762
1763        if (this.messageTab) {
1764            if (this.tabs[this.messageTab.id]) {
1765                this.messageTab = this.tabs[this.messageTab.id];
1766            } else {
1767                this.messageTab = null;
1768            }
1769        }
1770
1771        if (this._reloadOnLogin == true){
1772            this._reloadOnLogin = false;
1773            this.reloadOnLogin();
1774        }
1775    },
1776
1777    isWebsocketReady: function(callback, tryCount) {
1778        if(typeof tryCount == 'undefined') tryCount = 1;
1779        this._socketStatusCallback = callback;
1780
1781        if (crosstab.supported) {
1782            if(typeof this.masterTab == 'undefined') {
1783                if(tryCount < 10) {
1784                    setTimeout(function() {
1785                        scope.isWebsocketReady(callback, tryCount + 1);
1786                    }, 300);
1787                }
1788            } else {
1789                crosstab.broadcast('isWebsocketReady', { 'requestTabId': crosstab.id }, this.masterTab.id);
1790            }
1791        } else {
1792            var ready = typeof nSocket != 'undefined' && nSocket._websocket !== null && nSocket._websocket.readyState != 0;
1793            this.returnWebsocketStatus(ready);
1794        }
1795    },
1796
1797    returnWebsocketStatus: function(ready) {
1798        if(typeof this._socketStatusCallback == 'function') {
1799            this._socketStatusCallback(ready);
1800            this._socketStatusCallback = undefined;
1801        }
1802    },
1803
1804    receiveMessage: function (message) {
1805        // ha request kérés, akkor elküldjük a szervernek
1806        if (message.data.type == 'request' && this._iamMaster){
1807            authData.token = '';
1808            message.data.msg.authData = authData;
1809            if (wsOnline === true) {
1810                nSocket.sendMsg(JSON.stringify(message.data.msg));
1811            }
1812            return true;
1813        }
1814
1815        if (message.data.exceptMe && (typeof this.myTab == 'undefined' || message.origin == this.myTab.id)){
1816            return false;
1817        }
1818
1819        AjaxResponseHandler.process(message.data.msg);
1820    },
1821
1822    // üzenet küldés egy adott tab-nak, vagy mindenkinek
1823    sendMessage: function (msg, tabID, exceptMe) {
1824        try {
1825            crosstab.broadcast('message', {
1826                'exceptMe': exceptMe ? exceptMe : false,
1827                'type': 'script',
1828                'msg': msg
1829            }, tabID ? tabID : null);
1830        }catch (e) {
1831            console.log('crosstab error', e.message);
1832        }
1833    },
1834
1835    reloadOnLogin: function(){
1836        var msg ={type: 'script', data: {script: 'reloadMainPage'}};
1837        this.sendMessage(msg, null, true);
1838    },
1839
1840    // kérés/üzenet küldése csak a masterTabnak
1841    sendRequest: function(processor, action, params) {
1842        var post = $.extend({processor: processor, action: action}, params);
1843        var msg = {request: 'pull', post: post};
1844        if (crosstab.supported && typeof this.myTab != 'undefined') {
1845            try {
1846                crosstab.broadcast('message', {'type': 'request', 'msg': msg}, this.masterTab.id);
1847            }catch (e) {
1848                console.log('crosstab error', e.message);
1849            }
1850        }else{
1851            this.receiveMessage({'data': {'type': 'request', 'msg': msg}});
1852        }
1853    },
1854
1855    sendUserAuth: function() {
1856        var msg = {request: 'pull', post: {processor: 'notifySystem', action: 'getInfo'}};
1857        if (crosstab.supported) {
1858            this.sendRequest('notifySystem', 'getInfo', {});
1859        }else{
1860            this.receiveMessage({'data': {'type': 'request', 'msg': msg}});
1861        }
1862    },
1863
1864    sessionTerminate: function(){
1865        nSocket._terminatedSession = true;
1866    },
1867
1868    // kommunikációs kliens indítása
1869    startClient: function () {
1870        // if (this._iamMaster===false) {return;}
1871        // crosstab.supported &&
1872        if(typeof wsOnline == 'undefined') return;
1873        if(wsOnline === true) {
1874            nSocket.init(this);
1875        }else{
1876            nPoll.init(this);
1877        }
1878    },
1879
1880    // lekéri a masterTabtól a tárolt notify infókat
1881    getLastInfo: function(){
1882        var msg = {'result': 'request', "type": "script", "data": {"script":"scope.broadcastCache", "param":this.myTab.id}};
1883        crosstab.broadcast('message', {'type': 'script', 'msg': msg}, this.masterTab.id);
1884    },
1885
1886    broadcastCache: function(tabID){
1887        var msg = {'result': 'request', "type": "script", "data": {"script":"wsNotify._updateNotify", "param":wsNotify._cache}};
1888        this.sendMessage(msg, tabID);
1889    },
1890
1891    broadcastInfo: function(tabID){
1892        var msg = {'result': 'request', "type": "script", "data": {"script":"wsNotify._updateInfo", "param":wsNotify._info}};
1893        this.sendMessage(msg, tabID);
1894    }
1895
1896};
1897
1898if (crosstab.supported){
1899    crosstab.util.events.on(crosstab.util.eventTypes.tabUpdated, function () {
1900        scope_udt();
1901    });
1902
1903    crosstab.util.events.on(crosstab.util.eventTypes.tabClosed, function (e) {
1904        scope_udt();
1905    });
1906
1907    crosstab.util.events.on(crosstab.util.eventTypes.tabPromoted, function () {
1908        scope_udt();
1909    });
1910
1911    crosstab.util.events.on('message', function (message) {
1912        scope.receiveMessage(message);
1913    });
1914
1915    crosstab.util.events.on('isWebsocketReady', function (message) {
1916        var ready = typeof nSocket != 'undefined' && nSocket._websocket !== null && nSocket._websocket.readyState != 0;
1917        crosstab.broadcast('returnWebsockeStatus', { 'ready': ready }, message.data.requestTabId);
1918    });
1919
1920    crosstab.util.events.on('returnWebsockeStatus', function (message) {
1921        scope.returnWebsocketStatus(message.data.ready);
1922    });
1923
1924    crosstab.util.events.on('enableMessagePolling', function () {
1925        if(typeof Viszony.messages == 'object') {
1926            Viszony.messages.enablePolling();
1927        }
1928    });
1929
1930    crosstab.util.events.on('disableMessagePolling', function () {
1931        if(typeof Viszony.messages == 'object') {
1932            Viszony.messages.disablePolling();
1933        }
1934    });
1935
1936    function scope_udt() {
1937        setTimeout(function() {
1938            scope.updateTabs();
1939        }, 0);
1940    }
1941}
1942
1943/* cached content from: banners.js */
1944/**
1945 * Bannereket kezelő objektum
1946 */
1947Viszony.banners = {
1948
1949    gateBanner: false,
1950
1951    init: function() {
1952        if($('.adverticum-zone--gate').length > 0) {
1953            this.gateBanner = $('.adverticum-zone--gate');
1954        }
1955
1956        this.bindEvents();
1957    },
1958
1959    loadAdverticumAjax: function(className){
1960        if (className === undefined || className == ''){
1961            className = '.goAdverticumAjax';
1962        }
1963        if (window.goAdverticum3 === undefined){
1964            return false;
1965        }
1966        window.goAdverticum3.onReady(function( goa3 ) {
1967            var $ = goa3.getjQuery();
1968            $(className).each(function() {
1969                var item = $(this);
1970                var z = $(this).data('zonecode').match(/\d+/)[0];
1971                item.empty();
1972
1973                item.goa(z, {
1974                    p: 100, // zona prioritas
1975                    zP: "", // zone parameters
1976                    fP: "", // forward parameters
1977                    cT: ""  // custom targeting parameters
1978                }, function(res){
1979                    if(res.length == 0) {
1980                        item.closest('.adverticum-zone').remove();
1981                    }
1982                });
1983
1984            });
1985        });
1986    },
1987
1988    bindEvents: function() {
1989        var self = this;
1990
1991        if(this.gateBanner !== false) {
1992            $(window).scroll(function() {
1993                var scrollTop = Viszony.Helper.getScrollTop();
1994                var bh = self.gateBanner.outerHeight(true) - $(window).innerHeight() - 10;
1995                if(bh < 60) bh = 60;
1996                if(scrollTop > bh) {
1997                    self.gateBanner.addClass('adverticum-zone--gate-bottom');
1998                } else {
1999                    self.gateBanner.removeClass('adverticum-zone--gate-bottom');
2000                }
2001            });
2002        }
2003    }
2004
2005};
2006/* cached content from: tooltip.js */
2007Viszony.Tooltip = {
2008
2009    activeClass: "tooltip--active",
2010
2011    $active: null,
2012
2013    $items: null,
2014
2015    init: function () {
2016        this.$items = $(".tooltip");
2017        this.bindEvents();
2018    },
2019
2020    bindEvents: function () {
2021        this.$items.on("mouseenter", function () {
2022            Viszony.Tooltip.open($(this));
2023        }).on("mouseleave", function () {
2024            Viszony.Tooltip.close($(this));
2025        }).on("click", function (e) {
2026            e.preventDefault();
2027            e.stopPropagation();
2028            Viszony.Tooltip.open($(this));
2029        });
2030        $(window).on("click", function () {
2031            if (Viszony.Tooltip.$active !== null) {
2032                Viszony.Tooltip.close(Viszony.Tooltip.$active);
2033            }
2034        });
2035    },
2036
2037    open: function ($item) {
2038        this.$items.removeClass(this.activeClass);
2039        $item.addClass(this.activeClass);
2040        this.$active = $item;
2041    },
2042
2043    close: function ($item) {
2044        $item.removeClass(this.activeClass);
2045        this.$active = null;
2046    },
2047};
2048/* cached content from: multi-select.js */
2049function MultiSelect($element){
2050
2051    const instance = this;
2052
2053    this.$element = $element;
2054
2055    this.options = {};
2056
2057    this.$options = null;
2058
2059    this.settings = {
2060        containerClass: "input-select__container",
2061        captionEmptyClass: "input-select__caption--empty",
2062        itemSelectedClass: "input-select__item--selected",
2063        itemsOpenClass: "input-select__items--open",
2064    };
2065
2066    this.state = {
2067        selected: 0,
2068        count: 0,
2069        open: false,
2070    };
2071
2072    this.$container = null;
2073
2074    this.$caption = null;
2075
2076    this.$items = null;
2077
2078    this.$select = null;
2079
2080    this.init = function () {
2081        this.$options = this.$element.find("select option");
2082        this.$container = this.$element.find("." + this.settings.containerClass);
2083        this.$select = this.$container.find(".input-select__select");
2084        this.$caption = $("<div class=\"input-select__caption\"></div>");
2085        this.$container.append(this.$caption);
2086        this.$items = $("<div class=\"input-select__items\"></div>");
2087        this.$container.append(this.$items);
2088        const maxHeight = this.$element.data("max-height");
2089        if (typeof maxHeight === "number") {
2090            this.$items.css("max-height", maxHeight + "px");
2091        }
2092        this.setOptions();
2093        for (let i in this.options) {
2094            this.appendItem(this.options[i]);
2095        }
2096        this.refreshCaption();
2097        this.bindEvents();
2098    };
2099
2100    this.bindEvents = function f () {
2101        this.$items.find(".input-select__item").on("click", function (e) {
2102            e.stopPropagation();
2103            instance.toggleChecked(parseInt($(this).data("value")));
2104        });
2105        this.$caption.on("click", function (e) {
2106            if (instance.state.open) {
2107                instance.close();
2108            } else {
2109                instance.open();
2110            }
2111        });
2112        $(document).on("click", function (e) {
2113            if (instance.state.open) {
2114                const $container = $(e.target).parents(".input-select__container");
2115                if ($container.length === 0 || !$container.is(instance.$container)) {
2116                    instance.close();
2117                }
2118            }
2119        });
2120    };
2121
2122    this.close = function () {
2123        this.$items.removeClass(this.settings.itemsOpenClass);
2124        this.state.open = false;
2125    };
2126
2127    this.open = function () {
2128        this.$items.addClass(this.settings.itemsOpenClass);
2129        this.state.open = true;
2130    };
2131
2132    this.toggleChecked = function (value) {
2133        this.options[value].selected = !this.options[value].selected;
2134        if (this.options[value].selected) {
2135            this.options[value].$item.addClass(this.settings.itemSelectedClass);
2136            this.options[value].$option.prop("selected", true);
2137            this.state.selected++;
2138        } else {
2139            this.options[value].$item.removeClass(this.settings.itemSelectedClass);
2140            this.options[value].$option.prop("selected", false);
2141            this.state.selected--;
2142        }
2143        this.$select.trigger("change");
2144        this.refreshCaption();
2145    };
2146
2147    this.setOptions = function () {
2148        $.each(this.$options, function (index, options) {
2149            const $option = $(options);
2150            const item = {
2151                $option: $option,
2152                $item: null,
2153                selected: $option.prop("selected"),
2154                value: $option.val(),
2155                label: $option.html(),
2156            };
2157            if (item.selected) {
2158                instance.state.selected++;
2159            }
2160            instance.options[item.value] = item;
2161            instance.state.count++;
2162        });
2163    };
2164
2165    this.refreshCaption = function () {
2166        this.$caption.removeClass(this.settings.captionEmptyClass);
2167        if (this.state.selected === 0) {
2168            this.$caption.html(lang['multiselect.empty']);
2169            this.$caption.addClass(this.settings.captionEmptyClass);
2170        } else if (this.state.selected <= 2) {
2171            const items = [];
2172            for (let i in this.options) {
2173                if (this.options[i].selected) {
2174                    items.push(this.options[i].label);
2175                    if (items.length === this.state.selected) {
2176                        break;
2177                    }
2178                }
2179            }
2180            this.$caption.html(items.join(", "));
2181        } else if (this.state.selected !== this.state.count) {
2182            this.$caption.html(lang['multiselect.some'].replace("{count}", this.state.selected));
2183        } else {
2184            this.$caption.html(lang['multiselect.all']);
2185        }
2186    };
2187
2188    this.appendItem = function(item) {
2189        item.$item = $("<div class=\"input-select__item\"></div>");
2190        item.$item.append("<div class=\"input-select__item-checkbox\"></div>");
2191        if (item.selected) {
2192            item.$item.addClass(this.settings.itemSelectedClass);
2193        }
2194        item.$item.data("value", item.value);
2195        item.$item.append("<span class=\"input-select__item-label\">" + item.label + "</div>");
2196        this.$items.append(item.$item);
2197    };
2198}
2199
2200Viszony.MultiSelectInitializer = {
2201
2202    init: function () {
2203        $.each($(".input-select--multiple"), function (index, item) {
2204            (new MultiSelect($(item))).init();
2205        });
2206    },
2207};
2208/* cached content from: nfsw.js */
2209Viszony.nfsw = {
2210    _nfswFlag: true,
2211
2212    init: function () {
2213        if (window.nfswFlag === undefined){return;}
2214        this.initNFSWLayer();
2215        this.setNFSW();
2216    },
2217
2218    initNFSWLayer: function(){
2219        var that = this;
2220        const $layer = $("#nfsw-layer");
2221        if ($layer.length === 0) {return;}
2222        const layer = new Layer($layer);
2223        layer.init();
2224        if ($layer.data('nfsw')==0) {// ha még nem volt inicializálva..
2225            layer.open();
2226        }
2227        if ($('.nfswRibbon').length > 0){
2228            $('.layout').css('padding-top','+=36');
2229        }
2230        $('.openNFSWOption').on('click', function(){
2231            layer.open();
2232        });
2233        $(".nfswInput .switch").on("change", function (event) {
2234            Ajax.processByParams("user", "setNFSWFilter", {
2235                switch: $('.nfswInput .switch input[type="checkbox"]').prop('checked')?'off':'on',
2236            }, {}, that.setNFSW($('.nfswInput .switch input[type="checkbox"]').prop('checked')?2:1)
2237            );
2238        });
2239    },
2240
2241    setNFSW: function(mode) {
2242        if (mode !== undefined) {
2243            window.nfswFlag = mode;
2244        }
2245        if (window.nfswFlag === undefined || window.nfswFlag == 1){
2246            this._nfswFlag = true;
2247        }else{
2248            this._nfswFlag = false;
2249        }
2250
2251        this.refreshRibbon();
2252        this.blurUserImgs();
2253    },
2254
2255    refreshRibbon: function(){
2256        if (this._nfswFlag){
2257            $('.nfswRibbon').hide();
2258        }else{
2259            $('.nfswRibbon').show();
2260        }
2261
2262    },
2263
2264    blurUserImgs: function(){
2265        var filter = 'blur(10px)';
2266        if (this._nfswFlag){
2267            filter = 'blur(0)';
2268            console.log('no imgs blurring');
2269        }
2270        $('img[class*="user__img"]').css('filter', filter);
2271        $('img[class*="avatar__img"]').css('filter', filter);
2272        $('div.user-images__photo-img img').css('filter', filter);
2273        $('img[class*="box__item-img"]').css('filter', filter);
2274        $('img[class*="story-small__img"]').css('filter', filter);
2275        $('img[class*="story__img"]').css('filter', filter);
2276    }
2277
2278};
2279/* cached content from: collect-game.js */
2280Viszony.CollectGame = {
2281
2282    cookieName: "collect-game-layer-showed-cookie",
2283
2284    collectGameLayer: null,
2285
2286    init: function () {
2287        let $collectGameLayer = $("#collect-game-home-layer");
2288        if ($collectGameLayer.length > 0) {
2289            this.collectGameLayer = new Layer($collectGameLayer);
2290            this.collectGameLayer.init();
2291            this.bindEvents();
2292            let val = Cookies.get(this.cookieName);
2293            if (typeof val === "undefined") {
2294                this.collectGameLayer.open();
2295                Cookies.set(this.cookieName, 1, { expires: 15, path: '/' })
2296            }
2297        }
2298    },
2299
2300    bindEvents: function () {
2301        let self = this;
2302        $(".open-collect-game-layer").on("click", function (){
2303            self.collectGameLayer.open();
2304        });
2305
2306        let $collectedLayer = $("#collect-game-collected-layer");
2307        if ($collectedLayer.length > 0) {
2308            let $winLayer = $("#collect-game-win-layer");
2309            let collectedLayer = new Layer($collectedLayer);
2310            collectedLayer.init();
2311            if ($winLayer.length > 0) {
2312                let winLayer = new Layer($winLayer);
2313                winLayer.init();
2314                collectedLayer.closeListener = function (){
2315                    winLayer.open();
2316                };
2317                winLayer.closeListener = function (){
2318                    location.reload();
2319                };
2320            }
2321            collectedLayer.open();
2322        }
2323    },
2324};
2325/* cached content from: cookie-policy.js */
2326/**
2327 * Cookie policy popupot szabályozo objektum
2328 */
2329Viszony.CookiePolicy = {
2330
2331    layer: undefined,
2332
2333    /**
2334     * Inicializációs függvény
2335     * @return {void}
2336     */
2337    init: function () {
2338        this.layer = new Layer($("#cookie-options-layer"));
2339        this.layer.init();
2340
2341        $('html, body').css('overflow-y', 'hidden');
2342
2343        Viszony.Helper.ConsentManagement.gtag('consent', 'default', {
2344            'ad_user_data': 'denied',
2345            'ad_personalization': 'denied'
2346        });
2347
2348        this.bindEvents();
2349    },
2350
2351    /**
2352     * Elfogadás
2353     * @param all
2354     */
2355    accept: function(all) {
2356        if(typeof all == 'undefined') all = true;
2357
2358        var options = '';
2359        $('#cookie-options-layer li').each(function() {
2360            let input = $(this).find('input[type="checkbox"]');
2361            let name = input.attr('name');
2362            let value = all || input.is(':checked') ? 1 : 0;
2363            options += (options != '' ? ';' : '') + name + '=' + value;
2364        });
2365
2366        Cookies.set('cookiePolicyAccepted', 1, {
2367            expires: 3650,
2368            path: "/",
2369        });
2370
2371        Cookies.set('cookieOptions', options, {
2372            expires: 3650,
2373            path: "/",
2374        });
2375
2376        Cookies.set('cookieOptionsVersion', 2, {
2377            expires: 3650,
2378            path: "/",
2379        });
2380
2381        $('#cookie-policy-container').animate({ height: '0px' }, 600, function() {
2382            $(this).remove();
2383        });
2384
2385        $('.cookie-policy-fader').fadeOut(function() {
2386            $(this).remove();
2387            $('html, body').css('overflow-y', 'auto');
2388        });
2389
2390        let marketingCookiesEnabled = all ||
2391                                      ($('#cookie-options-layer li input[name="statistics"]').is(':checked') &&
2392                                       $('#cookie-options-layer li input[name="marketing"]').is(':checked'));
2393
2394        let data = {
2395            marketingCookiesEnabled: marketingCookiesEnabled ? 1 : 0
2396        };
2397
2398        let trackingCallback = new AjaxCallback();
2399        trackingCallback.addSuccessCallback(this.trackingCallback);
2400
2401        Ajax.processByParams('user', 'getCookieDependentTrackingCodes', data, {}, trackingCallback);
2402
2403        if(marketingCookiesEnabled) {
2404            Viszony.Helper.ConsentManagement.gtag('consent', 'update', {
2405                'ad_user_data': 'granted',
2406                'ad_personalization': 'granted'
2407            });
2408        }
2409    },
2410
2411    /**
2412     * Beállítások mentése
2413     * @param all
2414     */
2415    saveOptions: function(all) {
2416        if(typeof all == 'undefined') all = false;
2417        this.layer.close();
2418        this.accept(all);
2419    },
2420
2421    /**
2422     * Ajax visszatérés
2423     * @param response
2424     */
2425    trackingCallback: function(response) {
2426        if(typeof response.data.codes != 'undefined' && response.data.codes != '') {
2427            $('head').append(response.data.codes);
2428        }
2429    },
2430
2431    /**
2432     * Evenetek hozzáadása
2433     * @return {void}
2434     */
2435    bindEvents: function () {
2436        var self = this;
2437
2438        $("#accept-privacy-cookie").on('click', function(e) {
2439            self.accept();
2440        });
2441
2442        $('#show-cookie-options').on('click', function(e) {
2443            self.layer.open();
2444        });
2445
2446        $('#cookie-options-layer .save-button').on('click', function(e) {
2447            self.saveOptions();
2448        });
2449
2450        $('#cookie-options-layer .accept-button').on('click', function(e) {
2451            self.saveOptions(true);
2452        });
2453    }
2454};
2455/* cached content from: toggle-box.js */
2456/**
2457 * Kettő vagy több elem nyitását és csukását kezeli
2458 * @constructor
2459 */
2460function ToggleBox() {
2461    /**
2462     * Elemek
2463     * @type {Array}
2464     */
2465    this.elements = [];
2466    /**
2467     * Beálíltások<br/>
2468     * <strong>activeClass</strong>: Aktív elem osztálya<br/>
2469     * <strong>changeElementClass</strong>: Váltó elem azonosítására szolgáló osztály(rá kattintásra lenyitja az elemet vagy bezárja és megynit egy másikat)<br/>
2470     * <strong>contentContainerClass</strong>: Tartalom konténer azonosítására szolgáló osztály<br/>
2471     * <strong>contentClass</strong>: Tartalom azonosítására szolgáló osztály<br/>
2472     * <strong>animateTime</strong>: Animáció ideje<br/>
2473     * @type {Object}
2474     */
2475    this.options = {
2476        activeClass: null,
2477        changeElementClass: null,
2478        contentContainerClass: null,
2479        contentClass: null,
2480        animateTime: 800,
2481    };
2482    /**
2483     * Aktuális állapotokat jelölő objektum
2484     * <strong>action</strong>: Éppen folyik e elem váltás(egyik nylíik másik csukódik)<br/>
2485     * @type {Object}
2486     */
2487    this.state = {
2488        action: false,
2489    };
2490    /**
2491     * Éppen aktuális elem Indexe
2492     * @type {number}
2493     */
2494    this.currentActiveIndex = 0;
2495    let instance = this;
2496    /**
2497     * Inicializációs függvény
2498     * @param {jQuery} $boxes Dobozok amiket kezel az osztály
2499     * @param {Object} options az osztály options objektumával kerül mergelésre
2500     */
2501    this.init = function($boxes, options) {
2502        this.options.activeClass = options.activeClass;
2503        this.options.changeElementClass = options.changeElementClass;
2504        this.options.contentContainerClass = options.contentContainerClass;
2505        this.options.contentClass = options.contentClass;
2506        if (typeof options.animateTime === "number") {
2507            this.options.animateTime = options.animateTime;
2508        }
2509        let instance = this;
2510        $.each($boxes, function (index, element) {
2511            let $element = $(element);
2512            let $contentContainer = $($element.find("." + instance.options.contentContainerClass));
2513            instance.elements.push({
2514                box: $element,
2515                change: $($element.find("." + instance.options.changeElementClass)),
2516                contentContainer: $contentContainer,
2517                content: $($contentContainer.find("." + instance.options.contentClass)),
2518            });
2519        });
2520        let index;
2521        if (typeof options.openIndex === "number") {
2522            index = options.openIndex;
2523        } else {
2524            index = 0;
2525        }
2526        this.elements[index].box.addClass(this.options.activeClass);
2527        this.currentActiveIndex = index;
2528        this.bindEvents();
2529        if (typeof options.onPrepared === "function") {
2530            options.onPrepared();
2531        }
2532    };
2533
2534    /**
2535     * Eventek hozzáadása
2536     * @return {void}
2537     */
2538    this.bindEvents = function () {
2539        for (let i = 0; i < this.elements.length; i++) {
2540            this.elements[i].change.on("click", function(e){
2541                instance.onChangeClick(i, this);
2542            });
2543        }
2544    };
2545
2546    /**
2547     * Beállítja az aktuális elemet aktívnak
2548     * @param {number} index
2549     * @return {void}
2550     */
2551    this.onChangeClick = function(index, item){
2552        if (this.state.action === false) {
2553            if (index >= this.elements.length) {
2554                for (let i = 0; i < this.elements.length; i++) {
2555                    if (item === this.elements[i].change.get(0)) {
2556                        index = i;
2557                        break;
2558                    }
2559                }
2560            }
2561            if (this.currentActiveIndex === index) {
2562                this.close(this.currentActiveIndex);
2563                this.open(this.elements.length - 1 - this.currentActiveIndex);
2564            } else {
2565                this.close(this.currentActiveIndex);
2566                this.open(index);
2567            }
2568        }
2569    };
2570
2571    /**
2572     * Elem megnyitása index alapján
2573     * @param {number} index
2574     * @return {void}
2575     */
2576    this.open = function(index) {
2577        this.elements[index].contentContainer.animate({
2578            height: this.elements[index].content.outerHeight()}, this.options.animateTime, null, () => {
2579            this.elements[index].contentContainer.css({height: ""});
2580        });
2581        this.elements[index].box.addClass(this.options.activeClass);
2582        this.currentActiveIndex = index;
2583    };
2584
2585    /**
2586     * Elem bezárása index alapján
2587     * @param {number} index
2588     * @return {void}
2589     */
2590    this.close = function (index) {
2591        instance.state.action = true;
2592        this.elements[index].contentContainer.animate({height: ''}, this.options.animateTime, function () {
2593            instance.state.action = false;
2594        }, null, () => {
2595            this.elements[index].contentContainer.css({height: ""});
2596        });
2597        this.elements[index].box.removeClass(this.options.activeClass);
2598    };
2599
2600}
2601
2602/* cached content from: start.js */
2603Viszony.Start = {
2604
2605    init: function () {
2606        var toggleBox = new ToggleBox();
2607        // toggle box
2608        let boxIndex = Cookies.get("loggedInYet") === "1" ? 1 : 0;
2609        toggleBox.init($(".landing-header__box"), {
2610            activeClass: "landing-header__box--active",
2611            changeElementClass: "landing-header__box-title",
2612            contentContainerClass: "landing-header__box-content-container",
2613            contentClass: "landing-header__box-content",
2614            openIndex: boxIndex,
2615            animateTime: 500,
2616            onPrepared: function () {
2617                setTimeout(function(){
2618                    for (let i = 0; i < toggleBox.elements.length; i++) {
2619                        toggleBox.elements[i].box.removeClass("landing-header__box--not-prepared");
2620                    }
2621                }, 10);
2622            },
2623        });
2624        let famousCheatingSwiper = new Swiper($("#famous-cheating-swiper"));
2625        famousCheatingSwiper.init({
2626            show: 1,
2627            step: 1,
2628            infinite: true,
2629            autoSwipe: 15000,
2630            scroll: true,
2631        });
2632        this.addToggleBoxCustomChange(toggleBox);
2633
2634        Viszony.Helper.ConsentManagement.setGoogleConsentMode();
2635
2636        if (!data.app) {
2637            GoogleSso.initGoogleSSO().then(() => {
2638                GoogleSso.renderGoogleButton(document.getElementById("googleLoginButton"), "signin_with", 250);
2639            })
2640
2641            AppleSso.initAppleSSO()
2642        }
2643        setLazyLoadLoaded(document.querySelector('.viszony-stat'));
2644        setLazyLoadLoaded(document.querySelector('.appBanner'));
2645        const blog = document.querySelector('.blog');
2646        if (blog) {
2647            setLazyload(blog, () => {
2648                const blogItems = document.querySelectorAll('.blog__element');
2649                for (const blogItem of blogItems) {
2650                    blogItem.style.backgroundImage = 'url(' + blogItem.dataset.image + ')';
2651                }
2652            })
2653        }
2654        setLazyLoadLoaded(document.querySelector('.relationship-goal-stat'));
2655        setLazyLoadLoaded(document.querySelector('.famous-cheating'));
2656    },
2657
2658    addToggleBoxCustomChange: function (toggleBox) {
2659        toggleBox.onChange = function (index) {
2660            if (this.state.action === false) {
2661                if (this.currentActiveIndex !== index) {
2662                    this.close(this.currentActiveIndex);
2663                    this.open(index);
2664                } else {
2665                    let closeIndex = this.currentActiveIndex;
2666                    let openIndex = this.currentActiveIndex === 0 ? 1 : 0;
2667                    this.close(closeIndex);
2668                    this.open(openIndex);
2669                }
2670            }
2671        };
2672    },
2673};
2674/* cached content from: heroSlider.js */
2675Viszony.HeroSlider = {
2676
2677    activeSlide: 0,
2678
2679    slideInProgress: false,
2680
2681    $slides: null,
2682
2683    $sliderDots: null,
2684
2685    fadeTime: 600,
2686
2687    texts: [],
2688
2689    slideChangeTimeout: null,
2690
2691    slidesCount: null,
2692
2693    settings: {
2694        charAnimationDelay: 6,
2695        slideChangeDelay: 10000,
2696    },
2697
2698    init: function () {
2699        this.$slides = $(".heroSlider .slide");
2700        this.slidesCount = this.$slides.length;
2701        this.$slides.each((index, item) => {
2702            const $slide = $(item);
2703            const $title = $slide.find(".slideTitle");
2704            if ($title.length) {
2705                this.addTextItem($title);
2706            }
2707            const $text = $slide.find(".slideText");
2708            if ($text.length) {
2709                this.addTextItem($text);
2710            }
2711        });
2712        this.$sliderDots = $(".sliderDots .sliderDot");
2713        this.$sliderDots.on("click", (e) => {
2714            this.moveToSlide($(e.target).data("item"))
2715        });
2716        this.setTimeout();
2717    },
2718
2719    addTextItem: function ($item) {
2720        const text = $item.data("text");
2721        let content = "";
2722        let tag = false;
2723        let inWord = false;
2724        for (let i = 0; i < text.length; i++) {
2725            if (tag) {
2726                content += text[i];
2727                if (text[i] === ">") {
2728                    tag = false;
2729                }
2730            } else if (text[i] === "<") {
2731                if (inWord) {
2732                    inWord = false;
2733                    content += '</span>';
2734                }
2735                content += text[i];
2736                tag = true;
2737            } else {
2738                if (text[i] === ' ') {
2739                    content += '<span class="char">&nbsp;</span>';
2740                    if (inWord) {
2741                        inWord = false;
2742                        content += '</span>';
2743                    }
2744                } else {
2745                    if (!inWord) {
2746                        inWord = true;
2747                        content += '<span class="wordWrapper">';
2748                    }
2749                    content += '<span class="char">' + text[i] + '</span>';
2750                }
2751            }
2752        }
2753        if (inWord) {
2754            content += '</span>';
2755        }
2756        $item.html(content);
2757        const $chars = $item.find(".char");
2758        $chars.each((index, char) => {
2759            $(char).css({
2760                animationDelay: this.settings.charAnimationDelay * index + "ms",
2761            });
2762        })
2763    },
2764
2765    moveToSlide(index) {
2766        if (this.slideInProgress) {
2767            return;
2768        }
2769        if (this.activeSlide === index) {
2770            return;
2771        }
2772        clearTimeout(this.slideChangeTimeout);
2773        this.slideInProgress = true;
2774        const $currentSlide = $(this.$slides[this.activeSlide]);
2775        $currentSlide.addClass("hiding");
2776        $currentSlide.removeClass("active");
2777        $currentSlide.fadeOut(this.fadeTime, () => {
2778            $currentSlide.removeClass("hiding");
2779        });
2780        const $nextSlide = $(this.$slides[index]);
2781        $nextSlide.addClass("showing");
2782        this.$sliderDots.removeClass("active");
2783        this.$sliderDots[index].classList.add("active");
2784        $nextSlide.fadeIn(this.fadeTime, () => {
2785            $nextSlide.addClass("active");
2786            $nextSlide.removeClass("showing");
2787            this.activeSlide = index;
2788            this.slideInProgress = false;
2789            this.setTimeout();
2790        });
2791    },
2792
2793    setTimeout() {
2794        let nextItem = this.activeSlide + 1 === this.slidesCount ? 0 : this.activeSlide + 1;
2795        this.slideChangeTimeout = setTimeout(() => {
2796            this.moveToSlide(nextItem);
2797        }, this.settings.slideChangeDelay);
2798    }
2799
2800}
2801/* cached content from: landing-videos.js */
2802Viszony.LandingVideos = {
2803    init: function () {
2804        this.loadYoutubeVideos();
2805    },
2806
2807    loadYoutubeVideos: function () {
2808        let self = this;
2809        let $videos = $(".landing-videos__video");
2810        if ($videos.length === 0) {
2811            return;
2812        }
2813        for (var i = 0; i < $videos.length; i++) {
2814            // Construct Play Button
2815            var playButton = document.createElement("div");
2816            playButton.className = "landing-videos__video-play-button";
2817            $videos[i].appendChild(playButton);
2818
2819            // Construct thumbnail image
2820            var img = document.createElement('img');
2821            img.className = "img img--responsive landing-videos__video-image";
2822            $videos[i].appendChild(img);
2823            // ad load event
2824            let $video = $($videos[i]);
2825            $video.on("click", function () {
2826                self.loadVideo($video);
2827            });
2828        }
2829        setLazyload($videos[0], () => {
2830            const images = document.querySelectorAll('.landing-videos__video img');
2831            for (let i = 0; i < $videos.length; i++) {
2832                const img = images[i];
2833                img.src = "https://img.youtube.com/vi/" + $videos[i].dataset.id+ "/hqdefault.jpg";
2834            }
2835        });
2836    },
2837
2838    loadVideo: function ($video) {
2839        let iframe = document.createElement('iframe');
2840        iframe.className = "landing-videos__video-content";
2841        iframe.setAttribute("src", "https://www.youtube.com/embed/" + $video[0].dataset.id + "?rel=0&showinfo=0&autoplay=1");
2842        iframe.setAttribute("frameborder", "0");
2843        iframe.setAttribute("allowfullscreen", "");
2844        $video.html(iframe);
2845    },
2846
2847}
2848/* cached content from: lost-password.js */
2849Viszony.LostPassword = {
2850
2851    $loginContent: null,
2852    $lostPassword: null,
2853    $lostPasswordContent: null,
2854    $lostPasswordResponse: null,
2855    $loginHeader: null,
2856
2857    init: function () {
2858        this.$loginContent = $("#login-content");
2859        this.$lostPassword = $("#lost-password");
2860        this.$lostPasswordContent = $("#lost-password-content");
2861        this.$lostPasswordResponse = $("#lost-password-response");
2862        this.$loginHeader = $("#login-header-title-text");
2863        this.bindEvents();
2864    },
2865
2866    bindEvents: function () {
2867        let self = this;
2868        $("#lost-password-open-button").on("click", function () {
2869            self.openLostPasswordSection();
2870        });
2871        $("#lost-password-close, #lost-password-ok-button").on("click", function () {
2872            self.closeLostPasswordSection();
2873        });
2874        $("#lost-password-submit").on("click", function () {
2875            self.lostPasswordSend();
2876        });
2877    },
2878
2879    lostPasswordSend: function(){
2880        Ajax.processByParams('user', 'lostPassword', {
2881            email: $("#lost-password-email").val()
2882        });
2883    },
2884
2885    lostPasswordSuccessFullCallback: function(result) {
2886        this.$lostPassword.addClass('lost-password--sent');
2887        this.$lostPasswordResponse.html(result.message);
2888        this.$lostPasswordContent.css({height: this.$lostPassword.outerHeight() + "px"});
2889    },
2890
2891    openLostPasswordSection: function () {
2892        this.$loginContent.animate({opacity: 0}, 800);
2893        this.$lostPasswordContent.animate({height: $("#lost-password").outerHeight()}, 800);
2894        this.$loginHeader.html(lang["pages.landing.boxes.lostPassword.title"]);
2895    },
2896
2897    closeLostPasswordSection: function () {
2898        this.$loginContent.animate({opacity: 1}, 800);
2899        this.$lostPasswordContent.animate({height: ""}, 800);
2900        this.$loginHeader.html(lang["pages.landing.boxes.login.title"]);
2901    },
2902};
2903/* cached content from: pre-registration-form.js */
2904Viszony.preRegistrationForm = {
2905
2906    validated: false,
2907
2908    $form: null,
2909
2910    ajaxForm: null,
2911
2912    init: function () {
2913        this.$form = $("#pre-registration-form");
2914        this.bindEvents();
2915    },
2916
2917    bindEvents: function () {
2918        const callback = new AjaxCallback();
2919        const self = this;
2920        callback.addSuccessCallback(function (res) {
2921            if (typeof res.data.success === "boolean" && res.data.success) {
2922                self.validated = true;
2923                self.ajaxForm.setActive(false);
2924                self.$form.submit();
2925            }
2926        });
2927        this.ajaxForm = Viszony.FormHandler.addAjaxForm(this.$form, callback, {
2928            action: "/ajaxRequest/registration/preRegistration",
2929        });
2930
2931    },
2932}
2933/* cached content from: swiper.js */
2934/**
2935 * Swiper
2936 * @param {jQuery} $container
2937 * @constructor
2938 */
2939function Swiper($container) {
2940    let instance = this;
2941    /**
2942     * Swiper konténere
2943     * @type {jQuery}
2944     */
2945    this.$container = $container;
2946    /**
2947     * Swipper elemek wrappere
2948     * @type {jQuery}
2949     */
2950    this.$wrapper = null;
2951    /**
2952     * Pagination előző oldal
2953     * @type {jQuery}
2954     */
2955    this.$paginationPrev = null;
2956    /**
2957     * Pagination következő oldal
2958     * @type {jQuery}
2959     */
2960    this.$paginationNext = null;
2961    /**
2962     * $swiper elemek
2963     * @type {jQuery[]}
2964     */
2965    this.$items = [];
2966    /**
2967     * Swiper beállításokat tárollja el<br/>
2968     * <strong>wrapperClass</strong>: Wrapper azonosítására szolgáló osztály<br/>
2969     * <strong>itemClass</strong>: Elemek azonosítására szolgáló osztály<br/>
2970     * <strong>paginationActivateClass</strong>: Aktív paginationt jelölő osztály<br/>
2971     * <strong>paginationPrevClass</strong>: Előző paginatikon azonosítására szolgáló osztály<br/>
2972     * <strong>paginationNextClass</strong>: Következő pagination azonosítására szolgáló osztály<br/>
2973     * <strong>infinite</strong>: infinite swiper<br/>
2974     * <strong>show</strong>: Mennyi elemet mutasson egszerre<br/>
2975     * <strong>step</strong>: Mennyi elemet léptessen egy oldallal<br/>
2976     * <strong>breakpoints</strong>: Felbontásra érvényes beállítások(show, step)<br/>
2977     * @type {Object}
2978     */
2979    this.options = {
2980        wrapperClass: "swiper__wrapper",
2981        itemClass: "swiper__item",
2982        paginationActivateClass: "swiper-pagination--active",
2983        paginationPrevClass: "swiper-pagination--prev",
2984        paginationNextClass: "swiper-pagination--next",
2985        infinite: false,
2986        show: 1,
2987        step: 1,
2988        autoSwipe: 0,
2989        scroll: false,
2990        breakpoints: {},
2991    };
2992    /**
2993     * Állapotok tárolására szolgáló objektum
2994     * <strong>touch.animates</strong>: ha true éppen animálódik az elem
2995     * @type {Object}
2996     */
2997    this.state = {
2998        touch: {
2999            animates: false,
3000            startTime: null,
3001            start: null,
3002            startY: null,
3003            last: null,
3004        },
3005        swipe: {
3006            stopAnimating: false,
3007            inProgress: false,
3008            autoSwipeHandler: null,
3009            scroll: null,
3010        },
3011    };
3012
3013    /**
3014     * Inicializációs függvény
3015     * @param {Object} options az osztály options tömbjével kerül értékek:<br/>
3016     * <strong>show</strong>: Egyszerre mutatott elemek száma<br/>
3017     * <strong>step</strong>: Egy lépéssel lépendő elemek száma<br/>
3018     * <strong>breakpoints</strong>: felbontásra érvényes beállítások(show, step)<br/>
3019     */
3020    this.init = function(options) {
3021        this.setOptions(options);
3022        this.$wrapper = this.$container.find("." + this.options.wrapperClass);
3023        this.$items = this.$container.find("." + this.options.itemClass);
3024        this.$paginationPrev = this.$container.find("." + this.options.paginationPrevClass);
3025        this.$paginationNext = this.$container.find("." + this.options.paginationNextClass);
3026        this.refreshState();
3027        this.bindEvents();
3028    };
3029
3030    /**
3031     * Beállítja a kapott beállításokat az érvényes beállításokra
3032     * @param {Object} options
3033     * @return {void}
3034     */
3035    this.setOptions = function (options) {
3036        let opts = this.getBreakpointOptions(options);
3037        for (let index in opts) {
3038            this.options[index] = opts[index];
3039        }
3040        if (typeof options.breakpoints === "object") {
3041            for (let index in options.breakpoints) {
3042                opts = this.getBreakpointOptions(options.breakpoints[index]);
3043                if (typeof this.options.breakpoints[index] === "undefined") {
3044                    this.options.breakpoints[index] = {};
3045                }
3046                for (let j in opts) {
3047                    this.options.breakpoints[index][j] = opts[j];
3048                }
3049            }
3050        }
3051        if (typeof options === "object") {
3052            if (typeof options.infinite === "boolean") {
3053                this.options.infinite = options.infinite;
3054            }
3055            if (typeof options.autoSwipe === "number") {
3056                this.options.autoSwipe = options.autoSwipe;
3057            }
3058            if (typeof options.scroll === "boolean") {
3059                this.options.scroll = options.scroll;
3060            }
3061        }
3062    };
3063
3064    /**
3065     * Visszaadja a felbontásra érvényes beállításokat
3066     * @param source
3067     */
3068    this.getBreakpointOptions = function (source) {
3069        let options = {};
3070        if (typeof source.show === "number") {
3071            options.show = source.show;
3072        }
3073        if (typeof source.step === "number") {
3074            options.step = source.step;
3075        }
3076        return options;
3077    };
3078
3079    /**
3080     * Frissíti az aktuális állapotot, de csak akkor ha bármelyik érték ami azt befolyásolja változott
3081     * @return {void}
3082     */
3083    this.refreshState = function () {
3084        this.stopAutoSwipe();
3085        let settings = this.getSettings($(window).width());
3086        let screenWidth = this.$container.outerWidth(true);
3087        let stepRatio =  settings.step / settings.show;
3088        let itemWidth = screenWidth / settings.show;
3089        let stepSize = screenWidth * stepRatio;
3090        // csak akkor állítjuk újra be a dolgokat ha valóban változott valami
3091        if (screenWidth !== this.state.screenWidth || stepRatio !== this.state.stepRatio ||
3092            itemWidth !== this.state.itemWidth || stepSize !== this.state.stepSize) {
3093            this.state.show = settings.show;
3094            this.state.step = settings.step;
3095            this.state.screenWidth = screenWidth;
3096            this.state.stepRatio = stepRatio;
3097            this.state.itemWidth = itemWidth;
3098            this.state.width = this.state.itemWidth * this.$items.length;
3099            this.state.stepSize = stepSize;
3100            this.state.maxLeft = this.state.width - this.state.screenWidth;
3101            this.state.maxStep = Math.ceil(this.state.width / this.state.stepSize) - 1;
3102            this.state.swipe.stopAnimating = true;
3103            this.state.animating = false;
3104            this.state.currentLeft = 0;
3105            this.state.currentStep = 0;
3106            this.$items.css({"maxWidth": this.state.itemWidth + "px", "flex-basis": this.state.itemWidth + "px"});
3107            this.$wrapper.css({marginLeft: "0px"});
3108            this.refreshPaginationActiveClasses();
3109        }
3110        this.setAutoSwipe();
3111    };
3112
3113    /**
3114     * Események hozzáadása
3115     * @return {void}
3116     */
3117    this.bindEvents = function () {
3118        this.$wrapper.on("touchstart", function (e) {
3119            instance.containerTouchStartEvent(e, this);
3120        }).on("touchmove", function (e) {
3121            instance.containerTouchMoveEvent(e, this);
3122        }).on("touchend", function (e) {
3123            instance.containerTouchEndEvent(e, this);
3124        });
3125        this.$paginationPrev.on("click", function (e) {
3126            e.stopPropagation();
3127            instance.moveToStep(instance.state.currentStep - 1);
3128        });
3129        this.$paginationNext.on("click", function (e) {
3130            e.stopPropagation();
3131            instance.moveToStep(instance.state.currentStep + 1);
3132        });
3133        $(window).on("resize", function () {
3134            instance.refreshState();
3135        });
3136    };
3137
3138    /**
3139     * Frissití a pagination aktív osztályokat az elemeken
3140     * @return {void}
3141     */
3142    this.refreshPaginationActiveClasses = function () {
3143        if (this.state.currentStep > 0 || this.options.infinite) {
3144            this.$paginationPrev.addClass(this.options.paginationActivateClass);
3145        } else {
3146            this.$paginationPrev.removeClass(this.options.paginationActivateClass);
3147        }
3148        if (this.state.currentStep < this.state.maxStep || this.options.infinite) {
3149            this.$paginationNext.addClass(this.options.paginationActivateClass);
3150        } else {
3151            this.$paginationNext.removeClass(this.options.paginationActivateClass);
3152        }
3153    };
3154
3155    /**
3156     * Az átadott értéket validálja és oda lépteti a swipert
3157     * @param {number} step
3158     * @param {boolean} autoSwipe
3159     * @return {void}
3160     */
3161    this.moveToStep = function (step, autoSwipe = false) {
3162        if (autoSwipe === false) {
3163            this.stopAutoSwipe();
3164        }
3165        if (step < 0) {
3166            if (this.options.infinite) {
3167                step = this.state.maxStep;
3168            } else {
3169                step = 0;
3170            }
3171        } else if (step > this.state.maxStep) {
3172            if (this.options.infinite) {
3173                step = 0;
3174            } else {
3175                step = this.state.maxStep;
3176            }
3177        }
3178        this.state.currentStep = step;
3179        this.moveToPosition(step * this.state.stepSize, true);
3180        this.setAutoSwipe();
3181    };
3182
3183    /**
3184     * Touchend event kezelése
3185     * @param {Event} e
3186     * @param {Element} element
3187     * @return {void}
3188     */
3189    this.containerTouchEndEvent = function (e, element) {
3190        if (this.state.swipe.inProgress) {
3191            this.state.swipe.inProgress = false;
3192            if (!this.options.scroll || this.state.swipe.scroll === false) {
3193                e.preventDefault();
3194                let dif = this.state.touch.start - this.state.touch.last;
3195                let date = new Date();
3196                let time = date.getTime() - this.state.touch.startTime;
3197                this.moveByDifAndTime(dif, time);
3198                this.setAutoSwipe();
3199            }
3200            if (this.options.scroll) {
3201                this.state.swipe.scroll = null;
3202            }
3203        }
3204    };
3205
3206    /**
3207     * touchmove event kezelése
3208     * @param {Event} e
3209     * @param {Element} element
3210     * @return {void}
3211     */
3212    this.containerTouchMoveEvent = function (e, element) {
3213        let swipe = false;
3214        if (this.options.scroll === false) {
3215            swipe = true;
3216        } else {
3217            if (this.state.swipe.scroll === null) {
3218                let lastX = e.originalEvent.targetTouches[0].clientX;
3219                let lastY = e.originalEvent.targetTouches[0].clientY;
3220                if (Math.abs(this.state.touch.startY - lastY) >= 10) {
3221                    this.state.swipe.scroll = true;
3222                } else if (Math.abs(this.state.touch.start - lastX) >= 10) {
3223                    swipe = true;
3224                    this.state.swipe.scroll = false;
3225                }
3226            } else if (!this.state.swipe.scroll) {
3227                swipe = true;
3228            }
3229        }
3230        this.state.swipe.inProgress = true;
3231        if (swipe) {
3232            e.preventDefault();
3233            this.state.touch.last = e.originalEvent.targetTouches[0].clientX;
3234            let position = this.state.currentLeft + (this.state.touch.start - this.state.touch.last) - this.state.swipe.dif;
3235            if (position < 0) {
3236                position = 0;
3237            } else if (position > this.state.maxLeft) {
3238                position = this.state.maxLeft;
3239            }
3240            this.$wrapper.css({marginLeft: "-" + position + "px"});
3241        }
3242    };
3243
3244    /**
3245     * Touschstart kezelése
3246     * @param {Event} e
3247     * @param {Element} element
3248     * @return {void}
3249     */
3250    this.containerTouchStartEvent = function (e, element) {
3251        this.stopAutoSwipe();
3252        this.state.swipe.stopAnimating = true;
3253        this.$wrapper.stop();
3254        this.state.touch.start = e.originalEvent.targetTouches[0].clientX;
3255        this.state.swipe.dif = parseFloat(this.$wrapper.css("marginLeft")) + this.state.currentLeft;
3256        let date = new Date();
3257        this.state.touch.startTime = date.getTime();
3258        if (this.options.scroll) {
3259            this.state.touch.startY = e.originalEvent.targetTouches[0].clientY;
3260        }
3261    };
3262
3263    this.moveByDifAndTime = function (dif, time) {
3264        instance.state.animates = true;
3265        if (time > 1000) {
3266            time = 1000;
3267        }
3268        this.state.swipe.animateFrom = this.state.currentLeft + (this.state.touch.start - this.state.touch.last) - this.state.swipe.dif;
3269        if (this.state.swipe.animateFrom < 0) {
3270            this.state.swipe.animateFrom = 0;
3271        } else if (this.state.swipe.animateFrom > this.state.maxLeft) {
3272            this.state.swipe.animateFrom = this.state.maxLeft;
3273        }
3274        let plusPosition = Math.round((this.state.touch.start - this.state.touch.last) / this.state.itemWidth) * this.state.itemWidth;
3275        let remainder = (this.state.touch.start - this.state.touch.last) % this.state.itemWidth;
3276        plusPosition -= remainder;
3277        plusPosition -= this.state.currentLeft % this.state.itemWidth;
3278        plusPosition += this.state.swipe.dif % this.state.itemWidth;
3279        this.state.swipe.animateTo = this.state.swipe.animateFrom + plusPosition;
3280        let swipeItemsCount = Math.round(((this.state.touch.start - this.state.touch.last) / this.state.screenWidth) / (time / 1000) / 2);
3281        this.state.swipe.animateTo += swipeItemsCount * this.state.itemWidth;
3282        if (this.state.swipe.animateTo < 0) {
3283            this.state.swipe.animateTo = 0;
3284        } else if (this.state.swipe.animateTo > this.state.maxLeft) {
3285            this.state.swipe.animateTo = this.state.maxLeft;
3286        }
3287        let executeTime = 300 + Math.abs(swipeItemsCount) * 110;
3288        let executeCount = Math.ceil(executeTime / 40);
3289        this.state.swipe.items = [];
3290        let animateValue = this.state.swipe.animateTo - this.state.swipe.animateFrom;
3291        let allWeight = 0;
3292        for (let i = 0; i < executeCount; i++) {
3293            allWeight += executeCount - i;
3294        }
3295        let pixelPerWeight = animateValue / allWeight;
3296        let value = 0;
3297        for (let i = 0; i < executeCount; i++) {
3298            let weight = executeCount - i;
3299            value += weight * pixelPerWeight;
3300            this.state.swipe.items.push(value);
3301        }
3302        this.state.swipe.stopAnimating = false;
3303        this.animateSlice(0);
3304    };
3305
3306    this.animateSlice = function (index) {
3307        if (typeof this.state.swipe.items[index] !== "number") {
3308            instance.state.animates = false;
3309            this.state.currentLeft = this.state.swipe.animateTo;
3310            this.state.currentStep = Math.round(this.state.currentLeft / this.state.itemWidth);
3311            return;
3312        } else if (this.state.swipe.stopAnimating) {
3313            return;
3314        }
3315        let newValue = this.state.swipe.animateFrom + this.state.swipe.items[index];
3316        this.$wrapper.animate({marginLeft: "-" + newValue+ "px"}, 30, function () {
3317            index++;
3318            instance.animateSlice(index);
3319        });
3320    };
3321
3322    /**
3323     * Az átadott pozicióra  popzíciónálja a swipert
3324     * @param {number} position
3325     * @return {void}
3326     */
3327    this.moveToPosition = function (position) {
3328        if (position < 0) {
3329            position = 0;
3330        } else if (position > this.state.maxLeft) {
3331            position = this.state.maxLeft;
3332        }
3333        this.state.currentLeft = position;
3334        this.state.animates = true;
3335        this.$wrapper.animate({marginLeft: "-" + position + "px"}, 800, function () {
3336            instance.state.animates = false;
3337        });
3338        this.refreshPaginationActiveClasses();
3339    };
3340
3341    /**
3342     * Visszaadja a felbontásra érvényes beállításokat
3343     * @param {number} width
3344     * @return {{show: number, step: number}}
3345     */
3346    this.getSettings = function (width) {
3347        let settings = {
3348            show: this.options.show,
3349            step: this.options.step,
3350        };
3351        for (let size in this.options.breakpoints) {
3352            if (size <= width) {
3353                settings = Object.assign(settings, this.options.breakpoints[size]);
3354            }
3355        }
3356        return settings;
3357    };
3358
3359    this.stopAutoSwipe = function () {
3360        if (this.state.autoSwipeHandler !== null) {
3361            clearTimeout(this.state.autoSwipeHandler);
3362            this.state.autoSwipeHandler = null;
3363        }
3364    };
3365
3366    this.setAutoSwipe = function() {
3367        if (this.options.autoSwipe !== 0) {
3368            const self = this;
3369            this.state.autoSwipeHandler = setTimeout(function () {
3370                self.moveToStep(self.state.currentStep + 1, true);
3371            }, this.options.autoSwipe + 800);
3372        }
3373    };
3374}
3375/* cached content from: erotic-stories.js */
3376Viszony.eroticStories = {
3377
3378    $container: null,
3379
3380    $itemsWrapper: null,
3381
3382    $items: null,
3383
3384    state: {
3385        itemWidth: null,
3386        step: null,
3387        currentLeft: 0,
3388        maxLeft: 0,
3389        animation: null,
3390    },
3391
3392    options: {
3393        switchInterval: 15000,
3394        animationTime: 600,
3395    },
3396
3397    init: function() {
3398        this.$container = $("#erotic-stories-items");
3399        this.$itemsWrapper = this.$container.find(".erotic-stories__items");
3400        this.$items = this.$container.find(".erotic-stories__item");
3401        this.bindEvents();
3402        this.refreshState();
3403    },
3404
3405    bindEvents: function() {
3406        $(window).on("resize", function () {
3407            Viszony.eroticStories.refreshState();
3408        });
3409    },
3410
3411    refreshState: function () {
3412        clearTimeout(this.state.animation);
3413        this.$items.css("width", "");
3414        this.$itemsWrapper.css("margin-left", "");
3415        this.$itemsWrapper.css("width", "");
3416        this.$items.css("width", "");
3417        this.state.itemWidth = this.$items.eq(0).outerWidth(true);
3418        this.state.step = this.$itemsWrapper.outerWidth();
3419        this.state.currentLeft = 0;
3420        this.state.maxLeft = this.state.itemWidth * this.$items.length - this.state.step;
3421        this.$items.css("width", this.state.itemWidth);
3422        this.$itemsWrapper.css("width", this.state.itemWidth * this.$items.length);
3423        this.showStep(false);
3424        this.state.animation = setTimeout(function () {
3425            Viszony.eroticStories.nextStep();
3426        }, this.options.switchInterval);
3427    },
3428
3429    nextStep: function () {
3430        const newValue = this.state.currentLeft + this.state.step;
3431        if (newValue > this.state.maxLeft) {
3432            this.state.currentLeft = 0;
3433        } else {
3434            this.state.currentLeft = newValue;
3435        }
3436        this.showStep(true);
3437        this.state.animation = setTimeout(function () {
3438            Viszony.eroticStories.nextStep();
3439        }, this.options.switchInterval + this.options.animationTime);
3440    },
3441
3442    showStep: function (animate = true) {
3443        this.$itemsWrapper.stop();
3444        const left = "-" + this.state.currentLeft + "px";
3445        if (animate) {
3446            this.$itemsWrapper.animate({
3447                "margin-left": left,
3448            }, this.options.animationTime);
3449        } else {
3450            this.$itemsWrapper.css("margin-left", left);
3451        }
3452    },
3453};
3454/* cached content from: lazyLoad.js */
3455
3456function setLazyload(element, callback){
3457    new LazyLoadElement(element, callback);
3458}
3459
3460function setLazyLoadLoaded(element) {
3461    if (!element) {
3462        return;
3463    }
3464    new LazyLoadElement(element, () => {
3465        element.classList.add('loaded');
3466    })
3467}
3468
3469class LazyLoadElement{
3470
3471    elementHeight = 0;
3472
3473    constructor(element, callback) {
3474        this.element = element;
3475        this.callback = callback;
3476        this.elementHeight = this.element.offsetHeight;
3477        if (this.check()) {
3478            this.callback();
3479            return;
3480        }
3481
3482        const scroll = () => {
3483            if (this.check()) {
3484                this.callback();
3485                window.removeEventListener('scroll', scroll);
3486                window.removeEventListener('resize', resize);
3487            }
3488        }
3489
3490        const resize = () => {
3491            this.elementHeight = this.element.offsetHeight;
3492            scroll();
3493        }
3494        window.addEventListener('scroll', scroll);
3495        window.addEventListener('resize', resize);
3496    }
3497
3498    check() {
3499        const elementOffset = this.element.getBoundingClientRect();
3500        const offsetTop = elementOffset.top - window.innerHeight
3501        return elementOffset.top - window.innerHeight < 300 && offsetTop * -1 < window.innerHeight + this.elementHeight + 300;
3502    }
3503}
3504
3505$(document).on('ready', () => {
3506    const images = document.querySelectorAll('img.lazyLoad');
3507    for (const image of images) {
3508        setLazyload(image, () => {
3509            image.src = image.dataset.src;
3510            image.dataset.src = "";
3511        });
3512    }
3513});
3514/* cached content from: appleSso.js */
3515
3516const AppleSso = {
3517
3518    redirectUri: window.location.origin + "/appleSSO",
3519
3520    listeners: [],
3521
3522    initiated: false,
3523
3524    initAppleSSO: function (){
3525        if (this.initiated) {
3526            // ha már volt inicializálva, csak resolveolunk, hogy lefusson a callback
3527            return new Promise((resolve, reject) => {
3528                resolve();
3529            })
3530        }
3531        return Viszony.Utils.loadScript("https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/hu_HU/appleid.auth.js").then(() => {
3532            AppleID.auth.init({
3533                clientId: data.credentials.appleSSO,
3534                scope: "email",
3535                redirectURI: this.redirectUri,
3536                state: 'Initial user authentication request',
3537                usePopup: true
3538            });
3539        });
3540    },
3541
3542    addAppleLoginListener: function (listener) {
3543        if (typeof listener !== "function") {
3544            return
3545        }
3546        this.listeners.push(listener);
3547    },
3548
3549    redirectToAppleRegistration: function (url) {
3550        // regisztráció alapértelmezett működés, regisztrációs oldalra irányítás
3551        const form = document.createElement("form");
3552        form.setAttribute("method", "post");
3553        form.setAttribute("action", url);
3554        const input = document.createElement("input");
3555        input.setAttribute("type", "hidden");
3556        input.setAttribute("name", "socialType");
3557        input.setAttribute("value", "apple");
3558        form.appendChild(input);
3559        document.body.appendChild(form);
3560        form.submit();
3561    }
3562}
3563
3564
3565// Listen for authorization success.
3566document.addEventListener('AppleIDSignInOnSuccess', (event) => {
3567    Ajax.post(Viszony.Utils.requestUrl("user/appleSSO"), {
3568        auth: event.detail.authorization,
3569        grant_type: "authorization_code",
3570        redirect_uri: AppleSso.redirectUri,
3571    }).then((result) => {
3572        if (result.data.param.success) {
3573            for (const listener of AppleSso.listeners) {
3574                listener(result.data);
3575            }
3576        }
3577    })
3578});
3579
3580// Listen for authorization failures.
3581document.addEventListener('AppleIDSignInOnFailure', (event) => {
3582
3583});
3584/* cached content from: googleSso.js */
3585
3586const GoogleSso = {
3587
3588    initiated: false,
3589
3590    loaded: false,
3591
3592    loadedListeners: [],
3593
3594    listeners: [],
3595
3596    addLoadedListener : function (listener) {
3597        if (typeof listener !== "function") {
3598            return
3599        }
3600        if (!this.loaded) {
3601            this.loadedListeners.push(listener);
3602        } else {
3603            listener();
3604        }
3605    },
3606
3607    addGoogleLoginListener: function (listener) {
3608        if (typeof listener !== "function") {
3609            return
3610        }
3611        this.listeners.push(listener);
3612    },
3613
3614    initGoogleSSO: function () {
3615        if (data.appIOS) {
3616            // ios app visszaadjuk a dummy választ
3617            return new Promise((resolve, reject) => {
3618                resolve();
3619            })
3620        }
3621        if (this.initiated) {
3622            // ha már volt inicializálva, csak resolveolunk, hogy lefusson a callback
3623            return new Promise((resolve, reject) => {
3624                resolve();
3625            })
3626        }
3627        this.initiated = true;
3628        if (data.appAndroid) {
3629            return initGoogleSSOApp();
3630        } else {
3631            return initGoogleSSOBrowser();
3632        }
3633    },
3634
3635    redirectToGoogleRegistration: function (url) {
3636        // regisztráció alapértelmezett működés, regisztrációs oldalra irányítás
3637        const form = document.createElement("form");
3638        form.setAttribute("method", "post");
3639        form.setAttribute("action", url);
3640        const input = document.createElement("input");
3641        input.setAttribute("type", "hidden");
3642        input.setAttribute("name", "socialType");
3643        input.setAttribute("value", "google");
3644        form.appendChild(input);
3645        document.body.appendChild(form);
3646        form.submit();
3647    },
3648
3649    renderGoogleButton: function (item, text, width) {
3650        // Appnál nem csinálunk semmit, ez csak böngészős funkció
3651        if (data.app) {
3652            return;
3653        }
3654        google.accounts.id.renderButton(
3655            item,
3656            { theme: "outline", size: "large", shape: "pill", text: text, width: width, locale: 'hu'}
3657        );
3658    },
3659
3660    appGoogleLogin: function() {
3661        window.flutter_inappwebview.callHandler('googleLogin').then((res) => {
3662            processGoogleSSO(res.aToken, true);
3663        });
3664    },
3665
3666}
3667
3668window.onGoogleLibraryLoad = () => {
3669    GoogleSso.loaded = true;
3670    processLoadedListeners();
3671};
3672
3673function processLoadedListeners() {
3674    for (const listener of GoogleSso.loadedListeners) {
3675        listener();
3676    }
3677}
3678
3679function processGoogleSSO(token, app) {
3680    let uri;
3681    if (app) {
3682        uri = "user/googleSSOByAccessToken";
3683    } else {
3684        uri = "user/googleSSO";
3685    }
3686    Ajax.post(Viszony.Utils.requestUrl(uri), {
3687        token: token,
3688    }).then((result) => {
3689        if (result.data.param.success) {
3690            for (const listener of GoogleSso.listeners) {
3691                listener(result.data);
3692            }
3693        }
3694    });
3695}
3696
3697
3698function initGoogleSSOApp() {
3699    GoogleSso.loaded = true;
3700    processLoadedListeners();
3701    // csak dummy választ adunk vissza
3702    return new Promise((resolve, reject) => {
3703        resolve();
3704    })
3705}
3706
3707function initGoogleSSOBrowser() {
3708    return Viszony.Utils.loadScript("https://accounts.google.com/gsi/client?hl=hu").then(() => {
3709        google.accounts.id.initialize({
3710            client_id: data.credentials.googleSSO,
3711            callback: (res) => {
3712                processGoogleSSO(res.credential, false)
3713            },
3714        })
3715        // one tap
3716        // google.accounts.id.prompt();
3717    }).catch(() => {
3718        console.error("Hiba történt a Google js fájl betöltése közben")
3719    })
3720}
3721
3722/* cached content from: verifySocialLogin.js */
3723Viszony.verifySocialLogin = {
3724
3725    layer: null,
3726
3727    social: null,
3728
3729    init: function(){
3730        this.layer = new Layer($("#verifySocialLogin"));
3731        this.layer.init();
3732
3733        document.getElementById('verifySocialLoginRegistration').addEventListener('click', () => {
3734            if (this.social === 'google') {
3735                GoogleSso.redirectToGoogleRegistration(data.data.registrationUrl);
3736            } else {
3737                AppleSso.redirectToAppleRegistration(data.data.registrationUrl);
3738            }
3739        });
3740    },
3741
3742    openLayer: function (result) {
3743        Viszony.verifySocialLogin.social = result.service;
3744        const serviceShow = result.service;
3745        const serviceHide = result.service === 'google' ? 'apple' : 'google';
3746        $('.paragraph.contentParagraph.' + serviceShow).show();
3747        $('.paragraph.contentParagraph.' + serviceHide).hide();
3748        document.getElementById('connectSocialSocialName').value = result.service;
3749        this.layer.open();
3750    }
3751
3752}
3753
3754
3755/* cached content from: hu.js */
3756var lang = new Object();
3757lang['err_common'] = "Hiba történt!";
3758/**
3759 * Viszony SPECIFIKUS RÉSZ - START
3760 */
3761lang['flashMessage.customerSupport.thanksMessage'] = "Köszönjük hogy elmondod a véleményed,<br />hamarosan válaszolunk!";
3762lang['flashMessage.searchOutside.ComeRegister'] = "Ezek a feltételek csak regisztrált<br /> felhasználók számára érhetőek el.<br ><br /><a style=\"width:auto;padding:5px 15px;font-weight:bold\" href=\"/regisztracio\" class=\"redGradient\">Tovább a regisztrációra!</a> "
3763lang['flashMessage.profileEdit.success'] = "Profilod módosításait sikeresen mentettük!";
3764lang['flashMessage.saving.successSaving'] = "Történeted mentése sikeresen megtörtént!";
3765lang['flashMessage.privacyPopupText'] = '<a target="_blank" style="padding: 5px 0;" class="redGradient" href="/adatvedelem/hu">Adatvédelem (HUN)</a><br /><br /><a target="_blank" style="padding: 5px 0;" class="redGradient" href="/adatvedelem/en">Privacy Policy (ENG)</a>'
3766lang['flashMessage.smsInfo.emptyMessageError'] = "Üres üzenetet nem tudsz küldeni!";
3767lang['flashMessage.bannedUser'] = 'Ezt a felhasználót letiltottad, így nem nézheted meg az adatlapját!';
3768lang['flashMessage.becomePartner'] = 'Amennyiben szeretné Ön is búvóhelyét hirdetni, kérjük a részletekkel kapcsolatban keresse ügyfélszolgálatunkat:<br/><br/><a class="textPurple" href="mailto:[email protected]">[email protected]</a>.';
3769lang['flashMessage.requestTimeout'] = '<b>Kapcsolódási hiba!</b><br/>Kérjük, frissítsd az oldalt és próbáld meg újra!';
3770lang['flashMessage.unsavedModifications'] = 'Nem mentetted el a módosítást! Biztos ellépsz az oldalról?';
3771
3772lang['commonConfirm'] = "Biztos vagy benne?";
3773lang['confirm.conversationDel'] = 'Biztos törlöd ezt a beszélgetést?';
3774lang['confirm.revokeUserBan'] = 'Biztos hogy feloldod ennek a felhasználónak a letiltását?';
3775lang['confirm.subscriptionNeeded'] = "Előfizetés szükséges!";
3776lang['confirm.cancelSubscription'] = "Biztos leállítod az előfizetésed folyamatos megújítását?"
3777
3778lang['mobile.subscription.successText'] = 'Előfizetésed sikeres!';
3779lang['mobile.subscription.successHead'] = 'Előfizetésed sikeres!';
3780lang['mobile.subscription.wrongText'] = 'Sikertelen előfizetés! Kérjük vedd fel a kapcsolatot az <a href="http://www.szexrandi.hu/segitseg">ügyfélszolgálattal</a>!';
3781lang['mobile.subscription.wrongHead'] = 'Előfizetésed sikertelen!';
3782
3783lang['gallery.defaultTitle'] = 'Képgaléria';
3784lang['subscription.price'] = '{price} Ft';
3785lang['subscription.price.perMonth'] = '{price_per_month} Ft/hó';
3786lang['subscription.price.total'] = 'A teljes ár {price_total} Ft';
3787lang['subscription.mv.error'] = "Sikertelen fizetés, bővebb tájékoztatást SMS-ben kapsz";
3788
3789lang['messages.confirmDeletion'] = 'Biztos törölni szeretnéd ezt a levelezést?';
3790
3791lang['frontend.boxOverlay.login.title'] = 'Belépés';
3792lang['frontend.boxOverlay.passReset.title'] = 'Jelszó emlékeztető';
3793
3794lang['subscriptionPage.cancelRenew.text'] =  '<span class="unsubConfirm"><h2>Megerősítés</h2><br /> Az automatikus megújulás egy kényelmi szolgáltatás: lejáratkor automatikusan levonjuk a következő periódusra szóló előfizetési dí
3794jat. Így nem kell újra és újra végigmenned az előfizetési folyamaton, és nem kell figyelned a lejáratra- amíg társat keresel, addig folyamatosan élvezheted az előfizetési szolgáltatásokat.<br><br>Biztosan lemondod ezt a szolgáltatást vagy inkább élvezed a megújulás kényelmét?</span>';
3795lang['subscriptionPage.cancelRenew.No'] = 'Megtartom';
3796lang['subscriptionPage.cancelRenew.Yes'] = 'Lemondom';
3797
3798lang['connection.user.permanentBanned.alert'] = 'A felhasználót végleg letiltottad ezért nem láthatod az adatlapját!';
3799lang['connection.user.permanentBanned.alert.action'] = 'Ez a funkció nem elérhető, mert a felhasználót végleg letiltottad.';
3800lang['connection.user.permanentBanned.alert.recipient'] = 'Ez a funkció nem elérhető, mert a felhasználó letiltott téged.';
3801
3802lang['connection.user.ban.prompt.revoke.alert'] = 'A felhasználót letiltottad ezért nem láthatod az adatlapját. A tiltás feloldására egyszeri lehetőséget biztosítunk. ';
3803lang['connection.user.ban.prompt.revoke.accept'] = 'Feloldom';
3804
3805lang['connection.user.ban.prompt.revoke.alert.action'] = 'Ez a funkció nem elérhető, mert a felhasználót letiltottad. A tiltás feloldására egyszeri lehetőséget biztosítunk.';
3806
3807// Redesign
3808// common
3809lang['staticData.sex.1'] = 'Nő';
3810lang['staticData.sex.2'] = 'Férfi';
3811
3812lang['common.imgAlt'] = "{userName} profilképe";
3813lang['common.imgAltHidden'] = "Felhasználó profilképe";
3814lang["common.budapestCounty"] = "{label} kerület";
3815
3816lang['common.accept'] = "Rendben";
3817lang['common.yes'] = "Igen";
3818lang['common.cancel'] = "Mégsem";
3819lang['common.no'] = "Nem";
3820lang['common.successSave'] = "Sikeres mentés";
3821lang['common.removed'] = "Sikeresen eltávolítva";
3822
3823lang['common.ban.accept'] = 'letiltom';
3824lang['common.revoke.accept'] = 'feloldom';
3825
3826lang['common.error.general'] = 'Hiba történt, kérjük próbáld meg később!';
3827
3828lang["connection.event.0"] = "Megnéztétek egymást";
3829lang["connection.event.1"] = "Kedvelitek egymást";
3830lang["connection.event.2"] = "Írtatok egymásnak";
3831lang["connection.event.3"] = "Engedélyeztétek a titkos képeket";
3832lang["connection.event.4"] = "Videochateltetek";
3833
3834lang['disloyaltyIndex.chart.label'] = "Hűtlenségi index";
3835
3836lang['user.privatePictureMe.withdraw.access'] = "Biztos visszavonod az engedélyt?";
3837
3838// profil
3839lang['user.profile.successSupportMessage'] = 'Köszönjük a visszajelzést. Kollégáink hamarosan válaszolni fognak az általad megadott e-mail címre.';
3840
3841
3842// uri
3843
3844lang['pages.uri.profile'] = 'profil/';
3845
3846// flash message
3847lang["flashMessage.story.voteFailed"] = "Sikeres szavazás!";
3848lang["flashMessage.searchTerms.remove"] = "Biztos törlöd?";
3849lang["flashMessage.photoEdit.remove"] = "Biztos törlöd?";
3850lang['flashMessage.user.banned.withdraw.success'] = "A felhasználó tiltását visszavontad! Újra láthat téged!";
3851
3852lang["confirmMessage.user.ban"] = "Ezzel a művelettel letiltod a felhasználót, mostantól nem láthat téged.";
3853lang["confirmMessage.user.revoke"] = "Ezzel a művelettel feloldod a tiltást, mostantól újra láthat téged.";
3854lang["confirmMessage.user.banPermanent"] = "A felhasználót már egyszer letiltottad. Ha most újra letiltod, többször már nem fogod tudni feloldani.";
3855lang["confirmMessage.user.bannedPermanent"] = "A felhasználót végleg letiltottad. Többször már nem tudod feloldani.";
3856lang["confirmMessage.user.revoke.home"] = "A felhasználót letiltottad ezért nem láthatod az adatlapját. A tiltás feloldására egyszeri lehetőséget biztosítunk.";
3857
3858//story
3859
3860lang["story.status.published"] = "Publikálva:";
3861lang["story.status.saved"] = "Mentve:";
3862lang["story.status.incomplete"] = "Mentve:";
3863lang["story.status.suspended"] = "Mentve:";
3864
3865lang["story.view.points.voted"] = 'Már pontoztad ezt a történetet!';
3866
3867lang['story.deleteQuestion'] = 'Biztos törlöd ezt a történetet?';
3868
3869// pages
3870lang['pages.landing.boxes.lostPassword.title'] = 'jelszóemlékeztető';
3871lang['pages.landing.boxes.login.title'] = 'LÉPJ BE!';
3872
3873// messages
3874lang['messages.delete.confirm'] = 'Biztosan törlöd a beszélgetést?';
3875lang['messages.multiDelete.confirm'] = 'Biztosan törlöd a beszélgetéseket?';
3876lang['messages.photoViewer.wait'] = 'Kis türelmet...';
3877lang['messages.videochatClosingInfo'] = 'Be fog záródni a videóbeszélgetés, biztosan elnavigálsz?';
3878
3879// subscription
3880lang['subscription.mode.err.mobileNumberRequired'] = 'Add meg a telefonszámod!';
3881lang['subscription.mode.confirmNavigation'] = 'Folyamatban vagy egy vásárlásod. Biztosan elnavigálsz?';
3882
3883lang['multiselect.empty'] = 'Válassz...';
3884lang['multiselect.some'] = '{count} kiválasztva';
3885lang['multiselect.all'] = 'mind kiválasztva';
3886
3887// url
3888lang['url_profile'] = config['path'] + "profil/";

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