/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
;/*! jQuery UI - v1.13.1 - 2022-01-20
* http://jqueryui.com
* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */

!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(V){"use strict";V.ui=V.ui||{};V.ui.version="1.13.1";var n,i=0,a=Array.prototype.hasOwnProperty,r=Array.prototype.slice;V.cleanData=(n=V.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=V._data(i,"events"))&&e.remove&&V(i).triggerHandler("remove");n(t)}),V.widget=function(t,i,e){var s,n,o,a={},r=t.split(".")[0],l=r+"-"+(t=t.split(".")[1]);return e||(e=i,i=V.Widget),Array.isArray(e)&&(e=V.extend.apply(null,[{}].concat(e))),V.expr.pseudos[l.toLowerCase()]=function(t){return!!V.data(t,l)},V[r]=V[r]||{},s=V[r][t],n=V[r][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},V.extend(n,s,{version:e.version,_proto:V.extend({},e),_childConstructors:[]}),(o=new i).options=V.widget.extend({},o.options),V.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}a[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=V.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:l}),s?(V.each(s._childConstructors,function(t,e){var i=e.prototype;V.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),V.widget.bridge(t,n),n},V.widget.extend=function(t){for(var e,i,s=r.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],a.call(s[n],e)&&void 0!==i&&(V.isPlainObject(i)?t[e]=V.isPlainObject(t[e])?V.widget.extend({},t[e],i):V.widget.extend({},i):t[e]=i);return t},V.widget.bridge=function(o,e){var a=e.prototype.widgetFullName||o;V.fn[o]=function(i){var t="string"==typeof i,s=r.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=V.data(this,a);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V.data(this,a);t?(t.option(i||{}),t._init&&t._init()):V.data(this,a,new e(i,this))})),n}},V.Widget=function(){},V.Widget._childConstructors=[],V.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=V(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],a=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=a.classesElementLookup[t[s]]||V(),i=n.add?(function(){var i=[];n.element.each(function(t,e){V.map(a.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),a._on(V(i),{remove:"_untrackClassesElement"})}(),V(V.uniqueSort(i.get().concat(n.element.get())))):V(i.not(n.element).get()),a.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=V.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;V.each(s.classesElementLookup,function(t,e){-1!==V.inArray(i.target,e)&&(s.classesElementLookup[t]=V(e.not(i.target).get()))}),this._off(V(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,i={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return i.element.toggleClass(this._classes(i),s),this},_on:function(n,o,t){var a,r=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=a=V(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,a=this.widget()),V.each(t,function(t,e){function i(){if(n||!0!==r.options.disabled&&!V(this).hasClass("ui-state-disabled"))return("string"==typeof e?r[e]:e).apply(r,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||V.guid++);var s=t.match(/^([\w:-]*)\s*(.*)$/),t=s[1]+r.eventNamespace,s=s[2];s?a.on(t,s,i):o.on(t,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=V(this.bindings.not(t).get()),this.focusable=V(this.focusable.not(t).get()),this.hoverable=V(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(V(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(V(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=V.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},V.each({show:"fadeIn",hide:"fadeOut"},function(o,a){V.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||a:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!V.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&V.effects&&V.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){V(this)[o](),i&&i.call(e[0]),t()})}});var s,x,k,o,l,h,c,u,C;V.widget;function D(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function I(t,e){return parseInt(V.css(t,e),10)||0}function T(t){return null!=t&&t===t.window}x=Math.max,k=Math.abs,o=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,C=V.fn.position,V.position={scrollbarWidth:function(){if(void 0!==s)return s;var t,e=V("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>"),i=e.children()[0];return V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?V.position.scrollbarWidth():0,height:e?V.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=V(t||window),i=T(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?V(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},V.fn.position=function(u){if(!u||!u.of)return C.apply(this,arguments);var d,p,f,g,m,t,_="string"==typeof(u=V.extend({},u)).of?V(document).find(u.of):V(u.of),v=V.position.getWithinInfo(u.within),b=V.position.getScrollInfo(v),y=(u.collision||"flip").split(" "),w={},e=9===(t=(e=_)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:T(t)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return _[0].preventDefault&&(u.at="left top"),p=e.width,f=e.height,m=V.extend({},g=e.offset),V.each(["my","at"],function(){var t,e,i=(u[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):l.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=l.test(i[1])?i[1]:"center",t=h.exec(i[0]),e=h.exec(i[1]),w[this]=[t?t[0]:0,e?e[0]:0],u[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===y.length&&(y[1]=y[0]),"right"===u.at[0]?m.left+=p:"center"===u.at[0]&&(m.left+=p/2),"bottom"===u.at[1]?m.top+=f:"center"===u.at[1]&&(m.top+=f/2),d=D(w.at,p,f),m.left+=d[0],m.top+=d[1],this.each(function(){var i,t,a=V(this),r=a.outerWidth(),l=a.outerHeight(),e=I(this,"marginLeft"),s=I(this,"marginTop"),n=r+e+I(this,"marginRight")+b.width,o=l+s+I(this,"marginBottom")+b.height,h=V.extend({},m),c=D(w.my,a.outerWidth(),a.outerHeight());"right"===u.my[0]?h.left-=r:"center"===u.my[0]&&(h.left-=r/2),"bottom"===u.my[1]?h.top-=l:"center"===u.my[1]&&(h.top-=l/2),h.left+=c[0],h.top+=c[1],i={marginLeft:e,marginTop:s},V.each(["left","top"],function(t,e){V.ui.position[y[t]]&&V.ui.position[y[t]][e](h,{targetWidth:p,targetHeight:f,elemWidth:r,elemHeight:l,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+c[0],d[1]+c[1]],my:u.my,at:u.at,within:v,elem:a})}),u.using&&(t=function(t){var e=g.left-h.left,i=e+p-r,s=g.top-h.top,n=s+f-l,o={target:{element:_,left:g.left,top:g.top,width:p,height:f},element:{element:a,left:h.left,top:h.top,width:r,height:l},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};p<r&&k(e+i)<p&&(o.horizontal="center"),f<l&&k(s+n)<f&&(o.vertical="middle"),x(k(e),k(i))>x(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0<a&&r<=0?(i=t.left+a+e.collisionWidth-n-s,t.left+=a-i):t.left=!(0<r&&a<=0)&&r<a?s+n-e.collisionWidth:s:0<a?t.left+=a:0<r?t.left-=r:t.left=x(t.left-o,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,a=s-o,r=o+e.collisionHeight-n-s;e.collisionHeight>n?0<a&&r<=0?(i=t.top+a+e.collisionHeight-n-s,t.top+=a-i):t.top=!(0<r&&a<=0)&&r<a?s+n-e.collisionHeight:s:0<a?t.top+=a:0<r?t.top-=r:t.top=x(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,o=i.isWindow?i.scrollLeft:i.offset.left,a=t.left-e.collisionPosition.marginLeft,r=a-o,l=a+e.collisionWidth-n-o,h="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,i="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,a=-2*e.offset[0];r<0?((s=t.left+h+i+a+e.collisionWidth-n-s)<0||s<k(r))&&(t.left+=h+i+a):0<l&&(0<(o=t.left-e.collisionPosition.marginLeft+h+i+a-o)||k(o)<l)&&(t.left+=h+i+a)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,o=i.isWindow?i.scrollTop:i.offset.top,a=t.top-e.collisionPosition.marginTop,r=a-o,l=a+e.collisionHeight-n-o,h="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,i="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,a=-2*e.offset[1];r<0?((s=t.top+h+i+a+e.collisionHeight-n-s)<0||s<k(r))&&(t.top+=h+i+a):0<l&&(0<(o=t.top-e.collisionPosition.marginTop+h+i+a-o)||k(o)<l)&&(t.top+=h+i+a)}},flipfit:{left:function(){V.ui.position.flip.left.apply(this,arguments),V.ui.position.fit.left.apply(this,arguments)},top:function(){V.ui.position.flip.top.apply(this,arguments),V.ui.position.fit.top.apply(this,arguments)}}};V.ui.position,V.extend(V.expr.pseudos,{data:V.expr.createPseudo?V.expr.createPseudo(function(e){return function(t){return!!V.data(t,e)}}):function(t,e,i){return!!V.data(t,i[3])}}),V.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}});var t,d=V,p={},e=p.toString,f=/^([\-+])=\s*(\d+\.?\d*)/,g=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),t[4]?(parseInt(t[4],16)/255).toFixed(2):1]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16),t[4]?(parseInt(t[4]+t[4],16)/255).toFixed(2):1]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],m=d.Color=function(t,e,i,s){return new d.Color.fn.parse(t,e,i,s)},_={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},v={byte:{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},b=m.support={},y=d("<p>")[0],w=d.each;function P(t){return null==t?t+"":"object"==typeof t?p[e.call(t)]||"object":typeof t}function M(t,e,i){var s=v[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function S(s){var n=m(),o=n._rgba=[];return s=s.toLowerCase(),w(g,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[_[e].cache]=i[_[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&d.extend(o,B.transparent),n):B[s]}function H(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}y.style.cssText="background-color:rgba(1,1,1,.5)",b.rgba=-1<y.style.backgroundColor.indexOf("rgba"),w(_,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),d.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){p["[object "+e+"]"]=e.toLowerCase()}),(m.fn=d.extend(m.prototype,{parse:function(n,t,e,i){if(void 0===n)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=d(n).css(t),t=void 0);var o=this,s=P(n),a=this._rgba=[];return void 0!==t&&(n=[n,t,e,i],s="array"),"string"===s?this.parse(S(n)||B._default):"array"===s?(w(_.rgba.props,function(t,e){a[e.idx]=M(n[e.idx],e)}),this):"object"===s?(w(_,n instanceof m?function(t,e){n[e.cache]&&(o[e.cache]=n[e.cache].slice())}:function(t,i){var s=i.cache;w(i.props,function(t,e){if(!o[s]&&i.to){if("alpha"===t||null==n[t])return;o[s]=i.to(o._rgba)}o[s][e.idx]=M(n[t],e,!0)}),o[s]&&d.inArray(null,o[s].slice(0,3))<0&&(null==o[s][3]&&(o[s][3]=1),i.from&&(o._rgba=i.from(o[s])))}),this):void 0},is:function(t){var n=m(t),o=!0,a=this;return w(_,function(t,e){var i,s=n[e.cache];return s&&(i=a[e.cache]||e.to&&e.to(a._rgba)||[],w(e.props,function(t,e){if(null!=s[e.idx])return o=s[e.idx]===i[e.idx]})),o}),o},_space:function(){var i=[],s=this;return w(_,function(t,e){s[e.cache]&&i.push(t)}),i.pop()},transition:function(t,a){var e=(h=m(t))._space(),i=_[e],t=0===this.alpha()?m("transparent"):this,r=t[i.cache]||i.to(t._rgba),l=r.slice(),h=h[i.cache];return w(i.props,function(t,e){var i=e.idx,s=r[i],n=h[i],o=v[e.type]||{};null!==n&&(null===s?l[i]=n:(o.mod&&(n-s>o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=M((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=m(t)._rgba;return m(d.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=d.map(this._rgba,function(t,e){return null!=t?t:2<e?1:0});return 1===e[3]&&(e.pop(),t="rgb("),t+e.join()+")"},toHslaString:function(){var t="hsla(",e=d.map(this.hsla(),function(t,e){return null==t&&(t=2<e?1:0),t=e&&e<3?Math.round(100*t)+"%":t});return 1===e[3]&&(e.pop(),t="hsl("),t+e.join()+")"},toHexString:function(t){var e=this._rgba.slice(),i=e.pop();return t&&e.push(~~(255*i)),"#"+d.map(e,function(t){return 1===(t=(t||0).toString(16)).length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}})).parse.prototype=m.fn,_.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/255,i=t[1]/255,s=t[2]/255,n=t[3],o=Math.max(e,i,s),a=Math.min(e,i,s),r=o-a,l=o+a,t=.5*l,i=a===o?0:e===o?60*(i-s)/r+360:i===o?60*(s-e)/r+120:60*(e-i)/r+240,l=0==r?0:t<=.5?r/l:r/(2-l);return[Math.round(i)%360,l,t,null==n?1:n]},_.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],t=t[3],i=s<=.5?s*(1+i):s+i-s*i,s=2*s-i;return[Math.round(255*H(s,i,e+1/3)),Math.round(255*H(s,i,e)),Math.round(255*H(s,i,e-1/3)),t]},w(_,function(l,t){var e=t.props,o=t.cache,a=t.to,r=t.from;m.fn[l]=function(t){if(a&&!this[o]&&(this[o]=a(this._rgba)),void 0===t)return this[o].slice();var i=P(t),s="array"===i||"object"===i?t:arguments,n=this[o].slice();return w(e,function(t,e){t=s["object"===i?t:e.idx];null==t&&(t=n[e.idx]),n[e.idx]=M(t,e)}),r?((t=m(r(n)))[o]=n,t):m(n)},w(e,function(a,r){m.fn[a]||(m.fn[a]=function(t){var e,i=P(t),s="alpha"===a?this._hsla?"hsla":"rgba":l,n=this[s](),o=n[r.idx];return"undefined"===i?o:("function"===i&&(i=P(t=t.call(this,o))),null==t&&r.empty?this:("string"===i&&(e=f.exec(t))&&(t=o+parseFloat(e[2])*("+"===e[1]?1:-1)),n[r.idx]=t,this[s](n)))})})}),(m.hook=function(t){t=t.split(" ");w(t,function(t,o){d.cssHooks[o]={set:function(t,e){var i,s,n="";if("transparent"!==e&&("string"!==P(e)||(i=S(e)))){if(e=m(i||e),!b.rgba&&1!==e._rgba[3]){for(s="backgroundColor"===o?t.parentNode:t;(""===n||"transparent"===n)&&s&&s.style;)try{n=d.css(s,"backgroundColor"),s=s.parentNode}catch(t){}e=e.blend(n&&"transparent"!==n?n:"_default")}e=e.toRgbaString()}try{t.style[o]=e}catch(t){}}},d.fx.step[o]=function(t){t.colorInit||(t.start=m(t.elem,o),t.end=m(t.end),t.colorInit=!0),d.cssHooks[o].set(t.elem,t.start.transition(t.end,t.pos))}})})("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),d.cssHooks.borderColor={expand:function(i){var s={};return w(["Top","Right","Bottom","Left"],function(t,e){s["border"+e+"Color"]=i}),s}};var z,A,O,N,E,W,F,L,R,Y,B=d.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"},j="ui-effects-",q="ui-effects-style",K="ui-effects-animated";function U(t){var e,i,s=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(s&&s.length&&s[0]&&s[s[0]])for(i=s.length;i--;)"string"==typeof s[e=s[i]]&&(n[e.replace(/-([\da-z])/gi,function(t,e){return e.toUpperCase()})]=s[e]);else for(e in s)"string"==typeof s[e]&&(n[e]=s[e]);return n}function X(t,e,i,s){return t={effect:t=V.isPlainObject(t)?(e=t).effect:t},"function"==typeof(e=null==e?{}:e)&&(s=e,i=null,e={}),"number"!=typeof e&&!V.fx.speeds[e]||(s=i,i=e,e={}),"function"==typeof i&&(s=i,i=null),e&&V.extend(t,e),i=i||e.duration,t.duration=V.fx.off?0:"number"==typeof i?i:i in V.fx.speeds?V.fx.speeds[i]:V.fx.speeds._default,t.complete=s||e.complete,t}function $(t){return!t||"number"==typeof t||V.fx.speeds[t]||("string"==typeof t&&!V.effects.effect[t]||("function"==typeof t||"object"==typeof t&&!t.effect))}function G(t,e){var i=e.outerWidth(),e=e.outerHeight(),t=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t)||["",0,i,e,0];return{top:parseFloat(t[1])||0,right:"auto"===t[2]?i:parseFloat(t[2]),bottom:"auto"===t[3]?e:parseFloat(t[3]),left:parseFloat(t[4])||0}}V.effects={effect:{}},N=["add","remove","toggle"],E={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1},V.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,e){V.fx.step[e]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(d.style(t.elem,e,t.end),t.setAttr=!0)}}),V.fn.addBack||(V.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),V.effects.animateClass=function(n,t,e,i){var o=V.speed(t,e,i);return this.queue(function(){var i=V(this),t=i.attr("class")||"",e=(e=o.children?i.find("*").addBack():i).map(function(){return{el:V(this),start:U(this)}}),s=function(){V.each(N,function(t,e){n[e]&&i[e+"Class"](n[e])})};s(),e=e.map(function(){return this.end=U(this.el[0]),this.diff=function(t,e){var i,s,n={};for(i in e)s=e[i],t[i]!==s&&(E[i]||!V.fx.step[i]&&isNaN(parseFloat(s))||(n[i]=s));return n}(this.start,this.end),this}),i.attr("class",t),e=e.map(function(){var t=this,e=V.Deferred(),i=V.extend({},o,{queue:!1,complete:function(){e.resolve(t)}});return this.el.animate(this.diff,i),e.promise()}),V.when.apply(V,e.get()).done(function(){s(),V.each(arguments,function(){var e=this.el;V.each(this.diff,function(t){e.css(t,"")})}),o.complete.call(i[0])})})},V.fn.extend({addClass:(O=V.fn.addClass,function(t,e,i,s){return e?V.effects.animateClass.call(this,{add:t},e,i,s):O.apply(this,arguments)}),removeClass:(A=V.fn.removeClass,function(t,e,i,s){return 1<arguments.length?V.effects.animateClass.call(this,{remove:t},e,i,s):A.apply(this,arguments)}),toggleClass:(z=V.fn.toggleClass,function(t,e,i,s,n){return"boolean"==typeof e||void 0===e?i?V.effects.animateClass.call(this,e?{add:t}:{remove:t},i,s,n):z.apply(this,arguments):V.effects.animateClass.call(this,{toggle:t},e,i,s)}),switchClass:function(t,e,i,s,n){return V.effects.animateClass.call(this,{add:e,remove:t},i,s,n)}}),V.expr&&V.expr.pseudos&&V.expr.pseudos.animated&&(V.expr.pseudos.animated=(W=V.expr.pseudos.animated,function(t){return!!V(t).data(K)||W(t)})),!1!==V.uiBackCompat&&V.extend(V.effects,{save:function(t,e){for(var i=0,s=e.length;i<s;i++)null!==e[i]&&t.data(j+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;s<n;s++)null!==e[s]&&(i=t.data(j+e[s]),t.css(e[s],i))},setMode:function(t,e){return e="toggle"===e?t.is(":hidden")?"show":"hide":e},createWrapper:function(i){if(i.parent().is(".ui-effects-wrapper"))return i.parent();var s={width:i.outerWidth(!0),height:i.outerHeight(!0),float:i.css("float")},t=V("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.1",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1<e&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(q,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(q)||"",t.removeData(q)},mode:function(t,e){t=t.is(":hidden");return"toggle"===e&&(e=t?"show":"hide"),e=(t?"hide"===e:"show"===e)?"none":e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(t){var e,i=t.css("position"),s=t.position();return t.css({marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()),/^(static|relative)/.test(i)&&(i="absolute",e=V("<"+t[0].nodeName+">").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(j+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=j+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0<i[0]&&(o[e]=i[0]*n+i[1])}),o}}),V.fn.extend({effect:function(){function t(t){var e=V(this),i=V.effects.mode(e,r)||o;e.data(K,!0),l.push(i),o&&("show"===i||i===o&&"hide"===i)&&e.show(),o&&"none"===i||V.effects.saveStyle(e),"function"==typeof t&&t()}var s=X.apply(this,arguments),n=V.effects.effect[s.effect],o=n.mode,e=s.queue,i=e||"fx",a=s.complete,r=s.mode,l=[];return V.fx.off||!n?r?this[r](s.duration,a):this.each(function(){a&&a.call(this)}):!1===e?this.each(t).each(h):this.queue(i,t).queue(i,h);function h(t){var e=V(this);function i(){"function"==typeof a&&a.call(e[0]),"function"==typeof t&&t()}s.mode=l.shift(),!1===V.uiBackCompat||o?"none"===s.mode?(e[r](),i()):n.call(e[0],s,function(){e.removeData(K),V.effects.cleanUp(e),"hide"===s.mode&&e.hide(),i()}):(e.is(":hidden")?"hide"===r:"show"===r)?(e[r](),i()):n.call(e[0],s,i)}},show:(R=V.fn.show,function(t){if($(t))return R.apply(this,arguments);t=X.apply(this,arguments);return t.mode="show",this.effect.call(this,t)}),hide:(L=V.fn.hide,function(t){if($(t))return L.apply(this,arguments);t=X.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)}),toggle:(F=V.fn.toggle,function(t){if($(t)||"boolean"==typeof t)return F.apply(this,arguments);t=X.apply(this,arguments);return t.mode="toggle",this.effect.call(this,t)}),cssUnit:function(t){var i=this.css(t),s=[];return V.each(["em","px","%","pt"],function(t,e){0<i.indexOf(e)&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):G(this.css("clip"),this)},transfer:function(t,e){var i=V(this),s=V(t.to),n="fixed"===s.css("position"),o=V("body"),a=n?o.scrollTop():0,r=n?o.scrollLeft():0,o=s.offset(),o={top:o.top-a,left:o.left-r,height:s.innerHeight(),width:s.innerWidth()},s=i.offset(),l=V("<div class='ui-effects-transfer'></div>");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=G(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},Y={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){Y[t]=function(t){return Math.pow(t,e+2)}}),V.extend(Y,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(Y,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});y=V.effects,V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,r="show"===o,l=t.direction||"up",h=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===l||"down"===l?"top":"left",f="up"===l||"left"===l,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),l=n.css(p),h=h||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=l,n.css("opacity",0).css(p,f?2*-h:2*h).animate(s,u,d)),a&&(h/=Math.pow(2,c-1)),(s={})[p]=l;g<c;g++)(i={})[p]=(f?"-=":"+=")+h,n.animate(i,u,d).animate(s,u,d),h=a?2*h:h/2;a&&((i={opacity:0})[p]=(f?"-=":"+=")+h,n.animate(i,u,d)),n.queue(e),V.effects.unshift(n,t,1+o)}),V.effects.define("clip","hide",function(t,e){var i={},s=V(this),n=t.direction||"vertical",o="both"===n,a=o||"horizontal"===n,o=o||"vertical"===n,n=s.cssClip();i.clip={top:o?(n.bottom-n.top)/2:n.top,right:a?(n.right-n.left)/2:n.right,bottom:o?(n.bottom-n.top)/2:n.bottom,left:a?(n.right-n.left)/2:n.left},V.effects.createPlaceholder(s),"show"===t.mode&&(s.cssClip(i.clip),i.clip=n),s.animate(i,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("drop","hide",function(t,e){var i=V(this),s="show"===t.mode,n=t.direction||"left",o="up"===n||"down"===n?"top":"left",a="up"===n||"left"===n?"-=":"+=",r="+="==a?"-=":"+=",l={opacity:0};V.effects.createPlaceholder(i),n=t.distance||i["top"==o?"outerHeight":"outerWidth"](!0)/2,l[o]=a+n,s&&(i.css(l),l[o]=r+n,l.opacity=1),i.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("explode","hide",function(t,e){var i,s,n,o,a,r,l=t.pieces?Math.round(Math.sqrt(t.pieces)):3,h=l,c=V(this),u="show"===t.mode,d=c.show().css("visibility","hidden").offset(),p=Math.ceil(c.outerWidth()/h),f=Math.ceil(c.outerHeight()/l),g=[];function m(){g.push(this),g.length===l*h&&(c.css({visibility:"visible"}),V(g).remove(),e())}for(i=0;i<l;i++)for(o=d.top+i*f,r=i-(l-1)/2,s=0;s<h;s++)n=d.left+s*p,a=s-(h-1)/2,c.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l<o;l++)i.animate({opacity:r},a,t.easing),r=1-r;i.animate({opacity:r},a,t.easing),i.queue(e),V.effects.unshift(i,s,1+o)}),V.effects.define("shake",function(t,e){var i=1,s=V(this),n=t.direction||"left",o=t.distance||20,a=t.times||3,r=2*a+1,l=Math.round(t.duration/r),h="up"===n||"down"===n?"top":"left",c="up"===n||"left"===n,u={},d={},p={},n=s.queue().length;for(V.effects.createPlaceholder(s),u[h]=(c?"-=":"+=")+o,d[h]=(c?"+=":"-=")+2*o,p[h]=(c?"-=":"+=")+2*o,s.animate(u,l,t.easing);i<a;i++)s.animate(d,l,t.easing).animate(p,l,t.easing);s.animate(d,l,t.easing).animate(u,l/2,t.easing).queue(e),V.effects.unshift(s,n,1+r)}),V.effects.define("slide","show",function(t,e){var i,s,n=V(this),o={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},a=t.mode,r=t.direction||"left",l="up"===r||"down"===r?"top":"left",h="up"===r||"left"===r,c=t.distance||n["top"==l?"outerHeight":"outerWidth"](!0),u={};V.effects.createPlaceholder(n),i=n.cssClip(),s=n.position()[l],u[l]=(h?-1:1)*c+s,u.clip=n.cssClip(),u.clip[o[r][1]]=u.clip[o[r][0]],"show"===a&&(n.cssClip(u.clip),n.css(l,u[l]),u.clip=i,u[l]=s),n.animate(u,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),y=!1!==V.uiBackCompat?V.effects.define("transfer",function(t,e){V(this).transfer(t,e)}):y;V.ui.focusable=function(t,e){var i,s,n,o,a=t.nodeName.toLowerCase();return"area"===a?(s=(i=t.parentNode).name,!(!t.href||!s||"map"!==i.nodeName.toLowerCase())&&(0<(s=V("img[usemap='#"+s+"']")).length&&s.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(a)?(n=!t.disabled)&&(o=V(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===a&&t.href||e,n&&V(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"visible"===e}(V(t)))},V.extend(V.expr.pseudos,{focusable:function(t){return V.ui.focusable(t,null!=V.attr(t,"tabindex"))}});var Q,J;V.ui.focusable,V.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):V(this[0].form)},V.ui.formResetMixin={_formResetHandler:function(){var e=V(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");V.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element._form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(V.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}};V.expr.pseudos||(V.expr.pseudos=V.expr[":"]),V.uniqueSort||(V.uniqueSort=V.unique),V.escapeSelector||(Q=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,J=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},V.escapeSelector=function(t){return(t+"").replace(Q,J)}),V.fn.even&&V.fn.odd||V.fn.extend({even:function(){return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}});var Z;V.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},V.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+V.escapeSelector(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},V.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=V(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:V(this[0].ownerDocument||document)},V.extend(V.expr.pseudos,{tabbable:function(t){var e=V.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&V.ui.focusable(t,i)}}),V.fn.extend({uniqueId:(Z=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++Z)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&V(this).removeAttr("id")})}}),V.widget("ui.accordion",{version:"1.13.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(t){return t.find("> li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V("<span>"),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()<i.index()),c=this.options.animate||{},u=h&&c.down||c,h=function(){a._toggleComplete(e)};return n=(n="string"==typeof u?u:n)||u.easing||c.easing,o=(o="number"==typeof u?u:o)||u.duration||c.duration,i.length?t.length?(s=t.show().outerHeight(),i.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),void t.hide().animate(this.showProps,{duration:o,easing:n,complete:h,step:function(t,e){e.now=Math.round(t),"height"!==e.prop?"content-box"===l&&(r+=e.now):"content"!==a.options.heightStyle&&(e.now=Math.round(s-i.outerHeight()-r),r=0)}})):i.animate(this.hideProps,o,n,h):t.animate(this.showProps,o,n,h)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),V.ui.safeActiveElement=function(e){var i;try{i=e.activeElement}catch(t){i=e.body}return i=!(i=i||e.body).nodeName?e.body:i},V.widget("ui.menu",{version:"1.13.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("<span>").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s<e+t&&this.activeMenu.scrollTop(i+e-s+t))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=V.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(e)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var t=i?this.element:V(e&&e.target).closest(this.element.find(".ui-menu"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=t},i?0:this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!V(t.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,i){var s;(s=this.active?"first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first():s)&&s.length&&this.active||(s=this._menuItems(this.activeMenu)[e]()),this.focus(i,s)},nextPage:function(t){var e,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each(function(){return(e=V(this)).offset().top-i-s<0}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var e,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each(function(){return 0<(e=V(this)).offset().top-i+s}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||V(t.target).closest(".ui-menu-item");var e={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,e)},_filterMenuItems:function(t){var t=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),e=new RegExp("^"+t,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return e.test(String.prototype.trim.call(V(this).children(".ui-menu-item-wrapper").text()))})}});V.widget("ui.autocomplete",{version:"1.13.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("<div>").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==V.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=V("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}.bind(this)},__response:function(t){t=t&&this._normalize(t),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:V.map(t,function(t){return"string"==typeof t?{label:t,value:t}:V.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var e=this.menu.element.empty();this._renderMenu(e,t),this.isNewMenu=!0,this.menu.refresh(),e.show(),this._resizeMenu(),e.position(V.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,t){var s=this;V.each(t,function(t,e){s._renderItemData(i,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(t,e){return V("<li>").append(V("<div>").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("<div>").text(e))},100))}});V.ui.autocomplete;var tt=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.13.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};if(t)return"controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(a=a.concat(e.get()))):void(V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(tt,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.13.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this,i=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){e.originalLabel+=3===this.nodeType?V(this).text():this.outerHTML}),this.originalLabel&&(i.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(i.disabled=t),i},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+V.escapeSelector(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(this)._form().length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V("<span>"),this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var et;V.ui.checkboxradio;V.widget("ui.button",{version:"1.13.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),null!=(t=this.element[0].disabled)&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(t){t.keyCode===V.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(t,e){var i="iconPosition"!==t,s=i?this.options.iconPosition:e,t="top"===s||"bottom"===s;this.icon?i&&this._removeClass(this.icon,null,this.options.icon):(this.icon=V("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),i&&this._addClass(this.icon,null,e),this._attachIcon(s),t?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(s))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=(void 0===t.showLabel?this.options:t).showLabel,i=(void 0===t.icon?this.options:t).icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),(this.element[0].disabled=e)&&this.element.trigger("blur"))},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),!1!==V.uiBackCompat&&(V.widget("ui.button",V.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){"text"!==t?("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments)):this._super("showLabel",e)}}),V.fn.button=(et=V.fn.button,function(i){var t="string"==typeof i,s=Array.prototype.slice.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t=V(this).attr("type"),e=V.data(this,"ui-"+("checkbox"!==t&&"radio"!==t?"button":"checkboxradio"));return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for button widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on button prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V(this).attr("type"),e="checkbox"!==t&&"radio"!==t?"button":"checkboxradio",t=V.data(this,"ui-"+e);t?(t.option(i||{}),t._init&&t._init()):"button"!=e?V(this).checkboxradio(V.extend({icon:!1},i)):et.call(V(this),i)})),n}),V.fn.buttonset=function(){return V.ui.controlgroup||V.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))});var it;V.ui.button;function st(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:"",selectMonthLabel:"Select month",selectYearLabel:"Select year"},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,onUpdateDatepicker:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},V.extend(this._defaults,this.regional[""]),this.regional.en=V.extend(!0,{},this.regional[""]),this.regional["en-US"]=V.extend(!0,{},this.regional.en),this.dpDiv=nt(V("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function nt(t){var e="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.on("mouseout",e,function(){V(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",e,ot)}function ot(){V.datepicker._isDisabledDatepicker((it.inline?it.dpDiv.parent():it.input)[0])||(V(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),V(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).addClass("ui-datepicker-next-hover"))}function at(t,e){for(var i in V.extend(t,e),e)null==e[i]&&(t[i]=e[i]);return t}V.extend(V.ui,{datepicker:{version:"1.13.1"}}),V.extend(st.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return at(this._defaults,t||{}),this},_attachDatepicker:function(t,e){var i,s=t.nodeName.toLowerCase(),n="div"===s||"span"===s;t.id||(this.uuid+=1,t.id="dp"+this.uuid),(i=this._newInst(V(t),n)).settings=V.extend({},e||{}),"input"===s?this._connectDatepicker(t,i):n&&this._inlineDatepicker(t,i)},_newInst:function(t,e){return{id:t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:e,dpDiv:e?nt(V("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,e){var i=V(t);e.append=V([]),e.trigger=V([]),i.hasClass(this.markerClassName)||(this._attachments(i,e),i.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(e),V.data(t,"datepicker",e),e.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,e){var i,s=this._get(e,"appendText"),n=this._get(e,"isRTL");e.append&&e.append.remove(),s&&(e.append=V("<span>").addClass(this._appendClass).text(s),t[n?"before":"after"](e.append)),t.off("focus",this._showDatepicker),e.trigger&&e.trigger.remove(),"focus"!==(i=this._get(e,"showOn"))&&"both"!==i||t.on("focus",this._showDatepicker),"button"!==i&&"both"!==i||(s=this._get(e,"buttonText"),i=this._get(e,"buttonImage"),this._get(e,"buttonImageOnly")?e.trigger=V("<img>").addClass(this._triggerClass).attr({src:i,alt:s,title:s}):(e.trigger=V("<button type='button'>").addClass(this._triggerClass),i?e.trigger.html(V("<img>").attr({src:i,alt:s,title:s})):e.trigger.text(s)),t[n?"before":"after"](e.trigger),e.trigger.on("click",function(){return V.datepicker._datepickerShowing&&V.datepicker._lastInput===t[0]?V.datepicker._hideDatepicker():(V.datepicker._datepickerShowing&&V.datepicker._lastInput!==t[0]&&V.datepicker._hideDatepicker(),V.datepicker._showDatepicker(t[0])),!1}))},_autoSize:function(t){var e,i,s,n,o,a;this._get(t,"autoSize")&&!t.inline&&(o=new Date(2009,11,20),(a=this._get(t,"dateFormat")).match(/[DM]/)&&(e=function(t){for(n=s=i=0;n<t.length;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length))},_inlineDatepicker:function(t,e){var i=V(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(e.dpDiv),V.data(t,"datepicker",e),this._setDate(e,this._getDefaultDate(e),!0),this._updateDatepicker(e),this._updateAlternate(e),e.settings.disabled&&this._disableDatepicker(t),e.dpDiv.css("display","block"))},_dialogDatepicker:function(t,e,i,s,n){var o,a=this._dialogInst;return a||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=V("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),V("body").append(this._dialogInput),(a=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},V.data(this._dialogInput[0],"datepicker",a)),at(a.settings,s||{}),e=e&&e.constructor===Date?this._formatDate(a,e):e,this._dialogInput.val(e),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(o=document.documentElement.clientWidth,s=document.documentElement.clientHeight,e=document.documentElement.scrollLeft||document.body.scrollLeft,n=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[o/2-100+e,s/2-150+n]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),a.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),V.blockUI&&V.blockUI(this.dpDiv),V.data(this._dialogInput[0],"datepicker",a),this},_destroyDatepicker:function(t){var e,i=V(t),s=V.data(t,"datepicker");i.hasClass(this.markerClassName)&&(e=t.nodeName.toLowerCase(),V.removeData(t,"datepicker"),"input"===e?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==e&&"span"!==e||i.removeClass(this.markerClassName).empty(),it===s&&(it=null,this._curInst=null))},_enableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!1,s.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==t&&"span"!==t||((i=i.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!0,s.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==t&&"span"!==t||((i=i.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;e<this._disabledInputs.length;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(t){try{return V.data(t,"datepicker")}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,e,i){var s,n,o=this._getInst(t);if(2===arguments.length&&"string"==typeof e)return"defaults"===e?V.extend({},V.datepicker._defaults):o?"all"===e?V.extend({},o.settings):this._get(o,e):null;s=e||{},"string"==typeof e&&((s={})[e]=i),o&&(this._curInst===o&&this._hideDatepicker(),n=this._getDateDatepicker(t,!0),e=this._getMinMaxDate(o,"min"),i=this._getMinMaxDate(o,"max"),at(o.settings,s),null!==e&&void 0!==s.dateFormat&&void 0===s.minDate&&(o.settings.minDate=this._formatDate(o,e)),null!==i&&void 0!==s.dateFormat&&void 0===s.maxDate&&(o.settings.maxDate=this._formatDate(o,i)),"disabled"in s&&(s.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(V(t),o),this._autoSize(o),this._setDate(o,n),this._updateAlternate(o),this._updateDatepicker(o))},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){t=this._getInst(t);t&&this._updateDatepicker(t)},_setDateDatepicker:function(t,e){t=this._getInst(t);t&&(this._setDate(t,e),this._updateDatepicker(t),this._updateAlternate(t))},_getDateDatepicker:function(t,e){t=this._getInst(t);return t&&!t.inline&&this._setDateFromField(t,e),t?this._getDate(t):null},_doKeyDown:function(t){var e,i,s=V.datepicker._getInst(t.target),n=!0,o=s.dpDiv.is(".ui-datepicker-rtl");if(s._keyEvent=!0,V.datepicker._datepickerShowing)switch(t.keyCode){case 9:V.datepicker._hideDatepicker(),n=!1;break;case 13:return(i=V("td."+V.datepicker._dayOverClass+":not(."+V.datepicker._currentClass+")",s.dpDiv))[0]&&V.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,i[0]),(e=V.datepicker._get(s,"onSelect"))?(i=V.datepicker._formatDate(s),e.apply(s.input?s.input[0]:null,[i,s])):V.datepicker._hideDatepicker(),!1;case 27:V.datepicker._hideDatepicker();break;case 33:V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 34:V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&V.datepicker._clearDate(t.target),n=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&V.datepicker._gotoToday(t.target),n=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?1:-1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,-7,"D"),n=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?-1:1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,7,"D"),n=t.ctrlKey||t.metaKey;break;default:n=!1}else 36===t.keyCode&&t.ctrlKey?V.datepicker._showDatepicker(this):n=!1;n&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var e,i=V.datepicker._getInst(t.target);if(V.datepicker._get(i,"constrainInput"))return e=V.datepicker._possibleChars(V.datepicker._get(i,"dateFormat")),i=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||i<" "||!e||-1<e.indexOf(i)},_doKeyUp:function(t){t=V.datepicker._getInst(t.target);if(t.input.val()!==t.lastVal)try{V.datepicker.parseDate(V.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,V.datepicker._getFormatConfig(t))&&(V.datepicker._setDateFromField(t),V.datepicker._updateAlternate(t),V.datepicker._updateDatepicker(t))}catch(t){}return!0},_showDatepicker:function(t){var e,i,s,n;"input"!==(t=t.target||t).nodeName.toLowerCase()&&(t=V("input",t.parentNode)[0]),V.datepicker._isDisabledDatepicker(t)||V.datepicker._lastInput===t||(n=V.datepicker._getInst(t),V.datepicker._curInst&&V.datepicker._curInst!==n&&(V.datepicker._curInst.dpDiv.stop(!0,!0),n&&V.datepicker._datepickerShowing&&V.datepicker._hideDatepicker(V.datepicker._curInst.input[0])),!1!==(i=(s=V.datepicker._get(n,"beforeShow"))?s.apply(t,[t,n]):{})&&(at(n.settings,i),n.lastVal=null,V.datepicker._lastInput=t,V.datepicker._setDateFromField(n),V.datepicker._inDialog&&(t.value=""),V.datepicker._pos||(V.datepicker._pos=V.datepicker._findPos(t),V.datepicker._pos[1]+=t.offsetHeight),e=!1,V(t).parents().each(function(){return!(e|="fixed"===V(this).css("position"))}),s={left:V.datepicker._pos[0],top:V.datepicker._pos[1]},V.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),V.datepicker._updateDatepicker(n),s=V.datepicker._checkOffset(n,s,e),n.dpDiv.css({position:V.datepicker._inDialog&&V.blockUI?"static":e?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"}),n.inline||(i=V.datepicker._get(n,"showAnim"),s=V.datepicker._get(n,"duration"),n.dpDiv.css("z-index",function(t){for(var e,i;t.length&&t[0]!==document;){if(("absolute"===(e=t.css("position"))||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}(V(t))+1),V.datepicker._datepickerShowing=!0,V.effects&&V.effects.effect[i]?n.dpDiv.show(i,V.datepicker._get(n,"showOptions"),s):n.dpDiv[i||"show"](i?s:null),V.datepicker._shouldFocusInput(n)&&n.input.trigger("focus"),V.datepicker._curInst=n)))},_updateDatepicker:function(t){this.maxRows=4,(it=t).dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var e,i=this._getNumberOfMonths(t),s=i[1],n=t.dpDiv.find("."+this._dayOverClass+" a"),o=V.datepicker._get(t,"onUpdateDatepicker");0<n.length&&ot.apply(n.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<s&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",17*s+"em"),t.dpDiv[(1!==i[0]||1!==i[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===V.datepicker._curInst&&V.datepicker._datepickerShowing&&V.datepicker._shouldFocusInput(t)&&t.input.trigger("focus"),t.yearshtml&&(e=t.yearshtml,setTimeout(function(){e===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year").first().replaceWith(t.yearshtml),e=t.yearshtml=null},0)),o&&o.apply(t.input?t.input[0]:null,[t])},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(t,e,i){var s=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,a=t.input?t.input.outerHeight():0,r=document.documentElement.clientWidth+(i?0:V(document).scrollLeft()),l=document.documentElement.clientHeight+(i?0:V(document).scrollTop());return e.left-=this._get(t,"isRTL")?s-o:0,e.left-=i&&e.left===t.input.offset().left?V(document).scrollLeft():0,e.top-=i&&e.top===t.input.offset().top+a?V(document).scrollTop():0,e.left-=Math.min(e.left,e.left+s>r&&s<r?Math.abs(e.left+s-r):0),e.top-=Math.min(e.top,e.top+n>l&&n<l?Math.abs(n+a):0),e},_findPos:function(t){for(var e=this._getInst(t),i=this._get(e,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||V.expr.pseudos.hidden(t));)t=t[i?"previousSibling":"nextSibling"];return[(e=V(t).offset()).left,e.top]},_hideDatepicker:function(t){var e,i,s=this._curInst;!s||t&&s!==V.data(t,"datepicker")||this._datepickerShowing&&(e=this._get(s,"showAnim"),i=this._get(s,"duration"),t=function(){V.datepicker._tidyDialog(s)},V.effects&&(V.effects.effect[e]||V.effects[e])?s.dpDiv.hide(e,V.datepicker._get(s,"showOptions"),i,t):s.dpDiv["slideDown"===e?"slideUp":"fadeIn"===e?"fadeOut":"hide"](e?i:null,t),e||t(),this._datepickerShowing=!1,(t=this._get(s,"onClose"))&&t.apply(s.input?s.input[0]:null,[s.input?s.input.val():"",s]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),V.blockUI&&(V.unblockUI(),V("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(t){var e;V.datepicker._curInst&&(e=V(t.target),t=V.datepicker._getInst(e[0]),(e[0].id===V.datepicker._mainDivId||0!==e.parents("#"+V.datepicker._mainDivId).length||e.hasClass(V.datepicker.markerClassName)||e.closest("."+V.datepicker._triggerClass).length||!V.datepicker._datepickerShowing||V.datepicker._inDialog&&V.blockUI)&&(!e.hasClass(V.datepicker.markerClassName)||V.datepicker._curInst===t)||V.datepicker._hideDatepicker())},_adjustDate:function(t,e,i){var s=V(t),t=this._getInst(s[0]);this._isDisabledDatepicker(s[0])||(this._adjustInstDate(t,e,i),this._updateDatepicker(t))},_gotoToday:function(t){var e=V(t),i=this._getInst(e[0]);this._get(i,"gotoCurrent")&&i.currentDay?(i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear):(t=new Date,i.selectedDay=t.getDate(),i.drawMonth=i.selectedMonth=t.getMonth(),i.drawYear=i.selectedYear=t.getFullYear()),this._notifyChange(i),this._adjustDate(e)},_selectMonthYear:function(t,e,i){var s=V(t),t=this._getInst(s[0]);t["selected"+("M"===i?"Month":"Year")]=t["draw"+("M"===i?"Month":"Year")]=parseInt(e.options[e.selectedIndex].value,10),this._notifyChange(t),this._adjustDate(s)},_selectDay:function(t,e,i,s){var n=V(t);V(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(n[0])||((n=this._getInst(n[0])).selectedDay=n.currentDay=parseInt(V("a",s).attr("data-date")),n.selectedMonth=n.currentMonth=e,n.selectedYear=n.currentYear=i,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){t=V(t);this._selectDate(t,"")},_selectDate:function(t,e){var i=V(t),t=this._getInst(i[0]);e=null!=e?e:this._formatDate(t),t.input&&t.input.val(e),this._updateAlternate(t),(i=this._get(t,"onSelect"))?i.apply(t.input?t.input[0]:null,[e,t]):t.input&&t.input.trigger("change"),t.inline?this._updateDatepicker(t):(this._hideDatepicker(),this._lastInput=t.input[0],"object"!=typeof t.input[0]&&t.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(t){var e,i,s=this._get(t,"altField");s&&(e=this._get(t,"altFormat")||this._get(t,"dateFormat"),i=this._getDate(t),t=this.formatDate(e,i,this._getFormatConfig(t)),V(document).find(s).val(t))},noWeekends:function(t){t=t.getDay();return[0<t&&t<6,""]},iso8601Week:function(t){var e=new Date(t.getTime());return e.setDate(e.getDate()+4-(e.getDay()||7)),t=e.getTime(),e.setMonth(0),e.setDate(1),Math.floor(Math.round((t-e)/864e5)/7)+1},parseDate:function(e,n,t){if(null==e||null==n)throw"Invalid arguments";if(""===(n="object"==typeof n?n.toString():n+""))return null;for(var i,s,o,a=0,r=(t?t.shortYearCutoff:null)||this._defaults.shortYearCutoff,r="string"!=typeof r?r:(new Date).getFullYear()%100+parseInt(r,10),l=(t?t.dayNamesShort:null)||this._defaults.dayNamesShort,h=(t?t.dayNames:null)||this._defaults.dayNames,c=(t?t.monthNamesShort:null)||this._defaults.monthNamesShort,u=(t?t.monthNames:null)||this._defaults.monthNames,d=-1,p=-1,f=-1,g=-1,m=!1,_=function(t){t=w+1<e.length&&e.charAt(w+1)===t;return t&&w++,t},v=function(t){var e=_(t),e="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,e=new RegExp("^\\d{"+("y"===t?e:1)+","+e+"}"),e=n.substring(a).match(e);if(!e)throw"Missing number at position "+a;return a+=e[0].length,parseInt(e[0],10)},b=function(t,e,i){var s=-1,e=V.map(_(t)?i:e,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(V.each(e,function(t,e){var i=e[1];if(n.substr(a,i.length).toLowerCase()===i.toLowerCase())return s=e[0],a+=i.length,!1}),-1!==s)return s+1;throw"Unknown name at position "+a},y=function(){if(n.charAt(a)!==e.charAt(w))throw"Unexpected literal at position "+a;a++},w=0;w<e.length;w++)if(m)"'"!==e.charAt(w)||_("'")?y():m=!1;else switch(e.charAt(w)){case"d":f=v("d");break;case"D":b("D",l,h);break;case"o":g=v("o");break;case"m":p=v("m");break;case"M":p=b("M",c,u);break;case"y":d=v("y");break;case"@":d=(o=new Date(v("@"))).getFullYear(),p=o.getMonth()+1,f=o.getDate();break;case"!":d=(o=new Date((v("!")-this._ticksTo1970)/1e4)).getFullYear(),p=o.getMonth()+1,f=o.getDate();break;case"'":_("'")?y():m=!0;break;default:y()}if(a<n.length&&(s=n.substr(a),!/^\s+/.test(s)))throw"Extra/unparsed characters found in date: "+s;if(-1===d?d=(new Date).getFullYear():d<100&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=r?0:-100)),-1<g)for(p=1,f=g;;){if(f<=(i=this._getDaysInMonth(d,p-1)))break;p++,f-=i}if((o=this._daylightSavingAdjust(new Date(d,p-1,f))).getFullYear()!==d||o.getMonth()+1!==p||o.getDate()!==f)throw"Invalid date";return o},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(e,t,i){if(!t)return"";function s(t,e,i){var s=""+e;if(c(t))for(;s.length<i;)s="0"+s;return s}function n(t,e,i,s){return(c(t)?s:i)[e]}var o,a=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,r=(i?i.dayNames:null)||this._defaults.dayNames,l=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,h=(i?i.monthNames:null)||this._defaults.monthNames,c=function(t){t=o+1<e.length&&e.charAt(o+1)===t;return t&&o++,t},u="",d=!1;if(t)for(o=0;o<e.length;o++)if(d)"'"!==e.charAt(o)||c("'")?u+=e.charAt(o):d=!1;else switch(e.charAt(o)){case"d":u+=s("d",t.getDate(),2);break;case"D":u+=n("D",t.getDay(),a,r);break;case"o":u+=s("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=s("m",t.getMonth()+1,2);break;case"M":u+=n("M",t.getMonth(),l,h);break;case"y":u+=c("y")?t.getFullYear():(t.getFullYear()%100<10?"0":"")+t.getFullYear()%100;break;case"@":u+=t.getTime();break;case"!":u+=1e4*t.getTime()+this._ticksTo1970;break;case"'":c("'")?u+="'":d=!0;break;default:u+=e.charAt(o)}return u},_possibleChars:function(e){for(var t="",i=!1,s=function(t){t=n+1<e.length&&e.charAt(n+1)===t;return t&&n++,t},n=0;n<e.length;n++)if(i)"'"!==e.charAt(n)||s("'")?t+=e.charAt(n):i=!1;else switch(e.charAt(n)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":s("'")?t+="'":i=!0;break;default:t+=e.charAt(n)}return t},_get:function(t,e){return(void 0!==t.settings[e]?t.settings:this._defaults)[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(t){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(r,t,e){var i,s,t=null==t||""===t?e:"string"==typeof t?function(t){try{return V.datepicker.parseDate(V.datepicker._get(r,"dateFormat"),t,V.datepicker._getFormatConfig(r))}catch(t){}for(var e=(t.toLowerCase().match(/^c/)?V.datepicker._getDate(r):null)||new Date,i=e.getFullYear(),s=e.getMonth(),n=e.getDate(),o=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=o.exec(t);a;){switch(a[2]||"d"){case"d":case"D":n+=parseInt(a[1],10);break;case"w":case"W":n+=7*parseInt(a[1],10);break;case"m":case"M":s+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s))}a=o.exec(t)}return new Date(i,s,n)}(t):"number"==typeof t?isNaN(t)?e:(i=t,(s=new Date).setDate(s.getDate()+i),s):new Date(t.getTime());return(t=t&&"Invalid Date"===t.toString()?e:t)&&(t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0)),this._daylightSavingAdjust(t)},_daylightSavingAdjust:function(t){return t?(t.setHours(12<t.getHours()?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,e=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=e.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=e.getMonth(),t.drawYear=t.selectedYear=t.currentYear=e.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){return!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay))},_attachHandlers:function(t){var e=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){V.datepicker._adjustDate(i,-e,"M")},next:function(){V.datepicker._adjustDate(i,+e,"M")},hide:function(){V.datepicker._hideDatepicker()},today:function(){V.datepicker._gotoToday(i)},selectDay:function(){return V.datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return V.datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return V.datepicker._selectMonthYear(i,this,"Y"),!1}};V(this).on(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,l,h,c,u,d,p,f,g,m,_,v,b,y,w,x,k,C,D,I,T,P,M,S,H,z,A=new Date,O=this._daylightSavingAdjust(new Date(A.getFullYear(),A.getMonth(),A.getDate())),N=this._get(t,"isRTL"),E=this._get(t,"showButtonPanel"),W=this._get(t,"hideIfNoPrevNext"),F=this._get(t,"navigationAsDateFormat"),L=this._getNumberOfMonths(t),R=this._get(t,"showCurrentAtPos"),A=this._get(t,"stepMonths"),Y=1!==L[0]||1!==L[1],B=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),j=this._getMinMaxDate(t,"min"),q=this._getMinMaxDate(t,"max"),K=t.drawMonth-R,U=t.drawYear;if(K<0&&(K+=12,U--),q)for(e=this._daylightSavingAdjust(new Date(q.getFullYear(),q.getMonth()-L[0]*L[1]+1,q.getDate())),e=j&&e<j?j:e;this._daylightSavingAdjust(new Date(U,K,1))>e;)--K<0&&(K=11,U--);for(t.drawMonth=K,t.drawYear=U,R=this._get(t,"prevText"),R=F?this.formatDate(R,this._daylightSavingAdjust(new Date(U,K-A,1)),this._getFormatConfig(t)):R,i=this._canAdjustMonth(t,-1,U,K)?V("<a>").attr({class:"ui-datepicker-prev ui-corner-all","data-handler":"prev","data-event":"click",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"e":"w")).text(R))[0].outerHTML:W?"":V("<a>").attr({class:"ui-datepicker-prev ui-corner-all ui-state-disabled",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"e":"w")).text(R))[0].outerHTML,R=this._get(t,"nextText"),R=F?this.formatDate(R,this._daylightSavingAdjust(new Date(U,K+A,1)),this._getFormatConfig(t)):R,s=this._canAdjustMonth(t,1,U,K)?V("<a>").attr({class:"ui-datepicker-next ui-corner-all","data-handler":"next","data-event":"click",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"w":"e")).text(R))[0].outerHTML:W?"":V("<a>").attr({class:"ui-datepicker-next ui-corner-all ui-state-disabled",title:R}).append(V("<span>").attr("class","ui-icon ui-icon-circle-triangle-"+(N?"w":"e")).text(R))[0].outerHTML,A=this._get(t,"currentText"),W=this._get(t,"gotoCurrent")&&t.currentDay?B:O,A=F?this.formatDate(A,W,this._getFormatConfig(t)):A,R="",t.inline||(R=V("<button>").attr({type:"button",class:"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all","data-handler":"hide","data-event":"click"}).text(this._get(t,"closeText"))[0].outerHTML),F="",E&&(F=V("<div class='ui-datepicker-buttonpane ui-widget-content'>").append(N?R:"").append(this._isInRange(t,W)?V("<button>").attr({type:"button",class:"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all","data-handler":"today","data-event":"click"}).text(A):"").append(N?"":R)[0].outerHTML),n=parseInt(this._get(t,"firstDay"),10),n=isNaN(n)?0:n,o=this._get(t,"showWeek"),a=this._get(t,"dayNames"),r=this._get(t,"dayNamesMin"),l=this._get(t,"monthNames"),h=this._get(t,"monthNamesShort"),c=this._get(t,"beforeShowDay"),u=this._get(t,"showOtherMonths"),d=this._get(t,"selectOtherMonths"),p=this._getDefaultDate(t),f="",m=0;m<L[0];m++){for(_="",this.maxRows=4,v=0;v<L[1];v++){if(b=this._daylightSavingAdjust(new Date(U,K,t.selectedDay)),y=" ui-corner-all",w="",Y){if(w+="<div class='ui-datepicker-group",1<L[1])switch(v){case 0:w+=" ui-datepicker-group-first",y=" ui-corner-"+(N?"right":"left");break;case L[1]-1:w+=" ui-datepicker-group-last",y=" ui-corner-"+(N?"left":"right");break;default:w+=" ui-datepicker-group-middle",y=""}w+="'>"}for(w+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+y+"'>"+(/all|left/.test(y)&&0===m?N?s:i:"")+(/all|right/.test(y)&&0===m?N?i:s:"")+this._generateMonthYearHeader(t,K,U,j,q,0<m||0<v,l,h)+"</div><table class='ui-datepicker-calendar'><thead><tr>",x=o?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",g=0;g<7;g++)x+="<th scope='col'"+(5<=(g+n+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+a[k=(g+n)%7]+"'>"+r[k]+"</span></th>";for(w+=x+"</tr></thead><tbody>",D=this._getDaysInMonth(U,K),U===t.selectedYear&&K===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,D)),C=(this._getFirstDayOfMonth(U,K)-n+7)%7,D=Math.ceil((C+D)/7),I=Y&&this.maxRows>D?this.maxRows:D,this.maxRows=I,T=this._daylightSavingAdjust(new Date(U,K,1-C)),P=0;P<I;P++){for(w+="<tr>",M=o?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(T)+"</td>":"",g=0;g<7;g++)S=c?c.apply(t.input?t.input[0]:null,[T]):[!0,""],z=(H=T.getMonth()!==K)&&!d||!S[0]||j&&T<j||q&&q<T,M+="<td class='"+(5<=(g+n+6)%7?" ui-datepicker-week-end":"")+(H?" ui-datepicker-other-month":"")+(T.getTime()===b.getTime()&&K===t.selectedMonth&&t._keyEvent||p.getTime()===T.getTime()&&p.getTime()===b.getTime()?" "+this._dayOverClass:"")+(z?" "+this._unselectableClass+" ui-state-disabled":"")+(H&&!u?"":" "+S[1]+(T.getTime()===B.getTime()?" "+this._currentClass:"")+(T.getTime()===O.getTime()?" ui-datepicker-today":""))+"'"+(H&&!u||!S[2]?"":" title='"+S[2].replace(/'/g,"&#39;")+"'")+(z?"":" data-handler='selectDay' data-event='click' data-month='"+T.getMonth()+"' data-year='"+T.getFullYear()+"'")+">"+(H&&!u?"&#xa0;":z?"<span class='ui-state-default'>"+T.getDate()+"</span>":"<a class='ui-state-default"+(T.getTime()===O.getTime()?" ui-state-highlight":"")+(T.getTime()===B.getTime()?" ui-state-active":"")+(H?" ui-priority-secondary":"")+"' href='#' aria-current='"+(T.getTime()===B.getTime()?"true":"false")+"' data-date='"+T.getDate()+"'>"+T.getDate()+"</a>")+"</td>",T.setDate(T.getDate()+1),T=this._daylightSavingAdjust(T);w+=M+"</tr>"}11<++K&&(K=0,U++),_+=w+="</tbody></table>"+(Y?"</div>"+(0<L[0]&&v===L[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}f+=_}return f+=F,t._keyEvent=!1,f},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="<div class='ui-datepicker-title'>",y="";if(o||!f)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' aria-label='"+_+"' data-handler='selectMonth' data-event='change'>",c=0;c<12;c++)(!l||c>=s.getMonth())&&(!h||c<=n.getMonth())&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(m||(b+=y+(!o&&f&&g?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!g)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="<select class='ui-datepicker-year' aria-label='"+v+"' data-handler='selectYear' data-event='change'>";d<=p;d++)t.yearshtml+="<option value='"+d+"'"+(d===i?" selected='selected'":"")+">"+d+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),e=i&&e<i?i:e;return t&&t<e?t:e},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){t=this._get(t,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),n=this._daylightSavingAdjust(new Date(i,s+(e<0?e:n[0]*n[1]),1));return e<0&&n.setDate(this._getDaysInMonth(n.getFullYear(),n.getMonth())),this._isInRange(t,n)},_isInRange:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=null,o=null,a=this._get(t,"yearRange");return a&&(t=a.split(":"),a=(new Date).getFullYear(),n=parseInt(t[0],10),o=parseInt(t[1],10),t[0].match(/[+\-].*/)&&(n+=a),t[1].match(/[+\-].*/)&&(o+=a)),(!i||e.getTime()>=i.getTime())&&(!s||e.getTime()<=s.getTime())&&(!n||e.getFullYear()>=n)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new st,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.1";V.datepicker,V.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var rt=!1;V(document).on("mouseup",function(){rt=!1});V.widget("ui.mouse",{version:"1.13.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!rt){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&V(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),rt=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(V.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,rt=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n<o.length;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},V.ui.safeBlur=function(t){t&&"body"!==t.nodeName.toLowerCase()&&V(t).trigger("blur")};V.widget("ui.draggable",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(t){var e=this.options;return!(this.helper||e.disabled||0<V(t.target).closest(".ui-resizable-handle").length)&&(this.handle=this._getHandle(t),!!this.handle&&(this._blurActiveElement(t),this._blockFrames(!0===e.iframeFix?"iframe":e.iframeFix),!0))},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=V(this);return V("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=V.ui.safeActiveElement(this.document[0]);V(t.target).closest(e).length||V.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===V(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this._setContainment(),!1===this._trigger("start",t)?(this._clear(),!1):(this._cacheHelperProportions(),V.ui.ddmanager&&!e.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),V.ui.ddmanager&&V.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(t,e){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!e){e=this._uiHash();if(!1===this._trigger("drag",t,e))return this._mouseUp(new V.Event("mouseup",t)),!1;this.position=e.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var e=this,i=!1;return V.ui.ddmanager&&!this.options.dropBehaviour&&(i=V.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||!0===this.options.revert||"function"==typeof this.options.revert&&this.options.revert.call(this.element,i)?V(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==e._trigger("stop",t)&&e._clear()}):!1!==this._trigger("stop",t)&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),V.ui.ddmanager&&V.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),V.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new V.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return!this.options.handle||!!V(t.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var e=this.options,i="function"==typeof e.helper,t=i?V(e.helper.apply(this.element[0],[t])):"clone"===e.helper?this.element.clone().removeAttr("id"):this.element;return t.parents("body").length||t.appendTo("parent"===e.appendTo?this.element[0].parentNode:e.appendTo),i&&t[0]===this.element[0]&&this._setPositionRelative(),t[0]===this.element[0]||/(fixed|absolute)/.test(t.css("position"))||t.css("position","absolute"),t},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),e=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==e&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this._isRootNode(this.offsetParent[0])?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i,s=this.options,n=this.document[0];this.relativeContainer=null,s.containment?"window"!==s.containment?"document"!==s.containment?s.containment.constructor!==Array?("parent"===s.containment&&(s.containment=this.helper[0].parentNode),(i=(e=V(s.containment))[0])&&(t=/(scroll|auto)/.test(e.css("overflow")),this.containment=[(parseInt(e.css("borderLeftWidth"),10)||0)+(parseInt(e.css("paddingLeft"),10)||0),(parseInt(e.css("borderTopWidth"),10)||0)+(parseInt(e.css("paddingTop"),10)||0),(t?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(e.css("borderRightWidth"),10)||0)-(parseInt(e.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(e.css("borderBottomWidth"),10)||0)-(parseInt(e.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=e)):this.containment=s.containment:this.containment=[0,0,V(n).width()-this.helperProportions.width-this.margins.left,(V(n).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[V(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,V(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,V(window).scrollLeft()+V(window).width()-this.helperProportions.width-this.margins.left,V(window).scrollTop()+(V(window).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1,t=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:t?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:t?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s=this.options,n=this._isRootNode(this.scrollParent[0]),o=t.pageX,a=t.pageY;return n&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(i=this.relativeContainer?(i=this.relativeContainer.offset(),[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]):this.containment,t.pageX-this.offset.click.left<i[0]&&(o=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(a=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(a=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(a=this.originalPageY)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY<s.scrollSensitivity?o.scrollTop=n=o.scrollTop+s.scrollSpeed:t.pageY-i.overflowOffset.top<s.scrollSensitivity&&(o.scrollTop=n=o.scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+o.offsetWidth-t.pageX<s.scrollSensitivity?o.scrollLeft=n=o.scrollLeft+s.scrollSpeed:t.pageX-i.overflowOffset.left<s.scrollSensitivity&&(o.scrollLeft=n=o.scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(t.pageY-V(a).scrollTop()<s.scrollSensitivity?n=V(a).scrollTop(V(a).scrollTop()-s.scrollSpeed):V(window).height()-(t.pageY-V(a).scrollTop())<s.scrollSensitivity&&(n=V(a).scrollTop(V(a).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(t.pageX-V(a).scrollLeft()<s.scrollSensitivity?n=V(a).scrollLeft(V(a).scrollLeft()-s.scrollSpeed):V(window).width()-(t.pageX-V(a).scrollLeft())<s.scrollSensitivity&&(n=V(a).scrollLeft(V(a).scrollLeft()+s.scrollSpeed)))),!1!==n&&V.ui.ddmanager&&!s.dropBehaviour&&V.ui.ddmanager.prepareOffsets(i,t)}}),V.ui.plugin.add("draggable","snap",{start:function(t,e,i){var s=i.options;i.snapElements=[],V(s.snap.constructor!==String?s.snap.items||":data(ui-draggable)":s.snap).each(function(){var t=V(this),e=t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:e.top,left:e.left})})},drag:function(t,e,i){for(var s,n,o,a,r,l,h,c,u,d=i.options,p=d.snapTolerance,f=e.offset.left,g=f+i.helperProportions.width,m=e.offset.top,_=m+i.helperProportions.height,v=i.snapElements.length-1;0<=v;v--)l=(r=i.snapElements[v].left-i.margins.left)+i.snapElements[v].width,c=(h=i.snapElements[v].top-i.margins.top)+i.snapElements[v].height,g<r-p||l+p<f||_<h-p||c+p<m||!V.contains(i.snapElements[v].item.ownerDocument,i.snapElements[v].item)?(i.snapElements[v].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=!1):("inner"!==d.snapMode&&(s=Math.abs(h-_)<=p,n=Math.abs(c-m)<=p,o=Math.abs(r-g)<=p,a=Math.abs(l-f)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:h-i.helperProportions.height,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r-i.helperProportions.width}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:l}).left)),u=s||n||o||a,"outer"!==d.snapMode&&(s=Math.abs(h-m)<=p,n=Math.abs(c-_)<=p,o=Math.abs(r-f)<=p,a=Math.abs(l-g)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:h,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c-i.helperProportions.height,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:l-i.helperProportions.width}).left)),!i.snapElements[v].snapping&&(s||n||o||a||u)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=s||n||o||a||u)}}),V.ui.plugin.add("draggable","stack",{start:function(t,e,i){var s,i=i.options,i=V.makeArray(V(i.stack)).sort(function(t,e){return(parseInt(V(t).css("zIndex"),10)||0)-(parseInt(V(e).css("zIndex"),10)||0)});i.length&&(s=parseInt(V(i[0]).css("zIndex"),10)||0,V(i).each(function(t){V(this).css("zIndex",s+t)}),this.css("zIndex",s+i.length))}}),V.ui.plugin.add("draggable","zIndex",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("zIndex")&&(i._zIndex=e.css("zIndex")),e.css("zIndex",i.zIndex)},stop:function(t,e,i){i=i.options;i._zIndex&&V(e.helper).css("zIndex",i._zIndex)}});V.ui.draggable;V.widget("ui.resizable",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){if("hidden"===V(t).css("overflow"))return!1;var i=e&&"left"===e?"scrollLeft":"scrollTop",e=!1;if(0<t[i])return!0;try{t[i]=1,e=0<t[i],t[i]=0}catch(t){}return e},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),V.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(V("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=String.prototype.trim.call(i[e])),n=V("<div>"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),s<n.maxWidth&&(n.maxWidth=s),t<n.maxHeight&&(n.maxHeight=t)),this._vBoundaries=n},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||V("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,n={width:i.size.width-a,height:i.size.height-o},a=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,o&&a?{top:o,left:a}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=V(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,a=o instanceof V?o.get(0):/parent/.test(o)?e.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(a,"left")?a.scrollWidth:o,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,a={top:0,left:0},r=e.containerElement,t=!0;r[0]!==document&&/static/.test(r.css("position"))&&(a=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-a.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-a.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-a.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,u=Math.round((s.height-n.height)/h)*h,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidth<d,g=i.maxHeight&&i.maxHeight<p,m=i.minWidth&&i.minWidth>d,s=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),s&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-h<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<p-h?(e.size.height=p,e.position.top=o.top-u):(p=h-t.height,e.size.height=p,e.position.top=o.top+n.height-p),0<d-l?(e.size.width=d,e.position.left=o.left-c):(d=l-t.width,e.size.width=d,e.position.left=o.left+n.width-d))}});V.ui.resizable;V.widget("ui.dialog",{version:"1.13.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var e=V(this).css(t).offset().top;e<0&&V(this).css("top",t.top-e)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&V.fn.draggable&&this._makeDraggable(),this.options.resizable&&V.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?V(t):this.document.find(t||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:V.noop,enable:V.noop,close:function(t){var e=this;this._isOpen&&!1!==this._trigger("beforeClose",t)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||V.ui.safeBlur(V.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){e._trigger("close",t)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!1,s=this.uiDialog.siblings(".ui-front:visible").map(function(){return+V(this).css("z-index")}).get(),s=Math.max.apply(null,s);return s>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(V.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=!(t=!(t=!(t=!(t=t||this.element.find("[autofocus]")).length?this.element.find(":tabbable"):t).length?this.uiDialogButtonPane.find(":tabbable"):t).length?this.uiDialogTitlebarClose.filter(":tabbable"):t).length?this.uiDialog:t).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=V.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=V("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);var e,i,s;t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("<button type='button'></button>").button({label:V("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=V("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("<button></button>",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("<a>").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i,s;this.options.modal&&(i=V.fn.jquery.substring(0,4),s=!0,this._delay(function(){s=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;s||((e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable(),"3.4."!==i&&"3.5."!==i||e._delay(e._restoreTabbableFocus)))}.bind(this)),this.overlay=V("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});V.ui.dialog;function lt(t,e,i){return e<=t&&t<e+i}V.widget("ui.droppable",{version:"1.13.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept="function"==typeof i?i:function(t){return t.is(i)},this.proportions=function(){if(!arguments.length)return t=t||{width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){V.ui.ddmanager.droppables[t]=V.ui.ddmanager.droppables[t]||[],V.ui.ddmanager.droppables[t].push(this)},_splice:function(t){for(var e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var t=V.ui.ddmanager.droppables[this.options.scope];this._splice(t)},_setOption:function(t,e){var i;"accept"===t?this.accept="function"==typeof e?e:function(t){return t.is(e)}:"scope"===t&&(i=V.ui.ddmanager.droppables[this.options.scope],this._splice(i),this._addToManager(e)),this._super(t,e)},_activate:function(t){var e=V.ui.ddmanager.current;this._addActiveClass(),e&&this._trigger("activate",t,this.ui(e))},_deactivate:function(t){var e=V.ui.ddmanager.current;this._removeActiveClass(),e&&this._trigger("deactivate",t,this.ui(e))},_over:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._addHoverClass(),this._trigger("over",t,this.ui(e)))},_out:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._removeHoverClass(),this._trigger("out",t,this.ui(e)))},_drop:function(e,t){var i=t||V.ui.ddmanager.current,s=!1;return!(!i||(i.currentItem||i.element)[0]===this.element[0])&&(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=V(this).droppable("instance");if(t.options.greedy&&!t.options.disabled&&t.options.scope===i.options.scope&&t.accept.call(t.element[0],i.currentItem||i.element)&&V.ui.intersect(i,V.extend(t,{offset:t.element.offset()}),t.options.tolerance,e))return!(s=!0)}),!s&&(!!this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(i)),this.element)))},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}}),V.ui.intersect=function(t,e,i,s){if(!e.offset)return!1;var n=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,a=n+t.helperProportions.width,r=o+t.helperProportions.height,l=e.offset.left,h=e.offset.top,c=l+e.proportions().width,u=h+e.proportions().height;switch(i){case"fit":return l<=n&&a<=c&&h<=o&&r<=u;case"intersect":return l<n+t.helperProportions.width/2&&a-t.helperProportions.width/2<c&&h<o+t.helperProportions.height/2&&r-t.helperProportions.height/2<u;case"pointer":return lt(s.pageY,h,e.proportions().height)&&lt(s.pageX,l,e.proportions().width);case"touch":return(h<=o&&o<=u||h<=r&&r<=u||o<h&&u<r)&&(l<=n&&n<=c||l<=a&&a<=c||n<l&&c<a);default:return!1}},!(V.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(t,e){var i,s,n=V.ui.ddmanager.droppables[t.options.scope]||[],o=e?e.type:null,a=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();t:for(i=0;i<n.length;i++)if(!(n[i].options.disabled||t&&!n[i].accept.call(n[i].element[0],t.currentItem||t.element))){for(s=0;s<a.length;s++)if(a[s]===n[i].element[0]){n[i].proportions().height=0;continue t}n[i].visible="none"!==n[i].element.css("display"),n[i].visible&&("mousedown"===o&&n[i]._activate.call(n[i],e),n[i].offset=n[i].element.offset(),n[i].proportions({width:n[i].element[0].offsetWidth,height:n[i].element[0].offsetHeight}))}},drop:function(t,e){var i=!1;return V.each((V.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&V.ui.intersect(t,this,this.options.tolerance,e)&&(i=this._drop.call(this,e)||i),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,e)))}),i},dragStart:function(t,e){t.element.parentsUntil("body").on("scroll.droppable",function(){t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)})},drag:function(n,o){n.options.refreshPositions&&V.ui.ddmanager.prepareOffsets(n,o),V.each(V.ui.ddmanager.droppables[n.options.scope]||[],function(){var t,e,i,s;this.options.disabled||this.greedyChild||!this.visible||(s=!(i=V.ui.intersect(n,this,this.options.tolerance,o))&&this.isover?"isout":i&&!this.isover?"isover":null)&&(this.options.greedy&&(e=this.options.scope,(i=this.element.parents(":data(ui-droppable)").filter(function(){return V(this).droppable("instance").options.scope===e})).length&&((t=V(i[0]).droppable("instance")).greedyChild="isover"===s)),t&&"isover"===s&&(t.isover=!1,t.isout=!0,t._out.call(t,o)),this[s]=!0,this["isout"===s?"isover":"isout"]=!1,this["isover"===s?"_over":"_out"].call(this,o),t&&"isout"===s&&(t.isout=!1,t.isover=!0,t._over.call(t,o)))})},dragStop:function(t,e){t.element.parentsUntil("body").off("scroll.droppable"),t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)}})!==V.uiBackCompat&&V.widget("ui.droppable",V.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}});V.ui.droppable,V.widget("ui.progressbar",{version:"1.13.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=V("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.13.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY;return l<a&&(t=l,l=a,a=t),h<r&&(t=h,h=r,r=t),this.helper.css({left:a,top:r,width:l-a,height:h-r}),this.selectees.each(function(){var t=V.data(this,"selectable-item"),e=!1,i={};t&&t.element!==n.element[0]&&(i.left=t.left+n.elementPos.left,i.right=t.right+n.elementPos.left,i.top=t.top+n.elementPos.top,i.bottom=t.bottom+n.elementPos.top,"touch"===o.tolerance?e=!(i.left>l||i.right<a||i.top>h||i.bottom<r):"fit"===o.tolerance&&(e=i.left>a&&i.right<l&&i.top>r&&i.bottom<h),e?(t.selected&&(n._removeClass(t.$element,"ui-selected"),t.selected=!1),t.unselecting&&(n._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1),t.selecting||(n._addClass(t.$element,"ui-selecting"),t.selecting=!0,n._trigger("selecting",s,{selecting:t.element}))):(t.selecting&&((s.metaKey||s.ctrlKey)&&t.startselected?(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,n._addClass(t.$element,"ui-selected"),t.selected=!0):(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,t.startselected&&(n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0),n._trigger("unselecting",s,{unselecting:t.element}))),t.selected&&(s.metaKey||s.ctrlKey||t.startselected||(n._removeClass(t.$element,"ui-selected"),t.selected=!1,n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,n._trigger("unselecting",s,{unselecting:t.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,V(".ui-unselecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1,t.startselected=!1,i._trigger("unselected",e,{unselected:t.element})}),V(".ui-selecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-selecting")._addClass(t.$element,"ui-selected"),t.selecting=!1,t.selected=!0,t.startselected=!0,i._trigger("selected",e,{selected:t.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),V.widget("ui.selectmenu",[V.ui.formResetMixin,{version:"1.13.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("<span>").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._setSelection(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("<span>");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("<li>",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("<li>"),s=V("<div>",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(V(t.target).closest(".ui-selectmenu-menu, #"+V.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){e.hidden||s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t<n;t++)s.push("<span tabindex='0'></span>");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(a),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e<s||s===e&&(t===r._lastChangedValue||r.values(t)===l.min))&&(s=e,n=V(this),o=t)}),!1!==this._start(t,o)&&(this._mouseSliding=!0,this._handleIndex=o,this._addClass(n,null,"ui-state-active"),n.trigger("focus"),e=n.offset(),a=!V(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=a?{left:0,top:0}:{left:t.pageX-e.left-n.width()/2,top:t.pageY-e.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,i),this._animateOff=!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},e=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,e),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,t="horizontal"===this.orientation?(e=this.elementSize.width,t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),t=t/e;return(t=1<t?1:t)<0&&(t=0),"vertical"===this.orientation&&(t=1-t),e=this._valueMax()-this._valueMin(),e=this._valueMin()+t*e,this._trimAlignValue(e)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n=this.value(),o=this.values();this._hasMultipleValues()&&(s=this.values(e?0:1),n=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(s,i):Math.max(s,i)),o[e]=i),i!==n&&!1!==this._trigger("slide",t,this._uiHash(e,i,o))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,e){var i,s,n;if(1<arguments.length)return this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!Array.isArray(t))return this._hasMultipleValues()?this._values(t):this.value();for(i=this.options.values,s=t,n=0;n<i.length;n+=1)i[n]=this._trimAlignValue(s[n]),this._change(null,n);this._refreshValue()},_setOption:function(t,e){var i,s=0;switch("range"===t&&!0===this.options.range&&("min"===e?(this.options.value=this._values(0),this.options.values=null):"max"===e&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),Array.isArray(this.options.values)&&(s=this.options.values.length),this._super(t,e),t){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(e),this.handles.css("horizontal"===e?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=s-1;0<=i;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i;if(arguments.length)return t=this.options.values[t],t=this._trimAlignValue(t);if(this._hasMultipleValues()){for(e=this.options.values.slice(),i=0;i<e.length;i+=1)e[i]=this._trimAlignValue(e[i]);return e}return[]},_trimAlignValue:function(t){if(t<=this._valueMin())return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=0<this.options.step?this.options.step:1,i=(t-this._valueMin())%e,t=t-i;return 2*Math.abs(i)>=e&&(t+=0<i?e:-e),parseFloat(t.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step;(t=Math.round((t-e)/i)*i+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t<e+i},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var t=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),V.each(this.items,function(){t._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;0<=t;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,e){var i=null,s=!1,n=this;return!this.reverting&&(!this.options.disabled&&"static"!==this.options.type&&(this._refreshItems(t),V(t.target).parents().each(function(){if(V.data(this,n.widgetName+"-item")===n)return i=V(this),!1}),!!(i=V.data(t.target,n.widgetName+"-item")===n?V(t.target):i)&&(!(this.options.handle&&!e&&(V(this.options.handle,i).find("*").addBack().each(function(){this===t.target&&(s=!0)}),!s))&&(this.currentItem=i,this._removeCurrentsFromItems(),!0))))},_mouseStart:function(t,e,i){var s,n,o=this.options;if((this.currentContainer=this).refreshPositions(),this.appendTo=V("parent"!==o.appendTo?o.appendTo:this.currentItem.parent()),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},V.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),this.scrollParent=this.placeholder.scrollParent(),V.extend(this.offset,{parent:this._getParentOffset()}),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",o.cursor),this.storedStylesheet=V("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<e.scrollSensitivity?this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop+e.scrollSpeed:t.pageY-this.overflowOffset.top<e.scrollSensitivity&&(this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop-e.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<e.scrollSensitivity?this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft+e.scrollSpeed:t.pageX-this.overflowOffset.left<e.scrollSensitivity&&(this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft-e.scrollSpeed)):(t.pageY-this.document.scrollTop()<e.scrollSensitivity?i=this.document.scrollTop(this.document.scrollTop()-e.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<e.scrollSensitivity&&(i=this.document.scrollTop(this.document.scrollTop()+e.scrollSpeed)),t.pageX-this.document.scrollLeft()<e.scrollSensitivity?i=this.document.scrollLeft(this.document.scrollLeft()-e.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<e.scrollSensitivity&&(i=this.document.scrollLeft(this.document.scrollLeft()+e.scrollSpeed))),i},_mouseDrag:function(t){var e,i,s,n,o=this.options;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),o.scroll&&!1!==this._scroll(t)&&(this._refreshItemPositions(!0),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t)),this.dragDirection={vertical:this._getDragVerticalDirection(),horizontal:this._getDragHorizontalDirection()},e=this.items.length-1;0<=e;e--)if(s=(i=this.items[e]).item[0],(n=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===n?"next":"prev"]()[0]===s||V.contains(this.placeholder[0],s)||"semi-dynamic"===this.options.type&&V.contains(this.element[0],s))){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,e){var i,s,n,o;if(t)return V.ui.ddmanager&&!this.options.dropBehaviour&&V.ui.ddmanager.drop(this,t),this.options.revert?(s=(i=this).placeholder.offset(),o={},(n=this.options.axis)&&"x"!==n||(o.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(o.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,V(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){i._clear(t)})):this._clear(t,e),!1},cancel:function(){if(this.dragging){this._mouseUp(new V.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var t=this.containers.length-1;0<=t;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),V.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?V(this.domPosition.prev).after(this.currentItem):V(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var t=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},V(t).each(function(){var t=(V(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);t&&i.push((e.key||t[1]+"[]")+"="+(e.key&&e.expression?t[1]:t[2]))}),!i.length&&e.key&&i.push(e.key+"="),i.join("&")},toArray:function(t){var e=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e.each(function(){i.push(V(t.item||this).attr(t.attribute||"id")||"")}),i},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,l=r+t.height,h=this.offset.click.top,c=this.offset.click.left,h="x"===this.options.axis||r<s+h&&s+h<l,c="y"===this.options.axis||o<e+c&&e+c<a;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?h&&c:o<e+this.helperProportions.width/2&&i-this.helperProportions.width/2<a&&r<s+this.helperProportions.height/2&&n-this.helperProportions.height/2<l},_intersectsWithPointer:function(t){var e="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),t="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width);return!(!e||!t)&&(e=this.dragDirection.vertical,t=this.dragDirection.horizontal,this.floating?"right"===t||"down"===e?2:1:e&&("down"===e?2:1))},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this.dragDirection.vertical,t=this.dragDirection.horizontal;return this.floating&&t?"right"===t&&i||"left"===t&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!=t&&(0<t?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!=t&&(0<t?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(t){var e,i,s,n,o=[],a=[],r=this._connectWith();if(r&&t)for(e=r.length-1;0<=e;e--)for(i=(s=V(r[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&a.push(["function"==typeof n.options.items?n.options.items.call(n.element):V(n.options.items,n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),n]);function l(){o.push(this)}for(a.push(["function"==typeof this.options.items?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):V(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),e=a.length-1;0<=e;e--)a[e][0].each(l);return V(o)},_removeCurrentsFromItems:function(){var i=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=V.grep(this.items,function(t){for(var e=0;e<i.length;e++)if(i[e]===t.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var e,i,s,n,o,a,r,l,h=this.items,c=[["function"==typeof this.options.items?this.options.items.call(this.element[0],t,{item:this.currentItem}):V(this.options.items,this.element),this]],u=this._connectWith();if(u&&this.ready)for(e=u.length-1;0<=e;e--)for(i=(s=V(u[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&(c.push(["function"==typeof n.options.items?n.options.items.call(n.element[0],t,{item:this.currentItem}):V(n.options.items,n.element),n]),this.containers.push(n));for(e=c.length-1;0<=e;e--)for(o=c[e][1],l=(a=c[e][i=0]).length;i<l;i++)(r=V(a[i])).data(this.widgetName+"-item",o),h.push({item:r,instance:o,width:0,height:0,left:0,top:0})},_refreshItemPositions:function(t){for(var e,i,s=this.items.length-1;0<=s;s--)e=this.items[s],this.currentContainer&&e.instance!==this.currentContainer&&e.item[0]!==this.currentItem[0]||(i=this.options.toleranceElement?V(this.options.toleranceElement,e.item):e.item,t||(e.width=i.outerWidth(),e.height=i.outerHeight()),i=i.offset(),e.left=i.left,e.top=i.top)},refreshPositions:function(t){var e,i;if(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),this._refreshItemPositions(t),this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;0<=e;e--)i=this.containers[e].element.offset(),this.containers[e].containerCache.left=i.left,this.containers[e].containerCache.top=i.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(i){var s,n,o=(i=i||this).options;o.placeholder&&o.placeholder.constructor!==String||(s=o.placeholder,n=i.currentItem[0].nodeName.toLowerCase(),o.placeholder={element:function(){var t=V("<"+n+">",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("<tr>",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V("<td>&#160;</td>",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)<i&&(i=Math.abs(t[h]-a),s=this.items[e],this.direction=r?"up":"down"));(s||this.options.dropOnEmpty)&&(this.currentContainer!==this.containers[u]?(s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[u].element,!0),this._trigger("change",t,this._uiHash()),this.containers[u]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[u],this.options.placeholder.update(this.currentContainer,this.placeholder),this.scrollParent=this.placeholder.scrollParent(),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1):this.currentContainer.containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1))}},_createHelper:function(t){var e=this.options,t="function"==typeof e.helper?V(e.helper.apply(this.element[0],[t,this.currentItem])):"clone"===e.helper?this.currentItem.clone():this.currentItem;return t.parents("body").length||this.appendTo[0].appendChild(t[0]),t[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),t[0].style.width&&!e.forceHelperSize||t.width(this.currentItem.width()),t[0].style.height&&!e.forceHelperSize||t.height(this.currentItem.height()),t},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&V.ui.ie?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i=this.options;"parent"===i.containment&&(i.containment=this.helper[0].parentNode),"document"!==i.containment&&"window"!==i.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===i.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===i.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(i.containment)||(t=V(i.containment)[0],e=V(i.containment).offset(),i="hidden"!==V(t).css("overflow"),this.containment=[e.left+(parseInt(V(t).css("borderLeftWidth"),10)||0)+(parseInt(V(t).css("paddingLeft"),10)||0)-this.margins.left,e.top+(parseInt(V(t).css("borderTopWidth"),10)||0)+(parseInt(V(t).css("paddingTop"),10)||0)-this.margins.top,e.left+(i?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(V(t).css("borderLeftWidth"),10)||0)-(parseInt(V(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,e.top+(i?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(V(t).css("borderTopWidth"),10)||0)-(parseInt(V(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1,s="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,t=/(html|body)/i.test(s[0].tagName);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():t?0:s.scrollTop())*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():t?0:s.scrollLeft())*i}},_generatePosition:function(t){var e=this.options,i=t.pageX,s=t.pageY,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(i=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(s=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i<s.length;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===V.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(t){var e=t||this;return{helper:e.helper,placeholder:e.placeholder||V([]),position:e.position,originalPosition:e.originalPosition,offset:e.positionAbs,item:e.currentItem,sender:t?t.element:null}}});function ht(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}V.widget("ui.spinner",{version:"1.13.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){var i=V.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0<e?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(t){var e;function i(){this.element[0]===V.ui.safeActiveElement(this.document[0])||(this.element.trigger("focus"),this.previous=e,this._delay(function(){this.previous=e}))}e=this.element[0]===V.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),!1!==this._start(t)&&this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(V(t.currentTarget).hasClass("ui-state-active"))return!1!==this._start(t)&&void this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0<this.uiSpinner.height()&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var e=this.options,i=V.ui.keyCode;switch(t.keyCode){case i.UP:return this._repeat(null,1,t),!0;case i.DOWN:return this._repeat(null,-1,t),!0;case i.PAGE_UP:return this._repeat(null,e.page,t),!0;case i.PAGE_DOWN:return this._repeat(null,-e.page,t),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:i})||(this._value(i),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?"function"==typeof e?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_adjustValue:function(t){var e=this.options,i=null!==e.min?e.min:0,s=t-i;return t=i+Math.round(s/e.step)*e.step,t=parseFloat(t.toFixed(this._precision())),null!==e.max&&t>e.max?e.max:null!==e.min&&t<e.min?e.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i;if("culture"===t||"numberFormat"===t)return i=this._parse(this.element.val()),this.options[t]=e,void this.element.val(this._format(i));"max"!==t&&"min"!==t&&"step"!==t||"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(i=this.buttons.first().find(".ui-icon"),this._removeClass(i,null,this.options.icons.up),this._addClass(i,null,e.up),i=this.buttons.last().find(".ui-icon"),this._removeClass(i,null,this.options.icons.down),this._addClass(i,null,e.down)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:ht(function(t){this._super(t)}),_parse:function(t){return""===(t="string"==typeof t&&""!==t?window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t:t)||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null!==t&&t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&null!==(i=this._parse(t))&&(e||(i=this._adjustValue(i)),t=this._format(i)),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:ht(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:ht(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:ht(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:ht(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){if(!arguments.length)return this._parse(this.element.val());ht(this._value).call(this,t)},widget:function(){return this.uiSpinner}}),!1!==V.uiBackCompat&&V.widget("ui.spinner",V.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}});var ct;V.ui.spinner;V.widget("ui.tabs",{version:"1.13.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(ct=/#.*$/,function(t){var e=t.href.replace(ct,""),i=location.href.replace(ct,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1<t.hash.length&&e===i}),_create:function(){var e=this,t=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,t.collapsible),this._processTabs(),t.active=this._initialActive(),Array.isArray(t.disabled)&&(t.disabled=V.uniqueSort(t.disabled.concat(V.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(t.active):this.active=V(),this._refresh(),this.active.length&&this.load(t.active)},_initialActive:function(){var i=this.options.active,t=this.options.collapsible,s=location.hash.substring(1);return null===i&&(s&&this.tabs.each(function(t,e){if(V(e).attr("aria-controls")===s)return i=t,!1}),null!==(i=null===i?this.tabs.index(this.tabs.filter(".ui-tabs-active")):i)&&-1!==i||(i=!!this.tabs.length&&0)),!1!==i&&-1===(i=this.tabs.index(this.tabs.eq(i)))&&(i=!t&&0),i=!t&&!1===i&&this.anchors.length?0:i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):V()}},_tabKeydown:function(t){var e=V(V.ui.safeActiveElement(this.document[0])).closest("li"),i=this.tabs.index(e),s=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:i++;break;case V.ui.keyCode.UP:case V.ui.keyCode.LEFT:s=!1,i--;break;case V.ui.keyCode.END:i=this.anchors.length-1;break;case V.ui.keyCode.HOME:i=0;break;case V.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i);case V.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,s),t.ctrlKey||t.metaKey||(e.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",i)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===V.ui.keyCode.UP&&(t.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(t){return t.altKey&&t.keyCode===V.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===V.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,e){var i=this.tabs.length-1;for(;-1!==V.inArray(t=(t=i<t?0:t)<0?i:t,this.options.disabled);)t=e?t+1:t-1;return t},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"!==t?(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e)):this._activate(e)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){V(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");l._isLocal(e)?(n=(i=e.hash).substring(1),s=l.element.find(l._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=l.element.find(i="#"+n)).length||(s=l._createPanel(n)).insertAfter(l.panels[t-1]||l.tablist),s.attr("aria-live","polite")),s.length&&(l.panels=l.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("<div>").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=!t.length?this.active:t).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+V.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});V.ui.tabs;V.widget("ui.tooltip",{version:"1.13.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,n.is(":hidden")||n.position(a)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(i=V("<div>").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(V.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},13)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("<div>").attr("role","tooltip"),i=V("<div>").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=!t.length?this.document[0].body:t},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});V.ui.tooltip});;var captcha_sitekey = "6LdjMSgTAAAAANjWTMn_6hizpJ0Ra2tSJXz00zMt", outputType = { "OBJECT": 1, "AJAX": 2, "POST": 3, "COUNT": 4, "AJAX_WITHOUT_TEMPLATE": 5, "AJAX_WITHOUT_LOAD": 6 };
$.xhrPool = []; /* array: {jqXHR, name}, holds all ajax request connections */
var domloaded = false, isBrowserBacked = false, fn_ImgLoaded = [], arrRegion = [], arrDestination = [], isOverlayDisplayed = false, overlayName = '', houseResultMarkers = [], houseAttrMarkers = [], routemarkers = [], houseDirectionDisplay, fromLoc, toLoc, Coordinates = [], attraktionInfoWindow, infowindow = null, infoWindows = [], map_Loaded = []; /* array of loaded google maps on result elements */
var house_directionsDisplay, result_map, results_on_map_open = false, scrolleractivated = true, isInfinityEventTriggered = false, ajax_search_load = '<img src="//images.sologstrand.dk/images/search/maps/loading.gif" alt="Loading.." title="Loading.." style="width:16px; height:16px;" />';
var search_cookie_name = 'SBPARMSCOOKIE', default_house_result_size = '_007.', default_user_settings = { show_map: false, show_advanced_search: false, show_map_lat: 55.9, show_map_lng: 11.4, show_map_zoom: 7, browser_back_mode: false, browser_back_content_loaded: false, result_page_index: 0, show_last_visited_house: true, last_visited_house: '', last_visited_house_json: '', last_visited_houses_history: [], last_result_count: 0 }, user_settings, show_map_zoom_history = [];
var house_element_default_template = designtemplatename.toUpperCase() === 'DT1' ? '/html_templates/search/result_item_default_dt1.html' : '/html_templates/search/result_item_default.html';
var gm_house_html_templatepath = '/html_templates/search/result_item_google.html'; /* html template for showing house element on google maps */
var house_element_review_templatepath = '/html_templates/review/result_item_review.html'; /* html template for showing review on each house element */
var scroll_timeout, scroll_timeout_position = 0, rtime, itemtimeout = false, itemdelta = 200, internalPrefix = '_mySearchBlock', search_house_container = '#soeghus ul.housecontainer';
var widgetTAF, widgetSH, widgetContact, user_settings_expire_days = 365, user_settings_properties_count = 13, maxAgeExpiration = 300, functions_version = '1.44';
var Coordinate = function () { /* do nothing */ };

$.fn.outerHTML = function (arg) {
    var ret;
    if (!this.length)
        return typeof val === "undefined" ? this : null;
    if (!arg) {
        return this[0].outerHTML || (ret = this.wrap('<div>').parent().html(), this.unwrap(), ret);
    }
    $.each(this, function (i, el) {
        var fnRet, pass = el, inOrOut = el.outerHTML ? "outerHTML" : "innerHTML";
        if (!el.outerHTML) el = $(el).wrap('<div>').parent()[0];
        if ($.isFunction(arg)) {
            if ((fnRet = arg.call(pass, i, el[inOrOut])) !== false) el[inOrOut] = fnRet;
        }
        else el[inOrOut] = arg;
        if (!el.outerHTML) $(el).children().unwrap();
    });
    return this;
};
$.fn.hasAttr = function (name) {
    return this.attr(name) !== undefined;
};
$.fn.exists = function () { return this.length > 0; };
$.fn.isInViewport = function () {
    if (typeof el !== 'undefined') {
        var top = el.offsetTop;
        var left = el.offsetLeft;
        var width = el.offsetWidth;
        var height = el.offsetHeight;

        while (el.offsetParent) {
            el = el.offsetParent;
            top += el.offsetTop;
            left += el.offsetLeft;
        }

        return (
            top < window.pageYOffset + window.innerHeight &&
            left < window.pageXOffset + window.innerWidth &&
            top + height > window.pageYOffset &&
            left + width > window.pageXOffset
        );
    }
    return false;
};
$.fn.center = function () {
    const half_window_height = $(window).height() / 2;
    const half_window_width = $(window).width() / 2;
    const half_this_height = this.height() / 2;
    const half_this_width = this.width() / 2;
    this.css("position", "fixed");
    this.css("top", half_window_height - half_this_height + "px");
    this.css("left", half_window_width - half_this_width + "px");
    return this;
};
$.fn.getCDATA = function () {
    if (browserName === 'Edge') return this[0].childNodes[0].nodeValue.replace('[CDATA[', '').replace(']]', '');
    if (this[0].childNodes[1]) {
        return this[0].childNodes[1].nodeValue.replace('[CDATA[', '').replace(']]', '');
    } else {
        return this[0].childNodes[0].nodeValue.replace('[CDATA[', '').replace(']]', '');
    }
};
var localCache = {
    // https://stackoverflow.com/questions/17104265/caching-a-jquery-ajax-response-in-javascript-browser
    timeout: 10, // => 10 minutes
    data: {},
    remove: function (key) {
        delete localCache.data[key];
    },
    exist: function (key) {
        return !!localCache.data[key] && new Date().getTime() - localCache.data[key]._ < localCache.timeout * 1000 * 60;
    },
    get: function (key) {
        // console.log('Getting in cache');
        return localCache.data[key].data;
    },
    set: function (key, cachedData, callback) {
        localCache.remove(key);
        localCache.data[key] = {
            _: new Date().getTime(),
            data: cachedData
        };
        // console.log('Setting in cache');
        if ($.isFunction(callback)) callback(cachedData);
    }
};
var isOnResultPage = function () {
    if (document.location.href.indexOf('/soeghus.aspx') > -1 || document.location.href.indexOf('/resultater.aspx') > -1) return true;
    return false;
};
var getQueryString = function (field, url) {
    var href = url ? url : window.location.href;
    var reg = new RegExp('[?&]' + field + '=([^&#]*)', 'i');
    var string = reg.exec(href);
    return string ? string[1] : null;
};
var isValidEmailAddress = function (emailAddress) {
    var re = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
    return re.test(emailAddress);
};
var isValidDate = function (value, userFormat) {
    userFormat = userFormat || 'dd-mm-yyyy',
        delimiter = /[^dmy]/.exec(userFormat)[0],
        theFormat = userFormat.split(delimiter),
        theDate = typeof value !== 'undefined' ? value.indexOf(delimiter) !== -1 ? value.split(delimiter) : '' : '',
        isDate = function (date, format) {
            var m, d, y;
            for (var i = 0, len = format.length; i < len; i++) {
                if (/m/.test(format[i])) m = date[i];
                if (/d/.test(format[i])) d = date[i];
                if (/y/.test(format[i])) y = date[i];
            }
            return m > 0 && m < 13 && y && y.length === 4 && d > 0 && d <= (new Date(y, m, 0)).getDate();
        };
    return isDate(theDate, theFormat);
};
var isValidJson = function (text) {
    if (/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
        return true;
    } else {
        return false;
    }
};
var Base64 = {
    _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    encode: function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;
        input = Base64._utf8_encode(input);
        while (i < input.length) {
            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);
            enc1 = chr1 >> 2;
            enc2 = (chr1 & 3) << 4 | chr2 >> 4;
            enc3 = (chr2 & 15) << 2 | chr3 >> 6;
            enc4 = chr3 & 63;
            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }
            output = output +
                this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
                this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
        }
        return output;
    },
    decode: function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
        while (i < input.length) {
            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));
            chr1 = enc1 << 2 | enc2 >> 4;
            chr2 = (enc2 & 15) << 4 | enc3 >> 2;
            chr3 = (enc3 & 3) << 6 | enc4;
            output = output + String.fromCharCode(chr1);
            if (enc3 !== 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 !== 64) {
                output = output + String.fromCharCode(chr3);
            }
        }
        output = Base64._utf8_decode(output);
        return output;

    },
    _utf8_encode: function (string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if (c > 127 && c < 2048) {
                utftext += String.fromCharCode(c >> 6 | 192);
                utftext += String.fromCharCode(c & 63 | 128);
            }
            else {
                utftext += String.fromCharCode(c >> 12 | 224);
                utftext += String.fromCharCode(c >> (6 & 63) | 128);
                utftext += String.fromCharCode(c & 63 | 128);
            }
        }
        return utftext;
    },
    _utf8_decode: function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
        while (i < utftext.length) {
            c = utftext.charCodeAt(i);
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if (c > 191 && c < 224) {
                c2 = utftext.charCodeAt(i + 1);
                string += String.fromCharCode((c & 31) << 6 | c2 & 63);
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                string += String.fromCharCode((c & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
                i += 3;
            }
        }
        return string;
    }
};
var cookieexists = function (name) { if (document.cookie.indexOf(name) !== -1) { return true; } else { return false; } };
var deletecookie = function (name) {
    setcookie(name, '');
    document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/ ';
};
var delay = (function () {
    var timer = 0;
    return function (callback, ms) {
        clearTimeout(timer);
        timer = setTimeout(callback, ms);
    };
})();
var verifyCallbackTAF = function (response) {
    $.ajax({
        type: 'GET',
        url: '/TextFactory.asmx/CallGoogleSiteVerify?response=' + response + '&remoteip=' + $('#divtipafriend3').attr('data-ip'),
        cache: false,
        async: true,
        success: function (data) {
            if (data.childNodes[0].textContent === "true") {
                if ($('#taf_status').html() === $('#divtipafriend3').attr('data-text')) {
                    $('#taf_status').empty();
                }
                $('#tip_btn').attr('onclick', "$('#tip_btn').append(getLoaderImage(20, false));callRequest('taf', escape(window.location) + ';' + document.getElementById('mmail').value +';'+ document.getElementById('amail').value +';'+ document.getElementById('aname').value +';'+ escape(document.getElementById('message').value) +';'+ document.getElementById('mname').value +';' + $('#divtipafriend3').attr('data-email-templ'));$('div.loader').remove();$('#taf_status').text(lbl_asyn_shl_yes);");
            } else {
                $('#taf_status').html($('#divtipafriend3').attr('data-text'));
            }
        }
    });
};
var verifyCallbackSH = function (response) {
    $.ajax({
        type: 'GET',
        url: '/TextFactory.asmx/CallGoogleSiteVerify?response=' + response + '&remoteip=' + $('#sh_btn').attr('data-ip'),
        cache: false,
        async: true,
        success: function (data) {
            if (data.childNodes[0].textContent === "true") {
                if ($('#shl_status').html() === $('#divtipafriend3').attr('data-text')) {
                    $('#shl_status').empty();
                }
                $('#sh_btn').attr('data-validated', 'true');
                //$('#sh_btn').attr('onclick', "callRequest('shl', escape(window.location) + ';'+ document.getElementById('mmail2').value +';'+ document.getElementById('mname2').value +';'+ document.getElementById('amail2').value +';'+ document.getElementById('aname2').value +';'+ escape(document.getElementById('message2').value)+';' + $('#divtipafriend3').attr('data-email-templ') + ';startdate='+document.getElementById('datepicker_searchblock').value+':numberofdays='+ document.getElementById('DropDownList_days').value +':'+ getFullFormValues(document.forms[0],'UC_HuskelisteContainer').replace(/;/g,':'), $('#SHL_ResponseText').val().split(/#/gi));");
            } else {
                $('#sh_btn').attr('data-validated', 'false');
            }
        }
    });
};
var verifyCallbackContact = function (response) {
    $.ajax({
        type: 'GET',
        url: '/TextFactory.asmx/CallGoogleSiteVerify?response=' + response + '&remoteip=' + $('#divtipafriend3').attr('data-ip'),
        cache: false,
        async: true,
        success: function (data) {
            if (data.childNodes[0].textContent === "true") {
                $('#send_owner_contact').attr('data-valided', 'true');
                $('#captcha_contact').removeClass('invalid');
            } else {
                $('#send_owner_contact').removeAttr('data-valided');
            }
        }
    });
};
var onloadCaptchaCallback = function () {
    if ($('#captcha_taf').exists()) {
        widgetTAF = grecaptcha.render('captcha_taf', {
            'sitekey': captcha_sitekey,
            'callback': verifyCallbackTAF
        });
    }
    if ($('#captcha_sh').exists()) {
        widgetSH = grecaptcha.render('captcha_sh', {
            'sitekey': captcha_sitekey,
            'callback': verifyCallbackSH
        });
    }
    if ($('#captcha_contact').exists()) {
        widgetContact = grecaptcha.render('captcha_contact', {
            'sitekey': captcha_sitekey,
            'callback': verifyCallbackContact,
            'expired-callback': function () {
                $('#send_owner_contact').removeAttr('data-valided');
            }
        });
    }
};
var getLoaderImage = function (size, addWrapper, imageId) {
    if (typeof addWrapper === 'undefined') { addWrapper = true; }
    if (typeof imageId === 'undefined') { imageId = ''; }
    var styles = '', image_id = '';
    if (typeof size !== 'undefined') {
        styles = ' style="width:' + size + 'px; height:' + size + 'px;"';
    }
    if (imageId !== '') {
        image_id = ' id="' + imageId + '"';
    }
    var output = '';
    if (addWrapper) output += "<div class='loader'>";
    output += "<img " + image_id + " class='loading' src='//images.sologstrand.dk/images/search/maps/loading.gif' alt='Loading...' title='Loading...' " + styles + "/>";
    if (addWrapper) output += "</div>";
    return output;
};
var startYTVideo = function (el) {
    var id = $(el).attr('id').replace('vid-', '');
    var title = $(el).children("span").html();
    var descrip = $(el).children("em").html();
    var vid = '<iframe src="//www.youtube.com/embed/' + id + '?autoplay=1&rel=0&wmode=transparent" frameborder="0" allowfullscreen></iframe>';
    if (typeof title !== 'undefined') {
        vid = vid + '<p>' + title + ' &mdash; <em>' + descrip + '</p>';
    }
    $('#' + $(el).attr('data-target')).html(vid);
};
var getDayName = function (daynumber) {
    var dayName;
    switch (daynumber) {
        case 0:
            switch (site_lang) {
                case "DK": dayName = "Søndag"; break;
                case "DE": dayName = "Sonntag"; break;
                case "NO": dayName = "Søndag"; break;
                case "SE": dayName = "Söndag"; break;
                case "UK": dayName = "Sunday"; break;
                case "NL": dayName = "Zondag"; break;
                case "PL": dayName = "Niedziela"; break;
                default: return "Sunday";
            }
            break;
        case 1:
            switch (site_lang) {
                case "DK": dayName = "Mandag"; break;
                case "DE": dayName = "Montag"; break;
                case "NO": dayName = "Mandag"; break;
                case "SE": dayName = "Måndag"; break;
                case "UK": dayName = "Monday"; break;
                case "NL": dayName = "Maandag"; break;
                case "PL": dayName = "Poniedziałek"; break;
                default: return "Monday";
            }
            break;
        case 2:
            switch (site_lang) {
                case "DK": dayName = "Tirsdag"; break;
                case "DE": dayName = "Dienstag"; break;
                case "NO": dayName = "Tirsdag"; break;
                case "SE": dayName = "Tisdag"; break;
                case "UK": dayName = "Tuesday"; break;
                case "NL": dayName = "Dinsdag"; break;
                case "PL": dayName = "Wtorek"; break;
                default: return "Tuesday";
            }
            break;
        case 3:
            switch (site_lang) {
                case "DK": dayName = "Onsdag"; break;
                case "DE": dayName = "Mittwoch"; break;
                case "NO": dayName = "Onsdag"; break;
                case "SE": dayName = "Onsdag"; break;
                case "UK": dayName = "Wednesday"; break;
                case "NL": dayName = "Woensdag"; break;
                case "PL": dayName = "Środa"; break;
                default: return "Wednesday";
            }
            break;
        case 4:
            switch (site_lang) {
                case "DK": dayName = "Torsdag"; break;
                case "DE": dayName = "Donnerstag"; break;
                case "NO": dayName = "Torsdag"; break;
                case "SE": dayName = "Torsdag"; break;
                case "UK": dayName = "Thursday"; break;
                case "NL": dayName = "Donderdag"; break;
                case "PL": dayName = "Czwartek"; break;
                default: return "Thursday";
            }
            break;
        case 5:
            switch (site_lang) {
                case "DK": dayName = "Fredag"; break;
                case "DE": dayName = "Freitag"; break;
                case "NO": dayName = "Fredag"; break;
                case "SE": dayName = "Fredag"; break;
                case "UK": dayName = "Friday"; break;
                case "NL": dayName = "Vrijdag"; break;
                case "PL": dayName = "Piątek"; break;
                default: return "Friday";
            }
            break;
        case 6:
            switch (site_lang) {
                case "DK": dayName = "Lørdag"; break;
                case "DE": dayName = "Samstag"; break;
                case "NO": dayName = "Lørdag"; break;
                case "SE": dayName = "Lördag"; break;
                case "UK": dayName = "Saturday"; break;
                case "NL": dayName = "Zaterdag"; break;
                case "PL": dayName = "Sobota"; break;
                default: return "Saturday";
            }
            break;
    }
    return dayName;
};
var toogleReviewModalLightbox = function (houseid, startIndex, showCount) {
    $('.review_popup_content').remove();
    $('.review_overlay_container').remove();
    var review_overlay_container = $('<div />', { 'id': 'review_overlay_container', 'class': 'review_overlay_container' });
    var review_popup_content = $('<div />', { 'id': 'house_reviews_' + houseid, 'class': 'house_reviews_' + houseid + ' review_popup_content' });
    $('main').append(review_overlay_container.show()).append(review_popup_content);
    showElementReviews(houseid, startIndex, showCount, function () {
        review_overlay_container.show();
        $('close[data-type="closereviews"]').click(function () {
            $('.review_popup_content').remove();
            $('.review_overlay_container').remove();
        });
    });
};
var fixSliderHeight = function (el) {
    var maxHeight = 0, slides = el.find('.slides'), data = el.data('flexslider');
    slides.children().height('auto').each(function () { maxHeight = Math.max(maxHeight, $(this).height()); }).height(maxHeight);
    slides.height(maxHeight);
    data && (data.h = maxHeight);
};
var gmMarker = function () {
    this.lat = 0;
    this.lng = 0;
    this.zoom = 10;
    this.name = '';
    this.title = '';
    this.icon = '';
    this.html = '';
    this.infoarray = [];
    this.metadata = '';
    this.mapid = 'map';
    this.isHouse = false;
};
var houseElementInfoWindowOnMap = function (element, _map, housescontainer_selector) {
    var gm_geo = $(element).find('geo');
    var houseLatlng = new google.maps.LatLng(parseFloat(gm_geo.attr('lat')), parseFloat(gm_geo.attr('lng')));
    var house_link = document.location.origin + '/' + url_holidayhomes + '/' + $(element).attr('regionlinktitle') + '/' + $(element).attr('destinationlinktitle') + '/' + url_sommerhus_sommerhus + '-' + $(element).attr('persons') + url_sommerhus_persons + '-' + $(element).attr('id') + '.htm';
    infowindow = new google.maps.InfoWindow({
        position: houseLatlng,
        content: ''
    });
    google.maps.event.addListener(infowindow, 'domready', function () {
        $('.' + housescontainer_selector).closest('.gm-style-iw').parent().addClass('custom-iw');
        /* Overriding styling of house element infowindow on google maps */
        var iwOuter = $('.gm-style-iw');
        iwOuter.next().addClass('window_closer');
        if (isTabletDevice === 'True') { $('.window_closer').on('click', function () { infowindow.close(); }); } /* fixed tablet close button bug */
        iwOuter.children(':nth-child(1)').css({ 'overflow': '' });
        iwOuter.children(':nth-child(1)').children(':nth-child(1)').css({ 'overflow': '' });
        var iwBackground = iwOuter.prev();
        iwBackground.children(':nth-child(2)').css({ 'display': 'none' });
        iwBackground.children(':nth-child(4)').css({ 'display': 'none' });
        var iwPin = iwBackground.children(':nth-child(3)').addClass('iwpin');
        iwPin.children().css({ 'margin-top': -7 });
    });
    var _marker = new google.maps.Marker({
        position: houseLatlng,
        map: _map,
        title: $(element).attr('id') + '\r\n' + $(element).attr('address1'),
        url: house_link,
        icon: '//images.sologstrand.dk/images/gfx/house-30x30.png'
    });
    houseResultMarkers.push(_marker);
    _marker.addListener('click', function () {
        infoWindows.push(infowindow);
        var aq = "picturetype=" + default_house_result_size;
        var _startdate = $('input[name="startdate"]').val();
        var _enddate = "";
        if (isValidDate(_startdate)) {
            var _nod = isNumber($('select[name="numberofdays"]').val()) ? parseInt($('select[name="numberofdays"]').val()) : 7;
            _enddate = formatDate(addDaysWithoutTZ(parseDate(_startdate), _nod));
        } else {
            _startdate = "NULL";
        }
        var hc_params = 'ItemTemplatePath=' + gm_house_html_templatepath + '&Bid=' + search_bid + '&SiteLanguage=' + site_lang
            + '&HousesIDs=' + $(element).attr('id') + '&StartDate=' + _startdate + '&EndDate=' + _enddate + '&AlternativeQueries=' + encodeURIComponent(aq)
            + '&ReloadCache=' + (getParam('reload') === 'true' ? true : false);
        loadHouseElementForMap(_map, _marker, infowindow, hc_params, housescontainer_selector);
    });
};
var loadHouseElementForMap = function (_map, _marker, infowindow, hc_params, housescontainer_selector) {
    $.ajax({
        type: 'GET',
        cache: false,
        async: true,
        headers: {
            'Cache-Control': 'max-age=' + maxAgeExpiration,
            'X-Functions-Version': functions_version
        },
        beforeSend: function (jqXHR) {
            $.xhrPool.add(jqXHR, 'houseElementInfoWindowOnMap');
            /* for positioning info window in the center */

            var offset_lat = _marker.getPosition().lat();
            var scale = Math.pow(2, _map.getZoom());
            var nw = new google.maps.LatLng(_map.getBounds().getNorthEast().lat(), _map.getBounds().getSouthWest().lng());
            var worldCoordinateNW = _map.getProjection().fromLatLngToPoint(nw);
            var worldCoordinate = _map.getProjection().fromLatLngToPoint(_marker.getPosition());
            var pixelOffset = new google.maps.Point(Math.floor((worldCoordinate.x - worldCoordinateNW.x) * scale), Math.floor((worldCoordinate.y - worldCoordinateNW.y) * scale));
            var offset_scroll = $(window).scrollTop();
            if (offset_scroll > 200 && $('section.results').exists()) $(window).scrollTop(offset_scroll - $('section.results').offset().top);
            if (pixelOffset.x < 200) {
                offset_lat = offset_lat * 1.003;
            } else if (pixelOffset.x > 500) {
                offset_lat = offset_lat * 9.99;
            } else {
                offset_lat = offset_lat * 1.002;
            }
            // function fails when centering selected house
            //_map.setCenter(new google.maps.LatLng(offset_lat, _marker.getPosition().lng())); /* for centering house element container */
            infowindow.setContent(getLoaderImage(20, false));
        },
        url: '/ObjectResults.asmx/GetResultObjectByDates?' + hc_params,
        success: function (data) {
            infowindow.setContent('<div class="gmwindow"><ul class="' + housescontainer_selector + '">' + data.childNodes[0].textContent + '</ul></div>');
            infowindow.open(_map, _marker);
            if (isDesktop === 'True' && browserName === 'Pale Moon') {
                $('.gmhouse .house_resultat').css('margin-top', 0).css('margin-top', 15);
            }
            loadResultElements(false, housescontainer_selector, 'loadHouseElementForMap'); /* info window must be generated before initializing slider gallery */
        },
        error: function (objAJAXRequest, strError) {
            if (objAJAXRequest.responseText.indexOf("Missing parameter:") > -1) {
                console.warn(SearchCriteria);
            }
            infowindow.setContent(objAJAXRequest.responseText);
        },
        complete: function (jqXHR) {
            $.xhrPool.remove(jqXHR, 'houseElementInfoWindowOnMap');
        }
    });
};
var project = function (latLng) {
    var siny = Math.sin(latLng.lat() * Math.PI / 180);
    siny = Math.min(Math.max(siny, -0.9999), 0.9999);
    return new google.maps.Point(
        256 * (0.5 + latLng.lng() / 360),
        256 * (0.5 - Math.log((1 + siny) / (1 - siny)) / (4 * Math.PI)));
};
var offsetCenter = function (latlng, offsetx, offsety) {
    var scale = Math.pow(2, map.getZoom());
    var worldCoordinateCenter = map.getProjection().fromLatLngToPoint(latlng);
    var pixelOffset = new google.maps.Point(offsetx / scale || 0, offsety / scale || 0);
    var worldCoordinateNewCenter = new google.maps.Point(
        worldCoordinateCenter.x - pixelOffset.x,
        worldCoordinateCenter.y + pixelOffset.y
    );
    var newCenter = map.getProjection().fromPointToLatLng(worldCoordinateNewCenter);
    map.setCenter(newCenter);
};
var setMapOnAll = function (map) {
    for (var i = 0; i < houseResultMarkers.length; i++) {
        houseResultMarkers[i].setMap(map);
    }
};
var removeAllInfoWindowsOnMap = function () {
    for (var i = 0; i < infoWindows.length; i++) {
        infoWindows[i].setMap(null);
    }
};
var renderMarkersToMap = function (cur_map) {
    var _att_marker, cur_marker;
    for (var gm_i = 0; gm_i < houseAttrMarkers.length; gm_i++) {
        cur_marker = houseAttrMarkers[gm_i];
        _att_marker = new google.maps.Marker({
            position: new google.maps.LatLng(cur_marker.lat, cur_marker.lng),
            zoom: cur_marker.zoom,
            map: cur_map,
            title: cur_marker.title,
            icon: cur_marker.icon,
            marker_data: cur_marker,
            html: cur_marker.html,
            infoarray: cur_marker.infoarray,
            metadata: cur_marker.metadata,
            lat: cur_marker.lat,
            lng: cur_marker.lng
        });
        google.maps.event.addListener(_att_marker, 'click', function () {
            ShowInfoWindow(this, this.map);
        });
    }
};
var renderAttractionsToMap = function (cur_map, markerlist) {
    var _att_marker, _cur_marker;
    for (var gm_i = 0; gm_i < markerlist.length; gm_i++) {
        _cur_marker = markerlist[gm_i];
        _att_marker = new google.maps.Marker({
            position: new google.maps.LatLng(_cur_marker.lat, _cur_marker.lng),
            zoom: _cur_marker.zoom,
            map: cur_map,
            title: _cur_marker.title,
            icon: _cur_marker.icon,
            marker_data: _cur_marker,
            html: _cur_marker.html,
            infoarray: _cur_marker.infoarray,
            metadata: _cur_marker.metadata,
            lat: _cur_marker.lat,
            lng: _cur_marker.lng
        });
        google.maps.event.addListener(_att_marker, 'click', function () {
            ShowInfoWindow(this, this.map);
        });
    }
};
var addAndGetGoogleMarker = function (_lat, _lng, _zoom, _icon, _title, _infoarray, _metadata, _isHouse) {
    var _marker = new gmMarker();
    _marker.lat = _lat;
    _marker.lng = _lng;
    _marker.zoom = _zoom;
    _marker.icon = _icon;
    _marker.title = _title;
    _marker.name = _title;
    _marker.metadata = _metadata;
    _marker.infoarray = _infoarray || [];
    _marker.isHouse = typeof _isHouse !== 'undefined' ? _isHouse : false;
    houseAttrMarkers.push(_marker);
    return _marker;
};
var addGoogleMarker = function (_lat, _lng, _zoom, _icon, _title, _infoarray, _metadata, _isHouse) {
    /* adds google marker to marker list for latter rendering by renderMarkersToMap(..) function */
    var _marker = new gmMarker();
    _marker.lat = _lat;
    _marker.lng = _lng;
    _marker.zoom = _zoom;
    _marker.icon = _icon;
    _marker.title = _title;
    _marker.name = _title;
    _marker.metadata = _metadata;
    _marker.infoarray = _infoarray || [];
    _marker.isHouse = typeof _isHouse !== 'undefined' ? _isHouse : false;
    houseAttrMarkers.push(_marker);
};
var addGoogleMarkerToList = function (_markerlist, _cur_map, _id, _lat, _lng, _zoom, _zindex, _icon, _title, _content) {
    if (Object.prototype.toString.call(_markerlist) === '[object Array]') {
        var _infowindow = new google.maps.InfoWindow({
            content: _content
        });
        var _marker = new google.maps.Marker({
            id: _id,
            position: new google.maps.LatLng(_lat, _lng),
            zoom: _zoom,
            map: _cur_map,
            title: _title,
            icon: _icon,
            zIndex: _zindex
        });
        _markerlist.push(_marker);
        google.maps.event.addListener(_marker, 'click', function () {
            removeAllInfoWindowsOnMap();
            infoWindows.push(_infowindow);
            _infowindow.open(_cur_map, _marker);
        });
    }
};
var ShowInfoWindow = function (_marker, cur_map) {
    if (_marker.metadata !== '') { metaaction(_marker.metadata, _marker.lat, _marker.lng, cur_map); }
    if (_marker.html.length === 0) {
        if (_marker.infoarray !== null) {
            if (_marker.infoarray.length > 1) {
                for (var i = 0; i < _marker.infoarray.length; i++) {
                    _marker.html += _marker.infoarray[0][0] + "<br />" + _marker.infoarray[0][1] + "<br />";
                }
            }
            else {
                if (typeof _marker.infoarray[0] !== 'undefined') {
                    _marker.html = _marker.infoarray[0][1];
                } else {
                    _marker.html = '';
                }
            }
        } else {
            _marker.html = '';
        }
    }
    attraktionInfoWindow && attraktionInfoWindow.close();
    attraktionInfoWindow = new google.maps.InfoWindow({
        content: _marker.html,
        map: cur_map,
        position: new google.maps.LatLng(_marker.lat * 1.00006, _marker.lng)
    });
    attraktionInfoWindow.open(cur_map, null);
};
var ShowCoordinate = function (_map, a, b, d) { _map.setCenter(new google.maps.LatLng(a, b)); d && _map.setZoom(d); };
var getCoordinate = function (a) { if (Coordinates) { for (var b = 0; b < Coordinates.length;) { if (Coordinates[b].name === a) return Coordinates[b]; b++; } } };
var calcRoute = function (cur_map, directionDisplay) {
    document.getElementById("directionsStatus").style.display = "none";
    var directionsService = new google.maps.DirectionsService();
    if (fromLoc && toLoc) {
        var request = {
            origin: fromLoc,
            destination: toLoc,
            optimizeWaypoints: true,
            travelMode: google.maps.TravelMode.DRIVING
        };
        directionsService.route(request, function (response, status) {
            if (status === google.maps.DirectionsStatus.OK) {
                directionDisplay.setDirections(response);
            } else {
                console.warn(status);
            }
        });
    }
};
var Hide_decription_att = function () { $('#decription_att').hide(); $('#WzTtDiV').hide(); };
var Show_dkrabat_info = function () { $('#WzTtDiV').show(); };
var Hide_dkrabat_info = function () { $('#WzTtDiV').hide(); };
var metaaction = function (linktitle, lat, lng, cur_map) {
    /* loads on-demand by click event */
    /* Clear past routes */
    if (houseDirectionDisplay !== null && typeof houseDirectionDisplay !== 'undefined') {
        houseDirectionDisplay.setMap(null);
        houseDirectionDisplay = null;
    }
    houseDirectionDisplay = new google.maps.DirectionsRenderer({
        draggable: false,
        suppressInfoWindows: false,
        suppressMarkers: true,
        preserveViewport: false
    });

    $.ajax({
        type: 'GET',
        cache: false,
        async: false,
        dataType: 'html',
        url: window.location.protocol + '//' + window.location.host + '/common/asyn.aspx',
        data: {
            f: "ga",
            p: linktitle,
            language: site_lang,
            map: "true"
        },
        headers: {
            'Cache-Control': 'max-age=' + maxAgeExpiration,
            'X-Functions-Version': functions_version
        },
        success: function (data) {
            var dataArr = data.split(';');
            if (dataArr.length > 0) {
                $('#decription_att').show();
                writeit(dataArr[1], 'att_name');
                writeit(dataArr[2], 'att_address');
                writeit(dataArr[3], 'att_postalcode');
                writeit(dataArr[4], 'att_city');
                writeit(dataArr[9], 'att_header');
                writeit(dataArr[10], 'att_description');
            }
            var houseMarker = houseAttrMarkers.getHouseMarker();
            if (houseMarker !== null) {
                fromLoc = new google.maps.LatLng(houseMarker.lat, houseMarker.lng);
                cur_map.setCenter(fromLoc);
                toLoc = new google.maps.LatLng(dataArr[6], dataArr[7]);

                houseDirectionDisplay.setMap(cur_map);
                houseDirectionDisplay.setPanel(document.getElementById('directionsPanel'));
                document.getElementById("directionsPanel").innerHTML = "";

                calcRoute(cur_map, houseDirectionDisplay);
            }
        },
        error: function (objAJAXRequest, strError) {
            console.warn(strError);
        }
    });
};
var AddCoordinate = function (a, b, d, e, f, g, h) { var c = new Coordinate; c.lat = a; c.lng = b; c.zoom = d; c.iconpath = e; c.name = f; c.html = g; c.metadata = h; Coordinates[Coordinates.length] = c; };
var AddCoordinateWithTabs = function (a, b, d, e, f, g, h) { var c = new Coordinate; c.lat = a; c.lng = b; c.zoom = d; c.iconpath = e; c.name = f; c.infoarray = g; c.metadata = h; Coordinates[Coordinates.length] = c; };
var scrollToAnchor = function (anchor) {
    if ($("*[name='" + anchor + "']").exists()) {
        $('html,body').animate({ scrollTop: $("*[name='" + anchor + "']").offset().top }, 'fast');
    }
};
var scrollToSelector = function (selector, offset) {
    //console.log('scrollToSelector.. ' + selector);
    /* used on house presentation, scrolling to rental price element */
    if (selector) {
        if ($(selector).exists()) {
            if (typeof offset === 'undefined') offset = 0;
            $('html,body').animate({ scrollTop: $(selector).offset().top + offset }, 'fast');
        } else {
            console.warn('Scroll to selector (' + selector + ') not found in context');
        }
    }
};
var isPortrait = function () {
    return window.innerHeight > window.innerWidth;
};
var isLandscape = function () {
    return parseInt(window.orientation) === 90 || parseInt(window.orientation) === -90;
};
var copyToClipboard = function (elementId) {
    var aux = document.createElement("input");
    aux.setAttribute("value", "@{" + document.getElementById(elementId).innerHTML + "}");
    document.body.appendChild(aux);
    aux.select();
    var copied_value = document.execCommand("copy");
    document.body.removeChild(aux);
    alert("Tag copied to clipboard:\n@{" + document.getElementById(elementId).innerHTML + "}");
};
var recordMapTracker = function (lat, lng, zoom) {
    var current_story = { url: escape(window.location.href), lat: lat, lng: lng, zoom: zoom };
    show_map_zoom_history = getObjectCookie('show_map_zoom_history') !== null ? getObjectCookie('show_map_zoom_history') : [];
    if (show_map_zoom_history !== null) {
        show_map_zoom_history = $.grep(show_map_zoom_history, function (e) { return e.url !== escape(window.location.href); }); /* removes current story if exist */
    }
    show_map_zoom_history.push(current_story); /* set new story into history */
    setObjectCookie('show_map_zoom_history', show_map_zoom_history); /* add story to cookie */
};
var getMapTrackerStory = function () {
    show_map_zoom_history = getObjectCookie('show_map_zoom_history') !== null ? getObjectCookie('show_map_zoom_history') : [];
    if (show_map_zoom_history.length > 0) {
        var current_story = $.grep(show_map_zoom_history, function (e) { return e.url === escape(window.location.href); });
        return current_story;
    }
    return { url: '', lat: 0, lng: 0, zoom: 10 };
};
var displayViewportLogo = function (target_id_selector) {
    if (jquery_search_sitebid === 'SOS' && isDesktop === 'True') { /* for showing logo in top corner infinity scrolling is activated */
        if (parseInt($(window).scrollTop()) > 90) {
            if (!$('.topbar_logo').exists()) {
                var $logo = $('<img />').hide();
                $(target_id_selector).prepend(
                    $logo
                        .addClass('topbar_logo logo_kunsol')
                        .attr('src', '//images.sologstrand.dk/images/sos_2/svg/sos_logo_kunsol.svg')
                        .click(function () { document.location.href = '/'; })
                        .fadeIn('fast')
                );
            }
        } else {
            if ($('.topbar_logo').exists()) {
                $('.topbar_logo').fadeOut().remove();
            }
        }
    }
};
Array.prototype.contains = function (obj) { var i = this.length; while (i--) { if (this[i] === obj) { return true; } } return false; };
Array.prototype.containskey = function (keyname) { return this.filter(function (e) { return e.key === keyname; }).length > 0; };
Array.prototype.getHouseMarker = function () { for (var i = 0; i < this.length; i++) { if (this[i].isHouse === true) { return this[i]; } } return null; };
Array.prototype.joinNumbers = function (seperator) { var res = ''; if (this.length) { res += parseInt(this[0]); for (var i = 1; i < this.length; i++) { res += seperator + parseInt(this[i]); } } return res; };
function getRegionNames(__bid, __lang) {
    if (arrRegion.length === 0) {
        for (var i = 0; i < arr_areasList.length; i++) {
            arrRegion.push({ name: arr_areasList[i].name, id: arr_areasList[i].id, regionid: arr_areasList[i].regionid, linktitle: arr_areasList[i].linktitle });
        }
    }
}
function getRegionGeo(region_id) {
    var geo = { lat: default_user_settings.show_map_lat, lng: default_user_settings.show_map_lng, zoom: default_user_settings.show_map_zoom };
    var story = getMapTrackerStory();
    var use_current_story = false;
    if (story.length === 1) {
        if (story[0].lat > 0) use_current_story = true;
        if (story[0].lng > 0) use_current_story = true;
        if (story[0].zoom > 0) use_current_story = true;
    }
    if (use_current_story) {
        geo.lat = story[0].lat;
        geo.lng = story[0].lng;
        geo.zoom = story[0].zoom;
    }
    switch (parseInt(region_id)) {
        case 1: geo.lat = 57.136038; geo.lng = 9.515025; geo.zoom = 8; break; /* Nordvestjylland */
        case 2: geo.lat = 55.848388; geo.lng = 8.964843; geo.zoom = 8; break; /* Jyllandsvestkyst */
        case 3: geo.lat = 56.940528; geo.lng = 9.207915; geo.zoom = 8; break; /* Limfjordslandet */
        case 4: geo.lat = 57.175764; geo.lng = 10.409546; geo.zoom = 8; break; /* Nordøstjylland */
        case 5: geo.lat = 56.375188; geo.lng = 10.651245; geo.zoom = 9; break; /* Djursland */
        case 6: geo.lat = 55.758855563782774; geo.lng = 9.61303711718755; geo.zoom = 8; break; /* Sydøstjylland */
        case 7: geo.lat = 55.19460057297647; geo.lng = 10.334014634765593; geo.zoom = 9; break; /* Fyn og øer */
        case 8: geo.lat = 54.786485; geo.lng = 11.690826; geo.zoom = 9; break; /* Lolland, Falster og Møn */
        case 9: geo.lat = 55.7912970360751; geo.lng = 11.291199175781216; geo.zoom = 8; break; /* Sjælland */
        case 95: geo.lat = 55.120064; geo.lng = 14.902954; geo.zoom = 10; break; /* Bornholm */
    }
    recordMapTracker(geo.lat, geo.lng, geo.zoom);
    return geo;
}
function getexpirydate(nodays) {
    var UTCstring;
    Today = new Date();
    nomilli = Date.parse(Today);
    Today.setTime(nomilli + nodays * 24 * 60 * 60 * 1000);
    UTCstring = Today.toUTCString();
    return UTCstring;
}
function setcookie(name, value, duration, path) {
    if (value === '') {
        return;
    }
    cookiestring = name + "=" + escape(value) + "; expires=" + getexpirydate(duration) + "; path=" + (path ? path : "/") + ";";
    document.cookie = cookiestring;
    if (!getcookie(name)) {
        return false;
    } else {
        return true;
    }
}
function getcookie(name) { var cookiestring = "" + document.cookie; var index1 = cookiestring.indexOf(name); if (index1 === -1 || name === "") return ""; var index2 = cookiestring.indexOf(';', index1); if (index2 === -1) index2 = cookiestring.length; return unescape(cookiestring.substring(index1 + name.length + 1, index2)); }
function setObjectCookie(name, value, reference, duration) {
    // console.log('setObjectCookie (' + name + ') from ' + reference);
    // console.log(value);
    var str_expiredate = duration !== null ? 'expires=' + getexpirydate(duration) + ';' : '';
    try {
        document.cookie = name + "=" + JSON.stringify(value) + "; " + str_expiredate + " path=/;";
    } catch (e) {
        console.warn('Error saving \'' + name + '\' cookie from \'' + reference + '\'. ' + e);
    }
}
function getObjectCookie(name) {
    try {
        var result = document.cookie.match(new RegExp(name + '=([^;]+)'));
        if (result) return JSON.parse(result[1]); /* returns an object */
        return {};
    } catch (e) {
        console.warn('Error getting \'' + name + '\' cookie. ' + e);
        return {};
    }
}
function removeURLParameter(qs, parameter) {
    var prefix = encodeURIComponent(parameter) + '=';
    var pars = qs.split(';');
    for (var i = 0; i < pars.length; i++) {
        if (pars[i].indexOf(prefix) > -1) {
            pars.splice(i, 1);
        }
    }
    return pars.join(';');
}
function getUrlFilename(path) {
    path = path.substring(path.lastIndexOf("/") + 1);
    return (path.match(/[^.]+(\.[^?#]+)?/) || [])[0].toLowerCase();
}
function setBrowserBackCookie(house_object) {
    sessionStorage.setItem('browserback_from_house', 'true');
    setcookie('browserback_from_house', 'true', 0.1, '');
    if (typeof house_object === 'object') {
        var us = getObjectCookie('user_settings');
        if (us !== null) {
            // console.log(house_object.houseid);
            us.last_visited_house = house_object.houseid;
            us.last_visited_house_json = JSON.stringify(house_object);

            if (typeof us.last_visited_houses_history !== 'undefined') {
                if (us.last_visited_houses_history[0] !== house_object.houseid) {
                    us.last_visited_houses_history.unshift(house_object.houseid);
                }
                us.last_visited_house = house_object.houseid;
                setObjectCookie('user_settings', us, 'setBrowserBackCookie()', 365);
            }
            us.browser_back_mode = true;
            setObjectCookie('user_settings', us, 'setBrowserBackCookie()', user_settings_expire_days);

            $.ajax({
                type: 'GET',
                cache: false,
                async: true,
                url: '/TextFactory.asmx/UpdateServerCookie?name=user_settings&content=' + JSON.stringify(us),
                beforeSend: function (jqXHR) {
                    $.xhrPool.add(jqXHR, 'UpdateServerCookie');
                },
                success: function () {
                    // console.log('Server cookie updated');
                },
                error: function (jqXHR, textStatus) {
                    // console.warn('Server cookie could not be updated! State: ' + textStatus);
                },
                complete: function (jqXHR) {
                    $.xhrPool.remove(jqXHR, 'UpdateServerCookie');
                }
            });
        }
    }
}
function setBrowserBackModeTo(b) {
    var current_user_settings = getObjectCookie('user_settings');
    current_user_settings.browser_back_mode = b;
    setObjectCookie('user_settings', current_user_settings, 'clearBrowserBackData()..', user_settings_expire_days);
}
function deleteBrowserBackCookie() {
    deletecookie('browserback_from_house');
}
function getBrowserBackCookie() {
    return getcookie('browserback_from_house');
}
/* DEPENDENCIES : house_resultat class and li tag */
function loadResultElements(useLazyLoad, element_container, source) {
    //console.log('loadResultElements.. ' + source);
    var activateLazyLoad = typeof useLazyLoad !== 'undefined' ? useLazyLoad : true;
    var element_container_class = typeof element_container !== 'undefined' && element_container !== '' ? element_container : 'housecontainer';
    var house_filter = ':in-viewport';
    var isGMHouseElement = element_container === 'gmhouse' ? true : false;
    if (isGMHouseElement) house_filter = ':visible';
    $('.' + element_container_class + ' .house_resultat:not(.slider_loaded)').filter(house_filter).each(function () {
        var el_id = $(this).attr('data-id');
        var el_href = $(this).attr('data-href');
        $('li[data-id="' + el_id + '"]').loadResultElementFunctions({
            sitebid: jquery_search_sitebid,
            houseid: el_id,
            language: site_lang,
            cacheLoading: false,
            asyncLoading: true,
            activateSliderImageHref: true,
            sliderImageHref: el_href,
            activateGallerySlider: true,
            showGallerySlideNumber: true,
            showImageLabel: false,
            activeLazyLoad: activateLazyLoad,
            lazyLoadEffect: 'fadeIn',
            event: "load scroll resize",
            threshold: -300,
            activateMap: true,
            useRouteFunctions: designtemplatename === 'SOS' ? true : false,
            showOnMapContainerSelectorClass: '.showonmap',
            mapAppendToContainerSelector: '#map_placeholder_' + el_id,
            sliderControlsContainerSelectorPrefix: '#slider-controls-',
            sliderContainerSelectorPrefix: '.flexslider-',
            sliderNavigationSelectorPrefix: '#slider-navigation-',
            mapContainerSelectorPrefix: '#mapcontainer-', /* generated on-the-fly map container */
            loaderImageSrc: '/images/loading.gif'
        });
        $(this).addClass('slider_loaded');
        $('div[data-id="' + el_id + '"] img.map_ikon').each(function () {
            if ($(this).hasAttr("data-map-original")) {
                $(this).attr("src", $(this).attr("data-map-original"));
                $(this).removeAttr("data-map-original");
            }
        });
    }, function () {
        sessionStorage.removeItem('browserback_from_house');
        var current_user_settings = getObjectCookie('user_settings');
        current_user_settings.browser_back_mode = false;
        setObjectCookie('user_settings', current_user_settings, '$.fn.searchblock.attach', user_settings_expire_days);
    });
}
var getJsonString = function (data) {
    if (data.childNodes.length > 0) {
        return data.childNodes[0].textContent;
    } else {
        return 'Error: string not of type JSON';
    }
};
function showElementReviews(houseid, startindex, show, callback) { /* loads on-demand by click event */
    if ($('.house_reviews_' + houseid).is(':visible')) {
        $('.house_reviews_' + houseid).slideUp('fast').empty();
    } else {
        $.ajax({
            type: 'GET',
            cache: false,
            async: true,
            url: '/ObjectResults.asmx/GetReviews',
            data: {
                TemplatePath: house_element_review_templatepath,
                HouseId: houseid,
                SiteLanguage: site_lang,
                IndexToStartPaging: startindex,
                NumberOfElementsToShow: show,
                AlternativeQueries: '',
                ReloadCache: 'true'
            },
            headers: {
                'Cache-Control': 'max-age=' + maxAgeExpiration,
                'X-Functions-Version': functions_version
            },
            beforeSend: function (jqXHR) {
                $.xhrPool.add(jqXHR, 'loadReviews');
            },
            success: function (data) {
                $('.house_reviews_' + houseid).html('<div class="txt_guestbook_result">' + txt_guestbook_result + '</div>' + getJsonString(data)).show().slideDown('normal');
                $('close[data-type="closereviews"]').click(function () {
                    $('.house_reviews_' + houseid).slideUp('fast').empty();
                });
            },
            error: function (objAJAXRequest, strError) {
                $('.house_reviews_' + houseid).html('<div class="ajaxerror">' + objAJAXRequest + '<br />' + strError + '</div>');
            },
            complete: function (jqXHR) {
                if (typeof callback === 'function') {
                    callback.call(this, null);
                }
                $.xhrPool.remove(jqXHR, 'loadReviews');
            }
        });
    }
}
function checkScrollerAndInfinityButton(footer_css_selector, source) {
    //console.log('checkScrollerAndInfinityButton.. ' + source);
    var footer_trigger = typeof footer_css_selector !== 'undefined' ? footer_trigger = footer_css_selector : footer_trigger = '.infinity';
    $('.fs-container .slides .house').removeClass('topactive');
    $('.fs-container .slides .house:in-viewport:first').addClass('topactive');
    if (jquery_search_sitebid === 'SOS') {
        if (canScroll() && !$('.mapshown').exists()) { $(footer_trigger).show(); }
    }
    //console.log('Footer in viewport: ' + $(footer_trigger).filter(':in-viewport').length);
    //console.log('isInfinityEventTriggered: ' + canRunNewInfinity() + '. Scroller activated:' + canScroll() + '.');
    if ($(footer_trigger).filter(':in-viewport').length > 0 && !canRunNewInfinity() && canScroll()) {
        if (canScroll() && !$('.mapshown').exists()) { $(footer_trigger).show(); }
        //console.log('Footer is in viewport and visible.. start to load new houses..');
        $(footer_trigger).show(); /* dont allow several house calls #!#!#!# */
        var $sb = $('*[data-type="searchblock"]');
        $sb.searchblock('appendNewHouses', 'checkScrollerAndInfinityButton()..'); /* deferred method */
    } else {
        loadResultElements(true, '', 'checkScrollerAndInfinityButton');
    }
    var scroll_top = parseInt($(window).scrollTop());
    if (scroll_top > 400) {
        if ($('#scrolltotop').is(':hidden')) {
            $('#scrolltotop').show().on('click', function () {
                scrollToTop();
            });
        }
    } else {
        $('#scrolltotop').hide();
    }
    //console.log('checkScrollerAndInfinityButton..');
    displayViewportLogo('#result_new_searchbar');
}
function scrollToTop() {
    $('html, body').stop().animate({ scrollTop: 0 }, '500', 'swing', function () {
        $('#scrolltotop').hide();
    });
}
function isHouseOnPersonalList(houseid, cookiename, isOnPLText) {
    if (!cookiename) cookiename = "HLCOOKIE";
    var pl_cookie = getcookie(cookiename);
    if (pl_cookie.length > 0) {
        var elements = pl_cookie.split('#');
        var removed = false;
        for (var i = 0; i < elements.length; i++) {
            var element = elements[i].split('*');
            if (element.length === 2) {
                if (element[0] === houseid) {
                    var fav_text = $('li[data-id="' + houseid + '"] *[data-type="favorit"]').text();
                    if (fav_text !== isOnPLText) {
                        $('li[data-id="' + houseid + '"] *[data-type="favorit"]').text(isOnPLText);
                    }
                    $(search_house_container + ' li[data-id="' + houseid + '"] *[data-type="favorit"]').parent().addClass('fav_active');
                }
            }
        }
    }
}
function addOrRemoveHouseFromPersonalList(houseid, season, cookiename, duration, redirectToCurrentPage) {
    if (!cookiename) cookiename = "HLCOOKIE";
    if (!duration) duration = 365;
    var pl_cookie = getcookie(cookiename);
    if (pl_cookie.length > 0) {
        var elements = pl_cookie.split('#');
        var removed = false;
        for (var i = 0; i < elements.length; i++) {
            var element = elements[i].split('*');
            if (element.length === 2) {
                if (element[0] === houseid && parseInt(element[1]) === parseInt(season)) {
                    removeHouseFromPersonalList(houseid, season, cookiename, duration);
                    removed = true;
                }
            }
        }
        if (removed === false) {
            addHouseToPersonalList(houseid, season, cookiename, duration);
        }
    } else {
        addHouseToPersonalList(houseid, season, cookiename, duration);
    }
    if (redirectToCurrentPage === true) {
        window.location = window.location;
    }
}
function addHouseToPersonalList(houseid, season, cookiename, duration) {
    if (!cookiename) cookiename = "HLCOOKIE";
    if (!duration) duration = 365;
    var pl_cookie = getcookie(cookiename);
    if (pl_cookie.length > 0) {
        var elements = pl_cookie.split('#');
        if (!elements.contains(houseid + '*' + season)) {
            elements.push(houseid + '*' + season);
            setcookie(cookiename, elements.join('#'), duration);
        }
    } else {
        setcookie(cookiename, houseid + '*' + season, duration);
    }
}
function removeHouseFromPersonalList(houseid, season, cookiename, duration) {
    if (!cookiename) cookiename = "HLCOOKIE";
    if (!duration) duration = 365;
    if (cookieexists(cookiename)) {
        var pl_cookie = getcookie(cookiename);
        if (pl_cookie.length > 0) {
            var elements = pl_cookie.split('#');
            for (var i = 0; i < elements.length; i++) {
                var element = elements[i].split('*');
                if (element.length === 2) {
                    if (element[0] === houseid && parseInt(element[1]) === parseInt(season)) {
                        elements.splice(i, 1);
                        setcookie(cookiename, elements.join('#'), duration);
                    }
                }
            }
        }
    }
}
function createCORSRequest(method, url) {
    var xhr = new XMLHttpRequest();
    if ("withCredentials" in xhr) {
        xhr.open(method, url, true);
    } else if (typeof XDomainRequest !== "undefined") {
        xhr = new XDomainRequest();
        xhr.open(method, url);
    } else {
        xhr = null;
    }
    return xhr;
}
function loadScriptAsync(src) { var s, r, t; r = false; s = document.createElement('script'); s.type = 'text/javascript'; s.src = src; s.onload = s.onreadystatechange = function () { if (!r && (!this.readyState || this.readyState === 'complete')) { r = true; } }; t = document.getElementsByTagName('script')[0]; t.parentNode.insertBefore(s, t); }
function updateCookiestartdate(valueName, toValue) {
    var sb_cookie = getcookie(search_cookie_name);
    var re_parms = new RegExp("\\?d\\=", "gi"); sb_cookie = sb_cookie.replace(re_parms, '');
    if (sb_cookie !== '' && sb_cookie === '?') {
        var sb_par = sb_cookie.split(';');
        for (var i = 0; i < sb_par.length; i++) {
            var sb_par_item = sb_par[i].split('=');
            if (sb_par_item[0].indexOf(valueName) > -1) {
                var re_startdate = new RegExp(sb_par[i], "g");
                sb_cookie = sb_cookie.replace(re_startdate, sb_par_item[0] + '=' + toValue);
            }
        }
        if (document.location.href.indexOf('usecookie=no') === -1) {
            setcookie(search_cookie_name, '?d=' + sb_cookie, 7);
        }
    }
}
//if (typeof clearDate !== 'function') {
//    function clearDate() { clearDPDate(); }
//}
function clearDPDate() { deletecookie(search_cookie_name); $('select[name="numberofdays"]').removeClass('dd_selected'); $('#daysSelDate').hide(); $('input[name="discount"]').hide().next('label[for*="_discount"]').hide(); $('input[name="startdate"]').val(notSetText); } /* called on calendar widget, remove arrival date button */
function clearSoegblokDate() { deletecookie(search_cookie_name); $('select[name="numberofdays"]').removeClass('dd_selected'); $('#daysSelDate').hide(); $('input[name="discount"]').hide().next('label[for*="_discount"]').hide(); $('input[name="startdate"]').val(notSetText); }
function toCalDate(dateString) { if (typeof dateString !== 'undefined') { var dateArray = dateString.split('-'), result = ''; if (dateArray.length === 3) { result = new Date(parseInt(dateArray[2]), parseInt(dateArray[1]) - 1, parseInt(dateArray[0])); } return result; } }
function callingAsyn(siteBID) {
    var url = document.location.href;
    if (siteBID === 'FDP') {
        if (url.toLowerCase().indexOf('resultater.aspx') !== -1 || url.toLowerCase().indexOf('angebot.aspx') !== -1) {
            callFullAsyn(1);
        } else if (url.toLowerCase().indexOf('/ferienhaus-privat/') !== -1) {
            callFullAsynCat(1);
        } else if (url.toLowerCase().indexOf('merkliste.aspx') !== -1) {
            loadFavoritHouses();
        } else {
            if ($('input[id$="TextBox_startdate"]').val() !== "") {
                updateCookiestartdate('startdate', $('input[id$="TextBox_startdate"]').val());
            }
            callAsyn(1);
        }
    }
    else if (siteBID === 'FDH') {
        if (url.toLowerCase().indexOf('resultater.aspx') !== -1 || url.toLowerCase().indexOf('angebot.aspx') !== -1) {
            callFullAsyn(1);
        } else if (url.toLowerCase().indexOf('/ferienhaus-mit-hund/') !== -1) {
            callFullAsynCat(1);
        } else if (url.toLowerCase().indexOf('favoritter.aspx') !== -1) {
            loadFavoritHouses();
        } else {
            callAsyn(1);
        }
    }
    else if (siteBID === 'NS') {
        if (url.toLowerCase().indexOf('resultater.aspx') !== -1) {
            callFullAsyn(0);
        }
        else if (url.toLowerCase().indexOf('/soeg-sommerhus/') !== -1 || url.toLowerCase().indexOf('/suchen_und_buchen/') !== -1) {
            callAsyn(0);
        }
        else if (url.toLowerCase().indexOf('/sommerhus.aspx') !== -1 || url.toLowerCase().indexOf('/sommerhuse.aspx') !== -1 || url.toLowerCase().indexOf('/sommerhusudlejning.aspx') !== -1 || url.toLowerCase().indexOf('/sommerhus_hund.aspx') !== -1 || url.toLowerCase().indexOf('/ferienhaus_privat.aspx') !== -1 || url.toLowerCase().indexOf('/ferienhaus_hund.aspx') !== -1) {
            callAsyn(1);
        }
        else {
            callAsyn(2);
        }
    }
    else if (siteBID === 'RH') {
        if (url.toLowerCase().indexOf('resultater.aspx') !== -1) {
            callFullAsyn(0);
        }
        if (url.toLowerCase().indexOf('/sommerhusromo/') !== -1 || url.toLowerCase().indexOf('/ferienhausromo/') !== -1) {
            callFullAsyn(0);
        }
        if (url.toLowerCase().indexOf('huskeliste.aspx') !== -1 || url.toLowerCase().indexOf('merkliste.aspx') !== -1) {
            loadFavoritHouses();
        }
        else {
            callAsyn(0);
        }
    }
    else if (siteBID === 'SCO') {
        if (url.toLowerCase().indexOf('resultater.aspx') !== -1 || url.toLowerCase().indexOf('billige_sommerhuse.aspx') !== -1 || url.toLowerCase().indexOf('feriehus_med_rabatt.aspx') !== -1 || url.toLowerCase().indexOf('stugor_rabatt.aspx') !== -1 || url.toLowerCase().indexOf('vakantiehuis_korting.aspx') !== -1) {
            callFullAsyn(0);
        } else if (url.toLowerCase().indexOf('/tilbud/') !== -1 || url.toLowerCase().indexOf('/angebot/') !== -1) {
            callFullAsyn(0);
        } else {
            callAsyn(0);
        }
    }
    else if (siteBID === 'VR') {
        if (url.toLowerCase().indexOf('resultater.aspx') !== -1) {
            callFullAsyn(0);
        } else {
            callAsyn(2);
        }
    }
    else if (siteBID === 'BSN') {
        if (url.toLowerCase().indexOf('resultater.aspx') !== -1) {
            callFullAsyn(0);
        } else if (url.toLowerCase().indexOf('huskeliste.aspx') !== -1) {
            checkVacancy();
        } else {
            callAsyn(0);
        }
    }
}
function getTempUrlParam(tmpURL, name) { var regexS = "[\\?&]" + name + "=([^&#]*)"; var regex = new RegExp(regexS); var results = regex.exec(tmpURL); if (results === null) { return ""; } else { return results[1]; } }
function TipSide() { var e = open("/tip-en-side.aspx?title=" + document.title + "&refURL=" + document.location.href, "TeSideWin", "width=460,height=550,toolbar=no,status=yes,directories=no,scrollbars=yes,resizable=no,menubar=no"); }
(function (e) { if (typeof define === "function" && define.amd) { define(["jquery"], e); } else { e(jQuery); } })
    (function (e) { function n(e) { return u.raw ? e : encodeURIComponent(e); } function r(e) { return u.raw ? e : decodeURIComponent(e); } function i(e) { return n(u.json ? JSON.stringify(e) : String(e)); } function s(e) { if (e.indexOf('"') === 0) { e = e.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\"); } try { e = decodeURIComponent(e.replace(t, " ")); return u.json ? JSON.parse(e) : e; } catch (n) { /* do nothing */ } } function o(t, n) { var r = u.raw ? t : s(t); return e.isFunction(n) ? n(r) : r; } var t = /\+/g; var u = e.cookie = function (t, s, a) { if (typeof s !== undefined && !e.isFunction(s)) { a = e.extend({}, u.defaults, a); if (typeof a.expires === "number") { var l = a.expires, c = a.expires = new Date; criteria.setTime(+c + l * 864e5); } return document.cookie = [n(t), "=", i(s), a.expires ? "; expires=" + a.expires.toUTCString() : "", a.path ? "; path=" + a.path : "", a.domain ? "; domain=" + a.domain : "", a.secure ? "; secure" : ""].join(""); } var p = t ? undefined : {}; var v = document.cookie ? document.cookie.split("; ") : []; for (var m = 0, y = v.length; m < y; m++) { var w = v[m].split("="); var E = r(w.shift()); var S = w.join("="); if (t && t === E) { p = o(S, s); break; } if (!t && typeof (S = o(S)) !== undefined) { p[E] = S; } } return p; }; u.defaults = {}; e.removeCookie = function (t, n) { if (typeof e.cookie(t) === undefined) { return false; } e.cookie(t, "", e.extend({}, n, { expires: -1 })); return !e.cookie(t); }; });
/* input: Date object and number of offset days , output: modified Date object include any offset summer/winter periods */
Date.prototype.addHours = function (h) {
    const hours = h * 60 * 60 * 1000;
    this.setTime(this.getTime() + hours);
    return this;
};
function addDays(date, days) {
    if (date instanceof Date) {
        const offsetMillis = date.getTimezoneOffset() * 60000 * -1;
        const whole_days = days * 24 * 60 * 60 * 1000;
        const time_offset = date.getTime() - offsetMillis;
        return new Date(time_offset + whole_days);
    }
    return false;
}
function addDaysWithoutTZ(date, days) { if (date instanceof Date) { const whole_days = days * 24 * 60 * 60 * 1000; return new Date(fixOffset(date).getTime() + whole_days); } }
function fixOffset(date) { var minutesInTimezone = 360; return new Date(date.getTime() + (minutesInTimezone - date.getTimezoneOffset()) * 60000); }
/* input: Date object and number of offset months , output: modified Date object */
function addMonths(date, months) { if (date instanceof Date) { return date.setMonth(date.getMonth() + months); } }
/* input: Date object , output: modified Date object */
function getFirstDayInMonth(date) { if (date instanceof Date) { return new Date(date.getFullYear(), date.getMonth(), 1); } }
/* input: Date object , output: modified Date object */
function getLastDayInMonth(date) { if (date instanceof Date) { return new Date(date.getFullYear(), date.getMonth() + 1, 0); } }
/* input: Date object (months are index based), output: string */
function formatDate(d) { if (d instanceof Date) { var curr_date = parseInt(d.getDate()) < 10 ? "0" + d.getDate() : d.getDate(); var monthnumber = parseInt(d.getMonth()) + 1; var curr_month = monthnumber < 10 ? "0" + monthnumber : monthnumber; var curr_year = d.getFullYear(); return curr_date + "-" + curr_month + "-" + curr_year; } }
/* input: dd-mm-yyyy (months are index based), output: Date object */
function parseDate(dateString) { try { var dateArray = dateString.split('-'); return new Date(parseInt(dateArray[2]), parseInt(dateArray[1]) - 1, parseInt(dateArray[0])); } catch (e) { return null; } }
/* input start and end dates (dd-MM-yyyy, hours*minutes*seconds*milliseconds), output count days between dates */
function daydiff(startdate, enddate) { if (startdate instanceof Date && enddate instanceof Date) { var oneDay = 24 * 60 * 60 * 1000; return Math.round(Math.abs((startdate.getTime() - enddate.getTime()) / oneDay)); } return -1; }
/* finds the first A before current monday then returns the date as arrival og calculates the departure date */
function getStandardBookingDates(dateMonday, calArrivalDays) { var weekstartdate = null, weekEndDate = null, isBookable = true; var currentMonday = $.grep(calArrivalDays, function (day) { return day.dateFormatted === formatDate(dateMonday); }); if (currentMonday.length > 0) { for (var dayloop = -1; dayloop > -8; dayloop--) { (function () { var currentDate = addDays(parseDate(currentMonday[0].dateFormatted), dayloop); var currentDay = $.grep(calArrivalDays, function (day) { return day.dateFormatted === formatDate(currentDate); }); if (currentDay.length > 0) { if (currentDay[0].dayCalendarCode.indexOf('A') !== -1) { weekstartdate = parseDate(currentDay[0].dateFormatted); return; } } })(); } } else { isBookable = false; } return { Weekstartdate: weekstartdate, WeekEndDate: weekEndDate, IsBookable: isBookable }; }
/* return saturday */
function getStartArrivalDate(dateMonday) { return addDays(dateMonday, -2); }
/* checks if any b or B in calendar string between arrival and departure dates */
function isBookingAllowedInDateRange(fromDate, nightCount, calArrivalDays) { var currentDate, bookingAllowed = true; for (i = 0; i < nightCount; i++) { currentDate = addDays(fromDate, i); var dateAllowed = $.grep(calArrivalDays, function (day) { return day.dateFormatted === formatDate(currentDate); }); if (dateAllowed.length === 0) { return false; } else { if (dateAllowed[0].dayCalendarCode.indexOf('b') !== -1 || dateAllowed[0].dayCalendarCode.indexOf('B') !== -1) { return false; } } } return bookingAllowed; }
/* input: week number and year , output: Date object representing a Monday in a specific week */
function getMondayFromWeeknumber(wn, year) { return w2date(year, wn, 0); }
var w2date = function (year, wn, dayNb) { var a = new Date(year, 0, 10, 12, 0, 0), b = new Date(year, 0, 4, 12, 0, 0), mon1 = b.getTime() - a.getDay() * 86400000; return new Date(mon1 + ((wn - 1) * 7 + dayNb) * 86400000); };
/* input: numeric value , output: bool */
function isNumber(n) { return !isNaN(parseFloat(n)) && isFinite(n); }
function getParam(name) { var regexS = "[\\?&]" + name + "=([^&#]*)", regex = new RegExp(regexS), tmpURL = window.location.href, results = regex.exec(tmpURL); if (results === null) { return ""; } else { return results[1]; } }
function getQueryValue(tmpURL, name) { var regexS = "[\\?&]" + name + "=([^&#]*)", regex = new RegExp(regexS), results = regex.exec(tmpURL); if (results === null) { return ""; } else { return results[1]; } }
function calendarArrDepDates(calendarStart, calendarEnd) { var _calendarArrivalDays = [], _calendarDepartureDays = [], daysBetween = daydiff(calendarStart, calendarEnd); for (var iarr = 0; iarr < daysBetween; iarr++) { _calendarArrivalDays.push({ dateFormatted: formatDate(addDays(calendarStart, iarr)), dayCalendarCode: '' }); } for (var idep = 0; idep < daysBetween; idep++) { _calendarDepartureDays.push({ dateFormatted: formatDate(addDays(calendarStart, idep)), dayCalendarCode: '' }); } return { arrivalDays: _calendarArrivalDays, departureDays: _calendarDepartureDays }; }
function getCalendarCodes(dateArray, cal_date_found, isFromCalendar, selectedArrivalDate, _dmy, daysDiff, isDepartureClickable, selectedCss) {
    if (cal_date_found.length > 0) {
        var displayString = cal_date_found[0].dateFormatted + " : " + cal_date_found[0].dayCalendarCode;
        var daysDiffDept = 0;
        if (!isFromCalendar && selectedArrivalDate !== null) {
            var _dmy_parsed = $.datepicker.parseDate('dd-mm-yy', _dmy);
            var _selected_parsed = $.datepicker.parseDate('dd-mm-yy', selectedArrivalDate);
            daysDiffDept = daydiff(_selected_parsed, _dmy_parsed);
            /* rules for departure calendar */
            if (_dmy_parsed <= _selected_parsed) { /* afrejse må først være efter ankomst + 1 dag */
                if (parseInt(daysDiffDept) === 0) {
                    return [false, 'selected-arrival-day', cal_blocked_no_departure];
                } else {
                    return [false, 'before-arrival', cal_occupied];
                }
            }
            if (_selected_parsed < _dmy_parsed) {
                if (isDepartureClickable && (cal_date_found[0].dayCalendarCode.indexOf('b') !== -1 || cal_date_found[0].dayCalendarCode.indexOf('B') !== -1)) {
                    isDepartureClickable = false;
                }
            }
            /* check if b or B exists in calendar */
            if (isDepartureClickable === false) {
                if (cal_date_found[0].dayCalendarCode.indexOf('b') !== -1) {
                    return [false, 'not-clickable blocked', cal_blocked_no_departure];
                } else if (cal_date_found[0].dayCalendarCode.indexOf('B') !== -1) {
                    return [false, 'not-clickable blocked', cal_occupied];
                } else {
                    return [false, 'not-clickable outside', cal_blocked_no_departure];
                }
            }
            if (daysDiffDept < 2) {
                return [false, 'not-clickable toclose daydiff' + daysDiffDept, cal_blocked_no_departure];
            }
            var ankomstdato = $.grep(dateArray, function (day) {
                return day.dateFormatted === selectedArrivalDate;
            });
            if (daysDiffDept >= 2 && daysDiffDept <= 5) {
                if (ankomstdato.length > 0) {
                    if (cal_date_found[0].dayCalendarCode.indexOf('S') !== -1 && ankomstdato[0].dayCalendarCode.indexOf('S') !== -1) {
                        return [true, 'shortstay', cal_occupied_departure];
                    }
                }
            }
            if (daysDiff > 5 && daysDiff < 29) {
                if (ankomstdato.length > 0) {
                    if (cal_date_found[0].dayCalendarCode.indexOf('A') !== -1 && ankomstdato[0].dayCalendarCode.indexOf('A') !== -1) {
                        return [true, 'shortstay', cal_occupied_departure];
                    }

                    if (cal_date_found[0].dayCalendarCode.indexOf('O') !== -1 && ankomstdato[0].dayCalendarCode.indexOf('O') !== -1) {
                        return [true, 'optional-arrival', cal_occupied_departure];
                    }
                }
            }
        }
        var css_extra = 'code_' + cal_date_found[0].dayCalendarCode + ' ' + cal_date_found[0].dateFormatted + selectedCss;
        var cal_a = typeof cal_no_arrival === 'undefined' ? 'Optional arrival' : cal_no_arrival; /* Ledig, men ankomst ikke mulig */
        var cal_Ma = typeof cal_no_arrival === 'undefined' ? 'Multiweek arrival' : cal_no_arrival; /* Ledig, men ankomst ikke mulig */
        var cal_A = typeof cal_standard_arrival === 'undefined' ? 'Optional arrival' : cal_standard_arrival;
        var cal_MA = typeof cal_standard_arrival === 'undefined' ? 'Multiweek arrival' : cal_standard_arrival;
        var cal_b = typeof cal_booking_blocked === 'undefined' ? 'Booked' : cal_booking_blocked;
        var cal_Mb = typeof cal_booking_blocked === 'undefined' ? 'Booked' : cal_booking_blocked;
        var cal_B = typeof cal_booking_blocked === 'undefined' ? 'Blocked' : cal_booking_blocked;
        var cal_MB = typeof cal_booking_blocked === 'undefined' ? 'Blocked' : cal_booking_blocked;
        var cal_O = typeof cal_standard_arrival === 'undefined' ? 'Optional' : cal_standard_arrival;
        var cal_S = typeof cal_standard_arrival === 'undefined' ? 'Shortstay' : cal_standard_arrival;
        var cal_aS = typeof cal_shortstay === 'undefined' ? 'Shortstay arrival' : cal_shortstay;
        var cal_AS = typeof cal_shortstay === 'undefined' ? 'Shortstay standard arrival' : cal_shortstay;
        var cal_aO = typeof cal_optional_arrival === 'undefined' ? 'Optional arrival' : cal_optional_arrival;
        var cal_AO = typeof cal_standard_arrival === 'undefined' ? 'Optional standard arrival' : cal_standard_arrival;
        var cal_aSO = typeof cal_standard_arrival === 'undefined' ? 'Optional shortstay arrival' : cal_standard_arrival;
        var cal_ASO = typeof cal_standard_arrival === 'undefined' ? 'Optional shortstay standard arrival' : cal_standard_arrival;
        var cal_MaO = typeof cal_optional_multiweek_arrival === 'undefined' ? 'Optional or Multiweek arrival' : cal_optional_multiweek_arrival;
        var cal_MAO = typeof cal_optional_multiweek_arrival === 'undefined' ? 'Optional or Multiweek standard arrival' : cal_optional_multiweek_arrival;
        var cal_MaS = typeof cal_multiweek_shortstay === 'undefined' ? 'Shortstay or Multiweek arrival' : cal_multiweek_shortstay;
        var cal_MAS = typeof cal_multiweek_shortstay === 'undefined' ? 'Shortstay or Multiweek standard arrival' : cal_multiweek_shortstay;
        var cal_MaSO = typeof cal_multiweek_shortstay_optional === 'undefined' ? 'Optional Multiweek or Shortstay arrival' : cal_multiweek_shortstay_optional;
        var cal_MASO = typeof cal_multiweek_shortstay_optional === 'undefined' ? 'Optional Multiweek or Shortstay standard arrival' : cal_multiweek_shortstay_optional;
        if (selectedCss.indexOf(" altered") > -1 && selectedCss.indexOf("endhalfselected") === -1 && selectedCss.indexOf("endblockedstartselectedday") === -1 && selectedCss.indexOf("endblockedstartday") === -1 && selectedCss.indexOf("starthalfblockedday") === -1) {
            return [false, 'arrival ' + css_extra, signatureText_4];
        }
        switch (cal_date_found[0].dayCalendarCode) {
            case "a":
                return [false, 'arrival ' + css_extra, cal_a];
            case "Ma":
                return [false, 'multiweek arrival ' + css_extra, cal_Ma];
            case "A":
                return [true, 'standard-arrival ' + css_extra, cal_A];
            case "MA":
                return [true, 'multiweek standard-arrival ' + css_extra, cal_MA];
            case "b":
                return [false, 'booking ' + css_extra, cal_b];
            case "Mb":
                return [false, 'multiweek booking ' + css_extra, cal_Mb];
            case "B":
                return [false, 'blocked upper ' + css_extra, cal_B];
            case "MB":
                return [false, 'multiweek blocked upper ' + css_extra, cal_MB];
            case "O":
                return [true, 'optional ' + css_extra, cal_o];
            case "S":
                return [true, 'shortstay ' + css_extra, cal_s];
            case "aS":
                return [true, 'arrival shortstay ' + css_extra, cal_aS];
            case "AS":
                return [true, 'standard-arrival shortstay ' + css_extra, cal_AS];
            case "aO":
                return [true, 'arrival optional ' + css_extra, cal_aO];
            case "AO":
                return [true, 'standard-arrival optional ' + css_extra, cal_AO];
            case "aSO":
                return [true, 'arrival shortstay optional ' + css_extra, cal_aSO];
            case "ASO":
                return [true, 'standard-arrival shortstay optional ' + css_extra, cal_ASO];
            case "MaO":
                return [true, 'multiweek arrival optional ' + css_extra, cal_MaO];
            case "MAO":
                return [true, 'multiweek standard-arrival optional ' + css_extra, cal_MAO];
            case "MaS":
                return [true, 'multiweek arrival shortstay ' + css_extra, cal_MaS]; /* mangler oversættelser på Multiweek, arrival not possible, stortstay */
            case "MAS":
                return [true, 'multiweek standard-arrival shortstay ' + css_extra, cal_MAS]; /* mangler oversættelser på Multiweek, arrival not possible, stortstay */
            case "MaSO":
                return [true, 'multiweek arrival shortstay optional ' + css_extra, cal_MaSO];
            case "MASO":
                return [true, 'multiweek standard-arrival shortstay optional ' + css_extra, cal_MASO];
            default:
                return [true, 'arrBlack ' + css_extra, "Not mapped: " + displayString];
        }
    } else {
        if (parseDate(_dmy) <= new Date()) {
            return [false, 'blocked ' + _dmy, cal_booking_blocked];
        } else {
            return [false, 'arrRed ' + _dmy, _dmy + " blokeret"];
        }
    }
}
function addThousandsSeparator(value) { var retVal = value.toString() ? parseFloat(value.toString().replace(/,/g, '')) : '0'; return retVal.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); }
function setDropDownListValue(text, id) {
    $('#' + id).val(text).trigger('change');
}
function smallToolTip(pName) { /* loads on-demand by click event */
    var speed = 200;
    var e = window.event || arguments.callee.caller.arguments[0];
    var targ = e.target || e.srcElement;
    if (parseInt(targ.nodeType) === 3) targ = targ.parentNode; /* defeat Safari bug */
    /* Forhindre metoden i at blive kørt 2 gange ved ét klik. */
    e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;
    $(".__tooltip").hide();
    var top = $(targ).offset().top;
    top += $(targ).height();
    var left = $(targ).offset().left;
    left = (parseInt(left) - 393).toString();
    var id = "__tooltip_" + pName;
    var element = $("#" + id);
    if (element.length > 0) {
        element.fadeIn(speed);
        element.css({
            top: top + "px",
            left: left + "px"
        });
    }
    else {
        var key = pName.split("_")[1] || pName.split("_")[0];
        var bid = designtemplatename === "DT1" ? "SOS" : jquery_search_sitebid; /* overriding NV */
        $.ajax({
            cache: false,
            async: true,
            type: 'GET',
            url: '/AshxServices.ashx',
            data: {
                sn: "ServiceFreeTextSearch",
                mn: "HTML_ToolTipText",
                param: "BID=" + bid + "&Language=" + site_lang + "&ToolTipKey=" + key
            },
            headers: {
                'Cache-Control': 'max-age=' + maxAgeExpiration,
                'X-Functions-Version': functions_version
            },
            beforeSend: function (jqXHR) {
                $.xhrPool.add(jqXHR, 'smallToolTip');
            },
            success: function (data) {
                handleTooltip(data);
            },
            error: function (data) {
                console.warn("Could not get tooltip");
            },
            complete: function (jqXHR) {
                $.xhrPool.remove(jqXHR, 'smallToolTip');
            }
        });
    }
    function handleTooltip(data) {
        var tooltip = data.getElementsByTagName("ToolTip")[0];
        var title = tooltip.getElementsByTagName("header")[0].textContent;
        var text = tooltip.getElementsByTagName("Text")[0].textContent;
        var xml = $(data);
        var clear = $("<div/>").css("clear", "both");
        /* tooltip wrapper */
        var divWrapper = $("<div/>", { id: id, class: "__tooltip" }).css({ top: top + "px", left: left + "px" }).addClass("tooltipWrapper");
        /* Close button */
        var spanClose = $("<span class=\"tooltipcloser\" />");
        spanClose.click(function () {
            var wrapper = $(this).closest(".__tooltip");
            wrapper.fadeOut(speed);
            $('#overlay_bg_content').remove();
        });
        /* Header */
        $("<div/>").html(title).append(spanClose).addClass("tooltipHeader").appendTo(divWrapper);
        /* Content */
        $("<div/>").html(text).addClass("tooltipContent").append(clear).appendTo(divWrapper);
        $("body").append(divWrapper);
        divWrapper.fadeIn(speed);
    }
}
function createBgOverlay(target_selector, prepend) {
    var overlay_bg = $('<div />', { 'id': 'overlay_bg_content', 'class': 'overlay_bg_content' });
    if (prepend) {
        $(target_selector).prepend($(overlay_bg).show());
    } else {
        $(target_selector).append($(overlay_bg).show());
    }
    $(overlay_bg).click(function () {
        $('.tooltipcloser').trigger('click');
        $('.close_map').trigger('click');
        $('#overlay_bg_content').remove();
    });
}
$('.close_map').click(function () {
    $('#overlay_bg_content').remove();
});

function callRequest(b, c, d) {
    var a;
    if (window.XMLHttpRequest) a = new XMLHttpRequest;
    else if (window.ActiveXObject) try { a = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { a = new ActiveXObject("Microsoft.XMLHTTP"); } catch (f) { /* do nothing */ } }
    if (!a) return !1;
    a.onreadystatechange = function () { callContent(b, a, c, d); };
    if (c && b !== 'shl' && b !== 'ga' && b !== 'taf') {
        if (c.indexOf('startdate=') === -1) {
            c = 'startdate=&' + c;
        }
    }
    a.open("GET", window.location.protocol + '//' + window.location.host + "/common/asyn.aspx?f=" + b + (c !== '' ? '&p=' + c : '') + "&language=" + site_lang + (getParam('map') === 'true' ? '&map=true&bureauid=' + jquery_search_sitebid : ''), true);
    a.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    a.send(null);
}
function callAsync(a, use_cryptation, d) {
    var c = 1, defaultSortByValue;
    if (a || parseInt(a) === 0) { c = a; }
    c = callFullFormValues(document.forms[c], d);
    /* selected sortby value from cookie */
    if (site_lang === 'DK') {
        defaultSortByValue = "priority:asc";
    }
    else {
        defaultSortByValue = "priority:asc";
    }
    if (getcookie(search_cookie_name) !== null) {
        var sb_default = getcookie(search_cookie_name).replace(/d=/g, '').replace(/;/g, '&');
        if (sb_default !== "") {
            if (getParam(sb_default, 'sortby') !== "NULL") {
                defaultSortByValue = getParam(sb_default, 'sortby');
            }
        }
    }
    if ($("aButton_Search").exists()) {
        $("aButton_Search").prop('href', "/resultater.aspx?d=sortby=" + defaultSortByValue + ";" + criteria.replace(/:/g, ";"));
    }
    callRequest("qs", c);
}
function callFullAsync(fid, sbname, pnr, back, srt, amt) {
    var formid = 1;
    if (fid || parseInt(fid) === 0) formid = fid;
    var page = pnr !== null ? pnr : "1";
    var sort = srt !== null ? srt : $get('DropDownList_sortbyvalue') !== null ? $get('DropDownList_sortbyvalue').value : "";
    var amount = amt !== null ? amt : $get('DropDownList_numberofresultsonpage') !== null ? $get('DropDownList_numberofresultsonpage').value : "";
    var parms = 'none&d=' + getFullFormValues(document.forms[formid], sbname) + 'amount=' + amount + ';sortby=' + sort;
    if (page > 0) parms += '&pnr=' + page;
    if (back) {
        if (document.location.hash.length > 0) {
            $get('outer_searchresult').style.display = 'none';
            $get('loader').style.display = 'block';
            $get('outer_searchresult2').style.display = 'none';
            $get('loader2').style.display = 'block';
            setSearchParms(document.location.hash);
            callRequest('fqs', document.location.hash.replace("#search=", ""));
        }
    }
    else { /* forward */
        $get('outer_searchresult').style.display = 'none';
        $get('loader').style.display = 'block';
        $get('outer_searchresult2').style.display = 'none';
        $get('loader2').style.display = 'block';
        document.location.hash = "#search=" + parms;
        callRequest('fqs', parms);
    }
    $get("asynHistory").value = document.location.hash;
}
function callContent(func, httpRequest, parms, text) {
    if (parseInt(httpRequest.readyState) === 4) {
        if (parseInt(httpRequest.status) === 200) {
            var Data;
            var data = httpRequest.responseText;
            if (data.length > 0) {
                var dataArr = data.split(';');
                if (func === "sn") {
                    if (data === "YES") writeit('Newsletter bestellt', 'div_status');
                    if (data === "IM") writeit('Die E-Mail-Adresse ist ungültig', 'div_status');
                    if (data === "NO") writeit('Der Newsletter wurde nicht bestellt', 'div_status');
                }
                else if (func === "qs") {
                    /* skal ikke kunne skjule dato feltet, da det er obligatorisk */
                    if (dataArr[0] !== "0") {
                        $('#UC_HovedSoegBlok1_Button_Search').removeClass("disabled").addClass("acolor1");
                        $('#UC_HovedSoegBlok1_Button_Search').removeAttr("disabled");
                    } else {
                        $('#UC_HovedSoegBlok1_Button_Search').addClass("disabled").removeClass("acolor1");
                        $('#UC_HovedSoegBlok1_Button_Search').attr("disabled", "disabled");
                    }
                    if ($('#searchresult').exists()) { writeit(dataArr[0], 'searchresult'); }
                    if ($('#searchresult2').exists()) { writeit(dataArr[0], 'searchresult2'); }
                    if ($('#searchresultbottom').exists()) { writeit(dataArr[0] + ' resultater', 'searchresultbottom'); }
                }
                else if (func === "fqs") {
                    Data = eval('(' + data + ')');
                    if ($('#searchresult').exists()) { writeit(Data.result.searchresult, 'searchresult'); }
                    if ($('#searchresult2').exists()) { writeit(Data.result.searchresult, 'searchresult2'); }
                    if ($('#outer_searchresult').exists()) $('#outer_searchresult').css('display', 'block');
                    if ($('#loader').exists()) $('#loader').css('display', 'none');
                    if ($('#outer_searchresult2').exists()) $('#outer_searchresult2').css('display', 'block');
                    if ($('#loader2').exists()) $('#loader2').css('display', 'none');
                    /* kortet på vis nabohuse */
                    if ($get('map')) {
                        if ($get('map').style.visibility === 'visible') {
                            if ($get('contentFrame')) {
                                $get('contentFrame').style.display = 'none';
                                writeit(Data.result.data, 'contentFrame');
                                $get('contentFrame').style.display = 'block';
                            }
                            if ($get('houselist')) {
                                $get('houselist').style.display = 'none';
                            }
                        } else {
                            if ($get('contentFrame')) { writeit(Data.result.data, 'contentFrame'); }
                        }
                    }
                    if ($get('map')) {
                        if (Data.result.coordinates) {
                            Coordinates = Data.result.coordinates;
                            if (map) {
                                if (getParam('neighbor') !== '') { setHouseMarker(); }
                                clearOverlays();
                                var defaultCenterCoord;
                                var defaultZoom;
                                var latlngbounds = new google.maps.LatLngBounds();
                                for (var c = 0; c < Coordinates.length; c++) {
                                    if (c === 0) {
                                        defaultCenterCoord = new google.maps.LatLng(Coordinates[c].lat, Coordinates[c].lng);
                                        defaultZoom = parseInt(Coordinates[c].zoom);
                                    }
                                    latlngbounds.extend(new google.maps.LatLng(Coordinates[c].lat, Coordinates[c].lng));
                                    PlaceCoordinate(Coordinates[c]);
                                }
                                map.setCenter(latlngbounds.getCenter());
                                map.fitBounds(latlngbounds);
                            }
                        }
                    }
                }
                else if (func === "ga") {
                    writeit(dataArr[1], 'att_name');
                    writeit(dataArr[2], 'att_address');
                    writeit(dataArr[3], 'att_postalcode');
                    writeit(dataArr[4], 'att_city');
                    writeit(dataArr[9], 'att_header');
                    writeit(dataArr[10], 'att_description');
                }
                if (func === "shl") { /* Send Huske Liste */
                    // var dataArr = data.split(';');
                    if (dataArr[0] === "YES") writeit(lbl_asyn_shl_yes, "shl_status");
                    else if (dataArr[0] === "NO") writeit(lbl_asyn_shl_no, "shl_status");
                    else if (dataArr[0] === "IAM") writeit(lbl_asyn_shl_iam, "shl_status");
                    else if (dataArr[0] === "IMM") writeit(lbl_asyn_shl_imm, "shl_status");
                }
                else if (func === "fb") {
                    var fbe_fb = $get("fbedit");
                    var fby_fb = $get("fbstatusyes");
                    var fbn_fb = $get("fbstatusno");
                    if (fbe_fb) fbe_fb.style.display = 'none';
                    if (dataArr[0] === "YES") {
                        if (fbn_fb) fbn_fb.style.display = 'none';
                        if (fby_fb) fby_fb.style.display = 'block';
                    } else if (dataArr[0] === "NO") {
                        if (fby_fb) fby_fb.style.display = 'none';
                        if (fbn_fb) fby_fb.style.display = 'block';
                    }
                }
                else if (func === "fbx") {
                    var fbe_fbx = $get("fbedit");
                    var fby_fbx = $get("fbstatusyes");
                    var fbn_fbx = $get("fbstatusno");
                    if (fbe_fbx) fbe_fbx.style.display = 'none';
                    if (dataArr[0] === "YES") {
                        if (fbn_fbx) fbn_fbx.style.display = 'none';
                        if (fby_fbx) fby_fbx.style.display = 'block';
                    } else if (dataArr[0] === "NO") {
                        if (fby_fbx) fby_fbx.style.display = 'none';
                        if (fbn_fbx) fbn_fbx.style.display = 'block';
                    }
                }
                else if (func === "ac") {
                    if (dataArr[0]) {
                        var B_submit = $get('button_submit');
                        SelectDays(selecteddays.split(':'), false);
                        selectedstartdate = dataArr[1];
                        if (dataArr[0] === "NA") {
                            writeit(dataArr[1] + ' - ' + dataArr[2], 'div_period');
                            writeit('Ikke ledig', 'div_total');
                            B_submit.style.display = 'none';
                            selecteddays = dataArr[3];
                        } else {
                            writeit(dataArr[1] + ' - ' + dataArr[2], 'div_period');
                            writeit(dataArr[4] + ',-', 'div_total');
                            linkbooking = dataArr[5];
                            B_submit.style.display = 'block';
                            selecteddays = dataArr[6];
                        }
                        SelectDays(selecteddays.split(':'), true);
                    }
                }
                if (func === "destitext") { writeit(data, 'destitekst'); }
                else if (func === "sa") {
                    Data = eval('(' + data + ')');
                    for (var i = 0; i < Data.result.houses.length; i++) {
                        if (Data.result.houses[i].id.length > 0) {
                            var pricelabel = "";
                            if (Data.result.houses[i].total !== "0" && Data.result.houses[i].status !== "1") {
                                pricelabel = Data.result.currency + " " + Data.result.houses[i].total + ",-";
                                if ($get("nobook" + Data.result.houses[i].id)) $get("nobook" + Data.result.houses[i].id).style.display = 'none';
                                if ($get("book" + Data.result.houses[i].id)) $get("book" + Data.result.houses[i].id).style.display = 'block';
                                if ($get("stat_" + Data.result.houses[i].id)) $get("stat_" + Data.result.houses[i].id).value = '1';
                            } else {
                                if ($get("book" + Data.result.houses[i].id)) $get("book" + Data.result.houses[i].id).style.display = 'none';
                                if ($get("nobook" + Data.result.houses[i].id)) $get("nobook" + Data.result.houses[i].id).style.display = 'block';
                                if ($get("stat_" + Data.result.houses[i].id)) $get("stat_" + Data.result.houses[i].id).value = '';
                                switch (site_lang) {
                                    case 'DK': pricelabel = 'Optaget'; break;
                                    case 'DE': pricelabel = 'Besetzt'; break;
                                    case 'SE': pricelabel = 'Upptaget'; break;
                                    case 'NO': pricelabel = 'Opptatt'; break;
                                    case 'UK': pricelabel = 'Occupied'; break;
                                    case 'NL': pricelabel = 'Bezet'; break;
                                }
                            }
                            $get("ph_" + Data.result.houses[i].id).value = pricelabel;
                            writeit(pricelabel, "p_" + Data.result.houses[i].id);
                            var cleanlabel = "-";
                            if (Data.result.houses[i].cleantype === "I") {
                                switch (site_lang) {
                                    case 'DK': cleanlabel = 'Inkluderet'; break;
                                    case 'DE': cleanlabel = 'Inklusive'; break;
                                    case 'SE': cleanlabel = 'Inkluderat'; break;
                                    case 'NO': cleanlabel = 'Inkludert'; break;
                                    case 'UK': cleanlabel = 'Included'; break;
                                    case 'NL': cleanlabel = 'Inclusief'; break;
                                    default:
                                        if (Data.result.houses[i].cleaning !== "0") {
                                            cleanlabel = Data.result.currency + " " + Data.result.houses[i].cleaning + ",-";
                                        }
                                        break;
                                }
                            } else if (Data.result.houses[i].cleaning !== "0") {
                                cleanlabel = Data.result.currency + " " + Data.result.houses[i].cleaning + ",-";
                            }
                            $get("phc_" + Data.result.houses[i].id).value = cleanlabel;
                            writeit(cleanlabel, "pc_" + Data.result.houses[i].id);
                            $get("link_" + Data.result.houses[i].id).value = "?hid=" + Data.result.houses[i].id + "&startdate=" + Data.result.startdate + "&enddate=" + Data.result.enddate;
                        }
                    }
                }
            }
        }
    }
}
function callFullFormValues(fobj, sbname, psplit) {
    var split = ";";
    if (psplit) split = psplit;
    var str = "";
    for (var i = 0; i < fobj.elements.length; i++) {
        if (fobj.elements[i].name !== undefined) {
            var name = fobj.elements[i].name;
            var defsbname = 'UC_HovedSoegBlok';
            if (sbname) defsbname = sbname;
            if (name.indexOf(defsbname) > -1) {
                name = name.replace(defsbname + '1$', '');
                switch (fobj.elements[i].type) {
                    case "text":
                    case "hidden":
                        var nam = name.replace('TextBox_', '');
                        if (nam === "startdate") {
                            if (fobj.elements[i].value.split('-').length === 3) {
                                str += nam + "=" + escape(fobj.elements[i].value) + split;
                            } else {
                                str += nam + "=NULL" + split;
                            }
                        }
                        else if (nam === "subregion") {
                            if (TB_subregion !== null) {
                                str += nam + "=" + (TB_subregion.value === "false" ? "0" : TB_subregion.value) + split;
                            }
                        }
                        else {
                            str += nam + "=" + escape(fobj.elements[i].value) + split;
                        }
                        break;
                    case "checkbox":
                        if (fobj.elements[i].checked)
                            str += name.replace('CheckBox_', '') + "=yes" + split;
                        break;
                    case "select-one":
                        if (fobj.elements[i].selectedIndex > -1) {
                            var val = fobj.elements[i].options[fobj.elements[i].selectedIndex].value;
                            if (val !== 0)
                                str += name.replace('DropDownList_', '') + "=" + val + split;
                        }
                        break;
                }
            }
        }
    }
    return str;
}
function openAttributes(id) {
    if (!$('#ups' + id).is(':visible')) {
        formGTMEvent('searchFormDetails', id); /* orange event, IIHNordic */
        $('#ups' + id).slideDown('fast', function () {
            $('#attribute_btn_' + id).attr('src', '/images/house/round_minus.png');
        });
    } else {
        $('#ups' + id).slideUp('fast', function () {
            $('#attribute_btn_' + id).attr('src', '/images/house/round_plus.png');
        });
    }
}
function closeResultbox() {
    // functionallity can be overwritten in freetextsearch.inc file
    $("#ajaxresult").removeClass("resultactive");
    $("#ajaxresult .ajaxsearch").hide();
    $('#txt_ajaxsearch').val(default_reg_search_text);
}
function doTextSearch(showpageindex) { /* loads on-demand by click event */
    var elements_to_show = 6;
    var sw = $('#searchTop .txt_ajaxsearch').val();
    var isHouseSearch = sw.match(/^\d{2}-/) ? true : false;
    if (sw.length > 1) {
        const elements_on_page = parseInt(showpageindex) * parseInt(elements_to_show);
        const paging_value = parseInt(showpageindex) === 0 ? showpageindex : elements_on_page;
        var searchdataparams = "BID=" + search_bid + "&Language=" + site_lang + "&Searchstring=" + sw + "&MaxResults=&SearchWholeWords=false&SearchTypeHouses=true&SearchTypeGeography=false&SearchTypeAttractions=false&AlternativeQueries=exactWord=yes&SortByValue=&SortByOrder=&IndexToStartPaging=" + paging_value + "&NumberOfElementsToShow=" + elements_to_show + "&IPAddress=";
        // console.log(searchdataparams);
        var ajaxurl = '/AshxServices.ashx?sn=ServiceFreetextSearch&mn=XML_FreetextSearchExt&param=' + encodeURIComponent(searchdataparams);
        $.ajax({
            type: 'GET',
            cache: false,
            async: true,
            timeout: 8000,
            url: ajaxurl,
            beforeSend: function (jqXHR) {
                $.xhrPool.add(jqXHR, 'doTextSearch');
                $("#ajaxresult").removeClass("resultactive").addClass("resultactive");
                $("#ajaxresult .ajaxsearch").show();
                $("#resultbox").html(getLoaderImage(20));
            },
            success: function (data) {
                var result = '';
                var results = $(data).find("results");
                var house_count = parseInt($(results).find("house").length);
                var total_result_count = parseInt($(results).attr('count'));
                if (house_count > 0) {
                    const elements_on_page = showpageindex * elements_to_show;
                    var current_house_index = 0 + elements_on_page;
                    result += displayHeaderPanel(house_count, showpageindex, total_result_count, elements_to_show);
                    $(results).find("house").each(function () {
                        result += displayHouse($(this), house_count, showpageindex, current_house_index);
                        current_house_index++;
                    });
                    $(results).find("destination").each(function () {
                        result += displayDestination($(this), sw);
                    });
                    result += displayPagingPanel(house_count, total_result_count, showpageindex, elements_to_show);
                } else {
                    var isCompleteHouseSearch = sw.match(/^\d{2}-\d{4}/) ? true : false;
                    if (isCompleteHouseSearch) {
                        var wshousedataparams = "pBureauId=" + search_bid + "&pRentalObjectNo=" + sw + "&pStartdate=NULL&pEnddate=&pNumberOfWeeks=&pLanguage=" + site_lang + "&pAlternativeQueries=&pSpecificContent=";
                        var houseurl = '/AshxServices.ashx?sn=ServiceHouseInformation&mn=GetHouseInformation&cem=0&param=' + encodeURIComponent(wshousedataparams);
                        $.ajax({
                            type: 'GET',
                            cache: false,
                            async: false,
                            url: houseurl,
                            beforeSend: function (jqXHR) {
                                $.xhrPool.add(jqXHR, 'isCompleteHouseSearch');
                            },
                            success: function (data) {
                                result = '';
                                house_count = $(data).find("house#" + sw).length;
                                if (parseInt(house_count) === 1) {
                                    $.xhrPool.terminateByName('doTextSearch'); /* terminate all running doTextSearch request connections */
                                    if ($(data).find('calendar').attr('firstvacantstartdate') === '') {
                                        result += displayHeaderPanel(0, 0, 0, 0);
                                        result += "<div class='noresult'>" + no_result_text + "</div>";
                                    } else {
                                        result += displayHeaderPanel(house_count, 0, 1, 1);
                                        $(data).find("house#" + sw).each(function () {
                                            if ($(this).attr('id')) {
                                                result += displayHouse($(this), house_count, 0, 0);
                                            }
                                        });
                                    }
                                    result += displayPagingPanel(house_count, 0, 0, 1);
                                } else {
                                    result += displayHeaderPanel(0, 0, 0, 0);
                                    result += "<div class='noresult'>" + no_result_text + "</div>";
                                }
                            },
                            error: function (objAJAXRequest, strError) {
                                $("#resultbox").html('<div class="noresult">' + error_ajax_text + '<br />' + strError + '</div>');
                            },
                            complete: function (jqXHR) {
                                $.xhrPool.remove(jqXHR, 'isCompleteHouseSearch');
                            }
                        });
                    } else {
                        result += displayHeaderPanel(0, 0, 0, 0);
                        result += "<div class='noresult'>" + no_result_text + "</div>";
                    }
                }
                $("#resultbox").html(result);
                $("#results a:even").addClass('even');
            },
            error: function (objAJAXRequest, strError) {
                $("#resultbox").html('<div class="noresult">' + error_ajax_text + '<br />' + strError + '</div>');
            },
            complete: function (jqXHR) {
                $.xhrPool.remove(jqXHR, 'doTextSearch');
            }
        });
    }
}
function displayHeaderPanel(house_count, showpageindex, total_result_count, elements_to_show) {
    var sb = '', last_index_on_page = elements_to_show * (showpageindex + 1);
    if (last_index_on_page > total_result_count) { last_index_on_page = total_result_count; }
    sb += '<div class="results">';
    if (house_count > 0) {
        const elements_on_page = showpageindex * elements_to_show;
        sb += ' <div class="result_text" style="float:left; display:inline; padding-left:3px;">' + shows_text + ': ' + (elements_on_page + 1) + ' - ' + last_index_on_page + ' ' + shows_of_text + ' ' + total_result_count + '</div>';
    } else {
        sb += ' <div class="result_text" style="float:left; display:inline; padding-left:3px;">' + no_results + '</div>';
    }
    sb += ' <div class="hover" id="closeresultbox" onclick="closeResultbox();">X</div>';
    sb += '</div>';
    return sb;
}
function displayPagingPanel(house_count, total_result_count, currentpageindex, elements_to_show) {
    const elements_on_page = currentpageindex * elements_to_show;
    var sb = '', last_house_index_on_page = elements_on_page + elements_to_show;
    sb += '<div class="paging">';
    if (currentpageindex > 0) {
        var nav_prev = typeof txt_nav_prev !== 'undefined' ? txt_nav_prev : '>';
        sb += '<span id="freetextsearch_buttonpane_prev" class="hover" onclick="doTextSearch(' + (currentpageindex - 1) + ');" style="float:left;display:inline;padding-left:3px;">' + nav_prev + '</span>';
    }
    if (total_result_count > last_house_index_on_page) {
        var nav_next = typeof txt_nav_next !== 'undefined' ? txt_nav_next.replace(/æ/gi, '&aelig;') : '>';
        sb += '<span id="freetextsearch_buttonpane_next" class="hover" onclick="doTextSearch(' + (currentpageindex + 1) + ');" style="float:right;display:inline;padding-right:3px;">' + nav_next + '</span>';
    }
    sb += '</div>';
    return sb;
}
function goToHouse(e, houseid) {
    e.preventDefault();
    if (!$('#ups' + houseid).is(':visible')) {
        formGTMEvent('searchFormSelect', houseid); /* red event, IIHNordic */
    } else {
        formGTMEvent('searchFormDetailsSelect', houseid); /* green event, IIHNordic */
    }
    var params = "bid=" + jquery_search_sitebid + "&pRentalObjectNo=" + houseid + "&pLanguage=" + site_lang;
    var ajaxurl = '/AshxServices.ashx?sn=ServiceHouseInformation&mn=GetHouseLinkByBID&param=' + encodeURIComponent(params);
    $.ajax({
        type: 'GET',
        cache: false,
        async: false,
        url: ajaxurl,
        success: function (data) {
            window.location = $(data).find("houselink").attr('link');
        },
        error: function (objAJAXRequest, strError) {
            console.warn('Cannot create house link for ' + houseid);
        }
    });
}
function formGTMEvent(ev, element_id) {
    /* ev: searchFormSelect (red), searchFormDetails (orange), searchFormDetailsSelect (green) */
    var sw = $('#searchTop .txt_ajaxsearch').val();
    if (jquery_search_sitebid === 'SOS') {
        if (typeof dataLayer !== 'undefined') {
            dataLayer.push({
                'event': ev,
                'searchPhrase': sw,
                'searchFormProperty': element_id
            });
        }
    }
}
function displayHouse(theHouse, result_count, currentpageindex, current_house_index) {
    var sb = '', house_reg = 'Reg.nr.: ' + $(theHouse).attr('id');
    house_reg += '<br />' + $(theHouse).attr('address') + ', ' + $(theHouse).attr('destination');
    house_reg += '<br />' + ($(theHouse).find('objecttype').attr('text_' + site_lang.toLowerCase()) ? $(theHouse).find('objecttype').attr('text_' + site_lang.toLowerCase()) : $(theHouse).attr('objecttypetext')) + ', ' + ($(theHouse).attr('housesize') ? $(theHouse).attr('housesize') : $(theHouse).attr('housem2')) + ' m2';
    if ($(theHouse).attr('id') !== '') {
        var region_linktitle = $(theHouse).find('geographicinfo') ? $(theHouse).find('geographicinfo').find('areainfo').attr('arealinktitle_' + site_lang) : $(theHouse).attr('regionlinktitle');
        var dest_linktitle = $(theHouse).find('geographicinfo') ? $(theHouse).find('geographicinfo').find('destinationinfo').attr('destinationlinktitle') : $(theHouse).attr('destinationlinktitle');
        var prefix_house_link = typeof pre_house_url !== 'undefined' ? pre_house_url : '/';
        var house_text = '';
        if ($(theHouse).find('text').find(site_lang.toLowerCase()).text() !== '' && parseInt(result_count) === 1 && parseInt(currentpageindex) === 0) {
            var display_house_text = $(theHouse).find('text').find(site_lang.toLowerCase()).text();
            if (display_house_text.length > 300) { display_house_text = display_house_text.substring(0, 300) + '...'; }
            house_text += '<p class="moreinfo">' + display_house_text + '</p>';
        }
        var display_facilities = '', display_persons = '', display_dog = '', display_house_build = '', display_internet = '', display_shopping = '', display_category = '';
        switch (site_lang) {
            case "DK":
                display_facilities = 'Vis faciliteter';
                display_persons = 'Antal personer (voksne + b&oslash;rn)';
                display_dog = 'Hund tilladt';
                display_house_build = 'Bygge&aring;r';
                display_house_rebuild = 'Bygge&aring;r/renoveret';
                display_internet = 'Internet';
                display_shopping = 'Afstand til indk&oslash;b';
                display_category = 'Kategori';
                break;
            case "DE":
                display_facilities = 'Karte Einrichtungen';
                display_persons = 'Anzahl der Personen (Erwachsene + Kinder)';
                display_dog = 'Hunde erlaubt';
                display_house_build = 'Baujahr';
                display_house_rebuild = 'Bau-/Umbaujahr';
                display_internet = 'Internet';
                display_shopping = 'Entfernung zu den Gesch&auml;ften';
                display_category = 'Rubrik';
                break;
            default:
                display_facilities = 'Show facilities';
                display_persons = 'Number of tenants (adults + children)';
                display_dog = 'Pets allowed';
                display_house_build = 'Build';
                display_house_rebuild = 'Build/renovated';
                display_internet = 'Internet';
                display_shopping = 'Shop distance';
                display_category = 'Category';
                break;
        }
        sb += '<div class="house" onclick="goToHouse(event,\'' + $(theHouse).attr('id') + '\');">';
        sb += ' <span class="gotohouse">';
        sb += '  <div class="img"><img src="//images.sologstrand.dk/001_' + $(theHouse).attr('id') + '_000_001.JPG" alt="' + house_reg.replace(/<br \/>/gi, '\r\n') + '" title="' + house_reg.replace(/<br \/>/gi, '\r\n') + '" /></div>';
        sb += '  <div class="info">' + house_reg + house_text + '<br /></div>';
        sb += ' </span>';
        sb += '</div>';
        sb += '<div class="openattributes">';
        sb += ' <img src="/images/house/round_plus.png" alt="' + display_facilities + '" title="' + display_facilities + '" id="attribute_btn_' + $(theHouse).attr('id') + '" onclick="openAttributes(\'' + $(theHouse).attr('id') + '\');" />';
        sb += '</div>';
        sb += '<div id="ups' + $(theHouse).attr('id') + '" class="attributes" style="display:none;">';
        sb += ' <div class="attribute"><img src="/images/house/family_4.png" alt="' + display_persons + '" title="' + display_persons + '" /><p>' + ($(theHouse).attr('adults') ? $(theHouse).attr('adults') : $(theHouse).attr('persons')) + '+' + $(theHouse).attr('children') + '</p></div>';
        sb += ' <div class="attribute"><img src="/images/house/dog_' + $(theHouse).attr('pets') + '.png" alt="' + display_dog + '" title="' + display_dog + '" />' + ($(theHouse).attr('petnumber') ? parseInt($(theHouse).attr('petnumber')) > 0 ? '<p>' + $(theHouse).attr('petnumber') + (parseInt($(theHouse).attr('petnumber')) === 3 ? '+' : '') + '</p>' : '' : $(theHouse).find('price').find('pets').text()) + '</div>';
        if ($(theHouse).attr('renovated') === '0') {
            sb += ' <div class="attribute"><img src="/images/house/house.png" alt="' + display_house_build + '" title="' + display_house_build + '" /><p>' + $(theHouse).attr('build') + '</p></div>';
        } else {
            sb += ' <div class="attribute"><img src="/images/house/house.png" alt="' + display_house_rebuild + '" title="' + display_house_rebuild + '" /><p>' + $(theHouse).attr('build') + '/' + $(theHouse).attr('renovated') + '</p></div>';
        }
        sb += ' <div class="attribute"><img src="/images/house/internet_' + $(theHouse).attr('internet') + '.png" alt="' + display_internet + '" title="' + display_internet + '" /><p>' + txt_wifi + '</p></div>';
        sb += ' <div class="attribute"><img src="/images/house/shopping.png" alt="' + display_shopping + '" title="' + display_shopping + '" /><p>' + ($(theHouse).attr('shopping') ? $(theHouse).attr('shopping') : $(theHouse).attr('shopdistance')) + ' m</p></div>';
        var category_letter = '', category_name = '', star_text = '';

        switch (parseInt($(theHouse).attr('category'))) {
            case 1: category_letter = 'A'; category_name = category_A; break;
            case 2: category_letter = 'P'; category_name = category_P; break;
            case 3: category_letter = 'S'; category_name = category_S; break;
            case 4: category_letter = 'T'; category_name = category_T; break;
            case 5: category_letter = 'X'; category_name = category_X; break;

            case 6:
            case 7:
            case 8:
            case 9:
            case 10: star_text = parseInt($(theHouse).attr('category')) - 5 + ' ' + crit_stars; break;
        }
        sb += ' <div class="attribute"><p>' + star_text + '</p></div>';
        sb += '</div>';
    }
    return sb;
}
function displayDestination(theDestination, sw) {
    sw = sw.replace(/æ/gi, 'ae').replace(/ø/gi, 'oe').replace(/å/gi, 'aa');
    var sb = '', dest_text = $(theDestination).find('text').find(site_lang.toLowerCase() + '[linktitle*=' + sw + ']').find('generel').text();
    if (dest_text !== '') {
        sb += '<div class="destination">';
        sb += ' <div class="header">' + $(theDestination).attr('name') + '</div>';
        sb += ' <div class="info">' + dest_text + '</div>';
        sb += '</div>';
    }
    return sb;
}
/*
     * For adding new properties:
     * - create property name for SearchCriteria object
     * - read value of new property in addAlternativeQuery function
     * - http://www.phpied.com/3-ways-to-define-a-javascript-class/
*/
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var alternativeQuery = function alternativeQuery(key, value) {
    _classCallCheck(this, alternativeQuery);
    this.key = key;
    this.value = value;
};
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var SearchCriteria = function (settings) {
    function SearchCriteria(settings) {
        _classCallCheck(this, SearchCriteria);

        this.region = isNumber(settings.region) ? parseInt(settings.region) : 0;
        this.subregion = isNumber(settings.subregion) ? parseInt(settings.subregion) : 0;
        this.destination = isNumber(settings.destination) ? parseInt(settings.destination) : 0;
        this.altdays = isNumber(settings.altdays) ? parseInt(settings.altdays) : 0;
        this.startdate = settings.startdate;
        this.endDate = settings.enddate;
        this.pagenumberindex = 0;
        this.numberofdays = isNumber(settings.numberofdays) ? parseInt(settings.numberofdays) : 0;
        this.objecttype = settings.objecttype;
        this.showhousetext = 'no';
        this.persons = parseInt(settings.persons);
        this.pets = parseInt(settings.pets);
        this.category = settings.category;
        this.smoking = settings.smoking;
        this.build = settings.build;
        this.bedrooms = parseInt(settings.bedrooms);
        this.toilets = parseInt(settings.toilets);
        this.housem2 = parseInt(settings.housem2);
        this.groundm2 = parseInt(settings.groundm2);
        this.shopdistance = parseInt(settings.shopdistance);
        this.seaview = settings.seaview;
        this.woodburning_stove = settings.woodburning_stove;
        this.waterdistance = parseInt(settings.waterdistance);
        this.totalmin = parseInt(settings.totalmin);
        this.total = parseInt(settings.total);
        this.discount = settings.discount;
        this.washingmachine = settings.washingmachine;
        this.dishwasher = settings.dishwasher;
        this.freezer = settings.freezer;
        this.tumbler = settings.tumbler;
        this.microwave = settings.microwave;
        this.internet = settings.internet;
        this.sauna = settings.sauna;
        this.jacuzzi = settings.jacuzzi;
        this.swimmingpool = settings.swimmingpool;
        this.energysafe = settings.energysafe;
        this.wheelchair = settings.wheelchair;
        this.fishing = settings.fishing;
        this.freeactivitycenter = settings.freeactivitycenter;
        this.harbor = settings.harbor;
        this.activityroom = settings.activityroom;
        this.fenchedterrace = settings.fenchedterrace;
        this.fenchedarea = settings.fenchedarea;
        this.fjordviewground = settings.fjordviewground;
        this.exclusive = settings.exclusive;
        this.vacationtype = settings.vacationtype;
        this.outdoor_toy_equipment = settings.outdoor_toy_equipment;
        this.picturetype = settings.picturetype;
        this.lat = settings.lat;
        this.lng = settings.lng;
        this.radius = settings.radius;
        this.pagenumberindex = 0;
        this.pagesize = settings.pagesize;
        this.sortby = settings.sortby;
        this.sortorder = settings.sortorder;
        this.lastAddedCriteria = '';

        this.subregionlist = new Array();
        this.alternativeQueries = new Array();
        this.origValues = {};
    }

    _createClass(SearchCriteria, [{
        key: 'init',
        value: function init(settings) {
            var origValues = {};
            for (var prop in this) {
                if (this.hasOwnProperty(prop) && prop !== "origValues") {
                    origValues[prop] = this[prop];
                }
            }
            this.origValues = origValues;
        }
    }, {
        key: 'addRegion',
        value: function addRegion(id) {
            if (isNumber(id)) {
                this.region = parseInt(id);
                this.removeAlternativeQuery('region');
                this.addAlternativeQuery('region', parseInt(id));
            }
        }
    }, {
        key: 'addSubregion',
        value: function addSubregion(id) {
            if (isNumber(id)) {
                this.subregion = parseInt(id);
                if (!this.containsSubregion(parseInt(id))) {
                    //this.subregionlist = [];
                    this.subregionlist.push(parseInt(id));
                }
                this.removeAlternativeQuery('subregion');
                this.addAlternativeQuery('subregion', this.subregionlist.join(':'));
            }
        }
    }, {
        key: 'removeSubregion',
        value: function removeSubregion(id) {
            if (isNumber(id)) {
                this.subregionlist = this.subregionlist.filter(function (el) {
                    return parseInt(el) !== parseInt(id);
                });
                this.addAlternativeQuery('subregion', this.subregionlist.join(':'));
                if (this.subregionlist.length > 0) {
                    this.subregion = this.subregionlist[this.subregionlist.length - 1];
                } else {
                    this.removeAllSubregions();
                }
            }
        }
    }, {
        key: 'removeAllSubregions',
        value: function removeAllSubregions(settings) {
            this.subregion = 0;
            this.subregionlist = new Array();
            this.removeAlternativeQuery('subregion');
        }
    }, {
        key: 'containsSubregion',
        value: function containsSubregion(id) {
            for (var i = 0; i < this.subregionlist.length; i++) {
                if (parseInt(this.subregionlist[i]) === parseInt(id)) {
                    return true;
                }
            }
            return false;
        }
    }, {
        key: 'getSubregions',
        value: function getSubregions(settings) {
            return this.subregionlist.join(':');
        }
    }, {
        key: 'setstartdate',
        value: function setstartdate(dt, nod) {
            this.pagenumberindex = 0;
            if (isValidDate(dt)) {
                this.startdate = dt;
                this.addAlternativeQuery('startdate', dt);
                if (isNumber(nod)) {
                    this.numberofdays = parseInt(nod);
                } else {
                    this.numberofdays = 7;
                }
                this.addAlternativeQuery('numberofdays', this.numberofdays);
                this.addAlternativeQuery('enddate', this.calculateEndDate());
            } else {
                this.removeAlternativeQuery('startdate');
                this.removeAlternativeQuery('enddate');
                this.removeAlternativeQuery('numberofdays');
                this.startdate = 'NULL';
                this.endDate = '';
            }
            if (document.location.href.indexOf('usecookie=no') === -1) {
                setcookie(search_cookie_name, this.getAlternativeQuery(false), 7);
                setcookie('HL_DATE_COOKIE', this.startdate, 28);
            }
        }
    }, {
        key: 'calculateEndDate',
        value: function calculateEndDate(settings) {
            if (this.startdate) {
                if (this.startdate !== 'NULL' && isValidDate(this.startdate)) {
                    return formatDate(addDaysWithoutTZ(parseDate(this.startdate), this.numberofdays));
                }
            }
            return '';
        }
    }, {
        key: 'setnumberofdays',
        value: function setnumberofdays(d) {
            setcookie('HL_NOD_COOKIE', d, 28);
            this.numberofdays = parseInt(d);
        }
    }, {
        key: 'getSortBy',
        value: function getSortBy(settings) {
            if (this.sortby.indexOf(':') > -1) {
                var arr_sortby = this.sortby.split(':');
                if (arr_sortby.length === 2) {
                    this.sortby = arr_sortby[0];
                    this.sortorder = arr_sortby[1];
                }
            }
            return this.sortby;
        }
    }, {
        key: 'getSortOrder',
        value: function getSortOrder(settings) {
            if (this.sortorder.indexOf(':') > -1) {
                var arr_sortorder = this.sortorder.split(':');
                if (arr_sortorder.length === 2) {
                    this.sortby = arr_sortorder[0];
                    this.sortorder = arr_sortorder[1];
                }
            }
            return this.sortorder;
        }
    }, {
        key: 'addAlternativeQuery',
        value: function addAlternativeQuery(key, value) {
            var _isAreaKey = false;
            this.lastAddedCriteria = key;
            this.removeAlternativeQuery(key, false);
            switch (key) {
                case "region":
                    if (value !== 0) {
                        this.region = parseInt(value); _isAreaKey = true;
                    } break;
                case "subregion":
                    if (value !== 0) {
                        if (value.toString().indexOf(':') > -1) {
                            var arr_sr = value.split(':');
                            for (var i = 0; i < arr_sr.length; i++) {
                                if (isNumber(arr_sr[i])) {
                                    if (!this.subregionlist.contains(parseInt(arr_sr[i]))) {
                                        this.subregionlist.push(parseInt(arr_sr[i]));
                                    }
                                }
                            }
                        } else {
                            if (!this.subregionlist.contains(parseInt(value))) {
                                if (isNumber(value)) {
                                    this.subregionlist.push(parseInt(value));
                                }
                            }
                        }
                    }
                    _isAreaKey = true;
                    break;
                case "destination":
                    if (value !== 0) {
                        this.destination = parseInt(value); _isAreaKey = true;
                    } break;
                case "altdays":
                    this.altdays = parseInt(value); break;
                case "startdate":
                    this.startdate = value; break;
                case "enddate":
                    this.endDate = value; break;
                case "numberofdays":
                    this.numberofdays = parseInt(value); break;
                case "objecttype":
                    this.objecttype = value; break;
                case "showhousetext":
                    this.showhousetext = value; break;
                case "persons":
                    this.persons = parseInt(value); break;
                case "pets":
                    this.pets = parseInt(value); break;
                case "category":
                    this.category = value; break;
                case "smoking":
                    this.smoking = value; break;
                case "build":
                    this.build = value; break;
                case "bedrooms":
                    this.bedrooms = parseInt(value); break;
                case "toilets":
                    this.toilets = parseInt(value); break;
                case "housem2":
                    this.housem2 = parseInt(value); break;
                case "groundm2":
                    this.groundm2 = parseInt(value); break;
                case "shopdistance":
                    this.shopdistance = parseInt(value); break;
                case "seaview":
                    this.seaview = value; break;
                case "woodburning_stove":
                    this.woodburning_stove = value; break;
                case "waterdistance":
                    this.waterdistance = parseInt(value); break;
                case "totalmin":
                    this.totalmin = parseInt(value); break;
                case "total":
                    this.total = parseInt(value); break;
                case "discount":
                    this.discount = value; break;
                case "washingmachine":
                    this.washingmachine = value; break;
                case "dishwasher":
                    this.dishwasher = value; break;
                case "freezer":
                    this.freezer = value; break;
                case "tumbler":
                    this.tumbler = value; break;
                case "microwave":
                    this.microwave = value; break;
                case "internet":
                    this.internet = value; break;
                case "sauna":
                    this.sauna = value; break;
                case "jacuzzi":
                    this.jacuzzi = value; break;
                case "swimmingpool":
                    this.swimmingpool = value; break;
                case "energysafe":
                    this.energysafe = value; break;
                case "wheelchair":
                    this.wheelchair = value; break;
                case "fishing":
                    this.fishing = value; break;
                case "freeactivitycenter":
                    this.freeactivitycenter = value; break;
                case "harbor":
                    this.harbor = value; break;
                case "exclusive":
                    this.exclusive = value; break;
                case "activityroom":
                    this.activityroom = value; break;
                case "fenchedterrace":
                    this.fenchedterrace = value; break;
                case "fenchedarea":
                    this.fenchedarea = value; break;
                case "fjordviewground":
                    this.fjordviewground = value; break;

                case "vacationtype":
                    this.vacationtype = value; break;
                case "outdoor_toy_equipment":
                    this.outdoor_toy_equipment = value; break;

                case "lat":
                    this.lat = value; break;
                case "lng":
                    this.lng = value; break;
                case "radius":
                    this.radius = parseInt(value); break;

                case "sortby":
                    this.sortby = value; break;
                case "sortorder":
                    this.sortorder = value; break;
                case "pagesize":
                    this.pagesize = parseInt(value); break;
                case "picturetype":
                    this.picturetype = value; break;
            }
            if (key === 'subregion') {
                this.alternativeQueries.push(new alternativeQuery(key, this.subregionlist.join(':')));
            } else {
                this.alternativeQueries.push(new alternativeQuery(key, value));
            }
            if (_isAreaKey) {
                var _areaUpdated = false;
                if (this.alternativeQueries.containskey("lat")) {
                    this.removeAlternativeQuery('lat', false); _areaUpdated = true;
                }
                if (this.alternativeQueries.containskey("lng")) {
                    this.removeAlternativeQuery('lng', false); _areaUpdated = true;
                }
                if (this.alternativeQueries.containskey("radius")) {
                    this.removeAlternativeQuery('radius', false); _areaUpdated = true;
                }
            }
            sessionStorage.setItem('sb_criterias', JSON.stringify(this));
        }
    }, {
        key: 'removeAlternativeQuery',
        value: function removeAlternativeQuery(key, saveToCookie) {
            if (typeof saveToCookie === 'undefined') saveToCookie = false;
            this.alternativeQueries = this.alternativeQueries.filter(function (el) {
                return el.key !== key;
            });
            switch (key) {
                case "numberofdays": setcookie('HL_NOD_COOKIE', '7', 28); break;
                case "persons":
                case "pets":
                case "bedrooms":
                case "toilets":
                case "housem2":
                case "groundm2":
                case "shopdistance":
                case "waterdistance":
                case "totalmin":
                case "total":
                    this[key] = 0;
                    break;
            }
            if (saveToCookie) {
                setcookie(search_cookie_name, this.getAlternativeQuery(false), 7);
            }
            sessionStorage.setItem('sb_criterias', JSON.stringify(this));
        }
    }, {
        key: 'getAlternativeQuery',
        value: function getAlternativeQuery(queryOneSubregion, usedForAjaxCall, excludePictureType) {
            if (typeof queryOneSubregion === 'undefined') queryOneSubregion = false;
            if (typeof usedForAjaxCall === 'undefined') usedForAjaxCall = false;
            if (typeof excludePictureType === 'undefined') excludePictureType = false;
            var result = '';
            if (this.alternativeQueries.length > 0) {
                for (var i = 0; i < this.alternativeQueries.length; i++) {
                    var __key = this.alternativeQueries[i].key;
                    var __value = this.alternativeQueries[i].value;
                    if ((__key === 'region' || __key === 'destination' || __key === 'sortby') && __value === '0') {
                        /* do nothing */
                    } else {
                        if (__key === 'subregion') {
                            if (queryOneSubregion) {
                                if (this.subregion !== 0) {
                                    result += (result === '' ? '' : ';') + __key + '=' + this.subregion;
                                }
                            } else {
                                if (this.subregionlist.length === 0) break;
                                var sr_list = '';
                                for (var j = 0; j < this.subregionlist.length; j++) {
                                    sr_list += (result === '' ? '' : ':') + this.subregionlist[j];
                                }
                                if (__value !== '0') {
                                    result += (result === '' ? '' : ';') + __key + '=' + __value;
                                }
                            }
                        } else {
                            if (usedForAjaxCall && (__key === 'startdate' || __key === 'enddate' || __key === 'numberofdays')) {
                                /* do nothing */
                            } else {
                                if (typeof __key !== 'undefined' && __value !== '') {
                                    if (__key === 'picturetype') {
                                        if (!excludePictureType) result += (result === '' ? '' : ';') + __key + '=' + __value;
                                    } else {
                                        result += (result === '' ? '' : ';') + __key + '=' + __value;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return result;
        }
    }, {
        key: 'getSingleAlternativeQueryItem',
        value: function getSingleAlternativeQueryItem(key) {
            for (var i = 0; i < this.alternativeQueries.length; i++) {
                if (this.alternativeQueries[i].key === key) {
                    return key + '=' + this.alternativeQueries[i].value + ';';
                }
            }
            return "";
        }
    }, {
        key: 'clearAlternativeQuery',
        value: function clearAlternativeQuery(settings) {
            for (var i = 0; i < this.alternativeQueries.length; i++) {
                this.removeAlternativeQuery(this.alternativeQueries[i].key);
            }
        }
    }, {
        key: 'reset',
        value: function reset(settings) {
            // console.log('Resetting criterias..');
            // console.log(this);
            // todo: reset to setting values
            for (var prop in this) {
                if (typeof this[prop] === 'number' && parseInt(this[prop]) === parseInt(this[prop], 10)) {
                    switch (prop) {
                        case 'altdays': this[prop] = 1; break;
                        case 'numberofdays': this[prop] = 7; break;
                        case 'pagesize': break;
                        default:
                            // console.log(prop + ': ' + this[prop] + ' # ' + typeof this[prop]);
                            this[prop] = 0;
                            // console.log(prop + ': ' + this[prop] + ' # ' + typeof this[prop]);
                            break;
                    }
                } else if (typeof this[prop] === 'string') {
                    switch (prop) {
                        case 'sortby': this[prop] = 'priority'; break;
                        case 'sortorder': this[prop] = 'asc'; break;
                        case 'startdate': this.startdate = 'NULL'; break;
                        case 'objecttype': this.objecttype = '1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16'; break;
                        case 'origValues': break;
                        case 'lastAddedCriteria': break;
                        default:
                            // console.log(prop + ': ' + this[prop] + ' # ' + typeof this[prop]);
                            this[prop] = "";
                            break;
                    }
                } else if (typeof this[prop] === 'object') {
                    switch (prop) {
                        case 'subregionlist': this[prop] = new Array(); break;
                        case 'alternativeQueries': this[prop] = new Array(); break;
                        default: break;
                    }
                }
            }
            deletecookie(search_cookie_name);
            // console.log(this);

            sessionStorage.setItem('sb_criterias', JSON.stringify(this));
            this.resetPagingCounter();
            $('input[name="startdate"]').removeClass('dd_selected').val(notSetText);
            $('select[name="numberofdays"]').removeClass('dd_selected');
            $('#daysSelDate').hide();
            $('input[name="discount"]').hide().next('label[for*="_discount"]').hide();
        }
    }, {
        key: 'resetPagingCounter',
        value: function resetPagingCounter(settings) {
            this.pagenumberindex = 0; /* reset page index by every criteria change */
            map_Loaded = []; /* making re-loading of google maps on result elements possible */
            /* result_map = undefined; // maps for results */
        }
    }, {
        key: 'hasAdvancedCriterias',
        value: function hasAdvancedCriterias(settings) {
            var result = false;
            if (this.alternativeQueries.length > 0) {
                for (var i = 0; i < this[alternativeQueries].length; i++) {
                    switch (this[alternativeQueries][i].key) {
                        case 'totalmin':
                        case 'total':
                        case 'discount':
                        case 'internet':
                        case 'category':
                        case 'smoking':
                        case 'build':
                        case 'bedrooms':
                        case 'toilets':
                        case 'housem2':
                        case 'groundm2':
                        case 'shopdistance':
                        case 'seaview':
                        case 'woodburning_stove':
                        case 'washingmachine':
                        case 'dishwasher':
                        case 'freezer':
                        case 'tumbler':
                        case 'microwave':
                        case 'sauna':
                        case 'jacuzzi':
                        case 'swimmingpool':
                        case 'energysafe':
                        case 'wheelchair':
                        case 'fishing':
                        case 'freeactivitycenter':
                        case 'harbor':
                        case 'exclusive':
                        case 'vacationtype':
                        case 'outdoor_toy_equipment':
                        case 'activityroom':
                        case 'fenchedterrace':
                        case 'fenchedarea':
                            return true;
                    }
                }
            }
            return result;
        }
    }, {
        key: 'loadState',
        value: function loadState(sc) {
            //console.log('Load SC state..');
            var sb_criterias = sessionStorage.getItem('sb_criterias');
            if (sb_criterias !== 'undefined') {
                var crit = JSON.parse(sb_criterias);
                for (var prop in this) {
                    if (crit.hasOwnProperty(prop) && prop !== "origValues") {
                        this[prop] = crit[prop];
                    }
                }
            }
        }
    }]);
    return SearchCriteria;
}();

(function ($) {

    $.xhrPool.terminateAll = function () {
        var xhr_pool_count = 0, xhr_terminated = [];
        for (var i = 0; i < this.length; i++) {   /* cycle through list of recorded connection */
            xhr_pool_count++;
            xhr_terminated.push(this[i].name);
            this.dispose(i, this[i]);
        }
        // console.log('XHR pool terminated: ' + xhr_pool_count + '. Names: ' + xhr_terminated.join(', '));
    };
    $.xhrPool.terminateByName = function (name) {
        for (var i = 0; i < this.length; i++) {  /* cycle through list of recorded connection */
            if (this[i].name === name) {
                this.dispose(i, this[i]);
            }
        }
    };
    $.xhrPool.add = function (jqXHR, name) {
        // console.log('XHR in pool (before adding): ' + this.length);
        if (!$.xhrPool.exists(name)) {
            // console.log('Add ' + name + ' XHR pool..');
            this.push({ xhr: jqXHR, name: name });
        }
        // console.log('XHR in pool (after adding): ' + this.length);
    };
    $.xhrPool.exists = function (name) {
        for (var i = 0; i < this.length; i++) {
            if (this[i].name === name) {
                return true;
            }
        }
        return false;
    };
    $.xhrPool.remove = function (jqXHR, name) {
        for (var i = 0; i < this.length; i++) {
            if (this[i].xhr === jqXHR && this[i].name === name) {
                // console.log('Remove XHR pool: ' + name);
                this.dispose(i, this[i]);
            }
        }
    };
    $.xhrPool.dispose = function (index, xhr_obj) {
        // console.log('Disposing ' + xhr_obj.name + ' XHR..');
        this.splice(index, 1);
        xhr_obj.xhr.abort();  /* terminates connection */
        // console.log('XHR in pool (after disposing): ' + this.length);
    };
    window.canScroll = function (b) {
        if (typeof b === 'boolean') scrolleractivated = b;
        return scrolleractivated;
    };
    window.canRunNewInfinity = function () {
        return isInfinityEventTriggered;
    };
    var isInBrowserBackMode = typeof sessionStorage.getItem('browserback_from_house') === 'boolean' && sessionStorage.getItem('browserback_from_house') === true;
    var infinity_timeout, scroll_position = 0, releasedBrowserBackMode = true;
    var defaults = {
        formid: $(this).attr("id"), outputtype: outputType.POSTANDCOUNT, initialize_load: true, search_bid: search_bid,
        formindex: 0, addFormEvents: true, siteurl: document.location, use_cryptation: false, selected_color: "transparent",
        region: 0, subregion: 0, destination: 0, region_select: null, subregion_select: null, destination_select: null,
        waterdistance: 0, startdate: "NULL", enddate: "", objecttype: "1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16",
        numberofdays: 0, persons: 0, pets: 0, category: "", smoking: "", build: "", bedrooms: 0,
        toilets: 0, housem2: 0, groundm2: 0, shopdistance: 0, seaview: "", woodburning_stove: "",
        totalmin: 0, total: 0, discount: "", internet: "", washingmachine: "", dishwasher: "",
        freezer: "", tumbler: "", microwave: "", sauna: "", jacuzzi: "", swimmingpool: "",
        energysafe: "", wheelchair: "", fishing: "", freeactivitycenter: "", harbor: "", exclusive: "",
        activityroom: "", fenchedterrace: "", fenchedarea: "", fjordviewground: "", vacationtype: "", outdoor_toy_equipment: "", showhousetext: "no",
        pagesize: 6, sortby: 'priority', sortorder: 'asc', infinitypagenumberselector: '', infinitybuttonselector: '.infinity',
        infinitybuttontext: '', resulttargetselector: search_house_container, resulttargeturl: '', resultitemtemplatepath: '', infinitytriggerselector: 'footer',
        cacheDurationMinutes: 30, use_overlay_map: true, housecountselector: '.housecount, .house_result_count', mandatoryAlternativeQueries: '',
        displayOfAlternativeQueriesSelector: "", reqestedAlternativeQueries: "", use_cookie: true, use_urlhash: false,
        presetAlternativeQueries: '', destination_preset: true, show_last_search_button: false
    };
    var methods = {
        init: function (options) {
            //console.log('Initialize SB..');
            //console.log(defaults);
            //console.log(options);
            if (releasedBrowserBackMode) {
                var isInPostMode = parseInt(options.outputtype) === 3;
                //console.log('SB init.. IsInPostMode: ' + isInPostMode + ' BBM:' + isInBrowserBackMode);
                var current_user_settings = getObjectCookie('user_settings');
                if (isInPostMode) { /* only executed on frontpage */
                    sessionStorage.removeItem('browserback_from_house');
                    setBrowserBackModeTo(false);
                    deleteBrowserBackCookie();
                    /* set some user settings to default values on the start page */
                    current_user_settings.show_map = false;
                    current_user_settings.browser_back_mode = false;
                    current_user_settings.result_page_index = 0;
                    current_user_settings.show_advanced_search = false;
                    setObjectCookie('user_settings', current_user_settings, 'SB Init', user_settings_expire_days); /* default always show houses on list */
                } else {
                    if (current_user_settings.show_advanced_search) {
                        $('#leftmenu_search').show(); /* open SB on e.g. F5 */
                    }
                }
                var settings = $.extend({}, defaults, options || {});
                if (!isInBrowserBackMode || isInPostMode) {
                    $(this).data(internalPrefix, settings);
                    sessionStorage.setItem('sb_settings', JSON.stringify($(this).data(internalPrefix)));
                }
                bindWindowScroller(settings);
            }
            $(this).addClass('initialized').trigger('initialized', [this]);
        },
        attach: function (source) {
            // console.log('Attach SB..');
            if (releasedBrowserBackMode) {
                var current_user_settings = getObjectCookie('user_settings');
                if (current_user_settings === null) {
                    //console.log('Set user setting to default values!');
                    current_user_settings = default_user_settings;
                    setObjectCookie('user_settings', current_user_settings, '$.fn.searchblock.attach', user_settings_expire_days);
                }
                // console.log('attach.. browser_back_mode: ' + current_user_settings.browser_back_mode);
                if (!current_user_settings.browser_back_mode) {
                    //console.log('searchBlock attach.. ' + source);
                    var settings = $(this).data(internalPrefix);
                    if (typeof settings === 'undefined') {
                        var s_item = sessionStorage.getItem('sb_settings');
                        try {
                            settings = JSON.parse(s_item);
                        } catch (e) {
                            settings = defaults;
                        }
                    }

                    if (document.location.href.indexOf('/skagen.htm') > -1) settings.presetAlternativeQueries += "subregion=36;";
                    if (document.location.href.indexOf('/fanoe.htm') > -1) settings.presetAlternativeQueries += "subregion=53;";
                    if (document.location.href.indexOf('/roemoe.htm') > -1) settings.presetAlternativeQueries += "subregion=54;";

                    // console.log('SS-BB: ' + (!sessionStorage.getItem('browserback_from_house')));
                    if (!sessionStorage.getItem('browserback_from_house')) {
                        if (settings.initialize_load && settings.outputtype !== outputType.OBJECT || settings.outputtype === outputType.AJAX_WITHOUT_LOAD) {
                            // console.log('Setup SB..');
                            // console.log(settings);
                            // console.log(SearchCriteria);
                            if (!SearchCriteria && browserName !== 'Chrome' && browserName !== 'Edge') {
                                SearchCriteria = new SearchCriteria(settings);
                                SearchCriteria.init(null);
                            }
                            if (isOnResultPage()) {
                                SearchCriteria.pagenumberindex = 0;
                            }
                            SearchCriteria.pagesize = settings.pagesize;
                            SearchCriteria.sortby = settings.sortby;
                            SearchCriteria.sortorder = settings.sortorder;
                            sessionStorage.setItem('sb_criterias', JSON.stringify(SearchCriteria));
                            // console.log('searchBlock finished..');

                            addDataHandlers(settings);
                            if (settings.outputtype === outputType.POST || settings.outputtype === outputType.AJAX_WITHOUT_LOAD) {
                                if (settings.use_overlay_map) {
                                    $('#areasclicked').remove();
                                    $('#clickedoverlays').empty();
                                    $('#overlayimg').removeClass();
                                    if (isNumber(SearchCriteria.region)) {
                                        $('#baseimg').removeClass().addClass('sprite DK_' + SearchCriteria.region).attr('alt', 'Region');
                                        createAreaMappings(settings, SearchCriteria.region);
                                        for (var sr_i = 0; sr_i < SearchCriteria.subregionlist.length; sr_i++) {
                                            if (!$('#clickedoverlays div#subregion' + SearchCriteria.subregionlist[sr_i]).exists()) { /* map wrapper divs */
                                                var rName = getObjectById(arrRegion, SearchCriteria.subregionlist[sr_i]) ? getObjectById(arrRegion, SearchCriteria.subregionlist[sr_i]).name : '';
                                                var rOverlayName = SearchCriteria.region > 0 ? SearchCriteria.region + '_' + SearchCriteria.subregionlist[sr_i] : SearchCriteria.subregionlist[sr_i] + '_UP';
                                                $('#clickedoverlays').append(
                                                    $('<div />', {
                                                        'class': 'overlay-tooltip',
                                                        id: 'subregion' + SearchCriteria.subregionlist[sr_i],
                                                        title: rName,
                                                        alt: rName
                                                    }).addClass('sprite').addClass('DK_' + rOverlayName)
                                                );
                                            }
                                        }
                                    } else {
                                        $('#baseimg').removeClass().addClass("sprite");
                                        createAreaMappings(settings, "0");
                                    }
                                }
                            }
                            if (getParam('open_sb') === 'true') {
                                //console.log('open_sb triggering expandtarget..');
                                $('*[data-handler="expandtarget"]').trigger('click');
                            }
                        }
                        outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
                    } else {
                        //console.log('session storage is set to BB mode..');
                        sessionStorage.removeItem('browserback_from_house');
                    }
                    if (settings.show_last_search_button && isSmartPhone === 'False') {
                        var mylastsearch = cleanHashParameters(getcookie(search_cookie_name));
                        if (mylastsearch !== '') {
                            $('*[data-handler="loadlastsearch"]').show();
                        }
                    }
                    if (result_map) { /* initially map must be loaded, this code runs after outputHandler() */
                        var region_geo = getRegionGeo(isNumber(SearchCriteria.region) ? SearchCriteria.region : 0);
                        if (region_geo) {
                            current_user_settings.show_map_lat = region_geo.lat;
                            current_user_settings.show_map_lng = region_geo.lng;
                            current_user_settings.show_map_zoom = region_geo.zoom;
                            setObjectCookie('user_settings', current_user_settings, '$.fn.searchblock, region_geo', user_settings_expire_days);
                        }
                        result_map.setCenter(new google.maps.LatLng(current_user_settings.show_map_lat, current_user_settings.show_map_lng));
                        if (isNumber(current_user_settings.show_map_zoom)) result_map.setZoom(current_user_settings.show_map_zoom);
                    }
                } else {
                    if (!current_user_settings.browser_back_content_loaded) {
                        //console.log('Is in BB mode.. current content not loaded..');
                        sessionStorage.removeItem('browserback_from_house');
                        current_user_settings.browser_back_mode = false;
                        setObjectCookie('user_settings', current_user_settings, '$.fn.searchblock.attach', user_settings_expire_days);
                        //$(this).searchblock('attach'); /* double content rendered */
                        //console.log('Should execute loadCurrentResultPageContent..');
                    }
                }
            }
            $(this).addClass('attached').trigger('attached', [this]);
        },
        loadHouseCount: function () {
            var _settings = $(this).data(internalPrefix) || JSON.parse(sessionStorage.getItem('sb_settings'));
            // console.log('loadHouseCount..');
            // console.log(_settings);
            loadOnlyHouseCount(_settings, false);
        },
        appendNewHouses: function (source) {
            var settings = $(this).data(internalPrefix) || JSON.parse(sessionStorage.getItem('sb_settings'));
            var current_user_settings = getObjectCookie('user_settings');
            //console.log('appendNewHouses (BBM: ' + current_user_settings.browser_back_mode + ').. ' + source);
            if (!current_user_settings.browser_back_mode) {
                if (typeof SearchCriteria.loadState === 'undefined') { /* handles different on infinity scrolling and on browser back state */
                    //console.log('re-init SearchCriteria..');
                    SearchCriteria = new SearchCriteria(settings); /* must be re-initialized if loadState function is not initialized */
                    SearchCriteria.loadState(null);
                }
                channelResults(settings, true, function () { checkScrollerAndInfinityButton(settings.footer_css_selector, 'SB appendNewHouses..'); });
            } else {
                loadResultElements(true, '', 'appendNewHouses');
            }
        },
        handleBrowserBack: function (isBrowserBacked, source) {
            //console.log('SB handleBrowserBack (' + isBrowserBacked + ') (' + source + ')..');
            setBrowserBackModeTo(isBrowserBacked);
            var settings = $(this).data(internalPrefix) || JSON.parse(sessionStorage.getItem('sb_settings'));
            if (typeof SearchCriteria.loadState === 'undefined') { /* handles different on infinity scrolling and on browser back state */
                //console.log('re-init SearchCriteria..');
                SearchCriteria = new SearchCriteria(settings); /* must be re-initialized if loadState function is not initialized */
            }
            SearchCriteria.loadState(null);
            addDataHandlers(settings);
            if (settings.displayOfAlternativeQueriesSelector !== '') {
                displayAlternativeQueries(settings);
            }
            handleBrowserBack(settings, isBrowserBacked);
        }
    };
    $(".sommerferie_uge_btn").click(function () {
        localStorage.setItem("altdays", false);
        SearchCriteria.addAlternativeQuery("altdays", "0");
    });
    $.fn.searchblock = function (method) {
        if (methods[method]) {
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof method === 'object' || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Method ' + method + ' does not exist on $.searchblock');
        }
    }; /* $.fn.searchblock */
    function addDataHandlers(settings) {
        // console.log('addDataHandlers..');
        handleAQInputSequence(settings, settings.presetAlternativeQueries !== '', true);
        $("#arrival").on("click", function () {
            if (SearchCriteria.altdays === 1) {
                SearchCriteria.addAlternativeQuery("altdays", "0");
            }
            else {
                SearchCriteria.addAlternativeQuery("altdays", "1");
            }
        });
        var search = $("#search_location");

        search.on("keypress keyup", function () {
            var formInput = $("#search_location").val().toLowerCase();
            if (formInput.length > 1) {
                $("#Search_resault").show();
            } else {
                $("#Search_resault").hide();
            }

            $("#Search_resault").text("");
            for (i = 0; i < arr_areasList.length; i++) {
                if (arr_areasList[i].name.toLowerCase().match('^' + formInput + '|, ' + formInput)) {
                    if (arr_areasList[i].id > 100) {
                        //var test = subregionOrRegionMatches.find((o) => { return o.name === arr_areasList[i].name });
                        $("#Search_resault").append('<li class="Search_resault_li" name="' + arr_areasList[i].linktitle + '" data-id="' + arr_areasList[i].id + '" data-region="' + arr_areasList[i].regionid + '"data-subregion="' + arr_areasList[i].subregionid + '">' + arr_areasList[i].name + '</li>');
                        $('.Search_resault_li').click(function () {
                            $('.options').find('*').each(function () {
                                $(this).removeClass("selected");
                            });
                            SearchCriteria.destination = 0;
                            SearchCriteria.subregion = 0;
                            SearchCriteria.removeAlternativeQuery('destination');
                            SearchCriteria.removeAlternativeQuery('subregion');
                            //changeRegion(settings, SearchCriteria.region);
                            changeDestination(settings, $(this).attr('data-id'), $(this).attr('data-subregion'), $(this).attr('data-region'));
                            $("#searcblock_backarrow_destination_span").text($('select[id$="DropDownList_region"]')[0].msl.placeholder);
                            $("#mobile_location_closebtn_inner").text($('select[id$="DropDownList_region"]')[0].msl.placeholder);
                            $("#search_location").val($(this).attr('name'));
                            $("#mobile_location_closebtn_inner").text($(this).attr('name'));
                            $("#Search_resault").hide();
                        });
                    }
                }
            }
        });
        $("#search_location").on('click', function () {
            if (SearchCriteria.region) {
                $("#mobile_location_closebtn_inner").text($("#search_location").val());
            }
        });
        search.on('click', function () {
            if (!($("#search_location").hasClass("dd_selected"))) {
                $("#search_location").val("");
            }
        });
        $('body').on('click', function (evt) {
            var $tgt = $(evt.target);
            if (!($tgt.is('#Search_resault') || $tgt.is('.Search_resault_li'))) {
                $("#Search_resault").hide();
            }
        });
        $('select[name="region"]').MultiSelectList({
            search: isMobileDevice === 'True' ? false : true,
            searchText: msl_region_search,
            noMatch: msl_noresults + ' "{0}"',
            forceWidth: isTabletDevice === 'True' ? 135 : 0,
            okCancelInMulti: isSmartPhone === 'True' ? true : false,
            okShowInMulti: isSmartPhone === 'True' ? true : false,
            cancelShowInMulti: false,
            forceShowButtons: isSmartPhone === 'True' ? true : false,
            locale: [msl_close, 'Annuller', 'Vælg alle'],
            addCssClass: isSmartPhone === 'True' ? 'fixed_height' : '',
            itemClickCallback: function (li) {
                callGTMFilteredSearch();
                $("#search_location").val(li.text());
                $("#mobile_location_closebtn_inner").text(li.text());
                changeRegion(settings, parseInt($(li).attr('data-id')));
                if (parseInt($(li).attr('data-id')) !== 0) {
                    $('.msl_region .captioncont').addClass('dd_selected');
                } else {
                    $('.msl_region .captioncont').removeClass('dd_selected');
                }
            }
        });
        $('select[name="subregion"]').MultiSelectList({
            search: isMobileDevice === 'True' ? false : true,
            searchText: msl_subregion_search,
            noMatch: msl_noresults + ' "{0}"',
            captionFormat: '{0} ' + msl_selected,
            okCancelInMulti: isMobileDevice === 'True' ? true : false,
            cancelShowInMulti: false,
            locale: [msl_close, 'Annuller', 'Vælg alle'],
            addCssClass: isSmartPhone === 'True' ? 'fixed_height' : '',
            itemClickCallback: function (li) {
                callGTMFilteredSearch();
                $('.options').find('*').each(function () {
                    $(this).removeClass("selected");
                });
                $("#search_location").val(li.text());
                $("#mobile_location_closebtn_inner").text(li.text());
                changeSubRegion(settings, $(li).attr('data-id'), $(li).attr('data-region'));
                if (parseInt($(li).attr('data-id')) !== 0) {
                    $('.msl_subregion .captioncont').addClass('dd_selected');
                } else {
                    $('.msl_subregion .captioncont').removeClass('dd_selected');
                }
            }
        });
        $('select[name="destination"]').MultiSelectList({
            search: isMobileDevice === 'True' ? false : true,
            searchText: msl_destination_search,
            noMatch: msl_noresults + ' "{0}"',
            okCancelInMulti: isSmartPhone === 'True' ? true : false,
            okShowInMulti: isSmartPhone === 'True' ? true : false,
            cancelShowInMulti: false,
            forceShowButtons: isSmartPhone === 'True' ? true : false,
            locale: [msl_close, 'Annuller', 'Vælg alle'],
            addCssClass: isSmartPhone === 'True' ? 'fixed_height' : '',
            itemClickCallback: function (li) {
                callGTMFilteredSearch();
                $('.options').find('*').each(function () {
                    $(this).removeClass("selected");
                });
                $("#search_location").val(li.text());
                $("#mobile_location_closebtn_inner").text(li.text());
                changeDestination(settings, $(li).attr('data-id'), $(li).attr('data-subregion'), $(li).attr('data-region'));
                if (parseInt($(li).attr('data-id')) !== 0) {
                    $('.msl_destination .captioncont').addClass('dd_selected');
                } else {
                    $('.msl_destination .captioncont').removeClass('dd_selected');
                }
            }
        });
        if ($('select[id$="DropDownList_region"]').exists()) {
            settings.region_select = $('select[id$="DropDownList_region"]')[0].msl;
        }
        if ($('select[id$="DropDownList_subregion"]').exists()) {
            settings.subregion_select = $('select[id$="DropDownList_subregion"]')[0].msl;
        }
        if ($('select[id$="DropDownList_destination"]').exists()) {
            settings.destination_select = $('select[id$="DropDownList_destination"]')[0].msl;
        }
        if (localStorage.getItem("altdays") === "false") {
            SearchCriteria.removeAlternativeQuery("altdays");
            $("#arrival").prop('checked', false);
        } else {
            $("#arrival").prop('checked', true);
        }
        loadAndSetFieldValues(settings, SearchCriteria, false);
        if ($("#DropDownList_region").children("option:selected").val() !== "0") {
            $('.searcblock_backarrow_subregion').removeClass('searcblock_backarrow_subregion_hide');
            $('.searcblock_backarrow_subregion').addClass('searcblock_backarrow_subregion_show');
            $('.msl_region').addClass('msl_region_hide');
            $('.msl_region').removeClass('msl_region_show');
            $('.msl_subregion').addClass('msl_subregion_show');
            $('.msl_subregion').removeClass('msl_subregion_hide');
            $("#search_location").addClass("dd_selected");
        }

        $('.searcblock_backarrow_destination').click(function () {
            $('.searcblock_backarrow_subregion').addClass('searcblock_backarrow_subregion_show');
            $('.searcblock_backarrow_subregion').removeClass('searcblock_backarrow_subregion_hide');
            $('.searcblock_backarrow_destination').removeClass('searcblock_backarrow_destination_show');
            $('.searcblock_backarrow_destination').addClass('searcblock_backarrow_destination_hide');
            $('.msl_region').removeClass('msl_region_show');
            $('.msl_region').addClass('msl_region_hide');
            $('.msl_subregion').addClass('msl_subregion_show');
            $('.msl_subregion').removeClass('msl_subregion_hide');
            $('.msl_destination').addClass('msl_destination_hide');
            $('.msl_destination').removeClass('msl_destination_show');
            SearchCriteria.destination = 0;
            SearchCriteria.subregion = 0;
            SearchCriteria.removeAlternativeQuery('destination');
            SearchCriteria.removeAlternativeQuery('subregion');
            changeDestination(settings, SearchCriteria.destination, SearchCriteria.subregion, SearchCriteria.region);
            
            $("#search_location").val($('select[id$="DropDownList_region"]')[0].msl.placeholder);
            $("#mobile_location_closebtn_inner").text($('select[id$="DropDownList_region"]')[0].msl.placeholder);
            $('#clickedoverlays').empty();
            $('.opt').removeClass('selected');

        });
        if ($("#DropDownList_subregion").children("option:selected").val() !== "0") {
            $("#search_location").addClass("dd_selected");
        } else {
            $("#search_location").val($('select[id$="DropDownList_region"]')[0].msl.placeholder);
            $("#mobile_location_closebtn_inner").text($('select[id$="DropDownList_region"]')[0].msl.placeholder);
        }
        if (SearchCriteria.numberofdays >= 1) {
            $("#DropDownList_numberofdays").val(SearchCriteria.numberofdays);
            $("#DropDownList_numberofdays").addClass("dd_selected");
        }
        if ($("#datepicker_searchblock").hasClass("dd_selected")) {
            $("#altdays_container").addClass("altdays_container_show");
        }

        calendarFunctions(settings);
        if (settings.displayOfAlternativeQueriesSelector !== '') {
            displayAlternativeQueries(settings);
        }
        if (settings.addFormEvents) {
            $('input[data-handler="startdate"]').change(function (e) {
                if (SearchCriteria.numberofdays === 0) {
                    $("#DropDownList_numberofdays").val('7');
                    SearchCriteria.numberofdays = 7;
                    $("#DropDownList_numberofdays").addClass("dd_selected");
                }
                SearchCriteria.setstartdate(isValidDate($('input[name="startdate"]').val()) ? $('input[name="startdate"]').val() : 'NULL', isNumber($('select[name="numberofdays"]').val()) ? $('select[name="numberofdays"]').val() : 7);
                if (isValidDate($('input[name="startdate"]').val())) {
                    $('input[name="startdate"]').addClass('dd_selected');
                    $('#daysSelDate').show();
                    $('input[name="discount"]').show().next('label[for*="_discount"]').show();
                } else {
                    $('input[name="startdate"]').removeClass('dd_selected');
                    $('#daysSelDate').hide();
                    $('input[name="discount"]').hide().next('label[for*="_discount"]').hide();
                }
                if ($('input[name="discount"]').exists()) { /* MHN : 21-04-2017 : Central control for showing/hiding discount checkbox */
                    if (SearchCriteria.startdate !== 'NULL' && SearchCriteria.startdate !== '') {
                        if (SearchCriteria.discount === "yes") { $('input[name="discount"]').prop('checked', true).show().next('label[for*="_discount"]').show(); }
                    } else {
                        $('input[name="discount"]').hide().next('label[for*="_discount"]').hide();
                    }
                }
                if ($('#daysSelDate').exists()) {
                    if (!isValidDate($('input[name="startdate"]').val())) {
                        $('#daysSelDate').slideUp('normal');
                    } else {
                        $('#daysSelDate').slideDown('fast');
                    }
                }
                outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);

            });
            $('select[data-handler="dropdown"]').change(function (e) {
                callGTMFilteredSearch();
                var drp_name = typeof $(this).attr('name') !== 'undefined' ? $(this).attr('name') : $(this).attr('data-name'), drp_value = $(this).val();
                if (drp_value !== '0' && drp_value !== '') {
                    switch (drp_name) {
                        case 'numberofdays':
                            SearchCriteria.addAlternativeQuery(drp_name, drp_value);
                            $('#daysSelDate').show();
                            $('input[name="discount"]').show().next('label[for*="_discount"]').show();
                            SearchCriteria.setnumberofdays(drp_value);
                            SearchCriteria.addAlternativeQuery('enddate', SearchCriteria.calculateEndDate());
                            break;
                        default:
                            SearchCriteria.addAlternativeQuery(drp_name, drp_value);
                            break;
                    }
                    $(this).addClass('dd_selected');
                } else {
                    if (drp_name === "numberofdays") {
                        $('#daysSelDate').hide();
                        $('input[name="discount"]').hide().next('label[for*="_discount"]').hide();
                    }
                    //console.log(drp_name);
                    //console.log(SearchCriteria[drp_name]);
                    if (SearchCriteria[drp_name]) SearchCriteria[drp_name] = 0;
                    SearchCriteria.removeAlternativeQuery(drp_name);
                    $(this).removeClass('dd_selected');
                }
                outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
            });
            $('input[data-handler="checkbox"]').click(function (e) { /* swimmingpool and jacuzzi have special developed event functions */
                callGTMFilteredSearch();
                var crp_name = typeof $(this).attr('name') !== 'undefined' ? $(this).attr('name') : $(this).attr('data-name'), crp_value = $(this).is(':checked');
                if (crp_value) {
                    switch (crp_name) {
                        case "altdays":
                            SearchCriteria.addAlternativeQuery(crp_name, crp_value); /* hard coded "1" */
                            localStorage.setItem("altdays", crp_value);
                            break;
                        default:
                            SearchCriteria.addAlternativeQuery(crp_name, crp_value ? "yes" : "no");
                            break;
                    }
                    $(this).addClass('cb_selected');
                } else {
                    if (SearchCriteria[crp_name]) SearchCriteria[crp_name] = ""; // reset property value
                    SearchCriteria.removeAlternativeQuery(crp_name);
                    $(this).removeClass('cb_selected');
                    if (crp_name === "altdays") {
                        localStorage.setItem("altdays", crp_value);
                    }
                }
                $(this).prop('checked', crp_value);
                outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
            });
            $('input[data-handler="swimmingpool"]').click(function (e) {
                callGTMFilteredSearch();
                var swimming_container = $('#swimmingpool_details');
                var swim_yes = $('input[data-handler="swimmingpool"][name="swimmingpool"]');
                var swim_not_shared = $('input#CheckBox_swimmingpool_not_shared');
                var swim_not_outdoor = $('input#CheckBox_swimmingpool_not_outdoor'); /* denne bruger swimmingpool=indoor, der også medtager shared */
                var swim_value = '';
                if (swim_yes.is(':checked')) {
                    swimming_container.css('display', 'block');
                    if (swim_not_shared.is(':checked')) {
                        if (swim_not_outdoor.is(':checked')) {
                            swim_value = 'indoor_not_shared';
                        } else {
                            swim_value = 'not_shared';
                        }
                    } else {
                        if (swim_not_outdoor.is(':checked')) {
                            swim_value = 'indoor';
                        } else {
                            swim_value = 'yes';
                        }
                    }
                    SearchCriteria.addAlternativeQuery('swimmingpool', swim_value);
                } else {
                    SearchCriteria.removeAlternativeQuery('swimmingpool');
                    swimming_container.css('display', 'none');
                }
                outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
                displayAlternativeQueries(settings);
            });
            $('input[data-handler="jacuzzi"]').click(function (e) {
                callGTMFilteredSearch();
                var jacuzzi_value = '';
                var jacuzzi_container = $('#jacuzzi_details');
                var jacuzzi_yes = $('input[data-handler="jacuzzi"][name="jacuzzi"]');
                var indoor = $('input[name="rbJacuzzi_indoor"][value="indoor"]').prop('checked') ? true : false;
                var outdoor = $('input[name="rbJacuzzi_outdoor"][value="outdoor"]').prop('checked') ? true : false;
                if (jacuzzi_yes.is(':checked')) {
                    jacuzzi_value = 'yes';
                    if (indoor !== null && outdoor !== null) {
                        if (indoor === true && outdoor === false) {
                            jacuzzi_value = 'indoor';
                        }
                        if (outdoor === true && indoor === false) {
                            jacuzzi_value = 'outdoor';
                        }
                        if (indoor === false && outdoor === false) {
                            jacuzzi_value = 'no';
                        }
                    }
                    if (jacuzzi_value === 'no') {
                        SearchCriteria.removeAlternativeQuery('jacuzzi');
                    } else {
                        SearchCriteria.addAlternativeQuery('jacuzzi', jacuzzi_value);
                    }
                    jacuzzi_container.css('display', 'block');
                } else {
                    SearchCriteria.removeAlternativeQuery('jacuzzi');
                    jacuzzi_container.css('display', 'none');
                    $('input[name="rbJacuzzi_indoor"][value="indoor"]').prop('checked', true);
                    $('input[name="rbJacuzzi_indoor"][value="not_indoor"]').prop('checked', false);
                    $('input[name="rbJacuzzi_outdoor"][value="outdoor"]').prop('checked', true);
                    $('input[name="rbJacuzzi_outdoor"][value="not_outdoor"]').prop('checked', false);
                }
                outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
            });
            $('input[data-handler="object"]').change(function (e) {
                callGTMFilteredSearch();
                $(this).prop('checked', $(this).is(':checked'));
                var full_list = "1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16".split(':');
                if ($('#cbExcludeApartment').is(':checked')) {
                    full_list = $.grep(full_list, function (value) { return parseInt(value) !== 6; });
                    full_list = $.grep(full_list, function (value) { return parseInt(value) !== 7; });
                    full_list = $.grep(full_list, function (value) { return parseInt(value) !== 8; });
                    full_list = $.grep(full_list, function (value) { return parseInt(value) !== 9; });
                    full_list = $.grep(full_list, function (value) { return parseInt(value) !== 10; });
                    full_list = $.grep(full_list, function (value) { return parseInt(value) !== 11; });
                }
                if ($('#cbExcludeTownhouse').is(':checked')) {
                    full_list = $.grep(full_list, function (value) { return parseInt(value) !== 2; });
                    full_list = $.grep(full_list, function (value) { return parseInt(value) !== 3; });
                    full_list = $.grep(full_list, function (value) { return parseInt(value) !== 4; });
                    full_list = $.grep(full_list, function (value) { return parseInt(value) !== 5; });
                }
                // console.log('Object types: ' + full_list.join(':'));
                $('#TextBox_objecttype').val(full_list.join(':'));
                SearchCriteria.addAlternativeQuery('objecttype', full_list.join(':'));
                outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
            });
            $('input[data-handler="onlyappartments"]').change(function (e) {
                callGTMFilteredSearch();
                var appartment_list = "1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16";
                if ($(this).is(':checked')) {
                    appartment_list = "6:7:8:9:10:11";
                }
                $('#TextBox_objecttype').val(appartment_list);
                SearchCriteria.addAlternativeQuery('objecttype', appartment_list);
                $(this).prop('checked', $(this).is(':checked'));
                outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
            });
            $('*[data-handler="zerolize"]').unbind().click(function (e) {
                // console.clear();
                e.stopPropagation(); /* function needs to stop all other possible ajax calls */
                e.preventDefault();
                if ($('.saturday_more_selection').exists()) {
                    $('.saturday_more_selection').fadeOut();
                }
                // console.log('zerolize..');
                setObjectCookie('user_settings', default_user_settings, 'Zerolize event', user_settings_expire_days); /* reset user specific selections */
                if (settings.outputtype === outputType.POST || settings.reqestedAlternativeQueries === '') {
                    // console.log('Before changeRegion..');
                    changeRegion(settings, "0"); /* function makes a house count must be placed before ajax terminations */
                    $.xhrPool.terminateAll(); /* aborts all running ajax calls */
                    $('select[data-handler="dropdown"]:not([class*="no-zerolize"])').each(function (index) {
                        $(this).prop('selectedIndex', 0).removeClass('dd_selected');
                    });
                    $('input[data-handler="checkbox"]:not([class*="no-zerolize"]):checked').each(function () {
                        if ($(this).is(':checked')) {
                            $(this).prop('checked', false);
                        }
                    });
                    $('#jacuzzi_details').hide();
                    $('#swimmingpool_details').hide();
                    $('input[name="startdate"]').val(notSetText);
                    SearchCriteria.reset(settings);

                    if (settings.show_last_search_button) $('*[data-handler="loadlastsearch"]').hide();
                    saveCurrentResultPageContent('', SearchCriteria, false);
                    // console.log('Before handling input sequence..');
                    // console.log(SearchCriteria);
                    handleAQInputSequence(settings, false, false); // todo: must consider SC => handleAQInputSequence(settings, settings.presetAlternativeQueries !== '', false);
                    // console.log('Zerolized SC..');
                    // console.log(SearchCriteria);
                    loadAndSetFieldValues(settings, SearchCriteria, false); /* reads values from SearchCriteria */

                    outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
                } else {
                    SearchCriteria.reset(settings);
                    document.location = settings.resulttargeturl;
                }
            });
            $('*[data-handler="resetmap"]').click(function (e) {
                changeRegion(settings, "0");
                loadMapByArea(settings, null, null, null, true);
                outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
            });
            $('select[data-handler="sortby"]').change(function (e) {
                var drp_name = $(this).attr('name');
                var drp_value = $(this).val();
                switch (drp_name) {
                    case "sortby":
                        if (drp_value.length > 0) {
                            if (drp_value.indexOf(':') > -1) {
                                var arr_sortby = drp_value.split(':');
                                if (arr_sortby.length === 2) {
                                    SearchCriteria.sortby = arr_sortby[0];
                                    SearchCriteria.sortorder = arr_sortby[1];
                                    SearchCriteria.resetPagingCounter();
                                    SearchCriteria.addAlternativeQuery(drp_name, arr_sortby[0] + ':' + arr_sortby[1]);
                                    if (document.location.href.indexOf('usecookie=no') === -1) {
                                        setcookie(search_cookie_name, SearchCriteria.getAlternativeQuery(false), 7);
                                    }
                                    outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
                                }
                            }
                        }
                        break;
                }
            });
            $('*[data-handler="advancedsearch"]').unbind().click(function () {
                var post_aq = cleanHashParameters(SearchCriteria.getAlternativeQuery(false));
                if (document.location.href.indexOf('usecookie=no') === -1) {
                    setcookie(search_cookie_name, post_aq, 7);
                }
                var post_qs = '?open_sb=true' + (post_aq !== '' ? '&d=' + post_aq : '');
                if ($('*[data-type="searchblock"]').prop('tagName') === 'FORM') {
                    $('*[data-type="searchblock"]').attr('action', settings.resulttargeturl + post_qs).submit();
                } else if ($('*[data-type="searchblock"]').prop('tagName') === 'DIV') {
                    document.location = settings.resulttargeturl + post_qs;
                } else {
                    console.warn("Could not trigger advanced search!");
                }
            });
            $('*[data-handler="expandtarget"]').unbind().click(function (e) {
                var _this = $(this);
                if ($(e.currentTarget.parentNode).prop('href').indexOf('#') === -1) {
                    e.preventDefault();
                }
                var target_selector = $(this).attr('data-target-id');
                if (target_selector !== '') {
                    $('#' + target_selector).slideToggle("normal", function () {
                        var current_user_settings = getObjectCookie('user_settings');
                        current_user_settings.show_advanced_search = $('#' + target_selector).is(':visible');
                        if (current_user_settings.show_advanced_search) {
                            _this.addClass('filteractive');
                        } else {
                            _this.removeClass('filteractive');
                        }
                        setObjectCookie('user_settings', current_user_settings, 'Expanded event', user_settings_expire_days);
                    });
                } else {
                    _this.removeClass('filteractive');
                }
            });
            $('*[data-handler="expand"]').click(function () {
                $('.multicontrols .btnok').trigger('click');
                $('.expanded_search').toggle(1);
                $('.search_btn').toggle(1);
                $('.reset_btn').toggle(1);
                var show_advanced_search = false;
                if ($('.search_expand span').text() === "+") {
                    $('#map_small').addClass('map_small_extend');
                    $('.search_expand span').text("-");
                    $('.searchblock_container').addClass("is_expanded");
                    $('.searchblock_container').removeClass("searchblock_container");
                    $('.is_expanded_2_none').addClass("is_expanded_2");
                    $('.is_expanded_2_none').removeClass("is_expanded_2_none");
                    $('.frontpage_review_summary').addClass("is_expanded_2_none");
                    show_advanced_search = true;
                } else {
                    $('#map_small').removeClass('map_small_extend');
                    $('.search_expand span').text("+");
                    $('.is_expanded').addClass("searchblock_container");
                    $('.is_expanded').removeClass("is_expanded");
                    $('.is_expanded_2').addClass("is_expanded_2_none");
                    $('.is_expanded_2').removeClass("is_expanded_2");
                    $('.frontpage_review_summary').removeClass("is_expanded_2_none");
                    show_advanced_search = false;
                }
                var current_user_settings = getObjectCookie('user_settings');
                current_user_settings.show_advanced_search = show_advanced_search;
                setObjectCookie('user_settings', current_user_settings, 'Expanded event', user_settings_expire_days);
                checkScrollerAndInfinityButton(settings.footer_css_selector, 'SB attach.. expand click');
            });
            $('*[data-handler="expand_dt"]').click(function () {
                var $expand_handler = $(this);
                var close_text = $(this).attr('data-open-btn-text');
                var open_text = $(this).attr('data-close-btn-text');
                if ($('#extendedSearchContainer').is(':visible')) {
                    $('#extendedSearchContainer').hide('fast', function () {
                        $expand_handler.html(open_text);
                    });
                } else {
                    $('#extendedSearchContainer').show('fast', function () {
                        $expand_handler.html(close_text);
                    });
                }
            });
            $('*[data-handler="showmap"]').click(function (e) {
                $('#max_results_msg').remove();
                var current_user_settings = getObjectCookie('user_settings');
                current_user_settings.show_map = !current_user_settings.show_map;
                if (!current_user_settings.show_map) {
                    $('.map_houses_loader').remove();
                }
                setObjectCookie('user_settings', current_user_settings, 'Showmap event', user_settings_expire_days);
                channelResults(settings, false, function () { checkScrollerAndInfinityButton(settings.footer_css_selector, 'SB attach.. showmap click'); });
            });
            $('a[data-handler="resetmap"]').click(function () {
                resetSprite(settings);
            });
            if (settings.show_last_search_button) {
                $('*[data-handler="loadlastsearch"]').click(function () {
                    var post_qs = cleanHashParameters(getcookie(search_cookie_name));
                    /* var post_qs = '?open_sb=true&d=' + post_qs; */
                    post_qs = '?d=' + post_qs;
                    if ($('*[data-type="searchblock"]').prop('tagName') === 'FORM') {
                        $('*[data-type="searchblock"]').attr('action', settings.resulttargeturl + post_qs).submit();
                    } else if ($('*[data-type="searchblock"]').prop('tagName') === 'DIV') {
                        document.location = settings.resulttargeturl + post_qs;
                    } else {
                        console.warn("Could not trigger advanced search!");
                    }
                });
            }
            $('input[class*="dtp"]').attr('readonly', 'readonly');
        }
    }
    var outputHandler = function (typeid, settings, criteria) {
        // console.log('outputHandler..');
        // console.log(settings);
        // console.log(typeid);

        if (absolute_uri.indexOf('/booking/') === -1) {
            if (!isNaN(typeid)) {
                var type_enum;
                if (isNumber(typeid)) {
                    switch (typeid) {
                        case 1: type_enum = outputType.OBJECT; break;
                        case 2: type_enum = outputType.AJAX; break;
                        case 3: type_enum = outputType.POST; break;
                        case 4: type_enum = outputType.COUNT; break;
                        case 5: type_enum = outputType.AJAX_WITHOUT_TEMPLATE; break;
                        case 6: type_enum = outputType.AJAX_WITHOUT_LOAD; break;
                    }
                }

                switch (type_enum) {
                    case outputType.OBJECT:
                        return this;
                    case outputType.AJAX_WITHOUT_LOAD:
                        if (settings.resultitemtemplatepath !== "") {
                            SearchCriteria.TemplatePath = settings.resultitemtemplatepath;
                        } else {
                            SearchCriteria.TemplatePath = house_element_default_template;
                            console.warn("TemplatePath not set on outputHandler(AJAX_WITHOUT_LOAD). Default template (" + house_element_default_template + ") loaded.");
                        }
                        if (isOnResultPage()) criteria.pagenumberindex = 0;
                        outputHandler(parseInt(outputType.AJAX), settings, criteria);
                        settings.outputtype = outputType.AJAX;
                        break;
                    case outputType.AJAX:
                        if (settings.resultitemtemplatepath !== "") {
                            SearchCriteria.TemplatePath = settings.resultitemtemplatepath;
                        } else {
                            SearchCriteria.TemplatePath = house_element_default_template;
                            console.warn("TemplatePath not set on outputHandler(AJAX). Default template (" + house_element_default_template + ") loaded.");
                        }
                        if (settings.resulttargetselector !== '') {
                            channelResults(settings, false, function () { loadResultElements(true, '', 'outputHandler.. ajax..'); });
                            var post_aq = SearchCriteria.getAlternativeQuery(false);
                            if (post_aq.indexOf(settings.mandatoryAlternativeQueries) > -1) {
                                post_aq = post_aq.replace(settings.mandatoryAlternativeQueries, '');
                            }
                            if (document.location.href.indexOf('usecookie=no') === -1) {
                                //console.log('AJAX save2cookie: ' + post_aq);
                                setcookie(search_cookie_name, post_aq, 7);
                            }
                            //console.log('AJAX SC: ' + JSON.stringify(SearchCriteria));
                            sessionStorage.setItem('sb_criterias', JSON.stringify(SearchCriteria));
                        } else {
                            console.warn('No result target selected');
                        }
                        break;
                    case outputType.AJAX_WITHOUT_TEMPLATE:
                        loadHouseCount(settings, true, false, false, false, false, 'outputType.AJAX_WITHOUT_TEMPLATE');
                        break;
                    case outputType.POST:
                        if ($('button[type="submit"],div[data-type="submit"]').exists()) {
                            $(this).removeAttr('disabled');
                            if (settings.resulttargeturl !== "") {
                                $('*[data-type="searchblock"]').attr('action', settings.resulttargeturl);
                                $('button[type="submit"],div[data-type="submit"]').on('click', function (e) {
                                    e.stopPropagation();
                                    e.preventDefault();
                                    $(this).prop('disabled', 'disabled');
                                    var current_user_settings = getObjectCookie('user_settings');
                                    if (!current_user_settings) current_user_settings = default_user_settings;
                                    current_user_settings.show_map = false;
                                    current_user_settings.browser_back_mode = false;
                                    current_user_settings.result_page_index = 0;
                                    current_user_settings.show_advanced_search = false;
                                    setObjectCookie('user_settings', current_user_settings, 'POST', user_settings_expire_days); /* default always show houses on list */

                                    var post_aq = cleanHashParameters(SearchCriteria.getAlternativeQuery(true));
                                    if (document.location.href.indexOf('usecookie=no') === -1) {
                                        setcookie(search_cookie_name, post_aq, 7);
                                    }
                                    var post_qs = post_aq !== '' ? '?d=' + post_aq : '';
                                    if ($('*[data-type="searchblock"]').prop('tagName') === 'FORM') {
                                        $('*[data-type="searchblock"]').attr('action', settings.resulttargeturl + post_qs).submit();
                                    } else if ($('*[data-type="searchblock"]').prop('tagName') === 'DIV') {
                                        document.location = settings.resulttargeturl + post_qs;
                                    } else {
                                        console.warn("Could not trigger search!");
                                    }
                                });
                            } else {
                                console.warn("Result target page url not set!");
                            }
                        } else {
                            console.warn("No submit button added to the post form " + settings.formid + " !");
                        }
                        loadHouseCount(settings, true, false, false, false, false, 'outputType.POST');
                        // outputHandler(parseInt(outputType.COUNT), settings, criteria);
                        break;
                    case outputType.COUNT:
                        if (settings.housecountselector !== '') {
                            if ($(settings.housecountselector).exists()) {
                                loadHouseCount(settings, true, false, false, false, false, 'outputType.COUNT');
                            } else {
                                console.warn("House count element (" + settings.housecountselector + ") not found!");
                            }
                        }
                        break;
                    default:
                        console.warn("Output type (" + typeid + ") not set on search block initialization!");
                        break;
                }
            } else {
                console.warn("Type id: " + typeid + " not initialized. Initialization failed!");
            }
        }
    };
    function callGTMEcommerceTransaction(currency, orderid, revenue, tax, coupon, houseid, products) {
        if (typeof dataLayer !== 'undefined') {
            dataLayer.push({
                'event': 'ecommerceTransaction',
                'ecommerce': {
                    'currencyCode': currency,       /* transaction currency code : DKK */
                    'purchase': {
                        'actionField': {
                            'id': orderid,          /* Transaction ID. Required for purchases and refunds. */
                            'revenue': revenue,     /* Total transaction value (incl. tax and shipping) : 35.43 */
                            'tax': tax,             /* optional : 4.90 */
                            'coupon': coupon        /* optional */
                        },
                        'products': products        /* product = { 'name': '', 'id': '12345', 'price': '15.25', 'quantity': 1, 'coupon': ' SUMMERCAMPAGNE' } */
                    }
                }
            });
        }
    }
    function callGTMFilteredSearch() {
        SearchCriteria.resetPagingCounter();
        if (jquery_search_sitebid === 'SOS') {
            if (typeof dataLayer !== 'undefined') { /* 22/12-2016: request from IIHNordic, Florian, for setting up GTM correctly */
                dataLayer.push({ 'event': 'filterSearch' });
            }
        }
    }
    function channelResults(settings, append_results, callback) {
        var current_user_settings = getObjectCookie('user_settings');
        if (current_user_settings.show_map) {
            if (settings.displayOfAlternativeQueriesSelector !== '') {
                displayAlternativeQueries(settings);
            }
            loadHouseCount(settings, true, false, false, false, false, 'channelResults');
            $(settings.infinitybuttonselector).addClass('mapshown'); /* deactivate infinity scroller */
            $('.showonmap_text').text(show_on_list);
            $(search_house_container + ' li, ' + search_house_container + ' .house_resultat, #search_criteria').hide();
            $(settings.infinitybuttonselector).hide();
            if ($('#map_container').exists()) {
                result_map.setCenter(new google.maps.LatLng(current_user_settings.show_map_lat, current_user_settings.show_map_lng));
                if (isNumber(current_user_settings.show_map_zoom)) result_map.setZoom(current_user_settings.show_map_zoom);
                $('#map_container').show();
            } else {
                var map_container = $('<div />', {
                    id: 'map_container',
                    'class': 'house_resultat',
                    style: 'height: ' + (designtemplatename === 'DT1' ? 838 : 700) + 'px; margin: 0; padding: 0;'
                });
                $(search_house_container).before(map_container);
                $('#map_container').before(
                    $('<div />', { 'class': 'map_info_text' })
                );
                var region_geo = getRegionGeo(isNumber(SearchCriteria.region) ? SearchCriteria.region : 0);
                if (region_geo !== null) {
                    current_user_settings.show_map_lat = region_geo.lat;
                    current_user_settings.show_map_lng = region_geo.lng;
                    current_user_settings.show_map_zoom = region_geo.zoom;
                } else {
                    if (!current_user_settings.show_map_lat) current_user_settings.show_map_lat = default_user_settings.show_map_lat;
                    if (!current_user_settings.show_map_lng) current_user_settings.show_map_lng = default_user_settings.show_map_lng;
                    if (!current_user_settings.show_map_zoom) current_user_settings.show_map_zoom = default_user_settings.show_map_zoom;
                }
                setObjectCookie('user_settings', current_user_settings, 'Showmap event', user_settings_expire_days);
                var latlon = new google.maps.LatLng(current_user_settings.show_map_lat, current_user_settings.show_map_lng);
                var Styles = [
                    {
                        featureType: "poi.business",
                        elementType: "labels.text",
                        stylers: [
                            { visibility: "off" }
                        ]
                    }
                ];
                result_map = new google.maps.Map(document.getElementById('map_container'), {
                    mapTypeId: 'roadmap',
                    center: latlon,
                    zoom: current_user_settings.show_map_zoom,
                    scaleControl: true,
                    styles: Styles 
                });
                google.maps.event.addListener(result_map, 'zoom_changed', function () {
                    setTimeout(function () {
                        recordMapTracker(result_map.getCenter().lat(), result_map.getCenter().lng(), result_map.getZoom());
                        var zoom_user_settings = getObjectCookie('user_settings');
                        zoom_user_settings.show_map_zoom = result_map.getZoom();
                        setObjectCookie('user_settings', zoom_user_settings, 'zoom_changed', user_settings_expire_days);
                    }, 500);
                });
                google.maps.event.addListener(result_map, "center_changed", function () {
                    setTimeout(function () {
                        recordMapTracker(result_map.getCenter().lat(), result_map.getCenter().lng(), result_map.getZoom());
                        var center_user_settings = getObjectCookie('user_settings');
                        center_user_settings.show_map_lat = result_map.getCenter().lat();
                        center_user_settings.show_map_lng = result_map.getCenter().lng();
                        setObjectCookie('user_settings', center_user_settings, 'center_changed', user_settings_expire_days);
                    }, 500);
                });
            }
            loadHousesForMap(settings, result_map);
        } else {
            //console.log('Before loading houses in list mode.. Appending:' + append_results);
            $(settings.infinitybuttonselector).removeClass('mapshown');
            $('.showonmap_text').text(show_on_map);
            $('#map_container').hide();
            $(search_house_container + ' li, ' + search_house_container + ' .house_resultat, #search_criteria').show();
            if (SearchCriteria.TemplatePath === "") {
                if (settings.resultitemtemplatepath !== "") {
                    SearchCriteria.TemplatePath = settings.resultitemtemplatepath;
                } else {
                    SearchCriteria.TemplatePath = house_element_default_template;
                    console.warn("TemplatePath not set. Default template (" + house_element_default_template + ") loaded.");
                }
            }
            if (!append_results) SearchCriteria.pagenumberindex = 0;
            loadHouses(settings, append_results, callback);
        }
    }
    function handleAQInputSequence(settings, usePreset, checkBrowserBack) {
        /*
            default values: handleAQInputSequence(settings, true, true);
            priority of aq (highest first): hashed url, requested url, presetted (back-end), cookie then mandatory (back-end)
            firstmost AQ dictates search criteria results
        */
        if (typeof SearchCriteria.addAlternativeQuery === 'undefined') { /* in case SearchCriteria is lost (happens in Chrome) */
            SearchCriteria = new SearchCriteria(settings);
            SearchCriteria.loadState(null);
        }
        if (settings.mandatoryAlternativeQueries.length > 0) { /* mandatory AQ, typically image sizes and other basic aq */
            handleInputAlternativeQueries(settings.mandatoryAlternativeQueries);
        }
        var isCampaign = getParam('utm_source') !== ''; /* isCampaign */
        var is_hashed_url = window.location.hash.length > 0;
        // console.log('handleAQInputSequence..');
        if (!isCampaign || is_hashed_url) {
            if (settings.use_cookie) { /* useCookie */
                if (settings.reqestedAlternativeQueries.indexOf('=') > -1) {
                    if (settings.reqestedAlternativeQueries.indexOf('usecookie=no') === -1) {
                        if (cookieexists(search_cookie_name)) {
                            handleInputAlternativeQueries(getcookie(search_cookie_name));
                        }
                    }
                } else {
                    if (cookieexists(search_cookie_name)) {
                        handleInputAlternativeQueries(getcookie(search_cookie_name));
                    }
                }
            }
        }
        if (usePreset) { /* usePreset */
            if (settings.presetAlternativeQueries.length > 0) {
                handleInputAlternativeQueries(settings.presetAlternativeQueries);
            }
        }
        // console.log('Before reqestedAlternativeQueries: ' + (settings.reqestedAlternativeQueries !== ''));
        if (settings.reqestedAlternativeQueries !== '' && settings.reqestedAlternativeQueries.indexOf('=') > -1) { /* useRequest */
            // console.log('Handling settings.reqestedAlternativeQueries: ' + settings.reqestedAlternativeQueries);
            handleInputAlternativeQueries(settings.reqestedAlternativeQueries);
        } else if (getParam('d') !== '') {
            handleInputAlternativeQueries(getParam('d'));
        }
        // console.log('Before checking hash in url.. ' + (window.location.hash !== ''));
        if (window.location.hash !== '' && window.location.hash.indexOf('result_new_searchbar') === -1) { /* Hash url exists and not contains result_new_searchbar */
            handleInputAlternativeQueries(window.location.hash.replace(/#/, ''));
        }
        // console.log('After checking hash in url..');
        // todo: load values should not be placed in this method
        // loadAndSetFieldValues(settings, SearchCriteria); /* sets values to SB */
    }
    function handleInputAlternativeQueries(input_aq) { /* method must not save to cookie */
        if (input_aq.indexOf(';') > -1) {
            var arr_alt_queries = input_aq.split(';');
            for (var aq = 0; aq < arr_alt_queries.length; aq++) {
                // console.log('arr_alt_queries[aq]: ' + arr_alt_queries[aq]);
                if (arr_alt_queries[aq].indexOf('=') > -1) {
                    var arr_aq_item = arr_alt_queries[aq].split('=');
                    if (arr_aq_item.length === 2) {
                        if (arr_aq_item[0] === 'subregion') { SearchCriteria.addSubregion(arr_aq_item[1]); }
                        // console.log(arr_aq_item[0] + ' = ' + arr_aq_item[1]);
                        SearchCriteria.addAlternativeQuery(arr_aq_item[0], arr_aq_item[1]);
                    }
                }
            }
        } else {
            if (input_aq.indexOf('=') > -1) {
                var one_aq_item = input_aq.split('=');
                if (one_aq_item.length === 2) {
                    if (one_aq_item[0] === 'subregion') {
                        SearchCriteria.addSubregion(one_aq_item[1]);
                    }
                    SearchCriteria.addAlternativeQuery(one_aq_item[0], one_aq_item[1]);
                }
            }
        }
    }
    function handleHashedUrl(settings, reference, addPageIndex) {
        if (settings.use_urlhash) {
            renderHashedUrl(SearchCriteria.getAlternativeQuery(false));
        }
        setcookie(search_cookie_name, getcookie(search_cookie_name), 7); /* MHN : added 05/05-2017, fixing browser back issues */
    }
    function renderHashedUrl(raw_params) {
        var current_d_param = cleanHashParameters(getParam('d'));
        raw_params = cleanHashParameters(raw_params);
        if (raw_params !== '' && raw_params !== current_d_param) {
            window.location.hash = raw_params;
        } else {
            if (window.location.href.indexOf('#') > -1) {
                history.pushState("", document.title, window.location.href.replace(/\#(.+)/, '').replace(/http(s?)\:\/\/([^\/]+)/, ''));
            }
        }
    }
    function cleanHashParameters(raw_p) {
        /* these parameters should never be appended to the hashed url */
        raw_p = removeURLParameter(raw_p, 'picturetype');
        //raw_p = removeURLParameter(raw_p, 'altdays');
        raw_p = removeURLParameter(raw_p, 'usecookie');
        if (raw_p.indexOf(';') > -1) {
            var all_params = raw_p.split(';');
            raw_p = all_params.sort(function (a, b) { return a > b; }).join(';'); /* split and sort parameters */
        }
        return raw_p;
    }
    /**
     * @param {object} settings All settings
     * @param {object} criteria All search criterias
     * @param {boolean|null} remove_last_added If true, the last criteria is removed from criteria for avoiding zero results
     */
    function loadAndSetFieldValues(settings, criteria, remove_last_added) {
        // console.log('loadAndSetFieldValues..');
        // console.log(settings);
        // console.log(criteria);
        // console.log('remove_last_added: ' + remove_last_added);
        var is_last_added_startdate = false;
        if (typeof remove_last_added !== 'undefined') {
            if (remove_last_added) {
                // console.log('loadAndSetFieldValues.. ' + remove_last_added);
                // select elements not handled
                $('input[name="' + remove_last_added + '"]').prop('checked', false).removeClass('dd_selected');
                if (remove_last_added === 'startdate' || remove_last_added === 'enddate') {
                    criteria["startdate"] = "NULL";
                    criteria.removeAlternativeQuery("startdate", true);
                    criteria["enddate"] = "";
                    criteria.removeAlternativeQuery("enddate", true);
                    criteria["numberofdays"] = 7;
                    criteria.removeAlternativeQuery("numberofdays", true);
                    is_last_added_startdate = true;
                } else if (remove_last_added === 'subregion') {
                    criteria.removeAlternativeQuery("destination", true);
                    criteria.removeAlternativeQuery("subregion", true);
                } else {
                    criteria[remove_last_added] = "";
                    criteria.removeAlternativeQuery(remove_last_added, true);
                }
                // console.log('Before channel result..');
                channelResults(settings, false, function () { checkScrollerAndInfinityButton(settings.footer_css_selector, 'loadAndSetFieldValues..'); });
                return;
            }
        }
        // console.log('After channeling results..');
        if (isNaN(criteria.region) || criteria.region === null || parseInt(criteria.region) === 0) {
            criteria.region = 0;
            if (settings.region_select !== null) settings.region_select.unSelectAll();
        } else {
            if (isNumber(criteria.region)) {
                if (parseInt(criteria.region) > 0) {
                    // console.log('load region: ' + criteria.region);
                    if (settings.subregion_select !== null) settings.subregion_select.showAll(true, true, 'data-region', criteria.region);
                    if (settings.destination_select !== null) settings.destination_select.showAll(true, true, 'data-region', criteria.region);
                    if (settings.region_select !== null) {
                        settings.region_select.selectItem(criteria.region.toString());
                        $('.msl_region .captioncont').addClass('dd_selected');
                    }
                }
            }
        }
        // console.log('Before setting subregion..');
        if (criteria.subregionlist.length > 0) {
            if (criteria.subregionlist.length === 1) {
                var req_region_id = $('.msl_subregion select option[data-id="' + criteria.subregionlist[0] + '"]').attr('data-region');
                loadMapByArea(settings, parseInt(req_region_id), parseInt(criteria.subregionlist[0]), null, true);
                if (settings.region_select !== null) settings.region_select.selectItem(req_region_id.toString());
                $('.msl_region .captioncont').addClass('dd_selected');
            }
            if (settings.subregion_select !== null) {
                settings.subregion_select.unSelectItem(0);
                for (var load_i = 0; load_i < criteria.subregionlist.length; load_i++) {
                    settings.subregion_select.selectItem(criteria.subregionlist[load_i].toString());
                }
                $('.msl_subregion .captioncont').addClass('dd_selected');
            }
            if (settings.destination_select !== null) {
                settings.destination_select.showAll(true, true, 'data-subregion', criteria.subregionlist);
            }
        } else {
            if (isNaN(criteria.subregion) || criteria.subregion === null || parseInt(criteria.subregion) === 0) {
                criteria.subregion = 0;
                if (settings.subregion_select !== null) {
                    settings.subregion_select.showAll(true, true, 'data-region', criteria.region);
                }
            } else {
                $('.msl_subregion .captioncont').addClass('dd_selected');
            }
            if (settings.subregion_select !== null) {
                settings.subregion_select.selectItem(criteria.subregion.toString());
            }
        }
        // console.log('Before setting destination..');
        if (isNaN(criteria.destination) || criteria.destination === null || parseInt(criteria.destination) === 0) {
            criteria.destination = 0;
            if (settings.destination_select !== null) settings.destination_select.unSelectAll();
        } else {
            if (settings.destination_select !== null) {
                settings.destination_select.selectItem(criteria.destination.toString());
                $('.msl_destination .captioncont').addClass('dd_selected');
                if (settings.subregion_select !== null) {
                    if (criteria.subregionlist.length < 2) {
                        var subregion_id = $('.msl_destination select option[data-id="' + criteria.destination + '"]').attr('data-subregion');
                        if (subregion_id !== '') {
                            criteria.addSubregion(subregion_id);
                            settings.subregion_select.unSelectItem(0);
                            settings.subregion_select.selectItem(subregion_id.toString());
                            $('.msl_subregion .captioncont').addClass('dd_selected');
                        }
                    }
                }
            }
        }
        // console.log('Before settings area map..');
        loadMapByArea(settings, isNumber(criteria.region) ? criteria.region : null, isNumber(criteria.subregion) ? criteria.subregion : null, isNumber(criteria.destination) ? criteria.destination : null);
        // console.log('After settings area map..');
        if (criteria.startdate !== 'NULL' && criteria.startdate !== '') {
            $('input[name="startdate"]').addClass('dd_selected').val(criteria.startdate);
            $('select[name="numberofdays"]').addClass('dd_selected');
            $('#daysSelDate').show();
            $('input[name="discount"]').show().next('label[for*="_discount"]').show();
        } else {
            $('input[name="startdate"]').removeClass('dd_selected').val(notSetText);
            $('select[name="numberofdays"]').removeClass('dd_selected');
            if (!is_last_added_startdate) {
                $('#daysSelDate').hide();
                $('input[name="discount"]').hide().next('label[for*="_discount"]').hide();
            }
        }
        if (!is_last_added_startdate) {
            criteria.numberofdays = typeof criteria.numberofdays !== 'undefined' ? parseInt(criteria.numberofdays) : 7;
            if ($('select[name="numberofdays"]').exists()) {
                $('select[name="numberofdays"]').removeClass('dd_selected').children().each(function () {
                    if (parseInt($(this).val()) === parseInt(criteria.numberofdays)) {
                        //$(this).prop('selected', true).parent().addClass('dd_selected');
                    }
                });
            }
        }
        // console.log('After settings startdate..');
        if (parseInt(criteria.altdays) === '1') $('input[name="altdays"]').prop('checked', true).addClass('cb_selected');
        /* hustype */
        // console.log('Before setting object type.. ' + (typeof criteria.objecttype));
        var full_list = criteria.objecttype !== '0' && criteria.objecttype.indexOf(':') > -1 ? criteria.objecttype.split(':') : criteria.objecttype;
        // console.log(full_list);
        var bSetApartment = full_list.indexOf('6') === -1 && full_list.indexOf('7') === -1 && full_list.indexOf('8') === -1 && full_list.indexOf('9') === -1 && full_list.indexOf('10') === -1 && full_list.indexOf('11') === -1 ? true : false;
        $('#cbExcludeApartment').prop('checked', bSetApartment);
        var bExcludeTownhouse = full_list.indexOf('2') === -1 && full_list.indexOf('3') === -1 && full_list.indexOf('4') === -1 && full_list.indexOf('5') === -1 ? true : false;
        $('#cbExcludeTownhouse').prop('checked', bExcludeTownhouse);
        /* antal gæster */
        var dd_zero_names = ["persons", "pets", "bedrooms", "toilets", "housem2", "groundm2", "shopdistance", "waterdistance", "totalmin", "total"];
        for (var ddi = 0; ddi < dd_zero_names.length; ddi++) {
            var $ddi_select = $('select[name="' + dd_zero_names[ddi] + '"]');
            if (parseInt(criteria[dd_zero_names[ddi]]) === 0) {
                $ddi_select.removeClass('dd_selected').find('option:eq(0)').prop('selected', true);
            } else {
                $ddi_select.children().each(function () {
                    if (parseInt($(this).val()) === parseInt(criteria[dd_zero_names[ddi]])) {
                        $(this).prop('selected', true).parent().addClass('dd_selected');
                    }
                });
            }
        }
        var dd_nonzero_names = ["category", "smoking", "build"];
        for (var ddiz = 0; ddiz < dd_nonzero_names.length; ddiz++) {
            var $ddiz_select = $('select[name="' + dd_zero_names[ddiz] + '"]');
            if (parseInt(criteria[dd_nonzero_names[ddiz]]) === 0) {
                $ddiz_select.removeClass('dd_selected').find('option:eq(0)').prop('selected', true);
            } else {
                $ddiz_select.children().each(function () {
                    if ($(this).val() === criteria[dd_nonzero_names[ddiz]]) {
                        $(this).prop('selected', true).parent().addClass('dd_selected');
                    }
                });
            }
        }
        var cb_names = ["washingmachine", "dishwasher", "freezer", "tumbler", "microwave", "energysafe", "wheelchair", "fishing", "freeactivitycenter", "harbor",
            "exclusive", "activityroom", "fenchedterrace", "fenchedarea", "outdoor_toy_equipment", "seaview", "woodburning_stove", "internet"]; // not discount
        for (var cbi = 0; cbi < cb_names.length; cbi++) {
            if (criteria[cb_names[cbi]] === "yes") {
                $('#CheckBox_' + cb_names[cbi]).prop('checked', true).addClass('cb_selected');
            }
        }
        if ($('input[name="discount"]').exists()) {
            if (criteria.startdate !== 'NULL' && criteria.startdate !== '') {
                if (criteria.discount === "yes") { $('input[name="discount"]').prop('checked', true).show().next('label[for*="_discount"]').show(); }
            } else {
                $('input[name="discount"]').hide().next('label[for*="_discount"]').hide();
            }
        }
        /* wellness */
        if (criteria.sauna === "yes") { $('#CheckBox_sauna').prop('checked', true).addClass('cb_selected'); }
        if (criteria.jacuzzi === "yes" || criteria.jacuzzi === "indoor" || criteria.jacuzzi === "outdoor") {
            $('#CheckBox_jacuzzi').prop('checked', true).addClass('cb_selected');
            switch (criteria.jacuzzi) {
                case "indoor":
                    $('#rbJacuzzi_indoor').prop('checked', true).addClass('cb_selected');
                    $('#rbJacuzzi_not_indoor').prop('checked', false).removeClass('cb_selected');
                    $('#rbJacuzzi_outdoor').prop('checked', false).removeClass('cb_selected');
                    $('#rbJacuzzi_not_outdoor').prop('checked', true).addClass('cb_selected');
                    break;
                case "outdoor":
                    $('#rbJacuzzi_indoor').prop('checked', false).removeClass('cb_selected');
                    $('#rbJacuzzi_not_indoor').prop('checked', true).addClass('cb_selected');
                    $('#rbJacuzzi_outdoor').prop('checked', true).addClass('cb_selected');
                    $('#rbJacuzzi_not_outdoor').prop('checked', false).removeClass('cb_selected');
                    break;
            }
            $('#jacuzzi_details').show();
        } else { $('#jacuzzi_details').hide(); }
        if (criteria.swimmingpool === "yes" || criteria.swimmingpool === "not_shared" || criteria.swimmingpool === "indoor" || criteria.swimmingpool === "indoor_not_shared") {
            $('#CheckBox_swimmingpool').prop('checked', true).addClass('cb_selected');
            switch (criteria.swimmingpool) {
                case "not_shared": $('#CheckBox_swimmingpool_not_shared').prop('checked', true).addClass('cb_selected'); break;
                case "indoor": $('#CheckBox_swimmingpool_not_outdoor').prop('checked', true).addClass('cb_selected'); break;
                case "indoor_not_shared":
                    $('#CheckBox_swimmingpool_not_outdoor').prop('checked', true).addClass('cb_selected');
                    $('#CheckBox_swimmingpool_not_shared').prop('checked', true).addClass('cb_selected');
                    break;
            }
            $('#swimmingpool_details').show();
        } else { $('#swimmingpool_details').hide(); }
        /* special queries */
        $('select[data-handler="vacationtype"]').children().each(function () { if ($(this).val() === criteria.vacationtype) { $(this).prop('selected', true).addClass('cb_selected'); } });
        /* sortering */
        $('select[data-handler="sortby"]').children().each(function () { if ($(this).val() === criteria.sortby) { $(this).prop('selected', true).addClass('cb_selected'); } });
        if (criteria.sortby.indexOf(':') > -1) {
            var arr_sortby = criteria.sortby.split(':');
            if (arr_sortby.length === 2) {
                criteria.sortby = arr_sortby[0];
                criteria.sortorder = arr_sortby[1];
            }
        }
    }
    function zeroHandler(settings, source) {
        // console.log('ZeroHandler.. ' + source);
        if (jquery_search_sitebid === 'SOS') {
            if (typeof dataLayer !== 'undefined') {
                dataLayer.push({
                    'event': 'noResultSearch'
                });
            }
        }
        // console.log('Last added: ' + SearchCriteria.lastAddedCriteria);
        SearchCriteria.removeAlternativeQuery(SearchCriteria.lastAddedCriteria);
        if (document.location.href.indexOf('usecookie=no') === -1) {
            setcookie(search_cookie_name, SearchCriteria.getAlternativeQuery(false, false), 7);
        }
        // console.log(SearchCriteria);
        //loadAndSetFieldValues(settings, SearchCriteria, SearchCriteria.lastAddedCriteria); /* re-build search form */
        displayAlternativeQueries(settings); /* re-biuld AQ items */
        $('.zero_result_content').remove();
        var close_btn = $('<div />', { 'class': 'close_button' }).click(function () {
            $('.zero_result_content').remove();
            $('#zero_result_container').hide();
        });
        var overlay_content = $('<div />', { 'id': 'zero_result_content', 'class': 'zero_result_content' }).append(close_btn);
        switch (site_lang) {
            case "DK": overlay_content.append('<h2 style="font-size:22px; font-weight:normal; line-height:25px;">Ingen sommerhuse opfylder alle jeres ønsker!</h2><p>Prøv f.eks. at:</p><ul><li>vælge lørdag som ankomstdag,</li><li>vælge 7 overnatninger,</li><li>søge i et større geografisk område eller</li><li> fjerne nogle af kriterierne</li></ul>'); break;
            case "DE": overlay_content.append('<h2 style="font-size:22px; font-weight:normal; line-height:25px;">Keines der Ferienhäuser entspricht allen Ihren Wünschen!</h2><p>Versuchen Sie zum Beispiel Folgendes:</p><ul><li>wählen Sie Samstag als Anreisetag,</li><li>wählen Sie 7 Übernachtungen,</li><li>in einem größeren Gebiet suchen oder</li><li>entfernen Sie einige der Kriterien.</li></ul>'); break;
            case "NO": overlay_content.append('<h2 style="font-size:22px; font-weight:normal; line-height:25px;">Ingen feriehus oppfyller alle ønskene deres!</h2><p>Prøv f.eks. å</p><ul><li>velge lørdag som ankomstdag,</li><li>velge 7 overnattinger,</li><li>søke i et større geografisk område eller</li><li>fjerne noen av kriteriene.</li></ul>'); break;
            case "SE": overlay_content.append('<h2 style="font-size:22px; font-weight:normal; line-height:25px;">Inga semesterstugor uppfyller alla era önskemål!</h2><p>Försök till exempel att</p><ul><li>välja lördag som ankomstdag,</li><li>välja 7 övernattningar,</li><li>söka i ett större geografiskt område eller</li><li>ta bort några av kriterierna.</li></ul>'); break;
            case "NL": overlay_content.append('<h2 style="font-size:22px; font-weight:normal; line-height:25px;">Er zijn geen vakantiehuizen die aan al uw wensen voldoen!</h2><p>U kunt het volgende proberen:</p><ul><li>zaterdag als aankomstdag kiezen,</li><li>7 overnachtingen, </li><li>zoeken in een groter geografisch gebied kiezen of</li><li>een paar criteria verwijderen.</li></ul>'); break;
            case "UK": overlay_content.append('<h2 style="font-size:22px; font-weight:normal; line-height:25px;">No holiday homes meet all of your demands</h2><p>You can try</p><ul><li>choosing Saturday as arrival day</li><li>choosing 7 nights,</li><li>searching in a larger geographical area or</li><li>removing some of the criteria</li></ul>'); break;
            case "PL": overlay_content.append('<h2 style="font-size:22px; font-weight:normal; line-height:25px;">Żaden domek letniskowy nie spełnia wszystkich Waszych oczekiwań!</h2><p>Proszę spróbować np</p><ul><li>szukać na większym obszarze geograficznym,</li><li>wybrać sobotę jako dzień przyjazdu,</li><li>wybrać 7 noclegów, lub</li><li>usunąć niektóre kryteria.</li></ul>'); break;
        }
        $('#zero_result_container').show().after($(overlay_content).show());
        $("#search_btn").attr("disabled", "disabled").off('click');
        $("#search_btn").removeClass("search_input");
        $("#search_btn").addClass("search_input_disabled");
        // console.log('isOnResultPage: ' + isOnResultPage());
        if (isOnResultPage()) loadHouses(settings, false);
    }
    function renderHouseCount(settings, current_user_settings, data, returnCount, addParantes, aggregateHouseCount, override_alert, source) {
        var housecount = $(data).find('results_alternative').text();
        //if (housecount == "") {
        //    housecount = $(data).find('results_alternative').text();
        //}
        if (isNumber(housecount)) {
            if (parseInt(housecount) === 0 && !override_alert) {
                zeroHandler(settings, source);
            }
            else {
                $('button[type="submit"],div[data-type="submit"]').on('click', function (e) {
                    e.stopPropagation();
                    e.preventDefault();
                    $(this).prop('disabled', 'disabled');
                    var current_user_settings = getObjectCookie('user_settings');
                    if (!current_user_settings) current_user_settings = default_user_settings;
                    current_user_settings.show_map = false;
                    current_user_settings.browser_back_mode = false;
                    current_user_settings.result_page_index = 0;
                    current_user_settings.show_advanced_search = false;
                    setObjectCookie('user_settings', current_user_settings, 'POST', user_settings_expire_days); /* default always show houses on list */

                    var post_aq = cleanHashParameters(SearchCriteria.getAlternativeQuery(false));

                    if (document.location.href.indexOf('usecookie=no') === -1) {
                        setcookie(search_cookie_name, post_aq, 7);
                    }
                    var post_qs = post_aq !== '' ? '?d=' + post_aq : '';
                    //if (SearchCriteria.altdays === "") {
                    //    post_qs = post_aq + ";altdays=0";
                    //}                    
                    if ($('*[data-type="searchblock"]').prop('tagName') === 'FORM') {
                        $('*[data-type="searchblock"]').attr('action', settings.resulttargeturl + post_qs).submit();
                    } else if ($('*[data-type="searchblock"]').prop('tagName') === 'DIV') {
                        document.location = settings.resulttargeturl + post_qs;
                    } else {
                        console.warn("Could not trigger search!");
                    }
                });
                $("#search_btn").removeClass("search_input_disabled");
                $("#search_btn").addClass("search_input");
            }
            if (isOnResultPage()) {
                current_user_settings.last_result_count = housecount;
                setObjectCookie('user_settings', current_user_settings, 'loadHouseCount().. success', user_settings_expire_days);
            }
        }
        if (returnCount === true) {
            if ($(settings.housecountselector).exists()) {
                if (addParantes) {
                    if ($(settings.housecountselector).parent().text().indexOf('(') > -1 && $(settings.housecountselector).parent().text().indexOf(')') > -1) {
                        $(settings.housecountselector).html(housecount);
                    } else {
                        $(settings.housecountselector).html(housecount).before('(').after(')');
                    }
                } else {
                    $(settings.housecountselector).html(housecount);
                }
                if (aggregateHouseCount) {
                    aggregateHouses(settings, 0);
                }
            } else {
                return housecount;
            }
        }
    }
    function loadHouseCount(settings, returnCount, addParantes, aggregateHouseCount, queryOneSubregion, override_alert, source) {
        if (typeof SearchCriteria !== 'undefined') {
            if (typeof SearchCriteria.calculateEndDate !== 'function') {
                SearchCriteria = new SearchCriteria(settings);
            }
            // console.log('loadHouseCount..');
            var current_user_settings = getObjectCookie('user_settings');
            if (!current_user_settings) { current_user_settings = default_user_settings; }
            queryOneSubregion = typeof queryOneSubregion !== 'undefined' ? queryOneSubregion : false;
            var sc_enddate = typeof SearchCriteria.calculateEndDate === 'function' ? SearchCriteria.calculateEndDate() : '';
            var hc_params = 'pBureauId=' + settings.search_bid + '&pLanguage=' + site_lang + '&pstartdate=' + SearchCriteria.startdate + '&pEnddate=' + sc_enddate
                + '&pNumberOfWeeks=&pAlternativeQueries=' + encodeURIComponent(SearchCriteria.getAlternativeQuery(queryOneSubregion, true)) + '&pSortByValue=&pSortByOrder='
                + '&pIndexToStartPaging=0&pNumberOfElementsToShow=0&pUrl=&pIPAddress=';
            if (localCache.exist(hc_params)) {
                // console.log('Load cached house count..');
                renderHouseCount(settings, current_user_settings, localCache.get(hc_params), returnCount, addParantes, aggregateHouseCount, override_alert, source);
            } else {
                $.ajax({
                    type: 'GET',
                    cache: false,
                    async: true,
                    beforeSend: function (jqXHR) {
                        $.xhrPool.add(jqXHR, 'loadHouseCount');
                        $(settings.housecountselector).html(getLoaderImage(16, false));
                        if (parseInt(settings.outputtype) === outputType.POST) {
                            if (settings.displayOfAlternativeQueriesSelector !== '') {
                                displayAlternativeQueries(settings);
                            }
                        }
                    },
                    url: '/AshxServices.ashx?sn=ServiceSearch&mn=XML_SearchQuick&cem=1&param=' + encodeURIComponent(hc_params),
                    headers: {
                        //'Cache-Control': 'max-age=' + maxAgeExpiration,
                        'X-Functions-Version': functions_version
                    },
                    success: function (data) {
                        localCache.set(hc_params, data);
                        renderHouseCount(settings, current_user_settings, data, returnCount, addParantes, aggregateHouseCount, override_alert, source);
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                        //console.debug({
                        //    data: 'loadHouseCount',
                        //    status: thrownError,
                        //    jqXHR: xhr
                        //});
                        if (isMobileDevice === 'True') loadOnlyHouseCount(settings, queryOneSubregion); /* uses $.get method instead of $.ajax which are terminated by zerolize event */
                    },
                    complete: function (jqXHR) {
                        $.xhrPool.remove(jqXHR, 'loadHouseCount');
                    }
                });
            }
        } else {
            console.warn('SearchCriteria is mandatory for count function!');
        }
    }
    function loadOnlyHouseCount(settings, queryOneSubregion) {
        // console.log('loadOnlyHouseCount()..');
        queryOneSubregion = typeof queryOneSubregion !== 'undefined' ? queryOneSubregion : false;
        var sc_enddate = typeof SearchCriteria.calculateEndDate === 'function' ? SearchCriteria.calculateEndDate() : '';
        var sb_aq = settings.presetAlternativeQueries !== '' && settings.destination_preset ? settings.presetAlternativeQueries : SearchCriteria.getAlternativeQuery(queryOneSubregion, true);
        var hc_params = 'pBureauId=' + settings.search_bid + '&pLanguage=' + site_lang + '&pstartdate=' + SearchCriteria.startdate + '&pEnddate=' + sc_enddate
            + '&pNumberOfWeeks=&pAlternativeQueries=' + encodeURIComponent(sb_aq) + '&pSortByValue=&pSortByOrder='
            + '&pIndexToStartPaging=0&pNumberOfElementsToShow=0&pUrl=&pIPAddress=';
        $.get('/AshxServices.ashx?sn=ServiceSearch&mn=XML_SearchQuick&cem=0&param=' + encodeURIComponent(hc_params), function (data) {
            $(settings.housecountselector).html($(data).find('results_alternative').text());
        });
    }
    function loadHouseElement(settings, houseid, itemTemplatePath) { /* loads on-demand by click event */
        var aq = "picturetype=" + default_house_result_size;
        var hc_params = 'ItemTemplatePath=' + itemTemplatePath + '&Bid=' + settings.search_bid + '&SiteLanguage=' + site_lang
            + '&HousesIDs=' + houseid + '&AlternativeQueries=' + encodeURIComponent(aq) + '&ReloadCache=' + (getParam('reload') === 'true' ? "True" : "False");
        $.ajax({
            type: 'GET',
            cache: false,
            async: false,
            url: '/ObjectResults.asmx/GetResultObject?' + hc_params,
            data: {
                ItemTemplatePath: itemTemplatePath,
                Bid: settings.search_bid,
                SiteLanguage: site_lang,
                HousesIDs: houseid,
                AlternativeQueries: aq,
                ReloadCache: getParam('reload') === 'true' ? "True" : "False"
            },
            headers: {
                // 'Cache-Control': 'max-age=' + maxAgeExpiration,
                'X-Functions-Version': functions_version
            },
            beforeSend: function (jqXHR) {
                $.xhrPool.add(jqXHR, 'loadHouseElement');
            },
            success: function (data) {
                return data.childNodes[0].textContent;
            },
            error: function (objAJAXRequest, strError) {
                $(settings.infinitybuttonselector).hide();
                if (objAJAXRequest.responseText.indexOf("Missing parameter:") > -1) {
                    console.warn(SearchCriteria);
                }
                return objAJAXRequest.responseText;
            },
            complete: function (jqXHR) {
                $.xhrPool.remove(jqXHR, 'loadHouseElement');
            }
        });
    }
    function loadHouses(settings, append_results, callback) {
        // console.log('loadHouses..');
        if (!$.xhrPool.exists('loadHouses')) {
            var current_user_settings = getObjectCookie('user_settings');
            if (!current_user_settings) current_user_settings = default_user_settings;
            if (current_user_settings.browser_back_mode && !current_user_settings.browser_back_content_loaded) {
                handleBrowserBack(settings, true);
            } else {
                if (append_results) {
                    SearchCriteria.pagenumberindex += 1;
                } else {
                    SearchCriteria.pagenumberindex = 0;
                    $(settings.resulttargetselector + ' .slider_loaded').removeClass('slider_loaded');
                }
                if (SearchCriteria.getAlternativeQuery(false, true).indexOf('region=0') > -1) SearchCriteria.removeAlternativeQuery('region', true); // TODO: should be done more elegantly and dynamically
                sessionStorage.setItem('sb_criterias', JSON.stringify(SearchCriteria));
                var number_of_elements_on_page = parseInt(SearchCriteria.pagesize);
                var index_to_start_search = parseInt(SearchCriteria.pagenumberindex) * number_of_elements_on_page;
                var sc_enddate = typeof SearchCriteria.startdate !== 'undefined' ? SearchCriteria.calculateEndDate() : '';
                var has_extra_sb_loader_container = $('.extra_sb_loader').exists() ? true : false;
                var hc_params = 'TemplatePath=' + settings.resultitemtemplatepath + '&Bid=' + settings.search_bid
                    + '&SiteLanguage=' + site_lang + '&StartDate=' + SearchCriteria.startdate + '&EndDate=' + sc_enddate + '&NumberOfDays=' + SearchCriteria.numberofdays
                    + '&AlternativeQueries=' + encodeURIComponent(SearchCriteria.getAlternativeQuery(false, true))
                    + '&SortByValue=' + SearchCriteria.getSortBy() + '&SortByOrder=' + SearchCriteria.getSortOrder() + '&ShowHouseText=' + settings.showhousetext
                    + '&IndexToStartPaging=' + index_to_start_search + '&NumberOfElementsToShow=' + SearchCriteria.pagesize + '&CacheDurationMinutes=0'
                    + '&AllowAlternativeResults=' + (designtemplatename.toUpperCase() === 'DT1' ? 'false' : 'true');
                // console.log(hc_params);
                $.ajax({
                    type: 'GET',
                    cache: false,
                    async: true,
                    timeout: 20000,
                    beforeSend: function (jqXHR) {
                        $.xhrPool.add(jqXHR, 'loadHouses');
                        isInfinityEventTriggered = true;
                        $(settings.infinitybuttonselector).show().html(getLoaderImage(20, false));
                        if (parseInt(index_to_start_search) === 0) {
                            if ($(settings.housecountselector).exists()) {
                                $(settings.housecountselector).html(getLoaderImage(16, false));
                            }
                            fn_ImgLoaded = []; /* resetting loaded slider array */
                            if (settings.displayOfAlternativeQueriesSelector !== '') {
                                displayAlternativeQueries(settings);
                            }
                        }
                        if (has_extra_sb_loader_container) {
                            $('.extra_sb_loader').show().html(getLoaderImage(20, false));
                        }
                        if (!append_results) {
                            if ($(settings.resulttargetselector).exists()) {
                                $(settings.resulttargetselector).empty();
                            }
                        }
                    },
                    url: '/ObjectResults.asmx/GetResultObjects?' + hc_params,
                    headers: {
                        // 'Cache-Control': 'max-age=' + maxAgeExpiration,
                        'X-Functions-Version': functions_version
                    },
                    success: function (data) {
                        if (data.childNodes[0].textContent !== '') {
                            handleHashedUrl(settings, 'loadHouses()');
                            var decoded_html = $("<div/>", { 'data-page-index': SearchCriteria.pagenumberindex }).html(data.childNodes[0].textContent);
                            $(settings.resulttargetselector).append(decoded_html);
                            var house_result_count = isNumber($('#current_house_count').val()) ? parseInt($('#current_house_count').val()) : 0; /* input field transported via ajax result */
                            if (parseInt(index_to_start_search) === 0) {
                                $(settings.housecountselector).text(house_result_count);
                                if (isOnResultPage()) {
                                    current_user_settings.last_result_count = house_result_count;
                                }
                            }

                            var current_displayed_count = $(settings.resulttargetselector + ' .house_resultat').length;
                            if (parseInt(house_result_count) <= parseInt(current_displayed_count) || parseInt(house_result_count) < parseInt(settings.pagesize) || parseInt(current_displayed_count) === parseInt(house_result_count)) {
                                canScroll(false);
                                $(settings.infinitybuttonselector).hide();
                            } else {
                                $(settings.infinitypagenumberselector).val(parseInt(SearchCriteria.pagenumberindex));
                                setTimeout(function () {
                                    canScroll(true);
                                    $(settings.infinitybuttonselector).show();
                                }, 50);
                            }
                            current_user_settings.result_page_index = parseInt(SearchCriteria.pagenumberindex);
                            setObjectCookie('user_settings', current_user_settings, 'loadHouses().. after ajax without back mode', user_settings_expire_days); /* reset user specific selections */

                            saveCurrentResultPageContent(decoded_html.html(), SearchCriteria, index_to_start_search > 0 ? true : false);
                            if (typeof callback === 'function') {
                                callback();
                            }
                        } else {
                            canScroll(false);
                            $(settings.infinitybuttonselector).hide();
                            if (parseInt(index_to_start_search) === 0) {
                                if ($(settings.housecountselector).exists()) {
                                    $(settings.housecountselector).html("0");
                                }
                                zeroHandler(settings, 'loadHouses');
                                current_user_settings.last_result_count = 0;
                                current_user_settings.result_page_index = 0;
                                setObjectCookie('user_settings', current_user_settings, 'loadHouses().. zeroHandler', user_settings_expire_days); /* reset user specific selections */
                            } else {
                                checkScrollerAndInfinityButton();
                            }
                        }
                    },
                    error: function (jqXHR, textStatus) {
                        $(settings.infinitybuttonselector).hide();
                        if (textStatus === 'timeout') {
                            alert('Request timed out. Please try again!');
                        }
                        if (typeof jqXHR !== 'undefined' && typeof jqXHR.responseText !== 'undefined') {
                            if (jqXHR.responseText.indexOf("Missing parameter:") > -1) {
                                console.warn(SearchCriteria);
                            } else {
                                console.warn(jqXHR.responseText);
                            }
                        }
                        else {
                            console.warn(textStatus);
                        }
                    },
                    complete: function (jqXHR) {
                        current_user_settings.browser_back_mode = false;
                        current_user_settings.browser_back_content_loaded = false; /* remove browser back mode after first load of houses */
                        setObjectCookie('user_settings', current_user_settings, 'loadHouses().. completed..', user_settings_expire_days);
                        releasedBrowserBackMode = true;
                        isInfinityEventTriggered = false;
                        $(settings.infinitybuttonselector).hide();
                        if (has_extra_sb_loader_container) {
                            $('.extra_sb_loader').hide().html('');
                        }
                        $.xhrPool.remove(jqXHR, 'loadHouses');
                    }
                });
                var aq_params = SearchCriteria.getAlternativeQuery(false, true, true), map_aq = encodeURIComponent(aq_params), max_house_count = 1000;
                var pl_params = 'pBureauId=' + settings.search_bid + '&pLanguage=' + site_lang + '&pstartdate=' + SearchCriteria.startdate + '&pEnddate=' + sc_enddate
                    + '&pNumberOfWeeks=&pAlternativeQueries=' + map_aq + '&pSortByValue=' + SearchCriteria.getSortBy() + '&pSortByOrder=' + SearchCriteria.getSortOrder()
                    + '&pIndexToStartPaging=0&pNumberOfElementsToShow=' + max_house_count + '&pUrl=&pIPAddress=';
                /*$.ajax({
                    type: 'GET',
                    async: true,
                    dataType: 'json',
                    url: '/AshxServices.ashx?sn=ServiceSearch&mn=Preload_options&cem=0&param=' + encodeURIComponent(pl_params),
                    timeout: 15000,
                    success: function (data) {
                        setHouseOptions(data);
                    },
                    error: function (objAJAXRequest, strError) {
                        var max_houses_error = '';
                        if (strError === 'timeout') {
                            switch (site_lang) {
                                case 'DK': max_houses_error += 'Vælg en mindre antal sommerhuse at vise på dette kort'; break;
                                case 'DE': max_houses_error += 'Wählen Sie eine kleinere Anzahl von Ferienhäusern, die auf dieser Karte angezeigt werden sollen'; break;
                                case 'NO': max_houses_error += 'Velg et mindre antall feriehus for å vise på dette kartet'; break;
                                case 'SE': max_houses_error += 'Välj ett mindre antal sommarstugor att visa på denna karta'; break;
                                case 'NL': max_houses_error += 'Kies een kleiner aantal vakantiehuizen om op deze kaart te tonen'; break;
                                case 'UK': max_houses_error += 'Choose a smaller number of holiday homes to show on this map'; break;
                            }
                            $('.map_houses_loader').html(max_houses_error).delay(8000).queue(function (n) {
                                $(this).hide(); n();
                            });
                        }
                        //console.warn(objAJAXRequest.responseText + '. ' + strError);
                    }
                });*/
            }
        }
    }

    function setHouseOptions(data) {
        if (data.internet === 0) {
            $("#CheckBox_internet").prop("disabled", true);
        }
        else {
            $("#CheckBox_internet").prop("disabled", false);
        }
        if (data.microwave === 0) {
            $("#CheckBox_microwave").prop("disabled", true);
        }
        else {
            $("#CheckBox_microwave").prop("disabled", false);
        }
        if (data.dishwasher === 0) {
            $("#CheckBox_dishwasher").prop("disabled", true);
        }
        else {
            $("#CheckBox_dishwasher").prop("disabled", false);
        }
        if (data.washingmachine === 0) {
            $("#CheckBox_washingmachine").prop("disabled", true);
        }
        else {
            $("#CheckBox_washingmachine").prop("disabled", false);
        }
        if (data.freezer === 0) {
            $("#CheckBox_freezer").prop("disabled", true);
        }
        else {
            $("#CheckBox_freezer").prop("disabled", false);
        }
        if (data.tumbler === 0) {
            $("#CheckBox_tumbler").prop("disabled", true);
        }
        else {
            $("#CheckBox_tumbler").prop("disabled", false);
        }
        if (data.sauna === 0) {
            $("#CheckBox_sauna").prop("disabled", true);
        }
        else {
            $("#CheckBox_sauna").prop("disabled", false);
        }
        if (data.jacuzzi === 0) {
            $("#CheckBox_jacuzzi").prop("disabled", true);
        }
        else {
            $("#CheckBox_jacuzzi").prop("disabled", false);
        }
        if (data.swimmingpool_type_shared === 0) {
            $("#CheckBox_swimmingpool_not_shared").prop("disabled", true);
        }
        else {
            $("#CheckBox_swimmingpool_not_shared").prop("disabled", false);
        }
        if (data.swimmingpool_type_indoor === 0) {
            $("#CheckBox_swimmingpool_not_outdoor").prop("disabled", true);
        }
        else {
            $("#CheckBox_swimmingpool_not_outdoor").prop("disabled", false);
        }
        if (data.swimmingpool === 0) {
            $("#CheckBox_swimmingpool").prop("disabled", true);
        }
        else {
            $("#CheckBox_swimmingpool").prop("disabled", false);
        }
        if (data.seaview === 0) {
            $("#CheckBox_seaview").prop("disabled", true);
        }
        else {
            $("#CheckBox_seaview").prop("disabled", false);
        }
        if (data.woodburning_stove === 0) {
            $("#CheckBox_woodburning_stove").prop("disabled", true);
        }
        else {
            $("#CheckBox_woodburning_stove").prop("disabled", false);
        }
        if (data.outdoor_toy_equipment === 0) {
            $("#CheckBox_outdoor_toy_equipment").prop("disabled", true);
        }
        else {
            $("#CheckBox_outdoor_toy_equipment").prop("disabled", false);
        }
        if (data.energysafe === 0) {
            $("#CheckBox_energysafe").prop("disabled", true);
        }
        else {
            $("#CheckBox_energysafe").prop("disabled", false);
        }
        if (data.wheelchair === 0) {
            $("#CheckBox_wheelchair").prop("disabled", true);
        }
        else {
            $("#CheckBox_wheelchair").prop("disabled", false);
        }
        if (data.fishing === 0) {
            $("#CheckBox_fishing").prop("disabled", true);
        }
        else {
            $("#CheckBox_fishing").prop("disabled", false);
        }
        if (data.activitycenter === 0) {
            $("#CheckBox_freeactivitycenter").prop("disabled", true);
        }
        else {
            $("#CheckBox_freeactivitycenter").prop("disabled", false);
        }
        if (data.harbor === 0) {
            $("#CheckBox_harbor").prop("disabled", true);
        }
        else {
            $("#CheckBox_harbor").prop("disabled", false);
        }
        if (data.exclusive === 0) {
            $("#CheckBox_exclusive").prop("disabled", true);
        }
        else {
            $("#CheckBox_exclusive").prop("disabled", false);
        }
        if (data.activityroom === 0) {
            $("#CheckBox_activityroom").prop("disabled", true);
        }
        else {
            $("#CheckBox_activityroom").prop("disabled", false);
        }
        if (data.fenchedterrace === 0) {
            $("#CheckBox_fenchedterrace").prop("disabled", true);
        }
        else {
            $("#CheckBox_fenchedterrace").prop("disabled", false);
        }
        if (data.fenchedarea === 0) {
            $("#CheckBox_fenchedarea").prop("disabled", true);
        }
        else {
            $("#CheckBox_fenchedarea").prop("disabled", false);
        }
        $("#Internet_houses").text('(' + data.internet + ')');
        $("#microwave_houses").text('(' + data.microwave + ')');
        $("#dishwasher_houses").text('(' + data.dishwasher + ')');
        $("#washingmachine_houses").text('(' + data.washingmachine + ')');
        $("#freezer_houses").text('(' + data.freezer + ')');
        $("#tumbler_houses").text('(' + data.tumbler + ')');
        $("#sauna_houses").text('(' + data.sauna + ')');
        $("#jacuzzi_houses").text('(' + data.jacuzzi + ')');
        $("#swimmingpool_not_shared_houses").text('(' + data.swimmingpool_type_shared + ')');
        $("#swimmingpool_not_outdoor_houses").text('(' + data.swimmingpool_type_indoor + ')');
        $("#swimmingpool_houses").text('(' + data.swimmingpool + ')');
        $("#seaview_houses").text('(' + data.seaview + ')');
        $("#woodburning_stove_houses").text('(' + data.woodburning_stove + ')');
        $("#outdoor_toy_equipment_houses").text('(' + data.outdoor_toy_equipment + ')');
        if ($("#cbExcludeTownhouse").prop('checked')) {
            $("#cbExcludeApartment_houses").text('(' + data.numberOfSummerhouses + ')');
            if (data.numberOfSummerhouses === 0) {
                $("#cbExcludeApartment").prop("disabled", true);
            }
            else {
                $("#cbExcludeApartment").prop("disabled", false);
            }
        }
        else {
            var val = data.numberOfSummerhouses + data.SummerHouseInCenter;
            $("#cbExcludeApartment_houses").text('(' + val + ')');
            if (val === 0) {
                $("#cbExcludeApartment").prop("disabled", true);
            }
            else {
                $("#cbExcludeApartment").prop("disabled", false);
            }
        }
        if ($("#cbExcludeApartment").prop('checked')) {
            $("#cbExcludeTownhouse_houses").text('(' + data.numberOfSummerhouses + ')');
            if (data.numberOfSummerhouses === 0) {
                $("#cbExcludeTownhouse").prop("disabled", true);
            }
            else {
                $("#cbExcludeTownhouse").prop("disabled", false);
            }
        }
        else {
            var value = data.numberOfSummerhouses + data.Apartment;
            $("#cbExcludeTownhouse_houses").text('(' + value + ')');
            if (value === 0) {
                $("#cbExcludeTownhouse").prop("disabled", true);
            }
            else {
                $("#cbExcludeTownhouse").prop("disabled", false);
            }
        }
        $("#energysafe_houses").text('(' + data.energysafe + ')');
        $("#wheelchair_houses").text('(' + data.wheelchair + ')');
        $("#fishing_houses").text('(' + data.fishing + ')');
        $("#freeactivitycenter_houses").text('(' + data.activitycenter + ')');
        $("#harbor_houses").text('(' + data.harbor + ')');
        $("#exclusive_houses").text('(' + data.exclusive + ')');
        $("#activityroom_houses").text('(' + data.activityroom + ')');
        $("#fenchedterrace_houses").text('(' + data.fenchedterrace + ')');
        $("#fenchedarea_houses").text('(' + data.fenchedarea + ')');
    }
    function loadHousesForMap(settings, gm) {
        var use_cache = false, aq_params = SearchCriteria.getAlternativeQuery(false, true, true), map_aq = encodeURIComponent(aq_params), max_house_count = 1000;
        if (SearchCriteria.startdate === 'NULL') { // map_aq === '' && 
            use_cache = true;
        }
        setMapOnAll(null);
        houseResultMarkers = [];
        var sc_enddate = isValidDate(SearchCriteria.calculateEndDate()) ? SearchCriteria.calculateEndDate() : '';
        var hc_params = 'pBureauId=' + settings.search_bid + '&pLanguage=' + site_lang + '&pstartdate=' + SearchCriteria.startdate + '&pEnddate=' + sc_enddate
            + '&pNumberOfWeeks=&pAlternativeQueries=' + map_aq + '&pSortByValue=' + SearchCriteria.getSortBy() + '&pSortByOrder=' + SearchCriteria.getSortOrder()
            + '&pIndexToStartPaging=0&pNumberOfElementsToShow=' + max_house_count + '&pUrl=&pIPAddress=';
        $.ajax({
            type: 'GET',
            cache: use_cache,
            async: true,
            url: '/AshxServices.ashx?sn=ServiceSearch&mn=XML_SearchQuick&cem=0&param=' + encodeURIComponent(hc_params),
            timeout: 15000,
            headers: {
                'Cache-Control': 'max-age=' + maxAgeExpiration,
                'X-Functions-Version': functions_version
            },
            beforeSend: function (jqXHR) {
                $.xhrPool.add(jqXHR, 'loadHousesForMap');
                var max_houses_text = '', msg_box_height = 40;
                var max_map_aq = cleanHashParameters(aq_params);
                $('#max_results_msg').remove();
                if (max_map_aq === '') {
                    msg_box_height = 120;
                    max_houses_text = '<p style="font-size:12px;">';
                    switch (site_lang) {
                        case 'DK': max_houses_text += '<br />Der kan max vises ' + max_house_count + ' sommerhuse på dette kort'; break;
                        case 'DE': max_houses_text += '<br />Es können maximal ' + max_house_count + ' Ferienhäuser auf dieser Karte angezeigt werden'; break;
                        case 'NO': max_houses_text += '<br />Det kan maks vises ' + max_house_count + ' feriehus på dette kartet'; break;
                        case 'SE': max_houses_text += '<br />Max. ' + max_house_count + ' sommarstugor kan visas på denna karta'; break;
                        case 'NL': max_houses_text += '<br />Deze kaart kan maximaal ' + max_house_count + ' vakantiehuizen tonen'; break;
                        case 'UK': max_houses_text += '<br />There can only be shown a maximum of ' + max_house_count + ' holiday homes on this map'; break;
                    }
                    max_houses_text += '</p>';
                }
                var map_loader = $('<div />', {
                    'class': 'map_houses_loader',
                    style: 'position: absolute; border: solid 1px #000; border-radius: 5px; background-color:#fff; height: auto; width: 200px; margin: -20px 0 0 -100px; top: 50%; left: 55%; z-index:500; opacity: 0.7; text-align: center; padding: 10px;'
                }).html(getLoaderImage(20, false) + '' + max_houses_text);
                $('#map_container').before(map_loader);
            },
            success: function (data) {
                var housecount = parseInt($(data).find('results_alternative').text());
                if (housecount > max_house_count) {
                    var max_houses_text = '';
                    switch (site_lang) {
                        case 'DK': max_houses_text += 'Der kan max vises ' + max_house_count + ' sommerhuse på dette kort'; break;
                        case 'DE': max_houses_text += 'Es können maximal ' + max_house_count + ' Ferienhäuser auf dieser Karte angezeigt werden'; break;
                        case 'NO': max_houses_text += 'Det kan maks vises ' + max_house_count + ' feriehus på dette kartet'; break;
                        case 'SE': max_houses_text += 'Max. ' + max_house_count + ' sommarstugor kan visas på denna karta'; break;
                        case 'NL': max_houses_text += 'Deze kaart kan maximaal ' + max_house_count + ' vakantiehuizen tonen'; break;
                        case 'UK': max_houses_text += 'There can only be shown a maximum of ' + max_house_count + ' holiday homes on this map'; break;
                    }
                    $('#max_results_msg').remove();
                    $('#map_container').before(
                        $('<div />', { id: 'max_results_msg' }).text(max_houses_text)
                    );
                }
                $('.map_houses_loader').remove();
                $(data).find('house').each(function (i, element) {
                    houseElementInfoWindowOnMap(element, gm, 'gmhouse');
                });
                $(gm).unbind('click').on('click', function () {
                    for (var i = 0; i < infoWindows.length; i++) {
                        if (infoWindows[i]) {
                            infoWindows[i].close();
                        }
                    }
                });
            },
            error: function (objAJAXRequest, strError) {
                var max_houses_error = '';
                if (strError === 'timeout') {
                    switch (site_lang) {
                        case 'DK': max_houses_error += 'Vælg en mindre antal sommerhuse at vise på dette kort'; break;
                        case 'DE': max_houses_error += 'Wählen Sie eine kleinere Anzahl von Ferienhäusern, die auf dieser Karte angezeigt werden sollen'; break;
                        case 'NO': max_houses_error += 'Velg et mindre antall feriehus for å vise på dette kartet'; break;
                        case 'SE': max_houses_error += 'Välj ett mindre antal sommarstugor att visa på denna karta'; break;
                        case 'NL': max_houses_error += 'Kies een kleiner aantal vakantiehuizen om op deze kaart te tonen'; break;
                        case 'UK': max_houses_error += 'Choose a smaller number of holiday homes to show on this map'; break;
                    }
                    $('.map_houses_loader').html(max_houses_error).delay(8000).queue(function (n) {
                        $(this).hide(); n();
                    });
                }
                //console.warn(objAJAXRequest.responseText + '. ' + strError);
            },
            complete: function (jqXHR) {
                $.xhrPool.remove(jqXHR, 'loadHousesForMap');
            }
        });
    }
    function resetSprite(settings) {
        $('#areasopenbutton').hide();
        changeRegion(settings, 0);
        displayAlternativeQueries(settings);
        updateCookiestartdate('destination', '0');
        updateCookiestartdate('subregion', '0');
        updateCookiestartdate('region', '0');
    }
    function createAreaMappings(settings, e) {
        $("#OverlayMap").empty();
        var area_id = isNumber(e) ? parseInt(e) : 0;
        if (arrRegion.length === 0) getRegionNames(jquery_search_sitebid, site_lang);
        switch (area_id) {
            case 0: createAreaMapElements(settings,
                new Array(
                    new Array("poly", "6,99,16,109,31,74,95,65,110,24,125,14,120,11,104,25,90,23,66,65,45,63,23,69", "r", "1"),
                    new Array("poly", "20,245,29,261,53,266,53,145,13,129,4,111,1,159,5,178,2,204,16,220", "r", "2"),
                    new Array("poly", "52,147,77,122,103,79,112,76,94,63,30,72,17,103,22,114,4,109,9,131", "r", "3"),
                    new Array("poly", "107,82,120,51,120,38,114,29,117,19,110,22,95,62,104,76,76,122,111,106", "r", "4"),
                    new Array("poly", "151,47,151,44,159,54,149,62,139,59,135,51", "r", "4"),
                    new Array("poly", "118,154,131,153,141,124,137,118,115,118,112,102,75,119,105,152,108,146,112,149", "r", "5"),
                    new Array("poly", "76,119,52,144,53,265,61,271,77,264,83,268,83,263,100,265,98,255,84,248,70,253,73,249,73,239,79,238,81,234,77,220,80,211,89,201,82,199,78,193,83,195,95,193,99,189,97,182,90,181,98,177,104,179,108,173,109,162,106,151", "r", "6"),
                    new Array("poly", "133,278,144,244,127,201,108,200,84,207,89,231,108,261", "r", "7"),
                    new Array("poly", "198,290,198,280,214,255,226,256,223,247,208,244,197,256,184,257,177,266,162,255,147,259,147,271,172,287,186,282", "r", "8"),
                    new Array("poly", "205,251,206,241,202,236,214,229,219,219,208,213,209,202,216,196,224,199,230,195,221,167,224,159,215,153,206,151,186,164,189,177,182,182,178,172,183,168,175,167,159,166,168,171,169,177,162,178,159,186,140,187,152,203,155,219,157,235,184,239,184,246,192,252", "r", "9"),
                    new Array("poly", "194,86,214,96,218,84,209,77,198,69,194,77", "r", "95")
                ));
                break;
            case 1: createAreaMapElements(settings,
                new Array(
                    new Array("poly", "136,137,134,148,193,146,193,136", "1", "42"),
                    new Array("poly", "143,118,140,128,193,128,196,118", "1", "40"),
                    new Array("poly", "147,98,143,119,196,119,197,103", "1", "39"),
                    new Array("poly", "157,79,148,99,200,104,202,85", "1", "38"),
                    new Array("poly", "52,189,54,198,189,155,190,148,193,144,133,145,116,163,102,171,70,174", "1", "43"),
                    new Array("poly", "139,128,138,137,194,137,194,128", "1", "41"),
                    new Array("poly", "189,56,204,64,206,53,236,20,228,15", "1", "36"),
                    new Array("poly", "162,64,158,81,199,86,207,65,191,57", "1", "37"),
                    new Array("poly", "8,280,4,269,23,287,44,201,52,198,53,189,30,188,8,235,0,273", "1", "44")
                ));
                break;
            case 2: createAreaMapElements(settings,
                new Array(
                    new Array("poly", "65,121,70,128,60,140,55,117,52,103,59,114,62,130", "2", "49"),
                    new Array("poly", "71,177,56,178,54,184,78,198,79,192,70,182", "2", "52"),
                    new Array("poly", "88,200,86,196,81,201,91,218,99,221,95,202", "2", "53"),
                    new Array("poly", "55,180,67,178,162,170,158,126,58,136,62,147", "2", "51"),
                    new Array("poly", "121,249,117,271,124,297,173,297,163,170,77,176,75,183,91,200,110,203", "2", "55"),
                    new Array("poly", "48,88,54,104,155,95,155,83,66,90", "2", "48"),
                    new Array("poly", "103,271,109,264,108,252,111,244,101,244,98,263", "2", "54"),
                    new Array("poly", "51,77,154,69,153,55,64,31,60,25,47,25", "2", "46"),
                    new Array("poly", "78,123,64,135,159,127,155,96,70,103,79,115", "2", "50"),
                    new Array("poly", "55,86,64,91,155,82,152,67,50,76,49,92", "2", "47"),
                    new Array("poly", "47,26,59,25,47,0,45,12", "2", "45")
                ));
                break;
            case 3: createAreaMapElements(settings,
                new Array(
                    new Array("poly", "125,146,118,158,113,173,114,187,159,208,174,181,179,184,204,124,116,139", "3", "57"),
                    new Array("poly", "7,171,0,193,21,233,65,242,62,177,80,145,80,99,97,88,94,78,45,93,28,175,50,197,14,193", "3", "59"),
                    new Array("poly", "109,184,109,171,117,153,110,145,100,126,88,131,89,139,80,149,72,177,61,181,74,196,74,210,60,213,66,242,129,252,159,208", "3", "58"),
                    new Array("poly", "117,139,204,124,226,71,234,72,232,62,199,44,96,76,97,86,108,91,118,91,108,114,117,122,112,130", "3", "56")
                ));
                break;
            case 4: createAreaMapElements(settings,
                new Array(
                    new Array("poly", "164,0,143,10,128,40,165,59,157,41,150,22", "4", "60"), /*Bratten/Fredikshavn*/
                    new Array("poly", "129,41,94,107,144,132,158,118,158,89,159,69,165,60", "4", "61"), /*Lyngså/Sæby*/
                    new Array("poly", "93,107,80,134,114,170,113,178,119,181,131,154,135,139,145,131", "4", "62"), /*Hou/Hals*/
                    new Array("poly", "101,181,4,294,112,262,111,252,105,224,108,193,114,183", "4", "63"), /*Øster Hurup*/
                    new Array("poly", "231,95,205,97,185,111,189,120,202,127,212,128,217,114,216,105,231,106", "4", "86") /*Læsø*/
                )); /*Nordøstjylland*/
                break;
            case 5: createAreaMapElements(settings,
                new Array(
                    new Array("poly", "177,200,191,217,199,192,230,143,204,143,204,108,157,108,157,185,166,195,176,187,185,191", "5", "66"),
                    new Array("poly", "217,93,202,85,156,97,135,90,127,74,127,38,2,96,10,109,119,109,228,109,218,101", "5", "64"),
                    new Array("poly", "140,168,153,178,128,197,135,210,157,207,149,217,158,228,169,226,160,208,167,194,157,188,157,109,12,109,104,215,109,203", "5", "67"),
                    new Array("poly", "226,108,203,109,203,144,228,144,228,127,236,119", "5", "65")
                ));
                break;
            case 6: createAreaMapElements(settings,
                new Array(
                    new Array("poly", "84,259,89,269,97,269,94,276,95,288,110,297,125,293,119,274,110,266,96,254", "6", "71"),
                    new Array("poly", "52,121,108,128,121,153,104,147,108,160,120,161,109,172,105,172,104,180,99,176,95,179,98,188,93,193,87,193,89,198,88,206,91,208,91,216,73,212,41,206", "6", "69"),
                    new Array("poly", "118,151,198,144,210,119,196,107,168,93,165,76,117,4,112,4,64,43,54,121,107,128", "6", "68"),
                    new Array("poly", "54,293,63,294,69,287,74,289,77,284,84,290,81,293,85,293,89,298,93,295,90,288,94,288,93,272,80,264,79,259,68,263,62,258,71,257,76,253,74,247,69,244,75,241,83,233,86,238,93,234,96,222,75,212,42,206,31,284,39,290,38,296,50,297", "6", "70")
                ));
                break;
            case 7: createAreaMapElements(settings,
                new Array(
                    new Array("poly", "188,293,171,259,183,234,202,211,227,152,232,160,225,204,211,230,197,292", "7", "76"),
                    new Array("poly", "32,34,36,49,49,49,67,36,97,21,98,76,14,76,3,56,2,47,14,50,17,40", "7", "72"),
                    new Array("poly", "168,12,193,55,178,65,196,85,213,113,209,116,204,112,181,112,98,69,99,20,114,11,165,42,164,16", "7", "73"),
                    new Array("poly", "24,76,19,96,39,136,58,168,75,183,89,202,101,190,107,180,161,104,98,69,97,76", "7", "74"),
                    new Array("poly", "104,187,98,219,140,269,161,257,175,239,186,213,208,139,202,113,177,114,163,104", "7", "75")
                )); /*Fyn*/
                break;
            case 8: createAreaMapElements(settings,
                new Array(
                    new Array("poly", "153,203,152,167,177,134,171,120,153,118,149,108,127,103,111,105,119,128,138,162,137,180,144,200", "8", "78"),
                    new Array("poly", "78,195,97,181,129,185,135,173,134,151,123,143,124,136,101,118,86,94,47,106,22,109,9,123,13,139,2,142,6,158,45,170", "8", "77"),
                    new Array("poly", "150,106,172,94,190,92,189,84,179,80,183,75,226,86,232,94,231,104,207,97,191,108,182,122,163,115", "8", "79")
                ));
                break;
            case 9: createAreaMapElements(settings,
                new Array(
                    new Array("poly", "74,62,56,61,48,50,62,57,84,60,93,63,106,55,111,59,105,65,107,73,97,70,103,89,116,91,124,107,124,119,25,119,14,112,2,108,24,108,38,104,59,101,62,88,76,82", "9", "81"),
                    new Array("poly", "146,97,204,73,197,61,201,50,207,41,209,35,194,26,184,26,169,19,149,27,116,55,116,63,132,57,137,58,144,76,138,80,136,70,129,63,122,66,132,79,129,88,120,88,118,104,122,106,134,106,144,104", "9", "80"),
                    new Array("poly", "87,118,88,223,50,223,48,204,30,190,44,182,40,166,28,155,36,145,33,134,22,127,9,125,11,121,27,124,24,118", "9", "83"),
                    new Array("poly", "186,174,195,185,197,200,186,208,157,223,165,238,160,249,164,262,151,271,131,263,97,245,120,250,98,224,86,221,86,120,124,117,123,106,135,107,146,114,151,98,202,72,209,89,214,115,219,125,219,132,208,137,200,130,186,129,167,142,165,169", "9", "82")
                ));
                break;
            case 95: createAreaMapElements(settings,
                new Array(
                    new Array("poly", "99,238,217,182,220,161,212,148,201,146,163,124,147,111,136,92,126,100,73,66,47,32,38,41,38,60,22,100,18,110,18,166,18,183,13,191,30,203,57,221", "95", "85"),
                    new Array("poly", "100,238,219,183,224,196,216,216,204,231,209,238,207,250,192,268,167,265,139,261", "95", "84")
                ));
                break;
        }
    }
    function createAreaMapElements(settings, e) {
        for (var t = 0; t < e.length; t++) {
            var n = getObjectById(arrRegion, parseInt(e[t][3])) ? getObjectById(arrRegion, parseInt(e[t][3])).name : "";
            if (parseInt(e[t][3]) === 86 && n === " ") n = 'Læsø'; /* 28/04-2015: MHN : Temporary fix */
            var isregion = e[t][2] === "r" ? true : false;
            var i = $("<area />", {
                'class': 'overlay-tooltip',
                title: n,
                alt: n,
                subregion: e[t][3],
                region: isregion ? 0 : parseInt(e[t][2]),
                shape: e[t][0],
                coords: typeof e[t][1] !== 'undefined' ? e[t][1] : '0,0,0,0'
            });
            $(i).on('click', function (e) { /* handling both desktop and mobile devices */
                e.preventDefault(); // for proper click handling on tablets
                var region_id = parseInt($(this).attr("region"));
                var subregion_id = parseInt($(this).attr("subregion"));
                var n = region_id > 0 ? region_id + "_" + subregion_id : subregion_id + "_UP";
                var r = getObjectById(arrRegion, subregion_id) ? getObjectById(arrRegion, subregion_id).name : " ";
                if (parseInt(region_id) === 0) {
                    changeRegion(settings, subregion_id);
                } else {
                    changeSubRegion(settings, subregion_id, region_id);
                }
            }).on("mouseenter", function (e) {
                if (isDesktop) {
                    e.preventDefault();
                    var r = parseInt($(this).attr("region"));
                    var t = parseInt($(this).attr("subregion"));
                    var n = r > 0 ? r + "_" + t : t + "_UP";
                    if (!$("#overlayimg").hasClass("DK_" + n)) {
                        $("#overlayimg").addClass("sprite DK_" + n);
                    }
                }
            }).on("mouseleave", function (e) {
                e.preventDefault();
                var r = parseInt($(this).attr("region"));
                var t = parseInt($(this).attr("subregion"));
                var n = r > 0 ? r + "_" + t : t + "_UP";
                if ($("#overlayimg").hasClass("DK_" + n)) {
                    $("#overlayimg").removeClass();
                }
            });
            if ($("#OverlayMap").exists()) {
                $("#OverlayMap").append(i);
            } else {
                if (settings.activateMap) {
                    console.warn("Map container (OverlayMap) does not exists!");
                }
            }
        }
    }
    function clearArealist(settings, r) {
        $("#areasclicked li[class='subregion']").each(function () {
            var sr = parseInt($(this).attr('data-id'));
            if ($("#clickedoverlays div[id='subregion" + sr + "']").is(":visible")) {
                $("#clickedoverlays div[id='subregion" + sr + "']").remove();
            }
            $(this).remove();
        });
        if (isNumber(settings.region)) {
            settings.housecountselector = '#region_' + settings.region + '_count';
            loadHouseCount(settings, true, true, true, false, false, 'clearArealist');
        }
    }
    function aggregateHouses(settings, region_count) {
        var result = 0, areas_selected = 0;
        $(".sr_count").each(function (index, element) {
            result += parseInt($(this).text());
            areas_selected++;
        });
        if (parseInt(result) === 0) {
            if (parseInt(areas_selected) === 0) {
                if (parseInt(region_count) === 0) {
                    result = parseInt($('.region_count_total').text());
                } else {
                    result = region_count;
                }
            } else {
                result = 0;
            }
        }
        if (result > 0) {
            $('#total_house_count_container').text(result);
        } else {
            if (areas_selected > 0) {
                $('#total_house_count_container').text('-');
            } else {
                $('#total_house_count_container').text('');
            }
        }
        if (areas_selected > 0) {
            $('.region_count_total').addClass('faded');
        } else {
            $('.region_count_total').removeClass().addClass('region_count_total');
        }
        loadHouseCount(settings, true, false, false, false, false, 'aggregateHouses');
    }
    function updateOverlayCounts(regionid) {
        if (typeof regionid !== 'undefined') {
            settings.housecountselector = '#region_' + regionid + '_count';
            loadHouseCount(settings, true, true, true, false, false, 'updateOverlayCounts, region');
            $(".sr_count").each(function () {
                var sr_id = $(this).attr('data-id');
                settings.housecountselector = '#subregion_' + sr_id + '_count';
                loadHouseCount(settings, true, true, true, false, false, 'updateOverlayCounts, subregion');
            });
        }
    }
    function getRegionObject(e) { return getObjectById(arrRegion, e); }
    function getDestinationObject(e) { return getObjectById(arrDestination, e); }
    function getObjectById(e, t) { for (var i = 0; i < e.length; i++) { if (e[i].id === t) { return e[i]; } } }
    function setSubregionOnLoad(subregionValue) {
        var regionid = parseInt($('select[id$="DropDownList_region"]').val());
        $('input[id$="TextBox_subregion"]').val(regionid);
        try {
            fillSubregions(getSubregions(regionid));
            fillDestinations(getDestinations(regionid), 0);
        } catch (e) {
            /* do nothing */
        }
        if (subregionValue !== null) {
            $('input[id$="TextBox_subregion"]').val(0);
        }
    }
    function loadMapBySubregions(settings, region_id) {
        loadMapByArea(settings, region_id, null, null, false);
        if (SearchCriteria.subregionlist.length > 0) {
            for (var i = 0; i < SearchCriteria.subregionlist.length; i++) {
                var rName = getObjectById(arrRegion, SearchCriteria.subregionlist[i]) ? getObjectById(arrRegion, SearchCriteria.subregionlist[i]).name : '';
                var rOverlayName = region_id > 0 ? region_id + '_' + SearchCriteria.subregionlist[i] : SearchCriteria.subregionlist[i] + '_UP';
                $('#clickedoverlays').append(
                    $('<div />', {
                        id: 'subregion' + SearchCriteria.subregionlist[i],
                        title: rName
                    }).addClass('sprite').addClass('DK_' + rOverlayName)
                );
            }
        }
    }
    function loadMapByArea(settings, region_id, subregion_id, destination_id, allow_removal) {
        var _allow_removal = typeof allow_removal !== 'undefined' ? allow_removal : true;
        if (settings.use_overlay_map) {
            if (isNumber(destination_id)) {
                if (parseInt(destination_id) === 0) {
                    loadMapByArea(settings, region_id, subregion_id, null, false);
                } else {
                    if (SearchCriteria.subregionlist.length > 0) {
                        for (var i = 0; i < SearchCriteria.subregionlist.length; i++) {
                            loadMapByArea(settings, region_id, SearchCriteria.subregionlist[i], null, false);
                        }
                    } else {
                        loadMapByArea(settings, region_id, null, null, false);
                    }
                }
            } else if (isNumber(subregion_id)) {
                $('#clickedoverlays').empty();
                createAreaMappings(settings, region_id);
                if (_allow_removal) {
                    if ($('#clickedoverlays div#subregion' + subregion_id).exists()) {
                        $('#clickedoverlays div#subregion' + subregion_id).remove();
                    } else {
                        $('#baseimg').removeClass().addClass('sprite DK_' + region_id);
                        var r_subName = getObjectById(arrRegion, subregion_id) ? getObjectById(arrRegion, subregion_id).name : '';
                        var r_subOverlayName = region_id > 0 ? region_id + '_' + subregion_id : subregion_id + '_UP';
                        $('#clickedoverlays').append(
                            $('<div />', {
                                id: 'subregion' + subregion_id,
                                title: r_subName
                            }).addClass('sprite').addClass('DK_' + r_subOverlayName)
                        );
                    }
                } else {
                    loadMapByArea(settings, region_id, null, null, false);
                    var rName = getObjectById(arrRegion, subregion_id) ? getObjectById(arrRegion, subregion_id).name : '';
                    var rOverlayName = region_id > 0 ? region_id + '_' + subregion_id : subregion_id + '_UP';
                    $('#clickedoverlays').append(
                        $('<div />', {
                            id: 'subregion' + subregion_id,
                            title: rName
                        }).addClass('sprite').addClass('DK_' + rOverlayName)
                    );
                }
            } else if (subregion_id instanceof Array) {
                // console.log('subregion list exists..');
            } else if (isNumber(region_id)) {
                $('#clickedoverlays').empty();
                createAreaMappings(settings, region_id);
                $('#baseimg').removeClass().addClass('sprite DK_' + region_id);
                $('#overlayimg').removeClass();
            } else {
                $('#clickedoverlays').empty();
                createAreaMappings(settings, 0);
                $('#baseimg').removeClass().addClass('sprite DK_0');
                $('#overlayimg').removeClass();
            }
        }
    }
    function changeRegion(settings, region_id) {
        SearchCriteria.region = isNumber(region_id) ? region_id : 0;
        SearchCriteria.addAlternativeQuery('region', region_id);
        SearchCriteria.removeAllSubregions();
        SearchCriteria.destination = 0;
        SearchCriteria.removeAlternativeQuery('destination');
        if (parseInt(region_id) === 0) {
            if (settings.region_select !== null) settings.region_select.resetItem(0);
            if (settings.subregion_select !== null) settings.subregion_select.showAll(true, true);
            if (settings.destination_select !== null) settings.destination_select.showAll(true, true);
            loadMapByArea(settings, 0, null, null);
            $("#search_location").val('');
            
        } else {
            if (settings.region_select !== null) settings.region_select.selectItem(region_id.toString());
            if (settings.subregion_select !== null) settings.subregion_select.showAll(true, true, 'data-region', region_id);
            if (settings.destination_preset) {
                if (settings.destination_select !== null) settings.destination_select.showAll(true, true, 'data-region', region_id);
            }
            loadMapByArea(settings, region_id, null, null);
        }
        if (document.location.href.indexOf('usecookie=no') === -1) {
            setcookie(search_cookie_name, SearchCriteria.getAlternativeQuery(false), 7, '/');
        }
        var region_geo = getRegionGeo(region_id);
        if (region_geo) {
            var us = getObjectCookie('user_settings');
            us.show_map_lat = region_geo.lat;
            us.show_map_lng = region_geo.lng;
            us.show_map_zoom = region_geo.zoom;
            setObjectCookie('user_settings', us, 'changeRegion()', user_settings_expire_days);
        }
        $("#search_location").val($('select[id$="DropDownList_region"]')[0].msl.placeholder);
        $("#mobile_location_closebtn_inner").text($('select[id$="DropDownList_region"]')[0].msl.placeholder);
        outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
        if (parseInt(region_id) === 0) {
            switch (site_lang) {
                case 'DK': AllRegions_text = 'hele Danmark'; break;
                case 'DE': AllRegions_text = 'Ganz Dänemark'; break;
                case 'SE': AllRegions_text = 'alla regioner'; break;
                case 'NO': AllRegions_text = 'alle regioner'; break;
                case 'UK': AllRegions_text = 'all regions'; break;
                case 'NL': AllRegions_text = 'heel Denemarken'; break;
            }
            $('#mobile_location_closebtn_inner').text(AllRegions_text);
        }
    }
    function changeSubRegion(settings, id, region_id, initial_load) {
        // console.log('Subregion: ' + id);
        var subregion_added = false;
        //if (parseInt(id) === 0) {
            subregion_added = true;
            SearchCriteria.removeAllSubregions();
            SearchCriteria.destination = 0;
            SearchCriteria.removeAlternativeQuery('destination');
            var selected_region_id = parseInt($('.msl_region ul.options li.selected').attr('data-id'));
            if (selected_region_id !== 0) {
                SearchCriteria.addRegion(selected_region_id);
                if (settings.region_select !== null) settings.region_select.selectItem(selected_region_id.toString());
            }
            if (settings.subregion_select !== null) settings.subregion_select.showAll(true, true, 'data-region', SearchCriteria.region);
            if (settings.destination_preset) {
                if (settings.destination_select !== null) settings.destination_select.showAll(true, true, 'data-region', SearchCriteria.region);
            }
            if (settings.subregion_select !== null) settings.subregion_select.hideOpts();
            $('.msl_subregion .captioncont').removeClass('dd_selected');
            loadMapByArea(settings, SearchCriteria.region, null, null);
        //} else {
            initial_load = typeof initial_load !== 'undefined' ? initial_load : false;
            if (SearchCriteria.containsSubregion(parseInt(id)) || initial_load) {
                var pre_subregion_count = SearchCriteria.subregionlist.length; /* load count before anything else */
                SearchCriteria.removeSubregion(parseInt(id));
                loadMapByArea(settings, SearchCriteria.region, id, null, true);
                if (settings.subregion_select !== null) settings.subregion_select.unSelectItemById(parseInt(id));
                if (parseInt(pre_subregion_count) === 1) {
                    SearchCriteria.removeAllSubregions();
                    if (settings.subregion_select !== null) settings.subregion_select.showAll(true, true, 'data-region', SearchCriteria.region);
                    if (settings.destination_preset) {
                        if (settings.destination_select !== null) settings.destination_select.showAll(true, true, 'data-region', SearchCriteria.region);
                    }
                } else {
                    if (settings.destination_preset) {
                        if (settings.destination_select !== null) settings.destination_select.showAll(true, true, 'data-subregion', SearchCriteria.subregionlist);
                    }
                }
                if (SearchCriteria.subregionlist.length === 0) {
                    $("#search_location").val($("#DropDownList_region").val());
                    $("#mobile_location_closebtn_inner").text($("#DropDownList_region").val());
                    
                }
            } else {
                subregion_added = true;
                /* setting the nessesaries value while selecting a subregion */
                SearchCriteria.addSubregion(id);
                if (settings.subregion_select !== null) settings.subregion_select.showAll(false, false, 'data-region', region_id);
                if (settings.subregion_select !== null) settings.subregion_select.unSelectItem(0);
                if (settings.subregion_select !== null) settings.subregion_select.selectItem(id.toString());

                if (settings.region_select !== null) { SearchCriteria.region = region_id; settings.region_select.selectItem(region_id.toString()); } /* $('.msl_region .captioncont').addClass('dd_selected'); */
                loadMapByArea(settings, region_id, id, null);
                if (settings.destination_preset) {
                    if (settings.destination_select !== null) settings.destination_select.showAll(true, true, 'data-subregion', SearchCriteria.subregionlist);
                }
                SearchCriteria.removeAlternativeQuery('destination'); /* hvis subregion bliver valgt, fjernes destination/er fra alternativ queries */
            }
        //}
        if (document.location.href.indexOf('usecookie=no') === -1) {
            setcookie(search_cookie_name, SearchCriteria.getAlternativeQuery(false), 7, '/');
        }
        $("#search_location").val($('select[id$="DropDownList_subregion"]')[0].msl.placeholder);
        $("#searcblock_backarrow_destination_span").text($('select[id$="DropDownList_region"]')[0].msl.placeholder);
        $("#mobile_location_closebtn_inner").text($('select[id$="DropDownList_subregion"]')[0].msl.placeholder);
        outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
    }

    function changeDestination(settings, destination_id, subregion_id, region_id) {
        if (parseInt(destination_id) === 0) {
            SearchCriteria.destination = 0;
            
        } else {
            SearchCriteria.destination = destination_id;
            if (settings.destination_preset) {
                if (settings.region_select !== null) settings.region_select.selectItem(region_id.toString());
                SearchCriteria.addRegion(parseInt(region_id));
                if (!SearchCriteria.containsSubregion(parseInt(subregion_id))) {
                    SearchCriteria.addSubregion(parseInt(subregion_id));
                }
                if (settings.subregion_select !== null) {
                    settings.subregion_select.unSelectItem(0);
                    settings.subregion_select.selectItem(subregion_id.toString());
                    settings.subregion_select.showAll(false, false, 'data-region', region_id);
                }
                if (settings.destination_select !== null) settings.destination_select.showAll(true, true, 'data-subregion', SearchCriteria.subregionlist);
            }
            SearchCriteria.addAlternativeQuery('destination', destination_id);
            if (settings.destination_select !== null) settings.destination_select.selectItem(destination_id.toString());
            loadMapByArea(settings, region_id, subregion_id, destination_id, true);
        }
        if (document.location.href.indexOf('usecookie=no') === -1) {
            setcookie(search_cookie_name, SearchCriteria.getAlternativeQuery(false), 7, '/');
        }
        outputHandler(parseInt(settings.outputtype), settings, SearchCriteria);
    }
    function removeAlternativeQueryItem(settings, name, source) {
        $(search_house_container + ' .slider_loaded').removeClass('slider_loaded'); /* removes all preloaded house photo galleries */
        var aq_type = $('*[name="' + name + '"]').attr('data-handler');
        //console.log('AQ type: ' + aq_type + ' - ' + name);
        switch (aq_type) {
            case 'dropdown':
                if (name !== 'numberofdays') {
                    $('select[data-handler="' + aq_type + '"][name="' + name + '"]').val($('select[name="' + name + '"] option:first-child').val()).trigger('change');
                    SearchCriteria[name] = $('select[name="' + name + '"] option:first-child').val();
                    //SearchCriteria.removeAlternativeQuery(name);
                } else {
                    $('select[data-handler="' + aq_type + '"][name="' + name + '"]').val(settings.numberofdays).trigger('change');
                    SearchCriteria.numberofdays = parseInt(settings.numberofdays);
                }
                break;
            case 'checkbox':
                $('input[data-handler="' + aq_type + '"][name="' + name + '"]').trigger('click');
                break;
            case 'startdate':
                $('input[data-handler="' + aq_type + '"][name="' + name + '"]').removeClass('dd_selected').val(notSetText).trigger('change');
                $('select[name="numberofdays"]').removeClass('dd_selected');
                $('#daysSelDate').hide();
                $('input[name="discount"]').hide();
                break;
            case 'jacuzzi':
                $('input[data-handler="jacuzzi"][name="jacuzzi"]').trigger('click');
                break;
            default:
                switch (name) {
                    case 'region': changeRegion(settings, 0); break;
                    case 'subregion': changeSubRegion(settings, 0, SearchCriteria.region, false); break;
                    case 'destination': changeDestination(settings, 0, null, null); break;
                }
                break;
        }
        $('#aq_remove_' + name).attr('mode', 'isdirty');
        SearchCriteria.removeAlternativeQuery(name);
        switch (name) {
            case 'swimmingpool':
                /* only targeted swimmingpool and jacuzzi to avoid double loadHouses firing */
                $('input[data-handler="swimmingpool"][name="swimmingpool"]').trigger('click');
                break;
        }
        bindWindowScroller(settings);
    }
    function renderAlternativeQueryItem(settings, name, value) {
        var aq_container = $('<span />', {
            'class': 'aq_item_container'
        });
        if (name === 'reset') {
            var reset_btn_clicked = false;
            var $aq_reset = $('<span />', { 'class': 'aq_item aq_item_reset', 'id': 'aq_reset_all' }).text(resetButtonText).append(
                $('<img />', {
                    'class': 'aq_remove aq_' + name,
                    'data-name': name,
                    'src': '//images.sologstrand.dk/images/ikoner/blank_1x13.png'
                })
            );
            $(aq_container).append($aq_reset);
            $(settings.displayOfAlternativeQueriesSelector).on('click', '#aq_reset_all', function (e) {
                $('*[data-handler="zerolize"]').trigger('click');
            });
        } else {
            var aq_item = $('<span />', { 'class': 'aq_item' }).text(value);
            if (name === 'numberofdays' && value.indexOf('7 ') > -1 || name === 'lat' || name === 'lng' || name === 'radius') {
                $(aq_item).append(
                    $('<img />', {
                        'id': 'aq_remove_' + name,
                        'class': 'aq_remove aq_' + name,
                        'data-name': name,
                        'src': '//images.sologstrand.dk/images/ikoner/blank_1x13.png',
                        'mode': 'clean'
                    })
                );
            } else {
                $(aq_item).append(
                    $('<img />', {
                        'id': 'aq_remove_' + name,
                        'class': 'aq_remove aq_' + name,
                        'data-name': name,
                        'src': '//images.sologstrand.dk/images/sos_2/icons/criteria_close.png',
                        'mode': 'clean'
                    })
                );
                $(settings.displayOfAlternativeQueriesSelector).on('click', '#aq_remove_' + name, function (e) {
                    if ($('#aq_remove_' + name).attr('mode') === 'clean') {
                        removeAlternativeQueryItem(settings, name, 'renderAlternativeQueryItem()');
                        handleHashedUrl(settings, 'renderAlternativeQueryItem()');
                        setcookie(search_cookie_name, SearchCriteria.getAlternativeQuery(false), 7);

                        if (infinity_timeout) {
                            clearTimeout(infinity_timeout);
                        }
                        infinity_timeout = setTimeout(function () {
                            checkScrollerAndInfinityButton(settings.footer_css_selector, 'window event: ' + e.type);
                        }, 50);
                    }
                });
            }
            $(aq_container).append($(aq_item));
        }
        return $(aq_container).outerHTML();
    }
    function displayAlternativeQueries(settings) {
        var crit_aq = SearchCriteria.getAlternativeQuery(false);
        if (crit_aq.indexOf(';') > -1) {
            crit_aq += ';';
        }
        if (settings.displayOfAlternativeQueriesSelector === '') {
            settings.displayOfAlternativeQueriesSelector = '#mobile_searchblock_container .checkmarks';
        }
        $(settings.displayOfAlternativeQueriesSelector).empty();
        var arr_alternativeQueries = crit_aq.split(';');
        var display_items_output = '';
        for (var displ_alt_i = 0; displ_alt_i < arr_alternativeQueries.length; displ_alt_i++) {
            if (arr_alternativeQueries[displ_alt_i].indexOf('=') > -1) {
                var arr_aq_variable = arr_alternativeQueries[displ_alt_i].split('=');
                if (arr_aq_variable.length === 2) {
                    switch (arr_aq_variable[0]) {
                        case 'altdays':
                        case 'picturetype': break;
                        case 'region':
                            /* name, id, regionid, linktitle */
                            /* display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], arr_areasList.find(r => r.id === arr_aq_variable[1]).name); */
                            if (arr_areasList && arr_areasList.length > 0) {
                                if (parseInt(arr_aq_variable[1]) > 0) {
                                    display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], arr_areasList.find(function (r) {
                                        return parseInt(r.id) === parseInt(arr_aq_variable[1]);
                                    }).name);
                                }
                            }
                            break;
                        case 'subregion':
                            var daq_subregions = arr_aq_variable[1].indexOf(':') ? arr_aq_variable[1].split(':') : [];
                            if (daq_subregions.length > 0) {
                                var daq_subregion_collector = [];
                                for (var daq_subregion_i = 0; daq_subregion_i < daq_subregions.length; daq_subregion_i++) {
                                    /*daq_subregion_collector.push(arr_areasList.find(r => r.id === daq_subregions[daq_subregion_i]).name); */ /* read from globalvariables.inc */
                                    if (arr_areasList && arr_areasList.length > 0) {
                                        daq_subregion_collector.push(arr_areasList.find(function (r) {
                                            return parseInt(r.id) === parseInt(daq_subregions[daq_subregion_i]);
                                        }).name);
                                    }
                                }
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], daq_subregion_collector.join(', '));
                            } else {
                                /* display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], arr_areasList.find(r => r.id === arr_aq_variable[1]).name); */
                                if (arr_areasList && arr_areasList.length > 0) {
                                    display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], arr_areasList.find(function (r) {
                                        return parseInt(r.id) === parseInt(arr_aq_variable[1]);
                                    }).name);
                                }
                            }
                            break;
                        case 'destination':
                            if (arr_areasList && arr_areasList.length > 0) {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], arr_areasList.find(function (r) {
                                    return parseInt(r.id) === parseInt(arr_aq_variable[1]);
                                }).name);
                            }
                            break;
                        case 'waterdistance':
                            if (isNumber(arr_aq_variable[1])) {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], crit_waterdistance + ': ' + arr_aq_variable[1] + ' m');
                            }
                            break;
                        case 'startdate':
                            if (arr_aq_variable[1] !== 'NULL') {
                                var daynumber = parseDate(arr_aq_variable[1]).getDay();
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], getDayName(daynumber) + ", " + arr_aq_variable[1]);
                            }
                            break;
                        case 'numberofdays': display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], arr_aq_variable[1] + ' ' + crit_nights); break;
                        case 'persons': display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], 'Min. ' + arr_aq_variable[1] + ' ' + crit_persons); break;
                        case 'pets':
                            if (isNumber(arr_aq_variable[1])) {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], 'Min. ' + arr_aq_variable[1] + ' ' + crit_pets);
                            } else {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], crit_pets + ' ' + crit_notallowed.toLowerCase());
                            }
                            break;
                        case 'totalmin': display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], 'Min. ' + crit_totalmin + ' ' + arr_aq_variable[1]); break;
                        case 'total': display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], crit_total + ' ' + arr_aq_variable[1]); break;
                        case 'category':
                            switch (arr_aq_variable[1]) {
                                case 'A': display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], 'Min. 1 ' + crit_star); break;
                                case 'P': display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], 'Min. 2 ' + crit_stars); break;
                                case 'S': display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], 'Min. 3 ' + crit_stars); break;
                                case 'T': display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], 'Min. 4 ' + crit_stars); break;
                                case 'X': display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], '5 ' + crit_stars); break;
                            }
                            break;
                        case 'smoking':
                            if (arr_aq_variable[1] === 'yes') {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], crit_smoking + ' - ' + crit_allowed);
                            } else if (arr_aq_variable[1] === 'no') {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], crit_smoking + ' - ' + crit_notallowed);
                            }
                            break;
                        case 'build':
                            var max_build_year = /^\d/.exec(arr_aq_variable[1]);
                            if (isNumber(max_build_year)) {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], crit_max + ' ' + max_build_year + ' ' + crit_year);
                            }
                            break;
                        case 'bedrooms':
                            if (isNumber(arr_aq_variable[1])) {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], 'Min. ' + arr_aq_variable[1] + ' ' + crit_bedrooms);
                            }
                            break;
                        case 'toilets':
                            if (isNumber(arr_aq_variable[1])) {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], 'Min. ' + arr_aq_variable[1] + ' ' + crit_toilets);
                            }
                            break;
                        case 'housem2':
                            if (isNumber(arr_aq_variable[1])) {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], crit_housem2 + ' min. ' + arr_aq_variable[1] + ' m2');
                            }
                            break;
                        case 'groundm2':
                            if (isNumber(arr_aq_variable[1])) {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], crit_groundm2 + ' min. ' + arr_aq_variable[1] + ' m2');
                            }
                            break;
                        case 'shopdistance':
                            if (isNumber(arr_aq_variable[1])) {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], crit_shopdistance + ' ' + crit_max.toLowerCase() + ' ' + arr_aq_variable[1] + ' m');
                            }
                            break;
                        case 'swimmingpool':
                            if (arr_aq_variable[1] === 'yes' || arr_aq_variable[1] === 'not_shared' || arr_aq_variable[1] === 'indoor' || arr_aq_variable[1] === 'indoor_not_shared') {
                                var swim_val = $('label[for="CheckBox_' + arr_aq_variable[0] + '"]').text();
                                switch (arr_aq_variable[1]) {
                                    case 'indoor_not_shared':
                                    case 'indoor':
                                    case 'not_shared':
                                        swim_val = $('#DropDownList_swimmingpool option[value="' + arr_aq_variable[1] + '"]').text();
                                        break;
                                }
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], swim_val);
                            }
                            break;
                        case 'jacuzzi':
                            if (arr_aq_variable[1] === 'yes' || arr_aq_variable[1] === 'indoor' || arr_aq_variable[1] === 'outdoor') {
                                var jac_val = $('label[for="CheckBox_' + arr_aq_variable[0] + '"]').text();
                                switch (arr_aq_variable[1]) {
                                    case 'indoor':
                                    case 'outdoor':
                                        jac_val = $('#DropDownList_jacuzzi option[value="' + arr_aq_variable[1] + '"]').text() + ' ' + jac_val.toLowerCase();
                                        break;
                                }
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], jac_val);
                            }
                            break;
                        case 'internet':
                        case 'sauna':
                        case 'seaview':
                        case 'woodburning_stove':
                        case 'washingmachine':
                        case 'dishwasher':
                        case 'freezer':
                        case 'tumbler':
                        case 'microwave':
                        case 'energysafe':
                        case 'wheelchair':
                        case 'fishing':
                        case 'freeactivitycenter':
                        case 'harbor':
                        case 'exclusive':
                        case 'activityroom':
                        case 'fenchedterrace':
                        case 'fenchedarea':
                        case 'discount':
                        case 'outdoor_toy_equipment':
                            if (arr_aq_variable[1] === 'yes') {
                                display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], $('label[for="CheckBox_' + arr_aq_variable[0] + '"]').text());
                            }
                            break;
                        case 'vacationtype':
                            switch (arr_aq_variable[1]) {
                                case 'spar': display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], typeof crit_spar !== 'undefined' ? crit_spar : arr_aq_variable[1]); break;
                                case 'twoperson': display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], typeof crit_twoperson !== 'undefined' ? crit_twoperson : arr_aq_variable[1]); break;
                                default: display_items_output += renderAlternativeQueryItem(settings, arr_aq_variable[0], arr_aq_variable[1]); break;
                            }
                            break;
                    }
                }
            }
        }
        if (getParam('d') !== "") {
            var qs = getParam('d');
            if (qs.indexOf('lat=') > -1 && qs.indexOf('lng=') > -1 && qs.indexOf('radius=') > -1) {
                var qs_vars = qs.split(';');
                for (var i = 0; i < qs_vars.length; i++) {
                    if (qs_vars[i].indexOf('=') > -1) {
                        var p_var = qs_vars[i].split('=');
                        if (p_var.length === 2) {
                            if (p_var[0] === 'lat' || p_var[0] === 'lng') {
                                display_items_output += renderAlternativeQueryItem(settings, p_var[0], p_var[0] + ': ' + p_var[1]);
                            } else if (p_var[0] === 'radius') {
                                display_items_output += renderAlternativeQueryItem(settings, p_var[0], p_var[0] + ': ' + p_var[1] + ' km');
                            }
                        }
                    }
                }
            }
        }
        if (display_items_output !== '') {
            display_items_output += renderAlternativeQueryItem(settings, 'reset');
            display_items_output = '<div id="search_criteria_list" class="broedtekst">' + display_items_output + '</div>';
            $(settings.displayOfAlternativeQueriesSelector).html(display_items_output);
        }
    }
    function calendarFunctions(settings) {
        var cal_url = document.location.href, showResetDateButton = true, isBureauTemplate = false;
        if (jquery_search_sitebid === 'UKJ' || jquery_search_sitebid === 'DYR' || jquery_search_sitebid === 'HST' || jquery_search_sitebid === 'NS' || jquery_search_sitebid === 'IB' || jquery_search_sitebid === 'VR' || jquery_search_sitebid === 'BK' || jquery_search_sitebid === 'SF' || jquery_search_sitebid === 'SYL' || jquery_search_sitebid === 'HB') {
            isBureauTemplate = true;
            cal_url = Base64.decode(cal_url);
        }
        if (isBureauTemplate) {
            showResetDateButton = false;
        }
        var calendarArrivalDays = [], calendarDepartureDays = [], sb_calendar_start = new Date(), calDate = $("#datepicker_searchblock");
        if (jquery_search_sitebid === 'KS') sb_calendar_start = new Date(2018, 0, 1, 10, 0, 0, 0);
        var panelButtons = function (input, inst) {
            if (showResetDateButton) {
                setTimeout(function () {
                    var widgetContent = $(calDate).datepicker("widget").find(".ui-datepicker-buttonpane");
                    $('#altdays_container').addClass('altdays_container_show');
                    if (isValidDate($('input[name="startdate"]').val())) {
                        if (!$('#signature_panel').exists()) {
                            var cal_st4 = typeof signatureText_4 !== 'undefined' ? signatureText_4 : '';
                            if (cal_st4 !== '') {
                                $('.cal_signature').remove(); // must be removed initially otherwise double output may occure
                                var signaturePane = $('<div />', { 'id': 'signature_panel', 'class': 'cal_signature' }).html('<div style="margin-top:10px;" class="cal_signature_symbol_4">&nbsp;</div><div style="margin-top:14px;" class="cal_signature_txt">' + signatureText_4 + '</div>');
                                widgetContent.before(signaturePane);
                            }
                        }
                    }
                    var $removeDateBtn = $('<button data-event="click" data-handler="hide" class="ui-datepicker-setzero ui-state-default ui-priority-primary ui-corner-all" type="button">' + resetStartDate + '</button>');
                    $removeDateBtn.unbind("click").bind("click", function () {
                        /* this event does not trigger calendar onclose event */
                        $('input[name="startdate"]').removeClass('dd_selected').val(notSetText).trigger('change');
                        $('select[name="numberofdays"]').removeClass('dd_selected');
                        $('#daysSelDate').hide();
                        $('input[name="discount"]').hide();
                        $('.ui-datepicker-close').trigger('click');
                    });
                    $removeDateBtn.appendTo(widgetContent);
                    var $widgetPanel_header = $(calDate).datepicker("widget").find(".ui-widget-header");
                    if (!$widgetPanel_header.exists()) console.warn('widgetPanel_header not found');
                    var $panelDescription = $('<div class="ui-datepicker-descriptionpanetop"><span>' + noticeText + '</span><br/>' + calText3 + '</div>');
                    $widgetPanel_header.after($panelDescription);
                    var $widgetCalendar = $(calDate).datepicker("widget").find(".ui-datepicker-calendar"); /* finder rækken med lørdag for at angive en anden farve */
                    $widgetCalendar.find('tr').each(function () {
                        $(this).find('.ui-datepicker-week-end').first().addClass("saturday");
                    });
                    var $widgetContent = $(calDate).datepicker("widget").find(".ui-widget-content");
                    var $signaturePane = $('<div />', { 'class': 'cal_signature' }).html('');
                    $widgetContent.before($signaturePane);
                }, 1);
            }
        };
        var highlightDays = function (d) {
            var selectedDate = parseDate($(calDate).val()).addHours(10);
            var formatted_date = formatDate(d);
            if (isValidDate(formatDate(selectedDate))) {
                var dates = [];
                var overnights = parseInt($('select[id$=DropDownList_numberofdays]').val());
                if (overnights > 0) {
                    for (var selloop = 0; selloop < overnights + 1; selloop++) {
                        var currentDateHover = addDays(selectedDate, selloop);
                        dates[dates.length] = formatDate(currentDateHover);
                    }
                }
                for (var i = 0; i < dates.length; i++) {
                    if (dates[i] === formatted_date) {
                        var day_css = ' ui-state-current-active';
                        var day_active = true;
                        if (i === 0) {
                            day_css = ' starthalfselectedweekday altered';
                            $('td.' + formatted_date + ' a').removeClass('ui-state-active'); // for enforcing parent half day style
                            day_active = false;
                        } else if (i === dates.length - 1) {
                            day_css = ' endhalfselectedweekday altered';
                            $('td.' + formatted_date + ' a').removeClass('ui-state-active'); // for enforcing parent half day style
                        }
                        return [true, formatted_date + day_css];
                    }
                }
            }
            return [true, formatted_date];
        };
        var calendarShowCount = 2;
        var bIsMobileDevice = typeof isMobileDevice !== 'undefined' ? isMobileDevice : 'False';
        var bIsSmartPhone = typeof isSmartPhone !== 'undefined' ? isSmartPhone : 'False';
        var bIsTabletDevice = typeof isTabletDevice !== 'undefined' ? isTabletDevice : 'False';
        if ((bIsMobileDevice === 'True' || bIsSmartPhone === 'True') && bIsTabletDevice === 'False') {
            calendarShowCount = 1;
        } else {
            if (jquery_search_sitebid === 'DJU') {
                calendarShowCount = 1;
            }
        }
        $('input[name="startdate"]').datepicker({
            changeMonth: true,
            numberOfMonths: calendarShowCount,
            changeYear: true,
            showButtonPanel: true,
            constrainInput: true,
            showWeek: true,
            activateWeekNumbers: true,
            firstDay: 1,
            showOn: "both",
            buttonImage: jquery_search_sitebid === 'SOS' ? "//images.sologstrand.dk/images/sos_2/icons/dlcalendar_2.png" : "//images.sologstrand.dk/images/dlcalendar_1.gif",
            buttonImageOnly: true,
            beforeShow: panelButtons,
            onChangeMonthYear: panelButtons,
            beforeShowDay: highlightDays,
            dateFormat: "dd-mm-yy",
            minDate: sb_calendar_start instanceof Date ? sb_calendar_start : toCalDate(sb_calendar_start),
            maxDate: sb_calendar_enddate instanceof Date ? sb_calendar_enddate : toCalDate(sb_calendar_enddate),
            onClose: function (selectedDate) {
                if (isValidDate(selectedDate)) {
                    $('input[name="startdate"]').addClass('dd_selected').val(selectedDate);
                    if (typeof updateCookieStartdate !== 'undefined') {
                        updateCookieStartdate('startdate', selectedDate);
                    }
                    //$('select[name="numberofdays"]').addClass('dd_selected');
                    $('#daysSelDate').show();
                    $('input[name="discount"]').show();
                } else {
                    $('input[name="startdate"]').removeClass('dd_selected').val(notSetText);
                    $('select[name="numberofdays"]').removeClass('dd_selected');
                    $('#daysSelDate').hide();
                    $('input[name="discount"]').hide();
                    $('#signature_panel').remove();
                    $("#DropDownList_numberofdays").val('0');
                    $("#altdays_container").removeClass("altdays_container_show");
                    $("#altdays_container").addClass("altdays_container_hide");
                }
                if ($('.saturday_more_selection').exists()) {
                    if (parseDate(selectedDate) > new Date() && parseDate(selectedDate).getDay() !== 6) {
                        $('.saturday_more_selection').fadeIn();
                    } else {
                        $('.saturday_more_selection').fadeOut();
                    }
                }
            }
        });
    }
    function bindWindowScroller(settings) {
        //console.log('bindWindowScroller.. (' + (typeof $._data(window).events.scroll === 'undefined') + ')');
        isInfinityEventTriggered = false;
        if (typeof $._data(window).events.scroll === 'undefined') {
            //console.log('bindWindowScroller..');
            $(window).on('scroll resize', function (e) {
                if (scroll_position < $(window).scrollTop()) {
                    scroll_position = $(window).scrollTop();
                    if (infinity_timeout) {
                        clearTimeout(infinity_timeout);
                    }
                    infinity_timeout = setTimeout(function () {
                        checkScrollerAndInfinityButton(settings.footer_css_selector, 'window event: ' + e.type);
                    }, 100);
                }
            });
        } else if (browserName === 'Chrome' || browserName === 'Edge') {
            $(window).on('scroll resize', function (e) {
                if (scroll_position < $(window).scrollTop()) {
                    scroll_position = $(window).scrollTop();
                    if (infinity_timeout) {
                        clearTimeout(infinity_timeout);
                    }
                    infinity_timeout = setTimeout(function () {
                        checkScrollerAndInfinityButton(settings.footer_css_selector, 'window event: ' + e.type);
                    }, 100);
                }
            });
        }
    }
    function handleBrowserBack(settings, isBrowserBacked) {
        //console.log('handleBrowserBack (' + isBrowserBacked + ')..');
        $(search_house_container + ' .loader').empty();
        var current_user_settings = getObjectCookie('user_settings');
        if (isBrowserBacked) {
            releasedBrowserBackMode = false; /* lock any SB and SC attachment */
            loadCurrentResultPageContent(settings, function () {
                sessionStorage.removeItem('browserback_from_house');
                current_user_settings.browser_back_mode = false;
                current_user_settings.browser_back_content_loaded = true;
                setObjectCookie('user_settings', current_user_settings, 'loadCurrentResultPageContent().. onComplete.. fetch saved content from server', user_settings_expire_days);
                deleteBrowserBackCookie(); /* mandatory method call */

                $('select[name="region"]').MultiSelectList({
                    search: isMobileDevice === 'True' ? false : true,
                    searchText: msl_region_search,
                    noMatch: msl_noresults + ' "{0}"',
                    forceWidth: isTabletDevice === 'True' ? 135 : 0,
                    okCancelInMulti: isSmartPhone === 'True' ? true : false,
                    okShowInMulti: isSmartPhone === 'True' ? true : false,
                    cancelShowInMulti: false,
                    forceShowButtons: isSmartPhone === 'True' ? true : false,
                    locale: [msl_close, 'Annuller', 'Vælg alle'],
                    addCssClass: isSmartPhone === 'True' ? 'fixed_height' : '',
                    itemClickCallback: function (li) {
                        callGTMFilteredSearch();
                        changeRegion(settings, $(li).attr('data-id'));
                        if ($(li).attr('data-id') !== '0') {
                            $('.msl_region .captioncont').addClass('dd_selected');
                        } else {
                            $('.msl_region .captioncont').removeClass('dd_selected');
                        }
                    }
                });

                canScroll(true);
                $(settings.infinitybuttonselector).show();
                bindWindowScroller(settings);

                loadResultElements(false, '', 'loadCurrentResultPageContent..');
                scrollToSelector(search_house_container + ' .house_' + current_user_settings.last_visited_house, -((isSmartPhone === 'False' ? parseInt($('#topmenu').height()) + parseInt($('#search_criteria_list').height()) : 0) + 20));

                $(search_house_container + ' .house_resultat').each(function (i, el) {
                    var houseid = $(el).attr('data-id');
                    isHouseOnPersonalList(houseid, 'HLCOOKIE', $('li[data-id="' + houseid + '"] *[data-type="favorit"]').attr('data-text-remove'));
                });
            });
        } else {
            current_user_settings.browser_back_mode = false;
            current_user_settings.browser_back_content_loaded = false;
            setObjectCookie('user_settings', current_user_settings, 'handleBrowserBack().. not in BB mode', 365); /* reset user specific selections */
        }
    }
    function loadCurrentResultPageContent(settings, callback) {
        var current_user_settings = getObjectCookie('user_settings');
        $.ajax({
            type: 'GET',
            cache: false,
            async: true,
            url: '/TextFactory.asmx/GetCurrentResultPageContent?session_id=' + uniquesessionid + '&p=' + SearchCriteria.pagenumberindex,
            beforeSend: function (jqXHR) {
                $.xhrPool.add(jqXHR, 'loadCurrentResultPageContent');
                $(settings.housecountselector).html(getLoaderImage(16, false));
                $(settings.infinitybuttonselector).hide(); /* hide infinity button while loading browser back content */
            },
            success: function (data) {
                if (data.firstChild) {
                    //console.log('loadCurrentResultPageContent.. page index: ' + SearchCriteria.pagenumberindex);
                    $(settings.resulttargetselector).html(unescape(data.firstChild.textContent)).find('.slider_loaded').removeClass('slider_loaded'); /* makes it possible to load galleri again */
                    $(settings.housecountselector).html(current_user_settings.last_result_count);
                }
            },
            error: function (jqXHR, textStatus) {
                console.warn('Current page content state not fetched fom server! Error: ' + textStatus);
            },
            complete: function (jqXHR) {
                $.xhrPool.remove(jqXHR, 'loadCurrentResultPageContent');
                if (typeof callback === 'function') {
                    callback.call(this, null);
                    //console.log('loadCurrentResultPageContent completed.. with callback');
                }
            }
        });
    }
    function saveCurrentResultPageContent(html, sc, append) {
        //console.log('saveCurrentResultPageContent.. page index: ' + sc.pagenumberindex);
        var bAppend = typeof append !== 'undefined' ? append : false;
        $.ajax({
            type: 'POST',
            url: '/TextFactory.asmx/SetCurrentResultPageContent',
            data: { session_id: uniquesessionid, content: escape(html), append: bAppend }
        });
    }

    if (typeof $.ui === 'undefined') {
        console.warn('TODO: Insert jQuery UI library before this library!');
        var script_ui = document.createElement('script');
        script_ui.type = "text/javascript";
        script_ui.src = "//images.sologstrand.dk/images/js/jquery/ui/jquery-ui-1.11.3.custom/jquery-ui.min.js";
        document.getElementsByTagName('head')[0].appendChild(script_ui);
    }
    if (typeof $.ui !== 'undefined') {
        if (typeof $.ui.slider !== 'undefined') {
            "use strict";
            var extensionMethods = {
                pips: function (settings) {
                    var slider = this, collection = "", pips = (slider.options.max - slider.options.min) / slider.options.step,
                        options = {
                            first: "label",
                            last: "label",
                            rest: "pip",
                            labels: false,
                            prefix: "",
                            suffix: "",
                            step: pips > 100 ? Math.floor(pips * 0.05) : 1,
                            formatLabel: function (value) {
                                return this.prefix + value + this.suffix;
                            }
                        };
                    $.extend(options, settings);
                    slider.options.pipStep = options.step;
                    slider.element
                        .addClass("ui-slider-pips")
                        .find(".ui-slider-pip")
                        .remove();
                    var selectPip = {
                        single: function (value) {
                            var $pips = this.resetClasses();
                            $pips
                                .filter(".ui-slider-pip-" + value)
                                .addClass("ui-slider-pip-selected");
                        },
                        range: function (values) {
                            var $pips = this.resetClasses();
                            $pips
                                .filter(".ui-slider-pip-" + values[0])
                                .addClass("ui-slider-pip-selected-first");
                            $pips
                                .filter(".ui-slider-pip-" + values[1])
                                .addClass("ui-slider-pip-selected-second");
                        },
                        resetClasses: function () {
                            var $pips =
                                slider.element
                                    .find(".ui-slider-pip")
                                    .removeClass("ui-slider-pip-selected ui-slider-pip-selected-first ui-slider-pip-selected-second");
                            return $pips;
                        }
                    };
                    function labelClick(label) {
                        if (slider.option("disabled")) {
                            return;
                        }
                        var val = $(label).data("value"), $thisSlider = slider.element;
                        if (slider.options.values) {
                            var sliderVals = $thisSlider.slider("values");
                            var finalVals;
                            if (sliderVals[0] === sliderVals[1]) {
                                if (val < sliderVals[0]) {
                                    finalVals = [val, sliderVals[1]];
                                } else {
                                    finalVals = [sliderVals[0], val];
                                }
                            } else if (Math.abs(sliderVals[0] - val) === Math.abs(sliderVals[1] - val)) {
                                finalVals = [val, val];
                            } else if (Math.abs(sliderVals[0] - val) < Math.abs(sliderVals[1] - val)) {
                                finalVals = [val, sliderVals[1]];
                            } else {
                                finalVals = [sliderVals[0], val];
                            }
                            $thisSlider.slider("values", finalVals);
                            selectPip.range(finalVals);
                        } else {
                            $thisSlider.slider("value", val);
                            selectPip.single(val);
                        }
                    }
                    function createPip(which) {
                        var label, percent, number = which, classes = "ui-slider-pip", css = "";
                        if ("first" === which) { number = 0; }
                        else if ("last" === which) { number = pips; }
                        const stepsMultiply = slider.options.step * number;
                        var labelValue = slider.options.min + stepsMultiply;
                        var classLabel = labelValue.toString().replace(".", "-");
                        if ($.type(options.labels) === "array") {
                            label = options.labels[number] || "";
                        }
                        else if ($.type(options.labels) === "object") {
                            if ("first" === which) {
                                label = options.labels.first || "";
                            } else if ("last" === which) {
                                label = options.labels.last || "";
                            } else if ($.type(options.labels.rest) === "array") {
                                label = options.labels.rest[number - 1] || "";
                            } else {
                                label = labelValue;
                            }
                        } else {
                            label = labelValue;
                        }
                        if ("first" === which) {
                            percent = "0%";
                            classes += " ui-slider-pip-first";
                            classes += "label" === options.first ? " ui-slider-pip-label" : "";
                            classes += false === options.first ? " ui-slider-pip-hide" : "";
                        } else if ("last" === which) {
                            percent = "100%";
                            classes += " ui-slider-pip-last";
                            classes += "label" === options.last ? " ui-slider-pip-label" : "";
                            classes += false === options.last ? " ui-slider-pip-hide" : "";
                        } else {
                            const sharePips = 100 / pips;
                            percent = (sharePips * which).toFixed(4) + "%";
                            classes += "label" === options.rest ? " ui-slider-pip-label" : "";
                            classes += false === options.rest ? " ui-slider-pip-hide" : "";
                        }
                        classes += " ui-slider-pip-" + classLabel;
                        if (slider.options.values && slider.options.values.length) {
                            if (labelValue === slider.options.values[0]) {
                                classes += " ui-slider-pip-selected-initial-first";
                            }
                            if (labelValue === slider.options.values[1]) {
                                classes += " ui-slider-pip-selected-initial-second";
                            }
                        } else {
                            if (labelValue === slider.options.value) {
                                classes += " ui-slider-pip-selected-initial";
                            }
                        }
                        css = slider.options.orientation === "horizontal" ? "left: " + percent : "bottom: " + percent;
                        return "<span class=\"" + classes + "\" style=\"" + css + "\">" +
                            "<span class=\"ui-slider-line\"></span>" +
                            "<span class=\"ui-slider-label\" data-value=\"" + labelValue + "\">" + options.formatLabel(label) + "</span>" +
                            "</span>";
                    }
                    slider.options.pipStep = Math.round(slider.options.pipStep);
                    collection += createPip("first");
                    for (var i = 1; i < pips; i++) {
                        if (0 === i % slider.options.pipStep) {
                            collection += createPip(i);
                        }
                    }
                    collection += createPip("last");
                    slider.element.append(collection);
                    slider.element.on("mouseup", ".ui-slider-label", function () {
                        labelClick(this);
                    });
                    slider.element.on("slide.selectPip slidechange.selectPip", function (e, ui) {
                        var value, values, $slider = $(this);
                        if (!ui) {
                            value = $slider.slider("value");
                            values = $slider.slider("values");
                            if (values.length) {
                                selectPip.range(values);
                            } else {
                                selectPip.single(value);
                            }
                        } else {
                            if (ui.values) {
                                selectPip.range(ui.values);
                            } else if (ui.value) {
                                selectPip.single(ui.value);
                            }
                        }
                    });
                },
                floats: function (settings) {
                    var slider = this, $tip, vals = [], options = {
                        handle: true,
                        pips: false,
                        labels: false,
                        prefix: "",
                        suffix: "",
                        event: "slidechange slide",
                        formatLabel: function (value) {
                            return this.prefix + value + this.suffix;
                        }
                    };
                    $.extend(options, settings);
                    if (slider.options.value < slider.options.min) { slider.options.value = slider.options.min; }
                    if (slider.options.value > slider.options.max) { slider.options.value = slider.options.max; }
                    if (slider.options.values) {
                        if (slider.options.values[0] < slider.options.min) { slider.options.values[0] = slider.options.min; }
                        if (slider.options.values[1] < slider.options.min) { slider.options.values[1] = slider.options.min; }
                        if (slider.options.values[0] > slider.options.max) { slider.options.values[0] = slider.options.max; }
                        if (slider.options.values[1] > slider.options.max) { slider.options.values[1] = slider.options.max; }
                    }
                    slider.element
                        .addClass("ui-slider-float")
                        .find(".ui-slider-tip, .ui-slider-tip-label")
                        .remove();
                    function getPipLabels(val, val2) {
                        var vals = [], stepVal = val / slider.options.step, stepVal2 = val2 / slider.options.step;
                        if ($.type(options.labels) === "array") {
                            vals[0] = options.labels[stepVal - slider.options.min] || val;
                            if (val2) {
                                vals[1] = options.labels[stepVal2 - slider.options.min] || val2;
                            }
                        } else if ($.type(options.labels) === "object") {
                            if (slider.options.min === val) {
                                vals[0] = options.labels.first || slider.options.min;
                            } else if (slider.options.max === val) {
                                vals[0] = options.labels.last || slider.options.max;
                            } else if ($.type(options.labels.rest) === "array") {
                                vals[0] = options.labels.rest[stepVal - slider.options.min - 1] || val;
                            } else {
                                vals[0] = val;
                            }
                            if (val2) {
                                if (slider.options.min === val2) {
                                    vals[1] = options.labels.first || slider.options.min;
                                } else if (slider.options.max === val2) {
                                    vals[1] = options.labels.last || slider.options.max;
                                } else if ($.type(options.labels.rest) === "array") {
                                    vals[1] = options.labels.rest[stepVal2 - slider.options.min - 1] || val2;
                                } else {
                                    vals[1] = val2;
                                }
                            }
                        } else {
                            vals[0] = val;
                            if (val2) {
                                vals[1] = val2;
                            }
                        }
                        return vals;
                    }
                    if (options.handle) {
                        if (slider.options.values) {
                            vals = getPipLabels(slider.options.values[0], slider.options.values[1]);
                            $tip = [
                                $("<span class=\"ui-slider-tip\">" + options.formatLabel(vals[0]) + "</span>"),
                                $("<span class=\"ui-slider-tip\">" + options.formatLabel(vals[1]) + "</span>")
                            ];
                        } else {
                            vals = getPipLabels(slider.options.value);
                            $tip = $("<span class=\"ui-slider-tip\">" + options.formatLabel(vals[0]) + "</span>");
                        }
                        slider.element.find(".ui-slider-handle").each(function (k, v) {
                            $(v).append($tip[k]);
                        });
                    }
                    if (options.pips) {
                        slider.element.find(".ui-slider-label").each(function (k, v) {
                            var $this = $(v),
                                val = $this.data("value"),
                                label = $this.data("value"),
                                $tip;
                            label = getPipLabels(val)[0];
                            $tip = $("<span class=\"ui-slider-tip-label\">" + options.formatLabel(label) + "</span>").insertAfter($this);
                        });
                    }
                    if (options.event !== "slide" &&
                        options.event !== "slidechange" &&
                        options.event !== "slide slidechange" &&
                        options.event !== "slidechange slide") {
                        options.event = "slidechange slide";
                    }
                    slider.element.on(options.event, function (e, ui) {
                        var val = getPipLabels(ui.value);
                        $(ui.handle).find(".ui-slider-tip").html(options.formatLabel(val[0]));
                    });
                }
            };
            $.extend(true, $.ui.slider.prototype, extensionMethods);
        }
    }
})(jQuery); /* fn.searchblock */
(function ($) {
    /* Convenience methods in jQuery namespace. */
    /* Use as  $.belowthefold(element, {threshold : 100, container : window}) */
    $.belowthefold = function (element, settings) {
        var fold;

        if (settings.container === undefined || settings.container === window) {
            fold = (window.innerHeight ? window.innerHeight : $(window).height()) + $(window).scrollTop();
        } else {
            fold = $(settings.container).offset().top + $(settings.container).height();
        }
        return fold <= $(element).offset().top - settings.threshold;
    };
    $.rightoffold = function (element, settings) {
        var fold;

        if (settings.container === undefined || settings.container === window) {
            fold = $(window).width() + $(window).scrollLeft();
        } else {
            fold = $(settings.container).offset().left + $(settings.container).width();
        }

        return fold <= $(element).offset().left - settings.threshold;
    };
    $.abovethetop = function (element, settings) {
        var fold;

        if (settings.container === undefined || settings.container === window) {
            fold = $(window).scrollTop();
        } else {
            fold = $(settings.container).offset().top;
        }

        return fold >= $(element).offset().top + settings.threshold + $(element).height();
    };
    $.leftofffold = function (element, settings) {
        var fold;

        if (settings.container === undefined || settings.container === window) {
            fold = $(window).scrollLeft();
        } else {
            fold = $(settings.container).offset().left;
        }

        return fold >= $(element).offset().left + settings.threshold + $(element).width();
    };
    $.inviewport = function (element, settings) {
        return !$.rightoffold(element, settings) && !$.leftofffold(element, settings) &&
            !$.belowthefold(element, settings) && !$.abovethetop(element, settings);
    };
    /* Custom selectors for your convenience.   */
    /* Use as $("img:below-the-fold").something() or */
    /* $("img").filter(":below-the-fold").something() which is faster */
    $.extend($.expr[":"], {
        "below-the-fold": function (a) { return $.belowthefold(a, { threshold: 0 }); },
        "above-the-top": function (a) { return !$.belowthefold(a, { threshold: 0 }); },
        "right-of-screen": function (a) { return $.rightoffold(a, { threshold: 0 }); },
        "left-of-screen": function (a) { return !$.rightoffold(a, { threshold: 0 }); },
        "in-viewport": function (a) { return $.inviewport(a, { threshold: 0 }); },
        /* Maintain BC for couple of versions. */
        "above-the-fold": function (a) { return !$.belowthefold(a, { threshold: 0 }); },
        "right-of-fold": function (a) { return $.rightoffold(a, { threshold: 0 }); },
        "left-of-fold": function (a) { return !$.rightoffold(a, { threshold: 0 }); }
    });
})($, window, document, undefined); /* inviewport */
(function ($, window, document, undefined) {
    var flexsliderManualDirectionControls = 'flexsliderManualDirectionControls',
        defaults = {
            previousElementSelector: ".previous",
            nextElementSelector: ".next",
            disabledStateClassName: "disable"
        };
    function FlexsliderManualDirectionControls(element, options) {
        this.element = element;
        this.options = $.extend({}, defaults, options);
        this._flexslider = $(element).data('flexslider');
        this._originalFlexsliderWrapupFunction = this._flexslider ? this._flexslider.wrapup : null;
        this._defaults = defaults;
        this._name = flexsliderManualDirectionControls;
        this.init();
    }
    FlexsliderManualDirectionControls.prototype.init = function () {
        this.addEventListeners();
        var self = this;
        if (this._flexslider) {
            this._flexslider.wrapup = function (direction) {
                self.onAnimationEnd.call(self, direction);
            };
        }
    };
    FlexsliderManualDirectionControls.prototype.addEventListeners = function () {
        $(this.element).find(this.options.previousElementSelector).bind('touchstart.flexsliderPromo click.flexsliderPromo', { self: this, passive: true }, function (event) {
            event.stopPropagation();
            event.preventDefault();
            if (!event.handled) {
                event.data.self.goToTargetInDirection('prev');
                event.handled = true;
            }
        });
        $(this.element).find(this.options.nextElementSelector).bind('click.flexsliderPromo', { self: this, passive: true }, function (event) {
            event.stopPropagation();
            event.preventDefault();
            if (!event.handled) {
                event.data.self.goToTargetInDirection('next');
                event.handled = true;
            }
        });
    };
    FlexsliderManualDirectionControls.prototype.goToTargetInDirection = function (direction) {
        var target = this._flexslider.getTarget(direction);
        if (this._flexslider.canAdvance(target)) {
            this._flexslider.flexAnimate(target);
        }
        return false;
    };
    FlexsliderManualDirectionControls.prototype.addOrRemoveDisabledStateForDirection = function (direction, $navElement) {
        var target = this._flexslider.getTarget(direction);
        if (!this._flexslider.canAdvance(target)) {
            $navElement.addClass(this.options.disabledStateClassName);
        } else {
            $navElement.removeClass(this.options.disabledStateClassName);
        }
    };
    FlexsliderManualDirectionControls.prototype.onAnimationEnd = function (direction) {
        var $nextElement = $(this.element).find(this.options.nextElementSelector),
            $previousElement = $(this.element).find(this.options.previousElementSelector);
        this.addOrRemoveDisabledStateForDirection('next', $nextElement);
        this.addOrRemoveDisabledStateForDirection('prev', $previousElement);
        this._originalFlexsliderWrapupFunction(direction);
    };
    $.fn[flexsliderManualDirectionControls] = function (options) {
        return this.each(function () {
            if (!$.data(this, 'plugin_' + flexsliderManualDirectionControls)) {
                $.data(this, 'plugin_' + flexsliderManualDirectionControls,
                    new FlexsliderManualDirectionControls(this, options));
            }
        });
    };
})(jQuery, window, document); /* flexsliderManualDirectionControls, flexslider extension */
(function ($, window, document, undefined) {
    var $window = $(window);
    $.fn.lazyload = function (options) {
        var elements = this;
        var $container;
        var settings = {
            threshold: -300,
            failure_limit: 0,
            event: "scroll",
            effect: "show",
            container: window,
            data_attribute: "original",
            skip_invisible: false,
            appear: null,
            load: null,
            placeholder: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"
        };
        function update() {
            var counter = 0;
            elements.each(function () {
                var $this = $(this);
                if (settings.skip_invisible && !$this.is(":visible")) {
                    return;
                }
                if ($.abovethetop(this, settings) || $.leftofffold(this, settings)) {
                    /* Nothing. */
                } else if (!$.belowthefold(this, settings) &&
                    !$.rightoffold(this, settings)) {
                    $this.trigger("appear");
                    /* if we found an image we'll load, reset the counter */
                    counter = 0;
                } else {
                    if (++counter > settings.failure_limit) {
                        return false;
                    }
                }
            });
        }
        if (options) {
            /* Maintain BC for a couple of versions. */
            if (undefined !== options.failurelimit) {
                options.failure_limit = options.failurelimit;
                delete options.failurelimit;
            }
            if (undefined !== options.effectspeed) {
                options.effect_speed = options.effectspeed;
                delete options.effectspeed;
            }
            $.extend(settings, options);
        }
        /* Cache container as jQuery as object. */
        $container = settings.container === undefined || settings.container === window ? $window : $(settings.container);
        /* Fire one scroll event per scroll. Not one scroll event per image. */
        if (0 === settings.event.indexOf("scroll")) {
            $container.on(settings.event, function () {
                return update();
            });
        }
        this.each(function () {
            var self = this;
            var $self = $(self);
            self.loaded = false;
            /* If no src attribute given use data:uri. */
            if ($self.attr("src") === undefined || $self.attr("src") === false) {
                if ($self.is("img")) {
                    $self.attr("src", settings.placeholder);
                }
            }
            /* When appear is triggered load original image. */
            $self.one("appear", function () {
                if (!this.loaded) {
                    if (settings.appear) {
                        var elements_left = elements.length;
                        settings.appear.call(self, elements_left, settings);
                    }
                    $("<img />")
                        .one("load", function () {
                            var original = $self.attr("data-" + settings.data_attribute);
                            $self.hide();
                            if ($self.is("img")) {
                                $self.attr("src", original);
                            } else {
                                $self.css("background-image", "url('" + original + "')");
                            }
                            $self[settings.effect](settings.effect_speed);
                            self.loaded = true;
                            /* Remove image from array so it is not looped next time. */
                            var temp = $.grep(elements, function (element) {
                                return !element.loaded;
                            });
                            elements = $(temp);
                            if (settings.load) {
                                var elements_left = elements.length;
                                settings.load.call(self, elements_left, settings);
                            }
                        })
                        .attr("src", $self.attr("data-" + settings.data_attribute));
                }
            });
            /* When wanted event is triggered load original image */
            /* by triggering appear.                              */
            if (0 !== settings.event.indexOf("scroll")) {
                $self.on(settings.event, function () {
                    if (!self.loaded) {
                        $self.trigger("appear");
                    }
                });
            }
        });
        /* Check if something appears when window is resized. */
        $window.on("resize", function () {
            update();
        });
        /* With IOS5 force loading images when navigating with back button. */
        /* Non optimal workaround. */
        if ((/(?:iphone|ipod|ipad).*os 5/gi).test(navigator.appVersion)) {
            $window.on("pageshow", function (event) {
                if (event.originalEvent && event.originalEvent.persisted) {
                    elements.each(function () {
                        $(this).trigger("appear");
                    });
                }
            });
        }
        /* Force initial check if images should appear. */
        $(document).ready(function () {
            update();
        });
        return this;
    };
})(jQuery, window, document); /* lazy loader */
(function ($, window, document, undefined) {
    $.fn.loadResultElementFunctions = function (options) {
        var defaults = {
            sitebid: '',
            houseid: '',
            language: '',
            dataAttributeSuffixName: 'original',
            cacheLoading: true,
            asyncLoading: false,
            activateSliderImageHref: false,
            sliderImageHref: '',
            activateGallerySlider: true,
            showGallerySlideNumber: true,
            showImageLabel: true,
            activeLazyLoad: true,
            displayCount: 10,
            lazyLoadEffect: 'fadeIn',
            event: 'load',
            threshold: 100,
            showOnMapContainerSelectorClass: '.mapplaceholder',
            activateMap: true,
            mapContainerSelectorPrefix: '#mapcontainer-',
            mapContainerSelectorClass: 'mapcontainer',
            mapAppendToContainerSelector: '',
            useRouteFunctions: false,
            sliderControlsContainerSelectorPrefix: '#slider-controls-',
            sliderContainerSelectorPrefix: '.flexslider-',
            sliderNavigationSelectorPrefix: '#slider-navigation-',
            loaderImageSrc: '//images.sologstrand.dk/images/search/loader_house_slider_gallery_128_x_128.gif',
            map_params: [] /* 0:lat, 1:lng, 2:zoom, 3:address1, 4:address2, 5:photosrc, 6:phototext, 7:price */
        };
        var settings = $.extend({}, defaults, options);
        if (settings.activateMap && settings.map_params.length === 0) {
            var map_element = $('.house_resultat[data-id="' + settings.houseid + '"] ' + settings.showOnMapContainerSelectorClass);
            if ($(map_element).exists()) {
                settings.map_params.push(map_element.attr('data-lat'));
                settings.map_params.push(map_element.attr('data-lng'));
                settings.map_params.push(map_element.attr('data-zoom'));
                settings.map_params.push(map_element.attr('data-address1'));
                settings.map_params.push(map_element.attr('data-address2'));
                settings.map_params.push(map_element.attr('data-photosrc'));
                settings.map_params.push(map_element.attr('data-phototext'));
                settings.map_params.push(map_element.attr('data-price'));
            } else {
                console.warn('House elements must have class name: house_resultat');
            }
        }
        loadFunctions(settings, this, defaults);
        function preloadImage(el, slidenumber) {
            if (!checkIfImageIsPreloaded($(el[0]).attr('id'), slidenumber)) {
                var imgSrc = $(el[0]).find('img:eq(' + slidenumber + ')').attr('data-' + settings.dataAttributeSuffixName);
                $(el[0]).find('img:eq(' + slidenumber + ')').attr('src', imgSrc);
                fn_ImgLoaded.push({ slider: $(el[0]).attr('id'), slidenumber: slidenumber });
            }
        }
        function preloadClones(el) {
            var cloneFirstSrc = $(el[0]).find('img:eq(1)').attr('data-' + settings.dataAttributeSuffixName);
            var cloneLastSrc = $(el[0]).find('img:eq(' + el.count + ')').attr('data-' + settings.dataAttributeSuffixName);
            $(el[0]).find('img:eq(0)').attr('src', cloneLastSrc);
            $(el[0]).find('img:eq(' + (el.count + 1) + ')').attr('src', cloneFirstSrc);
        }
        function checkIfImageIsPreloaded(name, slidenumber) {
            for (var i = 0; i < fn_ImgLoaded.length; i++) {
                if (fn_ImgLoaded[i].slider === name && parseInt(fn_ImgLoaded[i].slidenumber) === parseInt(slidenumber)) {
                    return true;
                }
            }
            return false;
        }
        function setFlexsliderHeight(el, cur_height, isPortraitMode) {
            /* el.computeW used while it always returns the correct value */
            var dividedWidth = el.computedW / 3;
            var slider_height = dividedWidth * 2;
            if (el.h > slider_height) slider_height = el.h;
            $(el).find('.flex-viewport').css({ height: slider_height, 'max-height': slider_height, overflow: 'hidden' });
            var slider = $(el).data('flexslider');
            if (slider) {
                slider.doMath();
            }
        }
        function resizeResultItemEnd(houseid) {
            if (new Date() - rtime < itemdelta) {
                setTimeout(resizeResultItemEnd(houseid), itemdelta);
            } else {
                itemtimeout = false;
                /* opening attractions on attracktion map disturbs height of large house pictures :: faulty selector (hotjar): '.fs-container:not(.slick-initialized)' */
                $('#photos-' + houseid).css({ 'height': $('#photos-' + houseid).width() * 0.75, 'max-height': $('#photos-' + houseid).width() * 0.75, overflow: 'hidden' });
                if ($("#photos-" + houseid)[0] && $("#photos-" + houseid)[0].slick) {
                    $("#photos-" + houseid)[0].slick.refresh();
                }
            }
        }
        function loadFunctions(settings, theForm, defaults) {
            if (!settings.showImageLabel) {
                $(settings.sliderControlsContainerSelectorPrefix + settings.houseid + ' .slider-img-name').hide();
            }
            $(settings.sliderControlsContainerSelectorPrefix + settings.houseid + ' .slider-img-name p').html('');
            if (settings.activateGallerySlider) {
                if (designtemplatename === 'SOS' || designtemplatename.toUpperCase() === 'DT1') {
                    $('#photos-' + settings.houseid).css({ 'height': $('#photos-' + settings.houseid).width() * 0.75, 'max-height': $('#photos-' + settings.houseid).width() * 0.75, overflow: 'hidden' });

                    $('#photos-' + settings.houseid + ':not(.slick-initialized)').on('init', function () {
                        $('#photos-' + settings.houseid + ' .slider-img-name .picture_bar_txt').text($('#photos-' + settings.houseid + ' li.slick-active').attr('img-type-name'));
                        $('#photos-' + settings.houseid + ' .slick-dots li:not(:first)').remove();
                        $('#photos-' + settings.houseid + ' .slick-track li img').show();
                    }).slick({
                        slidesToShow: 1,
                        slidesToScroll: 1,
                        autoplay: false,
                        speed: 150,
                        fade: true,
                        infinite: true,
                        touchThreshold: isSmartPhone ? 20 : 5,
                        lazyLoad: 'ondemand', // anticipated
                        dots: true,
                        arrows: true,
                        appendArrows: $("#slider-controls-" + settings.houseid).show(),
                        appendDots: $('#slider-controls-' + settings.houseid + ' .slider-paging-number .picture_bar_txt'),
                        prevArrow: $('#nav_prev_' + settings.houseid),
                        nextArrow: $('#nav_next_' + settings.houseid),
                        customPaging: function (slick) { return slick.currentSlide + 1 + '/' + slick.slideCount; }
                    }).on('afterChange', function (event, slick, currentSlide) {
                        $('#slider-controls-' + settings.houseid + ' .slick-dots li:first').text(slick.options.customPaging.call(null, slick, currentSlide));
                    });
                    var resizeId;
                    $(window).on('resize orientationchange', function () {
                        clearTimeout(resizeId);
                        resizeId = setTimeout(resizeResultItemEnd(settings.houseid), itemdelta);
                    });

                } else {
                    var _preload_images = settings.displayCount < 30;
                    $(settings.sliderContainerSelectorPrefix + settings.houseid).flexslider({
                        animation: "slide",
                        animationLoop: true,
                        slideshow: false,
                        directionNav: false,
                        controlNav: false,
                        useCSS: false,
                        prevText: '',
                        nextText: '',
                        before: function (el) {
                            if (_preload_images) {
                                preloadImage(el, parseInt(el.currentSlide) === el.count - 1 ? 1 : el.currentSlide + 2);
                                preloadImage(el, parseInt(el.currentSlide) === 0 ? el.count : el.currentSlide);
                            }
                        },
                        after: function (el) {
                            var curSlideIndex = parseInt(el.currentSlide);
                            var imgTypeName = $(el[0]).find('img:eq(' + (el.currentSlide + 1) + ')').attr('img-type-name');

                            if (isSmartPhone === 'False') {
                                preloadImage(el, parseInt(el.currentSlide) === el.count - 1 ? 1 : el.currentSlide + 2);
                                preloadImage(el, parseInt(el.currentSlide) === 0 ? el.count : el.currentSlide);
                            }
                            if (el.count > 1) {
                                $(settings.sliderControlsContainerSelectorPrefix + settings.houseid + ' .slider-paging-number').show();
                                $(settings.sliderControlsContainerSelectorPrefix + settings.houseid + ' .slider-paging-number p').html(curSlideIndex + 1 + '/' + el.count);
                            } else {
                                $(settings.sliderControlsContainerSelectorPrefix + settings.houseid + ' .slider-paging-number').hide();
                            }
                            $(settings.sliderControlsContainerSelectorPrefix + settings.houseid + ' .slider-img-name p').html(imgTypeName);
                        },
                        init: function (el) {
                            var imgTypeName = $(el[0]).find('img:eq(' + (el.currentSlide + 1) + ')').attr('img-type-name');
                            if (el.count > 1) {
                                $(settings.sliderControlsContainerSelectorPrefix + settings.houseid + ' .slider-paging-number').show();
                                $(settings.sliderControlsContainerSelectorPrefix + settings.houseid + ' .slider-paging-number p').html('1/' + el.count);
                            } else {
                                $(settings.sliderControlsContainerSelectorPrefix + settings.houseid + ' .slider-paging-number').hide();
                            }
                            $(settings.sliderControlsContainerSelectorPrefix + settings.houseid + ' .slider-img-name p').html(imgTypeName);
                            $(settings.sliderControlsContainerSelectorPrefix + settings.houseid).show();

                            if (el.count <= 1) {
                                $(settings.sliderNavigationSelectorPrefix + settings.houseid).hide();
                            } else if (_preload_images) {
                                preloadImage(el, el.currentSlide + 1); /* first/default image */
                                if (isSmartPhone === 'False') {
                                    preloadImage(el, parseInt(el.currentSlide) === el.count - 1 ? 1 : el.currentSlide + 2);
                                    preloadImage(el, parseInt(el.currentSlide) === 0 ? el.count : el.currentSlide);
                                }
                                preloadClones(el);
                            }
                            if (settings.activeLazyLoad && el.count > 1) {
                                $(settings.sliderContainerSelectorPrefix + settings.houseid + " img.lazy").show().lazyload({
                                    effect: settings.lazyLoadEffect,
                                    threshold: settings.threshold,
                                    event: settings.event
                                });
                            } else {
                                if (typeof settings.data_attribute === 'undefined') settings.data_attribute = 'original';
                                $('img.lazy').show().each(function () {
                                    if ($(this).hasAttr("data-" + settings.data_attribute)) {
                                        $(this).attr("src", $(this).attr("data-" + settings.data_attribute));
                                        $(this).removeAttr("data-" + settings.data_attribute);
                                    }
                                });
                            }
                        },
                        start: function (el) {
                            if (isSmartPhone) {
                                el.h = el.computedW / 3 * 2;
                                el.resize();
                                setFlexsliderHeight(el, el.computedW / 3 * 2, window.innerHeight > window.innerWidth);
                                $(window).on("orientationchange", function (event) {
                                    var flexslider_data = $(settings.sliderContainerSelectorPrefix + settings.houseid).data('flexslider');
                                    setFlexsliderHeight(flexslider_data, flexslider_data.computedW / 3 * 2, event.currentTarget.isPortrait());
                                });
                            }
                        }
                    });
                    $(settings.sliderNavigationSelectorPrefix + settings.houseid + ' a').unbind().on('click', function (e) {
                        e.preventDefault();
                        $(settings.sliderContainerSelectorPrefix + settings.houseid + ' img.lazy').each(function () {
                            if ($(this).hasAttr("data-" + settings.data_attribute)) {
                                $(this).attr("src", $(this).attr("data-" + settings.data_attribute));
                                $(this).removeAttr("data-" + settings.data_attribute);
                            }
                        });
                        $(settings.sliderContainerSelectorPrefix + settings.houseid).unbind().flexslider($(this).attr('data-navigate'));
                        return false;
                    });
                } /* end of flexslider if-else statement */
            } else {
                if (isSmartPhone === 'True') {
                    if (typeof settings.data_attribute === 'undefined') settings.data_attribute = 'original';
                    $('img.lazy').show().each(function () {
                        if ($(this).hasAttr("data-" + settings.data_attribute)) {
                            $(this).attr("src", $(this).attr("data-" + settings.data_attribute));
                            $(this).removeAttr("data-" + settings.data_attribute);
                        }
                    });
                }
            }
            /* handling result element google map functions */
            if (settings.activateMap && settings.showOnMapContainerSelectorClass !== '') {
                $(settings.showOnMapContainerSelectorClass + '[data-map-id="' + settings.houseid + '"]').click(function (e) {
                    if (!$(settings.mapContainerSelectorPrefix + settings.houseid).is(':visible')) {
                        $('body').addClass('removescrollbar');
                        $.fn.loadResultElementFunctions.loadMap(settings);
                    } else {
                        // only hides map, no other functions runs here
                        // map close is a on-the-fly event and is initialized below
                        $(settings.mapContainerSelectorPrefix + settings.houseid).slideUp('fast');
                    }
                });
                if (settings.mapAppendToContainerSelector !== '') {
                    var $mapcontainer = $('<div />', { id: settings.mapContainerSelectorClass + '-' + settings.houseid, 'class': settings.mapContainerSelectorClass, 'data-map-id': settings.houseid });
                    if (settings.map_params.length > 0) {
                        var $map = $('<div />', {
                            'id': 'map-' + settings.houseid,
                            'class': 'google-map',
                            'data-lat': settings.map_params[0] !== null ? settings.map_params[0] : 'Not set',
                            'data-lng': settings.map_params[1] !== null ? settings.map_params[1] : 'Not set',
                            'data-zoom': settings.map_params[2],
                            'data-address1': settings.map_params[3],
                            'data-address2': settings.map_params[4],
                            'data-photosrc': settings.map_params[5],
                            'data-phototext': settings.map_params[6],
                            'data-price': settings.map_params[7]
                        });
                        var $closemap = $('<div />', {
                            id: 'closemap-' + settings.houseid,
                            'class': 'closemap',
                            'data-map-id': settings.houseid
                        }).click(function (e) {
                            $.fn.loadResultElementFunctions.closeMap(settings);
                            $('body').removeClass('removescrollbar');
                            $('#result_new_searchbar').css({ 'z-index': 1999 });
                            $('#search_criteria').show(); /* hide call is in loadMap => lazyLoadGoogleMap method */
                        });
                        var $directionPanel = $('<div />', { id: 'direction-panel-' + settings.houseid, 'class': 'direction-panel' }).css({ 'width': 500 });
                        $mapcontainer.append($map).append($closemap);
                    } else {
                        console.warn("Map parameters not set");
                    }
                    $(settings.mapAppendToContainerSelector).append($mapcontainer);
                }
            } else {
                if (settings.activateMap) {
                    if (settings.showOnMapContainerSelectorClass === '') {
                        console.warn('Result Element warning: NotSet showOnMapContainerSelectorClass on ' + settings.houseid);
                    }
                }
            }
        }
    };
    $.fn.loadResultElementFunctions.initialize = function (settings) {
        if (settings.map_params && settings.map_params.length > 0) { /* 0:lat, 1:lng, 2:zoom, 3:address1, 4:address2, 5:photosrc, 6:phototext, 7:price */
            routemarkers = [];
            if (!document.getElementById("map-" + settings.houseid)) {
                console.warn("Google Maps target container (map-" + settings.houseid + ") not found");
            }
            if (typeof settings.map_params[0] !== 'undefined' && typeof settings.map_params[1] !== 'undefined') {
                var myLatlng = new google.maps.LatLng(parseFloat(settings.map_params[0]), parseFloat(settings.map_params[1]));
                var Styles = [
                    {
                        featureType: "poi.business",
                        elementType: "labels.text",
                        stylers: [
                            { visibility: "off" }
                        ]
                    }
                ];
                var mapOptions = { center: myLatlng, zoom: parseInt(settings.map_params[2]), mapTypeId: google.maps.MapTypeId.ROADMAP, scaleControl: true, styles: Styles};
                var map = new google.maps.Map(document.getElementById("map-" + settings.houseid), mapOptions);
                var marker = new google.maps.Marker({
                    position: myLatlng,
                    map: map,
                    title: settings.map_params[3],
                    icon: '//images.sologstrand.dk/images/ikoner/icon_map.png',
                    metadata: { id: 1 }
                });
                routemarkers.push(marker);
                if (settings.useRouteFunctions && isSmartPhone === 'False') {
                    house_directionsDisplay = new google.maps.DirectionsRenderer({
                        draggable: false,
                        suppressInfoWindows: true,
                        suppressMarkers: true,
                        preserveViewport: true
                    });
                    var centerControlDiv = document.createElement('div');
                    var centerControl = new $.fn.loadResultElementFunctions.drawRouteButton(settings, centerControlDiv, map);
                    centerControlDiv.index = 1;
                    map.controls[google.maps.ControlPosition.TOP_LEFT].push(centerControlDiv);
                }
            } else {
                console.warn('Lat/lng undefined. Please check data attribute extractions.');
            }
        } else {
            console.warn('Invalid parameter length: ' + settings.map_params);
        }
    };
    $.fn.loadResultElementFunctions.loadMap = function (settings) {
        $.fn.loadResultElementFunctions.lazyLoadGoogleMap(settings);
    };
    $.fn.loadResultElementFunctions.drawRouteButton = function (settings, controlDiv, $map) {
        if (cookieexists('clientgeo') && /^[\],:{}\s]*$/.test(getcookie('clientgeo').replace(/\\["\\\/bfnrtu]/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
            $('#draw-route-' + settings.houseid).remove();
            $('#draw-new-route-' + settings.houseid).remove();
            var box_line_height = '26px';
            var client_geo = JSON.parse(getcookie('clientgeo'));
            var draw_button = $('<div />', { id: 'draw-route-' + settings.houseid }).css({
                'display': 'inline-block',
                'background-color': '#fff',
                'border': '2px solid #fff',
                'border-radius': '2px',
                'box-shadow': '0 1px 1px #ccc',
                'cursor': 'pointer',
                'margin-top': '10px',
                'text-align': 'center',
                'line-height': box_line_height,
                'padding-left': '5px',
                'padding-right': '5px'
            }).attr('title', hd_search_draw + ' ' + client_geo.name).click(function () {
                $.fn.loadResultElementFunctions.drawRoute(controlDiv, settings, $map);
                $('#draw-route-' + settings.houseid).hide();
                $('#draw-new-route-' + settings.houseid).show();
            }).html(hd_search_draw + ' ' + client_geo.name);
            $(controlDiv).append($(draw_button));
            var new_route_button = $('<div />', { id: 'draw-new-route-' + settings.houseid }).css({
                'display': 'inline-block',
                'background-color': '#fff',
                'border': '2px solid #fff',
                'border-radius': '2px',
                'box-shadow': '0 1px 1px #ccc',
                'cursor': 'pointer',
                'margin-top': '10px',
                'margin-left': '3px',
                'text-align': 'center',
                'line-height': box_line_height,
                'padding-left': '5px',
                'padding-right': '5px'
            }).attr('title', hd_search_new).click(function () {
                $.fn.loadResultElementFunctions.newRouteButton(controlDiv, settings, $map, house_directionsDisplay);
            }).html(hd_search_new);
            $(controlDiv).append($(new_route_button));
        } else {
            $('#geo-box-' + settings.houseid).remove();
            var geobox = $('<div />', { id: 'geo-box-' + settings.houseid }).css({
                'display': 'inline-block',
                'background-color': '#fff',
                'border': '2px solid #fff',
                'border-radius': '2px',
                'box-shadow': '0 1px 1px #ccc',
                'cursor': 'pointer',
                'margin-top': '10px',
                'text-align': 'center',
                'line-height': box_line_height,
                'padding-left': '5px',
                'padding-right': '5px'
            }).html(hd_search_choose_city);
            var geo_box_input = $('<input />', { 'type': 'search', 'id': 'city_autocomplete' }).css({
                'color': '#565656',
                'font-family': 'Roboto,Arial,sans-serif',
                'font-size': '14px',
                'height': '24px',
                'width': '300px',
                'padding': '0',
                'margin-left': '4px'
            }).focus(function () {
                var myCustomEuropeBounds = new google.maps.LatLngBounds();
                myCustomEuropeBounds.extend({ lat: 71.8666658, lng: -29.2202725 }); // oppe i Grønland
                myCustomEuropeBounds.extend({ lat: 35.48797, lng: -36.60308 }); // udenfor Portugal
                myCustomEuropeBounds.extend({ lat: 36.05844, lng: 35.46723 }); // nederst i Tyrkiet
                myCustomEuropeBounds.extend({ lat: 73.63724, lng: 50.93598 }); // nord for Rusland
                var ac_options = {
                    bounds: myCustomEuropeBounds,
                    strictBounds: true,
                    types: ['(cities)']
                };
                var autocomplete = new google.maps.places.Autocomplete(document.getElementById('city_autocomplete'), ac_options);
                google.maps.event.addListener(autocomplete, 'place_changed', function () {
                    var place = autocomplete.getPlace();
                    if (place !== undefined && place.geometry !== undefined) {
                        var client_geo = {
                            "name": place.name,
                            "lat": place.geometry.location.lat(),
                            "lng": place.geometry.location.lng()
                        };
                        setcookie("clientgeo", JSON.stringify(client_geo), 365);
                        $('#geo-box-' + settings.houseid).remove();
                        $.fn.loadResultElementFunctions.drawRouteButton(settings, controlDiv, $map);
                        $('#draw-route-' + settings.houseid).remove();
                        $.fn.loadResultElementFunctions.drawRoute(controlDiv, settings, $map);
                    }
                });
            });
            var geo_box_button = $('<button />', { 'autofocus': 'autofocus' }).css({
                'color': '#565656',
                'font-family': 'Roboto,Arial,sans-serif',
                'font-size': '11px',
                'height': '26px',
                'line-height': '26px',
                'margin-left': '2px',
                'padding': '0 4px'
            }).html(hd_search_choose_city).click(function () {
                $('#geo-box-' + settings.houseid).remove();
                $.fn.loadResultElementFunctions.drawRouteButton(settings, controlDiv, $map);
                $('#draw-route-' + settings.houseid).remove();
                $.fn.loadResultElementFunctions.drawRoute(controlDiv, settings, $map);
            });
            var geo_result_box = $('<div />', { 'id': 'address-result-' + settings.houseid }).css({
                'display': 'none',
                'color': '#565656',
                'font-family': 'Roboto,Arial,sans-serif',
                'font-size': '14px'
            }).html(shows_text);
            $(geobox).append($(geo_box_input)).append($(geo_result_box));
            $(controlDiv).append($(geobox));
        }
    };
    $.fn.loadResultElementFunctions.newRouteButton = function (controlDiv, settings, $map, house_directionsDisplay) {
        deletecookie('clientgeo');
        $('#draw-new-route-' + settings.houseid).remove();
        $('#draw-route-' + settings.houseid).remove();
        if (house_directionsDisplay) {
            house_directionsDisplay.setMap(null);
            house_directionsDisplay.setPanel(null);
        }
        $('#remove-route-' + settings.houseid).remove();
        $.fn.loadResultElementFunctions.drawRouteButton(settings, controlDiv, $map);
        $map.setCenter(new google.maps.LatLng(settings.map_params[0], settings.map_params[1]));
        //if (isNumber(settings.map_params[2])) $map.setZoom(settings.map_params[2]);

        $.fn.loadResultElementFunctions.drawRouteButton(settings, controlDiv, $map);
    };
    $.fn.loadResultElementFunctions.removeRouteButton = function (controlDiv, settings, $map, house_directionsDisplay) {
        $('#draw-new-route-' + settings.houseid).remove();
        var $button = $('<div />', { id: 'remove-route-' + settings.houseid }).css({
            'display': 'inline-block',
            'background-color': '#fff',
            'border': '2px solid #fff',
            'border-radius': '2px',
            'box-shadow': '0 1px 1px #ccc',
            'cursor': 'pointer',
            'margin-top': '10px',
            'text-align': 'center',
            'line-height': '26px',
            'padding-left': '5px',
            'padding-right': '5px'
        }).attr('title', hd_remove_route).click(function () {
            if (house_directionsDisplay) {
                house_directionsDisplay.setMap(null);
                house_directionsDisplay.setPanel(null);
            }
            $('#remove-route-' + settings.houseid).remove();
            $('#direction-container-' + settings.houseid).remove();
            $('#show-hide-route-' + settings.houseid).remove();
            $.fn.loadResultElementFunctions.drawRouteButton(settings, controlDiv, $map);
            $map.setCenter(new google.maps.LatLng(settings.map_params[0], settings.map_params[1]));
            //if (isNumber(settings.map_params[2])) $map.setZoom(settings.map_params[2]);
            for (var i = 0; i < routemarkers.length; i++) {
                if (parseInt(routemarkers[i].metadata.id) === 2) routemarkers[i].setMap(null);
            }
        }).html(hd_remove_route);
        $(controlDiv).append($button);
        var new_route_button = $('<div />', { id: 'draw-new-route-' + settings.houseid }).css({
            'display': 'inline-block',
            'background-color': '#fff',
            'border': '2px solid #fff',
            'border-radius': '2px',
            'box-shadow': '0 1px 1px #ccc',
            'cursor': 'pointer',
            'margin-top': '10px',
            'margin-left': '3px',
            'text-align': 'center',
            'line-height': '26px',
            'padding-left': '5px',
            'padding-right': '5px'
        }).attr('title', hd_search_new).click(function () {
            $('#direction-container-' + settings.houseid).remove();
            $('#show-hide-route-' + settings.houseid).remove();
            $.fn.loadResultElementFunctions.newRouteButton(controlDiv, settings, $map, house_directionsDisplay);
            for (var i = 0; i < routemarkers.length; i++) {
                if (parseInt(routemarkers[i].metadata.id) === 2) routemarkers[i].setMap(null);
            }
        }).html(hd_search_new);
        $(controlDiv).append($(new_route_button));
    };
    $.fn.loadResultElementFunctions.drawRoute = function (controlDiv, settings, $map) {
        var $direction_container = $('<div />', { id: 'direction-container-' + settings.houseid }).css({ 'position': 'relative', 'width': 0, 'height': 0 });
        var $direction_holder = $('<div />', { id: 'direction-holder-' + settings.houseid }).css({ 'background-color': '#fff', 'width': 500, 'height': 400, 'margin-top': 5 });
        var $directionPanel = $('<div />', { id: 'direction-panel-' + settings.houseid, 'class': 'direction-panel' }).css({ 'height': 400, 'overflow': 'auto' });
        $.fn.loadResultElementFunctions.removeRouteButton(controlDiv, settings, $map, house_directionsDisplay);

        var show_hide_button = $('<div />', { id: 'show-hide-route-' + settings.houseid }).css({
            'display': 'inline-block',
            'background-color': '#fff',
            'border': '2px solid #fff',
            'border-radius': '2px',
            'box-shadow': '0 1px 1px #ccc',
            'cursor': 'pointer',
            'margin-top': '10px',
            'margin-left': '3px',
            'text-align': 'center',
            'line-height': '26px',
            'padding-left': '5px',
            'padding-right': '5px'
        }).attr('title', 'Hide route description').click(function () {
            if ($('#direction-holder-' + settings.houseid).is(':visible')) {
                $(this).html(hd_show_route);
                $('#direction-holder-' + settings.houseid).hide();
            } else {
                $(this).html(hd_hide_route);
                $('#direction-holder-' + settings.houseid).show();
            }
        }).html(hd_hide_route);
        $(controlDiv).append($(show_hide_button)).append($direction_container.append($direction_holder.append($directionPanel)));

        var directionsService = new google.maps.DirectionsService();
        if (house_directionsDisplay) {
            house_directionsDisplay.setMap($map);
            house_directionsDisplay.setPanel(document.getElementById('direction-panel-' + settings.houseid));
        }
        var house = new google.maps.LatLng(settings.map_params[0], settings.map_params[1]);
        if (cookieexists('clientgeo')) {
            var client_geo = JSON.parse(getcookie('clientgeo'));
            var home = new google.maps.LatLng(client_geo.lat, client_geo.lng);
            var home_marker = new google.maps.Marker({
                position: home,
                map: $map,
                title: settings.map_params[3],
                icon: '//images.sologstrand.dk/images/ikoner/icon_map.png',
                metadata: { id: 2 }
            });
            routemarkers.push(home_marker);
            var request = {
                origin: home,
                destination: house,
                optimizeWaypoints: true,
                travelMode: google.maps.TravelMode.DRIVING
            };
            directionsService.route(request, function (response, status) {
                if (status === google.maps.DirectionsStatus.OK) {
                    house_directionsDisplay.setDirections(response);
                } else {
                    $('#show-hide-route-' + settings.houseid).html(hd_show_route);
                    $('#direction-holder-' + settings.houseid).hide();
                    alert(status);
                }
            });
        }
    };
    $.fn.loadResultElementFunctions.fillInAddress = function () {
        var componentForm = {
            street_number: 'short_name',
            route: 'long_name',
            locality: 'long_name',
            administrative_area_level_1: 'short_name',
            country: 'long_name',
            postal_code: 'short_name'
        };
        var place = autocomplete.getPlace();
        for (var component in componentForm) {
            document.getElementById(component).value = '';
            document.getElementById(component).disabled = false;
        }
        for (var i = 0; i < place.address_components.length; i++) {
            var addressType = place.address_components[i].types[0];
            if (componentForm[addressType]) {
                var val = place.address_components[i][componentForm[addressType]];
                document.getElementById(addressType).value = val;
            }
        }
    };
    $.fn.loadResultElementFunctions.geolocate = function (autocomplete) {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(function (position) {
                var geolocation = {
                    lat: position.coords.latitude,
                    lng: position.coords.longitude
                };
                var circle = new google.maps.Circle({
                    center: geolocation,
                    radius: position.coords.accuracy
                });
                autocomplete.setBounds(circle.getBounds());
            });
        }
    };
    $.fn.loadResultElementFunctions.lazyLoadGoogleMap = function (settings) { /* loads only map once */
        $('#search_criteria').hide();
        if (!isMapLoaded(settings.houseid)) {
            if (settings.map_params && settings.map_params.length > 0) {
                map_Loaded.push({ regnr: settings.houseid }); /* must be placed in front of async method */
                var key_value = '';
                if (designtemplatename === 'SOS' || designtemplatename.toUpperCase() === 'DT1') {
                    key_value = '&key=' + googlemapskey;
                }
                var aq_display_selector = sessionStorage.getItem('displayOfAlternativeQueriesSelector'); /* used for fixing z-index bugs of AQ displayer */
                $.getScript('https://www.google.com/jsapi', function () {
                    google.load('maps', '3.33', {
                        other_params: 'libraries=places&language=' + (site_lang === 'UK' ? cal_regional : site_lang) + '&types=geocode' + key_value, callback: function () {
                            $.fn.loadResultElementFunctions.initialize(settings);
                            $('#result_new_searchbar').css({ 'z-index': 1 });
                            if (designtemplatename === 'SOS') {
                                $(aq_display_selector).parent().css('z-index', 10); /* hiding (put behind) AQ list bar */
                            }
                        }
                    });
                }).done(function () {
                    if ($(settings.mapContainerSelectorPrefix + settings.houseid).exists()) {
                        $(settings.mapContainerSelectorPrefix + settings.houseid).show().slideDown();
                    } else {
                        console.warn("Map container for house " + settings.houseid + " not found");
                    }
                }).fail(function (jqxhr, err_settings, ex) {
                    $(settings.mapContainerSelectorPrefix + settings.houseid).show().text("Could not load Google Map script. Error message: " + jqxhr);
                });
            } else {
                console.warn("Map parameter array not set");
            }
        } else {
            $(settings.mapContainerSelectorPrefix + settings.houseid).show().slideDown('slow');
            $('#result_new_searchbar').css({ 'z-index': 1 });
        }
        function isMapLoaded(regnr) {
            for (var i = 0; i < map_Loaded.length; i++) {
                if (map_Loaded[i].regnr === regnr) {
                    return true;
                }
            }
            return false;
        }
    };
    $.fn.loadResultElementFunctions.closeMap = function (settings) {
        $(settings.mapContainerSelectorPrefix + settings.houseid).slideUp('fast');
        var aq_display_selector = sessionStorage.getItem('displayOfAlternativeQueriesSelector'); /* used for fixing z-index bugs of AQ displayer */
        if (designtemplatename === 'SOS') {
            $(aq_display_selector).parent().css('z-index', ''); /* showing AQ list bar */
        }
    };
})(jQuery, window, document); /* loadResultElementFunctions */
(function ($, window, document, undefined) {
    var $window = $(window), viewport_timeout;
    $.fn.viewportloader = function (options) {
        var elements = this;
        var defaults = {
            threshold: 200, /* only used for above-the-fold */
            event: "load scroll resize",
            effect: "fadeIn",
            data_attribute: "original",
            timeout: 50,
            item_selector: 'img',
            overlay_map_selector: '',
            placeholder: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"
        };
        var settings = $.extend({}, defaults, options);
        function update() {
            for (var i = 0; i < elements.length; i++) {
                $(elements[i]).each(function (index, obj) {
                    $(obj).find('img:not(.viewport_loaded)').filter(':in-viewport').each(function (index, element) {
                        $(this).addClass('viewport_loaded').attr('src', $(this).attr('data-' + settings.data_attribute)).removeAttr('data-' + settings.data_attribute);
                        if (settings.overlay_map_selector !== '') {
                            $(this).prev().show();
                        }
                    });
                    $(obj).find('img:not(.viewport_loaded)').filter(':above-the-fold(' + settings.threshold + ')').each(function (index, element) {
                        $(this).addClass('viewport_loaded').attr('src', $(this).attr('data-' + settings.data_attribute)).removeAttr('data-' + settings.data_attribute);
                        if (settings.overlay_map_selector !== '') {
                            $(this).prev().show();
                        }
                    });
                });
            }
        }
        $window.on(settings.event, function (e) {
            if (viewport_timeout) {
                clearTimeout(viewport_timeout);
            }
            viewport_timeout = setTimeout(function () {
                update();
            }, settings.timeout);
        });
        $(document).ready(function () {
            setTimeout(function () {
                update();
            }, 1);
        });
    };
})(jQuery, window, document); /* viewport loader */
(function ($, window, document, undefined) {
    var _monthNames = [], _monthNamesShort = [], _dayNames = [], _dayNamesShort = [], _dayNamesMin = [], _currentText = 'Today', _prevText = '', _nextText = '';
    if (typeof site_lang === 'undefined') site_lang = "";
    switch (site_lang) {
        case 'DK':
            _prevText = '&#x3c;Forrige';
            _nextText = 'N&aelig;ste&#x3e;';
            _currentText = 'Idag';
            _monthNames = ['Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December'];
            _monthNamesShort = ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'];
            _dayNames = ['S&oslash;ndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'L&oslash;rdag'];
            _dayNamesShort = ['S&oslash;n', 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'L&oslash;r'];
            _dayNamesMin = ['S&oslash;', 'Ma', 'Ti', 'On', 'To', 'Fr', 'L&oslash;'];
            break;
        case 'DE':
            _prevText = '&#x3c;zur&uuml;ck';
            _nextText = 'Vor&#x3e;';
            _currentText = 'heute';
            _monthNames = ['Januar', 'Februar', 'M&auml;rz', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'];
            _monthNamesShort = ['Jan', 'Feb', 'M&auml;r', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'];
            _dayNames = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
                _dayNamesShort = ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'];
            _dayNamesMin = ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'];
            break;
        case 'NO':
            _prevText = '&laquo;Forrige';
            _nextText = 'Neste&raquo;';
            _currentText = 'I dag';
            _monthNames = ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'];
            _monthNamesShort = ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'];
            _dayNamesShort = ['s&oslash;n', 'man', 'tir', 'ons', 'tor', 'fre', 'l&oslash;r'];
            _dayNames = ['s&oslash;ndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'l&oslash;rdag'];
            _dayNamesMin = ['s&oslash;', 'ma', 'ti', 'on', 'to', 'fr', 'l&oslash;'];
            break;
        case 'SE':
            _prevText = '&laquo;F&ouml;rra';
            _nextText = 'N&auml;sta&raquo;';
            _currentText = 'Idag';
            _monthNames = ['Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December'];
            _monthNamesShort = ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'];
            _dayNamesShort = ['S&ouml;n', 'M&aring;n', 'Tis', 'Ons', 'Tor', 'Fre', 'L&ouml;r'];
            _dayNames = ['S&ouml;ndag', 'M&aring;ndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'L&ouml;rdag'];
            _dayNamesMin = ['S&ouml;', 'M&aring;', 'Ti', 'On', 'To', 'Fr', 'L&ouml;'];
            break;
        case 'UK':
            _prevText = 'Prev';
            _nextText = 'Next';
            _currentText = 'Today';
            _monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
            _monthNamesShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
            _dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
            _dayNamesShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
            _dayNamesMin = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
            break;
        case 'NL':
            _prevText = '←';
            _nextText = '→';
            _currentText = 'Vandaag';
            _monthNames = ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'];
            _monthNamesShort = ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'];
            _dayNames = ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'];
            _dayNamesShort = ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'];
            _dayNamesMin = ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'];
            break;
        default:
            _prevText = 'Prev';
            _nextText = 'Next';
            _currentText = 'Today';
            _monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
            _monthNamesShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
            _dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
            _dayNamesShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
            _dayNamesMin = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
            break;
    }
    if ($.datepicker) {
        $.datepicker.regional[cal_regional] = {
            closeText: closeWindowText,
            prevText: _prevText,
            nextText: _nextText,
            currentText: _currentText,
            monthNames: _monthNames,
            monthNamesShort: _monthNamesShort,
            dayNames: _dayNames,
            dayNamesShort: _dayNamesShort,
            dayNamesMin: _dayNamesMin,
            weekHeader: weekText,
            dateFormat: 'dd-mm-yy',
            firstDay: 1,
            isRTL: false,
            showMonthAfterYear: false,
            yearSuffix: ''
        };
        $.datepicker.setDefaults($.datepicker.regional[cal_regional]);
    }
})(jQuery, window, document); /* datepicker defaults */
function makeSelectorSticky(element_selector, offset, addCssClass, prependContainer, prependToSelector, prependCssClass, callback) {
    if ($(element_selector).exists()) {
        var sticky_timeout, scroll_position = $(window).scrollTop(), stickyTop = $(element_selector).offset().top;
        $(window).on('scroll load', function (e) {
            scroll_position = $(window).scrollTop();
            if (sticky_timeout) {
                clearTimeout(sticky_timeout);
            }
            sticky_timeout = setTimeout(function () {
                if (stickyTop - offset > scroll_position) {
                    if ($(element_selector).hasClass(addCssClass)) {
                        if (prependContainer) {
                            $('.' + prependCssClass).remove();
                        }
                        $(element_selector).removeClass(addCssClass);
                    }
                } else {
                    if (!$(element_selector).hasClass(addCssClass)) {
                        if (prependContainer) {
                            $(prependToSelector).prepend(
                                $('<div />', { 'class': prependCssClass }).html('')
                            );
                        }
                        $(element_selector).addClass(addCssClass);
                        if (typeof callback === 'function') {
                            callback.call(this, null);
                        }
                    }
                }
            }, 20);
        });
    } else {
        console.warn(element_selector + ' doesn´t exists');
    }
}
function addHtmlToContainer(to_element_selector, html_string, bPrepend) {
    if ($(to_element_selector).exists()) {
        var $content = $('<div />', { 'class': $(to_element_selector).attr('class').replace(/^(\S*).*/, '$1') + '_added_html' }).html(html_string);
        if (bPrepend) {
            $(to_element_selector).prepend($content);
        } else {
            $(to_element_selector).append($content);
        }
    } else {
        console.warn(to_element_selector + ' dont exists');
    }
}
var maxhistory = 5;
function addToFavorites(obj, houseid, season, checkedText, uncheckedText, language, changeTextContainerSelector, elementToMove, moveElementTo) {
    if (!$(obj).hasClass('fav_active')) { // obj.checked || $(changeTextContainerSelector).text().indexOf(checkedText) > -1 || 
        var objCOOKIE = getcookie('HLCOOKIE'), houses_in_hl = objCOOKIE.indexOf('#') > -1 ? objCOOKIE.split('#').length : 0;
        if (houses_in_hl < 20) {
            $(obj).addClass('fav_active');
            if (site_lang === "DK") {
                $(elementToMove).animate_from_to(moveElementTo, elementToMove, obj, { pixels_per_second: 1200 + $(window).scrollTop(), msg_text: 'Hus ' + houseid + ' er tilf&oslash;jet huskelisten', msg_container: '#msg_displayer_' + houseid });
            } else if (site_lang === "DE") {
                $(elementToMove).animate_from_to(moveElementTo, elementToMove, obj, { pixels_per_second: 1200 + $(window).scrollTop(), msg_text: 'Haus ' + houseid + ' zu Ihrer Merkliste hinzugef&uuml;gt', msg_container: '#msg_displayer_' + houseid });
            } else if (site_lang === "NO") {
                $(elementToMove).animate_from_to(moveElementTo, elementToMove, obj, { pixels_per_second: 1200 + $(window).scrollTop(), msg_text: 'Hus ' + houseid + ' er f&oslash;yd til huskelappen', msg_container: '#msg_displayer_' + houseid });
            } else if (site_lang === "SE") {
                $(elementToMove).animate_from_to(moveElementTo, elementToMove, obj, { pixels_per_second: 1200 + $(window).scrollTop(), msg_text: 'Stuga ' + houseid + ' har lagts till på minneslistan', msg_container: '#msg_displayer_' + houseid });
            } else if (site_lang === "UK") {
                $(elementToMove).animate_from_to(moveElementTo, elementToMove, obj, { pixels_per_second: 1200 + $(window).scrollTop(), msg_text: 'House ' + houseid + ' has been added to your personal list', msg_container: '#msg_displayer_' + houseid });
            } else if (site_lang === "NL") {
                $(elementToMove).animate_from_to(moveElementTo, elementToMove, obj, { pixels_per_second: 1200 + $(window).scrollTop(), msg_text: 'Huis ' + houseid + ' is toegevoegd aan uw lijst', msg_container: '#msg_displayer_' + houseid });
            }
            addHouseElement(houseid, season, 'HLCOOKIE', 365);
            if (uncheckedText !== '') $(changeTextContainerSelector).text(uncheckedText);
        } else {
            var max_warn_text = 'Maximum amount of holiday homes in favtorits has been reached!';
            switch (site_lang) {
                case 'DK': max_warn_text = 'Maksimum antal sommerhuse i huskelisten er nået!'; break;
                case 'DE': max_warn_text = 'Maximale Anzahl der Ferienhäuser in der Liste wurde erreicht!'; break;
                case 'NO': max_warn_text = 'Maksimalt antall fritidsboliger i listen er nådd!'; break;
                case 'NL': max_warn_text = 'Maximum aantal vakantiehuizen in de lijst is bereikt!'; break;
                case 'SE': max_warn_text = 'Maximalt antal fritidshus i listan har uppnåtts!'; break;
                case 'UK': max_warn_text = 'Maximum amount of holiday homes in favtorits has been reached!'; break;
            }
            alert(max_warn_text);
        }
    } else { // if (!obj.checked || $(changeTextContainerSelector).text().indexOf(uncheckedText) > -1 || $(obj).hasClass('fav_active'))
        $(obj).removeClass('fav_active');
        if (site_lang === "DK") {
            $(moveElementTo).animate_from_to(elementToMove, elementToMove, obj, { pixels_per_second: 2000 + $(window).scrollTop(), msg_text: 'Hus ' + houseid + ' er fjernet fra huskelisten', msg_container: '#msg_displayer_' + houseid });
        }
        if (site_lang === "DE") {
            $(moveElementTo).animate_from_to(elementToMove, elementToMove, obj, { pixels_per_second: 2000 + $(window).scrollTop(), msg_text: 'Haus ' + houseid + ' wurde aus Ihrer Merkliste entfernt', msg_container: '#msg_displayer_' + houseid });
        }
        if (site_lang === "NO") {
            $(moveElementTo).animate_from_to(elementToMove, elementToMove, obj, { pixels_per_second: 2000 + $(window).scrollTop(), msg_text: 'Hus ' + houseid + ' er tatt bort fra huskelappen', msg_container: '#msg_displayer_' + houseid });
        }
        if (site_lang === "SE") {
            $(moveElementTo).animate_from_to(elementToMove, elementToMove, obj, { pixels_per_second: 2000 + $(window).scrollTop(), msg_text: 'Stuga ' + houseid + ' har tagits bort fr&aring;n minneslistan', msg_container: '#msg_displayer_' + houseid });
        }
        if (site_lang === "UK") {
            $(moveElementTo).animate_from_to(elementToMove, elementToMove, obj, { pixels_per_second: 2000 + $(window).scrollTop(), msg_text: 'House ' + houseid + ' has been removed from your personal list', msg_container: '#msg_displayer_' + houseid });
        }
        if (site_lang === "NL") {
            $(moveElementTo).animate_from_to(elementToMove, elementToMove, obj, { pixels_per_second: 2000 + $(window).scrollTop(), msg_text: 'Huis ' + houseid + ' is verwijderd uit uw lijst', msg_container: '#msg_displayer_' + houseid });
        }
        removeHouseElement(houseid, 'HLCOOKIE', 365);
        if (checkedText !== '') $(changeTextContainerSelector).text(checkedText);
    }
    getHouselistCount(moveElementTo);
}
function addToFavoritesmobile(obj, houseid, season, checkedText, uncheckedText, language, changeTextContainerSelector, elementToMove, moveElementTo) {
    if (!$(obj).hasClass('fav_active')) { // obj.checked || $(changeTextContainerSelector).text().indexOf(checkedText) > -1 || 
        var objCOOKIE = getcookie('HLCOOKIE'), houses_in_hl = objCOOKIE.indexOf('#') > -1 ? objCOOKIE.split('#').length : 0;
        if (houses_in_hl < 20) {
            $(obj).addClass('fav_active');
            if (site_lang === "DK") {
                $(elementToMove).animate_from_to(moveElementTo, elementToMove, obj, { pixels_per_second: 1200 + $(window).scrollTop(), msg_text: 'Hus ' + houseid + ' er tilf&oslash;jet huskelisten', msg_container: '#msg_displayer_' + houseid });
            } else if (site_lang === "DE") {
                $(elementToMove).animate_from_to(moveElementTo, elementToMove, obj, { pixels_per_second: 1200 + $(window).scrollTop(), msg_text: 'Haus ' + houseid + ' zu Ihrer Merkliste hinzugef&uuml;gt', msg_container: '#msg_displayer_' + houseid });
            } else if (site_lang === "NO") {
                $(elementToMove).animate_from_to(moveElementTo, elementToMove, obj, { pixels_per_second: 1200 + $(window).scrollTop(), msg_text: 'Hus ' + houseid + ' er f&oslash;yd til huskelappen', msg_container: '#msg_displayer_' + houseid });
            } else if (site_lang === "SE") {
                $(elementToMove).animate_from_to(moveElementTo, elementToMove, obj, { pixels_per_second: 1200 + $(window).scrollTop(), msg_text: 'Stuga ' + houseid + ' har lagts till på minneslistan', msg_container: '#msg_displayer_' + houseid });
            } else if (site_lang === "UK") {
                $(elementToMove).animate_from_to(moveElementTo, elementToMove, obj, { pixels_per_second: 1200 + $(window).scrollTop(), msg_text: 'House ' + houseid + ' has been added to your personal list', msg_container: '#msg_displayer_' + houseid });
            } else if (site_lang === "NL") {
                $(elementToMove).animate_from_to(moveElementTo, elementToMove, obj, { pixels_per_second: 1200 + $(window).scrollTop(), msg_text: 'Huis ' + houseid + ' is toegevoegd aan uw lijst', msg_container: '#msg_displayer_' + houseid });
            }
            addHouseElement(houseid, season, 'HLCOOKIE', 365);
            if (uncheckedText !== '') $(changeTextContainerSelector).text(uncheckedText);
        } else {
            var max_warn_text = 'Maximum amount of holiday homes in favtorits has been reached!';
            switch (site_lang) {
                case 'DK': max_warn_text = 'Maksimum antal sommerhuse i huskelisten er nået!'; break;
                case 'DE': max_warn_text = 'Maximale Anzahl der Ferienhäuser in der Liste wurde erreicht!'; break;
                case 'NO': max_warn_text = 'Maksimalt antall fritidsboliger i listen er nådd!'; break;
                case 'NL': max_warn_text = 'Maximum aantal vakantiehuizen in de lijst is bereikt!'; break;
                case 'SE': max_warn_text = 'Maximalt antal fritidshus i listan har uppnåtts!'; break;
                case 'UK': max_warn_text = 'Maximum amount of holiday homes in favtorits has been reached!'; break;
            }
            alert(max_warn_text);
        }
    } else { // if (!obj.checked || $(changeTextContainerSelector).text().indexOf(uncheckedText) > -1 || $(obj).hasClass('fav_active'))
        $(obj).removeClass('fav_active');
        if (site_lang === "DK") {
            $(moveElementTo).animate_from_to(elementToMove, elementToMove, obj, { pixels_per_second: 2000 + $(window).scrollTop(), msg_text: 'Hus ' + houseid + ' er fjernet fra huskelisten', msg_container: '#msg_displayer_' + houseid });
        }
        if (site_lang === "DE") {
            $(moveElementTo).animate_from_to(elementToMove, elementToMove, obj, { pixels_per_second: 2000 + $(window).scrollTop(), msg_text: 'Haus ' + houseid + ' wurde aus Ihrer Merkliste entfernt', msg_container: '#msg_displayer_' + houseid });
        }
        if (site_lang === "NO") {
            $(moveElementTo).animate_from_to(elementToMove, elementToMove, obj, { pixels_per_second: 2000 + $(window).scrollTop(), msg_text: 'Hus ' + houseid + ' er tatt bort fra huskelappen', msg_container: '#msg_displayer_' + houseid });
        }
        if (site_lang === "SE") {
            $(moveElementTo).animate_from_to(elementToMove, elementToMove, obj, { pixels_per_second: 2000 + $(window).scrollTop(), msg_text: 'Stuga ' + houseid + ' har tagits bort fr&aring;n minneslistan', msg_container: '#msg_displayer_' + houseid });
        }
        if (site_lang === "UK") {
            $(moveElementTo).animate_from_to(elementToMove, elementToMove, obj, { pixels_per_second: 2000 + $(window).scrollTop(), msg_text: 'House ' + houseid + ' has been removed from your personal list', msg_container: '#msg_displayer_' + houseid });
        }
        if (site_lang === "NL") {
            $(moveElementTo).animate_from_to(elementToMove, elementToMove, obj, { pixels_per_second: 2000 + $(window).scrollTop(), msg_text: 'Huis ' + houseid + ' is verwijderd uit uw lijst', msg_container: '#msg_displayer_' + houseid });
        }
        removeHouseElement(houseid, 'HLCOOKIE', 365);
        if (checkedText !== '') $(changeTextContainerSelector).text(checkedText);
    }
    getHouselistCount(".favorites_number_mobile");
}
function addToCompare(obj, houseid, season, startdate, enddate, price) {
    if (obj.checked) {
        addHouseElement(houseid, season + '*' + startdate + '*' + enddate + '*' + price, 'HLCOOKIE');
    } else {
        removeHouseElement(houseid, 'HLCOOKIE');
    }
}
function addToHistory(houseid, season, startdate, enddate, ts) {
    addHouseElement(houseid, season + '*' + startdate + '*' + enddate + '*' + ts, 'HHCOOKIE', 30);
}
function addToHistory2(houseid, season, startdate, enddate, ts) {
    var objCOOKIE = getcookie('HHCOOKIE');
    if (objCOOKIE.length > 0) {
        var elements = objCOOKIE.split('#');
        if (elements.length - maxhistory > 0) {
            for (var i = elements.length - maxhistory; i < elements.length; i++) {
                var element = elements[i].split('*');
                addHouseElement(element[0], element[1] + '*' + element[2] + '*' + element[3] + '*' + element[4], cookiename);
            }
        }
    }
    addHouseElement(houseid, season + '*' + startdate + '*' + enddate + '*' + ts, 'HHCOOKIE', 30);
}
function addHouseElement(houseid, season, cookiename, duration) {
    if (!cookiename) cookiename = "HLCOOKIE";
    var objCOOKIE = getcookie(cookiename);
    if (objCOOKIE.length > 0) {
        var elements = objCOOKIE.split('#');
        var elementexists = false;
        for (var i = 0; i < elements.length; i++) {
            var element = elements[i].split('*');
            if (element[0] === houseid && parseInt(element[1]) === parseInt(season)) elementexists = true;
        }
        if (!elementexists) {
            if (duration) setcookie(cookiename, objCOOKIE + '#' + houseid + '*' + season, duration);
            else setcookie(cookiename, objCOOKIE + '#' + houseid + '*' + season);
        }
    } else {
        if (duration) setcookie(cookiename, houseid + '*' + season, duration);
        else setcookie(cookiename, houseid + '*' + season);
    }
}
function removeHouseElement(houseid, cookiename, duration) {
    if (!cookiename) cookiename = 'HLCOOKIE';
    var objCOOKIE = getcookie(cookiename);
    var elements = objCOOKIE.split('#');
    var arr_houses = [];
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i].split('*');
        if (element[0] !== houseid) {
            arr_houses.push(elements[i]);
        }
    }
    if (arr_houses.length > 0) {
        setcookie(cookiename, arr_houses.join('#'), duration);
    } else {
        deletecookie(cookiename); console.log('Delete cookie..');
    }
}
function removeCompareElement(obj, houseid, season) {
    addToCompare(obj, houseid, season); document.forms[0].submit();
}
function removeHouseFromList(houseid) {
    removeHouseElement(houseid);
    document.forms[0].submit();
}
/* **************************************************************
Udskriver Husliste element.
-------------------------
text: Teksten der skal udskrives.
id: Elementet der skal skrivet til.
*************************************************************** */
function writeHouselistElements(text, id) {
    writeit(text, id);
}
function writeit(text, id) {
    var x;
    if (document.getElementById) {
        x = document.getElementById(id);
        if (x) {
            x.innerHTML = '';
            x.innerHTML = text;
        }
    }
    else if (document.all) {
        x = document.all[id];
        if (x) x.innerHTML = text;
    }
    else if (document.layers) {
        x = document.layers[id];
        text2 = '<P>' + text + '</P>';
        if (x) {
            x.document.open();
            x.document.write(text2);
            x.document.close();
        }
    }
}
/* **************************************************************
Enabler checkbox hvis det aktuelle hus findes 
i huskeliste cookie.
-------------------------
*************************************************************** */
function setHLChkBox(language) {
    var HLCOOKIE = getcookie('HLCOOKIE');
    var elements = HLCOOKIE.split('#');
    var count = countHLElements();
    var chkbox = null;
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i].split('*');
        chkbox = document.getElementById('HL' + element[0]);
        if (chkbox) {
            chkbox.checked = true;
        }
    }
    if (language) setHLChkBoxText(chkbox, count, language);
}/* setHLChkBox */
function setHLChkBoxText(chkbox, count, language) {
    var sResult = "";
    if (chkbox !== null && chkbox.checked === true) {
        if (language === "DK") sResult = "Fjern huset fra huskeliste";
        if (language === "DE") sResult = "Haus aus der Merkliste entfernen";
        if (language === "SE") sResult = "Ta bort från minneslista";
        if (language === "NO") sResult = "Ta bort fra huskelapp";
        if (language === "UK") sResult = "Remove from personal list";
        if (language === "NL") sResult = "Verwijder dit huis van je lijst";
    }
    else {
        if (parseInt(count) === 0) {
            if (language === "DK") sResult = "Føj dette hus til jeres huskeliste. Tilføj flere huse og sammenlign dem med hinanden.";
            if (language === "DE") sResult = "Setzen Sie dieses Haus auf Ihre Merkliste, um es später mit anderen Objekten vergleichen zu können.";
            if (language === "SE") sResult = "Lägg till denna stuga till er minneslista. Lägg till flera stugor och jämför dem med varandra.";
            if (language === "NO") sResult = "Føy til dette huset på huskelappen. Føy til flere hus og sammenlign dem med hverandre.";
            if (language === "UK") sResult = "Add this house to your personal list. Supplement with more houses and compare them to each other.";
            if (language === "NL") sResult = "Voeg dit huis toe aan je vakantielijst. Voeg meerdere vakantiehuizen toe en vergelijk deze met elkaar.";
        }
        else if (parseInt(count) === 1) {
            if (language === "DK") sResult = "Føj dette hus til jeres huskeliste og sammenlign med det andet hus.";
            if (language === "DE") sResult = "Setzen Sie dieses Haus auf Ihre Merkliste und vergleichen Sie es mit dem bereits ausgewählten Objekt.";
            if (language === "SE") sResult = "Lägg till denna stuga till er minneslista och jämför det med den andra stugan.";
            if (language === "NO") sResult = "Føy til dette huset på huskelappen og sammenlign med det andre huset.";
            if (language === "UK") sResult = "Add this house to your personal list and compare it to the other house.";
            if (language === "NL") sResult = "Voeg dit huis toe aan je vakantielijst en vergelijk met het andere vakantiehuis.";
        }
        else {
            if (language === "DK") sResult = "Føj dette hus til jeres huskeliste og sammenlign med de andre huse.";
            if (language === "DE") sResult = "Setzen Sie dieses Haus auf Ihre Merkliste und vergleichen Sie es mit den bereits ausgewählten Objekten.";
            if (language === "SE") sResult = "Lägg till denna stuga till er minneslista och jämför dem med de andra stugorna.";
            if (language === "NO") sResult = "Føy til dette huset på huskelappen og sammenlign med de andre husene.";
            if (language === "UK") sResult = "Add this house to your personal list and compare it to the other houses.";
            if (language === "NL") sResult = "Voeg dit huis toe aan je vakantielijst en vergelijk met de andere vakantiehuizen.";
        }
    }
    if (getDocumentElement("chkText") !== null) { writeit(sResult, "chkText"); }
}
/* **************************************************************
Returnerer antallet af elementer i huskeliste cookien
*************************************************************** */
function countHLElements() {
    var count = 0;
    var HLCOOKIE = getcookie('HLCOOKIE');
    var elements = HLCOOKIE.split('#');
    if (elements[0].length > 0) {
        count = elements.length;
    }
    return count;
}
function getDN()/* Get Domain Name */ {
    var domain = null;
    var _dn = document.domain;
    if (_dn.indexOf(".sonneundstrand.de") !== -1) {
        domain = "sonneundstrand.de";
    }
    else if (_dn.indexOf(".sologstrand.dk") !== -1) {
        domain = "sologstrand.dk";
    }
    else if (_dn.indexOf(".sologstrand.se") !== -1) {
        domain = "sologstrand.se";
    }
    else if (_dn.indexOf(".sologstrand.no") !== -1) {
        domain = "sologstrand.no";
    }
    else if (_dn.indexOf(".sologstrand.com") !== -1) {
        domain = "sologstrand.com";
    }
    else if (_dn.indexOf(".sologstrand.nl") !== -1) {
        domain = "sologstrand.nl";
    }
    else {
        domain = _dn;
    }

    return domain;
}
/* **************************************************************
Opdaterer Husliste element.
-------------------------

*************************************************************** */
function addfav() {
    var title; var url; title = document.title; url = location.href;
    if (document.all) {
        window.external.AddFavorite(url, title);
    } else if (window.sidebar) {
        window.sidebar.addPanel(title, url, "");
    }
}
function updateHouselist(language, divname) {
    var HLCOOKIE = getcookie('HLCOOKIE');
    var elements = HLCOOKIE.split('#');
    var count = 0;
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i].split('*');
        if (element[0].length > 0) count++;
        var chkbox = document.getElementById('HL' + element[0]);
        if (chkbox) chkbox.checked = true;
    }
    if ($(divname)) {
        $(divname).text(count);
    }
    /* 20080814 Update header */
    if (getDocumentElement("favnumber")) writeit(count, "favnumber");
    if (getDocumentElement("favnumberbox")) writeit(count, "favnumberbox");
}
function getHouselistCount(target_selector) {
    var HLCOOKIE = getcookie('HLCOOKIE');
    var elements = HLCOOKIE.split('#');
    var count = 0;
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i].split('*');
        if (element[0].length > 0) count++;
    }
    $(target_selector).text(count);
}
/* **************************************************************
Fanger et objekt og returnerer det 
-------------------------
id: Elementet der skal returneres.
*************************************************************** */
function getDocumentElement(id) {
    var x = null;
    if (document.getElementById) {
        /* Netscape 6, Explorer 5 */
        x = document.getElementById(id);
    }
    else if (document.all) {
        /* IE4 DOM */
        x = document.all[id];
    }
    return x;
}
function getCompared() {
    var liste = "";
    var elements = getcookie('SLCOOKIE').split('#');
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i].split('*');
        if (element[0]) {
            liste += element[0];
            if (i + 1 < elements.length) liste += ":";
        }
    }
    return liste;
}
/*
* jQuery Animate From To plugin 1.0
* Copyright (c) 2011 Emil Stenstrom <http://friendlybit.com>
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
* https://github.com/EmilStenstrom/jQuery-animate_from_to
*/
(function ($) {
    $.fn.animate_from_to = function (targetElm, sourceElm, callerElm, options) {
        return this.each(function () {
            animate_from_to(this, targetElm, sourceElm, callerElm, options);
        });
    };
    $.extend({
        animate_from_to: animate_from_to
    });
    function animate_from_to(fromElm, targetElm, sourceElm, callerElm, options) {
        var from = $(fromElm).eq(0),
            target = $(targetElm).eq(0),
            source = $(sourceElm).eq(0),
            caller = $(callerElm).eq(0);
        if (from.length === 0) {
            alert('Move from container not found.\nSelector: ' + fromElm + '\nSelector must be modified.');
        } else if (target.length === 0) {
            alert('Target container not found.\nSelector: ' + targetElm + '\nSelector must be modified.');
        } else {
            var defaults = {
                show_text: false,
                pixels_per_second: 1200,
                msg_text: '',
                msg_container: '',
                initial_css: {
                    "background": "#dddddd",
                    "opacity": 0.8,
                    "position": "absolute",
                    "top": from.offset().top,
                    "left": from.offset().left,
                    "height": from.height(),
                    "width": from.width(),
                    "z-index": 100000,
                    "image": ""
                },
                square: '',
                callback: function () { return; }
            };
            if (options && options.initial_css) {
                options.initial_css = $.extend({}, defaults.initial_css, options.initial_css);
            }
            options = $.extend({}, defaults, options);
            var target_height = target.innerHeight(),
                target_width = target.innerWidth();
            if (options.square.toLowerCase() === 'height') {
                target_width = target_height;
            } else if (options.square.toLowerCase() === 'width') {
                target_height = target_width;
            }
            if (options.initial_css.image === "" && $(source).attr('src') !== '') {
                options.initial_css.image = $(source).attr('src');
            }
            var shadowImage = "";
            if (options.initial_css.image !== "") {
                shadowImage = "<img src='" + options.initial_css.image + "' style='width: 100%; height: 100%' />";
            }
            if (options.show_text && options.msg_text !== '') {
                var displayer = options.msg_container !== '' ? options.msg_container : $(caller);
                $('<div/>', { id: 'msg_text' + $(caller).attr('id'), title: options.msg_text, 'class': 'msg_container_caller' })
                    .css({ display: 'none', position: 'relative', 'margin-top': '15px', width: '180px', height: '30px', padding: '5px', 'line-height': '15px', border: '1px solid #696969', 'border-radius': '5px', 'box-shadow': '2px 1px 3px #dbe2ed', 'background-color': '#dbe2ed', 'z-index': 100000 })
                    .appendTo(displayer);
                $('#msg_text' + $(caller).attr('id')).empty()
                    .html('<div style="display:block; width:32px"><img src="//images.sologstrand.dk/images/ikoner/get_info.png" alt="Info" /></div><div class="msg_text" style="display:inline-block; width:140px">' + options.msg_text + '</div>');
            }
            var caller_selector_name = caller.attr('id') !== undefined ? '#' + caller.attr('id') : '.' + caller.attr('class');
            var from_selector_name = from.attr('id') !== undefined ? '#' + from.attr('id') : '.' + from.attr('class');
            var target_selector_name = target.attr('id') !== undefined ? '#' + target.attr('id') : '.' + target.attr('class');
            if ($(from_selector_name).prop('tagName') === "IMG" && parseInt(from.offset().top) === 0 && parseInt(from.offset().left) === 0) {
                from = caller;
            }
            if ($(target_selector_name).prop('tagName') === "IMG" && parseInt(target.offset().top) === 0 && parseInt(target.offset().left) === 0) {
                target = caller;
            }
            var half_from_width = from.width() / 2;
            var half_from_height = from.height() / 2;
            var dy = from.offset().top + half_from_width - target.offset().top;
            var dx = from.offset().left + half_from_height - target.offset().left;
            var pixel_distance = Math.floor(Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2)));
            var pixel_per_second = pixel_distance / options.pixels_per_second;
            var duration = pixel_per_second * 1000;
            var shadow = $('<div>' + shadowImage + '</div>')
                .css(options.initial_css)
                .appendTo('body')
                .animate({
                    top: target.offset().top,
                    left: target.offset().left,
                    height: target_height,
                    width: target_width
                }, {
                        duration: duration
                    })
                .animate({
                    opacity: 0
                }, {
                        duration: 100,
                        complete: function () {
                            $('#msg_text' + $(caller).attr('id')).show(0).delay(2500).hide(0);
                            shadow.remove();
                            return options.callback();
                        }
                    });
        }
    }
})(jQuery); /* huskeliste animationer */
function showdetails(val) {
    window.location = "/soeg-sommerhus/vishus.aspx" + val;
}
/* **********************************************
* VisHus
********************************************** */
function splitter(objSrc) {
    if (objSrc.value.length > 1) {
        var HHHH = document.VisHusForm.HHHH;
        HHHH.focus();
        HHHH.value = objSrc.value.substring(2).replace('-', '');
        objSrc.value = objSrc.value.substring(0, 2);
    }
}
function VisHus() {
    var RR = document.VisHusForm.RR.value;
    var HHHH = document.VisHusForm.HHHH.value;
    if (RR.length > 0) {
        if (HHHH.length > 0 && isNumber(HHHH)) {
            showdetails("?d=" + RR + "-" + HHHH);
        }
    }
}
/*
 * jquery.MultiSelectList - v1.0.2
 * Altered and improved version of SumoSelect by HemantNegi found at https://github.com/HemantNegi/jquery.sumoselect
 * Compressor http://refresh-sf.com/
 */
(function ($) {
    'namespace msl';
    $.fn.MultiSelectList = function (options) {
        var settings = $.extend({
            placeholder: 'Select Here',   /* Dont change it here. */
            csvDispCount: 2,              /* display no. of items in multiselect. 0 to display all. */
            captionFormat: '{0} Selected', /* format of caption text. you can set your locale. */
            captionFormatAllSelected: '{0} all selected!', /* format of caption text when all elements are selected. set null to use captionFormat. It will not work if there are disabled elements in select. */
            floatWidth: 400,              /* Screen width of device at which the list is rendered in floating popup fashion. */
            forceCustomRendering: false,  /* force the custom modal on all devices below floatWidth resolution. */
            nativeOnDevice: [],           /* ['Android', 'BlackBerry', 'iPhone', 'iPad', 'iPod', 'Opera Mini', 'IEMobile', 'Silk'], */
            outputAsCSV: false,           /* true to POST data as csv ( false for Html control array ie. default select ) */
            csvSepChar: ',',              /* separation char in csv mode */
            locale: ['OK', 'Cancel', 'Select All'],  /* all text that is used. don't change the index. */
            okCancelInMulti: false,       /* display ok cancel buttons in desktop mode multiselect also. */
            okShowInMulti: true,          /* only if okCancelInMulti is true, display only ok button is desktop mode multiselect */
            cancelShowInMulti: true,      /* only if okCancelInMulti is true, display only cancel button is desktop mode multiselect */
            triggerChangeCombined: true,  /* im multi select mode wether to trigger change event on individual selection or combined selection. */
            selectAll: false,             /* to display select all button in multiselect mode.|| also select all will not be available on mobile devices. */
            search: false,                /* to display input for filtering content. selectAlltext will be input text placeholder */
            searchText: 'Search...',      /* placeholder for search input */
            noMatch: 'No matches for "{0}"',
            prefix: '',                   /* some prefix usually the field name. eg. '<b>Hello</b>' */
            up: false,                    /* set true to open upside. */
            itemClickCallback: null,      /* callback fundtion */
            checkFirstItem: true,         /* if first option is a select all function */
            forceWidth: 0,                /* override width of select */
            forceShowButtons: false,      /* override visibillity of OK/Cancel button */
            addCssClass: ''               /* i.e. fix options height */
        }, options);
        var ret = this.each(function () {
            var selObj = this; /* the original select object. */
            if (this.msl || !$(this).is('select')) return; /* already initialized */
            this.msl = {
                E: $(selObj), /* the jquery object of original select element. */
                check_first: settings.checkFirstItem,
                force_width: settings.forceWidth,
                is_multi: $(selObj).attr('multiple'),  /* if its a multiple select */
                select: '',
                caption: '',
                placeholder: '',
                optDiv: '',
                CaptionCont: '',
                ul: '',
                is_floating: false,
                is_opened: false,
                mob: false, /* if to open device default select */
                Pstate: [], /* selected state */
                Vstate: [], /* visible state */
                cachedOptions: null,
                cachedDivs: null,
                createElems: function () {
                    var obj = this;
                    obj.E.wrap('<div class="multiselectlist" tabindex="0"' + (this.force_width !== 0 ? ' style="width:' + this.force_width + 'px !important;"' : '') + '>');
                    obj.select = obj.E.parent();
                    obj.caption = $('<span>');
                    obj.CaptionCont = $('<p class="captioncont"><label><i></i></label></p>').addClass('selectbox').attr('style', obj.E.attr('style')).prepend(obj.caption);
                    obj.select.append(obj.CaptionCont);
                    /* default turn off if no multiselect */
                    if (!obj.is_multi && !settings.forceShowButtons) settings.okCancelInMulti = false;
                    if (obj.E.attr('disabled')) obj.select.addClass('disabled').removeAttr('tabindex');
                    /* if output as csv and is a multiselect. */
                    if (settings.outputAsCSV && obj.is_multi && obj.E.attr('name')) {
                        /* create a hidden field to store csv value. */
                        obj.select.append($('<input class="hidden_msl" type="hidden" />').attr('name', obj.E.attr('name')).val(obj.getSelStr()));
                        /* so it can not post the original select. */
                        obj.E.removeAttr('name');
                    }
                    /* break for mobile rendring.. if forceCustomRendering is false */
                    if (obj.isMobile() && !settings.forceCustomRendering) {
                        obj.setNativeMobile();
                        return;
                    }
                    /* if there is a name attr in select add a class to container div */
                    if (obj.E.attr('name')) obj.select.addClass('msl_' + obj.E.attr('name'));
                    /* hide original select */
                    obj.E.addClass('mslunder').attr('tabindex', '-1');
                    /* ## Creating the list... */
                    obj.optDiv = $('<div class="optwrapper ' + (settings.up ? 'up' : '') + '">');
                    /* branch for floating list in low res devices. */
                    obj.floatingList();
                    /* Creating the markup for the available options */
                    obj.ul = $('<ul class="options' + (settings.addCssClass !== '' ? ' ' + settings.addCssClass : '') + '">');
                    obj.optDiv.append(obj.ul);
                    /* Select all functionality */
                    if (settings.selectAll) obj.SelAll();
                    /* search functionality */
                    if (settings.search) obj.Search();
                    obj.ul.append(obj.prepItems(obj.E.children()));
                    /* if multiple then add the class multiple and add OK / CANCEL button */
                    if (obj.is_multi || settings.forceShowButtons) obj.multiSelection();
                    obj.select.append(obj.optDiv);
                    obj.basicEvents();
                    obj.selAllState();
                },
                prepItems: function (opts, d) {
                    var lis = [], O = this;
                    $(opts).each(function (i, opt) { /* parsing options to li */
                        opt = $(opt);
                        lis.push(opt.is('optgroup') ?
                            $('<li class="group ' + (opt[0].disabled ? 'disabled' : '') + '"><label>' + opt.attr('label') + '</label><ul></ul><li>')
                                .find('ul')
                                .append(O.prepItems(opt.children(), opt[0].disabled))
                                .end()
                            :
                            O.createLi(opt, d, i)
                        );
                    });
                    return lis;
                },
                /* ## Creates a LI element from a given option and binds events to it */
                /* ## returns the jquery instance of li (not inserted in dom) */
                createLi: function (opt, d, i) {
                    var O = this;
                    if (!opt.attr('value')) opt.attr('value', opt.val());
                    var opt_data_id = 0, opt_data_region = 0, opt_data_subregion = 0, opt_last = opt.val() === '-1' ? true : false;
                    if (opt.attr('data-id')) opt_data_id = opt.attr('data-id');
                    if (opt.attr('data-subregion')) opt_data_subregion = opt.attr('data-subregion');
                    if (opt.attr('data-region')) opt_data_region = opt.attr('data-region');
                    li = $('<li />', {
                        'class': 'opt' + (opt_last ? ' last_opt_fixing_btn' : ''),
                        'data-index': i,
                        'value': opt.attr('value'),
                        'data-id': opt_data_id,
                        'data-subregion': opt_data_subregion,
                        'data-region': opt_data_region
                    }).html('<label>' + opt.text() + '</label>');
                    li.data('opt', opt);
                    opt.data('li', li);
                    if (O.is_multi) li.prepend('<span><i></i></span>');
                    if (opt[0].disabled || d) li = li.addClass('disabled');
                    O.onOptClick(li);
                    if (opt[0].selected) li.addClass('selected');
                    if ($(opt[0]).hasClass('notvisble') && !opt_last) li.addClass('notvisible');
                    if (opt.attr('class')) li.addClass(opt.attr('class'));
                    return li;
                },
                /* ## Returns the selected items as string in a Multiselect. */
                getSelStr: function () {
                    /* get the pre selected items. */
                    sopt = [];
                    this.E.find('option:selected').each(function () { sopt.push($(this).val()); });
                    return sopt.join(settings.csvSepChar);
                },
                /* ## THOSE OK/CANCEL BUTTONS ON MULTIPLE SELECT. */
                multiSelection: function () {
                    var O = this;
                    O.optDiv.addClass('multiple');
                    if (settings.okShowInMulti) {
                        O.okbtn = $('<p class="btnok">' + settings.locale[0] + '</p>').bind('click', function () {
                            /* if combined change event is set. */
                            if (settings.triggerChangeCombined) {
                                /* check for a change in the selection. */
                                changed = false;
                                if (O.E.find('option:selected').length !== O.Pstate.length) {
                                    changed = true;
                                } else if (O.E.find('option:hidden').length !== O.Vstate.length) {
                                    changed = true;
                                } else {
                                    O.cachedOptions.each(function (i, e) {
                                        if (e.selected && O.Pstate.indexOf(i) < 0) changed = true;
                                        if ($(e).hasClass('notvisible') && O.Vstate.indexOf(i) < 0) change = true;
                                    });
                                }
                                if (changed) {
                                    O.triggerChange();
                                    O.setText();
                                }
                            }
                            O.hideOpts();
                        });
                        O.optDiv.append($('<div class="multicontrols">').append(O.okbtn));
                    }
                    if (settings.cancelShowInMulti) {
                        O.cancelBtn = $('<p class="btncancel">' + settings.locale[1] + '</p>').bind('click', function () {
                            O._cnbtn();
                            O.hideOpts();
                        });
                        O.optDiv.append($('<div class="multicontrols">').append(O.cancelBtn));
                    }
                },
                /* ## Remove all selections and restore selections from saved state. */
                _cnbtn: function () {
                    var O = this;
                    O.E.find('option:selected').each(function () { this.selected = false; });
                    O.optDiv.find('li.selected');//.removeClass('selected');
                    O.optDiv.find('li.hidden').removeClass('hidden');
                    for (var i = 0; i < O.Pstate.length; i++) {
                        O.cachedOptions[O.Pstate[i]].selected = true;
                        O.ul.find('li.opt').eq(O.Pstate[i]).addClass('selected');
                    }
                    O.selAllState();
                },
                SelAll: function () {
                    var O = this;
                    if (!O.is_multi) return;
                    O.selAll = $('<p class="select-all"><span><i></i></span><label>' + settings.locale[2] + '</label></p>');
                    O.selAll.on('click', function () {
                        O.selAll.toggleClass('selected');
                        O.optDiv.find('li.opt').not('.hidden').each(function (ix, e) {
                            e = $(e);
                            if (O.selAll.hasClass('selected')) {
                                if (!e.hasClass('selected')) e.trigger('click');
                            } else {
                                if (e.hasClass('selected')) e.trigger('click');
                            }
                        });
                    });
                    O.optDiv.prepend(O.selAll);
                },
                /* search module (can be removed if not required.) */
                Search: function () {
                    var O = this,
                        cc = O.CaptionCont.addClass('search'),
                        P = $('<p class="no-match">');
                    O.ftxt = $('<input type="text" class="search-txt" value="" placeholder="' + settings.searchText + '">')
                        .on('click', function (e) {
                            e.stopPropagation();
                        });
                    cc.append(O.ftxt);
                    O.optDiv.children('ul').after(P);
                    O.ftxt.on('keyup.msl', function () {
                        var hid = O.optDiv.find('ul.options li.opt').each(function (ix, e) {
                            e = $(e);
                            if (e.text().toLowerCase().indexOf(O.ftxt.val().toLowerCase()) > -1)
                                e.removeClass('hidden');
                            else
                                e.addClass('hidden');
                        }).not('.hidden');
                        P.html(settings.noMatch.replace(/\{0\}/g, O.ftxt.val())).toggle(!hid.length);
                        O.selAllState();
                    });
                },
                selAllState: function () {
                    var O = this;
                    if (settings.selectAll) {
                        var sc = 0, vc = 0;
                        O.optDiv.find('li.opt').not('.hidden').each(function (ix, e) {
                            if ($(e).hasClass('selected')) {
                                if (parseInt($(e).attr(settings.data_attribute)) > 0) { if (O.check_first) { O.unSelectItem(0); } }
                                sc++;
                            }
                            if (!$(e).hasClass('disabled')) vc++;
                        });
                        /* select all checkbox state change. */
                        if (sc === vc) O.selAll.removeClass('partial').addClass('selected');
                        else if (sc === 0) O.selAll.removeClass('selected partial');
                        else O.selAll.addClass('partial');
                    }
                },
                showOpts: function () {
                    var O = this;
                    if (O.E.attr('disabled')) return; /* if select is disabled then return */
                    O.is_opened = true;
                    O.select.addClass('open');
                    if (O.ftxt) O.ftxt.focus();
                    else O.select.focus();
                    /* hide options on click outside. */
                    $(document).on('click.msl', function (e) {
                        if (!O.select.is(e.target)                  /* if the target of the click isn't the container... */
                            && O.select.has(e.target).length === 0) { /* ... nor a descendant of the container */
                            if (!O.is_opened) return;
                            O.hideOpts();
                            if (settings.okCancelInMulti) O._cnbtn();
                        }
                    });
                    if (O.is_floating) {
                        H = O.optDiv.children('ul').outerHeight() + 2;  /* +2 is clear fix */
                        if (O.is_multi && isMobileDevice === 'False') H = H + parseInt(O.optDiv.css('padding-bottom'));
                        O.optDiv.css('height', H);
                        $('body').addClass('msl_stopscroll');
                    }
                    O.setPstate();
                },
                /* Maintain state when ok/cancel buttons are available storing the indexes. */
                /* Assuming that find returns elements in tree order. */
                /* Performance: 0,01 milliseconds (avg.) */
                setPstate: function () {
                    var O = this;
                    if (O.is_multi && (O.is_floating || settings.okCancelInMulti)) {
                        O.Pstate = [];
                        O.cachedOptions.each(function (i, e) {
                            if (e.selected) O.Pstate.push(i);
                            if ($(e).hasClass('notvisible')) O.Vstate.push(i);
                        });
                    }
                },
                getPState: function (i) {
                    var O = this;
                    O.cachedOptions.each(function (i, e) {
                        if (O.Pstate.indexOf(i) > -1) return true;
                    });
                    return false;
                },
                getVState: function (i) {
                    var O = this;
                    O.cachedOptions.each(function (i, e) {
                        if (O.Vstate.indexOf(i) > -1) return true;
                    });
                    return false;
                },
                triggerChange: function () {
                    this.E.trigger('change').trigger('click');
                },
                hideOpts: function () {
                    var O = this;
                    if (O.is_opened) {
                        O.is_opened = false;
                        O.select.removeClass('open').find('ul li.sel').removeClass('sel');
                        $(document).off('click.msl');
                        O.select.focus();
                        $('body').removeClass('msl_stopscroll');
                        /* clear the search */
                        if (settings.search) {
                            O.ftxt.val('');
                            O.optDiv.find('ul.options li').removeClass('hidden');
                            O.optDiv.find('.no-match').toggle(false);
                        }
                    }
                },
                setOnOpen: function () {
                    var O = this,
                        li = O.optDiv.find('li.opt:not(.hidden)').eq(settings.search ? 0 : O.E[0].selectedIndex);

                    O.optDiv.find('li.sel').removeClass('sel');
                    li.addClass('sel');
                    O.showOpts();
                },
                nav: function (up) {
                    var O = this, c,
                        s = O.ul.find('li.opt:not(.disabled, .hidden)'),
                        sel = O.ul.find('li.opt.sel:not(.hidden)'),
                        idx = s.index(sel);
                    if (O.is_opened && sel.length) {
                        if (up && idx > 0)
                            c = s.eq(idx - 1);
                        else if (!up && idx < s.length - 1 && idx > -1)
                            c = s.eq(idx + 1);
                        else return; /* if no items before or after */
                        sel.removeClass('sel');
                        sel = c.addClass('sel');
                        /* setting sel item to visible view. */
                        var ul = O.ul,
                            st = ul.scrollTop(),
                            t = sel.position().top + st;
                        if (t >= st + ul.height() - sel.outerHeight())
                            ul.scrollTop(t - ul.height() + sel.outerHeight());
                        if (t < st)
                            ul.scrollTop(t);
                    }
                    else
                        O.setOnOpen();
                },
                basicEvents: function () {
                    var O = this;
                    O.CaptionCont.bind('click', function (evt) {
                        O.E.trigger('click');
                        if (O.is_opened) O.hideOpts(); else O.showOpts();
                        evt.stopPropagation();
                    });
                    O.select.on('keydown.msl', function (e) {
                        switch (e.which) {
                            case 38: /* up */
                                O.nav(true);
                                break;
                            case 40: /* down */
                                O.nav(false);
                                break;
                            case 32: /* space */
                                if (settings.search && O.ftxt.is(e.target)) return; break;
                            case 13: /* enter */
                                if (O.is_opened) {
                                    O.optDiv.find('ul li.sel').trigger('click');
                                } else {
                                    O.setOnOpen();
                                }
                                break;
                            case 9:	 /* tab */
                            case 27: /* esc */
                                if (settings.okCancelInMulti) O._cnbtn();
                                O.hideOpts();
                                return;
                            default:
                                return; /* exit this handler for other keys */
                        }
                        e.preventDefault(); /* prevent the default action (scroll / move caret) */
                    });
                    $(window).on('resize.msl', function () {
                        O.floatingList();
                    });
                },
                onOptClick: function (li) {
                    var obj = this;
                    li.click(function () {
                        var li = $(this);
                        if (li.hasClass('disabled')) return;
                        txt = "";
                        if (obj.is_multi) {
                            li.toggleClass('selected');
                            li.data('opt')[0].selected = li.hasClass('selected');
                            obj.selAllState();
                        } else {
                            li.parent().find('li.selected');//.removeClass('selected'); /* if not multiselect then remove all selections from this list */
                            li.toggleClass('selected');
                            li.data('opt')[0].selected = true;
                        }
                        /* branch for combined change event. */
                        if (!(obj.is_multi && settings.triggerChangeCombined && (obj.is_floating || settings.okCancelInMulti))) {
                            obj.setText();
                            obj.triggerChange();
                        }
                        if (!obj.is_multi) obj.hideOpts(); /* if its not a multiselect then hide on single select. */
                        if (typeof settings.itemClickCallback === 'function') {
                            settings.itemClickCallback.call(obj, li);
                        }
                    });
                },
                setText: function () {
                    var O = this;
                    O.placeholder = "";
                    if (O.is_multi) {
                        sels = O.E.find(':selected').not(':disabled'); /* selected options. */
                        for (var i = 0; i < sels.length; i++) {
                            if (i + 1 >= settings.csvDispCount && settings.csvDispCount) {
                                if (sels.length === O.cachedOptions.length && settings.captionFormatAllSelected) {
                                    O.placeholder = settings.captionFormatAllSelected.replace(/\{0\}/g, sels.length);
                                } else {
                                    O.placeholder = settings.captionFormat.replace(/\{0\}/g, sels.length);
                                    $("#search_location").val(O.placeholder);
                                    $("#mobile_location_closebtn_inner").text(O.placeholder);
                                }

                                break;
                            }
                            else {
                                if ($(sels[i]).val() === "0") {
                                    O.placeholder += $(sels[i]).text();
                                }
                                else {
                                    O.placeholder += $(sels[i]).text();
                                    $("#search_location").val(O.placeholder);
                                    $("#mobile_location_closebtn_inner").text(O.placeholder);
                                }
                            }
                        }
                        O.placeholder = O.placeholder.replace(/,([^,]*)$/, '$1'); /* remove unexpected "," from last. */
                        if (sels.length >= 2) {
                            $("#search_location").val(O.placeholder);
                            $("#mobile_location_closebtn_inner").text(O.placeholder);
                        }
                    }
                    else {
                        O.placeholder = O.E.find(':selected').not(':disabled').text();
                    }
                    is_placeholder = false;
                    if (!O.placeholder) {
                        is_placeholder = true;
                        O.placeholder = O.E.attr('placeholder');
                        if (!O.placeholder)                  /* if placeholder is there then set it */
                            O.placeholder = O.E.find('option:disabled:selected').text();
                    }
                    O.placeholder = O.placeholder ? settings.prefix + ' ' + O.placeholder : settings.placeholder;
                    /* set display text */
                    O.caption.html(O.placeholder);
                    O.CaptionCont.attr('title', O.placeholder);

                    /* set the hidden field if post as csv is true. */
                    csvField = O.select.find('input.hidden_msl');
                    if (csvField.length) csvField.val(O.getSelStr());
                    /* add class placeholder if its a placeholder text. */
                    if (is_placeholder) O.caption.addClass('placeholder'); else O.caption.removeClass('placeholder');
                    return O.placeholder;
                },
                isMobile: function () {
                    /* Adapted from http://www.detectmobilebrowsers.com */
                    var ua = navigator.userAgent || navigator.vendor || window.opera;
                    /* Checks for iOs, Android, Blackberry, Opera Mini, and Windows mobile devices */
                    for (var i = 0; i < settings.nativeOnDevice.length; i++) if (ua.toString().toLowerCase().indexOf(settings.nativeOnDevice[i].toLowerCase()) > 0) return settings.nativeOnDevice[i];
                    return false;
                },
                setNativeMobile: function () {
                    var O = this;
                    O.E.addClass('selectclass'); /* .css('height', O.select.outerHeight()); */
                    O.mob = true;
                    O.E.on('change blur', function () {
                        O.setText();
                    });
                },
                floatingList: function () {
                    var O = this;
                    /* called on init and also on resize. */
                    /* O.is_floating = true if window width is < specified float width */
                    O.is_floating = $(window).width() <= settings.floatWidth;
                    /* set class isFloating */
                    O.optDiv.toggleClass('isfloating', O.is_floating);
                    /* remove height if not floating */
                    if (!O.is_floating) O.optDiv.css('height', '');
                    /* toggle class according to okCancelInMulti flag only when it is not floating */
                    O.optDiv.toggleClass('okcancelinmulti', settings.okCancelInMulti && !O.is_floating);
                },
                /* HELPERS FOR OUTSIDERS */
                /* validates range of given item operations */
                vRange: function (i) {
                    var O = this;
                    if (O.cachedOptions.length <= i || i < 0) throw "index out of bounds";
                    return O;
                },
                /* Toggles selection on c as boolean. */
                toggSel: function (c, i, setting_all) {
                    var O = this;
                    if (typeof i === "number") {
                        O.vRange(i);
                        opt = O.cachedOptions[i];
                        if (parseInt(i) === 0) $(this.CaptionCont).removeClass('dd_selected');
                    }
                    else {
                        opt = O.E.find('option[data-id="' + i + '"]')[0] || 0;
                    }
                    if (!opt || opt.disabled)
                        return;
                    if (opt.selected !== c) {
                        opt.selected = c;
                        if (!O.mob) $(opt).data('li').toggleClass('selected', c);
                        O.triggerChange();
                        if (!setting_all || typeof setting_all === 'undefined') {
                            O.setPstate();
                            O.setText();
                            O.selAllState();
                        }
                    }
                },
                isSel: function (i) {
                    var O = this;
                    if (typeof i === "number") {
                        O.vRange(i);
                        opt = O.cachedOptions[i];
                    }
                    else {
                        opt = O.E.find('option[data-id="' + i + '"]')[0] || 0;
                    }
                    if (!opt || opt.disabled) return false;
                    return opt.selected;
                },
                /* toggles disabled on c as boolean. */
                toggDis: function (c, i) {
                    var O = this.vRange(i);
                    O.cachedOptions[i].disabled = c;
                    if (c) O.cachedOptions[i].selected = false;
                    if (!O.mob) O.cachedDivs.eq(i).toggleClass('disabled', c).removeClass('selected');
                    O.setText();
                },
                toggHide: function (c, i) {
                    var O = this;
                    if (typeof i === "number") {
                        O.vRange(i);
                        opt = O.cachedOptions[i];
                    }
                    else {
                        opt = O.E.find('option[data-id="' + i + '"]')[0] || 0;
                    }
                    if (!opt || opt.disabled)
                        return;

                    if (c) {
                        opt.addClass('hidden');
                    } else {
                        opt.removeClass('hidden');
                    }
                },
                /* toggle disable/enable on complete select control */
                toggle: function (val) {
                    var O = this;
                    O.enabled = val;
                    O.select.toggleClass('disabled', val);
                    if (val) {
                        O.E.attr('disabled', 'disabled');
                        O.select.removeAttr('tabindex');
                    }
                    else {
                        O.E.removeAttr('disabled');
                        O.select.attr('tabindex', '0');
                    }
                    return O;
                },
                /* toggles all option on c as boolean. */
                toggSelAll: function (c) {
                    var O = this;
                    $(O.optDiv).find('ul.options li[class*="selected"]').each(function (ix, el) {
                        var data_id = $(el).attr('data-id');
                        if (el.disabled) return;
                        if ($(el).hasClass("selected")) {
                            O.unSelectItem(data_id);
                        } else {
                            O.selectItem(data_id);
                        }
                    });
                    if (!O.mob && O.selAll) O.selAll.removeClass('partial').toggleClass('selected', c);
                    O.triggerChange();
                    O.setPstate();
                },
                /* outside accessibility options
                   which can be accessed from the element instance.
                */
                reload: function () {
                    var elm = this.unload();
                    return $(elm).MultiSelectList(settings);
                },
                unload: function () {
                    var O = this;
                    O.select.before(O.E);
                    O.E.show();
                    if (settings.outputAsCSV && O.is_multi && O.select.find('input.hidden_msl').length) {
                        O.E.attr('name', O.select.find('input.hidden_msl').attr('name')); /* restore the name; */
                    }
                    O.select.remove();
                    delete selObj.msl;
                    return selObj;
                },
                /* ## add a new option to select at a given index. */
                add: function (val, txt, i) {
                    if (typeof val === "undefined") throw "No value to add";
                    var O = this;
                    opts = O.cachedOptions;
                    if (typeof txt === "number") { i = txt; txt = val; }
                    if (typeof txt === "undefined") { txt = val; }
                    opt = $("<option></option>").val(val).html(txt);
                    if (opts.length < i) throw "index out of bounds";
                    if (typeof i === "undefined" || opts.length === i) { /* add it to the last if given index is last no or no index provides. */
                        O.E.append(opt);
                        if (!O.mob) O.ul.append(O.createLi(opt, false, opts.length));
                    } else {
                        opts.eq(i).before(opt);
                        if (!O.mob) O.ul.find('li.opt').eq(i).before(O.createLi(opt, false, opts.length));
                    }
                    return selObj;
                },
                /* ## removes an item at a given index. */
                remove: function (i) {
                    var O = this.vRange(i);
                    O.cachedOptions.eq(i).remove();
                    if (!O.mob) O.cachedDivs.eq(i).remove();
                    O.setText();
                },
                /* ## Select an item at a given index. */
                selectItem: function (i) {
                    if (parseInt(i) !== 0) {
                        $(this.CaptionCont).addClass('dd_selected');
                    } else {
                        $(this.CaptionCont).removeClass('dd_selected').blur();
                    }
                    this.toggSel(true, i);
                },
                resetItem: function (i) {
                    var O = this;
                    O.toggSel(true, i);
                    O.setPstate();
                    O.setText();
                    $(this.CaptionCont).removeClass('dd_selected').blur();
                },
                /* ## UnSelect an iten at a given index. */
                unSelectItem: function (i) {
                    this.toggSel(false, i);
                    $(this.CaptionCont).removeClass('dd_selected').blur();
                },
                unSelectItemById: function (id) {
                    var O = this;
                    O.ul.find('li.selected').each(function (i, element) {
                        if (parseInt($(element).attr('data-id')) === parseInt(id)) {
                            O.cachedOptions[parseInt($(element).attr('data-index'))].selected = false;
                            $(element).removeClass('selected');
                        }
                    });
                    O.setPstate();
                    O.setText();
                },
                /* ## Select all items  of the select. */
                selectAll: function () {
                    var O = this;
                    O.cachedOptions.each(function (i, element) {
                        element.toggSel(true, i, true);
                    });
                    O.setPstate();
                    O.setText();
                    O.selAllState();
                },
                /* ## UnSelect all items of the select. */
                unSelectAll: function () { this.toggSelAll(false); },
                /* ## Hide item by index. */
                hideItem: function (i) {
                    var O = this;
                    if (O.cachedOptions.eq(i).val() !== '-1') {
                        O.cachedOptions.eq(i).addClass('notvisible');
                        O.cachedDivs.eq(i).addClass('notvisible');
                    }
                    O.Vstate.push(i);
                },
                /* ## Show hidden item by index. */
                showItem: function (i) {
                    var O = this;
                    O.cachedOptions.eq(i).removeClass('notvisible');
                    O.cachedDivs.eq(i).removeClass('notvisible');
                    O.Vstate = O.Vstate.filter(function (el) { return el !== i; });
                },
                /* ## shows all hidden options. Can select first option. */
                showAll: function (selectFirst, unselectAll, data_attribute, arr_data_id) {
                    var O = this, attribute_query = '';
                    if (typeof data_attribute !== 'undefined') {
                        if (arr_data_id instanceof Array) {
                            for (var showall_j = 0; showall_j < arr_data_id.length; showall_j++) {
                                if (attribute_query === '') {
                                    attribute_query += '[' + data_attribute + '="' + arr_data_id[showall_j] + '"]';
                                } else {
                                    attribute_query += ',[' + data_attribute + '="' + arr_data_id[showall_j] + '"]';
                                }
                            }
                        } else {
                            attribute_query = '[' + data_attribute + '="' + arr_data_id + '"]';
                        }
                    }
                    O.cachedOptions.each(function (i, element) {
                        if (parseInt(i) === 0 && selectFirst) {
                            O.toggSel(true, i);
                        } else {
                            if (unselectAll) O.toggSel(false, i);
                            if (selectFirst) O.toggSel(true, 0);
                        }
                        if (attribute_query !== '' && parseInt(i) !== 0) {
                            if ($(element).is(attribute_query)) {
                                O.showItem(i);
                            } else {
                                O.hideItem(i);
                            }
                        } else {
                            if ($(element).hasClass('notvisible')) O.showItem(i);
                        }
                    });
                    O.setText();
                    O.setPstate();
                },
                /* ## Disable an item at a given index. */
                disableItem: function (i) { this.toggDis(true, i); },
                /* ## Removes disabled an item at a given index. */
                enableItem: function (i) { this.toggDis(false, i); },
                /* ## New simple methods as getter and setter are not working fine in ie8- */
                /* ## variable to check state of control if enabled or disabled. */
                enabled: true,
                /* ## Enables the control */
                enable: function () { return this.toggle(false); },
                /* ## Disables the control */
                disable: function () { return this.toggle(true); },
                init: function () {
                    var obj = this;
                    obj.createElems();
                    obj.cachedOptions = obj.E.find('option');
                    obj.cachedDivs = $(obj.optDiv).find('li');
                    if (this.check_first) { obj.selectItem(0); }
                    obj.setText();
                    return obj;
                }
            };
            selObj.msl.init();
        });
        return ret.length === 1 ? ret[0] : ret;
    };
}(jQuery)); /* MultiSelectList */
/* **************************************************************************************************
LoadingOverlay - A flexible loading overlay jQuery plugin
    Author          : Gaspare Sganga
    Version         : 1.5.2
    License         : MIT
    Documentation   : http://gasparesganga.com/labs/jquery-loading-overlay/
*************************************************************************************************** */
(function ($, undefined) {
    /* Default Settings */
    var _defaults = {
        color: "rgba(255, 255, 255, 0.8)",
        custom: "",
        fade: true,
        fontawesome: "",
        image: "data:image/gif;base64,R0lGODlhZABkAKUAADQyNJyanGRmZMzOzExOTLS2tISChOzq7ERCRKyqrHR2dNze3FxaXMTCxIyOjPT29Dw6PKSipGxubNTW1FRWVLy+vIyKjPTy9ExKTLSytHx+fOTm5GRiZMzKzJSWlPz+/DQ2NJyenGxqbNTS1FRSVLy6vISGhOzu7ERGRKyurHx6fOTi5FxeXMTGxJSSlPz6/Dw+PKSmpHRydNza3P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJBQA0ACwAAAAAZABkAAAG/kCacEgsGo/IJO1SEEBAosJFSa1ar9jswQQBeAEgyyFLLpvNL893DXC9zvC4XDggsb+EwXzPtyZAd14gCX2FhkQRgIEAIYeOSAMWIgoxY1UpioEpj5xCFx6ZACQVH1QjFIt5nY8PIV1sKCtUaYsOpVcfb6tWM6iBJlUnJqEAJidYKxYaFbq7SSXEXxQPVQ8VEjBQFVNXDypeKCPOSR8ZiwAox50rLF8Z40kV0V7Tqw8WXgQT8EgzDIvAdm1I4WFAM35EPqSAcYeAul25ECZ5EYPAGgH7JGo08mFACAcOChy4tbHkkA8PDppcybKly5cwY8rc8+HEiBYDRs509qKF/goCCAhIaEBy56MBFtcQaGCU04ukbFgsaErlQAQFETZgGbAIRAmqEx0oskDNirlFMcAieWDHCwtZVkqce6fWyAMBXyQ8pHKCYcOMdROOEIBBQIssAQI5KBs44YEWcLGcELvGWONCHyZ40OBhQtHLoEOLHk26tOnTqFOrXs26tevXEj+0MCFDBTPYSi64QPAFhgFLrl8c2HCC5IsUvNeAiMB49YsCFBCwICrkgIRABICvboEBz1QaC7oHmuEa1JdBQhZAZfOdtXlBdE8oCERBa+tTX94KeZ58TYjPqfWkAAsaiDPEcX6B4UFzrV1wAoNCbBCCCSG0h9uFGGao4YYc/nbo4YcghijiiCW9sMEMG6i04QsjKKCICICJ9sACE6wAoRILcMAGBRZe9kIIDKDAQALcWBGCYgDWVcIrACBQQpJHtHOHAHs1dt0aGhRJhZRR2QeaCGwooKUSBgSiwY1qRcBGDCpCkqAgh4l2wpUAKOBlFS9UQIEiBFRQ2gsDFKAHGR8skEAIKSwAJYmMNuroo5BGSkSbHa6wmQEljNnJBzOMUGVJMxCgCAwWfOrIARpggAIFBSw6zgl4sZGAq3uc8M0ag5bUAApT0jrHAG8CoMFKBfQnDZp9tDDlSh3wyoYEvsoxgrNfOLDSA2Uq5ycuKzQAGaVHnOBCJrGwtEKsUwDAEAOyRbyQgQAoIMBBAeAasUEMArBgQq4rndCCB4myWwSwa8DAbzXDPRBtU/M9++E/O35I5xcCfNgAMdt2+EACe4JAAZsgvrBABRUsUK+knAQBACH5BAkFADQALAAAAABkAGQAAAb+QJpwSCwaj8gk7bNKaVSx2UtJrVqv2CytwgJ4AZTCVEsum7ED0veLaJzfcPhDsV4LTvG83jpR170oLXuDhEQdBH9eMBVXHwcHF4VnLwMJGQtXfYkAKB1VlBoMFAIekZJYLxMUXiAQBitVc5sseEovATB1LBMfp1Yjq3UyD1UtKH8gBVUNIIkSsL5KDxabjFQfBYhfMCljSQ8Cm8m90UgzXYkaVi8LMSoKIVJVExibACbE5Ucj2n8CvsbsScinr8gCBpvUnaJnTwPBgkMeGNhUwtcDdIlSkINI5NyfgdE6NPt4gOORCQJycbKwodyHEMfszDCJ5ESDFClGPLTYwgT+i1EhWtIcKu3AhhMbiSpdyrSp06dQoya5sOKEN6kcTyRQIEBGgFpYC14woRIACAklw+oLkMjATrVJUhWQ16jfGgoT4Fb50AIRCmtWLoysE0gvlRfUvGi4agtCok6GbYX44iApFTr+hEau6YKFAc1WOsT8Mm6zLataXlQIZrYEY9N6PjwYkKLFBcuwc+vezbu379/AgwsfTry48ePIk1950CFFA1PKr6GEQJ1ChdfIcS/gUAdDC9zFHzTI0ILgiwiDv6iAjjxFLgQJhpzQkIhAWuQXEHohkO8C/T8UgGbcA/qBkc956SnG3nHuAcANESuEs0Yg4BH3QgsFlEfEBzP+CNAMCAR8F91eM1QwwVsjpqjiiiy26OKLMMYo44w01gjXBy/kWCGLFxQgAgEsxADWbw9AosUDISCwhgUowvbBBBYoYMEA2CExgZJrwFCRb/l9wcJMV0SQiAm/ZVBHDDsWMdkfGqRpWAJ1hFClEQ0kEsJvE5S1CBYbSFAHAQLq9kIMx4AQQ5NIrKABCiDAIAAmwX1wVBkPTFBBBwvaqOmmnHbq6aegKiHpADrR+EIIBCCAggILuKnHCw1IwIADgQ71QQx1iABNNC806AUFmdJ0QoFfaFTOASLUkUJTE9jlRWXlLMDas01tQKwXIbgKxwEy1KFMUx78mRcWJ0wwwgFZ2grxQQn9CIBoVgqMRIAYjUxgAAkkKNDBnEY80JMGMdRK1AW0FbABv0WcgBEABOy63APpGlbAHx7IKGYdZMZY55kynuDnFwHOeIAHLLDgAKQzvnDCwaEqFQQAIfkECQUANAAsAAAAAGQAZAAABv5AmnBILBqPyKTwMqtUZheldEqtWq/ClQMDAMBMC6x4TMZeZKCuWnAou9/wGERN93zg+Dz1JaHTWSd6goNEJwJ+ahQrhIxJLxuBVQ8iiF0sG1QPJSYqHhONZh4YIBAsJQ9UEWmIJlQTHH4BkaBSJxZ+MCl3tYd+BItSGwyIICGotEoFMIgos0ozGnQCA1QhlQAUn8hIDwbXBVUnAyEhLSe7Si8s1wAF6NuFMtceoBcE7DEv8EYP0ZUpoD6s+7bPyIcEq+iAaAPKwzUUIwry8+ZHF60TFCqF0CexyAMHLFCgkFDhGK0BAhKC8BClo8EFA0Y4o/VhRQoLCjw04Oiy5/6RDw8u8PRJtKjRo0iTKh304cWDB++W7jtQwoUBFyU2RFXyYUIICwFabJX6TMGyLiAUaJvyogSFOQBQxCBb5YCChGpYmFQyAAGuDHSlvFA1j8otRApaBj5yQt41FoqTwELEIsziIxsGVvo1hRJlTJeNHNCMiABoJTHwdnEwNPQSE+wktD5yoA8dCpZdE/nQAsW1FlRqmlglIbduIg9CqAbA2grQE0+PI+FNAQYIGCwK7JWe58GEFiMicx9Pvrz58+jTq1/Pvr379/B9PtoeX8oFUTAQmFgxtj6RC7BJA4x/MPFHRAtcKJTAbO3NwAEGHMwwxAcxVKIBfe05oIYDRP5UiMiF/mm42oEJ0pECg+zNEJIAEg5xwWFrnFZfgVFdEAMB1zmglX/BncPjj0AGKeSQRBZp5JFIJqnkktx90B+RLyxQQAAVGHjkCw0M0wWL6b2wQgvGUZGZH7KdxxsLBHDQwBUNIALDWuRNEqMVKbgJnHkPZGRJmHyphsKA5L0QQBogOIAhEhf4syGKx52QggYxiDfFfQSgQIAHhwr5wQIj7Mjkp6CGKuqopJZqxQMrMKRkBwJggIEBgNLkaAAdZCrRAmd1IYGqtKiIlgtIueAHCHfS8oIHKvHqk2N0ZPBkHon6USxRDilEDTLJKTRTTyvco4YG23J1gY9XLHCXF08hJNWCCRRQ4IGMU5yQgAIyhKDsFDal0IKtEn1wwQYb8OtRAHCBYICkQq6QaxfXGjkDIhUguYFvaoDAp5AvxHDWSgL790IFJmignakk7xMEACH5BAkFADQALAAAAABkAGQAAAb+QJpwSCwaj8ik8HVaLU4vpXRKrVqvy4KKRFBkHtiweBxOoABoACxEbrvftMU5jYaN4Pj8NAKipy16gYJDJn5pEoOJeR6GaBpWJy0VM1GKVi8jFiwCMRsfVCMIhiANVCcBcyAsE5WWSh8Vc2giM1UOfXQarUkvFrhpJAOuUjMMhrpUFzEUaCghB1QTv7kXw0kxEKMnVS8bCxMbYFQBjQAEE9ZIjI3oihrlMB3pRzHTaduKDuUEd/NFEwQMsfikaEA5Afj8DfmQIVuac65evPODooXCIxUUsGDhYIG1Aw5kUahwEcmDDQd2uXowIEaMAh5LypxJs6bNmzhz6tzJM8/+hwUNSlRYoHLKiwElOlTrWeVBBhYw1LCIsZTKCg0EYKAQsYLplA8JRNGBwIbKAQl+KGzwqqRDwEbCpjQYFYEtkhchygFwQCXvMYJ2iVwoVA7RnkaPAhd5oK9wtKh0QJBUTORDCntp6k55EAIyGhPiKA9ZIaARCmjJCghAMTWhaCEfOshCA2FylQ8vHrwA/HrhBhMEUBDQsIB3bzgXNrg+zry58+fQo0ufTr269evYsy+ZUCJBgRnGtRtRxgAGBBgMElR90cGABBNEs58wYA+EhW0vEnjGUKGo9AKYAQBCATRMwAwdAqx1XWnliEBDBvbAYJF1L4jVCAw0pOBQGhL+XveCZ4ZgOAAJfrAQk3UMNiIADZz9AkIG/kWXgl4pCPFABQIQIMEAoVl3ggKNKLCceENsYIEsCDigIJFHsBSDByEMEB6TVFZp5ZVYZqnlllx26eWXrlwwQQcjDHnlBi6cAYMGSzrHxJRK4LUhACZAB5IA911xQIrNtNkbXn2A4AKcR6xwIIe1NNdLGirEeMQFKqTVY2+wqEmgFZWmAcKEzj0wQgEjTErFAhpQoICUYKaq6qqsturqq7CyekIMMijQgqOC4KYbTi/IkAYEMeCax1EahWDmRQbRwUJXwyzAILA3zUgHDO240gIGh9zUQYknWrIAC2mUVdMLaKEBQgpXwuLxQQkicHTsRRuEoIAGBVRFxQcTRBDCCOka0YSoND1wwgWEHhEbBRCAQEADBYt3QrloMPAukQccqgZqWV7gaxosTCzewSAoXEHDRC6QQAzFxaqyJUEAACH5BAkFADQALAAAAABkAGQAAAb+QJpwSCwaj8jk8HW5vJTQqHRKrQ4/q5jBEFt8rOCwGDzjgAAAEGsybrvftJcETQdwHvC8PjqA1dEgLXuDhEMlZ38gKYWMeg0Qf2gFVl+NYActIQkzeFInFJEoJ1IvAyowICQhF5ZTKxKIKKtTJSh1IJNRHw0EfxajrUovGn8wJZVQLxUKKCgKFZ1QD6CJGcFKAxiREk9SHxcbGyfIUB2RaAqs10cFCJEE3Ywp5wACG+tHLbZ/LPGFDfQkAMNH5AKHSCHIETrhJ5IHfwSFzOhFx8RARh8yNKQj4GLEIQs8KNBQIJqlBxkEwIBBQMW9jzCPfNjQocIEkzFz6tzJs6f+z59AgwodKuXBggkrcE45sAAiUSgzTHCgwMHCBIVKTgSgQIJDCqxPjUxg8YfBjCkXVPyJADaskAMizlFwemQAIjoEDrhF0mBfpAFS5hUDvNeI4HMxpBSIBINN4SIZ6AHIBWUFRTrcHhcZcPnPAlIFLlNwrHnIAwvnNFB5MSGEgxReShfZoOCPgBWUPrQt/SCFAgoSSsoeTry48ePIkytfzry58+fQoxN8sWDECrrSxWpgQIKFhs8FWySoMC76iwLa6pCoUIk2xxHRZ6T/QwH3C9R1FHhcHkFyAhorHFQHAfA9Vxs9qi1A1oCEOSeDZKo9YIJtej3ngWQhSLQgACj+tLDbcX2c05gQM8VgggcbYJfcCyHcBUgKKkp3ngAowIACBxXEmB0NGwxQwQD77SjkkEQWaeSRSCap5JJMjvHCDAM0teQHHQhAAAoYSNCCjkV8cMAKG3zo1gMxQLKWmEtUIAMLEmTAJVEdzFcHBA2WcxkMHRB3AX6poXnaHxIQt8GGkVBQoRIXEFMHC4JScw4BLwkTwh8OEAeXZBQodcQCAuAVaWksSlbpFA8U8FqQj73yqKY7jjBHHQKQduQGKWgggQYphDnlAxc8gGaTwAYr7LDEXkNdASVc8KseH7yJTwJmroHPASkEMICzrVzgFwAOsDrICw6gQYKsOS3wh35d16ywoTU8XWAmGiZ4u8cDagEAQ4E8hdAQC3W2soIJCpQgL0EXVOBBCFeB8QK2XQ4Mk25goMQCC24y2YI7HAqi5AcJ1JHAstA10BAMGiv5QAIEUJCAw0I2W+zLOgUBACH5BAkFADQALAAAAABkAGQAAAb+QJpwSCwaj8ikcslsOp/Q5WOQSAwe0ax2q724SAAQyYPlms9oWggEaIdj6bi8+cC43YTyfM+nLWB3bRAbfYVyB4CBMCeGjUMXAxUtBy9PKoEAGk4fBykqEh4TH45NByqJAh2VTQssdyyErDJsbSgNo6RJLw6BHCubCyEaGjELuEsvFrRuDAu5SQtggQXHTB8XJ9VLF4l3IHDPRx0omCHaewuYbQ7hRxvSdxWOJ8t3Ie1Gu4Gwjh8imDAG4DPywAQMEDAkiCI1gUKgGOcGflhRYYKefhNMUKAgIcXAj0pebFhwISLIkyhTqlzJsqXLlzBjSrlwUaajBxkMqDBQ4UL+lA0BNIQ4YJOOgW4IPPhs8qEFATcIJhQN6aBem3tNTly6I2HVVCMzXGEiYLLICjt3UBD9aqQFWkyMmKx4mjYuWyId6GKqieSBhUCa7hbZ8A8TiyczFNCS8EswkQ8prIKQt2lDixgtNpT9+iDGMhAp+FpznOTDhhgOUmQjzbq169ewY8ueTbu27du4c+vG9+KE193bEkgQoCDFbxovDmygtPvDBAnLIGhYS6OzHRQR7N4+IUOdgzIlusHwmLuD1TYEnL3Y6kbB0tsR1LXpgFxBIAnaaweQD4CyZ3vH0VaBfDBIRcMJVbVhQiy4bSBWIO4N8cAMFYlGW1N6tcHCDMD+KTGDRgRQ4ACDHSaxwgQHbFbiiiy26OKLMMYo44w01mgjEheEIAAFAiSQXxMvPBCgYx8M4NArBjoRjAUhzKCiTSsUFogAFhqxwixtCPCeYy8kcF4bLTAV2R0FtHaBAfyZAGR8d0TQmlb8KeBEBQjcIRBrD/AinwdOeEELGa19UEE3gYwAxQYVaPbaAy6cxyeMJ3hATi1KyThFAh6kYFGNHzx546egXvjAAQesZmkHDgyngY8xfhBBhiAY0FhKQb7gKRoNQKCOCVt+dEAIDCgwwK1cXPCgIregFAEtAsxayACTquPBkOF0Vwt9jRRQp3wmVJmLB26w4EwjLWzrHbVTz2xgAgsCVEDsFiccG4i7KT2wAHWOpCCfBCSyNoMLHoxLhwljLeRaK1n2q8QDFQhAAAoiesvWOOgZCsUDG8xQkmwIA9AsjR+MoIEJBodq8skDBQEAIfkECQUANAAsAAAAAGQAZAAABv5AmnBILBqPyKRyyWw6n9Dla1IqLV7RrHarfUQoMASrhOWaz2haAQJoA2CTtHzuZLndGrp+X8Tc2wJ8gnoCfwB5g4lDHxcbB2VOFWxuMAtPDxMpEQMnik8NKhwiKReXKSwwMAIVkEsXAShtICoHnkwTfm0wEQ9PLwstLRutSh8ZMH8mxLZFGn8EM4oPhX8o0cxHL3Z/A4ovsX8wDdhHHzLhcYkvFIYoI+RHDX8KnYkfAYYCvfBFHykEMFBo2GDrgAYQbggQ5HfkxABL2E4U0KDAw0KGGDNq3Mixo8ePIEOKHEmypMkPExIESLEiy4cBBWYsM3mkAAEIICBwaPHhyf6Kc20UlKKZpASyOyjSMXkRAKGbFESRXFBgCIADJyck/JER9ciCbX8CNTlB9Q6irkRWUAvr5MUxNyBaoC3ywETVGE9OhABDIcbMriMI/GFxscmDBRNW7JtL5MMIsBJm9GQ85/CEYZQza97MubPnz6BDix5NurTp06gZTghgIUZhIYxODD19wgUCWRgKtBqggoWKAZNJvwgxyQ0GnkJWsGvD4hrpDSSqahgaozgIvKVHVAVAYWEIpwBAhDDdYTsFiCNyAXBnegG4PxLqvSjAAAYFVqYfuDAEokLwDydscEJwpa2gAHggBLBYakY8UIACAmggF4MUVmjhhRhmqOGGHP526OGHIG7xwgABmBDBCgReeIBdlHgwmxMrDHBAinNdYAF4skQARQMCECCBUpR1oB5SCyqhlhsy/EXTBzFsB0A3TczAgBssFNnVcE5WgJUBsoSg5EkZ4HgHkEtsEIICMdST2QzLPUMjgwW810ZSGn5QgQAogICCAgN8idoHBwzQwgRqhmjooYiW9sIDfqb2wQoFeOBBAu/U2YEAxZGQQaO2fPDCm3xsIFg1BYCKzQsteJBBoYJ8wGVVArSk0QC5BMCpGSdEVxUME2bUZBscsLrHDEP+UcJGLUyiTF4ZCIAAAjJU8CISom4X10YPZKCAA68pcUBZcFkwrREfqLAdC1QQYWtqgw6IGV4Efk5w1B9+BTmqIectYYycAHhgZVQROAlCAU2YKQALJkBJ2T0CJ3BhwNYSbGEL9z5DZmp1bRfAuqVtAK4bJoxL4QYpCBCQBNJqFAQAIfkECQUANAAsAAAAAGQAZAAABv5AmnBILBqPyKRyyWw6n1Dma3P6RK/YrHZhEYhCB614TB4eOCAAAGS6lN9wZ0RNBwzi+HxRU1cn9IB4Ln0AFYGHRS8XD1EzKHUUJ09TJSUDjIhOKxEaLgMvkxUCKCgKE1ZNLwUUajAumJlKDyJpABQtqE0fGy0Dkk8TJH0xsUsZfQq/gR8hhJHFSSZ9LCuILxaEBAvQSDF9EsqAH97TbtxGJwx0MCm5gQssfSnnSCsmBBK4sR8zIjAwKEKAokcQyYMBAza4K8iwocOHECNKnEixosWLGDPSu9ChxISBUR6E0dhkgQAMMEiYGOnkQgQYAAhkAEnSyAJhdZI5+VABwf66DTWPfPBQiw6IO6k89CkQ1MgDFYQAEEsVoI+hpkReQCU0z8kAdWoomMM6JEXRVtt2ttAgwcQpskROGKgDIgQsJydO3IUr5EAICigEFNjLV8yHDw8OF17MuLHjx5AjS55MubLly5gza05ysMGChZuHvKhAAQYEGAqqEXnQosCnyx8aYPjGkkYEnxhKXD6xlW4GVBcI0OFAU/KG2YRMYApOh0XxyBseJR8bAgIAGEwtn1AQNUauCyVitHge+UUJmHVYACWiOLMq4WoEfA595ESBFANA09/Pv7///wAGKOCABBZo4GMfXDBAATO8oN9mDxTgkxocjBfFCyeQ19QLGf5MSAcBE0CxggYCBBAOWSsIEJUGk0izxm+FNSBdHzA8aMQF3KnhgYYkVYAeIYQh8UEGMBHQgY0aDYBTHwRA8cAIDAYZFI5RheBfin208d8GDgjAggQpnMjfBwcsIOaBaKap5hgYHrCBlKGtEIIMLIjgCY9xKFhABi2cec4IEpxFQAJIlrGBBSRAAAIGMqRV0AqBEgLDCIc8IMNZAHCgGj0vmBUVABLgOcYxUZkgKiAX8PEpCuvpIcOnAmzKzQUifAoACkjpwUpUFIS4kapRoSCrQRMEoIABMSxwKg0SfKoeQZ1iSocAhT4Qg4cAkFBCoTQU8KkDcCJi0qctMEEkIWsYULrECSoyOQNDHyhJSAiFbsDBpxpwu0COaoDILSInOEABAQSokB8TFczYBwWOKvHBBDHE0EG43Hxwwga1LVHAj0yqG5qMn2qzn72fKrCsZOf2gYKv+z2QAHxhXdXfCxN4IIECMazwbyBBAAAh+QQJBQA0ACwAAAAAZABkAAAG/kCacEgsGo/IpHLJbDqf0Kh0Sq1CLxmNpfWyer/fiwkGAKBSXbB63RyAymXCgU2vFzNw+MbOp7fyADBzfYRhCm8AICFpTg8HGxcfhU8XLSkle1ArHgIKKSdPHwsuHCwmI5NOLiiBGitRLyegUAcKeRSDqUkLEHAgMZKFDYhwEbpKFYAmD4UfEYAAGsdJM4CLk8nW00gfJnACC6kbAnkoudtFDxUeFSfBzSsKKCgS4ej3ShsbzPj9/v8AAwocSLCgwYMIEyr092LFiFcLC71wQQEDhQCznhyIoCJBxohHXnjLY+LCkxMm3oCIwAhkkQms8oCY8WQCg2/8XBYpQQZQ/oUnKzjAUdBSp5AWPfO0CFWCBQoBE4wauSACEItzTEQN2PBO6pABLOBQaNHVqxVRBTwUWFDW7JcPbd3KnUu3rt27ePPq3cu3r9+/gAMXeXGgqGAiHzaYQACDRIqcQkR1gOh3BjlfASAP4IBBAOW9D0IQizOAiAE4AfxesAUIRAYiGuB4UM1a5ushI5x69hsaGoHSQ7Rmqhw2jwPIh2l8WKEBBogzyJMPcWRYuvXr2LNr3869u/fvgU+MqDAhevIHGRigQNC5Q1ydLy4cePA+5Mg8EBKYj/hhgoReCLjAVRMFQEOaWSPc5IsKHyFBlYFleLBfQg+c1loBTMxAAIQA/gjQYEQzFAeIAkxMsCGEAmAVkU0GSsDEARRwqMGHC50ggYEOMCEShynUh9AHMYwWSFRMnBAjNDOa9UIAMQFAQAM+EjGAAKO5ItcHLXhgQghshbJBASZo4EAFJmn3wQsPvBAleGy22WYs9G2njgcGOJDBgJMkNsAAK1S3zQkuIAAHBBIQSQgWIpBAAAcB+KnLAy70YlWZfDiTVCIWTDjJABhAGAMhKwgZSAn4vBADhwIQkgCEJqxpxwsecEgAIS5AqICmfZiKahMfHNBBBAlMEEkTpxpogqOFDNAkIJ8y0YJQZUCggT1LrHBpGSD8hM8FDohKAI0vHZmHBJQm8UEAWEIu488JDgDCACpL7AgNCCk08UAKR8IQQrn9DOCABBqUgKsQCygIjQKuCqFPwghNQAKKyO61gsEjMmyXvNBgaN0KIg41MF8DHBKtCcNZ98EJA6RA3seEBAEAIfkECQUANAAsAAAAAGQAZAAABv5AmnBILBqPyKRyyWw6n9CodEqtQj+TSGZl7Xq/rwIBAmGNvuj080QCuAGah3pOL67ebtapzp8fMHgKF32EYCkEICAUA1EfFycvhVEXK3tRLwMhMQsfUCcZKioRB5JOByYcEg2lNA8RMG4gGqxMDm8CXJIzbXgTtEoCbwSMkiMQeAAFv0kBIG4CpJILFMi+y0cbLhQKI52SD81vCt7XRi8PD+TfFQoSKZbl8fLz9PX29/j5+vv8/f7/AAMKpPJhgAEOFhZIeTCiwAw5A498SICHQAd1Sz5kgGURY0QaB3i9MQCPyQUFbzxE+khkAAJkLKI1eWHiTQqPEWegQCahJP6TFRoEeBjEksgLFXhAxFj55MUFpkWHLFDgDIUHn1GtnBjQYgLErGDDih1LtqzZs2jTql3Ltq1bGi86RNA0AupbIgc8IAKgKALWtweoIgNggmjaBx0EEBDRYmWEwW+UpX0RA5YbGAnkMIDsRoLaCZvxUJhBwxlnFGorHMMDowSN1ZAJpLb8pjUNFpwByFC7gAMyCgpT5K6gNgxtEAU6ndAA2cRXtC8mBNUwgNwJB3sBEAhh+K7RASliFJiA07v58+jTq1/Pvr379+wvbHie/sMMAxQIMHDw9+OHFwCWh0QBO4lGXlYHRMACARJU0J0SKwAymAQbRLUcHgjEQB8SHv5wBoFkLCUAmxsYKLTEC8FwphJLR0GWARMv+MaZAxsC9ABKg8XQBHOcxSBgPx90OBgxS7TAGQFnFLUAAcgo0J8RDpj2BggvZjUBCyiAgIIJFTpxQQgUmMZCAXaxdEEL4/14xAsLVFBACyuoCd+cdNZp551CzFBAAimMUGMfJ6xQZjkfFMDAaiRcJQkWLsjAgQYd0PNBCRJO6cKgagwQ2mUVyNnHBiJwZiIfD2wqzKjXdFDgYCEQsoCUtaUgj2ozEtIBZ63GM0ClyOjYxAMbzLDCAZgasQBkyMlzgAScdbnEBgGQkAgLCTyIxAfMwuTsNR+0sGpKcl6AFB4QBODEAFi41RbpPJgwGYtfTWQwohsooJrEBwt4wAIFDhxYzwMDvPmnER/gOFgE6D0QKmQeoPcBjzmm1wCs9G7r3QcO0AYADMSp90AGChBAgQaNsffCCRtscIKnhAQBACH5BAkFADQALAAAAABkAGQAAAb+QJpwSCwaj8ikcslsOp/QqHRKrUofL6t2yxVeQiRKKtstm5efAgwAQHTO8PjwFWGzM/K8+VOCsFFveoJbDzEULAVkUC+Kg08vH1SQUi8jMREtD45NDwUqDhubNC0sbBgJoksdCGwmjXknBnYAMK+pRDF2HCeOKwKzAKG3RwMEbB62cReydijJwy8dHgW8jh8DFGwgBcNJH5OiHycFBQuR3ejp6uvs7e7v8PHy7y8PFw/n84MfKykmMhYyCNOnZ4AAP9oUzCAIKxswAAoOMFxyIoGHFs+MfLDw0E6MfBOLzMBgR8JAJQcYdGSjoFrIIhpmgYiRccgMYytZnHxJ4wP+CWAmLjBZ4bCjgJ08f83yoGnJCwUrAThoynNIHzsEBjhpAaIjCq1VibyIIYCCAoxOPnjoOCZskQ8HFpwAyeRFBQEwYCAQMICuWy0PFgxYUfOv4cOIEytezLix48eQI0sOe2JAgwEuJyt50UAEARQkZKDVjITOmlkIEhRG/GJFAAspJAoZgMLrwsgfKuAEIGCFkABRQ0hewQGYgywyoiqQ3KL2LAESoa7UILmDczsCeOVamULyBgnAPES66dU37gGl2Gio9qLA9T8VVh+GWyAG5iITFFAgQEDDbdJK8DPBCn4BaOCBCCao4IIMNujggxBG6MgFJajAggbxLfZNgUr+LCACMAZk5tYHMyTgQAwLyEfDUw+BwNRhIxTFQAUc4tfVQxRMYNgFStnBgmxL1NERCBUYtspDLTQhZIvc/FXBabM0uUQDKwFi2AokyaQjEw/sNosEIvKkFjAaULVEMcBQsABiHxiCAgUehOnNCCbsR4EJSP11glxTBDbBBipKKOighBZqqBEXjFBBBwfUKIejt6ygHwIYSJDhIONooEEEeUbaIxsIFADpFgdocBoIDHS6yQsO3DgLAWbC8QFwwEgQayrfrbSlHC8UZQcGuw6zQHEdFZnHA1DaAUMD6RyQXEfBBnjBBgdcMKoQL6T36n/DtOmqj/I9UCEJDJjQgXxkH6TwLQAmXJtHqcCgkGQTGbyXlRMneAClBECmk69zCowg3wZessGCig9MEEMILciZzq1LqNviCAxGsC4AIDC7YAkXg7Dmghf4yoYE7kKGzSw6OfjCBCEooEEMG5QsmTgXBJpHEAAh+QQJBQA0ACwAAAAAZABkAAAG/kCacEgsGo/IpHLJbDqf0Kh0Sq1ar9is9TMwmUYfrXjcXHAAAMGKzG5+LpPNK9pBoAmjth55cbBIFAoND08rLGgCG3uLQlwMaJAgLoROMx4ea4yLGyKQngAFmjQfKxMXokofGRCfkCyniy8FAgwWiqhHDxatkCh5iwOPaDG4RxcKvGgwLYwVKJAaxUa6yQAwE4wLhwAgKdJFHwUgyQKUey8dEhQhsN9DJyrJzJofLw9h7kULyJ4wKfj5Ah6IoYAFCwcD5gRcSOPFiQMnzDGcSLGixYsYxdQDmBHVgxEFQmRI2FHUCRcEIBEI0K6kHgvjPEEIoNClkhcLKhyA0iIZ/ooKNpU8MDAORAiJSnYl81AzaJEGnjDMYyKhmgakToU4+ESsSbxkDrBmjeEJRKgmKar9y2rkwDYAGm4xuUCBVyK2Rj5YMpFiAZQBdT2RwIb3yAexTA6EYEGABbvCkCNLnky5suXLmDNr3sy5s+d8HzZMyPS5yQoLLBiwsEC6tOERb9EwGMCR84URFWaYO8Dvk4ATn1doQAPCA6UBrHgN8PzCRUxrJYQUqNaV84FOnqLRmJ7MW+cDVT2ZEDLBDi/CnD9EeA6jg5ALBngpaLn5RAgYAAisFbJCwfM0C9S22QsbbHBCU6OkoIAACiQAnGtMHCYghBRWaOGFGGao4YYc/nbo4YeofHBACgGkcMCEkaEoVATmcZMCYlmF1kACLez0RAb49RPdZDOIMA4EGrR2U2CfSGAjZC/0xo1xTWzwn0roFbZASp6wIJcSKyRDwHKRLfCMJxRcmcQDX35ipWQPnJEdfUl4wIsHKgbVQo750ebECSb8Z0KcTi3ggAIhiDlXARpIoEEBMFr4wAWJgujoo5BGKukSH5ywwAoIZvhBAjKwIIADM+DywAAVYDrRCwEkhwYLfjHywQgiIIAACi5kKo0zrShg6xjafBICn4t84AIvEDR6hSqtUHDkNy+YkMyybHzg5icoRPmNB09aY+wQb1ywq2FpfRLmQiMQCYkDZ8COskACBpiQwArp0rCAuQB4wJAsdAKggKBIzKAmNyLwe8QLDbylwYMLceGAABKkcEK8SqIxnhOhVVDABAhLdkC+ymzL2QwcWwNthReU2Uu8nE3rSXUZ9vElCkxyOGoMMQzg8aRtBAEAOw==",
        imagePosition: "center center",
        maxSize: "100px",
        minSize: "20px",
        resizeInterval: 50,
        size: "50%",
        zIndex: 9999
    };
    $.LoadingOverlaySetup = function (settings) {
        $.extend(true, _defaults, settings);
    };
    $.LoadingOverlay = function (action, options) {
        switch (action.toLowerCase()) {
            case "show":
                var settings = $.extend(true, {}, _defaults, options);
                _Show("body", settings);
                break;

            case "hide":
                _Hide("body", options);
                break;
        }
    };
    $.fn.LoadingOverlay = function (action, options) {
        switch (action.toLowerCase()) {
            case "show":
                var settings = $.extend(true, {}, _defaults, options);
                return this.each(function () {
                    _Show(this, settings);
                });

            case "hide":
                return this.each(function () {
                    _Hide(this, options);
                });
        }
    };
    function _Show(container, settings) {
        container = $(container);
        var wholePage = container.is("body");
        var count = container.data("LoadingOverlayCount");
        if (count === undefined) count = 0;
        if (count === 0) {
            var overlay = $("<div>", {
                class: "loadingoverlay",
                css: {
                    "background-color": settings.color,
                    "display": "flex",
                    "flex-direction": "column",
                    "align-items": "center",
                    "justify-content": "center"
                }
            });
            if (settings.zIndex !== undefined) overlay.css("z-index", settings.zIndex);
            if (settings.image) overlay.css({
                "background-image": "url(" + settings.image + ")",
                "background-position": settings.imagePosition,
                "background-repeat": "no-repeat"
            });
            if (settings.fontawesome) $("<div>", {
                class: "loadingoverlay_fontawesome " + settings.fontawesome
            }).appendTo(overlay);
            if (settings.custom) $(settings.custom).appendTo(overlay);
            if (wholePage) {
                overlay.css({
                    "position": "fixed",
                    "top": 0,
                    "left": 0,
                    "width": "100%",
                    "height": "100%"
                });
            } else {
                overlay.css("position", container.css("position") === "fixed" ? "fixed" : "absolute");
            }
            _Resize(container, overlay, settings, wholePage);
            if (settings.resizeInterval > 0) {
                var resizeIntervalId = setInterval(function () {
                    _Resize(container, overlay, settings, wholePage);
                }, settings.resizeInterval);
                container.data("LoadingOverlayResizeIntervalId", resizeIntervalId);
            }
            if (!settings.fade) {
                settings.fade = [0, 0];
            } else if (settings.fade === true) {
                settings.fade = [400, 200];
            } else if (typeof settings.fade === "string" || typeof settings.fade === "number") {
                settings.fade = [settings.fade, settings.fade];
            }
            container.data({
                "LoadingOverlay": overlay,
                "LoadingOverlayFadeOutDuration": settings.fade[1]
            });
            overlay
                .hide()
                .appendTo("body")
                .fadeIn(settings.fade[0]);
        }
        count++;
        container.data("LoadingOverlayCount", count);
    }
    function _Hide(container, force) {
        container = $(container);
        var count = container.data("LoadingOverlayCount");
        if (count === undefined) return;
        count--;
        if (force || count <= 0) {
            var resizeIntervalId = container.data("LoadingOverlayResizeIntervalId");
            if (resizeIntervalId) clearInterval(resizeIntervalId);
            container.data("LoadingOverlay").fadeOut(container.data("LoadingOverlayFadeOutDuration"), function () {
                $(this).remove();
            });
            container.removeData(["LoadingOverlay", "LoadingOverlayCount", "LoadingOverlayFadeOutDuration", "LoadingOverlayResizeIntervalId"]);
        } else {
            container.data("LoadingOverlayCount", count);
        }
    }
    function _Resize(container, overlay, settings, wholePage) {
        if (!wholePage) {
            var x = container.css("position") === "fixed" ? container.position() : container.offset();
            overlay.css({
                top: x.top + parseInt(container.css("border-top-width"), 10),
                left: x.left + parseInt(container.css("border-left-width"), 10),
                width: container.innerWidth(),
                height: container.innerHeight()
            });
        }
        var c = wholePage ? $(window) : container;
        var size = "auto";
        if (settings.size && settings.size !== "auto") {
            var min_x_size = Math.min(c.innerWidth(), c.innerHeight()) * parseFloat(settings.size);
            size = min_x_size / 100;
            if (settings.maxSize && size > parseInt(settings.maxSize, 10)) size = parseInt(settings.maxSize, 10) + "px";
            if (settings.minSize && size < parseInt(settings.minSize, 10)) size = parseInt(settings.minSize, 10) + "px";
        }
        overlay.css("background-size", size);
        overlay.children(".loadingoverlay_fontawesome").css("font-size", size);
    }
}(jQuery)); /* LoadingOverlaySetup */
$.fn.attractionSearch = function (options) {
    var defaults = {
        id: '', mapid: '', radiusSelector: '', sortSelector: '', zoom: 10, lat: 0.0, lng: 0.0, radius: 20, address: '', address2: '',
        postalcode: 0, destination: '', attraction_map: null, thisHouseImage: '', attractionImage: '', dkrabatImage: ''
    };
    var settings = $.extend({}, defaults, options);
    var attraction_map, attractionMarkers = [], sortByField = 'distance', houseDirectionDisplay, directionsService, directionsDisplay;
    settings.radius = parseInt($(settings.radiusSelector).val()), current_zoom = 10;
    switch (settings.radius) {
        case 10: current_zoom = 10; break;
        case 20: current_zoom = 9; break;
        case 30: current_zoom = 9; break;
        case 40: current_zoom = 8; break;
        case 50: current_zoom = 8; break;
    }
    var houseLatlng = new google.maps.LatLng(settings.lat, settings.lng);
    var Styles = [
        {
            featureType: "poi.business",
            elementType: "labels.text",
            stylers: [
                { visibility: "off" }
            ]
        }
    ];
    var mapOptions = {
        center: houseLatlng,
        zoom: current_zoom,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        scaleControl: true,
        styles: Styles
    };
    attraction_map = new google.maps.Map(document.getElementById(settings.mapid), mapOptions);
    loadAttractionsCategories();
    directionsService = new google.maps.DirectionsService;
    directionsDisplay = new google.maps.DirectionsRenderer({
        draggable: false,
        suppressMarkers: true
    });

    function clearAttractionMarkers() {
        for (var i = 0; i < attractionMarkers.length; i++) {
            attractionMarkers[i].setMap(null);
        }
        attractionMarkers = [];
    }
    function sortByDistance(a, b) {
        if (sortByField === 'distance') {
            return parseFloat($(b).attr(sortByField)) < parseFloat($(a).attr(sortByField)) ? 1 : -1;
        } else {
            return $(b).attr(sortByField) < $(a).attr(sortByField) ? 1 : -1; // sort by non-numeric e.g. name
        }
    }
    function getAttractions() {
        var current_zoom = 9;
        settings.radius = parseInt($(settings.radiusSelector).val());
        switch (settings.radius) {
            case 10: current_zoom = 10; break;
            case 20: current_zoom = 9; break;
            case 30: current_zoom = 9; break;
            case 40: current_zoom = 8; break;
            case 50: current_zoom = 8; break;
        }
        attraction_map.setZoom(current_zoom);
        sortByField = $(settings.sortSelector).val();
        var categories = [];
        $('.cb_category:checkbox:checked').each(function () {
            categories.push(parseInt($(this).attr('data-category-id')));
        });
        clearAttractionMarkers();
        loadCurrentHouse(current_zoom);
        loadAttractions(categories);
        renderAttractionsToMap(attraction_map, attractionMarkers);
    }
    function loadCurrentHouse(current_zoom) {
        addGoogleMarkerToList(
            attractionMarkers,
            attraction_map,
            settings.id,
            settings.lat,
            settings.lng,
            current_zoom,
            3,
            settings.thisHouseImage,
            settings.address,
            settings.address + '<br />' + settings.postalcode + ' ' + settings.destination
        ); /* lægger huset i houseAttrMarkers listen */
    }
    function loadAttractionsCategories() {
        var todayDate = new Date();  // for example
        var ajaxurl = '/AshxServices.ashx?sn=ServiceHouseInformation&mn=GetAttractionCategories&cem=0&ver=' + ((todayDate.getTime() * 10000) + 621355968000000000) + '&param=' + encodeURIComponent("pLanguage=" + site_lang);
        $.ajax({
            type: 'GET',
            cache: false,
            async: true,
            url: ajaxurl,
            beforeSend: function (jqXHR) {
                $('.attraction_categories').html(getLoaderImage(20));
            },
            success: function (data) {
                $('.attraction_categories').empty();
                var attr_categories = $(data).find("category"), output = '';
                for (var i = 0; i < attr_categories.length; i++) {
                    var $item = $(attr_categories[i]);
                    var cb_disabled = parseInt($item.attr('count')) === 0 ? true : false;
                    var cb_item = $('<div />', { 'class': 'item' });
                    var cb_label = $('<label />', { 'for': 'cb_category_' + $item.attr('id') }).html($item.attr('name') + " (<span class=\"cat_count\" id=\"cat_" + $item.attr('id') + "_count\">0</span>)");
                    var cb;
                    if (cb_disabled) {
                        cb = $('<input />', { 'id': 'cb_category_' + $item.attr('id'), 'type': 'checkbox', 'class': 'cb_category', 'data-category-id': $item.attr('id'), 'disabled': 'disabled' }).click(function () {
                            getAttractions();
                        });
                    } else {
                        cb = $('<input />', { 'id': 'cb_category_' + $item.attr('id'), 'type': 'checkbox', 'class': 'cb_category', 'data-category-id': $item.attr('id') }).click(function () {
                            getAttractions();
                        });
                    }
                    $('.attraction_categories').append(cb_item.append(cb).append(cb_label));
                }
            },
            error: function (data) {
                console.warn("Could not load attracktions with discount");
            },
            complete: function () {
                getAttractions();
                loadAttractionsWithDiscount();
            }
        });
    }
    function loadCategoryCount(data) {
        var categories = $(data).find("category");
        $('.cat_count').text('0');
        for (var i = 0; i < categories.length; i++) {
            var $category = $(categories[i]);
            $('#cat_' + parseInt($category.attr('id')) + '_count').text($category.attr('count'));
        }
        $('.cb_category:checkbox').each(function () {
            var cat_id = $(this).attr('data-category-id');
            var cat_count = parseInt($('#cat_' + cat_id + '_count').text());
            if (cat_count > 0) {
                $('#cb_category_' + cat_id).removeAttr('disabled');
            } else {
                $(this).attr('disabled', 'disabled');
            }
        });
    }
    function loadAttractions(categories) {
        var params = "pCategoryIdentifier=&pLanguage=" + site_lang + "&pLatitude=" + settings.lat + "&pLongitude=" + settings.lng + "&pRadius=" + settings.radius + "&pAlternativeQueries=";
        var ajaxurl = '/AshxServices.ashx?sn=ServiceHouseInformation&mn=GetAttractionsExt&cem=0&param=' + encodeURIComponent(params);
        $.ajax({
            type: 'GET',
            cache: false,
            async: true,
            url: ajaxurl,
            beforeSend: function (jqXHR) {
                $('.attractions').html(getLoaderImage(20));
            },
            success: function (data) {
                var cat_filter = "", attractions = [], output = '';
                if (categories.length > 0) {
                    for (var f = 0; f < categories.length; f++) {
                        if (isNumber(categories[f])) {
                            if (f > 0) cat_filter += ',';
                            cat_filter += '[category="' + parseInt(categories[f]) + '"]';
                        }
                    }
                    attractions = $(data).find("attraction").filter(cat_filter);
                } else {
                    attractions = $(data).find("attraction");
                }
                attractions.sort(sortByDistance);
                var marker_index = 1, cat_dict = []; // marker index starts with 1 because the house has index 0
                for (var i = 0; i < attractions.length; i++) {
                    var $item = $(attractions[i]), category_id = parseInt($item.attr('category'));
                    if (categories.indexOf(category_id) > -1 || categories.length === 0) {
                        output += '<div class="item attraction_btn" data-index="' + marker_index + '" data-id="' + parseInt($item.attr('id')) + '" data-linktitle="' + $item.attr('linktitle') + '" data-category="' + category_id + '" data-km="' + parseInt($item.attr('distance')) + '">';
                        if ($item.find('dkrabat').children('comment').text().indexOf('%') !== -1) {
                            output += $item.find('dkrabat').children('comment').text() + '<br />';
                        }
                        output += $item.attr('name') + '<br />' + (parseInt($item.attr('distance')) === 0 ? '< 1' : parseInt($item.attr('distance'))) + ' km</div>';
                        var infocontent = $item.attr('name').replace(/\"/g, '') + '<br />' + $item.attr('address') + '<br />' + $item.attr('postalcode') + ' ' + $item.attr('city');
                        if ($item.attr('homepage') !== '') {
                            infocontent += '<br /><a href="' + ($item.attr('homepage').indexOf('http') > -1 ? $item.attr('homepage') : "http://" + $item.attr('homepage')) + '" target="_blank">' + $item.attr('homepage') + '</a>';
                        }
                        addGoogleMarkerToList(
                            attractionMarkers,
                            attraction_map,
                            parseInt($item.attr('id')),
                            $item.attr('latitude'),
                            $item.attr('longitude'),
                            parseInt(settings.radius),
                            2,
                            settings.attractionImage,
                            $item.attr('name').replace(/\"/g, ''),
                            infocontent
                        );
                        marker_index++;
                    }
                }
                $('.attractions').html(output);
                loadCategoryCount(data);
            },
            error: function (data) {
                console.warn("Could not load attracktions");
            },
            complete: function () {
                $('.attraction_btn').click(function () {
                    var marker_index = parseInt($(this).attr('data-index'));
                    if (marker_index > 0) {
                        loadAttraction($(this).attr('data-linktitle'), attraction_map);
                        google.maps.event.trigger(attractionMarkers[marker_index], 'click');
                        scrollToSelector('#attractionTab', -120);
                    }
                });
            }
        });
    }
    function loadAttraction(linktitle, attraction_map) {
        var params = "pLanguage=" + site_lang + "&pAttractionIdentifier=" + linktitle;
        var ajaxurl = '/AshxServices.ashx?sn=ServiceHouseInformation&mn=GetAttraction&cem=0&param=' + encodeURIComponent(params);
        $.ajax({
            type: 'GET',
            cache: false,
            async: true,
            url: ajaxurl,
            beforeSend: function () {
                for (var i = 0; i < infoWindows.length; i++) {
                    infoWindows[i].close();
                }
                infoWindows = [];
                if (directionsDisplay !== null) {
                    directionsDisplay.setMap(null);
                }
            },
            success: function (data) {
                var $att = $(data).find("attraction");
                $('#att_name').text($att.attr('name'));
                $('#att_address').text($att.attr('address'));
                $('#att_postalcode').text($att.attr('postalcode'));
                $('#att_city').text($att.attr('city'));
                $('#att_header h2').html($att.find('header').text());
                $('#att_description').html($att.find('description').text());

                directionsDisplay.setMap(attraction_map);
                directionsDisplay.setPanel(document.getElementById('directionsPanel'));
                var request = {
                    origin: settings.lat + ', ' + settings.lng,
                    destination: $att.attr('latitude') + ',' + $att.attr('longitude'),
                    travelMode: google.maps.TravelMode.DRIVING
                };
                directionsService.route(request, function (response, status) {
                    if (status === google.maps.DirectionsStatus.OK) {
                        directionsDisplay.setDirections(response);
                    } else {
                        console.warn(status);
                    }
                });
            },
            error: function () {
                console.warn('Could not load route.');
            },
            complete: function () {
                $('#decription_att').show();
            }
        });
    }
    function loadAttractionsWithDiscount() {
        var discount_markers = [];
        var searchdataparams = "pCategoryIdentifier=&pLanguage=" + site_lang + "&pLatitude=" + settings.lat + "&pLongitude=" + settings.lng + "&pRadius=" + escape("dkrabat=yes") + "&pAlternativeQueries=";
        var ajaxurl = '/AshxServices.ashx?sn=ServiceHouseInformation&mn=GetAttractionsExt&cem=0&param=' + encodeURIComponent(searchdataparams);
        $.ajax({
            type: 'GET',
            cache: false,
            async: true,
            url: ajaxurl,
            beforeSend: function (jqXHR) {
                $.xhrPool.add(jqXHR, 'loadAttractionsWithDiscount');
                $('.rabat_attractions').html(getLoaderImage(20));
            },
            success: function (data) {
                var attractions = $(data).find("attraction"), output = '';
                for (var i = 0; i < attractions.length; i++) {
                    var $item = $(attractions[i]);
                    if (attractionMarkers.filter(function (am) { parseInt(am.id) === parseInt($item.attr('id')); }).length === 0) { /* exclude all dublets */
                        if ($item.find('dkrabat').children('comment').text().indexOf('%') !== -1) {
                            output += '<div class="item discount_btn" data-index="' + i + '" data-id="' + parseInt($item.attr('id')) + '" data-linktitle="' + $item.attr('linktitle') + '">';
                            output += $item.find('dkrabat').children('comment').text() + '<br />' + $item.attr('name');
                            output += '</div>';
                            var infocontent = $item.find('dkrabat').children('comment').text() + '<br />' + $item.attr('name').replace(/\"/g, '') + '<br />' + $item.attr('address') + '<br />' + $item.attr('postalcode') + ' ' + $item.attr('city');
                            if ($item.attr('homepage') !== '') {
                                infocontent += '<br /><a href="' + ($item.attr('homepage').indexOf('http') > -1 ? $item.attr('homepage') : "http://" + $item.attr('homepage')) + '" target="_blank">' + $item.attr('homepage') + '</a>';
                            }
                            addGoogleMarkerToList(
                                discount_markers,
                                attraction_map,
                                parseInt($item.attr('id')),
                                $item.attr('latitude'),
                                $item.attr('longitude'),
                                parseInt(settings.radius),
                                1,
                                settings.dkrabatImage,
                                $item.attr('name').replace(/\"/g, ''),
                                infocontent
                            );
                        }
                    }
                }
                $('.rabat_attractions').html(output);
            },
            error: function (data) {
                console.warn("Could not load attracktions with discount");
            },
            complete: function (jqXHR) {
                $.xhrPool.remove(jqXHR, 'loadAttractionsWithDiscount');
                $('.discount_btn').click(function () {
                    var marker_index = parseInt($(this).attr('data-index'));
                    if (marker_index > 0 && attraction_map) {
                        loadAttraction($(this).attr('data-linktitle'), attraction_map);
                        google.maps.event.trigger(discount_markers[marker_index], 'click');
                        scrollToSelector('#attractionTab', -120);
                    }
                });
                renderAttractionsToMap(attraction_map, discount_markers);
            }
        });
    }
    function closeDirectionWindow() {
        for (var i = 0; i < infoWindows.length; i++) {
            infoWindows[i].close();
        }
        infoWindows = [];
        if (directionsDisplay !== null) {
            directionsDisplay.setMap(null);
            getAttractions();
        } else {
            console.warn('directionsDisplay is null');
        }
    }
    $('*[data-handler="sethouseincenter"]').click(function () {
        attraction_map.setCenter(new google.maps.LatLng(settings.lat, settings.lng));
        attraction_map.setZoom(15);
    });
    $('select[data-handler="getAttractions"]').change(function () {
        getAttractions();
    });
    $('.att_text_close').click(function () {
        Hide_decription_att();
        closeDirectionWindow();
    });
}; // end attraction search
/* functions official document ready block */
$(document).ready(function (e) {
    /* cookie godkendelse til cookies */
    var strCookieName = "cookie-compliance", strApprovedVal = "approved", cookieVal = getcookie(strCookieName), $displayMsg = $('#cookieMessageWrapper');
    if (cookieVal !== strApprovedVal) {
        setTimeout(function () { $displayMsg.slideDown(200); }, 200);
    } else if (!$displayMsg.is(':hidden')) {
        $displayMsg.slideUp();
    }
    $('#cookieClose').click(function () {
        $displayMsg.slideUp();
        setcookie(strCookieName, strApprovedVal, 365);
    });
    /* YT video lazy loading */
    $('.homeVideoThumbnail').click(function () {
        startYTVideo($(this));
    });
    $('.homeVideoPlayButton').click(function () {
        startYTVideo($('#' + $(this).attr('data-target')));
    });
    $('.countup').each(function () {
        var $this = $(this), countTo = $this.attr('data-count'), duration = $this.attr('data-duration') !== '' ? parseInt($this.attr('data-duration')) : 2000;
        $({ countNum: $this.text() }).animate({
            countNum: countTo
        }, {
                duration: duration,
                easing: 'linear',
                step: function () {
                    $this.text(Math.floor(this.countNum));
                },
                complete: function () {
                    $this.text(this.countNum);
                }
            });
    });
    /* Send huskeliste funktion */
    $('input[data-handler="send_favorits"]').click(function () {
        /* eksempel på send-knap */
        /* <input id="sh_btn" name="button" class="favorites_send_btn" type="button" value="<%=ControlConfig("lbl_send_favorites")%>"
                data-subject="<%=ControlConfig("txt_tab32_mobi")%>" data-button-send-label="<%=ControlConfig("txt_TAF_ButtonText")%>"
                data-button-sending-label="<%=ControlConfig("lbl_send_favorites")%>.." data-msg-sent="<%=ControlConfig("lbl_asyn_shl_yes")%>"
                data-msg-not-sent="<%=ControlConfig("lbl_asyn_taf_no")%>" data-status-selector="#shl_status" data-handler="send_favorits"
                data-ip="<%=Request.ServerVariables["REMOTE_HOST"].ToString() %>" data-validated="false" 
                data-accesstoken="<%= new TemplateEngine.AjaxForgery(Request.ServerVariables["REMOTE_HOST"].ToString()).GenerateToken()%>" />
        */

        var validated = $(this).attr('data-validated'), hl_cookie_content = getcookie('HLCOOKIE'), access_token = $(this).attr('data-accesstoken');
        if (validated === 'true' && access_token !== '') {
            if ($('#mmail').val() !== '' && $('#amail').val() !== '' && hl_cookie_content !== '') {
                var subject = $(this).attr('data-subject');
                var recipient_emails = [$('#mmail').val()];
                var recipient_name = $('#mname').val();
                var sender_email = $('#amail').val();
                var sender_name = $('#aname').val();
                var favorit_msg = escape($('#message').val());
                var email_tmp = 'BUREAU_' + site_lang + '_SHL';
                var hl_date_cookie = getcookie('HL_DATE_COOKIE') !== '' ? getcookie('HL_DATE_COOKIE') : nearestSaturday;
                var hl_nod_cookie = getcookie('HL_NOD_COOKIE') !== '' ? getcookie('HL_NOD_COOKIE') : '7';
                var hl_link = window.location.href;
                if (hl_link.indexOf('?') > -1) {
                    hl_link = hl_link.Substring(0, hl_link.IndexOf("?"));
                }
                if (hl_cookie_content !== '') {
                    hl_link += '?h=' + Base64.encode(hl_cookie_content);
                    hl_link += '&a=' + Base64.encode(sender_email);
                    hl_link += '&date=' + Base64.encode(hl_date_cookie);
                    hl_link += '&nights=' + Base64.encode(hl_nod_cookie);
                }
                var elements = '[LINK]§' + hl_link + ';[MODTAGEREMAIL]§' + recipient_emails + ';[MODTAGERNAVN]§' + recipient_name + ';[AFSENDEREMAIL]§' + sender_email + ';[AFSENDERNAVN]§' + sender_name + ';[BESKED]§' + favorit_msg;
                var fav_params = 'TemplateId=' + email_tmp + '&EmailSender=' + sender_email + '&sEmailRecipients=' + recipient_emails + '&Subject=' + escape(subject) + '&arrElement=' + Base64.encode(elements);
                $.ajax({
                    type: 'GET',
                    cache: false,
                    async: true,
                    dataType: 'text',
                    contentType: 'text/plain',
                    headers: {
                        'Access-token': access_token
                    },
                    url: '/AshxServices.ashx?sn=ServiceEmail&mn=SendFavoritEmail&cem=0&param=' + encodeURIComponent(fav_params),
                    beforeSend: function (jqXHR) {
                        $('input[data-handler="send_favorits"]').val($('input[data-handler="send_favorits"]').attr('data-button-sending-label'));
                        $('input[type="text"]').removeClass('border_darkred_field');
                    },
                    success: function (data) {
                        //console.log(data);
                        if (data === 'true') {
                            $('#mmail').val('');
                            $('#mname').val('');
                            $('#amail').val('');
                            $('#aname').val('');
                            $('#message').val('');
                            window.setTimeout(function () {
                                $('input[data-handler="send_favorits"]').val($('input[data-handler="send_favorits"]').attr('data-button-send-label'));
                                $($('input[data-handler="send_favorits"]').attr('data-status-selector')).text($('input[data-handler="send_favorits"]').attr('data-msg-sent'));
                            }, 500);
                        } else {
                            $('input[data-handler="send_favorits"]').val('send error');
                            $($('input[data-handler="send_favorits"]').attr('data-status-selector')).text($('input[data-handler="send_favorits"]').attr('data-msg-not-sent'));
                            window.setTimeout(function () {
                                $('input[data-handler="send_favorits"]').val($('input[data-handler="send_favorits"]').attr('data-button-send-label'));
                            }, 15000);
                        }
                    },
                    error: function (objAJAXRequest, strError) {
                        $('input[data-handler="send_favorits"]').val(strError);
                        $($('input[data-handler="send_favorits"]').attr('data-status-selector')).text($('input[data-handler="send_favorits"]').attr('data-msg-not-sent'));
                        window.setTimeout(function () {
                            $('input[data-handler="send_favorits"]').val($('input[data-handler="send_favorits"]').attr('data-button-send-label'));
                        }, 15000);
                    },
                    complete: function () {
                        window.setTimeout(function () {
                            $($('input[data-handler="send_favorits"]').attr('data-status-selector')).empty();
                        }, 15000);
                    }
                });
            } else {
                if ($('#mmail').val() === '') {
                    $('#mmail').addClass('border_darkred_field').focus().on('keypress keydown', function () {
                        if (isValidEmailAddress($(this).val())) {
                            $(this).removeClass('border_darkred_field');
                        }
                    });
                } else if ($('#amail').val() === '') {
                    $('#amail').addClass('border_darkred_field').focus().on('keypress keydown', function () {
                        if (isValidEmailAddress($(this).val())) {
                            $(this).removeClass('border_darkred_field');
                        }
                    });
                } else if (hl_cookie_content === '') {
                    alert(no_results);
                }
            }
        } else {
            alert('reCAPTCHA not validated or invalid token');
        }
    });
    $('button[data-handler="newsletter_subscribe"]').click(function (e) {
        const ttl_msg = 15000;
        $.ajax({
            type: 'GET',
            cache: false,
            async: true,
            dataType: 'text',
            contentType: 'text/plain',
            url: '/AshxServices.ashx', // ?mn=NewsLetterSubscribe&cem=0&email=' + encodeURIComponent($('#nl_email').val()) + '&lead_source=' + $(this).attr('data-lead_source') + '&newsletter=' + $(this).attr('data-newsletter') + '&formcode=' + $(this).attr('data-formcode'),
            data: {
                mn: "NewsLetterSubscribe",
                cem: "0",
                email: $('#nl_email').val(),
                lead_source: $(this).attr('data-lead_source'),
                newsletter: $(this).attr('data-newsletter'),
                formcode: $(this).attr('data-formcode')
            },
            headers: {
                'Cache-Control': 'max-age=' + maxAgeExpiration,
                'X-Functions-Version': functions_version
            },
            beforeSend: function (jqXHR) {
                $('#nl_email').attr('disabled', true);
                $('#submit_btn').html(getLoaderImage(12, false));
            },
            success: function (data) {
                if (data === "Created profile") {
                    $('#submit_btn').after($('<div />', { id: 'btn_submit_msg', 'class': 'btn_submit_msg success' }).html(nl_created));
                } else if (data === 'Profile already subscribed') {
                    $('#submit_btn').after($('<div />', { id: 'btn_submit_msg', 'class': 'btn_submit_msg success' }).html(nl_created)); // TODO: change to an appropriate text in global variables
                } else {
                    $('#submit_btn').after($('<div />', { id: 'btn_submit_msg', 'class': 'btn_submit_msg failed' }).html(nl_failed));
                }
                $('#submit_btn').text(nl_subscribe);
            },
            error: function (objAJAXRequest, strError) {
                $('#submit_btn').after($('<div />', { id: 'btn_submit_msg', 'class': 'btn_submit_msg error' }).html(strError));
            },
            complete: function () {
                $('#nl_email').attr('disabled', false).val('');
                $('#submit_btn').text(nl_subscribe).attr('disabled', false);
                window.setTimeout(function () {
                    $('#btn_submit_msg').remove();
                }, ttl_msg);
            }
        });
    });
    $('button[data-handler="newsletter_unsubscribe"]').click(function (e) {
        var ttl_msg = 15000;
        var subscribe_text = $('#submit_btn').text();
        $.ajax({
            type: 'GET',
            cache: false,
            async: true,
            dataType: 'text',
            url: '/AshxServices.ashx',
            data: {
                mn: "NewsLetterUnSubscribe",
                cem: "0",
                email: $('#nlus_email').val(),
                lead_source: $(this).attr('data-lead_source'),
                newsletter: $(this).attr('data-newsletter')
            },
            headers: {
                'Cache-Control': 'max-age=' + maxAgeExpiration,
                'X-Functions-Version': functions_version
            },
            beforeSend: function (jqXHR) {
                $('#nlus_email').attr('disabled', true);
                $('#un_submit').html(getLoaderImage(12, false));
            },
            success: function (data) {
                if (data === "unsubscribed") {
                    $('#un_submit').after($('<div />', { id: 'btn_submit_msg', 'class': 'btn_submit_msg success' }).html(nl_unsubscribe));
                } else {
                    $('#un_submit').after($('<div />', { id: 'btn_submit_msg', 'class': 'btn_submit_msg failed' }).html(nl_failed));
                    ttl_msg = 15000;
                }
            },
            error: function (objAJAXRequest, strError) {
                $('#un_submit').after($('<div />', { id: 'btn_submit_msg', 'class': 'btn_submit_msg error' }).html(strError));
                ttl_msg = 15000;
            },
            complete: function () {
                $('#nlus_email').attr('disabled', false).val('');
                $('#un_submit').html(subscribe_text).attr('disabled', false);
                window.setTimeout(function () {
                    $('#btn_submit_msg').remove();
                }, ttl_msg);
            }
        });
    });
    $('button[data-handler="newsletter_campaign_subscribe"]').click(function (e) {
        var submit_btn_selector = $(this).attr('data-submit-button-selector');
        var submit_pre_text = $(this).text();
        var accepted = $($(this).attr('data-accept-selector')).is(':checked') ? true : false;
        var answer_value = $($(this).attr('data-answer-selector')).val();
        var email_selector = $(this).attr('data-email');
        var email = $(email_selector).val();
        var success_text = $(this).attr('data-success-text');
        var already_subscribed_text = $(this).attr('data-already-subscribed-text');
        var failure_text = $(this).attr('data-failure-text');
        var status_class_selector = $(this).attr('data-status-class-selector');
        var ttl_msg = 15000;
        if (isValidEmailAddress(email)) {
            if (accepted) {
                var submit_status = $('<div />', { id: 'btn_submit_msg' }).addClass(status_class_selector).html(success_text);
                if (typeof answer_value === "undefined") {
                    var missing_answer_text = $(this).attr('data-missing-answer-text');
                    $(this).after($(submit_status).html(missing_answer_text));
                } else {
                    $.ajax({
                        type: 'GET',
                        cache: false,
                        async: true,
                        dataType: 'text',
                        contentType: 'text/plain',
                        url: '/AshxServices.ashx',
                        data: {
                            mn: 'NewsLetterCampaign',
                            cem: "0",
                            email: email,
                            lead_source: $(this).attr('data-lead_source'),
                            newsletter: $(this).attr('data-newsletter'),
                            listid: $(this).attr('data-newsletter-listid')
                        },
                        headers: {
                            'Cache-Control': 'max-age=' + maxAgeExpiration,
                            'X-Functions-Version': functions_version
                        },
                        beforeSend: function (jqXHR) {
                            $(email_selector).attr('disabled', true);
                            $(submit_btn_selector).html(getLoaderImage(12, false));
                        },
                        success: function (data) {
                            if (data === "Created profile") {
                                $(submit_btn_selector).after($(submit_status).addClass('success').html(success_text));
                            } else if (data === 'Profile already subscribed') {
                                $(submit_btn_selector).after($(submit_status).addClass('success').addClass('already').html(already_subscribed_text)); // TODO: change to an appropriate text in global variables
                            } else {
                                $(submit_btn_selector).after($(submit_status).addClass('failed').html(failure_text));
                                ttl_msg = 15000;
                            }
                        },
                        error: function (objAJAXRequest, strError) {
                            $(submit_btn_selector).after($(submit_status).addClass('error').html(failure_text));
                            ttl_msg = 15000;
                        },
                        complete: function () {
                            $(email_selector).attr('disabled', false).val('');
                            $(submit_btn_selector).html(submit_pre_text).attr('disabled', false);
                            window.setTimeout(function () {
                                $('.' + status_class_selector).remove();
                            }, ttl_msg);
                        }
                    });
                }
            } else {
                $(submit_btn_selector).after($('<div />', { id: 'btn_submit_msg', 'class': 'btn_submit_msg failed' }).html($(this).attr('data-accept-campaign-rules')));
                $($(this).attr('data-accept-selector')).click(function () {
                    $('.' + status_class_selector).remove();
                });
            }
        } else {
            $(submit_btn_selector).after($('<div />', { id: 'btn_submit_msg', 'class': 'btn_submit_msg failed' }).html($(this).attr('data-invalid-email')));
            $(email_selector).on('keypress keydown', function () {
                $('.' + status_class_selector).remove();
            }).focus();
        }
    });
    $('button[data-handler="send_contact_houseowner"]').click(function (e) {
        var areFieldsValided = true;
        if ($('input[name="navn"]').val() === "") {
            areFieldsValided = false;
            $('input[name="navn"]').focus().addClass('invalid').on('keypress keydown', function () { $(this).removeClass('invalid'); });
        } else if ($('input[name="Telefon"]').val() === "") {
            areFieldsValided = false;
            $('input[name="Telefon"]').focus().addClass('invalid').on('keypress keydown', function () { $(this).removeClass('invalid'); });
        } else if ($(this).hasAttr('data-valided') && areFieldsValided) {
            $('#UC_Emailformular1_Button_Send').trigger('click');
        } else {
            $('#captcha_contact').addClass('invalid');
        }
    });
    $('#nl_email').focus(function (e) {
        $('#btn_submit_msg').remove();
    });
    /* load personal list house count */
    $('.favorites_number').html(getLoaderImage(10));
    $('.lastesthouse_close').click(function () { // close last visit house container
        $('.lastesthouse_outer').css('display', 'none').removeClass('lv_true').addClass('lv_false');
        $('.lastesthouse_closed_outer').css('display', 'block').removeClass('lv_true').addClass('lv_false');
        var user_settings = getObjectCookie('user_settings');
        user_settings.show_last_visited_house = false;
        setObjectCookie('user_settings', user_settings, 'Show last house - close event', user_settings_expire_days);
    });
    $('.lastesthouse_closed_outer').click(function () { // open last visit house container
        $('.lastesthouse_outer').css('display', 'block').removeClass('lv_false').addClass('lv_true');
        $('.lastesthouse_closed_outer').css('display', 'none').removeClass('lv_true').addClass('lv_false');
        var user_settings = getObjectCookie('user_settings');
        user_settings.show_last_visited_house = true;
        setObjectCookie('user_settings', user_settings, 'Show last house - open event', user_settings_expire_days);
    });
    window.setTimeout(function () { getHouselistCount('.favorites_number, .favorites_number_mobile, span.favTop'); }, 200);
    if (typeof isDesktop !== 'undefined') {
        /* must be in the DOM ready state */
        $('.overlay-tooltip').tooltip({
            track: true,
            tooltipClass: 'map-area-tooltip',
            content: $(this).attr('alt')
        });
    }
    if (typeof isTabletDevice !== 'undefined') {
        if ('ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0) {
            $(document).on("touchend", "area", function (event) { /* touchend triggers faster and more intuative than touchstart on map touches */
                event.preventDefault();
                $(this).trigger('click');
            });
        }
    }
});
(function () {
    // Docs: https://github.com/aFarkas/lazysizes
    // Current version: 4.1.4
    var docElem = document.documentElement;
    window.lazySizesConfig = window.lazySizesConfig || {};
    window.lazySizesConfig.loadMode = 0;
    window.lazySizesConfig.lazyClass = 'lazysizes';
    //window.lazySizesConfig.srcAttr = 'data-lazy';
    window.lazySizesConfig.srcsetAttr = 'data-srcset';
    //window.lazySizesConfig.preloadAfterLoad = true;
    window.lazySizesConfig.customMedia = {
        '--small': '(max-width: 480px)',
        '--medium': '(max-width: 900px)',
        '--large': '(max-width: 1400px)',
        '--original': '(min-width: 1401px)'
    };
})();
/* adding special events for fixing Chrome [Violation] warning */
if (browserName !== 'Internet Explorer') {
    $.event.special.touchstart = {
        setup: function (_, ns, handle) {
            if (ns.includes('noPreventDefault')) {
                this.addEventListener('touchstart', handle, { passive: false });
            } else {
                this.addEventListener('touchstart', handle, { passive: true });
            }
        }
    };
    $.event.special.touchmove = {
        setup: function (_, ns, handle) {
            if (ns.includes('noPreventDefault')) {
                this.addEventListener('touchmove', handle, { passive: false });
            } else {
                this.addEventListener('touchmove', handle, { passive: true });
            }
        }
    };
}
/* global events for window element, placed outside ready block */
$(window).on('DOMContentLoaded blur', function (e) {
    if (typeof browserName !== 'undefined') {
        // console.log('DOMContentLoaded: ' + browserName);
        if (browserName !== 'Pale Moon' && browserName !== 'Firefox' && navigator.userAgent.indexOf('Firefox') === -1) { // || browserName === 'Internet Explorer' || browserName === 'Chrome' || browserName === 'Safari'
            var current_user_settings = getObjectCookie('user_settings');
            if (Object.keys(current_user_settings).length !== user_settings_properties_count) { // static value, user_settings_properties_count
                current_user_settings = default_user_settings;
                setObjectCookie('user_settings', current_user_settings, e.type, user_settings_expire_days);
            }
            if (isOnResultPage()) {
                isBrowserBacked = getBrowserBackCookie() === "true" ? true : false;
                //console.log('isBrowserBacked: ' + isBrowserBacked)
                if (isBrowserBacked) {
                    var $sb = $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id'));
                    $sb.searchblock('handleBrowserBack', true, 'DOMContentLoaded');
                    domloaded = true;
                    e.preventDefault();
                }
            }
        }
    }
}).on("pageshow", function (e) {
    if (typeof browserName !== 'undefined' && !domloaded) {
        // console.log('pageshow: ' + browserName);
        if (browserName === 'Pale Moon' || browserName === 'Firefox' || navigator.userAgent.indexOf('Firefox') > -1) {
            var current_user_settings = getObjectCookie('user_settings');
            if (Object.keys(current_user_settings).length !== user_settings_properties_count) { // static value, user_settings_properties_count
                current_user_settings = default_user_settings;
                setObjectCookie('user_settings', current_user_settings, e.type, user_settings_expire_days);
            }
            if (isOnResultPage()) {
                isBrowserBacked = getBrowserBackCookie() === "true" ? true : false;
                if (isBrowserBacked) {
                    var $sb = $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id'));
                    $sb.searchblock('handleBrowserBack', true, 'pageshow');
                    e.preventDefault();
                }
            }
        }
    }
    domloaded = false;
}).on('scroll resize', function (e) {
    if (scroll_timeout) {
        clearTimeout(scroll_timeout);
    }
    scroll_timeout = setTimeout(function () {
        displayViewportLogo('#topmenu');
    }, 20);
})

$(function () {
    $('img.lazy').Lazy({
        defaultImage: ''
    });
});
$(".slider").on("beforeChange", function () {
    $("html,body").trigger("scroll");
});
$(".flexslider ").on("beforeChange", function () {
    $("html,body").trigger("scroll");
});
;(function (window, factory) {
    var lazySizes = factory(window, window.document);
    window.lazySizes = lazySizes;
    if (typeof module === 'object' && module.exports) {
        module.exports = lazySizes;
    }
}(window, function l(window, document) {
    'use strict';
    /*jshint eqnull:true */
    if (!document.getElementsByClassName) { return; }

    var lazysizes, lazySizesConfig;

    var docElem = document.documentElement;

    var Date = window.Date;

    var supportPicture = window.HTMLPictureElement;

    var _addEventListener = 'addEventListener';

    var _getAttribute = 'getAttribute';

    var addEventListener = window[_addEventListener];

    var setTimeout = window.setTimeout;

    var requestAnimationFrame = window.requestAnimationFrame || setTimeout;

    var requestIdleCallback = window.requestIdleCallback;

    var regPicture = /^picture$/i;

    var loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];

    var regClassCache = {};

    var forEach = Array.prototype.forEach;

    var hasClass = function (ele, cls) {
        if (!regClassCache[cls]) {
            regClassCache[cls] = new RegExp('(\\s|^)' + cls + '(\\s|$)');
        }
        return regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];
    };

    var addClass = function (ele, cls) {
        if (!hasClass(ele, cls)) {
            ele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);
        }
    };

    var removeClass = function (ele, cls) {
        var reg;
        if ((reg = hasClass(ele, cls))) {
            ele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));
        }
    };

    var addRemoveLoadEvents = function (dom, fn, add) {
        var action = add ? _addEventListener : 'removeEventListener';
        if (add) {
            addRemoveLoadEvents(dom, fn);
        }
        loadEvents.forEach(function (evt) {
            dom[action](evt, fn);
        });
    };

    var triggerEvent = function (elem, name, detail, noBubbles, noCancelable) {
        var event = document.createEvent('Event');

        if (!detail) {
            detail = {};
        }

        detail.instance = lazysizes;

        event.initEvent(name, !noBubbles, !noCancelable);

        event.detail = detail;

        elem.dispatchEvent(event);
        return event;
    };

    var updatePolyfill = function (el, full) {
        var polyfill;
        if (!supportPicture && (polyfill = (window.picturefill || lazySizesConfig.pf))) {
            if (full && full.src && !el[_getAttribute]('srcset')) {
                el.setAttribute('srcset', full.src);
            }
            polyfill({ reevaluate: true, elements: [el] });
        } else if (full && full.src) {
            el.src = full.src;
        }
    };

    var getCSS = function (elem, style) {
        return (getComputedStyle(elem, null) || {})[style];
    };

    var getWidth = function (elem, parent, width) {
        width = width || elem.offsetWidth;

        while (width < lazySizesConfig.minSize && parent && !elem._lazysizesWidth) {
            width = parent.offsetWidth;
            parent = parent.parentNode;
        }

        return width;
    };

    var rAF = (function () {
        var running, waiting;
        var firstFns = [];
        var secondFns = [];
        var fns = firstFns;

        var run = function () {
            var runFns = fns;

            fns = firstFns.length ? secondFns : firstFns;

            running = true;
            waiting = false;

            while (runFns.length) {
                runFns.shift()();
            }

            running = false;
        };

        var rafBatch = function (fn, queue) {
            if (running && !queue) {
                fn.apply(this, arguments);
            } else {
                fns.push(fn);

                if (!waiting) {
                    waiting = true;
                    (document.hidden ? setTimeout : requestAnimationFrame)(run);
                }
            }
        };

        rafBatch._lsFlush = run;

        return rafBatch;
    })();

    var rAFIt = function (fn, simple) {
        return simple ?
            function () {
                rAF(fn);
            } :
            function () {
                var that = this;
                var args = arguments;
                rAF(function () {
                    fn.apply(that, args);
                });
            }
            ;
    };

    var throttle = function (fn) {
        var running;
        var lastTime = 0;
        var gDelay = lazySizesConfig.throttleDelay;
        var rICTimeout = lazySizesConfig.ricTimeout;
        var run = function () {
            running = false;
            lastTime = Date.now();
            fn();
        };
        var idleCallback = requestIdleCallback && rICTimeout > 49 ?
            function () {
                requestIdleCallback(run, { timeout: rICTimeout });

                if (rICTimeout !== lazySizesConfig.ricTimeout) {
                    rICTimeout = lazySizesConfig.ricTimeout;
                }
            } :
            rAFIt(function () {
                setTimeout(run);
            }, true)
            ;

        return function (isPriority) {
            var delay;

            if ((isPriority = isPriority === true)) {
                rICTimeout = 33;
            }

            if (running) {
                return;
            }

            running = true;

            delay = gDelay - (Date.now() - lastTime);

            if (delay < 0) {
                delay = 0;
            }

            if (isPriority || delay < 9) {
                idleCallback();
            } else {
                setTimeout(idleCallback, delay);
            }
        };
    };

    //based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html
    var debounce = function (func) {
        var timeout, timestamp;
        var wait = 99;
        var run = function () {
            timeout = null;
            func();
        };
        var later = function () {
            var last = Date.now() - timestamp;

            if (last < wait) {
                setTimeout(later, wait - last);
            } else {
                (requestIdleCallback || run)(run);
            }
        };

        return function () {
            timestamp = Date.now();

            if (!timeout) {
                timeout = setTimeout(later, wait);
            }
        };
    };

    (function () {
        var prop;

        var lazySizesDefaults = {
            lazyClass: 'lazyload',
            loadedClass: 'lazyloaded',
            loadingClass: 'lazyloading',
            preloadClass: 'lazypreload',
            errorClass: 'lazyerror',
            //strictClass: 'lazystrict',
            autosizesClass: 'lazyautosizes',
            srcAttr: 'data-src',
            srcsetAttr: 'data-srcset',
            sizesAttr: 'data-sizes',
            //preloadAfterLoad: false,
            minSize: 40,
            customMedia: {},
            init: true,
            expFactor: 1.5,
            hFac: 0.8,
            loadMode: 2,
            loadHidden: true,
            ricTimeout: 0,
            throttleDelay: 125
        };

        lazySizesConfig = window.lazySizesConfig || window.lazysizesConfig || {};

        for (prop in lazySizesDefaults) {
            if (!(prop in lazySizesConfig)) {
                lazySizesConfig[prop] = lazySizesDefaults[prop];
            }
        }

        window.lazySizesConfig = lazySizesConfig;

        setTimeout(function () {
            if (lazySizesConfig.init) {
                init();
            }
        });
    })();

    var loader = (function () {
        var preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;

        var eLvW, elvH, eLtop, eLleft, eLright, eLbottom;

        var defaultExpand, preloadExpand, hFac;

        var regImg = /^img$/i;
        var regIframe = /^iframe$/i;

        var supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));

        var shrinkExpand = 0;
        var currentExpand = 0;

        var isLoading = 0;
        var lowRuns = -1;

        var resetPreloading = function (e) {
            isLoading--;
            if (e && e.target) {
                addRemoveLoadEvents(e.target, resetPreloading);
            }

            if (!e || isLoading < 0 || !e.target) {
                isLoading = 0;
            }
        };

        var isNestedVisible = function (elem, elemExpand) {
            var outerRect;
            var parent = elem;
            var visible = getCSS(document.body, 'visibility') === 'hidden' || (getCSS(elem.parentNode, 'visibility') !== 'hidden' && getCSS(elem, 'visibility') !== 'hidden');

            eLtop -= elemExpand;
            eLbottom += elemExpand;
            eLleft -= elemExpand;
            eLright += elemExpand;

            while (visible && (parent = parent.offsetParent) && parent !== document.body && parent !== docElem) {
                visible = ((getCSS(parent, 'opacity') || 1) > 0);

                if (visible && getCSS(parent, 'overflow') !== 'visible') {
                    outerRect = parent.getBoundingClientRect();
                    visible = eLright > outerRect.left &&
                        eLleft < outerRect.right &&
                        eLbottom > outerRect.top - 1 &&
                        eLtop < outerRect.bottom + 1
                        ;
                }
            }

            return visible;
        };

        var checkElements = function () {
            var eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal, beforeExpandVal;

            var lazyloadElems = lazysizes.elements;

            if ((loadMode = lazySizesConfig.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)) {

                i = 0;

                lowRuns++;

                if (preloadExpand === null) {
                    if (!('expand' in lazySizesConfig)) {
                        lazySizesConfig.expand = docElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370;
                    }

                    defaultExpand = lazySizesConfig.expand;
                    preloadExpand = defaultExpand * lazySizesConfig.expFactor;
                }

                if (currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden) {
                    currentExpand = preloadExpand;
                    lowRuns = 0;
                } else if (loadMode > 1 && lowRuns > 1 && isLoading < 6) {
                    currentExpand = defaultExpand;
                } else {
                    currentExpand = shrinkExpand;
                }

                for (; i < eLlen; i++) {

                    if (!lazyloadElems[i] || lazyloadElems[i]._lazyRace) { continue; }

                    if (!supportScroll) { unveilElement(lazyloadElems[i]); continue; }

                    if (!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)) {
                        elemExpand = currentExpand;
                    }

                    if (beforeExpandVal !== elemExpand) {
                        eLvW = innerWidth + (elemExpand * hFac);
                        elvH = innerHeight + elemExpand;
                        elemNegativeExpand = elemExpand * -1;
                        beforeExpandVal = elemExpand;
                    }

                    rect = lazyloadElems[i].getBoundingClientRect();

                    if ((eLbottom = rect.bottom) >= elemNegativeExpand &&
                        (eLtop = rect.top) <= elvH &&
                        (eLright = rect.right) >= elemNegativeExpand * hFac &&
                        (eLleft = rect.left) <= eLvW &&
                        (eLbottom || eLright || eLleft || eLtop) &&
                        (lazySizesConfig.loadHidden || getCSS(lazyloadElems[i], 'visibility') !== 'hidden') &&
                        ((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))) {
                        unveilElement(lazyloadElems[i]);
                        loadedSomething = true;
                        if (isLoading > 9) { break; }
                    } else if (!loadedSomething && isCompleted && !autoLoadElem &&
                        isLoading < 4 && lowRuns < 4 && loadMode > 2 &&
                        (preloadElems[0] || lazySizesConfig.preloadAfterLoad) &&
                        (preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesConfig.sizesAttr) !== 'auto')))) {
                        autoLoadElem = preloadElems[0] || lazyloadElems[i];
                    }
                }

                if (autoLoadElem && !loadedSomething) {
                    unveilElement(autoLoadElem);
                }
            }
        };

        var throttledCheckElements = throttle(checkElements);

        var switchLoadingClass = function (e) {
            addClass(e.target, lazySizesConfig.loadedClass);
            removeClass(e.target, lazySizesConfig.loadingClass);
            addRemoveLoadEvents(e.target, rafSwitchLoadingClass);
            triggerEvent(e.target, 'lazyloaded');
        };
        var rafedSwitchLoadingClass = rAFIt(switchLoadingClass);
        var rafSwitchLoadingClass = function (e) {
            rafedSwitchLoadingClass({ target: e.target });
        };

        var changeIframeSrc = function (elem, src) {
            try {
                elem.contentWindow.location.replace(src);
            } catch (e) {
                elem.src = src;
            }
        };

        var handleSources = function (source) {
            var customMedia;

            var sourceSrcset = source[_getAttribute](lazySizesConfig.srcsetAttr);

            if ((customMedia = lazySizesConfig.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')])) {
                source.setAttribute('media', customMedia);
            }

            if (sourceSrcset) {
                source.setAttribute('srcset', sourceSrcset);
            }
        };

        var lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg) {
            var src, srcset, parent, isPicture, event, firesLoad;

            if (!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented) {

                if (sizes) {
                    if (isAuto) {
                        addClass(elem, lazySizesConfig.autosizesClass);
                    } else {
                        elem.setAttribute('sizes', sizes);
                    }
                }

                srcset = elem[_getAttribute](lazySizesConfig.srcsetAttr);
                src = elem[_getAttribute](lazySizesConfig.srcAttr);

                if (isImg) {
                    parent = elem.parentNode;
                    isPicture = parent && regPicture.test(parent.nodeName || '');
                }

                firesLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));

                event = { target: elem };

                if (firesLoad) {
                    addRemoveLoadEvents(elem, resetPreloading, true);
                    clearTimeout(resetPreloadingTimer);
                    resetPreloadingTimer = setTimeout(resetPreloading, 2500);

                    addClass(elem, lazySizesConfig.loadingClass);
                    addRemoveLoadEvents(elem, rafSwitchLoadingClass, true);
                }

                if (isPicture) {
                    forEach.call(parent.getElementsByTagName('source'), handleSources);
                }

                if (srcset) {
                    elem.setAttribute('srcset', srcset);
                } else if (src && !isPicture) {
                    if (regIframe.test(elem.nodeName)) {
                        changeIframeSrc(elem, src);
                    } else {
                        elem.src = src;
                    }
                }

                if (isImg && (srcset || isPicture)) {
                    updatePolyfill(elem, { src: src });
                }
            }

            if (elem._lazyRace) {
                delete elem._lazyRace;
            }
            removeClass(elem, lazySizesConfig.lazyClass);

            rAF(function () {
                if (!firesLoad || (elem.complete && elem.naturalWidth > 1)) {
                    if (firesLoad) {
                        resetPreloading(event);
                    } else {
                        isLoading--;
                    }
                    switchLoadingClass(event);
                }
            }, true);
        });

        var unveilElement = function (elem) {
            var detail;

            var isImg = regImg.test(elem.nodeName);

            //allow using sizes="auto", but don't use. it's invalid. Use data-sizes="auto" or a valid value for sizes instead (i.e.: sizes="80vw")
            var sizes = isImg && (elem[_getAttribute](lazySizesConfig.sizesAttr) || elem[_getAttribute]('sizes'));
            var isAuto = sizes === 'auto';

            if ((isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesConfig.errorClass) && hasClass(elem, lazySizesConfig.lazyClass)) { return; }

            detail = triggerEvent(elem, 'lazyunveilread').detail;

            if (isAuto) {
                autoSizer.updateElem(elem, true, elem.offsetWidth);
            }

            elem._lazyRace = true;
            isLoading++;

            lazyUnveil(elem, detail, isAuto, sizes, isImg);
        };

        var onload = function () {
            if (isCompleted) { return; }
            if (Date.now() - started < 999) {
                setTimeout(onload, 999);
                return;
            }
            var afterScroll = debounce(function () {
                lazySizesConfig.loadMode = 3;
                throttledCheckElements();
            });

            isCompleted = true;

            lazySizesConfig.loadMode = 3;

            throttledCheckElements();

            addEventListener('scroll', function () {
                if (lazySizesConfig.loadMode === 3) {
                    lazySizesConfig.loadMode = 2;
                }
                afterScroll();
            }, true);
        };

        return {
            _: function () {
                started = Date.now();

                lazysizes.elements = document.getElementsByClassName(lazySizesConfig.lazyClass);
                preloadElems = document.getElementsByClassName(lazySizesConfig.lazyClass + ' ' + lazySizesConfig.preloadClass);
                hFac = lazySizesConfig.hFac;

                addEventListener('scroll', throttledCheckElements, true);

                addEventListener('resize', throttledCheckElements, true);

                if (window.MutationObserver) {
                    new MutationObserver(throttledCheckElements).observe(docElem, { childList: true, subtree: true, attributes: true });
                } else {
                    docElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);
                    docElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);
                    setInterval(throttledCheckElements, 999);
                }

                addEventListener('hashchange', throttledCheckElements, true);

                //, 'fullscreenchange'
                ['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend', 'webkitAnimationEnd'].forEach(function (name) {
                    document[_addEventListener](name, throttledCheckElements, true);
                });

                if ((/d$|^c/.test(document.readyState))) {
                    onload();
                } else {
                    addEventListener('load', onload);
                    document[_addEventListener]('DOMContentLoaded', throttledCheckElements);
                    setTimeout(onload, 20000);
                }

                if (lazysizes.elements.length) {
                    checkElements();
                    rAF._lsFlush();
                } else {
                    throttledCheckElements();
                }
            },
            checkElems: throttledCheckElements,
            unveil: unveilElement
        };
    })();


    var autoSizer = (function () {
        var autosizesElems;

        var sizeElement = rAFIt(function (elem, parent, event, width) {
            var sources, i, len;
            elem._lazysizesWidth = width;
            width += 'px';

            elem.setAttribute('sizes', width);

            if (regPicture.test(parent.nodeName || '')) {
                sources = parent.getElementsByTagName('source');
                for (i = 0, len = sources.length; i < len; i++) {
                    sources[i].setAttribute('sizes', width);
                }
            }

            if (!event.detail.dataAttr) {
                updatePolyfill(elem, event.detail);
            }
        });
        var getSizeElement = function (elem, dataAttr, width) {
            var event;
            var parent = elem.parentNode;

            if (parent) {
                width = getWidth(elem, parent, width);
                event = triggerEvent(elem, 'lazybeforesizes', { width: width, dataAttr: !!dataAttr });

                if (!event.defaultPrevented) {
                    width = event.detail.width;

                    if (width && width !== elem._lazysizesWidth) {
                        sizeElement(elem, parent, event, width);
                    }
                }
            }
        };

        var updateElementsSizes = function () {
            var i;
            var len = autosizesElems.length;
            if (len) {
                i = 0;

                for (; i < len; i++) {
                    getSizeElement(autosizesElems[i]);
                }
            }
        };

        var debouncedUpdateElementsSizes = debounce(updateElementsSizes);

        return {
            _: function () {
                autosizesElems = document.getElementsByClassName(lazySizesConfig.autosizesClass);
                addEventListener('resize', debouncedUpdateElementsSizes);
            },
            checkElems: debouncedUpdateElementsSizes,
            updateElem: getSizeElement
        };
    })();

    var init = function () {
        if (!init.i) {
            init.i = true;
            autoSizer._();
            loader._();
        }
    };

    lazysizes = {
        cfg: lazySizesConfig,
        autoSizer: autoSizer,
        loader: loader,
        init: init,
        uP: updatePolyfill,
        aC: addClass,
        rC: removeClass,
        hC: hasClass,
        fire: triggerEvent,
        gW: getWidth,
        rAF: rAF,
    };

    return lazysizes;
}
))
;/*
     _ _      _       _
 ___| (_) ___| | __  (_)___
/ __| | |/ __| |/ /  | / __|
\__ \ | | (__|   < _ | \__ \
|___/_|_|\___|_|\_(_)/ |___/
                   |__/

 Version: 1.9.0
  Author: Ken Wheeler
 Website: http://kenwheeler.github.io
    Docs: http://kenwheeler.github.io/slick
    Repo: http://github.com/kenwheeler/slick
  Issues: http://github.com/kenwheeler/slick/issues

 */
/* global window, document, define, jQuery, setInterval, clearInterval */
; (function (factory) {
    'use strict';
    if (typeof define === 'function' && define.amd) {
        define(['jquery'], factory);
    } else if (typeof exports !== 'undefined') {
        module.exports = factory(require('jquery'));
    } else {
        factory(jQuery);
    }

}(function ($) {
    'use strict';
    var Slick = window.Slick || {};

    Slick = (function () {

        var instanceUid = 0;

        function Slick(element, settings) {

            var _ = this, dataSettings;

            _.defaults = {
                accessibility: true,
                activeSlidePosition: 'relative',
                adaptiveHeight: false,
                appendArrows: $(element),
                appendDots: $(element),
                arrows: true,
                asNavFor: null,
                prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',
                nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>',
                autoplay: false,
                autoplaySpeed: 3000,
                centerMode: false,
                centerPadding: '50px',
                cssEase: 'ease',
                customPaging: function (slider, i) {
                    return $('<button type="button" />').text(i + 1);
                },
                dots: false,
                dotsClass: 'slick-dots',
                draggable: true,
                easing: 'linear',
                edgeFriction: 0.35,
                fade: false,
                focusOnSelect: false,
                focusOnChange: false,
                infinite: true,
                initialSlide: 0,
                lazyLoad: 'ondemand',
                lazyLoadSrcAttr: 'data-lazy',
                lazyLoadSrcsetAttr: 'data-srcset',
                numImagesToPreload: 1, // centermode must be false
                mobileFirst: false,
                pauseOnHover: true,
                pauseOnFocus: true,
                pauseOnDotsHover: false,
                respondTo: 'window',
                responsive: null,
                rows: 1,
                rtl: false,
                slide: '',
                slidesPerRow: 1,
                slidesToShow: 1,
                slidesToScroll: 1,
                speed: 500,
                swipe: true,
                swipeToSlide: false,
                touchMove: true,
                touchThreshold: 5,
                useCSS: true,
                useTransform: true,
                variableWidth: false,
                vertical: false,
                verticalSwiping: false,
                waitForAnimate: true,
                zIndex: 1000
            };

            _.initials = {
                animating: false,
                dragging: false,
                autoPlayTimer: null,
                currentDirection: 0,
                currentLeft: null,
                currentSlide: 0,
                direction: 1,
                $dots: null,
                listWidth: null,
                listHeight: null,
                loadIndex: 0,
                $nextArrow: null,
                $prevArrow: null,
                scrolling: false,
                slideCount: null,
                slideWidth: null,
                $slideTrack: null,
                $slides: null,
                sliding: false,
                slideOffset: 0,
                swipeLeft: null,
                swiping: false,
                $list: null,
                touchObject: {},
                transformsEnabled: false,
                unslicked: false
            };

            $.extend(_, _.initials);

            _.activeBreakpoint = null;
            _.animType = null;
            _.animProp = null;
            _.breakpoints = [];
            _.breakpointSettings = [];
            _.cssTransitions = false;
            _.focussed = false;
            _.interrupted = false;
            _.hidden = 'hidden';
            _.paused = true;
            _.positionProp = null;
            _.respondTo = null;
            _.rowCount = 1;
            _.shouldClick = true;
            _.$slider = $(element);
            _.$slidesCache = null;
            _.transformType = null;
            _.transitionType = null;
            _.visibilityChange = 'visibilitychange';
            _.windowWidth = 0;
            _.windowTimer = null;

            dataSettings = $(element).data('slick') || {};

            _.options = $.extend({}, _.defaults, settings, dataSettings);

            _.currentSlide = _.options.initialSlide;

            _.originalSettings = _.options;

            if (typeof document.mozHidden !== 'undefined') {
                _.hidden = 'mozHidden';
                _.visibilityChange = 'mozvisibilitychange';
            } else if (typeof document.webkitHidden !== 'undefined') {
                _.hidden = 'webkitHidden';
                _.visibilityChange = 'webkitvisibilitychange';
            }

            _.autoPlay = $.proxy(_.autoPlay, _);
            _.autoPlayClear = $.proxy(_.autoPlayClear, _);
            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
            _.changeSlide = $.proxy(_.changeSlide, _);
            _.clickHandler = $.proxy(_.clickHandler, _);
            _.selectHandler = $.proxy(_.selectHandler, _);
            _.setPosition = $.proxy(_.setPosition, _);
            _.swipeHandler = $.proxy(_.swipeHandler, _);
            _.dragHandler = $.proxy(_.dragHandler, _);
            _.keyHandler = $.proxy(_.keyHandler, _);

            _.instanceUid = instanceUid++;

            // A simple way to check for HTML strings
            // Strict HTML recognition (must start with <)
            // Extracted from jQuery v1.11 source
            _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/;


            _.registerBreakpoints();
            _.init(true);

        }

        return Slick;

    }());

    Slick.prototype.activateADA = function () {
        var _ = this;

        _.$slideTrack.find('.slick-active').attr({
            'aria-hidden': 'false'
        }).find('a, input, button, select').attr({
            'tabindex': '0'
        });

    };

    Slick.prototype.addSlide = Slick.prototype.slickAdd = function (markup, index, addBefore) {

        var _ = this;

        if (typeof (index) === 'boolean') {
            addBefore = index;
            index = null;
        } else if (index < 0 || (index >= _.slideCount)) {
            return false;
        }

        _.unload();

        if (typeof (index) === 'number') {
            if (index === 0 && _.$slides.length === 0) {
                $(markup).appendTo(_.$slideTrack);
            } else if (addBefore) {
                $(markup).insertBefore(_.$slides.eq(index));
            } else {
                $(markup).insertAfter(_.$slides.eq(index));
            }
        } else {
            if (addBefore === true) {
                $(markup).prependTo(_.$slideTrack);
            } else {
                $(markup).appendTo(_.$slideTrack);
            }
        }

        _.$slides = _.$slideTrack.children(this.options.slide);

        _.$slideTrack.children(this.options.slide).detach();

        _.$slideTrack.append(_.$slides);

        _.$slides.each(function (index, element) {
            $(element).attr('data-slick-index', index);
        });

        _.$slidesCache = _.$slides;

        _.reinit();

    };

    Slick.prototype.animateHeight = function () {
        var _ = this;
        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
            _.$list.animate({
                height: targetHeight
            }, _.options.speed);
        }
    };

    Slick.prototype.animateSlide = function (targetLeft, callback) {

        var animProps = {},
            _ = this;

        _.animateHeight();

        if (_.options.rtl === true && _.options.vertical === false) {
            targetLeft = -targetLeft;
        }
        if (_.transformsEnabled === false) {
            if (_.options.vertical === false) {
                _.$slideTrack.animate({
                    left: targetLeft
                }, _.options.speed, _.options.easing, callback);
            } else {
                _.$slideTrack.animate({
                    top: targetLeft
                }, _.options.speed, _.options.easing, callback);
            }

        } else {

            if (_.cssTransitions === false) {
                if (_.options.rtl === true) {
                    _.currentLeft = -(_.currentLeft);
                }
                $({
                    animStart: _.currentLeft
                }).animate({
                    animStart: targetLeft
                }, {
                        duration: _.options.speed,
                        easing: _.options.easing,
                        step: function (now) {
                            now = Math.ceil(now);
                            if (_.options.vertical === false) {
                                animProps[_.animType] = 'translate(' +
                                    now + 'px, 0px)';
                                _.$slideTrack.css(animProps);
                            } else {
                                animProps[_.animType] = 'translate(0px,' +
                                    now + 'px)';
                                _.$slideTrack.css(animProps);
                            }
                        },
                        complete: function () {
                            if (callback) {
                                callback.call();
                            }
                        }
                    });

            } else {

                _.applyTransition();
                targetLeft = Math.ceil(targetLeft);

                if (_.options.vertical === false) {
                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';
                } else {
                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';
                }
                _.$slideTrack.css(animProps);

                if (callback) {
                    setTimeout(function () {

                        _.disableTransition();

                        callback.call();
                    }, _.options.speed);
                }

            }

        }

    };

    Slick.prototype.getNavTarget = function () {

        var _ = this,
            asNavFor = _.options.asNavFor;

        if (asNavFor && asNavFor !== null) {
            asNavFor = $(asNavFor).not(_.$slider);
        }

        return asNavFor;

    };

    Slick.prototype.asNavFor = function (index) {

        var _ = this,
            asNavFor = _.getNavTarget();

        if (asNavFor !== null && typeof asNavFor === 'object') {
            asNavFor.each(function () {
                var target = $(this).slick('getSlick');
                if (!target.unslicked) {
                    target.slideHandler(index, true);
                }
            });
        }

    };

    Slick.prototype.applyTransition = function (slide) {

        var _ = this,
            transition = {};

        if (_.options.fade === false) {
            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;
        } else {
            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;
        }

        if (_.options.fade === false) {
            _.$slideTrack.css(transition);
        } else {
            _.$slides.eq(slide).css(transition);
        }

    };

    Slick.prototype.autoPlay = function () {

        var _ = this;

        _.autoPlayClear();

        if (_.slideCount > _.options.slidesToShow) {
            _.autoPlayTimer = setInterval(_.autoPlayIterator, _.options.autoplaySpeed);
        }

    };

    Slick.prototype.autoPlayClear = function () {

        var _ = this;

        if (_.autoPlayTimer) {
            clearInterval(_.autoPlayTimer);
        }

    };

    Slick.prototype.autoPlayIterator = function () {

        var _ = this,
            slideTo = _.currentSlide + _.options.slidesToScroll;

        if (!_.paused && !_.interrupted && !_.focussed) {

            if (_.options.infinite === false) {

                if (_.direction === 1 && (_.currentSlide + 1) === (_.slideCount - 1)) {
                    _.direction = 0;
                }

                else if (_.direction === 0) {

                    slideTo = _.currentSlide - _.options.slidesToScroll;

                    if (_.currentSlide - 1 === 0) {
                        _.direction = 1;
                    }

                }

            }

            _.slideHandler(slideTo);

        }

    };

    Slick.prototype.buildArrows = function () {

        var _ = this;

        if (_.options.arrows === true) {

            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');
            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');

            if (_.slideCount > _.options.slidesToShow) {

                _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
                _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');

                if (_.htmlExpr.test(_.options.prevArrow)) {
                    _.$prevArrow.prependTo(_.options.appendArrows);
                }

                if (_.htmlExpr.test(_.options.nextArrow)) {
                    _.$nextArrow.appendTo(_.options.appendArrows);
                }

                if (_.options.infinite !== true) {
                    _.$prevArrow
                        .addClass('slick-disabled')
                        .attr('aria-disabled', 'true');
                }

            } else {

                _.$prevArrow.add(_.$nextArrow)

                    .addClass('slick-hidden')
                    .attr({
                        'aria-disabled': 'true',
                        'tabindex': '-1'
                    });

            }

        }

    };

    Slick.prototype.buildDots = function () {

        var _ = this,
            i, dot;

        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {

            _.$slider.addClass('slick-dotted');

            dot = $('<ul />').addClass(_.options.dotsClass);

            for (i = 0; i <= _.getDotCount(); i += 1) {
                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));
            }

            _.$dots = dot.appendTo(_.options.appendDots);

            _.$dots.find('li').first().addClass('slick-active');

        }

    };

    Slick.prototype.buildOut = function () {

        var _ = this;

        _.$slides =
            _.$slider
                .children(_.options.slide + ':not(.slick-cloned)')
                .addClass('slick-slide');

        _.slideCount = _.$slides.length;

        _.$slides.each(function (index, element) {
            $(element)
                .attr('data-slick-index', index)
                .data('originalStyling', $(element).attr('style') || '');
        });

        _.$slider.addClass('slick-slider');

        _.$slideTrack = (_.slideCount === 0) ?
            $('<div class="slick-track"/>').appendTo(_.$slider) :
            _.$slides.wrapAll('<div class="slick-track"/>').parent();

        _.$list = _.$slideTrack.wrap(
            '<div class="slick-list"/>').parent();
        _.$slideTrack.css('opacity', 0);

        if (_.options.centerMode === true || _.options.swipeToSlide === true) {
            _.options.slidesToScroll = 1;
        }

        $('img[' + _.options.lazyLoadSrcAttr + ']', _.$slider).not('[src]').addClass('slick-loading');

        _.setupInfinite();

        _.buildArrows();

        _.buildDots();

        _.updateDots();


        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);

        if (_.options.draggable === true) {
            _.$list.addClass('draggable');
        }

    };

    Slick.prototype.buildRows = function () {

        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides, slidesPerSection;

        newSlides = document.createDocumentFragment();
        originalSlides = _.$slider.children();

        if (_.options.rows > 0) {

            slidesPerSection = _.options.slidesPerRow * _.options.rows;
            numOfSlides = Math.ceil(
                originalSlides.length / slidesPerSection
            );

            for (a = 0; a < numOfSlides; a++) {
                var slide = document.createElement('div');
                for (b = 0; b < _.options.rows; b++) {
                    var row = document.createElement('div');
                    for (c = 0; c < _.options.slidesPerRow; c++) {
                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));
                        if (originalSlides.get(target)) {
                            row.appendChild(originalSlides.get(target));
                        }
                    }
                    slide.appendChild(row);
                }
                newSlides.appendChild(slide);
            }

            _.$slider.empty().append(newSlides);
            _.$slider.children().children().children()
                .css({
                    'width': (100 / _.options.slidesPerRow) + '%',
                    'display': 'inline-block'
                });

        }

    };

    Slick.prototype.checkResponsive = function (initial, forceUpdate) {

        var _ = this,
            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;
        var sliderWidth = _.$slider.width();
        var windowWidth = window.innerWidth || $(window).width();

        if (_.respondTo === 'window') {
            respondToWidth = windowWidth;
        } else if (_.respondTo === 'slider') {
            respondToWidth = sliderWidth;
        } else if (_.respondTo === 'min') {
            respondToWidth = Math.min(windowWidth, sliderWidth);
        }

        if (_.options.responsive &&
            _.options.responsive.length &&
            _.options.responsive !== null) {

            targetBreakpoint = null;

            for (breakpoint in _.breakpoints) {
                if (_.breakpoints.hasOwnProperty(breakpoint)) {
                    if (_.originalSettings.mobileFirst === false) {
                        if (respondToWidth < _.breakpoints[breakpoint]) {
                            targetBreakpoint = _.breakpoints[breakpoint];
                        }
                    } else {
                        if (respondToWidth > _.breakpoints[breakpoint]) {
                            targetBreakpoint = _.breakpoints[breakpoint];
                        }
                    }
                }
            }

            if (targetBreakpoint !== null) {
                if (_.activeBreakpoint !== null) {
                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {
                        _.activeBreakpoint =
                            targetBreakpoint;
                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
                            _.unslick(targetBreakpoint);
                        } else {
                            _.options = $.extend({}, _.originalSettings,
                                _.breakpointSettings[
                                targetBreakpoint]);
                            if (initial === true) {
                                _.currentSlide = _.options.initialSlide;
                            }
                            _.refresh(initial);
                        }
                        triggerBreakpoint = targetBreakpoint;
                    }
                } else {
                    _.activeBreakpoint = targetBreakpoint;
                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
                        _.unslick(targetBreakpoint);
                    } else {
                        _.options = $.extend({}, _.originalSettings,
                            _.breakpointSettings[
                            targetBreakpoint]);
                        if (initial === true) {
                            _.currentSlide = _.options.initialSlide;
                        }
                        _.refresh(initial);
                    }
                    triggerBreakpoint = targetBreakpoint;
                }
            } else {
                if (_.activeBreakpoint !== null) {
                    _.activeBreakpoint = null;
                    _.options = _.originalSettings;
                    if (initial === true) {
                        _.currentSlide = _.options.initialSlide;
                    }
                    _.refresh(initial);
                    triggerBreakpoint = targetBreakpoint;
                }
            }

            // only trigger breakpoints during an actual break. not on initialize.
            if (!initial && triggerBreakpoint !== false) {
                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);
            }
        }

    };

    Slick.prototype.changeSlide = function (event, dontAnimate) {

        var _ = this,
            $target = $(event.currentTarget),
            indexOffset, slideOffset, unevenOffset;

        // If target is a link, prevent default action.
        if ($target.is('a')) {
            event.preventDefault();
        }

        // If target is not the <li> element (ie: a child), find the <li>.
        if (!$target.is('li')) {
            $target = $target.closest('li');
        }

        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);
        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;

        switch (event.data.message) {

            case 'previous':
                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;
                if (_.slideCount > _.options.slidesToShow) {
                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);
                }
                break;

            case 'next':
                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;
                if (_.slideCount > _.options.slidesToShow) {
                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);
                }
                break;

            case 'index':
                var index = event.data.index === 0 ? 0 :
                    event.data.index || $target.index() * _.options.slidesToScroll;

                _.slideHandler(_.checkNavigable(index), false, dontAnimate);
                $target.children().trigger('focus');
                break;

            default:
                return;
        }

    };

    Slick.prototype.checkNavigable = function (index) {

        var _ = this,
            navigables, prevNavigable;

        navigables = _.getNavigableIndexes();
        prevNavigable = 0;
        if (index > navigables[navigables.length - 1]) {
            index = navigables[navigables.length - 1];
        } else {
            for (var n in navigables) {
                if (index < navigables[n]) {
                    index = prevNavigable;
                    break;
                }
                prevNavigable = navigables[n];
            }
        }

        return index;
    };

    Slick.prototype.cleanUpEvents = function () {

        var _ = this;

        if (_.options.dots && _.$dots !== null) {

            $('li', _.$dots)
                .off('click.slick', _.changeSlide)
                .off('mouseenter.slick', $.proxy(_.interrupt, _, true))
                .off('mouseleave.slick', $.proxy(_.interrupt, _, false));

            if (_.options.accessibility === true) {
                _.$dots.off('keydown.slick', _.keyHandler);
            }
        }

        _.$slider.off('focus.slick blur.slick');

        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);
            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);

            if (_.options.accessibility === true) {
                _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);
                _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);
            }
        }

        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);
        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);
        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);
        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);

        _.$list.off('click.slick', _.clickHandler);

        $(document).off(_.visibilityChange, _.visibility);

        _.cleanUpSlideEvents();

        if (_.options.accessibility === true) {
            _.$list.off('keydown.slick', _.keyHandler);
        }

        if (_.options.focusOnSelect === true) {
            $(_.$slideTrack).children().off('click.slick', _.selectHandler);
        }

        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);

        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);

        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);

        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);

    };

    Slick.prototype.cleanUpSlideEvents = function () {

        var _ = this;

        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));
        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));

    };

    Slick.prototype.cleanUpRows = function () {

        var _ = this, originalSlides;

        if (_.options.rows > 0) {
            originalSlides = _.$slides.children().children();
            originalSlides.removeAttr('style');
            _.$slider.empty().append(originalSlides);
        }

    };

    Slick.prototype.clickHandler = function (event) {

        var _ = this;

        if (_.shouldClick === false) {
            event.stopImmediatePropagation();
            event.stopPropagation();
            event.preventDefault();
        }

    };

    Slick.prototype.destroy = function (refresh) {

        var _ = this;

        _.autoPlayClear();

        _.touchObject = {};

        _.cleanUpEvents();

        $('.slick-cloned', _.$slider).detach();

        if (_.$dots) {
            _.$dots.remove();
        }

        if (_.$prevArrow && _.$prevArrow.length) {

            _.$prevArrow
                .removeClass('slick-disabled slick-arrow slick-hidden')
                .removeAttr('aria-hidden aria-disabled tabindex')
                .css('display', '');

            if (_.htmlExpr.test(_.options.prevArrow)) {
                _.$prevArrow.remove();
            }
        }

        if (_.$nextArrow && _.$nextArrow.length) {

            _.$nextArrow
                .removeClass('slick-disabled slick-arrow slick-hidden')
                .removeAttr('aria-hidden aria-disabled tabindex')
                .css('display', '');

            if (_.htmlExpr.test(_.options.nextArrow)) {
                _.$nextArrow.remove();
            }
        }


        if (_.$slides) {

            _.$slides
                .removeClass('slick-slide slick-active slick-center slick-visible slick-current')
                .removeAttr('aria-hidden')
                .removeAttr('data-slick-index')
                .each(function () {
                    var slide = $(this);
                    slide.attr('style', slide.data('originalStyling'));
                });

            _.$slideTrack.children(this.options.slide).detach();

            _.$slideTrack.detach();

            _.$list.detach();

            _.$slider.append(_.$slides);
        }

        _.cleanUpRows();

        _.$slider.removeClass('slick-slider');
        _.$slider.removeClass('slick-initialized');
        _.$slider.removeClass('slick-dotted');

        _.unslicked = true;

        if (!refresh) {
            _.$slider.trigger('destroy', [_]);
        }

    };

    Slick.prototype.disableTransition = function (slide) {

        var _ = this,
            transition = {};

        transition[_.transitionType] = '';

        if (_.options.fade === false) {
            _.$slideTrack.css(transition);
        } else {
            _.$slides.eq(slide).css(transition);
        }

    };

    Slick.prototype.fadeSlide = function (slideIndex, callback) {

        var _ = this;

        if (_.cssTransitions === false) {

            _.$slides.eq(slideIndex).css({
                zIndex: _.options.zIndex
            });

            _.$slides.eq(slideIndex).animate({
                opacity: 1
            }, _.options.speed, _.options.easing, callback);

        } else {

            _.applyTransition(slideIndex);

            _.$slides.eq(slideIndex).css({
                opacity: 1,
                zIndex: _.options.zIndex
            });

            if (callback) {
                setTimeout(function () {

                    _.disableTransition(slideIndex);

                    callback.call();
                }, _.options.speed);
            }

        }

    };

    Slick.prototype.fadeSlideOut = function (slideIndex) {

        var _ = this;

        if (_.cssTransitions === false) {

            _.$slides.eq(slideIndex).animate({
                opacity: 0,
                zIndex: _.options.zIndex - 2
            }, _.options.speed, _.options.easing);

        } else {

            _.applyTransition(slideIndex);

            _.$slides.eq(slideIndex).css({
                opacity: 0,
                zIndex: _.options.zIndex - 2
            });

        }

    };

    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function (filter) {

        var _ = this;

        if (filter !== null) {

            _.$slidesCache = _.$slides;

            _.unload();

            _.$slideTrack.children(this.options.slide).detach();

            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);

            _.reinit();

        }

    };

    Slick.prototype.focusHandler = function () {

        var _ = this;

        // If any child element receives focus within the slider we need to pause the autoplay
        _.$slider
            .off('focus.slick blur.slick')
            .on(
                'focus.slick',
                '*',
                function (event) {
                    var $sf = $(this);

                    setTimeout(function () {
                        if (_.options.pauseOnFocus) {
                            if ($sf.is(':focus')) {
                                _.focussed = true;
                                _.autoPlay();
                            }
                        }
                    }, 0);
                }
            ).on(
                'blur.slick',
                '*',
                function (event) {
                    var $sf = $(this);

                    // When a blur occurs on any elements within the slider we become unfocused
                    if (_.options.pauseOnFocus) {
                        _.focussed = false;
                        _.autoPlay();
                    }
                }
            );
    };

    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function () {

        var _ = this;
        return _.currentSlide;

    };

    Slick.prototype.getDotCount = function () {

        var _ = this;

        var breakPoint = 0;
        var counter = 0;
        var pagerQty = 0;

        if (_.options.infinite === true) {
            if (_.slideCount <= _.options.slidesToShow) {
                ++pagerQty;
            } else {
                while (breakPoint < _.slideCount) {
                    ++pagerQty;
                    breakPoint = counter + _.options.slidesToScroll;
                    counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
                }
            }
        } else if (_.options.centerMode === true) {
            pagerQty = _.slideCount;
        } else if (!_.options.asNavFor) {
            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);
        } else {
            while (breakPoint < _.slideCount) {
                ++pagerQty;
                breakPoint = counter + _.options.slidesToScroll;
                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
            }
        }

        return pagerQty - 1;

    };

    Slick.prototype.getLeft = function (slideIndex) {

        var _ = this,
            targetLeft,
            verticalHeight,
            verticalOffset = 0,
            targetSlide,
            coef;

        _.slideOffset = 0;
        verticalHeight = _.$slides.first().outerHeight(true);

        if (_.options.infinite === true) {
            if (_.slideCount > _.options.slidesToShow) {
                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
                coef = -1

                if (_.options.vertical === true && _.options.centerMode === true) {
                    if (_.options.slidesToShow === 2) {
                        coef = -1.5;
                    } else if (_.options.slidesToShow === 1) {
                        coef = -2
                    }
                }
                verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;
            }
            if (_.slideCount % _.options.slidesToScroll !== 0) {
                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
                    if (slideIndex > _.slideCount) {
                        _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;
                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;
                    } else {
                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;
                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;
                    }
                }
            }
        } else {
            if (slideIndex + _.options.slidesToShow > _.slideCount) {
                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;
                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;
            }
        }

        if (_.slideCount <= _.options.slidesToShow) {
            _.slideOffset = 0;
            verticalOffset = 0;
        }

        if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {
            _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);
        } else if (_.options.centerMode === true && _.options.infinite === true) {
            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
        } else if (_.options.centerMode === true) {
            _.slideOffset = 0;
            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);
        }

        if (_.options.vertical === false) {
            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;
        } else {
            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;
        }

        if (_.options.variableWidth === true) {

            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
            } else {
                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);
            }

            if (_.options.rtl === true) {
                if (targetSlide[0]) {
                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
                } else {
                    targetLeft = 0;
                }
            } else {
                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
            }

            if (_.options.centerMode === true) {
                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
                } else {
                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);
                }

                if (_.options.rtl === true) {
                    if (targetSlide[0]) {
                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
                    } else {
                        targetLeft = 0;
                    }
                } else {
                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
                }

                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;
            }
        }

        return targetLeft;

    };

    Slick.prototype.getOption = Slick.prototype.slickGetOption = function (option) {

        var _ = this;

        return _.options[option];

    };

    Slick.prototype.getNavigableIndexes = function () {

        var _ = this,
            breakPoint = 0,
            counter = 0,
            indexes = [],
            max;

        if (_.options.infinite === false) {
            max = _.slideCount;
        } else {
            breakPoint = _.options.slidesToScroll * -1;
            counter = _.options.slidesToScroll * -1;
            max = _.slideCount * 2;
        }

        while (breakPoint < max) {
            indexes.push(breakPoint);
            breakPoint = counter + _.options.slidesToScroll;
            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
        }

        return indexes;

    };

    Slick.prototype.getSlick = function () {

        return this;

    };

    Slick.prototype.getSlideCount = function () {

        var _ = this,
            slidesTraversed, swipedSlide, swipeTarget, centerOffset;

        centerOffset = _.options.centerMode === true ? Math.floor(_.$list.width() / 2) : 0;
        swipeTarget = (_.swipeLeft * -1) + centerOffset;

        if (_.options.swipeToSlide === true) {

            _.$slideTrack.find('.slick-slide').each(function (index, slide) {

                var slideOuterWidth, slideOffset, slideRightBoundary;
                slideOuterWidth = $(slide).outerWidth();
                slideOffset = slide.offsetLeft;
                if (_.options.centerMode !== true) {
                    slideOffset += (slideOuterWidth / 2);
                }

                slideRightBoundary = slideOffset + (slideOuterWidth);

                if (swipeTarget < slideRightBoundary) {
                    swipedSlide = slide;
                    return false;
                }
            });

            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;

            return slidesTraversed;

        } else {
            return _.options.slidesToScroll;
        }

    };

    Slick.prototype.goTo = Slick.prototype.slickGoTo = function (slide, dontAnimate) {

        var _ = this;

        _.changeSlide({
            data: {
                message: 'index',
                index: parseInt(slide)
            }
        }, dontAnimate);

    };

    Slick.prototype.init = function (creation) {

        var _ = this;

        if (!$(_.$slider).hasClass('slick-initialized')) {

            $(_.$slider).addClass('slick-initialized');

            _.buildRows();
            _.buildOut();
            _.setProps();
            _.startLoad();
            _.loadSlider();
            _.initializeEvents();
            _.updateArrows();
            _.updateDots();
            _.checkResponsive(true);
            _.focusHandler();

        }

        if (creation) {
            _.$slider.trigger('init', [_]);
        }

        if (_.options.accessibility === true && _.$slides !== null) {
            try {
                _.initADA();
            } catch (e) {
                console.log('Cant initialize Slick initADA().. ' + creation); // todo: possible solution => setTimeout()..
                // console.log(_);
                // console.log(e);
            }
        }

        if (_.options.autoplay) {
            _.paused = false;
            _.autoPlay();

        }
    };

    Slick.prototype.initADA = function () {
        var _ = this,
            numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),
            tabControlIndexes = _.getNavigableIndexes().filter(function (val) {
                return (val >= 0) && (val < _.slideCount);
            });

        _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({
            'aria-hidden': 'true',
            'tabindex': '-1'
        }).find('a, input, button, select').attr({
            'tabindex': '-1'
        });

        if (_.$dots !== null) {
            _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function (i) {
                var slide = $(this);
                var slideControlIndex = tabControlIndexes.indexOf(i);

                slide.attr({
                    'role': 'tabpanel',
                    'id': 'slick-slide' + _.instanceUid + i,
                    'tabindex': -1
                });

                if (slideControlIndex !== -1) {
                    var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex
                    if ($('#' + ariaButtonControl).length) {
                        slide.attr({
                            'aria-describedby': ariaButtonControl
                        });
                    }
                }
            });

            _.$dots.attr('role', 'tablist').find('li').each(function (i) {
                var dot = $(this);
                var mappedSlideIndex = tabControlIndexes[i];

                dot.attr({
                    'role': 'presentation'
                });

                dot.find('button').first().attr({
                    'role': 'tab',
                    'id': 'slick-slide-control' + _.instanceUid + i,
                    'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,
                    'aria-label': (i + 1) + ' of ' + numDotGroups,
                    'aria-selected': null,
                    'tabindex': '-1'
                });

            }).eq(_.currentSlide).find('button').attr({
                'aria-selected': 'true',
                'tabindex': '0'
            }).end();
        }

        for (var i = _.currentSlide, max = i + _.options.slidesToShow; i < max; i++) {
            if (_.options.focusOnChange) {
                _.$slides.eq(i).attr({ 'tabindex': '0' });
            } else {
                _.$slides.eq(i).removeAttr('tabindex');
            }
        }

        _.activateADA();

    };

    Slick.prototype.initArrowEvents = function () {

        var _ = this;

        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
            _.$prevArrow
                .off('click.slick')
                .on('click.slick', {
                    message: 'previous'
                }, _.changeSlide);
            _.$nextArrow
                .off('click.slick')
                .on('click.slick', {
                    message: 'next'
                }, _.changeSlide);

            if (_.options.accessibility === true) {
                _.$prevArrow.on('keydown.slick', _.keyHandler);
                _.$nextArrow.on('keydown.slick', _.keyHandler);
            }
        }

    };

    Slick.prototype.initDotEvents = function () {

        var _ = this;

        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
            $('li', _.$dots).on('click.slick', {
                message: 'index'
            }, _.changeSlide);

            if (_.options.accessibility === true) {
                _.$dots.on('keydown.slick', _.keyHandler);
            }
        }

        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {

            $('li', _.$dots)
                .on('mouseenter.slick', $.proxy(_.interrupt, _, true))
                .on('mouseleave.slick', $.proxy(_.interrupt, _, false));

        }

    };

    Slick.prototype.initSlideEvents = function () {

        var _ = this;

        if (_.options.pauseOnHover) {

            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));
            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));

        }

    };

    Slick.prototype.initializeEvents = function () {

        var _ = this;

        _.initArrowEvents();

        _.initDotEvents();
        _.initSlideEvents();

        _.$list.on('touchstart.slick mousedown.slick', {
            action: 'start'
        }, _.swipeHandler);
        _.$list.on('touchmove.slick mousemove.slick', {
            action: 'move'
        }, _.swipeHandler);
        _.$list.on('touchend.slick mouseup.slick', {
            action: 'end'
        }, _.swipeHandler);
        _.$list.on('touchcancel.slick mouseleave.slick', {
            action: 'end'
        }, _.swipeHandler);

        _.$list.on('click.slick', _.clickHandler);

        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));

        if (_.options.accessibility === true) {
            _.$list.on('keydown.slick', _.keyHandler);
        }

        if (_.options.focusOnSelect === true) {
            $(_.$slideTrack).children().on('click.slick', _.selectHandler);
        }

        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));

        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));

        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);

        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);
        $(_.setPosition);

    };

    Slick.prototype.initUI = function () {

        var _ = this;

        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {

            _.$prevArrow.show();
            _.$nextArrow.show();

        }

        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {

            _.$dots.show();

        }

    };

    Slick.prototype.keyHandler = function (event) {

        var _ = this;
        //Dont slide if the cursor is inside the form fields and arrow keys are pressed
        if (!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {
            if (event.keyCode === 37 && _.options.accessibility === true) {
                _.changeSlide({
                    data: {
                        message: _.options.rtl === true ? 'next' : 'previous'
                    }
                });
            } else if (event.keyCode === 39 && _.options.accessibility === true) {
                _.changeSlide({
                    data: {
                        message: _.options.rtl === true ? 'previous' : 'next'
                    }
                });
            }
        }

    };

    Slick.prototype.lazyLoad = function () {

        var _ = this, loadRange, cloneRange, rangeStart, rangeEnd;

        function loadImages(imagesScope) {

            $('img[' + _.options.lazyLoadSrcAttr + ']', imagesScope).each(function () {

                var image = $(this),
                    imageSource = image.attr(_.options.lazyLoadSrcAttr),
                    imageSrcSet = image.attr(_.options.lazyLoadSrcsetAttr),
                    imageSizes = image.attr('data-sizes') || _.$slider.attr('data-sizes'),
                    imageToLoad = document.createElement('img');

                imageToLoad.onload = function () {

                    image
                        .animate({ opacity: 0 }, 100, function () {

                            if (imageSrcSet) {
                                image
                                    .attr('srcset', imageSrcSet);

                                if (imageSizes) {
                                    image
                                        .attr('sizes', imageSizes);
                                }
                            }

                            image
                                .attr('src', imageSource)
                                .animate({ opacity: 1 }, 200, function () {
                                    image
                                        .removeAttr(_.options.lazyLoadSrcAttr + ' ' + _.options.lazyLoadSrcsetAttr + ' data-sizes')
                                        .removeClass('slick-loading');
                                });
                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);
                        });

                };

                imageToLoad.onerror = function () {
                    if (!$('head link[href="' + imageSource + '"]').exists()) {
                        $('head').prepend($('<link />', { rel: 'preload', href: imageSource, 'as': 'image' }));
                        image.addClass('slick-image-preloaded');
                    }
                    image
                        .animate({ opacity: 1 }, 100, function () {
                            image
                                .removeAttr(_.options.lazyLoadSrcAttr)
                                .removeClass('slick-loading')
                                .addClass('slick-lazyload-error');
                        });
                    _.$slider.trigger('lazyLoadError', [_, image, imageSource]);
                };

                imageToLoad.src = imageSource;

            });

        }

        if (_.options.centerMode === true) {
            if (_.options.infinite === true) {
                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);
                rangeEnd = rangeStart + _.options.slidesToShow + 2;
            } else {
                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));
                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;
            }
        } else {
            rangeStart = _.options.infinite ? _.options.numImagesToPreload + _.currentSlide : _.currentSlide;
            rangeEnd = Math.ceil(rangeStart + _.options.numImagesToPreload);
            if (_.options.fade === true) {
                if (rangeStart > 0) rangeStart--;
                if (rangeEnd <= _.slideCount) rangeEnd++;
            }
        }

        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);

        if (_.options.lazyLoad === 'anticipated') {
            var prevSlide = rangeStart - 1,
                nextSlide = rangeEnd,
                $slides = _.$slider.find('.slick-slide');

            for (var i = 0; i < _.options.slidesToScroll; i++) {
                if (prevSlide < 0) prevSlide = _.slideCount - 1;
                loadRange = loadRange.add($slides.eq(prevSlide));
                loadRange = loadRange.add($slides.eq(nextSlide));
                prevSlide--;
                nextSlide++;
            }
        }

        loadImages(loadRange);

        if (_.slideCount <= _.options.slidesToShow) {
            cloneRange = _.$slider.find('.slick-slide');
            loadImages(cloneRange);
        } else
            if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {
                cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);
                loadImages(cloneRange);
            } else if (_.currentSlide === 0) {
                cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);
                loadImages(cloneRange);
            }

    };

    Slick.prototype.loadSlider = function () {

        var _ = this;

        _.setPosition();

        _.$slideTrack.css({
            opacity: 1
        });

        _.$slider.removeClass('slick-loading');

        _.initUI();

        if (_.options.lazyLoad === 'progressive') {
            _.progressiveLazyLoad();
        }

    };

    Slick.prototype.next = Slick.prototype.slickNext = function () {

        var _ = this;

        _.changeSlide({
            data: {
                message: 'next'
            }
        });

    };

    Slick.prototype.orientationChange = function () {

        var _ = this;

        _.checkResponsive();
        _.setPosition();

    };

    Slick.prototype.pause = Slick.prototype.slickPause = function () {

        var _ = this;

        _.autoPlayClear();
        _.paused = true;

    };

    Slick.prototype.play = Slick.prototype.slickPlay = function () {

        var _ = this;

        _.autoPlay();
        _.options.autoplay = true;
        _.paused = false;
        _.focussed = false;
        _.interrupted = false;

    };

    Slick.prototype.postSlide = function (index) {

        var _ = this;

        if (!_.unslicked) {

            _.$slider.trigger('afterChange', [_, index]);

            _.animating = false;

            if (_.slideCount > _.options.slidesToShow) {
                _.setPosition();
            }

            _.swipeLeft = null;

            if (_.options.autoplay) {
                _.autoPlay();
            }

            if (_.options.accessibility === true) {
                _.initADA();

                if (_.options.focusOnChange) {
                    var $currentSlide = $(_.$slides.get(_.currentSlide));
                    $currentSlide.attr('tabindex', 0).focus();
                }
            }

        }

    };

    Slick.prototype.prev = Slick.prototype.slickPrev = function () {

        var _ = this;

        _.changeSlide({
            data: {
                message: 'previous'
            }
        });

    };

    Slick.prototype.preventDefault = function (event) {

        event.preventDefault();

    };

    Slick.prototype.progressiveLazyLoad = function (tryCount) {

        tryCount = tryCount || 1;

        var _ = this,
            $imgsToLoad = $('img[' + _.options.lazyLoadSrcAttr + ']', _.$slider),
            image,
            imageSource,
            imageSrcSet,
            imageSizes,
            imageToLoad;

        if ($imgsToLoad.length) {

            image = $imgsToLoad.first();
            imageSource = image.attr(_.options.lazyLoadSrcAttr);
            imageSrcSet = image.attr(_.options.lazyLoadSrcsetAttr);
            imageSizes = image.attr('data-sizes') || _.$slider.attr('data-sizes');
            imageToLoad = document.createElement('img');

            imageToLoad.onload = function () {

                if (imageSrcSet) {
                    image
                        .attr('srcset', imageSrcSet);

                    if (imageSizes) {
                        image
                            .attr('sizes', imageSizes);
                    }
                }

                image
                    .attr('src', imageSource)
                    .removeAttr(_.options.lazyLoadSrcAttr + ' ' + _.options.lazyLoadSrcsetAttr + ' data-sizes')
                    .removeClass('slick-loading');

                if (_.options.adaptiveHeight === true) {
                    _.setPosition();
                }

                _.$slider.trigger('lazyLoaded', [_, image, imageSource]);
                _.progressiveLazyLoad();

            };

            imageToLoad.onerror = function () {
                if (tryCount < 3) {

                    /**
                     * try to load the image 3 times,
                     * leave a slight delay so we don't get
                     * servers blocking the request.
                     */
                    setTimeout(function () {
                        _.progressiveLazyLoad(tryCount + 1);
                    }, 500);

                } else {

                    image
                        .removeAttr(_.options.lazyLoadSrcAttr)
                        .removeClass('slick-loading')
                        .addClass('slick-lazyload-error');

                    _.$slider.trigger('lazyLoadError', [_, image, imageSource]);

                    _.progressiveLazyLoad();

                }

            };

            imageToLoad.src = imageSource;

        } else {

            _.$slider.trigger('allImagesLoaded', [_]);

        }

    };

    Slick.prototype.refresh = function (initializing) {

        var _ = this, currentSlide, lastVisibleIndex;

        lastVisibleIndex = _.slideCount - _.options.slidesToShow;

        // in non-infinite sliders, we don't want to go past the
        // last visible index.
        if (!_.options.infinite && (_.currentSlide > lastVisibleIndex)) {
            _.currentSlide = lastVisibleIndex;
        }

        // if less slides than to show, go to start.
        if (_.slideCount <= _.options.slidesToShow) {
            _.currentSlide = 0;

        }

        currentSlide = _.currentSlide;

        _.destroy(true);

        $.extend(_, _.initials, { currentSlide: currentSlide });

        _.init();

        if (!initializing) {

            _.changeSlide({
                data: {
                    message: 'index',
                    index: currentSlide
                }
            }, false);

        }

    };

    Slick.prototype.registerBreakpoints = function () {

        var _ = this, breakpoint, currentBreakpoint, l,
            responsiveSettings = _.options.responsive || null;

        if ($.type(responsiveSettings) === 'array' && responsiveSettings.length) {

            _.respondTo = _.options.respondTo || 'window';

            for (breakpoint in responsiveSettings) {

                l = _.breakpoints.length - 1;

                if (responsiveSettings.hasOwnProperty(breakpoint)) {
                    currentBreakpoint = responsiveSettings[breakpoint].breakpoint;

                    // loop through the breakpoints and cut out any existing
                    // ones with the same breakpoint number, we don't want dupes.
                    while (l >= 0) {
                        if (_.breakpoints[l] && _.breakpoints[l] === currentBreakpoint) {
                            _.breakpoints.splice(l, 1);
                        }
                        l--;
                    }

                    _.breakpoints.push(currentBreakpoint);
                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;

                }

            }

            _.breakpoints.sort(function (a, b) {
                return (_.options.mobileFirst) ? a - b : b - a;
            });

        }

    };

    Slick.prototype.reinit = function () {

        var _ = this;

        _.$slides =
            _.$slideTrack
                .children(_.options.slide)
                .addClass('slick-slide');

        _.slideCount = _.$slides.length;

        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {
            _.currentSlide = _.currentSlide - _.options.slidesToScroll;
        }

        if (_.slideCount <= _.options.slidesToShow) {
            _.currentSlide = 0;
        }

        _.registerBreakpoints();

        _.setProps();
        _.setupInfinite();
        _.buildArrows();
        _.updateArrows();
        _.initArrowEvents();
        _.buildDots();
        _.updateDots();
        _.initDotEvents();
        _.cleanUpSlideEvents();
        _.initSlideEvents();

        _.checkResponsive(false, true);

        if (_.options.focusOnSelect === true) {
            $(_.$slideTrack).children().on('click.slick', _.selectHandler);
        }

        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);

        _.setPosition();
        _.focusHandler();

        _.paused = !_.options.autoplay;
        _.autoPlay();

        _.$slider.trigger('reInit', [_]);

    };

    Slick.prototype.resize = function () {

        var _ = this;

        if ($(window).width() !== _.windowWidth) {
            clearTimeout(_.windowDelay);
            _.windowDelay = window.setTimeout(function () {
                _.windowWidth = $(window).width();
                _.checkResponsive();
                if (!_.unslicked) { _.setPosition(); }
            }, 50);
        }
    };

    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function (index, removeBefore, removeAll) {

        var _ = this;

        if (typeof (index) === 'boolean') {
            removeBefore = index;
            index = removeBefore === true ? 0 : _.slideCount - 1;
        } else {
            index = removeBefore === true ? --index : index;
        }

        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {
            return false;
        }

        _.unload();

        if (removeAll === true) {
            _.$slideTrack.children().remove();
        } else {
            _.$slideTrack.children(this.options.slide).eq(index).remove();
        }

        _.$slides = _.$slideTrack.children(this.options.slide);

        _.$slideTrack.children(this.options.slide).detach();

        _.$slideTrack.append(_.$slides);

        _.$slidesCache = _.$slides;

        _.reinit();

    };

    Slick.prototype.setCSS = function (position) {

        var _ = this,
            positionProps = {},
            x, y;

        if (_.options.rtl === true) {
            position = -position;
        }
        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';
        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';

        positionProps[_.positionProp] = position;

        if (_.transformsEnabled === false) {
            _.$slideTrack.css(positionProps);
        } else {
            positionProps = {};
            if (_.cssTransitions === false) {
                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';
                _.$slideTrack.css(positionProps);
            } else {
                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';
                _.$slideTrack.css(positionProps);
            }
        }

    };

    Slick.prototype.setDimensions = function () {

        var _ = this;

        if (_.options.vertical === false) {
            if (_.options.centerMode === true) {
                _.$list.css({
                    padding: ('0px ' + _.options.centerPadding)
                });
            }
        } else {
            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);
            if (_.options.centerMode === true) {
                _.$list.css({
                    padding: (_.options.centerPadding + ' 0px')
                });
            }
        }

        _.listWidth = _.$list.width();
        _.listHeight = _.$list.height();


        if (_.options.vertical === false && _.options.variableWidth === false) {
            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));

        } else if (_.options.variableWidth === true) {
            _.$slideTrack.width(5000 * _.slideCount);
        } else {
            _.slideWidth = Math.ceil(_.listWidth);
            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));
        }

        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();
        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);

    };

    Slick.prototype.setFade = function () {

        var _ = this,
            targetLeft;

        _.$slides.each(function (index, element) {
            targetLeft = (_.slideWidth * index) * -1;
            if (_.options.rtl === true) {
                $(element).css({
                    position: 'relative',
                    right: targetLeft,
                    top: 0,
                    zIndex: _.options.zIndex - 2,
                    opacity: 0
                });
            } else {
                $(element).css({
                    position: 'relative',
                    left: targetLeft,
                    top: 0,
                    zIndex: _.options.zIndex - 2,
                    opacity: 0
                });
            }
        });

        _.$slides.eq(_.currentSlide).css({
            position: _.options.activeSlidePosition,
            zIndex: _.options.zIndex - 1,
            opacity: 1
        });

    };

    Slick.prototype.setHeight = function () {

        var _ = this;

        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
            _.$list.css('height', targetHeight);
        }

    };

    Slick.prototype.setOption =
        Slick.prototype.slickSetOption = function () {

            /**
             * accepts arguments in format of:
             *
             *  - for changing a single option's value:
             *     .slick("setOption", option, value, refresh )
             *
             *  - for changing a set of responsive options:
             *     .slick("setOption", 'responsive', [{}, ...], refresh )
             *
             *  - for updating multiple values at once (not responsive)
             *     .slick("setOption", { 'option': value, ... }, refresh )
             */

            var _ = this, l, item, option, value, refresh = false, type;

            if ($.type(arguments[0]) === 'object') {

                option = arguments[0];
                refresh = arguments[1];
                type = 'multiple';

            } else if ($.type(arguments[0]) === 'string') {

                option = arguments[0];
                value = arguments[1];
                refresh = arguments[2];

                if (arguments[0] === 'responsive' && $.type(arguments[1]) === 'array') {

                    type = 'responsive';

                } else if (typeof arguments[1] !== 'undefined') {

                    type = 'single';

                }

            }

            if (type === 'single') {

                _.options[option] = value;


            } else if (type === 'multiple') {

                $.each(option, function (opt, val) {

                    _.options[opt] = val;

                });


            } else if (type === 'responsive') {

                for (item in value) {

                    if ($.type(_.options.responsive) !== 'array') {

                        _.options.responsive = [value[item]];

                    } else {

                        l = _.options.responsive.length - 1;

                        // loop through the responsive object and splice out duplicates.
                        while (l >= 0) {

                            if (_.options.responsive[l].breakpoint === value[item].breakpoint) {

                                _.options.responsive.splice(l, 1);

                            }

                            l--;

                        }

                        _.options.responsive.push(value[item]);

                    }

                }

            }

            if (refresh) {

                _.unload();
                _.reinit();

            }

        };

    Slick.prototype.setPosition = function () {

        var _ = this;

        _.setDimensions();

        _.setHeight();

        if (_.options.fade === false) {
            _.setCSS(_.getLeft(_.currentSlide));
        } else {
            _.setFade();
        }

        _.$slider.trigger('setPosition', [_]);

    };

    Slick.prototype.setProps = function () {

        var _ = this,
            bodyStyle = document.body.style;

        _.positionProp = _.options.vertical === true ? 'top' : 'left';

        if (_.positionProp === 'top') {
            _.$slider.addClass('slick-vertical');
        } else {
            _.$slider.removeClass('slick-vertical');
        }

        if (bodyStyle.WebkitTransition !== undefined ||
            bodyStyle.MozTransition !== undefined ||
            bodyStyle.msTransition !== undefined) {
            if (_.options.useCSS === true) {
                _.cssTransitions = true;
            }
        }

        if (_.options.fade) {
            if (typeof _.options.zIndex === 'number') {
                if (_.options.zIndex < 3) {
                    _.options.zIndex = 3;
                }
            } else {
                _.options.zIndex = _.defaults.zIndex;
            }
        }

        if (bodyStyle.OTransform !== undefined) {
            _.animType = 'OTransform';
            _.transformType = '-o-transform';
            _.transitionType = 'OTransition';
            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
        }
        if (bodyStyle.MozTransform !== undefined) {
            _.animType = 'MozTransform';
            _.transformType = '-moz-transform';
            _.transitionType = 'MozTransition';
            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;
        }
        if (bodyStyle.webkitTransform !== undefined) {
            _.animType = 'webkitTransform';
            _.transformType = '-webkit-transform';
            _.transitionType = 'webkitTransition';
            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
        }
        if (bodyStyle.msTransform !== undefined) {
            _.animType = 'msTransform';
            _.transformType = '-ms-transform';
            _.transitionType = 'msTransition';
            if (bodyStyle.msTransform === undefined) _.animType = false;
        }
        if (bodyStyle.transform !== undefined && _.animType !== false) {
            _.animType = 'transform';
            _.transformType = 'transform';
            _.transitionType = 'transition';
        }
        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);
    };


    Slick.prototype.setSlideClasses = function (index) {

        var _ = this,
            centerOffset, allSlides, indexOffset, remainder;

        allSlides = _.$slider
            .find('.slick-slide')
            .removeClass('slick-active slick-center slick-current')
            .attr('aria-hidden', 'true');

        _.$slides
            .eq(index)
            .addClass('slick-current');

        if (_.options.centerMode === true) {

            var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;

            centerOffset = Math.floor(_.options.slidesToShow / 2);

            if (_.options.infinite === true) {

                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
                    _.$slides
                        .slice(index - centerOffset + evenCoef, index + centerOffset + 1)
                        .addClass('slick-active')
                        .attr('aria-hidden', 'false');

                } else {

                    indexOffset = _.options.slidesToShow + index;
                    allSlides
                        .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)
                        .addClass('slick-active')
                        .attr('aria-hidden', 'false');

                }

                if (index === 0) {

                    allSlides
                        .eq(allSlides.length - 1 - _.options.slidesToShow)
                        .addClass('slick-center');

                } else if (index === _.slideCount - 1) {

                    allSlides
                        .eq(_.options.slidesToShow)
                        .addClass('slick-center');

                }

            }

            _.$slides
                .eq(index)
                .addClass('slick-center');

        } else {

            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {

                _.$slides
                    .slice(index, index + _.options.slidesToShow)
                    .addClass('slick-active')
                    .attr('aria-hidden', 'false');

            } else if (allSlides.length <= _.options.slidesToShow) {

                allSlides
                    .addClass('slick-active')
                    .attr('aria-hidden', 'false');

            } else {

                remainder = _.slideCount % _.options.slidesToShow;
                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;

                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {

                    allSlides
                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)
                        .addClass('slick-active')
                        .attr('aria-hidden', 'false');

                } else {

                    allSlides
                        .slice(indexOffset, indexOffset + _.options.slidesToShow)
                        .addClass('slick-active')
                        .attr('aria-hidden', 'false');

                }

            }

        }

        if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {
            _.lazyLoad();
        }
    };

    Slick.prototype.setupInfinite = function () {

        var _ = this,
            i, slideIndex, infiniteCount;

        if (_.options.fade === true) {
            _.options.centerMode = false;
        }

        if (_.options.infinite === true && _.options.fade === false) {

            slideIndex = null;

            if (_.slideCount > _.options.slidesToShow) {

                if (_.options.centerMode === true) {
                    infiniteCount = _.options.slidesToShow + 1;
                } else {
                    infiniteCount = _.options.slidesToShow;
                }

                for (i = _.slideCount; i > (_.slideCount -
                    infiniteCount); i -= 1) {
                    slideIndex = i - 1;
                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
                        .attr('data-slick-index', slideIndex - _.slideCount)
                        .prependTo(_.$slideTrack).addClass('slick-cloned');
                }
                for (i = 0; i < infiniteCount + _.slideCount; i += 1) {
                    slideIndex = i;
                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
                        .attr('data-slick-index', slideIndex + _.slideCount)
                        .appendTo(_.$slideTrack).addClass('slick-cloned');
                }
                _.$slideTrack.find('.slick-cloned').find('[id]').each(function () {
                    $(this).attr('id', '');
                });

            }

        }

    };

    Slick.prototype.interrupt = function (toggle) {

        var _ = this;

        if (!toggle) {
            _.autoPlay();
        }
        _.interrupted = toggle;

    };

    Slick.prototype.selectHandler = function (event) {

        var _ = this;

        var targetElement =
            $(event.target).is('.slick-slide') ?
                $(event.target) :
                $(event.target).parents('.slick-slide');

        var index = parseInt(targetElement.attr('data-slick-index'));

        if (!index) index = 0;

        if (_.slideCount <= _.options.slidesToShow) {

            _.slideHandler(index, false, true);
            return;

        }

        _.slideHandler(index);

    };

    Slick.prototype.slideHandler = function (index, sync, dontAnimate) {

        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,
            _ = this, navTarget;

        sync = sync || false;

        if (_.animating === true && _.options.waitForAnimate === true) {
            return;
        }

        if (_.options.fade === true && _.currentSlide === index) {
            return;
        }

        if (sync === false) {
            _.asNavFor(index);
        }

        targetSlide = index;
        targetLeft = _.getLeft(targetSlide);
        slideLeft = _.getLeft(_.currentSlide);

        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;

        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {
            if (_.options.fade === false) {
                targetSlide = _.currentSlide;
                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
                    _.animateSlide(slideLeft, function () {
                        _.postSlide(targetSlide);
                    });
                } else {
                    _.postSlide(targetSlide);
                }
            }
            return;
        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {
            if (_.options.fade === false) {
                targetSlide = _.currentSlide;
                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
                    _.animateSlide(slideLeft, function () {
                        _.postSlide(targetSlide);
                    });
                } else {
                    _.postSlide(targetSlide);
                }
            }
            return;
        }

        if (_.options.autoplay) {
            clearInterval(_.autoPlayTimer);
        }

        if (targetSlide < 0) {
            if (_.slideCount % _.options.slidesToScroll !== 0) {
                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);
            } else {
                animSlide = _.slideCount + targetSlide;
            }
        } else if (targetSlide >= _.slideCount) {
            if (_.slideCount % _.options.slidesToScroll !== 0) {
                animSlide = 0;
            } else {
                animSlide = targetSlide - _.slideCount;
            }
        } else {
            animSlide = targetSlide;
        }

        _.animating = true;

        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);

        oldSlide = _.currentSlide;
        _.currentSlide = animSlide;

        _.setSlideClasses(_.currentSlide);

        if (_.options.asNavFor) {

            navTarget = _.getNavTarget();
            navTarget = navTarget.slick('getSlick');

            if (navTarget.slideCount <= navTarget.options.slidesToShow) {
                navTarget.setSlideClasses(_.currentSlide);
            }

        }

        _.updateDots();
        _.updateArrows();

        if (_.options.fade === true) {
            if (dontAnimate !== true) {

                _.fadeSlideOut(oldSlide);

                _.fadeSlide(animSlide, function () {
                    _.postSlide(animSlide);
                });

            } else {
                _.postSlide(animSlide);
            }
            _.animateHeight();
            return;
        }

        if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
            _.animateSlide(targetLeft, function () {
                _.postSlide(animSlide);
            });
        } else {
            _.postSlide(animSlide);
        }

    };

    Slick.prototype.startLoad = function () {

        var _ = this;

        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {

            _.$prevArrow.hide();
            _.$nextArrow.hide();

        }

        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {

            _.$dots.hide();

        }

        _.$slider.addClass('slick-loading');

    };

    Slick.prototype.swipeDirection = function () {

        var xDist, yDist, r, swipeAngle, _ = this;

        xDist = _.touchObject.startX - _.touchObject.curX;
        yDist = _.touchObject.startY - _.touchObject.curY;
        r = Math.atan2(yDist, xDist);

        swipeAngle = Math.round(r * 180 / Math.PI);
        if (swipeAngle < 0) {
            swipeAngle = 360 - Math.abs(swipeAngle);
        }

        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {
            return (_.options.rtl === false ? 'left' : 'right');
        }
        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {
            return (_.options.rtl === false ? 'left' : 'right');
        }
        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {
            return (_.options.rtl === false ? 'right' : 'left');
        }
        if (_.options.verticalSwiping === true) {
            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {
                return 'down';
            } else {
                return 'up';
            }
        }

        return 'vertical';

    };

    Slick.prototype.swipeEnd = function (event) {

        var _ = this,
            slideCount,
            direction;

        _.dragging = false;
        _.swiping = false;

        if (_.scrolling) {
            _.scrolling = false;
            return false;
        }

        _.interrupted = false;
        _.shouldClick = (_.touchObject.swipeLength > 10) ? false : true;

        if (_.touchObject.curX === undefined) {
            return false;
        }

        if (_.touchObject.edgeHit === true) {
            _.$slider.trigger('edge', [_, _.swipeDirection()]);
        }

        if (_.touchObject.swipeLength >= _.touchObject.minSwipe) {

            direction = _.swipeDirection();

            switch (direction) {

                case 'left':
                case 'down':

                    slideCount =
                        _.options.swipeToSlide ?
                            _.checkNavigable(_.currentSlide + _.getSlideCount()) :
                            _.currentSlide + _.getSlideCount();

                    _.currentDirection = 0;

                    break;

                case 'right':
                case 'up':

                    slideCount =
                        _.options.swipeToSlide ?
                            _.checkNavigable(_.currentSlide - _.getSlideCount()) :
                            _.currentSlide - _.getSlideCount();

                    _.currentDirection = 1;

                    break;

                default:


            }

            if (direction != 'vertical') {

                _.slideHandler(slideCount);
                _.touchObject = {};
                _.$slider.trigger('swipe', [_, direction]);

            }

        } else {

            if (_.touchObject.startX !== _.touchObject.curX) {

                _.slideHandler(_.currentSlide);
                _.touchObject = {};

            }

        }

    };

    Slick.prototype.swipeHandler = function (event) {

        var _ = this;

        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {
            return;
        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {
            return;
        }

        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?
            event.originalEvent.touches.length : 1;

        _.touchObject.minSwipe = _.listWidth / _.options
            .touchThreshold;

        if (_.options.verticalSwiping === true) {
            _.touchObject.minSwipe = _.listHeight / _.options
                .touchThreshold;
        }

        switch (event.data.action) {

            case 'start':
                _.swipeStart(event);
                break;

            case 'move':
                _.swipeMove(event);
                break;

            case 'end':
                _.swipeEnd(event);
                break;

        }

    };

    Slick.prototype.swipeMove = function (event) {

        var _ = this,
            edgeWasHit = false,
            curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;

        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;

        if (!_.dragging || _.scrolling || touches && touches.length !== 1) {
            return false;
        }

        curLeft = _.getLeft(_.currentSlide);

        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;
        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;

        _.touchObject.swipeLength = Math.round(Math.sqrt(
            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));

        verticalSwipeLength = Math.round(Math.sqrt(
            Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));

        if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {
            _.scrolling = true;
            return false;
        }

        if (_.options.verticalSwiping === true) {
            _.touchObject.swipeLength = verticalSwipeLength;
        }

        swipeDirection = _.swipeDirection();

        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
            _.swiping = true;
            event.preventDefault();
        }

        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);
        if (_.options.verticalSwiping === true) {
            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;
        }


        swipeLength = _.touchObject.swipeLength;

        _.touchObject.edgeHit = false;

        if (_.options.infinite === false) {
            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {
                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;
                _.touchObject.edgeHit = true;
            }
        }

        if (_.options.vertical === false) {
            _.swipeLeft = curLeft + swipeLength * positionOffset;
        } else {
            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;
        }
        if (_.options.verticalSwiping === true) {
            _.swipeLeft = curLeft + swipeLength * positionOffset;
        }

        if (_.options.fade === true || _.options.touchMove === false) {
            return false;
        }

        if (_.animating === true) {
            _.swipeLeft = null;
            return false;
        }

        _.setCSS(_.swipeLeft);

    };

    Slick.prototype.swipeStart = function (event) {

        var _ = this,
            touches;

        _.interrupted = true;

        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
            _.touchObject = {};
            return false;
        }

        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {
            touches = event.originalEvent.touches[0];
        }

        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;
        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;

        _.dragging = true;

    };

    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function () {

        var _ = this;

        if (_.$slidesCache !== null) {

            _.unload();

            _.$slideTrack.children(this.options.slide).detach();

            _.$slidesCache.appendTo(_.$slideTrack);

            _.reinit();

        }

    };

    Slick.prototype.unload = function () {

        var _ = this;

        $('.slick-cloned', _.$slider).remove();

        if (_.$dots) {
            _.$dots.remove();
        }

        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {
            _.$prevArrow.remove();
        }

        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {
            _.$nextArrow.remove();
        }

        _.$slides
            .removeClass('slick-slide slick-active slick-visible slick-current')
            .attr('aria-hidden', 'true')
            .css('width', '');

    };

    Slick.prototype.unslick = function (fromBreakpoint) {

        var _ = this;
        _.$slider.trigger('unslick', [_, fromBreakpoint]);
        _.destroy();

    };

    Slick.prototype.updateArrows = function () {

        var _ = this,
            centerOffset;

        centerOffset = Math.floor(_.options.slidesToShow / 2);

        if (_.options.arrows === true &&
            _.slideCount > _.options.slidesToShow &&
            !_.options.infinite) {

            _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
            _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');

            if (_.currentSlide === 0) {

                _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
                _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');

            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {

                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');

            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {

                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');

            }

        }

    };

    Slick.prototype.updateDots = function () {

        var _ = this;

        if (_.$dots !== null) {

            _.$dots
                .find('li')
                .removeClass('slick-active')
                .end();

            _.$dots
                .find('li')
                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))
                .addClass('slick-active');

        }

    };

    Slick.prototype.visibility = function () {

        var _ = this;

        if (_.options.autoplay) {

            if (document[_.hidden]) {

                _.interrupted = true;

            } else {

                _.interrupted = false;

            }

        }

    };

    $.fn.slick = function () {
        var _ = this,
            opt = arguments[0],
            args = Array.prototype.slice.call(arguments, 1),
            l = _.length,
            i,
            ret;
        for (i = 0; i < l; i++) {
            if (typeof opt == 'object' || typeof opt == 'undefined')
                _[i].slick = new Slick(_[i], opt);
            else
                ret = _[i].slick[opt].apply(_[i].slick, args);
            if (typeof ret != 'undefined') return ret;
        }
        return _;
    };

}));;$(function () {
    var calendar_selector = '#datepicker_personal_list';
    var calendar_hidden_selector = '#TextBox_pl_startdate';
    var cal_url = document.location.href, showResetDateButton = true, isBureauTemplate = false;
    if (jquery_search_sitebid === 'UKJ' || jquery_search_sitebid === 'DYR' || jquery_search_sitebid === 'HST' || jquery_search_sitebid === 'NS' || jquery_search_sitebid === 'IB' || jquery_search_sitebid === 'VR' || jquery_search_sitebid === 'BK' || jquery_search_sitebid === 'SF' || jquery_search_sitebid === 'SYL' || jquery_search_sitebid === 'HB') {
        isBureauTemplate = true;
        cal_url = Base64.decode(cal_url);
    }
    if (isBureauTemplate) {
        showResetDateButton = false;
    }
    var calendarArrivalDays = [];
    var calendarDepartureDays = [];
    var sb_calendar_start = new Date();
    var sb_calendar_end = typeof sb_global_xml_data !== 'undefined' ? $(sb_global_xml_data).find("season").attr("calendarenddate") : '';

    $(calendar_selector).val($(calendar_hidden_selector).val());

    if (cal_url.indexOf('.aspx#search') > -1 || cal_url.indexOf('.aspx?d=') > -1 || cal_url.indexOf('huskeliste.aspx') > -1) {
        var qs_params = '?' + getTempUrlParam(cal_url, 'd').replace(/#/g, '?').replace(/;/g, '&');
        if (getQueryString('startdate', qs_params) !== null) {
            if (getQueryString('startdate', qs_params).toUpperCase() !== 'NULL') {
                var param_start = getQueryString('startdate', qs_params);
                if (param_start !== '') {
                    $(calendar_selector).add(calendar_hidden_selector).val(param_start);
                } else {
                    if (isBureauTemplate) {
                        $(calendar_selector).add(calendar_hidden_selector).val(nearestSaturday);
                    } else {
                        $(calendar_hidden_selector).val('');
                        $(calendar_selector).val(notSetText);
                    }
                }
            } else {
                $(calendar_hidden_selector).val('');
                $(calendar_selector).val(notSetText);
            }
        } else {
            if (isBureauTemplate) {
                $(calendar_selector).add(calendar_hidden_selector).val(nearestSaturday);
            } else {
                if (cal_url.indexOf('her_og_nu.aspx') > -1 || cal_url.indexOf('here_and_now.aspx') > -1 || cal_url.indexOf('hier_en_nu.aspx') > -1 || cal_url.indexOf('her_og_naa.aspx') > -1 || cal_url.indexOf('haer_och_nu.aspx') > -1 || cal_url.indexOf('hier_und_jetzt.aspx') > -1) {
                    $(calendar_selector).add(calendar_hidden_selector).val(todayDate);
                } else {
                    $(calendar_hidden_selector).val('');
                    $(calendar_selector).val(notSetText);
                }
            }
        }
    } else {
        if (cookieexists('SBPARMSCOOKIE')) {
            var sb_url = getcookie('SBPARMSCOOKIE').replace(/d=/g, '').replace(/;/g, '&');
            if (sb_url !== "" && sb_url !== "?") {
                var cookie_date = getTempUrlParam(sb_url, 'startdate');
                if (cookie_date !== "" && cookie_date.toUpperCase() !== "NULL") {
                    if (parseDate(cookie_date) < parseDate(todayDate)) { // if cookie date is older than today, set it to today date
                        cookie_date = nearestSaturday;
                    }
                    $(calendar_selector).add(calendar_hidden_selector).val(cookie_date);
                } else {
                    if (isBureauTemplate) {
                        $(calendar_selector).add(calendar_hidden_selector).val(nearestSaturday);
                    } else {
                        if (cal_url.indexOf('her_og_nu.aspx') > -1 || cal_url.indexOf('here_and_now.aspx') > -1 || cal_url.indexOf('hier_en_nu.aspx') > -1 || cal_url.indexOf('her_og_naa.aspx') > -1 || cal_url.indexOf('haer_och_nu.aspx') > -1 || cal_url.indexOf('hier_und_jetzt.aspx') > -1) {
                            $(calendar_selector).add(calendar_hidden_selector).val(todayDate);
                        } else {
                            $(calendar_hidden_selector).val('');
                            $(calendar_selector).val(notSetText); // default value for bureau sites, when date is not set
                        }
                    }
                }
            } else {
                if (isBureauTemplate) {
                    $(calendar_selector).add(calendar_hidden_selector).val(nearestSaturday);
                } else {
                    if (cal_url.indexOf('her_og_nu.aspx') > -1 || cal_url.indexOf('here_and_now.aspx') > -1 || cal_url.indexOf('hier_en_nu.aspx') > -1 || cal_url.indexOf('her_og_naa.aspx') > -1 || cal_url.indexOf('haer_och_nu.aspx') > -1 || cal_url.indexOf('hier_und_jetzt.aspx') > -1) {
                        $(calendar_selector).add(calendar_hidden_selector).val(todayDate);
                    } else {
                        $(calendar_hidden_selector).val('');
                        $(calendar_selector).val(notSetText); // default value for non bureau site, when date is not set
                    }
                }
            }
        } else {
            if (isBureauTemplate) {
                $(calendar_selector).add(calendar_hidden_selector).val(nearestSaturday);
            } else {
                if (cal_url.indexOf('her_og_nu.aspx') > -1 || cal_url.indexOf('here_and_now.aspx') > -1 || cal_url.indexOf('hier_en_nu.aspx') > -1 || cal_url.indexOf('her_og_naa.aspx') > -1 || cal_url.indexOf('haer_och_nu.aspx') > -1 || cal_url.indexOf('hier_und_jetzt.aspx') > -1) {
                    $(calendar_selector).add(calendar_hidden_selector).val(todayDate);
                } else {
                    $(calendar_hidden_selector).val('');
                    $(calendar_selector).val(notSetText);
                }
            }
        }
    }

    if (isValidDate($(calendar_selector).val()) && $(calendar_selector).val() !== notSetText) {
        if (jquery_search_sitebid === 'SOS') { $(calendar_selector).css({ 'background-color': '#d1ddfb', 'border': 'solid 1px #a5acb2' }); }
    }

    sb_calendar_end = init_calendarenddate; /* loaded from global variables */
    var calDate = $(calendar_selector);

    var panelButtons = function (input, inst) {
        if (showResetDateButton) {
            setTimeout(function () {
                if (isFrontpage === 'True') {
                    switch (jquery_search_sitebid) {
                        case 'DJU':
                            if (isDevice) {
                                inst.dpDiv.css({ marginTop: '0px', marginLeft: '-100px' }); // placering af kalenderen på SCO forside på tablets
                            }
                            break;
                        case 'SCO':
                            if (isDevice) {
                                inst.dpDiv.css({ marginTop: '65px', marginLeft: '-30px' }); // placering af kalenderen på SCO forside på tablets
                            }						
							break;
                        case 'IB':
                            if (isDevice) {
                                inst.dpDiv.css({ marginTop: '0px', marginLeft: '0px' }); // placering af kalenderen på IB forside på tablets
                            }						
							break;
                        case 'BSN':
                            if (isDevice) {
                                inst.dpDiv.css({ marginTop: '70px', marginLeft: '0px' }); // placering af kalenderen på BSN forside på tablets
                            }						
							break;
                        case 'FDP':
                            if (isDevice) {
                                inst.dpDiv.css({ marginTop: '50px', marginLeft: '0px' }); // placering af kalenderen på FDP forside på tablets
                            }						
							break;
                        case 'SIMS':
                            if (isDevice) {
                                inst.dpDiv.css({ marginTop: '50px', marginLeft: '0px' }); // placering af kalenderen på SIMS forside på tablets
                            }						
							break;
                        case 'VR':
                            if (isDevice) {
                                inst.dpDiv.css({ marginTop: '200px', marginLeft: '0px' }); // placering af kalenderen på VR forside på tablets
                            }						
							break;
                        case 'SOS':
                            if (isDevice) {
                                inst.dpDiv.css({ marginTop: '55px', marginLeft: '-30px' }); // placering af kalenderen på SOS forside på tablets
                            } else {
                                if (inst.dpDiv) {
                                    inst.dpDiv.css({ marginLeft: '-100px', marginTop: '0px' }); // placering af kalenderen på SOS forside på desktop
                                    if (inst.dpDiv.offset().top < 0) {
                                        inst.dpDiv.css({ marginTop: '40px' });
                                    }
                                }
                            }
                            break;
                        case 'RH':
                            if (isDevice) {
                                inst.dpDiv.css({ marginTop: '50px', marginLeft: '0px' }); // placering af kalenderen på RH forside på tablets
                            } else {
                                if (inst.dpDiv) {
                                    inst.dpDiv.css({ marginLeft: '210px', marginTop: '-145px' }); // placering af kalenderen på RH forside på desktop
                                    if (inst.dpDiv.offset().top < 0) {
                                        inst.dpDiv.css({ marginTop: '40px' });
                                    }
                                }
                            }
                            break;
                    }
                }

                var widgetButtonPane = $(calDate).datepicker("widget").find(".ui-datepicker-buttonpane");
                var removeDateBtn = $('<button data-event="click" data-handler="hide" class="ui-datepicker-setzero ui-state-default ui-priority-primary ui-corner-all" type="button">' + resetStartDate + '</button>');
                removeDateBtn.unbind("click").bind("click", function () {
                    clearDPDate();
                    $('.ui-datepicker-close').trigger('click');
                });
                removeDateBtn.appendTo(widgetButtonPane);
                var widgetHeader = $(calDate).datepicker("widget").find(".ui-widget-header");
                var panelDescription = $('<div class="ui-datepicker-descriptionpanetop"><span>' + noticeText + '</span><br/>' + calText3 + '</div>');
                widgetHeader.after(panelDescription);

                var widgetCalendar = $(calDate).datepicker("widget").find(".ui-datepicker-calendar"); // finder rækken med lørdag for at angive en anden farve
                widgetCalendar.find('tr').each(function () {
                    $(this).find('.ui-datepicker-week-end').first().addClass("saturday");
                });
                var widgetContent = $(calDate).datepicker("widget").find(".ui-widget-content");
                var signaturePane = $('<div />', { 'class': 'cal_signature' }).html('');
                widgetContent.before(signaturePane);				
            }, 1);
        }
    };
    var highlightDays = function (d) {
        var selectedDate = parseDate($(calDate).val()).addHours(10);
        var formatted_date = formatDate(d);
        if (isValidDate(formatDate(selectedDate))) {
            var dates = [];
            var overnights = parseInt($('select[id$=DropDownList_numberofdays]').val());
            if (overnights > 0) {
                for (var selloop = 0; selloop < overnights + 1; selloop++) {
                    var currentDateHover = addDays(selectedDate, selloop);
                    dates[dates.length] = formatDate(currentDateHover);
                }
            }
            for (var i = 0; i < dates.length; i++) {
                if (dates[i] === formatted_date) {
                    var day_css = ' ui-state-current-active';
                    var day_active = true;
                    if (i === 0) {
                        day_css = ' starthalfselectedweekday altered';
                        $('td.' + formatted_date + ' a').removeClass('ui-state-active'); // for enforcing parent half day style
                        day_active = false;
                    } else if (i === dates.length - 1) {
                        day_css = ' endhalfselectedweekday altered';
                        $('td.' + formatted_date + ' a').removeClass('ui-state-active'); // for enforcing parent half day style
                    }
                    return [true, formatted_date + day_css];
                }
            }
        }
        return [true, formatted_date];
    };
    var calendarShowCount = 2;
    var bIsMobileDevice = typeof isMobileDevice !== 'undefined' ? isMobileDevice : 'False';
    var bIsSmartPhone = typeof isSmartPhone !== 'undefined' ? isSmartPhone : 'False';
    var bIsTabletDevice = typeof isTabletDevice !== 'undefined' ? isTabletDevice : 'False';
    if ((bIsMobileDevice === 'True' || bIsSmartPhone === 'True') && bIsTabletDevice === 'False') {
        calendarShowCount = 1;
    } else {
        if (jquery_search_sitebid === 'DJU') {
            calendarShowCount = 1;
        }
    }
    $(calendar_selector).datepicker({
        changeMonth: true,
        numberOfMonths: calendarShowCount,
        changeYear: true,
        showButtonPanel: true,
        constrainInput: true,
        showWeek: true,
        activateWeekNumbers: true,
        firstDay: 1,
        showOn: "both",
        buttonImage: "https://images.sologstrand.dk/images/sos_2/icons/dlcalendar_2.png",
        buttonImageOnly: true,
        beforeShow: panelButtons,
        onChangeMonthYear: panelButtons,
        beforeShowDay: highlightDays,
        dateFormat: "dd-mm-yy",
        minDate: sb_calendar_start instanceof Date ? sb_calendar_start : toCalDate(sb_calendar_start),
        maxDate: sb_calendar_end instanceof Date ? sb_calendar_end : toCalDate(sb_calendar_end),
        onClose: function (selectedDate) {
            if (isValidDate(selectedDate)) {
                $(calendar_hidden_selector).add(calendar_selector).val(selectedDate);
                if (jquery_search_sitebid === 'SOS') { $(calendar_selector).css({ 'background-color': '#d1ddfb', 'border': 'solid 1px #a5acb2' }); }
                if (typeof updateCookieStartdate !== 'undefined') {
                    updateCookieStartdate('startdate', selectedDate);
                }
            } else {
                $(calendar_hidden_selector).val('');
                $(calendar_selector).val(notSetText);
            }
            if (isValidDate(selectedDate)) { $('select[id$=DropDownList_numberofdays]').show(); } else { $('select[id$=DropDownList_numberofdays]').hide(); }
            loadFavoritHouses();
        }
    });
});;// console.log(document.location.href);
// console.log(isFrontpage + ':' + isResultpage);
var infinity_timeout, last_page_index = 0, init_load_house_count = parseInt($('#total_results').val()), init_load_page_size = parseInt($('#total_results').attr('data-page-size')); // infinity_scrolling.html
var dest_timeout = 0; // footer.inc
var oc_timeout, isInfinityEventTriggered = false, scrollerActivated = false, pagenumber = 0, pagesize = 4; // visRegion.aspx
var dest_infinity_timeout; // visDestination.aspx
var lazyload_timeout; // used on all pages except result page

function dest_checkScrollerAndInfinityButton() {
    loadResultElements(true, 'housecontainer', 'dest_checkScrollerAndInfinityButton');
    if (parseInt($(window).scrollTop()) > 400) {
        if ($('#scrolltotop').is(':hidden')) {
            $('#scrolltotop').show().on('click', function () {
                scrollToTop();
            });
        }
    } else {
        $('#scrolltotop').hide();
    }
}
function resizeReviewResultItemEnd(houseid) {
    if (new Date() - rtime < itemdelta) {
        setTimeout(resizeReviewResultItemEnd(houseid), itemdelta);
    } else {
        itemtimeout = false;
        /* opening attractions on attracktion map disturbs height of large house pictures :: faulty selector (hotjar): '.fs-container:not(.slick-initialized)' */
        $('#photos-' + houseid).css({ 'height': ($('.flexslider-' + houseid).width() * 0.75), 'max-height': ($('.flexslider-' + houseid).width() * 0.75), overflow: 'hidden' });
        if ($(".slidecontainer-" + houseid)[0]) {
            $(".slidecontainer-" + houseid)[0].slick.refresh();
        }
    }
}
function loadFavoritHouses() {
    var compare_date = $('#datepicker_personal_list').val();
    var compare_duration = $('#compare_days').val();
    var init_days = $('#init_days').val();
    if (isValidDate(compare_date)) {
        setcookie("HL_DATE_COOKIE", compare_date, 28);
        $('.pre_date').text(compare_date);
        $('.pre_duration').text(compare_duration + (isMobileDevice ? ' lf1' : ''));
    } else {
        $('#datepicker_personal_list').val(nearestSaturday);
        $('.pre_date').text(nearestSaturday);
        $('#compare_days').val(init_days);
        $('.pre_duration').text(init_days + (isMobileDevice ? ' lf2' : ''));
    }
    $('.pre_date').text($("#datepicker_personal_list").val());
    $('.housecompare li.house').each(function () {
        var houseid = $(this).attr('data-houseid');
        if (houseid.indexOf('-') > -1) {
            checkVacancy(houseid);
            createHouseLink(houseid);
        } else {
            console.warn('Invalid house id: ' + houseid);
        }
    });
}
function checkVacancy(houseid) {
    var currency = $('li[data-houseid=' + houseid + ']').attr('data-currency');
    var startdate = $("#datepicker_personal_list").val() !== "" ? $("#datepicker_personal_list").val() : nearestSaturday;
    var days = isNumber($('#compare_days').val()) ? $('#compare_days').val() : $('#init_days').val();
    var enddate = formatDate(addDaysWithoutTZ(parseDate(startdate), days));
    var params = "pBureauId=" + jquery_search_sitebid + "&pCurrency=" + currency + "&pRentalObjectNo=" + houseid + "&pStartdate=" + startdate + "&pEnddate=" + enddate;
    var ajaxurl = '/AshxServices.ashx?sn=ServiceHouseInformation&mn=GetAvailability&param=' + encodeURIComponent(params);
    $.ajax({
        type: 'GET',
        cache: false,
        async: true,
        url: ajaxurl,
        beforeSend: function () {
            $('#btnbook' + houseid).attr('disabled', true).removeClass('occupied');
            $('.hd' + houseid + ' div[class*="pre_"]').empty().append(
                $('<img />').attr('src', '//images.sologstrand.dk/images/ikoner/loading.gif').attr('alt', 'Loader').css({ width: '20', height: '20' }).addClass('loader')
            );
        },
        success: function (data) {
            var house = $(data).find('house');
            var price = $(house).find('price');
            if ($(house).attr('status') === '0' && $(price).attr('total') !== "" && $(price).attr('total') !== '0') {
                $('.hd' + houseid + ' .rentalprice').text(currency + ' ' + $(price).attr('total') + ',-');
                $('.hd' + houseid + ' .cleaning').text(currency + ' ' + $(price).find('fee[name="Cleaning"]').attr('price') + ',-');
                $('.hd' + houseid + ' .deposit').text(currency + ' ' + $(price).attr('deposit') + ',-');
                $('.hd' + houseid + ' .compare_rentalprice').removeClass('price_empty');
                $('#btnbook' + houseid).attr('disabled', false).text(txt_order).click(function () {
                    window.location = '/booking/services.aspx?hid=' + houseid + '&startdate=' + startdate + '&enddate=' + enddate;
                });
            } else {
                $('.hd' + houseid + ' .rentalprice').addClass('price_empty');
                $('.hd' + houseid + ' .rentalprice').text(txt_calendar_hover10);                
                $('.hd' + houseid + ' .compare_rentalprice').addClass('price_empty');                                
                $('#btnbook' + houseid).text(txt_nonavailable).addClass('occupied');
                $('.hd' + houseid + ' .deposit').text(txt_calendar_hover10);
                $('.hd' + houseid + ' .cleaning').text(txt_calendar_hover10);
            }
            $('.pre_date').text(startdate);
            $('.pre_duration').text(days + (isMobileDevice ? ' ' + crit_nights : ''));
            $('.hd' + houseid + ' img[class="loader"]').remove();
        },
        error: function (objAJAXRequest, strError) {
            $('.hd' + houseid + ' .rentalprice').text(txt_calendar_hover10);
            $('#btnbook' + houseid).text(txt_nonavailable).addClass('occupied');
            $('.hd' + houseid + ' img[class="loader"]').remove();
        }
    });
}
function createHouseLink(houseid) {
    var params = "bid=" + jquery_search_sitebid + "&pRentalObjectNo=" + houseid + "&pLanguage=" + site_lang;
    var ajaxurl = '/AshxServices.ashx?sn=ServiceHouseInformation&mn=GetHouseLinkByBID&param=' + encodeURIComponent(params);
    $.ajax({
        type: 'GET',
        cache: false,
        async: true,
        url: ajaxurl,
        beforeSend: function () {
            $('.btndetails' + houseid).attr('disabled', true);
        },
        success: function (data) {
            var houselink = $(data).find("houselink");
            $('.btndetails' + houseid).attr('disabled', false).click(function () {
                var sd = $('#datepicker_personal_list').val();
                var details_link, except_details_link = $(houselink).attr('link').replace(/http:/, 'https:') + '?startdate=' + sd + '&enddate=' + formatDate(addDaysWithoutTZ(parseDate(sd), $('#compare_days').val()));
                if (except_details_link.indexOf('/sommerhuse/') > -1) { details_link = except_details_link.replace('/sommerhuse/', '/details/sommerhuse/'); }
                else if (except_details_link.indexOf('/ferienhaeuser/') > -1) { details_link = except_details_link.replace('/ferienhaeuser/', '/details/ferienhaeuser/'); }
                else if (except_details_link.indexOf('/feriehus/') > -1) { details_link = except_details_link.replace('/feriehus/', '/details/feriehus/'); }
                else if (except_details_link.indexOf('/stugor/') > -1) { details_link = except_details_link.replace('/stugor/', '/details/stugor/'); }
                else if (except_details_link.indexOf('/holiday-homes/') > -1) { details_link = except_details_link.replace('/holiday-homes/', '/details/holiday-homes/'); }
                else if (except_details_link.indexOf('/vakantiehuizen/') > -1) { details_link = except_details_link.replace('/vakantiehuizen/', '/details/vakantiehuizen/'); }
                window.location = details_link;
            });
        },
        error: function (objAJAXRequest, strError) {
            $('.btndetails' + houseid).hide();
        }
    });
}
function removeHouseFromFavorits(houseid) {
    removeHouseElement(houseid, 'HLCOOKIE');
    $('.favorites_number, .favorites_number_mobile, span.favTop').queue(function (n) {
        getHouselistCount('.favorites_number, .favorites_number_mobile, span.favTop'); n();
    });
    // IPAD fix.. opdater vinduet !
    if (navigator.userAgent.match(/iPad/i) !== null)
        window.location = window.location;

    $('li[data-houseid="' + houseid + '"').remove();
    //$('#compare_container_new .content .housecompare .house:hidden:first').css('display', 'table-cell');
    if ($('.housecompare li.house').length === 0) {
        noFavoritHouses();
    }
}
function clearFavorits() {
    deletecookie('HLCOOKIE');
    deletecookie('HL_DATE_COOKIE');
    deletecookie('HL_NOD_COOKIE');
    noFavoritHouses();
}
function noFavoritHouses() {
    $('#compare_container_new').empty().append(
        $('<div />', { 'class': 'emptylist' }).html(txt_nohousefavorites_mobi + '.')
    );
    getHouselistCount('.favorites_number');
}

// from visRegion.aspx
function callPage(pgnr) {
    var hc_params = 'TemplatePath=/html_templates/search/result_item_default.html&Bid=' + jquery_search_sitebid
        + '&SiteLanguage=' + site_lang + '&StartDate=NULL&EndDate=&NumberOfDays=0'
        + '&AlternativeQueries=' + encodeURIComponent("picturetype=_007.;usecookie=no;region=" + region_id)
        + '&SortByValue=priority&SortByOrder=asc&ShowHouseText=no'
        + '&IndexToStartPaging=' + (pgnr * pagesize) + '&NumberOfElementsToShow=' + pagesize + '&CacheDurationMinutes=0&AllowAlternativeResults=false';
    $.ajax({
        type: 'GET',
        cache: false,
        async: true,
        url: '/ObjectResults.asmx/GetResultObjects?' + hc_params,
        beforeSend: function (jqXHR, options) {
            $.xhrPool.add(jqXHR, 'callPage');
            $('.housecontainer').after('<div class="region_page_loader"><img src="//images.sologstrand.dk/images/search/maps/loading.gif" alt="Loading.." title="Loading.." /></div>');
        },
        success: function (data) {
            $('.region_page_loader').remove();
            var decoded_html = $("<div/>").html(data.childNodes[0].textContent).html();
            $('.housecontainer').append(decoded_html);
            loadResultElements(true, 'housecontainer', 'callPage');
            isInfinityEventTriggered = false;
            pagenumber = pgnr + 1;
        },
        error: function (objAJAXRequest, strError) {
            $('.region_page_loader').remove();
            console.warn(objAJAXRequest.responseText);
        },
        complete: function (jqXHR) {
            $.xhrPool.remove(jqXHR, 'callPage');
        }
    });
}
function oc_checkScrollerAndInfinityButton() {
    if ($('#regionPageCaller').filter(':in-viewport').length === 1 && !isInfinityEventTriggered) {
        isInfinityEventTriggered = true;
        callPage(pagenumber); /* not like the method in functions */
    }
    scrollerActivated = false;
}

// from house presentation page
var houseResizeId, imageRatio = 0.75; // 0.67028;
function ShowSendToAFriend() {
    document.getElementById('sendtoafriend').style.display = 'block';
    document.getElementById('sendtoafriend_overlay').style.display = 'block';
}
function HideSendToAFriend() {
    $('#taf_status').text('');
    document.getElementById('sendtoafriend').style.display = 'none';
    document.getElementById('sendtoafriend_overlay').style.display = 'none';
}
function generateSlickGallery(id) {
    if (absolute_uri.indexOf('https://local218_for_test') > -1) {
        // console.log('generateSlickGallery.. ' + id);
        // data-flickity-lazyload
        // data-flickity-bg-lazyload
        //var options = {
        //    imagesLoaded: false,
        //    cellAlign: 'left',
        //    wrapAround: true, // infinity scrolling
        //    contain: false,
        //    pageDots: false,
        //    lazyLoad: true,
        //    //bgLazyLoad: 1,
        //    cellSelector: 'li.imgslide',
        //    prevNextButtons: false,
        //    fullscreen: true,
        //    on: {
        //        ready: function () {
        //            //console.log('Flickity ready..');
        //            var $cur_el = $(this.element);
        //            $cur_el.find('li img').fadeIn('fast', function () {
        //                $cur_el.find('.imgslide-poor-quality-' + id).fadeOut('slow', function () {
        //                    //$(this).remove();
        //                });
        //            });
        //        },
        //        change: function (index) {
        //            console.log('Slide changed to ' + index);
        //        },
        //        lazyload: function (event, cellElement) {

        //        }
        //    }
        //};

        //if (matchMedia('screen and (min-width: 768px)').matches) {
        //    options.prevNextButtons = true; // enable prev/next buttons at 768px
        //}

        //if (matchMedia('screen and (min-width: 1200px)').matches) {
        //    options.draggable = false; // disable draggable at 1200px
        //}

        //var $carousel = $('.slidecontainer-' + id + ':not(.flickity-enabled)');
        //$carousel.flickity(options);
        //var $caption = $('#slider-controls-' + id + ' .slider-img-name .picture_bar_txt');
        //var flkty = $carousel.data('flickity');
        //$carousel.on('select.flickity', function () {
        //    // set image caption using img's alt
        //    // $caption.text(flkty.selectedElement.alt);
        //});
    } else {
        if (isSmartPhone === 'True') {
            //var mobile_width = $('.flexslider-' + id).width();
            //$('#photos-' + id).css({ 'height': (mobile_width * 0.67), 'max-height': (mobile_width * 0.67), overflow: 'hidden' });
        }
        $('.slidecontainer-' + id + ':not(.slick-initialized)').on('init', function () {
            $('#slider-controls-' + id + ' .slider-img-name .picture_bar_txt').text($('#photos-' + id + ' .slick-active li').attr('img-type-name'));
            $('#slider-controls-' + id + ' .slick-dots li:not(:first)').remove();
            $('.slidecontainer-' + id + ' .slick-track li').show();
            $('.flexslider').css({ 'height': ($(this).width() * imageRatio), 'max-height': ($(this).width() * imageRatio) });
        }).slick({
            slidesToShow: 1,
            slidesToScroll: 1,
            autoplay: false,
            speed: 150,
            fade: true,
            swipeToSlide: (isMobileDevice ? true : false),
            touchThreshold: (isSmartPhone ? 20 : 5),
            focusOnChange: (isMobileDevice ? true : false),
            adaptiveHeight: false,
            lazyLoad: 'ondemand',
            mobileFirst: (isSmartPhone ? true : false),
            dots: true,
            arrows: true,
            appendArrows: $("#slider-controls-" + id).show(),
            appendDots: $('#slider-controls-' + id + ' .slider-paging-number .picture_bar_txt'),
            prevArrow: $('#nav_prev_' + id),
            nextArrow: $('#nav_next_' + id),
            customPaging: function (slick) {
                return (slick.currentSlide + 1) + '/' + slick.slideCount;
            }
        }).on('afterChange', function (event, slick, currentSlide) {
            $('#slider-controls-' + id + ' .slider-img-name .picture_bar_txt').text($('#photos-' + id + ' .slick-active li').attr('img-type-name'));
            $('#slider-controls-' + id + ' .slick-dots li:first').text(slick.options.customPaging.call(null, slick, currentSlide));
        });
    }
}
function resizeImageContainer(houseid) {
    if (new Date() - rtime < itemdelta) {
        setTimeout(resizeImageContainer(houseid), itemdelta);
    } else {
        generateSlickGallery(houseid);
    }
}

// from freetextsearch.inc
function directSearchPattern(sw) {
    if (sw.length > 1) {
        var isRegnoFound = /^(\d{2})[-](\d{4})$/.test(sw);
        if (isRegnoFound) {
            var searchdataparams = "BID=" + jquery_search_sitebid + "&Language=" + site_lang + "&Searchstring=" + sw + "&MaxResults=&SearchWholeWords=true&SearchTypeHouses=true&SearchTypeGeography=false&SearchTypeAttractions=false&AlternativeQueries=&SortByValue=&SortByOrder=&IndexToStartPaging=0&NumberOfElementsToShow=1&IPAddress=";
            $.ajax({
                type: 'GET',
                cache: true,
                async: false,
                url: '/AshxServices.ashx?sn=ServiceFreetextSearch&mn=XML_FreetextSearchExt&param=' + encodeURIComponent(searchdataparams),
                success: function (data) {
                    var url = direct_search_url;
                    url += '/' + $(data).find("house").find("geographicinfo").find("destinationinfo").attr("destinationlinktitle") + '/' + sw + '.aspx?startdate=&amp;enddate=';
                    window.location.href = url;
                }
            });
        } else {
            window.location.href = '/search/default.aspx?s=' + escape(sw);
        }
    }
}

function selectCityPic(lat, lng) { }

// used on result page
function handleCounterAnimation() {
    $('.result_search_houses').addClass('result_search_houses_onclick');
    setTimeout(function () {
        $('.result_search_houses').removeClass('result_search_houses_onclick');
    }, 1200);
}
/*
function nl_subscribe() {
    var email = $('#nl_email').val().trim();
    var leadSource = $('#LeadSource').val();
    var siteName = $('#SiteName').val();
    var language = $('#LanguageHolder').val();
    //var answerId = $('#Answers').attr('checked');
    var answerId = (($("#1").is(':checked') || $("#2").is(':checked')) ? true : false);
    var answerIdString = ($("#1").is(':checked') ? $("#1").val() : ($("#2").is(':checked') ? $("#2").val() : ""));
    //$('input[name=Answers]:checked').val();
    var result = "";
    var uri = "";
    var requestData = "";
    var formcode = $('#Formcode').val();

    if (answerId) {
        uri = '/nyhedsbrev/NewsLetterAsyn.asmx/SubscribeQuestion';
        requestData = "email=" + email + "&leadSource=" + leadSource + "&siteName=" + siteName + "&language=" + language + "&answerId=" + answerIdString + "&formcode=" + formcode;
    } else {
        uri = '/nyhedsbrev/NewsLetterAsyn.asmx/Subscribe'
        requestData = "email=" + email + "&leadSource=" + leadSource + "&siteName=" + siteName + "&language=" + language + "&formcode=" + formcode;
    }
	
    $.ajax({
        type: 'GET',
        url: uri,
        data: requestData,
        complete: function (textStatus) {
            var value = regex_val(textStatus.responseText);
            if (value === 'false') {
                var fm = $('#FailedMsgHolder').val();
                $("#SuccesLbl").css('color', '#952145');
                $('#SuccesLbl').text(fm);
            } else {
                var sm = $('#SuccesMsgHolder').val();
                $("#SuccesLbl").css('color', '#008000');
                $('#SuccesLbl').text(sm);
            }
            $('#nl_email').val('E-Mail');
        }
    });
    if (document.location.href.indexOf('/adventskalender.aspx') > -1 || document.location.href.indexOf('/christmas_calendar.aspx') > -1) {
        if ($("#1").is(':checked') || $("#2").is(':checked')) {
            writeit("", "statustxt");
        }
    } else {
        writeit("<%=validate_answer%>", "statustxt");
    }
}
*/
function regex_val(value) {
    regularex = new RegExp('<boolean xmlns="SOSNewsletterService">(.*)</boolean>', 'm');
    match = regularex.exec(value);
    return match[1];
}

function activate_lazyload(selector) {
    // lazy loads all images inside lazyload-container element
    if ($(selector).exists()) {
        $(selector + ' img:not([data-lazy=""])').filter(':in-viewport').each(function (i, ele) {
            var dl = $(ele).attr('data-lazy');
            if (typeof dl !== 'undefined' && dl !== false) {
                $(ele).attr('src', dl).removeAttr('data-lazy');
            }
        });
    }
}

$(window).on('load scroll resize orientationchange', function (e) {
    // used on frontpage
    if (isFrontpage === 'True') {
        $('.campaign_container_mobil_outer img:not([data-lazy=""])').filter(':in-viewport').each(function (i, ele) {
            var dl = $(ele).attr('data-lazy');
            if (typeof dl !== 'undefined' && dl !== false) {
                // console.log(dl);
                $(ele).attr('src', dl).removeAttr('data-lazy');
            }
        });
    }

    if (isResultpage === 'False') {
        var _lazyload_container_selector = '.lazyload-container';
        activate_lazyload(_lazyload_container_selector);
        if (lazyload_timeout) {
            clearTimeout(lazyload_timeout);
        }
        lazyload_timeout = setTimeout(function () {
            activate_lazyload(_lazyload_container_selector);
        }, 100);
    }

    // used on house presentation page
    if (regno && regno !== '') {
        clearTimeout(houseResizeId);
        houseResizeId = setTimeout(resizeImageContainer(regno), itemdelta);
    }

    // used on footer.inc
    if (dest_timeout) {
        clearTimeout(dest_timeout);
    }
    dest_timeout = setTimeout(function () {
        if (parseInt($(window).scrollTop()) > 400) {
            if ($('#scrolltotop').is(':hidden')) {
                $('#scrolltotop').show().on('click', function () {
                    scrollToTop();
                });
            }
        } else {
            $('#scrolltotop').hide();
        }
    }, 100);

    if (dest_infinity_timeout) {
        clearTimeout(dest_infinity_timeout);
    }
    dest_infinity_timeout = setTimeout(function () {
        dest_checkScrollerAndInfinityButton();
    }, 100);

    if (infinity_timeout) {
        clearTimeout(infinity_timeout);
    }
    infinity_timeout = setTimeout(function () {
        checkScrollerAndInfinityButton();
    }, 100);

    if (oc_timeout) {
        clearTimeout(oc_timeout);
    }
    oc_timeout = setTimeout(function () {
        oc_checkScrollerAndInfinityButton(); /* not like the method in functions */
    }, 100);
});

$(document).ready(function () {
	$('.googlemaps_btn').click(function () {
		$('#map').toggle(1);
	});
    // for loading GM on local office pages only
    if (absolute_uri.indexOf('/om-os/') > -1 && absolute_uri.indexOf('/om-os/default.aspx') === -1 && absolute_uri.indexOf('/lokalbureau/servicekontorer.aspx') === -1 && absolute_uri.indexOf('/om-os/review/guestbook_details.aspx') === -1 && absolute_uri.indexOf('/om-os/haandsraekning.aspx') === -1) {
        var map, lat = $('#map').attr('data-lat'), lng = $('#map').attr('data-lng'), maxZoomOut = parseInt($('#map').attr('data-zoom'));
        $.getScript('https://www.google.com/jsapi', function () {
            google.load('maps', '3', {
                other_params: 'libraries=places&language=' + (site_lang === 'UK' ? cal_regional : site_lang) + '&types=geocode&key=' + googlemapskey, callback: function () {

                    var myLatlng = new google.maps.LatLng(lat, lng);
                    var Styles = [
                        {
                            "featureType": "poi.business",
                            "elementType": "labels.text",
                            "stylers": [
                                {
                                    "visibility": "off"
                                }
                            ]
                        }
                    ];
                    var mapOptions = { center: myLatlng, zoom: maxZoomOut, mapTypeId: google.maps.MapTypeId.ROADMAP, styles: Styles };
                    map = new google.maps.Map(document.getElementById("map"), mapOptions);

                    addGoogleMarker(lat, lng, maxZoomOut, '//images.sologstrand.dk/images/logo_30x30.png', $('#map').attr('data-localoffice'), new Array(new Array('Adresse', '<div class=\"att_mapbuble\"><h2>' + $('#map').attr('data-localoffice') + '</h2>' + $('#map').attr('data-address') + '<br />' + $('#map').attr('data-city') + '<br />Tlf.: ' + $('#map').attr('data-phone') + '<br /><br /><a href="/als.aspx" title="' + $('#map').attr('data-readmore') + '">' + $('#map').attr('data-readmore') + '</a></div>')), null, false);

                    renderMarkersToMap(map);
                }
            });
        }).done(function () {
        }).fail(function (jqxhr, settings, ex) {
            console.warn("Could not load Google Map script. Error message: " + jqxhr);
        });
    }

    // ??
    $('.review_images ul').each(function (i, el) {
        var _resizeReviewId, review_reg_no = $(this).attr('data-id');
        generateSlickGallery(review_reg_no);
        $(this).on('resize orientationchange', function () {
            clearTimeout(_resizeReviewId);
            _resizeReviewId = setTimeout(resizeReviewResultItemEnd(review_reg_no), itemdelta);
        });
    }); 

    // favorits

    if (cookieexists('HL_DATE_COOKIE')) {
        var fav_date = getcookie('HL_DATE_COOKIE');
        if (!isValidDate(fav_date)) {
            setcookie('HL_DATE_COOKIE', nearestSaturday, 28);
        }
        $("#datepicker_personal_list").val(getcookie('HL_DATE_COOKIE'));
    }
    var init_days = $('#init_days').val();
    if (cookieexists('HL_NOD_COOKIE')) {
        var hl_nod = getcookie('HL_NOD_COOKIE');
        if (isNumber(hl_nod)) {
            init_days = hl_nod;
        }
    }
    if ($('.housecompare li.house').length > 0) {
        if (getParam('date') !== '') {
            $("#datepicker_personal_list").val(Base64.decode(getParam('date'))).addClass('dd_selected');
            init_days = Base64.decode(getParam('nights'));
            $('#compare_days').addClass('dd_selected');
        }
        $('#compare_days').val(init_days);
        $('.housecompare').add('.calendar_removal').show();
        loadFavoritHouses();
    } else {
        noFavoritHouses();
    }
    $('#compare_days').on('change', function () {
        setcookie('HL_NOD_COOKIE', $('#compare_days').val(), 28);
    });
    $('#datepicker_personal_list').on('change', function () {
        setcookie('HL_DATE_COOKIE', $('#datepicker_personal_list').val(), 28);
    });

    // til oc_showdestination.html
    $('.destination_slick_slider').on('init', function () {
        var slider_count = $('.slick-track .slick-slide:not(.slick-cloned)').length;
        var destination_name = $(this).attr('data-destination-name');
        if (slider_count > 0) {
            $('.navcontrols .previous img').hide(); // gallery does't have infinity scroll
            $(this).parent().show();
            $('.navcontrols .controls').html(slider_count + ' ' + lbl_foto_all_text_galleria + ' ' + (site_lang === 'DE' ? lbl_photo_of : txt_from_small) + ' ' + destination_name + '<br/><span id="galleri_copyright">Copyright &copy; ' + txt_copyright_companyname + '</span>').css({ 'text-align': 'center' });
        } else {
            $(this).parent().hide();
        }
    }).slick({
        infinite: false,
        lazyLoad: 'ondemand',
        arrows: true,
        prevArrow: $('.navcontrols .previous img'),
        nextArrow: $('.navcontrols .next img'),
        responsive: [{
            breakpoint: 22960,
            settings: {
                slidesToShow: 4,
                slidesToScroll: 4,
                arrows: true,
                prevArrow: $('.navcontrols .previous img'),
                nextArrow: $('.navcontrols .next img')
            }
        }, {
            breakpoint: 900,
            settings: {
                slidesToShow: 1,
                slidesToScroll: 1,
                arrows: false,
                prevArrow: $('.navcontrols .previous img'),
                nextArrow: $('.navcontrols .next img')
            }
        }, {
            breakpoint: 350,
            settings: {
                slidesToShow: 1,
                slidesToScroll: 1,
                arrows: false,
                prevArrow: '',
                nextArrow: ''
            }
        }]
    }).on('afterChange', function (event, slick, currentSlide) {
        var current_slide = slick.currentSlide / slick.options.slidesToShow;
        if (current_slide > 0) {
            var end_slide = (slick.slideCount - (slick.currentSlide + slick.options.slidesToShow) < 0 ? true : false);
            $('.navcontrols .previous img').show();
            if (end_slide) {
                $('.navcontrols .next img').hide();
            } else {
                $('.navcontrols .next img').show();
            }
        } else {
            $('.navcontrols .previous img').hide();
        }
        });
    if (typeof lightbox !== 'undefined') {
        $('#lightbox .lb-prev').click(function () {
            // for syncronizing lightbox and slick
            var slick_clone = $('.destination_slick_slider').slick('slickGetOption')[0].slick;
            if ((lightbox.currentImageIndex + 1) % slick_clone.options.slidesToShow === 0) {
                slick_clone.currentSlide = (lightbox.currentImageIndex + 1) - slick_clone.options.slidesToShow;
                $('.destination_slick_slider').slick('setPosition');
            }
        });
        $('#lightbox .lb-next').click(function () {
            // for syncronizing lightbox and slick
            var slick_clone = $('.destination_slick_slider').slick('slickGetOption')[0].slick;
            if (lightbox.currentImageIndex % slick_clone.options.slidesToShow === 0) {
                slick_clone.currentSlide = lightbox.currentImageIndex;
                $('.destination_slick_slider').slick('setPosition');
            }
        });

        if (isSmartPhone === 'False') {
            //http://lokeshdhakar.com/projects/lightbox2/
            // todo: lightbox bug => must not load on all pages
            lightbox.option({
                'resizeDuration': 300,
                'wrapAround': false,
                'albumLabel': lbl_photo_text + ' %1 ' + lbl_photo_of + ' %2',
                'disableScrolling': true
            });
        }
    }

    var dest_ellipsisText = $('.ml_ellipse');
    while ($(dest_ellipsisText).outerHeight(true) > 95) {
        $(dest_ellipsisText).text(function (index, text) {
            return text.replace(/\W*\s(\S)*$/, '...');
        });
    }
    $('.ml_more').click(function () {
        // console.log('ml_more');
        var text_type = $(this).attr('data-type-name');
        var currentText = $('.ml_ellipse[data-type-name="' + text_type + '"]');
        if ($('.ml_ellipse[data-type-name="' + text_type + '"]').attr('data-open') === 'false') {
            currentText.css({ 'height': '', 'max-height': '' });
            $('.ml_ellipse[data-type-name="' + text_type + '"]').attr('data-open', 'true');
            $('.ml_more[data-type-name="' + text_type + '"]').html(txt_less_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_up.jpg" alt="arrow" />');
        } else {
            currentText.css({ 'height': 95, 'max-height': 95 });
            $('.ml_ellipse[data-type-name="' + text_type + '"]').attr('data-open', 'false');
            $('.ml_more[data-type-name="' + text_type + '"]').html(txt_more_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_down.jpg" alt="arrow" />');
            scrollToSelector($('.ml_more'), -100);
        }
    });

    // for destination page
    // console.log(absolute_uri);
    if (absolute_uri.indexOf('/onlinekatalog/visDestination.aspx') > -1 && $('.onlinecat_txt_toggle_off').exists()) {
        $('.onlinecat_txt_toggle_off img:not([data-lazy=""])').each(function () {
            $(this).attr('src', $(this).attr('data-lazy')).removeAttr('data-lazy');
        });
    } else if (absolute_uri.indexOf('/onlinekatalog/visRegion.aspx') > -1 && $('.onlinecat_txt_toggle_off').exists()) {
        $('.onlinecat_txt_toggle img:not([data-lazy=""])').each(function () {
            $(this).attr('src', $(this).attr('data-lazy')).removeAttr('data-lazy');
        });
    }

    // til oc_showregion.html
    $('.region_images_slickslider').on('init', function () {
        var slider_count = $('.slick-track .slick-slide:not(.slick-cloned)').length;
        var region_name = $(this).attr('data-region-name');
        if (slider_count > 0) {
            $('.navcontrols .previous img').hide(); // gallery does't have infinity scroll
            $(this).parent().show();
            $('.navcontrols .controls').html(slider_count + ' ' + lbl_foto_all_text_galleria + ' ' + (site_lang === 'DE' ? lbl_photo_of : txt_from_small) + ' ' + region_name + '<br/><span id="galleri_copyright">Copyright &copy; ' + txt_copyright_companyname + '</span>').css({ 'text-align': 'center' });
        } else {
            $(this).parent().hide();
        }
    }).slick({
        infinite: false,
        lazyLoad: 'ondemand',
        arrows: true,
        prevArrow: $('.navcontrols .previous img'),
        nextArrow: $('.navcontrols .next img'),
        responsive: [{
            breakpoint: 22960,
            settings: {
                slidesToShow: 4,
                slidesToScroll: 4,
                arrows: true,
                prevArrow: $('.navcontrols .previous img'),
                nextArrow: $('.navcontrols .next img')
            }
        }, {
            breakpoint: 750,
            settings: {
                slidesToShow: 1,
                slidesToScroll: 1,
                arrows: false,
                prevArrow: $('.navcontrols .previous img'),
                nextArrow: $('.navcontrols .next img')
            }
        }, {
            breakpoint: 350,
            settings: {
                slidesToShow: 1,
                slidesToScroll: 1,
                arrows: false,
                prevArrow: '',
                nextArrow: ''
            }
        }]
    }).on('afterChange', function (event, slick, currentSlide) {
        var current_slide = slick.currentSlide / slick.options.slidesToShow;
        if (current_slide > 0) {
            var end_slide = slick.slideCount - (slick.currentSlide + slick.options.slidesToShow) < 0 ? true : false;
            $('.navcontrols .previous img').show();
            if (end_slide) {
                $('.navcontrols .next img').hide();
            } else {
                $('.navcontrols .next img').show();
            }
        } else {
            $('.navcontrols .previous img').hide();
        }
    });
    if (typeof lightbox !== 'undefined') {
        $('#lightbox .lb-prev').click(function () {
            // for syncronizing lightbox and slick
            var slick_clone = $('.slickslider').slick('slickGetOption')[0].slick;
            if ((lightbox.currentImageIndex + 1) % slick_clone.options.slidesToShow === 0) {
                slick_clone.currentSlide = (lightbox.currentImageIndex + 1) - slick_clone.options.slidesToShow;
                $('.slickslider').slick('setPosition');
            }
        });
        $('#lightbox .lb-next').click(function () {
            // for syncronizing lightbox and slick
            var slick_clone = $('.slickslider').slick('slickGetOption')[0].slick;
            if (lightbox.currentImageIndex % slick_clone.options.slidesToShow === 0) {
                slick_clone.currentSlide = lightbox.currentImageIndex;
                $('.slickslider').slick('setPosition');
            }
        });
        if (isSmartPhone === 'False') {
            //http://lokeshdhakar.com/projects/lightbox2/
            // todo: lightbox bug => must not load on all pages
            lightbox.option({
                'resizeDuration': 300,
                'wrapAround': false,
                'albumLabel': lbl_photo_text + ' %1 ' + lbl_photo_of + ' %2',
                'disableScrolling': true
            });
        }
    }
    var ellipsisText = $('.ml_ellipse');
    while ($(ellipsisText).outerHeight(true) > 95) {
        $(ellipsisText).text(function (index, text) {
            return text.replace(/\W*\s(\S)*$/, '...');
        });
    }
    $('.ml_more').click(function () {
        if ($('.ml_ellipse').attr('data-open') === 'false') {
            ellipsisText.css({ 'height': '', 'max-height': '' });
            $('.ml_ellipse').attr('data-open', 'true');
            $('.ml_more').html(txt_less_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_up.jpg" alt="arrow" />');
        } else {
            ellipsisText.css({ 'height': 95, 'max-height': 95 });
            $('.ml_ellipse').attr('data-open', 'false');
            $('.ml_more').html(txt_more_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_down.jpg" alt="arrow" />');
        }
    });

    var ellipsisText_culture = $('.ml_ellipse_culture');
    while ($(ellipsisText_culture).outerHeight(true) > 95) {
        $(ellipsisText_culture).text(function (index, text) {
            return text.replace(/\W*\s(\S)*$/, '...');
        });
    }
    $('.ml_more_culture').click(function () {
        if ($('.ml_ellipse_culture').attr('data-open') === 'false') {
            ellipsisText_culture.css({ 'height': '', 'max-height': '' });
            $('.ml_ellipse_culture').attr('data-open', 'true');
            $('.ml_more_culture').html(txt_less_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_up.jpg" alt="arrow" />');
        } else {
            ellipsisText_culture.css({ 'height': 95, 'max-height': 95 });
            $('.ml_ellipse_culture').attr('data-open', 'false');
            $('.ml_more_culture').html(txt_more_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_down.jpg" alt="arrow" />');
        }
    });

    var ellipsisText_nature = $('.ml_ellipse_nature');
    while ($(ellipsisText_nature).outerHeight(true) > 95) {
        $(ellipsisText_nature).text(function (index, text) {
            return text.replace(/\W*\s(\S)*$/, '...');
        });
    }
    $('.ml_more_nature').click(function () {
        if ($('.ml_ellipse_nature').attr('data-open') === 'false') {
            ellipsisText_nature.css({ 'height': '', 'max-height': '' });
            $('.ml_ellipse_nature').attr('data-open', 'true');
            $('.ml_more_nature').html(txt_less_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_up.jpg" alt="arrow" />');
        } else {
            ellipsisText_nature.css({ 'height': 95, 'max-height': 95 });
            $('.ml_ellipse_nature').attr('data-open', 'false');
            $('.ml_more_nature').html(txt_more_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_down.jpg" alt="arrow" />');
        }
    });

    var ellipsisText_beaches = $('.ml_ellipse_beaches');
    while ($(ellipsisText_beaches).outerHeight(true) > 95) {
        $(ellipsisText_beaches).text(function (index, text) {
            return text.replace(/\W*\s(\S)*$/, '...');
        });
    }
    $('.ml_more_beaches').click(function () {
        if ($('.ml_ellipse_beaches').attr('data-open') === 'false') {
            ellipsisText_beaches.css({ 'height': '', 'max-height': '' });
            $('.ml_ellipse_beaches').attr('data-open', 'true');
            $('.ml_more_beaches').html(txt_less_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_up.jpg" alt="arrow" />');
        } else {
            ellipsisText_beaches.css({ 'height': 95, 'max-height': 95 });
            $('.ml_ellipse_beaches').attr('data-open', 'false');
            $('.ml_more_beaches').html(txt_more_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_down.jpg" alt="arrow" />');
        }
    });

    var ellipsisText_activities = $('.ml_ellipse_activities');
    while ($(ellipsisText_activities).outerHeight(true) > 95) {
        $(ellipsisText_activities).text(function (index, text) {
            return text.replace(/\W*\s(\S)*$/, '...');
        });
    }
    $('.ml_more_activities').click(function () {
        if ($('.ml_ellipse_activities').attr('data-open') === 'false') {
            ellipsisText_activities.css({ 'height': '', 'max-height': '' });
            $('.ml_ellipse_activities').attr('data-open', 'true');
            $('.ml_more_activities').html(txt_less_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_up.jpg" alt="arrow" />');
        } else {
            ellipsisText_activities.css({ 'height': 95, 'max-height': 95 });
            $('.ml_ellipse_activities').attr('data-open', 'false');
            $('.ml_more_activities').html(txt_more_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_down.jpg" alt="arrow" />');
        }
    });

    var ellipsisText_attractions = $('.ml_ellipse_attractions');
    while ($(ellipsisText_attractions).outerHeight(true) > 95) {
        $(ellipsisText_attractions).text(function (index, text) {
            return text.replace(/\W*\s(\S)*$/, '...');
        });
    }
    $('.ml_more_attractions').click(function () {
        if ($('.ml_ellipse_attractions').attr('data-open') === 'false') {
            ellipsisText_attractions.css({ 'height': '', 'max-height': '' });
            $('.ml_ellipse_attractions').attr('data-open', 'true');
            $('.ml_more_attractions').html(txt_less_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_up.jpg" alt="arrow" />');
        } else {
            ellipsisText_attractions.css({ 'height': 95, 'max-height': 95 });
            $('.ml_ellipse_attractions').attr('data-open', 'false');
            $('.ml_more_attractions').html(txt_more_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_down.jpg" alt="arrow" />');
        }
    });
    
    // til newsletter subscribtion
    $("#nlus_email").keydown(function (event) {
        if (event.keyCode === 13) {
            $("#un_submit").click();
        }
    });
    $("#nl_email").keydown(function (event) {
        if (event.keyCode === 13) {
            $("#submit_btn").click();
            return false;
        }
    });

    $('.responsive_bottom').slick({
        dots: true,
        infinite: true,
        //centerMode: true,
        speed: 300,
        centerPadding: '0px',
        //slidesPerRow: 4,
        slidesToShow: 4,
        slidesToScroll: 4,
        responsive: [
            {
                breakpoint: 1600,
                settings: {
                    slidesToShow: 3,
                    slidesToScroll: 3,
                    infinite: true,
                    dots: true
                }
            },
            {
                breakpoint: 1200,
                settings: {
                    slidesToShow: 2,
                    slidesToScroll: 2,
                    infinite: true,
                    dots: true
                }
            },
            {
                breakpoint: 750,
                settings: {
                    arrows: false,
                    centerMode: true,
                    centerPadding: '30px',
                    slidesToShow: 1
                }
            }
        ]
    });

    if (absolute_uri.indexOf('/om-os/review/guestbook_details.aspx') > -1) {
        $('.review_samlet ul img:not([data-lazy=""])').filter(':in-viewport').each(function (i, ele) {
            var dl = $(ele).attr('data-lazy');
            if (typeof dl !== 'undefined' && dl !== false) {
                $(ele).attr('src', dl).removeAttr('data-lazy');
            }
        });

        $('.fs-container').each(function () {
            $(this).css({ 'width': $('.flexslider-' + $(this).attr('data-houseid')).width(), 'height': ($('.flexslider-' + $(this).attr('data-houseid')).width() * 0.75), 'max-height': ($('.flexslider-' + $(this).attr('data-houseid')).width() * 0.75), overflow: 'hidden' });
            $('.slidecontainer-' + $(this).attr('data-houseid')).on('init', function () {
                $('.slidecontainer-' + $(this).attr('data-houseid') + ' .slider-img-name .picture_bar_txt').text($('.slidecontainer-' + $(this).attr('data-houseid') + ' li.slick-active').attr('img-type-name'));
                $('.slidecontainer-' + $(this).attr('data-houseid') + ' .slick-dots li:not(:first)').remove();
                // $('.slidecontainer-' + $(this).attr('data-houseid') + ' .slick-track li img').show();
            }).slick({
                slidesToShow: 1,
                slidesToScroll: 1,
                autoplay: false,
                speed: 150,
                fade: true,
                touchThreshold: (isSmartPhone ? 20 : 5),
                adaptiveHeight: false,
                lazyLoad: 'ondemand',
                dots: true,
                arrows: true,
                appendArrows: $("#slider-controls-" + $(this).attr('data-houseid')).show(),
                appendDots: $('#slider-controls-' + $(this).attr('data-houseid') + ' .slider-paging-number .picture_bar_txt'),
                prevArrow: $('#nav_prev_' + $(this).attr('data-houseid')),
                nextArrow: $('#nav_next_' + $(this).attr('data-houseid')),
                customPaging: function (slick) { return (slick.currentSlide + 1) + '/' + slick.slideCount; }
            }).on('afterChange', function (event, slick, currentSlide) {
                $('#slider-controls-' + $(this).attr('data-houseid') + ' .slick-dots li:first').text(slick.options.customPaging.call(null, slick, currentSlide));
            });
        });
    }

    // focus_house_generel_mobil.html
    $('.single-item').slick({
        arrows: true,
        appendArrows: $(".focus_nav_single_item"),
        prevArrow: $('#nav_prev'),
        nextArrow: $('#nav_next'),
        dots: true,
        appendDots: $('.focus_nav_single_item .nav_status'),
        customPaging: function (slick) {
            return (slick.currentSlide + 1) + '/' + slick.slideCount;
        }
    }).on('afterChange', function (event, slick, currentSlide) {
        $('.focus_nav_single_item .slick-dots li:first').text(slick.options.customPaging.call(null, slick, currentSlide));
    });

    if (isSmartPhone === 'True' || (isTabletDevice === 'True' && isPortrait())) {
        $('.mobile_filter_house').click(function () {
            if($('.mobile_filter_house span').text() === "+"){
                $('.mobile_filter_house span').text("-");
            } else {
                $('.mobile_filter_house span').text("+");
            }        
            $( ".search_expand_mobile_house" ).slideToggle( "medium", function() {
            // Animation complete.
            });
        });
        $('.mobile_filter_price').click(function () {
            if($('.mobile_filter_price span').text() === "+"){
                $('.mobile_filter_price span').text("-");
            } else {
                $('.mobile_filter_price span').text("+");
            }        
              $( ".search_expand_mobile_price" ).slideToggle( "medium", function() {
                // Animation complete.
              });
        });
        $('.mobile_filter_extra').click(function () {
            if($('.mobile_filter_extra span').text() === "+"){
            $('.mobile_filter_extra span').text("-");
            } else {
                $('.mobile_filter_extra span').text("+");
            }        
                $( ".search_expand_mobile_extra" ).slideToggle( "medium", function() {
            // Animation complete.
            });
        });        
    } // end if p� isMobileDevice 

    if (isMobileDevice === 'True' || isSmartPhone === 'True') {
        $('.toggle_mobile_searchblock_soeghus').click(function () {
            $('#mobile_searchblock_container').toggle(1);
            $('.mobil_none_drp').toggle(1);
            $('#DropDownList_waterdistance').toggle(1);
            $('#DropDownList_pets').toggle(1);
            if ($('.toggle_mobile_searchblock_soeghus span.mobile_add_minus_toggle').text() === "+") {
                $('.toggle_mobile_searchblock_soeghus span.mobile_add_minus_toggle').text("-");
                $('#leftmenu_search').removeClass();
                $('#leftmenu_search').addClass('leftmenu_search_mobil_open');
            } else {
                $('.toggle_mobile_searchblock_soeghus span.mobile_add_minus_toggle').text("+");
                $('#leftmenu_search').removeClass();
                $('#leftmenu_search').addClass('leftmenu_search_mobil');
            }
        });
    }

    // used on html_templates/search/sb_frontpage.html
    if (isResultpage === 'True') {
        var resultpage_sb_selector = '.resultpage_sb[data-type="searchblock"]';
        $(resultpage_sb_selector).searchblock('init', {
            outputtype: outputType.AJAX_WITHOUT_LOAD, initialize_load: false, resultitemtemplatepath: '/html_templates/search/result_item_default.html',
            use_overlay_map: true, infinitypagenumberselector: ".page_number", use_cookie: false, use_urlhash: true, useRouteFunctions: false,
            infinitybuttonselector: '.infinity', housecountselector: ".house_result_count", mandatoryAlternativeQueries: $(resultpage_sb_selector).attr('data-aq'),
            pagesize: (isSmartPhone === 'True' ? 4 : isTabletDevice === 'True' ? 4 : $(window).width() < 750 ? 4 : $(window).width() < 1679 ? 6 : $(window).width() < 2099 ? 8 : 10),
            resulttargetselector: '.housecontainer', reqestedAlternativeQueries: $(resultpage_sb_selector).attr('data-req-aq'),
            displayOfAlternativeQueriesSelector: '#search_criteria .checkmarks', resulttargeturl: $(resultpage_sb_selector).attr('data-result-target-url')
        });
        $(resultpage_sb_selector).searchblock('attach', 'SB simple');

        $('.result_new_search_close').click(function () {
            $('#leftmenu_search').slideToggle("normal");
        });
        $('.result_new_search_close_mobile').click(function () {
            $('#leftmenu_search').slideToggle("normal");
        });
        $('.result_new_showonmap').click(function () {
            $('#leftmenu_search').hide();
        });
        $('*[data-handler="checkbox"]').add('*[data-handler="swimmingpool"]').add('*[data-handler="jacuzzi"]').add('*[data-handler="object"]').on('click', function () {
            handleCounterAnimation();
        });
        $('*[data-handler="dropdown"]').add('*[data-handler="startdate"]').add('.mslunder').on('change', function () {
            handleCounterAnimation();
        });
    } else { // called on all pages except result page
        var sb_selector = '#sb_simple[data-type="searchblock"]';
        if ($(sb_selector).exists()) {
            //console.log('Simple SB exists.. running init..');
            $(sb_selector).searchblock('init', {
                outputtype: outputType.POST, resultitemtemplatepath: '', region: $(sb_selector).attr('data-qs-region'), subregion: $(sb_selector).attr('data-qs-subregion'),
                destination: $(sb_selector).attr('data-qs-destination'), mandatoryAlternativeQueries: $(sb_selector).attr('data-aq'),
                infinitypagenumberselector: ".page_number", housecountselector: ".housecount", resulttargeturl: $(sb_selector).attr('data-result-target-url'), use_overlay_map: true,
                use_cookie: $(sb_selector).attr('data-usecookie') === 'true' ? true : false, presetAlternativeQueries: $(sb_selector).attr('data-preset_aq'),
                displayOfAlternativeQueriesSelector: '', show_last_search_button: true
            }); // initialize SB
            $(sb_selector).searchblock('attach', 'SB attach'); // attach SB to page
            if (isTabletDevice === 'True') {
                $('#DropDownList_region').css('cssText', 'width: 173px !important;');
            }
        }

        // must be located below SB initialization
        if (isFrontpage === 'False') {
            if (isSmartPhone === 'True') {
                $('#DropDownList_region').css({ width: '85% !important', 'margin-left': '0px !important' });
            } else {
                $('#DropDownList_region').css({ width: '173px !important', 'margin-left': '35px !important' });
            }

            if (absolute_uri.indexOf('/inspiration/') > -1) {
                $('img:not([data-lazy=""])').each(function (i, ele) {
                    var dl = $(ele).attr('data-lazy');
                    if (typeof dl !== 'undefined' && dl !== false) {
                        $(ele).attr('src', dl).removeAttr('data-lazy');
                    }
                });

                // all other searchblocks
                if (absolute_uri.indexOf('/marina-houses/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;harbor=yes;',
                        housecountselector: '.marina_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/pool/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;swimmingpool=yes;',
                        housecountselector: '.swimmingpool_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/spa/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;jacuzzi=yes;',
                        housecountselector: '.swimmingpool_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/pool_marielyst/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;swimmingpool=yes;destination=792;',
                        housecountselector: '.swimmingpool_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/store_sommerhuse/') > -1) { // dk
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;persons=12;',
                        housecountselector: '.storehuse_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/ferielejlighed/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;objecttype=6:7:8:9:10;', // ferielejligheder
                        housecountselector: '.apartment_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/activitycenter/rim.aspx') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;subregion=54;freeactivitycenter=yes;',
                        housecountselector: '.marina_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/activitycenter/soendervig.aspx') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;subregion=47;freeactivitycenter=yes;',
                        housecountselector: '.marina_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/wheelchair/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;wheelchair=yes;',
                        housecountselector: '.wheelchair_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/lej_sommerhus/default.aspx') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;',
                        housecountselector: '.lej_danmark_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/fishing/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;fishing=yes;',
                        housecountselector: '.fishing_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/legoland/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.OBJECT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'destination=980:988:1000:650:663:653:704;startdate=NULL;',
                        housecountselector: '.legoland_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/luksus-sommerhuse/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;category=T;',
                        housecountselector: '.luksus_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/efteraarsferie/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=13-10-2018;numberofdays=7;woodburning_stove=yes;',
                        housecountselector: '.efteraar_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/gratis_oplevelser_i_efteraarsferien/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=13-10-2018;numberofdays=7;woodburning_stove=yes;',
                        housecountselector: '.efteraarboern_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/efteraarsferie_par/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=13-10-2018;numberofdays=7;woodburning_stove=yes;',
                        housecountselector: '.efteraarpar_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/paaskeferie/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=' + date_paaske + ';numberofdays=4;',
                        housecountselector: '.paaske_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/juleferie/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=' + date_juleferie + ';numberofdays=7;woodburning_stove=yes;',
                        housecountselector: '.juleferie_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/nytaarsferie/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=' + date_nytaar + ';numberofdays=7;woodburning_stove=yes;',
                        housecountselector: '.nytaarsferie_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/sommerferie/') > -1 || absolute_uri.indexOf('/billig_sommerferie_i_sommerhus/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=' + date_sommer + ';numberofdays=7;',
                        housecountselector: '.sommerferie_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/vinterferie/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=' + date_vinter + ';numberofdays=7;woodburning_stove=yes;',
                        housecountselector: '.sommerferie_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/vesterhavet/') > -1) {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'region=2;',
                        housecountselector: '.vesterhavet_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/nytaarsferie_sjaelland/') > -1 && site_lang === 'DK') {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=' + date_nytaar + ';numberofdays=7;woodburning_stove=yes;region=9;',
                        housecountselector: '.nytaarsferiesjaelland_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/majferie/') > -1 && site_lang === 'NL') {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=' + date_vinter + ';numberofdays=7;',
                        housecountselector: '.majferie_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/fkk/') > -1 && site_lang === 'DE') {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'startdate=NULL;fishing=yes;',
                        housecountselector: '.fkk_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/gastronomie/') > -1 && site_lang === 'DE') {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'picturetype=_004.',
                        housecountselector: '.gastronomie_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/nordsee/') > -1 && site_lang === 'DE') {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'region=2;',
                        housecountselector: '.nordsee_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/ostsee/') > -1 && site_lang === 'DE') {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'region=7;',
                        housecountselector: '.ostsee_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/aufenthalt-am-strand/') > -1 && site_lang === 'DE') {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'seaview=yes;waterdistance=300;picturetype=_004.',
                        housecountselector: '.aufenhaltstrand_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/ferienhaus-mit-hund/') > -1 && site_lang === 'DE') {
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('init', {
                        outputtype: outputType.COUNT,
                        ddFormEvents: false,
                        presetAlternativeQueries: 'pets=1;',
                        housecountselector: '.pets_count',
                        destination_preset: true,
                        use_cookie: false,
                        use_overlay_map: false
                    });
                    $('#' + $('form[data-type="searchblock"],div[data-type="searchblock"]').attr('id')).searchblock('loadHouseCount', absolute_uri);
                } else if (absolute_uri.indexOf('/activitycenter/') > -1 || absolute_uri.indexOf('/bryllup/') > -1 || absolute_uri.indexOf('/danemark/') > -1) {
                    // do nothing
                    // console.log('No SB..');
                }
            }
        }

        if (absolute_uri.indexOf('/langtidsleje/') > -1) {
            // console.log('langtidsleje..');
            $('.toggle_1').click(function () {
                $('#langtidsleje_contact_1').toggle(1);
            });
            $('.toggle_2').click(function () {
                $('#langtidsleje_contact_2').toggle(1);
            });
            $('.toggle_3').click(function () {
                $('#langtidsleje_contact_3').toggle(1);
                $('#langtidsleje_contact_4').hide();
            });
            $('.toggle_4').click(function () {
                $('#langtidsleje_contact_4').toggle(1);
                $('#langtidsleje_contact_3').hide();
            });
            $('.toggle_5').click(function () {
                $('#langtidsleje_contact_5').toggle(1);
                $('#langtidsleje_contact_6').toggle(1);
            });
            $('.toggle_6').click(function () {
                $('#langtidsleje_btn_6').toggle(1);
            });
        } else if (document.location.href.indexOf('/sommerhusejer/') > -1) {
            //HUSEJER FORSIDEN
            $('#txtUsername').focus();
            var ctrlDown = false;
            var ctrlKey = 17, vKey = 86, cKey = 67;
            $(document).keydown(function (e) {
                if (e.keyCode === ctrlKey) ctrlDown = true;
            }).keyup(function (e) {
                if (e.keyCode === ctrlKey) ctrlDown = false;
            });
            var alreadyTypedUsername = false;
            $('#txtUsername').keyup(function (e) {
                if ($(this).val().length === 1) {
                    alreadyTypedUsername = false;
                }
                if ($(this).val().length === 2 && !alreadyTypedUsername && e.keyCode !== 8) {
                    $(this).val($(this).val() + "-");
                    alreadyTypedUsername = true;
                }
                if ($(this).val().length > 2 && $(this).val().indexOf('-') === -1 && e.keyCode !== 8) {
                    var cur_value = $(this).val();
                    $(this).val(cur_value.substring(0, 2) + "-" + cur_value.substring(2));
                }
                if ($(this).val().length === 7 && e.keyCode !== 8) {
                    $('#txtPassword').focus();
                }
            });
            $("#txtUsername").keydown(function (e) {
                if (ctrlDown && (e.keyCode === vKey || e.keyCode === cKey)) return;
                if (e.keyCode === 8) {
                    $('#alertBox').html('').hide();
                    return;
                }

                if ($(this).val().indexOf("-") > -1 && (e.keyCode === 109 || e.keyCode === 173)) {
                    $('#alertBox').html('- m� kun forekomme en gang (f.eks. 11-4127). Venligst pr�v igen.').show();
                    $(this).val($(this).val().replace(/-/g, ''));
                }

                if ($.inArray(e.keyCode, [40, 46, 8, 9, 27, 13, 109, 173, 190]) !== -1 || (e.keyCode === 65 && e.ctrlKey === true) || (e.keyCode >= 35 && e.keyCode <= 39)) {
                    $('#alertBox').html('').hide();
                    return;
                }

                // Ensure that it is a number and stop the keypress
                if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
                    $('#alertBox').html('Ugyldigt tegn indtastet til brugernavnet (f.eks. 11-4127). Venligst pr�v igen.').show();
                    e.preventDefault();
                }
            });
        }
    }
    
    $('.mobil_search_close').click(function () {
        $('.searchblock_container').addClass('searchblock_container_mobil_none');
        $('.searchblock_container').removeClass('searchblock_container_mobil_block');
        $('.toggle_mobile_searchblock').addClass('searchblock_container_mobil_block');
        $('.toggle_mobile_searchblock').removeClass('searchblock_container_mobil_none');
        $('.section_frontpage .review_top_mobil').addClass('searchblock_container_mobil_block');
        $('.section_frontpage .review_top_mobil').removeClass('searchblock_container_mobil_none');
        $('.review_top_mobil').removeClass('searchblock_container_mobil_block');  
        $('.hero_image_none').addClass('hero_image');
        $('.hero_image').removeClass('hero_image_none');
        
        $('#content').css({ 'margin-top': 0 });
    });
    $('.toggle_mobile_searchblock').click(function () {
        $('.searchblock_container').removeClass('searchblock_container_mobil_none');
        $('.searchblock_container').addClass('searchblock_container_mobil_block');
        $('.toggle_mobile_searchblock').removeClass('searchblock_container_mobil_block');
        $('.toggle_mobile_searchblock').addClass('searchblock_container_mobil_none');
        $('.section_frontpage .review_top_mobil').removeClass('searchblock_container_mobil_block');
        $('.section_frontpage .review_top_mobil').addClass('searchblock_container_mobil_none');
        $('.hero_image').addClass('hero_image_none');
        $('.hero_image_none').removeClass('hero_image');
    });	

    // used on freetextsearch.inc
    $('#searchTop .txt_ajaxsearch').attr('title', txtDefaultTitle).val(txtDefaultValue).focus(function () {
        if ($(this).val() === txtDefaultValue) { $(this).val(''); } else { if ($(this).val().length > 1) { doTextSearch(0); } }
    }).blur(function () {
        if ($(this).val() === '') {
            $(this).val(txtDefaultValue);
        }
    }).bind("mouseup", function (e) {
        var $input = $(this), oldValue = $input.val();
        if (oldValue === "") return;
        setTimeout(function () {
            if ($input.val() === "") {
                $input.trigger("cleared");
            }
        }, 50);
    }).on('cleared', function () {
        $("#closeresultbox").trigger("click");
    }).keyup(function (e) {
        if ($(this).val().length > 1 && $(this).val().length < 50) {
            var hasTwoNumbers = /^\d{2}$/.test($(this).val());
            if (hasTwoNumbers && lastPressedKey !== 8) {
                $(this).val($(this).val() + '-');
            }
            delay(function () {
                doTextSearch(0);
            }, 280);
        } else {
            $("#ajaxresult").removeClass("resultactive");
            $("#resultbox").html("");
            $("#ajaxresult .ajaxsearch").hide();
        }
    }).keydown(function (e) {
        lastPressedKey = e.keyCode;
        if ($(this).val().indexOf("-") > -1 && $(this).val().length === 3 && (e.keyCode === 109 || e.keyCode === 173)) {
            return false;
        }
    });
    $('#ajaxFormSubmitter').click(function (e) {
        e.preventDefault();
        var sw = $('#searchTop .txt_ajaxsearch').val();
        if (sw.length > 1) {
            directSearchPattern(sw);
        }
    });

    // used on html_templates/focus_house_general_slide.html
    $('.focushouse_slider').slick({
        dots: true,
        infinite: true,
        speed: 300,
        slidesToShow: 6,
        slidesToScroll: 6,
        responsive: [
            {
                breakpoint: 1600,
                settings: {
                    slidesToShow: 4,
                    slidesToScroll: 4,
                    infinite: true,
                    dots: true
                }
            },
            {
                breakpoint: 1200,
                settings: {
                    slidesToShow: 3,
                    slidesToScroll: 3,
                    infinite: true,
                    dots: true
                }
            },
            {
                breakpoint: 900,
                settings: {
                    slidesToShow: 2,
                    slidesToScroll: 2,
                    infinite: true,
                    dots: true
                }
            },
            {
                breakpoint: 600,
                settings: {
                    slidesToShow: 1,
                    slidesToScroll: 1,
                    infinite: true,
                    dots: true
                }
            }
            // You can unslick at a given breakpoint now by adding:
            // settings: "unslick"
            // instead of a settings object
        ]
    });

    // til huspr�sentationen 
    $('.focushouse_slider_housepictures').slick({
    
        dots: false,
        infinite: true,
        fade: true,
        cssEase: 'linear',
        lazyLoad: 'ondemand',
        numImagesToPreload: 0,
        speed: 300,
        slidesToShow: 1,
        slidesToScroll: 1,
        responsive: [
            {
                breakpoint: 1600,
                settings: {
                    slidesToShow: 1,
                    slidesToScroll: 1,
                    infinite: true,
                    dots: false
                }
            },
            {
                breakpoint: 1200,
                settings: {
                    slidesToShow: 1,
                    slidesToScroll: 1,
                    infinite: true,
                    dots: false
                }
            },
            {
                breakpoint: 900,
                settings: {
                    slidesToShow: 1,
                    slidesToScroll: 1,
                    infinite: true,
                    dots: false
                }
            },
            {
                breakpoint: 600,
                settings: {
                    slidesToShow: 1,
                    slidesToScroll: 1,
                    infinite: true,
                    dots: false
                }
            }
            // You can unslick at a given breakpoint now by adding:
            // settings: "unslick"
            // instead of a settings object
        ]
    });    
    


    // used on house presentation page
    var house_ellipsisText = $('.ml_ellipse');
    while ($(house_ellipsisText).outerHeight(true) > 95) {
        $(house_ellipsisText).text(function (index, text) {
            return text.replace(/\W*\s(\S)*$/, '...');
        });
    }
    $('.ml_more').click(function () {
        if ($('.ml_ellipse').attr('data-open') === 'false') {
            house_ellipsisText.css({ 'height': '', 'max-height': '' });
            $('.ml_ellipse').attr('data-open', 'true');
            $('.ml_more').html(txt_less_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_up.jpg" alt="arrow" />');
        } else {
            house_ellipsisText.css({ 'height': 95, 'max-height': 95 });
            $('.ml_ellipse').attr('data-open', 'false');
            $('.ml_more').html(txt_more_mobi + ' <img src="//images.sologstrand.dk/images/sos_2/icons/arrow_black_down.jpg" alt="arrow" />');
        }
    });

    // used on several pages
    $('.responsive').slick({
        dots: true,
        infinite: true,
        speed: 200,
        slidesToShow: 4,
        slidesToScroll: 4,
        lazyLoad: 'ondemand',
        responsive: [
            {
                breakpoint: 1600,
                settings: {
                    slidesToShow: 3,
                    slidesToScroll: 3
                }
            },
            {
                breakpoint: 1200,
                settings: {
                    slidesToShow: 2,
                    slidesToScroll: 2
                }
            },
            {
                breakpoint: 600,
                settings: {
                    slidesToShow: 1,
                    slidesToScroll: 1
                }
            }
        ]
    });

    // $('.container_1').add('.region_container_DKDE').viewportloader({ overlay_map_selector: '.onlinekatalog_map_forside' });
    $('#expand_search_mobil').click(function () {
        $('.expanded_search').toggle(1);
    });
    $('#mobil_menu1').click(function () {
        $('#topmenu2').toggle(1);
        $('.toggle_mobile_searchblock_outer_toggle').toggle(1);
        $('.logo_menutoggle1').toggle(1);
        $('.logo_menutoggle2').toggle(1);
        $('.mobil_menu_left').toggle(1);
        $('.header_USP').toggle(1);
    });
    $('.mobil_menu2').click(function () {
        $('.mobil_menu2').css({ 'display': 'none' });
        $('.mobil_menu3').css({ 'display': 'block' });
        $('.mobil_menu_txt').css({ 'display': 'none' });
    });
    $('.mobil_menu3').click(function () {
        $('.mobil_menu2').css({ 'display': 'block' });
        $('.mobil_menu3').css({ 'display': 'none' });
        $('.mobil_menu_txt').css({ 'display': 'block' });
    });    
    $('.toggle_mobile_searchblock').click(function () {
        $('#content').css({ 'margin-top': 100 });
        $('.review_top_mobil').css({ 'display': 'none' });
        $('.searchblock_container').toggle(1);
        $('.toggle_mobile_searchblock').toggle(1);
        if ($('.toggle_mobile_searchblock div span').text() === "+") {
            $('.toggle_mobile_searchblock div span').text("-");
        } else {
            $('.toggle_mobile_searchblock div span').text("+");
        }
    });
    $('.mobil_menu_left').click(function () {
        $('#leftmenu').toggle(1);
    });
    $('#cssmenu li.active').addClass('open').children('ul').show();
    $('#cssmenu .mobil_menu_open_close').on('click', function () {
        $(this).removeAttr('href');
        var element = $(this).parent('li');
        if (element.hasClass('open')) {
            element.removeClass('open');
            element.find('li').removeClass('open');
            element.find('ul').slideUp(200);
        }
        else {
            element.addClass('open');
            element.children('ul').slideDown(200);
            element.siblings('li').children('ul').slideUp(200);
            element.siblings('li').removeClass('open');
            element.siblings('li').find('li').removeClass('open');
            element.siblings('li').find('ul').slideUp(200);
        }
    });

    dest_checkScrollerAndInfinityButton();

    if (isResultpage === 'False') {
        // progress bar loader - must be located at the bottom of document ready
        var getMax = function () {
            return $(document).height() - $(window).height();
        };
        var getValue = function () {
            return $(window).scrollTop();
        };
        if ('max' in document.createElement('progress')) {
            // Browser supports progress element
            var progress_bar = $('progress');
            // Set the Max attr for the first time
            progress_bar.attr({ max: getMax() });
            $(document).on('scroll', function () {
                // On scroll only Value attr needs to be calculated
                progress_bar.attr({ max: getMax(), value: getValue() });
            });
            $(window).resize(function () {
                // On resize, both Max/Value attr needs to be calculated
                progress_bar.attr({ max: getMax(), value: getValue() });
            });
        } else {
            var progressBar = $('.progress-bar'),
                max = getMax(),
                value, width;
            var getWidth = function () {
                // Calculate width in percentage
                value = getValue();
                width = (value / max) * 100;
                width = width + '%';
                return width;
            };
            var setWidth = function () {
                progressBar.css({ width: getWidth() });
            };
            $(document).on('scroll', setWidth);
            $(window).on('resize', function () {
                // Need to reset the Max attr
                max = getMax();
                setWidth();
            });
        }
    }
        $('#daysSelDate').show();
        $('.msl_region').click(function () {
            $('.msl_region').addClass('msl_region_hide');
            $('.msl_region').removeClass('msl_region_show');
            $('.msl_subregion').addClass('msl_subregion_show');
            $('.msl_subregion').removeClass('msl_subregion_hide');
            $('.msl_destination').addClass('msl_destination_hide');
            $('.msl_destination').removeClass('msl_destination_show');             
            $('.searcblock_backarrow_subregion').addClass('searcblock_backarrow_subregion_show');   
            $('.searcblock_backarrow_subregion').removeClass('searcblock_backarrow_subregion_hide');
            $('.searcblock_backarrow_destination').addClass('searcblock_backarrow_destination_hide');
            $('.searcblock_backarrow_destination').removeClass('searcblock_backarrow_destination_show');
        });
        $('.msl_subregion').click(function () {
            $('.msl_region').addClass('msl_region_hide');
            $('.msl_region').removeClass('msl_region_show');
            $('.msl_subregion').addClass('msl_subregion_hide');
            $('.msl_subregion').removeClass('msl_subregion_show');            
            $('.msl_destination').addClass('msl_destination_show');
            $('.msl_destination').removeClass('msl_destination_hide'); 
            $('.searcblock_backarrow_destination').removeClass('searcblock_backarrow_destination_hide');
            $('.searcblock_backarrow_destination').addClass('searcblock_backarrow_destination_show');  
            $('.searcblock_backarrow_subregion').removeClass('searcblock_backarrow_subregion_show');   
            $('.searcblock_backarrow_subregion').addClass('searcblock_backarrow_subregion_hide');            
        });     
        $('.searcblock_backarrow_subregion').click(function () {
            $('.searcblock_backarrow_subregion').addClass('searcblock_backarrow_subregion_hide');   
            $('.searcblock_backarrow_subregion').removeClass('searcblock_backarrow_subregion_show');
            $('.searcblock_backarrow_destination').removeClass('searcblock_backarrow_destination_show');   
            $('.searcblock_backarrow_destination').addClass('searcblock_backarrow_destination_hide');            
            $('.msl_region').addClass('msl_region_show');
            $('.msl_subregion').addClass('msl_subregion_hide');            
            $('.msl_region').removeClass('msl_region_hide');
            $('.msl_subregion').removeClass('msl_subregion_show'); 
            $('.msl_destination').addClass('msl_destination_hide');
            $('.msl_destination').removeClass('msl_destination_show'); 
            $('.opt').removeClass('selected'); 
        });

    $('#mobile_location_closebtn').click(function () {
            $('.mobil_search_close').css('display', 'block');
    });




    $('.search_input_location').click(function () {
    $('.mobil_search_close').css('display', 'none');
    if ($("#DropDownList_subregion").children("option:selected").val() !== "0") {
        $('#search_innercontainer1').addClass('search_innercontainer1_show');
        $('#search_innercontainer1').addClass('searchblock_container_open');
        $('.review_outercontainer').addClass('review_outercontainer_hide');
        $('.msl_region').addClass('msl_region_hide');
        $('.msl_region').removeClass('msl_region_show');
        //$('.msl_subregion').addClass('msl_subregion_show');
        $('.msl_subregion').removeClass('msl_subregion_hide');
        $('#searchTop').removeClass('frontpage_search_reg_show'); 
        $('.frontpage_search_reg ').removeClass('frontpage_search_reg_hidden');    
    }
    else{
        $('#search_innercontainer1').addClass('search_innercontainer1_show');
        $('#search_innercontainer1').addClass('searchblock_container_open');
        $('.review_outercontainer').addClass('review_outercontainer_hide');
        $('.search_input_location').addClass('dd_selected');
        $('#searchTop').removeClass('frontpage_search_reg_show'); 
        $('.frontpage_search_reg ').removeClass('frontpage_search_reg_hidden');    
    }
    });         

    $('.search_input_arrival').click(function () {
        $('#search_innercontainer1').removeClass('search_innercontainer1_show');  
        $('#search_innercontainer1').removeClass('searchblock_container_open');
        $('#searchTop').removeClass('frontpage_search_reg_show');    
        $('.frontpage_search_reg ').removeClass('frontpage_search_reg_hidden');
        $('#altdays_container').removeClass('altdays_container_show_reg_active');
        $('#altdays_container').addClass('altdays_container_show');            
    }); 
        
    $('.search_input_arrival_days').click(function () {
        $('#search_innercontainer1').removeClass('search_innercontainer1_show');  
        $('#search_innercontainer1').removeClass('searchblock_container_open');                 
    }); 
        
    $('.search_input_persons').click(function () {
        $('#search_innercontainer1').removeClass('search_innercontainer1_show');  
        $('#search_innercontainer1').removeClass('searchblock_container_open');                 
    });         

    $('.searchblock_container_close').click(function () {
        $('#search_innercontainer1').removeClass('search_innercontainer1_show');  
        $('#search_innercontainer1').removeClass('searchblock_container_open');                    
    });  
    $('#CheckBox_swimmingpool').click(function () {
        $('.searchblok_swimmingpool_container_none').addClass('searchblok_swimmingpool_container');              
    });  

    $('#CheckBox_jacuzzi').click(function () {
        if ($('#CheckBox_jacuzzi').prop('checked') === true) {            
            $('.searchblok_spa_container_none').addClass('searchblok_spa_container');
        }
        else {
            $('.searchblok_spa_container_none').removeClass('searchblok_spa_container');
        }            
    });

    $('#CheckBox_swimmingpool').click(function () {
        if ($('#CheckBox_swimmingpool').prop('checked') === true) {            
            $('.searchblok_swimmingpool_container_none').addClass('searchblok_swimmingpool_container');
        }
        else {
            $('.searchblok_swimmingpool_container_none').removeClass('searchblok_swimmingpool_container');
        }            
    });
        
    $('.frontpage_search_reg').click(function () {
        $('.frontpage_search_reg_hidden').addClass('frontpage_search_reg_show');
        $('.frontpage_search_reg').addClass('frontpage_search_reg_hidden');
        $('#altdays_container').addClass('altdays_container_show_reg_active');
        $('#altdays_container').removeClass('altdays_container_show');            
        $('#search_innercontainer1').removeClass('search_innercontainer1_show');  
        $('#search_innercontainer1').removeClass('searchblock_container_open');
    });
    switch (site_lang) {
        case 'DK': AllRegions_text = 'hele Danmark'; break;
        case 'DE': AllRegions_text = 'Ganz D�nemark'; break;
        case 'SE': AllRegions_text = 'alla regioner'; break;
        case 'NO': AllRegions_text = 'alle regioner'; break;
        case 'UK': AllRegions_text = 'all regions'; break;
        case 'NL': AllRegions_text = 'heel Denemarken'; break;
    }
    $('#mobile_location_closebtn_inner').text(AllRegions_text);
    
    
    $('body').on('click', function (evt) { // Ved click udenfor rejsem�l boksen 
        var $date_altdays = $(evt.target);
        if (!($date_altdays.is('#search_innercontainer1 *') || $date_altdays.is('#search_location') || $date_altdays.is('.overlay-tooltip'))) {            
            $('#search_innercontainer1').removeClass('searchblock_container_open');
            $('#search_innercontainer1').removeClass('search_innercontainer1_show');             
        }
    });      
    
});



;$(document).ready(function () {
        $('.msl_region').click(function () {
            $('.msl_region').addClass('msl_region_hide');
            $('.msl_region').removeClass('msl_region_show');
            $('.msl_subregion').addClass('msl_subregion_show');
            $('.msl_subregion').removeClass('msl_subregion_hide');
            $('.msl_destination').addClass('msl_destination_hide');
            $('.msl_destination').removeClass('msl_destination_show');
            $('.searcblock_backarrow_subregion').addClass('searcblock_backarrow_subregion_show');   
            $('.searcblock_backarrow_subregion').removeClass('searcblock_backarrow_subregion_hide');
            $('.searcblock_backarrow_destination').addClass('searcblock_backarrow_destination_hide');   
            $('.searcblock_backarrow_destination').removeClass('searcblock_backarrow_destination_show');              
        });
        $('.msl_subregion').click(function () {
            $('.msl_region').addClass('msl_region_hide');
            $('.msl_region').removeClass('msl_region_show');
            $('.msl_subregion').removeClass('msl_subregion_show');
            $('.msl_subregion').addClass('msl_subregion_hide');          
            $('.msl_destination').removeClass('msl_destination_hide');
            $('.msl_destination').addClass('msl_destination_show');    
            $('.searcblock_backarrow_subregion').addClass('searcblock_backarrow_subregion_hide');   
            $('.searcblock_backarrow_subregion').removeClass('searcblock_backarrow_subregion_show');
            $('.searcblock_backarrow_destination').addClass('searcblock_backarrow_destination_show');   
            $('.searcblock_backarrow_destination').removeClass('searcblock_backarrow_destination_hide');                          
        });     
        $('.searcblock_backarrow_subregion').click(function () {
            $('.searcblock_backarrow_subregion').addClass('searcblock_backarrow_subregion_hide');   
            $('.searcblock_backarrow_subregion').removeClass('searcblock_backarrow_subregion_show');
            $('.searcblock_backarrow_destination').addClass('searcblock_backarrow_destination_hide');   
            $('.searcblock_backarrow_destination').removeClass('searcblock_backarrow_destination_show');            
            $('.msl_region').addClass('msl_region_show');
            $('.msl_subregion').addClass('msl_subregion_hide');            
            $('.msl_destination').addClass('msl_destination_hide'); 
            $('.msl_region').removeClass('msl_region_hide');
            $('.msl_subregion').removeClass('msl_subregion_show');            
            $('.msl_destination').removeClass('msl_destination_show'); 
            $('.opt').removeClass('selected'); 
        });        
        $('.searcblock_backarrow_destination').click(function () {
            $('.searcblock_backarrow_destination').addClass('searcblock_backarrow_destination_hide');   
            $('.searcblock_backarrow_destination').removeClass('searcblock_backarrow_destination_show');     
            $('.searcblock_backarrow_subregion').addClass('searcblock_backarrow_subregion_show');   
            $('.searcblock_backarrow_subregion').removeClass('searcblock_backarrow_subregion_hide');
            $('.msl_region').addClass('msl_region_hide');
            $('.msl_subregion').addClass('msl_subregion_show');            
            $('.msl_destination').addClass('msl_destination_hide');  
            $('.msl_region').removeClass('msl_region_show');
            $('.msl_subregion').removeClass('msl_subregion_hide');            
            $('.msl_destination').removeClass('msl_destination_show');            
        }); 


//        if($('.rentalprice').hasClass('pre_rentalprice'))
//        {
//            $('.rentalprice').addClass('favhatte');  
//        }


});



;// for weeknumber activation
var selectedWeekNumbers = [];
var selectedWeekDays = [];
$.fn.datepicker = function (options) {
    if (!this.length) {
        return this;
    }

    if (!$.datepicker.initialized) {
        $(document).mousedown($.datepicker._checkExternalClick).find('body').append($.datepicker.dpDiv);
        $.datepicker.initialized = true;
    }

    var otherArgs = Array.prototype.slice.call(arguments, 1);
    var curr_cal = (this.ownerDocument != null) ? this.ownerDocument.parentWindow.currentOpenCalendar : this[0].id; // for browser compatibillity

    if (options && options.activateWeekNumbers) {
        if (options.activateWeekNumbers) {
            var _arrDepDates = calendarArrDepDates(options.minDate, options.maxDate);
            var _cad = _arrDepDates.arrivalDays;
            var _cdd = _arrDepDates.departureDays;

            $(document).on('mouseover', '.ui-datepicker-week-col', function () {
                if (isNumber($(this).text())) {
                    var monday = getMondayFromWeeknumber(parseInt($(this).text()), parseInt($('.ui-datepicker-year').val()));
                    var standardArrivalDate = getStartArrivalDate(monday);
                    var titleText;
                    try {
                        titleText = weekText + ': ' + $(this).text() + '\n' + arrivalText + ': ' + formatDate(standardArrivalDate) + '\n' + departureText + ': ' + formatDate(addDays(standardArrivalDate, 7));
                    } catch (e) {
                        titleText = formatDate(standardArrivalDate) + ' - ' + formatDate(addDays(standardArrivalDate, 7));
                    }
                    for (arrloop = 0; arrloop < 8; arrloop++) {
                        var currentDateHover = addDays(standardArrivalDate, arrloop);
                        if (currentDateHover > options.minDate) {
                            $('.' + formatDate(currentDateHover) + ' a').addClass('ui-state-current-hover');
                        }
                    }
                    $(this).addClass('week-col-hover').attr('title', titleText);
                }
            });

            $(document).on('mouseout', '.ui-datepicker-week-col', function () {
                if (isNumber($(this).text())) {
                    var monday = getMondayFromWeeknumber(parseInt($(this).text()), parseInt($('.ui-datepicker-year').val()));
                    var standardArrivalDate = getStartArrivalDate(monday);
                    for (arrloop = 0; arrloop < 8; arrloop++) {
                        var currentDateHover = addDays(standardArrivalDate, arrloop);
                        if (currentDateHover > options.minDate) {
                            $('.' + formatDate(currentDateHover) + ' a').removeClass('ui-state-current-hover');
                        }
                    }
                    $(this).removeClass('week-col-hover');
                }
            });

            $(document).on('click', '.ui-datepicker-week-col', function () {
                if (isNumber($(this).text())) {
                    var monday = getMondayFromWeeknumber(parseInt($(this).text()), parseInt($('.ui-datepicker-year').val()));
                    var selDates = formatDate(getStartArrivalDate(monday));
                    // console.log('curr_cal: ' + curr_cal + ' : ' + selDates);
                    $('select[id$=DropDownList_numberofdays]').val('7');
                    $('#' + curr_cal).val(selDates).trigger('change');
                    $('.ui-datepicker-close').trigger('click');
                }
            });
        }
    }
    if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget')) {
        return $.datepicker['_' + options + 'Datepicker'].apply($.datepicker, [this[0]].concat(otherArgs));
    }
    if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string') {
        return $.datepicker['_' + options + 'Datepicker'].apply($.datepicker, [this[0]].concat(otherArgs));
    }

    return this.each(function () {
        typeof options == 'string' ? $.datepicker['_' + options + 'Datepicker'].apply($.datepicker, [this].concat(otherArgs)) : $.datepicker._attachDatepicker(this, options);
    });
};