1
vendor: 15,088 bytes, lines 2-3
2/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ 3!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},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.5.1",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(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\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.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e: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},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==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&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}
vendor: 4,356 bytes, line 3
3: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];
vendor: 10,068 bytes, line 3
3if(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(D).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 D(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(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"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,j=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="pe
vendor: 8,547 bytes, line 3
3nding",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
vendor: 51,417 bytes, line 3
3=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=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function ke(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)ke(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=Ee;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 Ae(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.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,Ce)}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=Te.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=Te.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")&&Ae(t,"click",Ce),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(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?Ce:Ee,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:Ee,isPropagationStopped:Ee,isImmediatePropagationStopped:Ee,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ce,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ce,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ce,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:function(e){var t=e.button;return null==e.which&&be.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&we.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Ae(this,e,Se),!1},trigger:function(){return Ae(this,e),!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 ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(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=Ee),this.each(function(){S.event.remove(this,e,n,t)})}});var Ne=/<script|<style|<link/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,je=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(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 Pe(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&&De.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Pe(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"),Le)).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,He),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(je,""),u,l))}return n}function Re(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++)Oe(o[r],a[r]);else Oe(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 Re(this,e,!0)},remove:function(e){return Re(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 Pe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Pe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Pe(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&&!Ne.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 Pe(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 Me=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Ie=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},We=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},Fe=new RegExp(ne.join("|"),"i");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||Ie(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Me.test(a)&&Fe.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 $e(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",t.style.height="1px",n.style.height="9px",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=3<parseInt(r.height),re.removeChild(e)),a}}))}();var _e=["Webkit","Moz","ms"],ze=E.createElement("div").style,Ue={};function Xe(e){var t=S.cssProps[e]||Ue[e];return t||(e in ze?e:Ue[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in ze)return e}(e)||e)}var Ve=/^(none|table(?!-c[ea]).+)/,Ge=/^--/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(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 Ze(e,t,n){var r=Ie(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.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)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(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=Ge.test(t),l=e.style;if(u||(t=Xe(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 Ge.test(t)||(t=Xe(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[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!Ve.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):We(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Ie(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Je(0,t,s)}}}),S.cssHooks.marginLeft=$e(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-We(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=Je)}),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=Ie(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=et).prototype={constructor:et,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=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.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):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.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[Xe(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.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=et.prototype.init,S.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,S.fx.interval),S.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(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 ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),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:tt||ut(),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=ft.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,ct,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(ft,{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],ft.tweeners[n]=ft.tweeners[n]||[],ft.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],ot.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=ct(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?ft.prefilters.unshift(e):ft.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=ft(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&&at.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(lt(r,!0),e,t,n)}}),S.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("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(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),tt=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){nt||(nt=!0,st())},S.fx.stop=function(){nt=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)}})},rt=E.createElement("input"),it=E.createElement("select").appendChild(E.createElement("option")),rt.type="checkbox",y.checkOn=""!==rt.value,y.optSelected=it.selected,(rt=E.createElement("input")).value="t",rt.type="radio",y.radioValue="t"===rt.value;var pt,dt=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)?pt: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)}}),pt={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=dt[t]||S.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(" ")}function yt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(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):ht.test(e.nodeName)||gt.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,yt(this)))});if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(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,yt(this)))});if(!arguments.length)return this.attr("class","");if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=vt(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,yt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=mt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=yt(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<(" "+vt(yt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\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(xt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:vt(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 bt=/^(?:focusinfocus|focusoutblur)$/,wt=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&&!bt.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,bt.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,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),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 Tt=C.location,Ct={guid:Date.now()},Et=/\?/;S.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||S.error("Invalid XML: "+e),t};var St=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||St.test(n)?i(n,t):Dt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)Dt(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)Dt(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")&&Nt.test(this.nodeName)&&!At.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(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=E.createElement("a");function Ft(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 Bt(t,i,o,a){var s={},u=t===Mt;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 $t(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}Wt.href=Tt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,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?$t($t(e,S.ajaxSettings),t):$t(S.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),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=Ht.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||Tt.href)+"").replace(Pt,Tt.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=Wt.protocol+"//"+Wt.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)),Bt(Rt,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=!Ot.test(v.type),f=v.url.replace(qt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(jt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Et.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Lt,"$1"),o=(Et.test(f)?"&":"?")+"_="+Ct.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]?", "+It+"; 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=Bt(Mt,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)&&(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 _t={0:200,1223:204},zt=S.ajaxSettings.xhr();y.cors=!!zt&&"withCredentials"in zt,y.ajax=zt=!!zt,S.ajaxTransport(function(i){var o,a;if(y.cors||zt&&!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(_t[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 Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.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(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.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,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.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=vt(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):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),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]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.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 Gt=/^[\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(Gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Yt=C.jQuery,Qt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Qt),e&&C.jQuery===S&&(C.jQuery=Yt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
4 5/** 6 * jQuery Once Plugin v1.2 7 * http://plugins.jquery.com/project/once 8 * 9 * Dual licensed under the MIT and GPL licenses: 10 * http://www.opensource.org/licenses/mit-license.php 11 * http://www.gnu.org/licenses/gpl.html 12 */ 13 14(function ($) { 15 var cache = {}, uuid = 0; 16 17 /** 18 * Filters elements by whether they have not yet been processed. 19 * 20 * @param id 21 * (Optional) If this is a string, then it will be used as the CSS class 22 * name that is applied to the elements for determining whether it has 23 * already been processed. The elements will get a class in the form of 24 * "id-processed". 25 * 26 * If the id parameter is a function, it will be passed off to the fn 27 * parameter and the id will become a unique identifier, represented as a 28 * number. 29 * 30 * When the id is neither a string or a function, it becomes a unique 31 * identifier, depicted as a number. The element's class will then be 32 * represented in the form of "jquery-once-#-processed". 33 * 34 * Take note that the id must be valid for usage as an element's class name. 35 * @param fn 36 * (Optional) If given, this function will be called for each element that 37 * has not yet been processed. The function's return value follows the same 38 * logic as $.each(). Returning true will continue to the next matched 39 * element in the set, while returning false will entirely break the 40 * iteration. 41 */ 42 $.fn.once = function (id, fn) { 43 if (typeof id != 'string') { 44 // Generate a numeric ID if the id passed can't be used as a CSS class. 45 if (!(id in cache)) { 46 cache[id] = ++uuid; 47 } 48 // When the fn parameter is not passed, we interpret it from the id. 49 if (!fn) { 50 fn = id; 51 } 52 id = 'jquery-once-' + cache[id]; 53 } 54 // Remove elements from the set that have already been processed. 55 var name = id + '-processed'; 56 var elements = this.not('.' + name).addClass(name); 57 58 return $.isFunction(fn) ? elements.each(fn) : elements; 59 }; 60 61 /** 62 * Filters elements that have been processed once already. 63 * 64 * @param id 65 * A required string representing the name of the class which should be used 66 * when filtering the elements. This only filters elements that have already 67 * been processed by the once function. The id should be the same id that 68 * was originally passed to the once() function. 69 * @param fn 70 * (Optional) If given, this function will be called for each element that 71 * has not yet been processed. The function's return value follows the same 72 * logic as $.each(). Returning true will continue to the next matched 73 * element in the set, while returning false will entirely break the 74 * iteration. 75 */ 76 $.fn.removeOnce = function (id, fn) { 77 var name = id + '-processed'; 78 var elements = this.filter('.' + name).removeClass(name); 79 80 return $.isFunction(fn) ? elements.each(fn) : elements; 81 }; 82})(jQuery); 83; 84 85var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'locale': {} }; 86 87var $ = jQuery; 88 89(function ($) { 90 91 /** 92 * Override jQuery.fn.init to guard against XSS attacks. 93 * 94 * See http://bugs.jquery.com/ticket/9521 95 */ 96 var jquery_init = $.fn.init; 97 $.fn.init = function (selector, context, rootjQuery) { 98 // If the string contains a "#" before a "<", treat it as invalid HTML. 99 if (selector && typeof selector === 'string') { 100 var hash_position = selector.indexOf('#'); 101 if (hash_position >= 0) { 102 var bracket_position = selector.indexOf('<'); 103 if (bracket_position > hash_position) { 104 throw 'Syntax error, unrecognized expression: ' + selector; 105 } 106 } 107 } 108 return jquery_init.call(this, selector, context, rootjQuery); 109 }; 110 $.fn.init.prototype = jquery_init.prototype; 111 112 /** 113 * Attach all registered behaviors to a page element. 114 * 115 * Behaviors are event-triggered actions that attach to page elements, enhancing 116 * default non-JavaScript UIs. Behaviors are registered in the Drupal.behaviors 117 * object using the method 'attach' and optionally also 'detach' as follows: 118 * @code 119 * Drupal.behaviors.behaviorName = { 120 * attach: function (context, settings) { 121 * ... 122 * }, 123 * detach: function (context, settings, trigger) { 124 * ... 125 * } 126 * }; 127 * @endcode 128 * 129 * Drupal.attachBehaviors is added below to the jQuery ready event and so 130 * runs on initial page load. Developers implementing AHAH/Ajax in their 131 * solutions should also call this function after new page content has been 132 * loaded, feeding in an element to be processed, in order to attach all 133 * behaviors to the new content. 134 * 135 * Behaviors should use 136 * @code 137 * $(selector).once('behavior-name', function () { 138 * ... 139 * }); 140 * @endcode 141 * to ensure the behavior is attached only once to a given element. (Doing so 142 * enables the reprocessing of given elements, which may be needed on occasion 143 * despite the ability to limit behavior attachment to a particular element.) 144 * 145 * @param context 146 * An element to attach behaviors to. If none is given, the document element 147 * is used. 148 * @param settings
149 * An object containing settings for the current context. If none given, the 150 * global Drupal.settings object is used. 151 */ 152 Drupal.attachBehaviors = function (context, settings) { 153 context = context || document; 154 settings = settings || Drupal.settings; 155 // Execute all of them. 156 $.each(Drupal.behaviors, function () { 157 if ($.isFunction(this.attach)) { 158 this.attach(context, settings); 159 } 160 }); 161 }; 162 163 /** 164 * Detach registered behaviors from a page element. 165 * 166 * Developers implementing AHAH/Ajax in their solutions should call this 167 * function before page content is about to be removed, feeding in an element 168 * to be processed, in order to allow special behaviors to detach from the 169 * content. 170 * 171 * Such implementations should look for the class name that was added in their 172 * corresponding Drupal.behaviors.behaviorName.attach implementation, i.e. 173 * behaviorName-processed, to ensure the behavior is detached only from 174 * previously processed elements. 175 * 176 * @param context 177 * An element to detach behaviors from. If none is given, the document element 178 * is used. 179 * @param settings 180 * An object containing settings for the current context. If none given, the 181 * global Drupal.settings object is used. 182 * @param trigger 183 * A string containing what's causing the behaviors to be detached. The 184 * possible triggers are: 185 * - unload: (default) The context element is being removed from the DOM. 186 * - move: The element is about to be moved within the DOM (for example, 187 * during a tabledrag row swap). After the move is completed, 188 * Drupal.attachBehaviors() is called, so that the behavior can undo 189 * whatever it did in response to the move. Many behaviors won't need to 190 * do anything simply in response to the element being moved, but because 191 * IFRAME elements reload their "src" when being moved within the DOM, 192 * behaviors bound to IFRAME elements (like WYSIWYG editors) may need to 193 * take some action. 194 * - serialize: When an Ajax form is submitted, this is called with the 195 * form as the context. This provides every behavior within the form an 196 * opportunity to ensure that the field elements have correct content 197 * in them before the form is serialized. The canonical use-case is so 198 * that WYSIWYG editors can update the hidden textarea to which they are 199 * bound. 200 * 201 * @see Drupal.attachBehaviors 202 */ 203 Drupal.detachBehaviors = function (context, settings, trigger) { 204 context = context || document; 205 settings = settings || Drupal.settings; 206 trigger = trigger || 'unload'; 207 // Execute all of them. 208 $.each(Drupal.behaviors, function () { 209 if ($.isFunction(this.detach)) { 210 this.detach(context, settings, trigger); 211 } 212 }); 213 }; 214 215 /** 216 * Encode special characters in a plain-text string for display as HTML. 217 * 218 * @ingroup sanitization 219 */ 220 Drupal.checkPlain = function (str) { 221 var character, regex, 222 replace = { '&': '&', '"': '"', '<': '<', '>': '>' }; 223 str = String(str); 224 for (character in replace) { 225 if (replace.hasOwnProperty(character)) { 226 regex = new RegExp(character, 'g'); 227 str = str.replace(regex, replace[character]); 228 } 229 } 230 return str; 231 }; 232 233 /** 234 * Replace placeholders with sanitized values in a string. 235 * 236 * @param str 237 * A string with placeholders. 238 * @param args 239 * An object of replacements pairs to make. Incidences of any key in this 240 * array are replaced with the corresponding value. Based on the first 241 * character of the key, the value is escaped and/or themed: 242 * - !variable: inserted as is 243 * - @variable: escape plain text to HTML (Drupal.checkPlain) 244 * - %variable: escape text and theme as a placeholder for user-submitted 245 * content (checkPlain + Drupal.theme('placeholder')) 246 * 247 * @see Drupal.t() 248 * @ingroup sanitization 249 */ 250 Drupal.formatString = function(str, args) { 251 // Transform arguments before inserting them. 252 for (var key in args) { 253 switch (key.charAt(0)) { 254 // Escaped only. 255 case '@': 256 args[key] = Drupal.checkPlain(args[key]); 257 break; 258 // Pass-through. 259 case '!': 260 break; 261 // Escaped and placeholder. 262 case '%': 263 default: 264 args[key] = Drupal.theme('placeholder', args[key]); 265 break; 266 } 267 str = str.replace(key, args[key]); 268 } 269 return str; 270 }; 271 272 /** 273 * Translate strings to the page language or a given language. 274 * 275 * See the documentation of the server-side t() function for further details. 276 * 277 * @param str 278 * A string containing the English string to translate. 279 * @param args 280 * An object of replacements pairs to make after translation. Incidences 281 * of any key in this array are replaced with the corresponding value. 282 * See Drupal.formatString(). 283 * 284 * @param options 285 * - 'context' (defaults to the empty context): The context the source string 286 * belongs to. 287 * 288 * @return 289 * The translated string. 290 */ 291 Drupal.t = function (str, args, options) { 292 options = options || {}; 293 options.context = options.context || ''; 294 295 // Fetch the localized version of the string. 296 if (Drupal.locale.strings && Drupal.locale.strings[options.context] && Drupal.locale.strings[options.context][str]) { 297 str = Drupal.locale.strings[options.context][str]; 298 } 299 300 if (args) { 301 str = Drupal.formatString(str, args); 302 } 303 return str; 304 }; 305 306 /** 307 * Format a string containing a count of items. 308 * 309 * This function ensures that the string is pluralized correctly. Since Drupal.t() is 310 * called by this function, make sure not to pass already-localized strings to it. 311 * 312 * See the documentation of the server-side format_plural() function for further details. 313 * 314 * @param count 315 * The item count to display. 316 * @param singular 317 * The string for the singular case. Please make sure it is clear this is 318 * singular, to ease translation (e.g. use "1 new comment" instead of "1 new"). 319 * Do not use @count in the singular string. 320 * @param plural 321 * The string for the plural case. Please make sure it is clear this is plural, 322 * to ease translation. Use @count in place of the item count, as in "@count 323 * new comments". 324 * @param args 325 * An object of replacements pairs to make after translation. Incidences 326 * of any key in this array are replaced with the corresponding value. 327 * See Drupal.formatString(). 328 * Note that you do not need to include @count in this array.
329 * This replacement is done automatically for the plural case. 330 * @param options 331 * The options to pass to the Drupal.t() function. 332 * @return 333 * A translated string. 334 */ 335 Drupal.formatPlural = function (count, singular, plural, args, options) { 336 var args = args || {}; 337 args['@count'] = count; 338 // Determine the index of the plural form. 339 var index = Drupal.locale.pluralFormula ? Drupal.locale.pluralFormula(args['@count']) : ((args['@count'] == 1) ? 0 : 1); 340 341 if (index == 0) { 342 return Drupal.t(singular, args, options); 343 } 344 else if (index == 1) { 345 return Drupal.t(plural, args, options); 346 } 347 else { 348 args['@count[' + index + ']'] = args['@count']; 349 delete args['@count']; 350 return Drupal.t(plural.replace('@count', '@count[' + index + ']'), args, options); 351 } 352 }; 353 354 /** 355 * Returns the passed in URL as an absolute URL. 356 * 357 * @param url 358 * The URL string to be normalized to an absolute URL. 359 * 360 * @return 361 * The normalized, absolute URL. 362 * 363 * @see https://github.com/angular/angular.js/blob/v1.4.4/src/ng/urlUtils.js 364 * @see https://grack.com/blog/2009/11/17/absolutizing-url-in-javascript 365 * @see https://github.com/jquery/jquery-ui/blob/1.11.4/ui/tabs.js#L53 366 */ 367 Drupal.absoluteUrl = function (url) { 368 var urlParsingNode = document.createElement('a'); 369 370 // Decode the URL first; this is required by IE <= 6. Decoding non-UTF-8 371 // strings may throw an exception. 372 try { 373 url = decodeURIComponent(url); 374 } catch (e) {} 375 376 urlParsingNode.setAttribute('href', url); 377 378 // IE <= 7 normalizes the URL when assigned to the anchor node similar to 379 // the other browsers. 380 return urlParsingNode.cloneNode(false).href; 381 }; 382 383 /** 384 * Returns true if the URL is within Drupal's base path. 385 * 386 * @param url 387 * The URL string to be tested. 388 * 389 * @return 390 * Boolean true if local. 391 * 392 * @see https://github.com/jquery/jquery-ui/blob/1.11.4/ui/tabs.js#L58 393 */ 394 Drupal.urlIsLocal = function (url) { 395 // Always use browser-derived absolute URLs in the comparison, to avoid 396 // attempts to break out of the base path using directory traversal. 397 var absoluteUrl = Drupal.absoluteUrl(url); 398 var protocol = location.protocol; 399 400 // Consider URLs that match this site's base URL but use HTTPS instead of HTTP 401 // as local as well. 402 if (protocol === 'http:' && absoluteUrl.indexOf('https:') === 0) { 403 protocol = 'https:'; 404 } 405 var baseUrl = protocol + '//' + location.host + Drupal.settings.basePath.slice(0, -1); 406 407 // Decoding non-UTF-8 strings may throw an exception. 408 try { 409 absoluteUrl = decodeURIComponent(absoluteUrl); 410 } catch (e) {} 411 try { 412 baseUrl = decodeURIComponent(baseUrl); 413 } catch (e) {} 414 415 // The given URL matches the site's base URL, or has a path under the site's 416 // base URL. 417 return absoluteUrl === baseUrl || absoluteUrl.indexOf(baseUrl + '/') === 0; 418 }; 419 420 /** 421 * Generate the themed representation of a Drupal object. 422 * 423 * All requests for themed output must go through this function. It examines 424 * the request and routes it to the appropriate theme function. If the current 425 * theme does not provide an override function, the generic theme function is 426 * called. 427 * 428 * For example, to retrieve the HTML for text that should be emphasized and 429 * displayed as a placeholder inside a sentence, call 430 * Drupal.theme('placeholder', text). 431 * 432 * @param func 433 * The name of the theme function to call. 434 * @param ... 435 * Additional arguments to pass along to the theme function. 436 * @return 437 * Any data the theme function returns. This could be a plain HTML string, 438 * but also a complex object. 439 */ 440 Drupal.theme = function (func) { 441 var args = Array.prototype.slice.apply(arguments, [1]); 442 443 return (Drupal.theme[func] || Drupal.theme.prototype[func]).apply(this, args); 444 }; 445 446 /** 447 * Freeze the current body height (as minimum height). Used to prevent 448 * unnecessary upwards scrolling when doing DOM manipulations. 449 */ 450 Drupal.freezeHeight = function () { 451 Drupal.unfreezeHeight(); 452 $('<div id="freeze-height"></div>').css({ 453 position: 'absolute', 454 top: '0px', 455 left: '0px', 456 width: '1px', 457 height: $('body').css('height') 458 }).appendTo('body'); 459 }; 460 461 /** 462 * Unfreeze the body height. 463 */ 464 Drupal.unfreezeHeight = function () { 465 $('#freeze-height').remove(); 466 }; 467 468 /** 469 * Encodes a Drupal path for use in a URL. 470 * 471 * For aesthetic reasons slashes are not escaped. 472 */ 473 Drupal.encodePath = function (item, uri) { 474 uri = uri || location.href; 475 return encodeURIComponent(item).replace(/%2F/g, '/'); 476 }; 477 478 /** 479 * Get the text selection in a textarea. 480 */ 481 Drupal.getSelection = function (element) { 482 if (typeof element.selectionStart != 'number' && document.selection) { 483 // The current selection. 484 var range1 = document.selection.createRange(); 485 var range2 = range1.duplicate(); 486 // Select all text. 487 range2.moveToElementText(element); 488 // Now move 'dummy' end point to end point of original range.
489 range2.setEndPoint('EndToEnd', range1); 490 // Now we can calculate start and end points. 491 var start = range2.text.length - range1.text.length; 492 var end = start + range1.text.length; 493 return { 'start': start, 'end': end }; 494 } 495 return { 'start': element.selectionStart, 'end': element.selectionEnd }; 496 }; 497 498 /** 499 * Add a global variable which determines if the window is being unloaded. 500 * 501 * This is primarily used by Drupal.displayAjaxError(). 502 */ 503 Drupal.beforeUnloadCalled = false; 504 $(window).bind('beforeunload pagehide', function () { 505 Drupal.beforeUnloadCalled = true; 506 }); 507 508 /** 509 * Displays a JavaScript error from an Ajax response when appropriate to do so. 510 */ 511 Drupal.displayAjaxError = function (message) { 512 // Skip displaying the message if the user deliberately aborted (for example, 513 // by reloading the page or navigating to a different page) while the Ajax 514 // request was still ongoing. See, for example, the discussion at 515 // http://stackoverflow.com/questions/699941/handle-ajax-error-when-a-user-clicks-refresh. 516 if (!Drupal.beforeUnloadCalled) { 517 alert(message); 518 } 519 }; 520 521 /** 522 * Build an error message from an Ajax response. 523 */ 524 Drupal.ajaxError = function (xmlhttp, uri, customMessage) { 525 var statusCode, statusText, pathText, responseText, readyStateText, message; 526 if (xmlhttp.status) { 527 statusCode = "\n" + Drupal.t("An AJAX HTTP error occurred.") + "\n" + Drupal.t("HTTP Result Code: !status", {'!status': xmlhttp.status}); 528 } 529 else { 530 statusCode = "\n" + Drupal.t("An AJAX HTTP request terminated abnormally."); 531 } 532 statusCode += "\n" + Drupal.t("Debugging information follows."); 533 pathText = "\n" + Drupal.t("Path: !uri", {'!uri': uri} ); 534 statusText = ''; 535 // In some cases, when statusCode == 0, xmlhttp.statusText may not be defined. 536 // Unfortunately, testing for it with typeof, etc, doesn't seem to catch that 537 // and the test causes an exception. So we need to catch the exception here. 538 try { 539 statusText = "\n" + Drupal.t("StatusText: !statusText", {'!statusText': $.trim(xmlhttp.statusText)}); 540 } 541 catch (e) {} 542 543 responseText = ''; 544 // Again, we don't have a way to know for sure whether accessing 545 // xmlhttp.responseText is going to throw an exception. So we'll catch it. 546 try { 547 responseText = "\n" + Drupal.t("ResponseText: !responseText", {'!responseText': $.trim(xmlhttp.responseText) } ); 548 } catch (e) {} 549 550 // Make the responseText more readable by stripping HTML tags and newlines. 551 responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi,""); 552 responseText = responseText.replace(/[\n]+\s+/g,"\n"); 553 554 // We don't need readyState except for status == 0. 555 readyStateText = xmlhttp.status == 0 ? ("\n" + Drupal.t("ReadyState: !readyState", {'!readyState': xmlhttp.readyState})) : ""; 556 557 // Additional message beyond what the xmlhttp object provides. 558 customMessage = customMessage ? ("\n" + Drupal.t("CustomMessage: !customMessage", {'!customMessage': customMessage})) : ""; 559 560 message = statusCode + pathText + statusText + customMessage + responseText + readyStateText; 561 return message; 562 }; 563 564// Class indicating that JS is enabled; used for styling purpose. 565 $('html').addClass('js'); 566 567// 'js enabled' cookie. 568 document.cookie = 'has_js=1; path=/; secure=true; SameSite=Strict'; 569 570 /** 571 * Additions to jQuery.support. 572 */ 573 $(function () { 574 /** 575 * Boolean indicating whether or not position:fixed is supported. 576 */ 577 if (jQuery.support.positionFixed === undefined) { 578 var el = $('<div style="position:fixed; top:10px" />').appendTo(document.body); 579 jQuery.support.positionFixed = el[0].offsetTop === 10; 580 el.remove(); 581 } 582 }); 583 584//Attach all behaviors. 585 $(function () { 586 Drupal.attachBehaviors(document, Drupal.settings); 587 }); 588 589 /** 590 * The default themes. 591 */ 592 Drupal.theme.prototype = { 593 594 /** 595 * Formats text for emphasized display in a placeholder inside a sentence. 596 * 597 * @param str 598 * The text to format (plain-text). 599 * @return 600 * The formatted text (html). 601 */ 602 placeholder: function (str) { 603 return '<em class="placeholder">' + Drupal.checkPlain(str) + '</em>'; 604 } 605 }; 606 607})(jQuery); 608; 609 610/*jslint browser: true */ /*global jQuery: true */ 611 612/** 613 * jQuery Cookie plugin 614 * 615 * Copyright (c) 2010 Klaus Hartl (stilbuero.de) 616 * Dual licensed under the MIT and GPL licenses: 617 * http://www.opensource.org/licenses/mit-license.php 618 * http://www.gnu.org/licenses/gpl.html 619 * 620 */ 621 622// TODO JsDoc 623 624/** 625 * Create a cookie with the given key and value and other optional parameters. 626 * 627 * @example $.cookie('the_cookie', 'the_value'); 628 * @desc Set the value of a cookie. 629 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); 630 * @desc Create a cookie with all available options. 631 * @example $.cookie('the_cookie', 'the_value'); 632 * @desc Create a session cookie. 633 * @example $.cookie('the_cookie', null); 634 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain 635 * used when the cookie was set. 636 * 637 * @param String key The key of the cookie. 638 * @param String value The value of the cookie. 639 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. 640 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. 641 * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. 642 * If set to null or omitted, the cookie will be a session cookie and will not be retained 643 * when the the browser exits. 644 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). 645 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). 646 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will 647 * require a secure protocol (like HTTPS). 648 * @type undefined 649 * 650 * @name $.cookie 651 * @cat Plugins/Cookie 652 * @author Klaus Hartl/[email protected] 653 */ 654 655/** 656 * Get the value of a cookie with the given key. 657 * 658 * @example $.cookie('the_cookie'); 659 * @desc Get the value of a cookie. 660 * 661 * @param String key The key of the cookie. 662 * @return The value of the cookie.
663 * @type String 664 * 665 * @name $.cookie 666 * @cat Plugins/Cookie 667 * @author Klaus Hartl/[email protected] 668 */ 669jQuery.cookie = function (key, value, options) { 670 671 // key and value given, set cookie... 672 if (arguments.length > 1 && (value === null || typeof value !== "object")) { 673 options = jQuery.extend({}, options); 674 675 if (value === null) { 676 options.expires = -1; 677 } 678 679 if (typeof options.expires === 'number') { 680 var days = options.expires, t = options.expires = new Date(); 681 t.setDate(t.getDate() + days); 682 } 683 684 return (document.cookie = [ 685 encodeURIComponent(key), '=', 686 options.raw ? String(value) : encodeURIComponent(String(value)), 687 options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 688 options.path ? '; path=' + options.path : '', 689 options.domain ? '; domain=' + options.domain : '', 690 options.secure ? '; secure' : '' 691 ].join('')); 692 } 693 694 // key and possibly options given, get cookie... 695 options = value || {}; 696 var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent; 697 return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null; 698}; 699; 700(function ($) { 701 702 Drupal.extlink = Drupal.extlink || {}; 703 704 Drupal.extlink.attach = function (context, settings) { 705 if (!settings.hasOwnProperty('extlink')) { 706 return; 707 } 708 709 // Strip the host name down, removing ports, subdomains, or www. 710 var pattern = /^(([^\/:]+?\.)*)([^\.:]{4,})((\.[a-z]{1,4})*)(:[0-9]{1,5})?$/; 711 var host = window.location.host.replace(pattern, '$3$4'); 712 var subdomain = window.location.host.replace(pattern, '$1'); 713 714 // Determine what subdomains are considered internal. 715 var subdomains; 716 if (settings.extlink.extSubdomains) { 717 subdomains = "([^/]*\\.)?"; 718 } 719 else if (subdomain == 'www.' || subdomain == '') { 720 subdomains = "(www\\.)?"; 721 } 722 else { 723 subdomains = subdomain.replace(".", "\\."); 724 } 725 726 // Build regular expressions that define an internal link. 727 var internal_link = new RegExp("^https?://" + subdomains + host, "i"); 728 729 // Extra internal link matching. 730 var extInclude = false; 731 if (settings.extlink.extInclude) { 732 extInclude = new RegExp(settings.extlink.extInclude.replace(/\\/, '\\'), "i"); 733 } 734 735 // Extra external link matching. 736 var extExclude = false; 737 if (settings.extlink.extExclude) { 738 extExclude = new RegExp(settings.extlink.extExclude.replace(/\\/, '\\'), "i"); 739 } 740 741 // Extra external link CSS selector exclusion. 742 var extCssExclude = false; 743 if (settings.extlink.extCssExclude) { 744 extCssExclude = settings.extlink.extCssExclude; 745 } 746 747 // Extra external link CSS selector explicit. 748 var extCssExplicit = false; 749 if (settings.extlink.extCssExplicit) { 750 extCssExplicit = settings.extlink.extCssExplicit; 751 } 752 753 // Find all links which are NOT internal and begin with http as opposed 754 // to ftp://, javascript:, etc. other kinds of links. 755 // When operating on the 'this' variable, the host has been appended to 756 // all links by the browser, even local ones. 757 // In jQuery 1.1 and higher, we'd use a filter method here, but it is not 758 // available in jQuery 1.0 (Drupal 5 default). 759 var external_links = new Array(); 760 var mailto_links = new Array(); 761 $("a:not(." + settings.extlink.extClass + ", ." + settings.extlink.mailtoClass + "), area:not(." + settings.extlink.extClass + ", ." + settings.extlink.mailtoClass + ")", context).each(function(el) { 762 try { 763 var url = this.href.toLowerCase(); 764 if (url.indexOf('http') == 0 765 && ((!url.match(internal_link) && !(extExclude && url.match(extExclude))) || (extInclude && url.match(extInclude)))
766 && !(extCssExclude && $(this).parents(extCssExclude).length > 0) 767 && !(extCssExplicit && $(this).parents(extCssExplicit).length < 1)) { 768 external_links.push(this); 769 } 770 // Do not include area tags with begin with mailto: (this prohibits 771 // icons from being added to image-maps). 772 else if (this.tagName != 'AREA' 773 && url.indexOf('mailto:') == 0 774 && !(extCssExclude && $(this).parents(extCssExclude).length > 0) 775 && !(extCssExplicit && $(this).parents(extCssExplicit).length < 1)) { 776 mailto_links.push(this); 777 } 778 } 779 // IE7 throws errors often when dealing with irregular links, such as: 780 // <a href="node/10"></a> Empty tags. 781 // <a href="http://user:[email protected]">example</a> User:pass syntax. 782 catch (error) { 783 return false; 784 } 785 }); 786 787 if (settings.extlink.extClass) { 788 Drupal.extlink.applyClassAndSpan(external_links, settings.extlink.extClass); 789 } 790 791 if (settings.extlink.mailtoClass) { 792 Drupal.extlink.applyClassAndSpan(mailto_links, settings.extlink.mailtoClass); 793 } 794 795 if (settings.extlink.extTarget) { 796 // Apply the target attribute to all links. 797 $(external_links).attr('target', settings.extlink.extTarget); 798 } 799 800 Drupal.extlink = Drupal.extlink || {}; 801 802 // Set up default click function for the external links popup. This should be 803 // overridden by modules wanting to alter the popup. 804 Drupal.extlink.popupClickHandler = Drupal.extlink.popupClickHandler || function() { 805 if (settings.extlink.extAlert) { 806 return confirm(settings.extlink.extAlertText); 807 } 808 } 809 810 $(external_links).click(function(e) { 811 return Drupal.extlink.popupClickHandler(e); 812 }); 813 }; 814 815 /** 816 * Apply a class and a trailing <span> to all links not containing images. 817 * 818 * @param links 819 * An array of DOM elements representing the links. 820 * @param class_name 821 * The class to apply to the links. 822 */ 823 Drupal.extlink.applyClassAndSpan = function (links, class_name) { 824 var $links_to_process; 825 if (Drupal.settings.extlink.extImgClass){ 826 $links_to_process = $(links); 827 } 828 else { 829 var links_with_images = $(links).find('img').parents('a'); 830 $links_to_process = $(links).not(links_with_images); 831 } 832 $links_to_process.addClass(class_name); 833 var i; 834 var length = $links_to_process.length; 835 for (i = 0; i < length; i++) { 836 var $link = $($links_to_process[i]); 837 if ($link.css('display') == 'inline' || $link.css('display') == 'inline-block') { 838 if (class_name == Drupal.settings.extlink.mailtoClass) { 839 $link.append('<span class="' + class_name + '"><span class="element-invisible"> ' + Drupal.settings.extlink.mailtoLabel + '</span></span>'); 840 } 841 else { 842 $link.append('<span class="' + class_name + '"><span class="element-invisible"> ' + Drupal.settings.extlink.extLabel + '</span></span>'); 843 } 844 } 845 } 846 }; 847 848 Drupal.behaviors.extlink = Drupal.behaviors.extlink || {}; 849 Drupal.behaviors.extlink.attach = function (context, settings) { 850 // Backwards compatibility, for the benefit of modules overriding extlink 851 // functionality by defining an "extlinkAttach" global function. 852 if (typeof extlinkAttach === 'function') { 853 extlinkAttach(context); 854 } 855 else { 856 Drupal.extlink.attach(context, settings); 857 } 858 }; 859 860})(jQuery); 861; 862const readspeakerLanguages = { 863 'ar': { 864 'dictionary.readMore': 'ÙØ±Ø§Ø¡Ø© اÙÙ Ø²ÙØ¯', 865 'readspeaker.pause': 'Ø§Ø³ØªØ±Ø§ØØ©' 866 }, 867 'bg': { 868 'dictionary.readMore': 'ÐÑоÑеÑеÑе повеÑе', 869 'readspeaker.pause': 'ÐÑобив' 870 }, 871 'de': { 872 'dictionary.readMore': 'Mehr lesen', 873 'readspeaker.pause': 'Pause' 874 }, 875 'es': { 876 'dictionary.readMore': 'Leer más', 877 'readspeaker.pause': 'Pausa' 878 }, 879 'en': { 880 'dictionary.readMore': 'Read more', 881 'readspeaker.pause': 'Pause' 882 }, 883 'fa': { 884 'dictionary.readMore': 'Ø®ÙØ§ÙØ¯Ù Ù Ø·Ø§ÙØ¨ Ø¨ÛØ´ØªØ±', 885 'readspeaker.pause': 'Ù Ú©Ø«' 886 }, 887 'fr': { 888 'dictionary.readMore': 'Pour en savoir plus', 889 'readspeaker.pause': 'Pause' 890 }, 891 'nl': { 892 'dictionary.readMore': 'Lees meer', 893 'readspeaker.pause': 'Pauze' 894 }, 895 'pl': { 896 'dictionary.readMore': 'Czytaj dalej', 897 'readspeaker.pause': 'Przerwa' 898 }, 899 'ro': { 900 'dictionary.readMore': 'CitiÈi mai mult', 901 'readspeaker.pause': 'PauzÄ' 902 }, 903 'ru': { 904 'dictionary.readMore': 'ÐодÑобнее', 905 'readspeaker.pause': 'ÐаÑза' 906 }, 907 'sq': { 908 'dictionary.readMore': 'Lexoni më shumë', 909 'readspeaker.pause': 'Pauzë' 910 },
911 'tr': { 912 'dictionary.readMore': 'Read More', 913 'readspeaker.pause': 'Mola' 914 }, 915 'uk': { 916 'dictionary.readMore': 'ÐÑоÑиÑаÑи бÑлÑÑе', 917 'readspeaker.pause': 'ÐаÑза' 918 }, 919} 920var currentLanguage = document.documentElement.lang; 921var langreadmore = readspeakerLanguages[currentLanguage]['dictionary.readMore'] ?? 'Read more'; 922var langpause = readspeakerLanguages[currentLanguage]['readspeaker.pause'] ?? 'Pause'; 923 924var delay = (function () { 925 var timer = 0; 926 return function (callback, ms) { 927 clearTimeout(timer); 928 timer = setTimeout(callback, ms); 929 }; 930})(); 931 932jQuery(document).ready(function () { 933 /* 934 * Save selected language to cookie 935 */ 936 var $languageSwitcher = jQuery( 937 ".landingspage-language-switcher, .language-switch .available-languages" 938 ); 939 940 if ($languageSwitcher.length) { 941 $languageSwitcher.find("a[data-lang-code]").on("click", function (event) { 942 event.preventDefault(); 943 var elem = jQuery(this), 944 langCode = elem.data("lang-code"); 945 946 if (langCode !== "" && langCode.match(/^([a-zA-Z]{2})$/gi)) { 947 jQuery.cookie("selectedLanguage", langCode, { 948 expires: 7, 949 secure: true, 950 path: "/", 951 }); 952 } 953 954 if (elem[0].href) { 955 window.location.href = elem[0].href; 956 } 957 }); 958 } 959 960 /* 961 * Search autocomplete 962 */ 963 var searchSuggestRequestTimer = null; 964 var currentRequest = null; 965 966 /* TODO axel 967 jQuery('#edit-input.header-search') 968 .on('input', function() { 969 var val = jQuery(this).val(); 970 971 if (val.length >= 3) { 972 var uri = jQuery('#ajax-search-uri').data('url'); 973 974 searchSuggestRequestTimer = setTimeout(function() { 975 currentRequest = jQuery.ajax({ 976 url: uri+'?no_cache=1&tx_kesearch_pi1%5Bsword%5D='+val, 977 beforeSend : function() { 978 if (currentRequest != null) { 979 currentRequest.abort(); 980 } 981 }, 982 }).done(function(data){ 983 jQuery('#autocomplete').remove(); 984 jQuery('.form-item.form-type-textfield.header-search-wrapper').prepend(data); 985 }); 986 }, 200); 987 } 988 }) 989 .on('keydown', function () { 990 clearTimeout(searchSuggestRequestTimer); 991 }); 992 993 994 */ 995}); 996 997Drupal.locale = { 998 strings: { "": { "Read more": "Mehr lesen", Menu: "Men\u00fc" } }, 999}; 1000/*! 1001 Colorbox 1.5.14 1002 license: MIT 1003 http://www.jacklmoore.com/colorbox 1004 */ 1005(function ($, document, window) { 1006 var // Default settings object. 1007 // See http://jacklmoore.com/colorbox for details. 1008 defaults = { 1009 // data sources 1010 html: false, 1011 photo: false, 1012 iframe: false, 1013 inline: false, 1014 1015 // behavior and appearance 1016 transition: "elastic", 1017 speed: 300, 1018 fadeOut: 300, 1019 width: false, 1020 initialWidth: "600", 1021 innerWidth: false, 1022 maxWidth: false, 1023 height: false, 1024 initialHeight: "450", 1025 innerHeight: false, 1026 maxHeight: false, 1027 scalePhotos: true, 1028 scrolling: true, 1029 opacity: 0.9, 1030 preloading: true, 1031 className: false, 1032 overlayClose: true, 1033 escKey: true, 1034 arrowKey: true, 1035 top: false, 1036 bottom: false, 1037 left: false, 1038 right: false, 1039 fixed: false, 1040 data: undefined, 1041 closeButton: true, 1042 fastIframe: true, 1043 open: false, 1044 reposition: true, 1045 loop: true, 1046 slideshow: false, 1047 slideshowAuto: true, 1048 slideshowSpeed: 2500, 1049 slideshowStart: "start slideshow", 1050 slideshowStop: "stop slideshow", 1051 photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i, 1052 1053 // alternate image paths for high-res displays 1054 retinaImage: false, 1055 retinaUrl: false, 1056 retinaSuffix: "@2x.$1", 1057 1058 // internationalization 1059 current: "image {current} of {total}", 1060 previous: "previous", 1061 next: "next", 1062 close: "close", 1063 xhrError: "This content failed to load.", 1064 imgError: "This image failed to load.", 1065 1066 // accessbility 1067 returnFocus: true, 1068 trapFocus: true, 1069 1070 // callbacks 1071 onOpen: false, 1072 onLoad: false, 1073 onComplete: false, 1074 onCleanup: false,
vendor: 9,670 bytes, lines 1075-1441
1075 onClosed: false, 1076 1077 rel: function () { 1078 return this.rel; 1079 }, 1080 href: function () { 1081 // using this.href would give the absolute url, when the href may have been inteded as a selector (e.g. '#container') 1082 return $(this).attr("href"); 1083 }, 1084 title: function () { 1085 return this.title; 1086 }, 1087 }, 1088 // Abstracting the HTML and event identifiers for easy rebranding 1089 colorbox = "colorbox", 1090 prefix = "cbox", 1091 boxElement = prefix + "Element", 1092 // Events 1093 event_open = prefix + "_open", 1094 event_load = prefix + "_load", 1095 event_complete = prefix + "_complete", 1096 event_cleanup = prefix + "_cleanup", 1097 event_closed = prefix + "_closed", 1098 event_purge = prefix + "_purge", 1099 // Cached jQuery Object Variables 1100 $overlay, 1101 $box, 1102 $wrap, 1103 $content, 1104 $topBorder, 1105 $leftBorder, 1106 $rightBorder, 1107 $bottomBorder, 1108 $related, 1109 $window, 1110 $loaded, 1111 $loadingBay, 1112 $loadingOverlay, 1113 $title, 1114 $current, 1115 $slideshow, 1116 $next, 1117 $prev, 1118 $close, 1119 $groupControls, 1120 $events = $("<a/>"), // $({}) would be prefered, but there is an issue with jQuery 1.4.2 1121 // Variables for cached values or use across multiple functions 1122 settings, 1123 interfaceHeight, 1124 interfaceWidth, 1125 loadedHeight, 1126 loadedWidth, 1127 index, 1128 photo, 1129 open, 1130 active, 1131 closing, 1132 loadingTimer, 1133 publicMethod, 1134 div = "div", 1135 requests = 0, 1136 previousCSS = {}, 1137 init; 1138 1139 // **************** 1140 // HELPER FUNCTIONS 1141 // **************** 1142 1143 // Convenience function for creating new jQuery objects 1144 function $tag(tag, id, css) { 1145 var element = document.createElement(tag); 1146 1147 if (id) { 1148 element.id = prefix + id; 1149 } 1150 1151 if (css) { 1152 element.style.cssText = css; 1153 } 1154 1155 return $(element); 1156 } 1157 1158 // Get the window height using innerHeight when available to avoid an issue with iOS 1159 // http://bugs.jquery.com/ticket/6724 1160 function winheight() { 1161 return window.innerHeight ? window.innerHeight : $(window).height(); 1162 } 1163 1164 function Settings(element, options) { 1165 if (options !== Object(options)) { 1166 options = {}; 1167 } 1168 1169 this.cache = {}; 1170 this.el = element; 1171 1172 this.value = function (key) { 1173 var dataAttr; 1174 1175 if (this.cache[key] === undefined) { 1176 dataAttr = $(this.el).attr("data-cbox-" + key); 1177 1178 if (dataAttr !== undefined) { 1179 this.cache[key] = dataAttr; 1180 } else if (options[key] !== undefined) { 1181 this.cache[key] = options[key]; 1182 } else if (defaults[key] !== undefined) { 1183 this.cache[key] = defaults[key]; 1184 } 1185 } 1186 1187 return this.cache[key]; 1188 }; 1189 1190 this.get = function (key) { 1191 var value = this.value(key); 1192 return $.isFunction(value) ? value.call(this.el, this) : value; 1193 }; 1194 } 1195 1196 // Determine the next and previous members in a group. 1197 function getIndex(increment) { 1198 var max = $related.length, 1199 newIndex = (index + increment) % max; 1200 1201 return newIndex < 0 ? max + newIndex : newIndex; 1202 } 1203 1204 // Convert '%' and 'px' values to integers 1205 function setSize(size, dimension) { 1206 return Math.round( 1207 (/%/.test(size) 1208 ? (dimension === "x" ? $window.width() : winheight()) / 100 1209 : 1) * parseInt(size, 10) 1210 ); 1211 } 1212 1213 // Checks an href to see if it is a photo. 1214 // There is a force photo option (photo: true) for hrefs that cannot be matched by the regex. 1215 function isImage(settings, url) { 1216 return settings.get("photo") || settings.get("photoRegex").test(url); 1217 } 1218 1219 function retinaUrl(settings, url) { 1220 return settings.get("retinaUrl") && window.devicePixelRatio > 1 1221 ? url.replace(settings.get("photoRegex"), settings.get("retinaSuffix")) 1222 : url; 1223 } 1224 1225 function trapFocus(e) { 1226 if ( 1227 "contains" in $box[0] && 1228 !$box[0].contains(e.target) && 1229 e.target !== $overlay[0] 1230 ) { 1231 e.stopPropagation(); 1232 $box.focus(); 1233 } 1234 } 1235 1236 function setClass(str) { 1237 if (setClass.str !== str) { 1238 $box.add($overlay).removeClass(setClass.str).addClass(str); 1239 setClass.str = str; 1240 } 1241 } 1242 1243 function getRelated(rel) { 1244 index = 0; 1245 1246 if (rel && rel !== false && rel !== "nofollow") { 1247 $related = $("." + boxElement).filter(function () { 1248 var options = $.data(this, colorbox); 1249 var settings = new Settings(this, options); 1250 return settings.get("rel") === rel; 1251 }); 1252 index = $related.index(settings.el); 1253 1254 // Check direct calls to Colorbox. 1255 if (index === -1) { 1256 $related = $related.add(settings.el); 1257 index = $related.length - 1; 1258 } 1259 } else { 1260 $related = $(settings.el); 1261 } 1262 } 1263 1264 function trigger(event) { 1265 // for external use 1266 $(document).trigger(event); 1267 // for internal use 1268 $events.triggerHandler(event); 1269 } 1270 1271 var slideshow = (function () { 1272 var active, 1273 className = prefix + "Slideshow_", 1274 click = "click." + prefix, 1275 timeOut; 1276 1277 function clear() { 1278 clearTimeout(timeOut); 1279 } 1280 1281 function set() { 1282 if (settings.get("loop") || $related[index + 1]) { 1283 clear(); 1284 timeOut = setTimeout(publicMethod.next, settings.get("slideshowSpeed")); 1285 } 1286 } 1287 1288 function start() { 1289 $slideshow 1290 .html(settings.get("slideshowStop")) 1291 .unbind(click) 1292 .one(click, stop); 1293 1294 $events.bind(event_complete, set).bind(event_load, clear); 1295 1296 $box.removeClass(className + "off").addClass(className + "on"); 1297 } 1298 1299 function stop() { 1300 clear(); 1301 1302 $events.unbind(event_complete, set).unbind(event_load, clear); 1303 1304 $slideshow 1305 .html(settings.get("slideshowStart")) 1306 .unbind(click) 1307 .one(click, function () { 1308 publicMethod.next(); 1309 start(); 1310 }); 1311 1312 $box.removeClass(className + "on").addClass(className + "off"); 1313 } 1314 1315 function reset() { 1316 active = false; 1317 $slideshow.hide(); 1318 clear(); 1319 $events.unbind(event_complete, set).unbind(event_load, clear); 1320 $box.removeClass(className + "off " + className + "on"); 1321 } 1322 1323 return function () { 1324 if (active) { 1325 if (!settings.get("slideshow")) { 1326 $events.unbind(event_cleanup, reset); 1327 reset(); 1328 } 1329 } else { 1330 if (settings.get("slideshow") && $related[1]) { 1331 active = true; 1332 $events.one(event_cleanup, reset); 1333 if (settings.get("slideshowAuto")) { 1334 start(); 1335 } else { 1336 stop(); 1337 } 1338 $slideshow.show(); 1339 } 1340 } 1341 }; 1342 })(); 1343 1344 function launch(element) { 1345 var options; 1346 1347 if (!closing) { 1348 options = $(element).data(colorbox); 1349 1350 settings = new Settings(element, options); 1351 1352 getRelated(settings.get("rel")); 1353 1354 if (!open) { 1355 open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys. 1356 1357 setClass(settings.get("className")); 1358 1359 // Show colorbox so the sizes can be calculated in older versions of jQuery 1360 $box.css({ visibility: "hidden", display: "block", opacity: "" }); 1361 1362 $loaded = $tag( 1363 div, 1364 "LoadedContent", 1365 "width:0; height:0; overflow:hidden; visibility:hidden" 1366 ); 1367 $content.css({ width: "", height: "" }).append($loaded); 1368 1369 // Cache values needed for size calculations 1370 interfaceHeight = 1371 $topBorder.height() + 1372 $bottomBorder.height() + 1373 $content.outerHeight(true) - 1374 $content.height(); 1375 interfaceWidth = 1376 $leftBorder.width() + 1377 $rightBorder.width() + 1378 $content.outerWidth(true) - 1379 $content.width(); 1380 loadedHeight = $loaded.outerHeight(true); 1381 loadedWidth = $loaded.outerWidth(true); 1382 1383 // Opens inital empty Colorbox prior to content being loaded. 1384 var initialWidth = setSize(settings.get("initialWidth"), "x"); 1385 var initialHeight = setSize(settings.get("initialHeight"), "y"); 1386 var maxWidth = settings.get("maxWidth"); 1387 var maxHeight = settings.get("maxHeight"); 1388 1389 settings.w = 1390 (maxWidth !== false 1391 ? Math.min(initialWidth, setSize(maxWidth, "x")) 1392 : initialWidth) - 1393 loadedWidth - 1394 interfaceWidth; 1395 settings.h = 1396 (maxHeight !== false 1397 ? Math.min(initialHeight, setSize(maxHeight, "y")) 1398 : initialHeight) - 1399 loadedHeight - 1400 interfaceHeight; 1401 1402 $loaded.css({ width: "", height: settings.h }); 1403 publicMethod.position(); 1404 1405 trigger(event_open); 1406 settings.get("onOpen"); 1407 1408 $groupControls.add($title).hide(); 1409 1410 $box.focus(); 1411 1412 if (settings.get("trapFocus")) { 1413 // Confine focus to the modal 1414 // Uses event capturing that is not supported in IE8- 1415 if (document.addEventListener) { 1416 document.addEventListener("focus", trapFocus, true); 1417 1418 $events.one(event_closed, function () { 1419 document.removeEventListener("focus", trapFocus, true); 1420 }); 1421 } 1422 } 1423 1424 // Return focus on closing 1425 if (settings.get("returnFocus")) { 1426 $events.one(event_closed, function () { 1427 $(settings.el).focus(); 1428 }); 1429 } 1430 } 1431 1432 var opacity = parseFloat(settings.get("opacity")); 1433 $overlay 1434 .css({ 1435 opacity: opacity === opacity ? opacity : "", 1436 cursor: settings.get("overlayClose") ? "pointer" : "", 1437 visibility: "visible", 1438 }) 1439 .show(); 1440 1441 if (settings.get("closeButton")) {
1442 $close.html(settings.get("close")).appendTo($content); 1443 } else { 1444 $close.appendTo("<div/>"); // replace with .detach() when dropping jQuery < 1.4 1445 } 1446 1447 load(); 1448 } 1449 } 1450 1451 // Colorbox's markup needs to be added to the DOM prior to being called 1452 // so that the browser will go ahead and load the CSS background images. 1453 function appendHTML() { 1454 if (!$box) { 1455 init = false; 1456 $window = $(window); 1457 $box = $tag(div) 1458 .attr({ 1459 id: colorbox, 1460 class: $.support.opacity === false ? prefix + "IE" : "", // class for optional IE8 & lower targeted CSS. 1461 role: "dialog", 1462 tabindex: "-1", 1463 }) 1464 .hide(); 1465 $overlay = $tag(div, "Overlay").hide(); 1466 $loadingOverlay = $([ 1467 $tag(div, "LoadingOverlay")[0], 1468 $tag(div, "LoadingGraphic")[0], 1469 ]); 1470 $wrap = $tag(div, "Wrapper"); 1471 $content = $tag(div, "Content").append( 1472 ($title = $tag(div, "Title")), 1473 ($current = $tag(div, "Current")), 1474 ($prev = $('<button type="button"/>').attr({ 1475 id: prefix + "Previous", 1476 "aria-label": "vorheriges Bild", 1477 })), 1478 ($next = $('<button type="button"/>').attr({ 1479 id: prefix + "Next", 1480 "aria-label": "nächstes Bild", 1481 })), 1482 ($slideshow = $tag("button", "Slideshow")), 1483 $loadingOverlay 1484 ); 1485 1486 $close = $('<button type="button"/>').attr({ 1487 id: prefix + "Close", 1488 "aria-label": "vergröÃerte Ansicht schlieÃen", 1489 }); 1490 1491 $wrap 1492 .append( 1493 // The 3x3 Grid that makes up Colorbox 1494 $tag(div).append( 1495 $tag(div, "TopLeft"), 1496 ($topBorder = $tag(div, "TopCenter")), 1497 $tag(div, "TopRight") 1498 ), 1499 $tag(div, false, "clear:left").append( 1500 ($leftBorder = $tag(div, "MiddleLeft")), 1501 $content, 1502 ($rightBorder = $tag(div, "MiddleRight")) 1503 ), 1504 $tag(div, false, "clear:left").append( 1505 $tag(div, "BottomLeft"), 1506 ($bottomBorder = $tag(div, "BottomCenter")), 1507 $tag(div, "BottomRight") 1508 ) 1509 ) 1510 .find("div div") 1511 .css({ float: "left" }); 1512 1513 $loadingBay = $tag( 1514 div, 1515 false, 1516 "position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;" 1517 ); 1518 1519 $groupControls = $next.add($prev).add($current).add($slideshow); 1520 } 1521 if (document.body && !$box.parent().length) { 1522 $(document.body).append($overlay, $box.append($wrap, $loadingBay)); 1523 } 1524 } 1525 1526 // Add Colorbox's event bindings 1527 function addBindings() { 1528 function clickHandler(e) { 1529 // ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt. 1530 // See: http://jacklmoore.com/notes/click-events/ 1531 if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey || e.ctrlKey)) { 1532 e.preventDefault(); 1533 launch(this); 1534 } 1535 } 1536 1537 if ($box) { 1538 if (!init) { 1539 init = true; 1540 1541 // Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly. 1542 $next.click(function () { 1543 publicMethod.next(); 1544 }); 1545 $prev.click(function () { 1546 publicMethod.prev(); 1547 }); 1548 $close.click(function () { 1549 publicMethod.close(); 1550 }); 1551 $overlay.click(function () { 1552 if (settings.get("overlayClose")) { 1553 publicMethod.close(); 1554 } 1555 }); 1556 1557 // Key Bindings 1558 $(document).bind("keydown." + prefix, function (e) { 1559 var key = e.keyCode; 1560 if (open && settings.get("escKey") && key === 27) { 1561 e.preventDefault(); 1562 publicMethod.close(); 1563 } 1564 if (open && settings.get("arrowKey") && $related[1] && !e.altKey) { 1565 if (key === 37) { 1566 e.preventDefault(); 1567 $prev.click(); 1568 } else if (key === 39) { 1569 e.preventDefault(); 1570 $next.click(); 1571 } 1572 } 1573 }); 1574 1575 if ($.isFunction($.fn.on)) { 1576 // For jQuery 1.7+ 1577 $(document).on("click." + prefix, "." + boxElement, clickHandler); 1578 } /*else { 1579 // For jQuery 1.3.x -> 1.6.x 1580 // This code is never reached in jQuery 1.9, so do not contact me about 'live' being removed. 1581 // This is not here for jQuery 1.9, it's here for legacy users. 1582 $('.'+boxElement).live('click.'+prefix, clickHandler); 1583 }*/ 1584 } 1585 return true; 1586 } 1587 return false;
vendor: 16,995 bytes, lines 1588-2193
1588 } 1589 1590 // Don't do anything if Colorbox already exists. 1591 if ($[colorbox]) { 1592 return; 1593 } 1594 1595 // Append the HTML when the DOM loads 1596 $(appendHTML); 1597 1598 // **************** 1599 // PUBLIC FUNCTIONS 1600 // Usage format: $.colorbox.close(); 1601 // Usage from within an iframe: parent.jQuery.colorbox.close(); 1602 // **************** 1603 1604 publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) { 1605 var settings; 1606 var $obj = this; 1607 1608 options = options || {}; 1609 1610 if ($.isFunction($obj)) { 1611 // assume a call to $.colorbox 1612 $obj = $("<a/>"); 1613 options.open = true; 1614 } else if (!$obj[0]) { 1615 // colorbox being applied to empty collection 1616 return $obj; 1617 } 1618 1619 if (!$obj[0]) { 1620 // colorbox being applied to empty collection 1621 return $obj; 1622 } 1623 1624 appendHTML(); 1625 1626 if (addBindings()) { 1627 if (callback) { 1628 options.onComplete = callback; 1629 } 1630 1631 $obj 1632 .each(function () { 1633 var old = $.data(this, colorbox) || {}; 1634 $.data(this, colorbox, $.extend(old, options)); 1635 }) 1636 .addClass(boxElement); 1637 1638 settings = new Settings($obj[0], options); 1639 1640 if (settings.get("open")) { 1641 launch($obj[0]); 1642 } 1643 } 1644 1645 return $obj; 1646 }; 1647 1648 publicMethod.position = function (speed, loadedCallback) { 1649 var css, 1650 top = 0, 1651 left = 0, 1652 offset = $box.offset(), 1653 scrollTop, 1654 scrollLeft; 1655 1656 $window.unbind("resize." + prefix); 1657 1658 // remove the modal so that it doesn't influence the document width/height 1659 $box.css({ top: -9e4, left: -9e4 }); 1660 1661 scrollTop = $window.scrollTop(); 1662 scrollLeft = $window.scrollLeft(); 1663 1664 if (settings.get("fixed")) { 1665 offset.top -= scrollTop; 1666 offset.left -= scrollLeft; 1667 $box.css({ position: "fixed" }); 1668 } else { 1669 top = scrollTop; 1670 left = scrollLeft; 1671 $box.css({ position: "absolute" }); 1672 } 1673 1674 // keeps the top and left positions within the browser's viewport. 1675 if (settings.get("right") !== false) { 1676 left += Math.max( 1677 $window.width() - 1678 settings.w - 1679 loadedWidth - 1680 interfaceWidth - 1681 setSize(settings.get("right"), "x"), 1682 0 1683 ); 1684 } else if (settings.get("left") !== false) { 1685 left += setSize(settings.get("left"), "x"); 1686 } else { 1687 left += Math.round( 1688 Math.max( 1689 $window.width() - settings.w - loadedWidth - interfaceWidth, 1690 0 1691 ) / 2 1692 ); 1693 } 1694 1695 if (settings.get("bottom") !== false) { 1696 top += Math.max( 1697 winheight() - 1698 settings.h - 1699 loadedHeight - 1700 interfaceHeight - 1701 setSize(settings.get("bottom"), "y"), 1702 0 1703 ); 1704 } else if (settings.get("top") !== false) { 1705 top += setSize(settings.get("top"), "y"); 1706 } else { 1707 top += Math.round( 1708 Math.max(winheight() - settings.h - loadedHeight - interfaceHeight, 0) / 1709 2 1710 ); 1711 } 1712 1713 $box.css({ top: offset.top, left: offset.left, visibility: "visible" }); 1714 1715 // this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly, 1716 // but it has to be shrank down around the size of div#colorbox when it's done. If not, 1717 // it can invoke an obscure IE bug when using iframes. 1718 $wrap[0].style.width = $wrap[0].style.height = "9999px"; 1719 1720 function modalDimensions() { 1721 $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = 1722 parseInt($box[0].style.width, 10) - interfaceWidth + "px"; 1723 $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = 1724 parseInt($box[0].style.height, 10) - interfaceHeight + "px"; 1725 } 1726 1727 css = { 1728 width: settings.w + loadedWidth + interfaceWidth, 1729 height: settings.h + loadedHeight + interfaceHeight, 1730 top: top, 1731 left: left, 1732 }; 1733 1734 // setting the speed to 0 if the content hasn't changed size or position 1735 if (speed) { 1736 var tempSpeed = 0; 1737 $.each(css, function (i) { 1738 if (css[i] !== previousCSS[i]) { 1739 tempSpeed = speed; 1740 return; 1741 } 1742 }); 1743 speed = tempSpeed; 1744 } 1745 1746 previousCSS = css; 1747 1748 if (!speed) { 1749 $box.css(css); 1750 } 1751 1752 $box.dequeue().animate(css, { 1753 duration: speed || 0, 1754 complete: function () { 1755 modalDimensions(); 1756 1757 active = false; 1758 1759 // shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation. 1760 $wrap[0].style.width = settings.w + loadedWidth + interfaceWidth + "px"; 1761 $wrap[0].style.height = 1762 settings.h + loadedHeight + interfaceHeight + "px"; 1763 1764 if (settings.get("reposition")) { 1765 setTimeout(function () { 1766 // small delay before binding onresize due to an IE8 bug. 1767 $window.bind("resize." + prefix, publicMethod.position); 1768 }, 1); 1769 } 1770 1771 if ($.isFunction(loadedCallback)) { 1772 loadedCallback(); 1773 } 1774 }, 1775 step: modalDimensions, 1776 }); 1777 }; 1778 1779 publicMethod.resize = function (options) { 1780 var scrolltop; 1781 1782 if (open) { 1783 options = options || {}; 1784 1785 if (options.width) { 1786 settings.w = setSize(options.width, "x") - loadedWidth - interfaceWidth; 1787 } 1788 1789 if (options.innerWidth) { 1790 settings.w = setSize(options.innerWidth, "x"); 1791 } 1792 1793 $loaded.css({ width: settings.w }); 1794 1795 if (options.height) { 1796 settings.h = 1797 setSize(options.height, "y") - loadedHeight - interfaceHeight; 1798 } 1799 1800 if (options.innerHeight) { 1801 settings.h = setSize(options.innerHeight, "y"); 1802 } 1803 1804 if (!options.innerHeight && !options.height) { 1805 scrolltop = $loaded.scrollTop(); 1806 $loaded.css({ height: "auto" }); 1807 settings.h = $loaded.height(); 1808 } 1809 1810 $loaded.css({ height: settings.h }); 1811 1812 if (scrolltop) { 1813 $loaded.scrollTop(scrolltop); 1814 } 1815 1816 publicMethod.position( 1817 settings.get("transition") === "none" ? 0 : settings.get("speed") 1818 ); 1819 } 1820 }; 1821 1822 publicMethod.prep = function (object) { 1823 if (!open) { 1824 return; 1825 } 1826 1827 var callback, 1828 speed = settings.get("transition") === "none" ? 0 : settings.get("speed"); 1829 1830 $loaded.remove(); 1831 1832 $loaded = $tag(div, "LoadedContent").append(object); 1833 1834 function getWidth() { 1835 settings.w = settings.w || $loaded.width(); 1836 settings.w = 1837 settings.mw && settings.mw < settings.w ? settings.mw : settings.w; 1838 return settings.w; 1839 } 1840 function getHeight() { 1841 settings.h = settings.h || $loaded.height(); 1842 settings.h = 1843 settings.mh && settings.mh < settings.h ? settings.mh : settings.h; 1844 return settings.h; 1845 } 1846 1847 $loaded 1848 .hide() 1849 .appendTo($loadingBay.show()) // content has to be appended to the DOM for accurate size calculations. 1850 .css({ 1851 width: getWidth(), 1852 overflow: settings.get("scrolling") ? "auto" : "hidden", 1853 }) 1854 .css({ height: getHeight() }) // sets the height independently from the width in case the new width influences the value of height. 1855 .prependTo($content); 1856 1857 $loadingBay.hide(); 1858 1859 // floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width. 1860 1861 $(photo).css({ float: "none" }); 1862 1863 setClass(settings.get("className")); 1864 1865 callback = function () { 1866 var total = $related.length, 1867 iframe, 1868 complete; 1869 1870 if (!open) { 1871 return; 1872 } 1873 1874 function removeFilter() { 1875 // Needed for IE8 in versions of jQuery prior to 1.7.2 1876 if ($.support.opacity === false) { 1877 $box[0].style.removeAttribute("filter"); 1878 } 1879 } 1880 1881 complete = function () { 1882 clearTimeout(loadingTimer); 1883 $loadingOverlay.hide(); 1884 trigger(event_complete); 1885 settings.get("onComplete"); 1886 }; 1887 1888 $title.html(settings.get("title")).show(); 1889 $loaded.show(); 1890 1891 if (total > 1) { 1892 // handle grouping 1893 if (typeof settings.get("current") === "string") { 1894 $current 1895 .html( 1896 settings 1897 .get("current") 1898 .replace("{current}", index + 1) 1899 .replace("{total}", total) 1900 ) 1901 .show(); 1902 } 1903 1904 $next[ 1905 settings.get("loop") || index < total - 1 ? "show" : "hide" 1906 ]().html(settings.get("next")); 1907 $prev[settings.get("loop") || index ? "show" : "hide"]().html( 1908 settings.get("previous") 1909 ); 1910 1911 slideshow(); 1912 1913 // Preloads images within a rel group 1914 if (settings.get("preloading")) { 1915 $.each([getIndex(-1), getIndex(1)], function () { 1916 var img, 1917 i = $related[this], 1918 settings = new Settings(i, $.data(i, colorbox)), 1919 src = settings.get("href"); 1920 1921 if (src && isImage(settings, src)) { 1922 src = retinaUrl(settings, src); 1923 img = document.createElement("img"); 1924 img.src = src; 1925 } 1926 }); 1927 } 1928 } else { 1929 $groupControls.hide(); 1930 } 1931 1932 if (settings.get("iframe")) { 1933 iframe = document.createElement("iframe"); 1934 1935 if ("frameBorder" in iframe) { 1936 iframe.frameBorder = 0; 1937 } 1938 1939 if ("allowTransparency" in iframe) { 1940 iframe.allowTransparency = "true"; 1941 } 1942 1943 if (!settings.get("scrolling")) { 1944 iframe.scrolling = "no"; 1945 } 1946 1947 $(iframe) 1948 .attr({ 1949 src: settings.get("href"), 1950 name: new Date().getTime(), // give the iframe a unique name to prevent caching 1951 class: prefix + "Iframe", 1952 allowFullScreen: true, // allow HTML5 video to go fullscreen 1953 }) 1954 .one("load", complete) 1955 .appendTo($loaded); 1956 1957 $events.one(event_purge, function () { 1958 iframe.src = "//about:blank"; 1959 }); 1960 1961 if (settings.get("fastIframe")) { 1962 $(iframe).trigger("load"); 1963 } 1964 } else { 1965 complete(); 1966 } 1967 1968 if (settings.get("transition") === "fade") { 1969 $box.fadeTo(speed, 1, removeFilter); 1970 } else { 1971 removeFilter(); 1972 } 1973 }; 1974 1975 if (settings.get("transition") === "fade") { 1976 $box.fadeTo(speed, 0, function () { 1977 publicMethod.position(0, callback); 1978 }); 1979 } else { 1980 publicMethod.position(speed, callback); 1981 } 1982 }; 1983 1984 function load() { 1985 var href, 1986 setResize, 1987 prep = publicMethod.prep, 1988 $inline, 1989 request = ++requests; 1990 1991 active = true; 1992 1993 photo = false; 1994 1995 trigger(event_purge); 1996 trigger(event_load); 1997 settings.get("onLoad"); 1998 1999 settings.h = settings.get("height") 2000 ? setSize(settings.get("height"), "y") - loadedHeight - interfaceHeight 2001 : settings.get("innerHeight") && 2002 setSize(settings.get("innerHeight"), "y"); 2003 2004 settings.w = settings.get("width") 2005 ? setSize(settings.get("width"), "x") - loadedWidth - interfaceWidth 2006 : settings.get("innerWidth") && setSize(settings.get("innerWidth"), "x"); 2007 2008 // Sets the minimum dimensions for use in image scaling 2009 settings.mw = settings.w; 2010 settings.mh = settings.h; 2011 2012 // Re-evaluate the minimum width and height based on maxWidth and maxHeight values. 2013 // If the width or height exceed the maxWidth or maxHeight, use the maximum values instead. 2014 if (settings.get("maxWidth")) { 2015 settings.mw = 2016 setSize(settings.get("maxWidth"), "x") - loadedWidth - interfaceWidth; 2017 settings.mw = 2018 settings.w && settings.w < settings.mw ? settings.w : settings.mw; 2019 } 2020 if (settings.get("maxHeight")) { 2021 settings.mh = 2022 setSize(settings.get("maxHeight"), "y") - 2023 loadedHeight - 2024 interfaceHeight; 2025 settings.mh = 2026 settings.h && settings.h < settings.mh ? settings.h : settings.mh; 2027 } 2028 2029 href = settings.get("href"); 2030 2031 loadingTimer = setTimeout(function () { 2032 $loadingOverlay.show(); 2033 }, 100); 2034 2035 if (settings.get("inline")) { 2036 var $target = $(href); 2037 // Inserts an empty placeholder where inline content is being pulled from. 2038 // An event is bound to put inline content back when Colorbox closes or loads new content. 2039 $inline = $("<div>").hide().insertBefore($target); 2040 2041 $events.one(event_purge, function () { 2042 $inline.replaceWith($target); 2043 }); 2044 2045 prep($target); 2046 } else if (settings.get("iframe")) { 2047 // IFrame element won't be added to the DOM until it is ready to be displayed, 2048 // to avoid problems with DOM-ready JS that might be trying to run in that iframe. 2049 prep(" "); 2050 } else if (settings.get("html")) { 2051 prep(settings.get("html")); 2052 } else if (isImage(settings, href)) { 2053 href = retinaUrl(settings, href); 2054 2055 photo = new Image(); 2056 2057 $(photo) 2058 .addClass(prefix + "Photo") 2059 .bind("error", function () { 2060 prep($tag(div, "Error").html(settings.get("imgError"))); 2061 }) 2062 .one("load", function () { 2063 if (request !== requests) { 2064 return; 2065 } 2066 2067 // A small pause because some browsers will occassionaly report a 2068 // img.width and img.height of zero immediately after the img.onload fires 2069 setTimeout(function () { 2070 var percent; 2071 2072 $.each(["alt", "longdesc", "aria-describedby"], function (i, val) { 2073 var attr = 2074 $(settings.el).attr(val) || $(settings.el).attr("data-" + val); 2075 if (attr) { 2076 photo.setAttribute(val, attr); 2077 } 2078 }); 2079 2080 if (settings.get("retinaImage") && window.devicePixelRatio > 1) { 2081 photo.height = photo.height / window.devicePixelRatio; 2082 photo.width = photo.width / window.devicePixelRatio; 2083 } 2084 2085 if (settings.get("scalePhotos")) { 2086 setResize = function () { 2087 photo.height -= photo.height * percent; 2088 photo.width -= photo.width * percent; 2089 }; 2090 if (settings.mw && photo.width > settings.mw) { 2091 percent = (photo.width - settings.mw) / photo.width; 2092 setResize(); 2093 } 2094 if (settings.mh && photo.height > settings.mh) { 2095 percent = (photo.height - settings.mh) / photo.height; 2096 setResize(); 2097 } 2098 } 2099 2100 if (settings.h) { 2101 photo.style.marginTop = 2102 Math.max(settings.mh - photo.height, 0) / 2 + "px"; 2103 } 2104 2105 if ($related[1] && (settings.get("loop") || $related[index + 1])) { 2106 photo.style.cursor = "pointer"; 2107 photo.onclick = function () { 2108 publicMethod.next(); 2109 }; 2110 } 2111 2112 photo.style.width = photo.width + "px"; 2113 photo.style.height = photo.height + "px"; 2114 prep(photo); 2115 }, 1); 2116 }); 2117 2118 photo.src = href; 2119 } else if (href) { 2120 $loadingBay.load(href, settings.get("data"), function (data, status) { 2121 if (request === requests) { 2122 prep( 2123 status === "error" 2124 ? $tag(div, "Error").html(settings.get("xhrError")) 2125 : $(this).contents() 2126 ); 2127 } 2128 }); 2129 } 2130 } 2131 2132 // Navigates to the next page/image in a set. 2133 publicMethod.next = function () { 2134 if ( 2135 !active && 2136 $related[1] && 2137 (settings.get("loop") || $related[index + 1]) 2138 ) { 2139 index = getIndex(1); 2140 launch($related[index]); 2141 } 2142 }; 2143 2144 publicMethod.prev = function () { 2145 if (!active && $related[1] && (settings.get("loop") || index)) { 2146 index = getIndex(-1); 2147 launch($related[index]); 2148 } 2149 }; 2150 2151 // Note: to use this within an iframe use the following format: parent.jQuery.colorbox.close(); 2152 publicMethod.close = function () { 2153 if (open && !closing) { 2154 closing = true; 2155 open = false; 2156 trigger(event_cleanup); 2157 settings.get("onCleanup"); 2158 $window.unbind("." + prefix); 2159 $overlay.fadeTo(settings.get("fadeOut") || 0, 0); 2160 2161 $box.stop().fadeTo(settings.get("fadeOut") || 0, 0, function () { 2162 $box.hide(); 2163 $overlay.hide(); 2164 trigger(event_purge); 2165 $loaded.remove(); 2166 2167 setTimeout(function () { 2168 closing = false; 2169 trigger(event_closed); 2170 settings.get("onClosed"); 2171 }, 1); 2172 }); 2173 } 2174 }; 2175 2176 // Removes changes Colorbox made to the document, but does not remove the plugin. 2177 publicMethod.remove = function () { 2178 if (!$box) { 2179 return; 2180 } 2181 2182 $box.stop(); 2183 $[colorbox].close(); 2184 $box.stop(false, true).remove(); 2185 $overlay.remove(); 2186 closing = false; 2187 $box = null; 2188 $("." + boxElement) 2189 .removeData(colorbox) 2190 .removeClass(boxElement); 2191 2192 $(document) 2193 .unbind("click." + prefix)
2194 .unbind("keydown." + prefix); 2195 }; 2196 2197 // A method for fetching the current element Colorbox is referencing. 2198 // returns a jQuery object. 2199 publicMethod.element = function () { 2200 return $(settings.el); 2201 }; 2202 2203 publicMethod.settings = defaults; 2204})(jQuery, document, window); 2205(function ($) { 2206 Drupal.behaviors.initColorbox = { 2207 attach: function (context, settings) { 2208 if ( 2209 !$.isFunction($.colorbox) || 2210 typeof settings.colorbox === "undefined" 2211 ) { 2212 return; 2213 } 2214 2215 if (settings.colorbox.mobiledetect && window.matchMedia) { 2216 // Disable Colorbox for small screens. 2217 var mq = window.matchMedia( 2218 "(max-device-width: " + settings.colorbox.mobiledevicewidth + ")" 2219 ); 2220 if (mq.matches) { 2221 return; 2222 } 2223 } 2224 2225 // Conflict with readspeaker js caused title, next & previous buttons to override 2226 // custom settings, so we set them here hardcoded. Cleaner attempts to fix 2227 // this failed. 2228 $.colorbox.settings.next = ""; 2229 $.colorbox.settings.previous = ""; 2230 2231 $.colorbox.settings.title = function () { 2232 var attr = $(this).data("inner-title"); 2233 // For some browsers, `attr` is undefined; for others, 2234 // `attr` is false. Check for both. 2235 if (typeof attr !== typeof undefined && attr !== false) { 2236 return $(this).data("inner-title"); 2237 } 2238 }; 2239 2240 $(".colorbox", context).once("init-colorbox").colorbox(settings.colorbox); 2241 2242 $(context).bind("cbox_complete", function () { 2243 Drupal.attachBehaviors("#cboxLoadedContent"); 2244 }); 2245 }, 2246 }; 2247})(jQuery); 2248(function ($) { 2249 Drupal.behaviors.initColorboxLoad = { 2250 attach: function (context, settings) { 2251 if ( 2252 !$.isFunction($.colorbox) || 2253 typeof settings.colorbox === "undefined" 2254 ) { 2255 return; 2256 } 2257 $.urlParams = function (url) { 2258 var p = {}, 2259 e, 2260 a = /\+/g, // Regex for replacing addition symbol with a space 2261 r = /([^&=]+)=?([^&]*)/g, 2262 d = function (s) { 2263 return decodeURIComponent(s.replace(a, " ")); 2264 }, 2265 q = url.split("?"); 2266 while ((e = r.exec(q[1]))) { 2267 e[1] = d(e[1]); 2268 e[2] = d(e[2]); 2269 switch (e[2].toLowerCase()) { 2270 case "true": 2271 case "yes": 2272 e[2] = true; 2273 break; 2274 case "false": 2275 case "no": 2276 e[2] = false; 2277 break; 2278 } 2279 if (e[1] == "width") { 2280 e[1] = "innerWidth"; 2281 } 2282 if (e[1] == "height") { 2283 e[1] = "innerHeight"; 2284 } 2285 p[e[1]] = e[2]; 2286 } 2287 return p; 2288 }; 2289 $(".colorbox-load", context).once("init-colorbox-load", function () { 2290 var params = $.urlParams($(this).attr("href")); 2291 $(this).colorbox( 2292 $.extend( 2293 { 2294 title: function () { 2295 return $(this).data("inner-title"); 2296 }, 2297 }, 2298 settings.colorbox, 2299 params 2300 ) 2301 ); 2302 }); 2303 }, 2304 }; 2305})(jQuery); 2306(function ($) { 2307 Drupal.behaviors.initColorboxInline = { 2308 attach: function (context, settings) { 2309 if ( 2310 !$.isFunction($.colorbox) || 2311 typeof settings.colorbox === "undefined" 2312 ) { 2313 return; 2314 } 2315 $.urlParam = function (name, url) { 2316 if (name == "fragment") { 2317 var results = new RegExp("(#[^&#]*)").exec(url); 2318 } else { 2319 var results = new RegExp("[\\?&]" + name + "=([^&#]*)").exec(url); 2320 } 2321 if (!results) { 2322 return ""; 2323 } 2324 return results[1] || ""; 2325 }; 2326 $(".colorbox-inline", context) 2327 .once("init-colorbox-inline") 2328 .colorbox({ 2329 transition: settings.colorbox.transition, 2330 speed: settings.colorbox.speed, 2331 opacity: settings.colorbox.opacity, 2332 slideshow: settings.colorbox.slideshow, 2333 slideshowAuto: settings.colorbox.slideshowAuto, 2334 slideshowSpeed: settings.colorbox.slideshowSpeed, 2335 slideshowStart: settings.colorbox.slideshowStart, 2336 slideshowStop: settings.colorbox.slideshowStop, 2337 current: settings.colorbox.current, 2338 previous: settings.colorbox.previous, 2339 next: settings.colorbox.next, 2340 close: settings.colorbox.close, 2341 overlayClose: settings.colorbox.overlayClose, 2342 maxWidth: settings.colorbox.maxWidth, 2343 maxHeight: settings.colorbox.maxHeight, 2344 innerWidth: function () { 2345 return $.urlParam("width", $(this).attr("href")); 2346 }, 2347 innerHeight: function () { 2348 return $.urlParam("height", $(this).attr("href")); 2349 }, 2350 title: function () { 2351 return decodeURIComponent( 2352 $.urlParam("title", $(this).attr("href")) 2353 ); 2354 }, 2355 iframe: function () { 2356 return $.urlParam("iframe", $(this).attr("href")); 2357 }, 2358 inline: function () { 2359 return $.urlParam("inline", $(this).attr("href")); 2360 }, 2361 href: function () { 2362 return $.urlParam("fragment", $(this).attr("href")); 2363 }, 2364 }); 2365 }, 2366 }; 2367})(jQuery); 2368/* ======================================================================== 2369 * Bootstrap: tooltip.js v3.1.0 2370 * http://getbootstrap.com/javascript/#tooltip 2371 * Inspired by the original jQuery.tipsy by Jason Frame 2372 * ======================================================================== 2373 * Copyright 2011-2014 Twitter, Inc. 2374 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 2375 * ======================================================================== */ 2376 2377+(function ($) { 2378 "use strict"; 2379 2380 // TOOLTIP PUBLIC CLASS DEFINITION 2381 // =============================== 2382 2383 var Tooltip = function (element, options) { 2384 this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null; 2385 2386 this.init("tooltip", element, options); 2387 }; 2388 2389 Tooltip.DEFAULTS = { 2390 animation: true, 2391 placement: "top", 2392 selector: false, 2393 template: 2394 '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', 2395 trigger: "hover focus", 2396 title: "", 2397 delay: 0, 2398 html: false, 2399 container: false, 2400 }; 2401 2402 Tooltip.prototype.init = function (type, element, options) { 2403 this.enabled = true; 2404 this.type = type; 2405 this.$element = $(element); 2406 this.options = this.getOptions(options); 2407 2408 var triggers = this.options.trigger.split(" "); 2409 2410 for (var i = triggers.length; i--; ) { 2411 var trigger = triggers[i]; 2412 2413 if (trigger == "click") { 2414 this.$element.on( 2415 "click." + this.type, 2416 this.options.selector, 2417 $.proxy(this.toggle, this) 2418 ); 2419 } else if (trigger != "manual") { 2420 var eventIn = trigger == "hover" ? "mouseenter" : "focusin"; 2421 var eventOut = trigger == "hover" ? "mouseleave" : "focusout"; 2422 2423 this.$element.on( 2424 eventIn + "." + this.type, 2425 this.options.selector, 2426 $.proxy(this.enter, this) 2427 ); 2428 this.$element.on( 2429 eventOut + "." + this.type, 2430 this.options.selector, 2431 $.proxy(this.leave, this) 2432 ); 2433 } 2434 } 2435 2436 }; 2437 2438 Tooltip.prototype.getDefaults = function () { 2439 return Tooltip.DEFAULTS; 2440 }; 2441 2442 Tooltip.prototype.getOptions = function (options) { 2443 options = $.extend({}, this.getDefaults(), this.$element.data(), options); 2444 2445 if (options.delay && typeof options.delay == "number") { 2446 options.delay = { 2447 show: options.delay, 2448 hide: options.delay, 2449 }; 2450 } 2451 2452 return options; 2453 }; 2454 2455 Tooltip.prototype.getDelegateOptions = function () { 2456 var options = {}; 2457 var defaults = this.getDefaults(); 2458 2459 this._options && 2460 $.each(this._options, function (key, value) { 2461 if (defaults[key] != value) options[key] = value; 2462 }); 2463 2464 return options; 2465 }; 2466 2467 Tooltip.prototype.enter = function (obj) { 2468 var self = 2469 obj instanceof this.constructor 2470 ? obj 2471 : $(obj.currentTarget) 2472 [this.type](this.getDelegateOptions()) 2473 .data("bs." + this.type); 2474 2475 clearTimeout(self.timeout); 2476 2477 self.hoverState = "in"; 2478 2479 if (!self.options.delay || !self.options.delay.show) return self.show(); 2480 2481 self.timeout = setTimeout(function () { 2482 if (self.hoverState == "in") self.show(); 2483 }, self.options.delay.show); 2484 }; 2485 2486 Tooltip.prototype.leave = function (obj) { 2487 var self = 2488 obj instanceof this.constructor 2489 ? obj 2490 : $(obj.currentTarget) 2491 [this.type](this.getDelegateOptions()) 2492 .data("bs." + this.type); 2493 2494 clearTimeout(self.timeout); 2495 2496 self.hoverState = "out"; 2497 2498 if (!self.options.delay || !self.options.delay.hide) return self.hide(); 2499 2500 self.timeout = setTimeout(function () { 2501 if (self.hoverState == "out") self.hide(); 2502 }, self.options.delay.hide); 2503 }; 2504 2505 Tooltip.prototype.show = function () { 2506 var e = $.Event("show.bs." + this.type); 2507 2508 if (this.hasContent() && this.enabled) { 2509 this.$element.trigger(e); 2510 2511 if (e.isDefaultPrevented()) return; 2512 var that = this; 2513 2514 var $tip = this.tip(); 2515 2516 this.setContent(); 2517 2518 if (this.options.animation) $tip.addClass("fade"); 2519 2520 var placement = 2521 typeof this.options.placement == "function" 2522 ? this.options.placement.call(this, $tip[0], this.$element[0]) 2523 : this.options.placement; 2524 2525 var autoToken = /\s?auto?\s?/i; 2526 var autoPlace = autoToken.test(placement); 2527 if (autoPlace) placement = placement.replace(autoToken, "") || "top"; 2528 2529 $tip 2530 .detach() 2531 .css({ top: 0, left: 0, display: "block" }) 2532 .addClass(placement); 2533 2534 this.options.container 2535 ? $tip.appendTo(this.options.container) 2536 : $tip.insertAfter(this.$element); 2537 2538 var pos = this.getPosition(); 2539 var actualWidth = $tip[0].offsetWidth; 2540 var actualHeight = $tip[0].offsetHeight; 2541 2542 if (autoPlace) { 2543 var $parent = this.$element.parent(); 2544 2545 var orgPlacement = placement; 2546 var docScroll = 2547 document.documentElement.scrollTop || document.body.scrollTop; 2548 var parentWidth = 2549 this.options.container == "body" 2550 ? window.innerWidth 2551 : $parent.outerWidth(); 2552 var parentHeight = 2553 this.options.container == "body" 2554 ? window.innerHeight 2555 : $parent.outerHeight(); 2556 var parentLeft = 2557 this.options.container == "body" ? 0 : $parent.offset().left; 2558 2559 placement = 2560 placement == "bottom" && 2561 pos.top + pos.height + actualHeight - docScroll > parentHeight 2562 ? "top" 2563 : placement == "top" && pos.top - docScroll - actualHeight < 0 2564 ? "bottom" 2565 : placement == "right" && pos.right + actualWidth > parentWidth 2566 ? "left" 2567 : placement == "left" && pos.left - actualWidth < parentLeft 2568 ? "right" 2569 : placement; 2570 2571 $tip.removeClass(orgPlacement).addClass(placement); 2572 } 2573 2574 var calculatedOffset = this.getCalculatedOffset( 2575 placement, 2576 pos, 2577 actualWidth, 2578 actualHeight 2579 ); 2580 2581 this.applyPlacement(calculatedOffset, placement); 2582 this.hoverState = null; 2583 2584 var complete = function () { 2585 that.$element.trigger("shown.bs." + that.type); 2586 }; 2587 2588 $.support.transition && this.$tip.hasClass("fade") 2589 ? $tip.one($.support.transition.end, complete).emulateTransitionEnd(150) 2590 : complete(); 2591 } 2592 }; 2593 2594 Tooltip.prototype.applyPlacement = function (offset, placement) { 2595 var replace; 2596 var $tip = this.tip(); 2597 var width = $tip[0].offsetWidth; 2598 var height = $tip[0].offsetHeight; 2599 2600 // manually read margins because getBoundingClientRect includes difference 2601 var marginTop = parseInt($tip.css("margin-top"), 10); 2602 var marginLeft = parseInt($tip.css("margin-left"), 10); 2603 2604 // we must check for NaN for ie 8/9 2605 if (isNaN(marginTop)) marginTop = 0; 2606 if (isNaN(marginLeft)) marginLeft = 0; 2607 2608 offset.top = offset.top + marginTop; 2609 offset.left = offset.left + marginLeft; 2610 2611 // $.fn.offset doesn't round pixel values 2612 // so we use setOffset directly with our own function B-0 2613 $.offset.setOffset( 2614 $tip[0], 2615 $.extend( 2616 { 2617 using: function (props) { 2618 $tip.css({ 2619 top: Math.round(props.top), 2620 left: Math.round(props.left), 2621 }); 2622 }, 2623 }, 2624 offset 2625 ), 2626 0 2627 ); 2628 2629 $tip.addClass("in"); 2630 2631 // check to see if placing tip in new offset caused the tip to resize itself 2632 var actualWidth = $tip[0].offsetWidth; 2633 var actualHeight = $tip[0].offsetHeight; 2634 2635 if (placement == "top" && actualHeight != height) { 2636 replace = true; 2637 offset.top = offset.top + height - actualHeight; 2638 } 2639 2640 if (/bottom|top/.test(placement)) { 2641 var delta = 0; 2642 2643 if (offset.left < 0) { 2644 delta = offset.left * -2; 2645 offset.left = 0; 2646 2647 $tip.offset(offset); 2648 2649 actualWidth = $tip[0].offsetWidth; 2650 actualHeight = $tip[0].offsetHeight; 2651 } 2652 2653 this.replaceArrow(delta - width + actualWidth, actualWidth, "left"); 2654 } else { 2655 this.replaceArrow(actualHeight - height, actualHeight, "top"); 2656 } 2657 2658 if (replace) $tip.offset(offset); 2659 }; 2660 2661 Tooltip.prototype.replaceArrow = function (delta, dimension, position) { 2662 this.arrow().css(position, delta ? 50 * (1 - delta / dimension) + "%" : ""); 2663 }; 2664 2665 Tooltip.prototype.setContent = function () { 2666 var $tip = this.tip(); 2667 var title = this.getTitle(); 2668 2669 $tip.find(".tooltip-inner")[this.options.html ? "html" : "text"](title); 2670 $tip.removeClass("fade in top bottom left right"); 2671 }; 2672 2673 Tooltip.prototype.hide = function () { 2674 var that = this; 2675 var $tip = this.tip(); 2676 var e = $.Event("hide.bs." + this.type); 2677 2678 function complete() { 2679 if (that.hoverState != "in") $tip.detach(); 2680 that.$element.trigger("hidden.bs." + that.type); 2681 } 2682 2683 this.$element.trigger(e); 2684 2685 if (e.isDefaultPrevented()) return; 2686 2687 $tip.removeClass("in"); 2688 2689 $.support.transition && this.$tip.hasClass("fade") 2690 ? $tip.one($.support.transition.end, complete).emulateTransitionEnd(150) 2691 : complete(); 2692 2693 this.hoverState = null; 2694 2695 return this; 2696 }; 2697 2698 2699 Tooltip.prototype.hasContent = function () { 2700 return this.getTitle(); 2701 }; 2702 2703 Tooltip.prototype.getPosition = function () { 2704 var el = this.$element[0]; 2705 return $.extend( 2706 {}, 2707 typeof el.getBoundingClientRect == "function" 2708 ? el.getBoundingClientRect() 2709 : { 2710 width: el.offsetWidth, 2711 height: el.offsetHeight, 2712 }, 2713 this.$element.offset() 2714 ); 2715 }; 2716 2717 Tooltip.prototype.getCalculatedOffset = function ( 2718 placement, 2719 pos, 2720 actualWidth, 2721 actualHeight 2722 ) { 2723 return placement == "bottom" 2724 ? { 2725 top: pos.top + pos.height, 2726 left: pos.left + pos.width / 2 - actualWidth / 2, 2727 } 2728 : placement == "top" 2729 ? { 2730 top: pos.top - actualHeight, 2731 left: pos.left + pos.width / 2 - actualWidth / 2, 2732 } 2733 : placement == "left" 2734 ? { 2735 top: pos.top + pos.height / 2 - actualHeight / 2, 2736 left: pos.left - actualWidth, 2737 } 2738 : /* placement == 'right' */ { 2739 top: pos.top + pos.height / 2 - actualHeight / 2, 2740 left: pos.left + pos.width, 2741 }; 2742 }; 2743 2744 Tooltip.prototype.getTitle = function () { 2745 var title; 2746 var $e = this.$element; 2747 var o = this.options; 2748 2749 title = 2750 $e.attr("data-original-title") || 2751 (typeof o.title == "function" ? o.title.call($e[0]) : o.title); 2752 2753 return title; 2754 }; 2755 2756 Tooltip.prototype.tip = function () { 2757 return (this.$tip = this.$tip || $(this.options.template)); 2758 }; 2759 2760 Tooltip.prototype.arrow = function () { 2761 return (this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")); 2762 }; 2763 2764 Tooltip.prototype.validate = function () { 2765 if (!this.$element[0].parentNode) { 2766 this.hide(); 2767 this.$element = null; 2768 this.options = null; 2769 } 2770 }; 2771 2772 Tooltip.prototype.enable = fun
2772ction () { 2773 this.enabled = true; 2774 }; 2775 2776 Tooltip.prototype.disable = function () { 2777 this.enabled = false; 2778 }; 2779 2780 Tooltip.prototype.toggleEnabled = function () { 2781 this.enabled = !this.enabled; 2782 }; 2783 2784 Tooltip.prototype.toggle = function (e) { 2785 var self = e 2786 ? $(e.currentTarget) 2787 [this.type](this.getDelegateOptions()) 2788 .data("bs." + this.type) 2789 : this; 2790 self.tip().hasClass("in") ? self.leave(self) : self.enter(self); 2791 }; 2792 2793 Tooltip.prototype.destroy = function () { 2794 clearTimeout(this.timeout); 2795 this.hide() 2796 .$element.off("." + this.type) 2797 .removeData("bs." + this.type); 2798 }; 2799 2800 // TOOLTIP PLUGIN DEFINITION 2801 // ========================= 2802 2803 var old = $.fn.tooltip; 2804 2805 $.fn.tooltip = function (option) { 2806 return this.each(function () { 2807 var $this = $(this); 2808 var data = $this.data("bs.tooltip"); 2809 var options = typeof option == "object" && option; 2810 2811 if (!data && option == "destroy") return; 2812 if (!data) $this.data("bs.tooltip", (data = new Tooltip(this, options))); 2813 if (typeof option == "string") data[option](); 2814 }); 2815 }; 2816 2817 $.fn.tooltip.Constructor = Tooltip; 2818 2819 // TOOLTIP NO CONFLICT 2820 // =================== 2821 2822 $.fn.tooltip.noConflict = function () { 2823 $.fn.tooltip = old; 2824 return this; 2825 }; 2826})(jQuery); 2827(function ($) { 2828 Drupal.behaviors.tooltip_drupal = { 2829 attach: function (context) { 2830 $("body") 2831 .once("once-tooltip") 2832 .on("click", ".has-tooltip", function (e) { 2833 var isTooltipActive = $(this).hasClass("active-tooltip"); 2834 var isInsideTooltip = $(this).closest(".tooltip-inner").length > 0; 2835 2836 if (isTooltipActive || isInsideTooltip) { 2837 if (!isInsideTooltip) { 2838 e.preventDefault(); 2839 $(this).removeClass('active-tooltip').tooltip('destroy').attr('aria-expanded', 'false').removeAttr('aria-describedby'); 2840 } 2841 } else { 2842 e.preventDefault(); 2843 var tooltipId = "tooltip_" + new Date().getTime(); 2844 var content = $("<textarea/>").html($(this).attr("data-title")).val(); 2845 2846 $(this).attr("data-original-title", content).attr('aria-describedby', tooltipId); 2847 2848 $(".active-tooltip") 2849 .removeClass("active-tooltip") 2850 .tooltip("destroy") 2851 .attr('aria-expanded', 'false') 2852 .removeAttr('aria-describedby'); 2853 2854 $(this) 2855 .addClass("active-tooltip") 2856 .tooltip({ 2857 show: true, 2858 trigger: "manual", 2859 html: true, 2860 animation: true, 2861 template: '<div class="tooltip" role="tooltip" id="' + tooltipId + '"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' 2862 }) 2863 .tooltip("show") 2864 .attr('aria-expanded', 'true'); 2865 2866 $('<button class="close"><span class="sr-only">' + langhideexplanation + '</span></button>') 2867 .prependTo(".tooltip .tooltip-inner"); 2868 $('<a class="read-more">' + langreadmore + "</a>") 2869 .attr("href", $(this).attr("href")) 2870 .appendTo(".tooltip .tooltip-inner"); 2871 2872 $(this).attr("data-original-title", ""); 2873 } 2874 return false; 2875 }); 2876 2877 $("#main-content").on( 2878 "click", 2879 ".tooltip .tooltip-inner .close", 2880 function () { 2881 var $activeTooltip = $(".active-tooltip"); 2882 $activeTooltip 2883 .removeClass("active-tooltip") 2884 .tooltip("destroy") 2885 .attr('aria-expanded', 'false') 2886 .removeAttr('aria-describedby'); 2887 return false; 2888 } 2889 ); 2890 }, 2891 }; 2892})(jQuery); 2893 2894(function ($) { 2895 Drupal.behaviors.feature_address = { 2896 attach: function (context) { 2897 $(document).ready(function () { 2898 $("#edit-field-address-address-value-2").removeAttr("disabled"); 2899 $("#edit-field-address-address-value-2") 2900 .parent() 2901 .removeClass("form-disabled"); 2902 2903 var toggleRadius = function (hide) { 2904 // Disable this for now as they don't like it but don't delete it. 2905 // I'm pretty sure we need this back. 2906 return; 2907 /* 2908 if (hide === 'hide') { 2909 $('#edit-field-address-address-value-2').attr('disabled', 'disabled'); 2910 $('#edit-field-address-address-value-2').parent().addClass('form-disabled'); 2911 } 2912 else { 2913 $('#edit-field-address-address-value-2').removeAttr('disabled'); 2914 $('#edit-field-address-address-value-2').parent().removeClass('form-disabled'); 2915 } 2916 */ 2917 }; 2918 2919 var checkFields = function () { 2920 var zip = $("#edit-field-address-address-value").val(); 2921 var city = $("#edit-field-address-address-value-1").val(); 2922 if (zip && zip.length === 5 && city) { 2923 toggleRadius(); 2924 geoCode(zip, city); 2925 } else { 2926 toggleRadius("hide"); 2927 } 2928 2929 // Disable this for now as they don't like it but don't delete it. 2930 // I'm pretty sure we need this back. 2931 $("#edit-field-address-address-value-2").removeAttr("disabled"); 2932 $("#edit-field-address-address-value-2") 2933 .parent() 2934 .removeClass("form-disabled"); 2935 }; 2936 2937 // Init. 2938 checkFields();
2939 // onChange. 2940 $("#edit-field-address-address-value").on("change", function () { 2941 //console.log('edit-field-address-address-value ', document.getElementById("edit-field-address-address-value").value); 2942 //console.log('edit-field-address-address-value-1 ', document.getElementById("edit-field-address-address-value-1").value); 2943 if ( 2944 document.getElementById("edit-field-address-address-value") 2945 .value !== "" && 2946 document.getElementById("edit-field-address-address-value-1") 2947 .value !== "" 2948 ) { 2949 $( 2950 '<style>.form-item.form-type-select.form-item-field-address-address-value-2::after{content:" "}</style>' 2951 ).appendTo("head"); 2952 } 2953 checkFields(); 2954 }); 2955 2956 $("#edit-field-address-address-value-1").on("change", function () { 2957 if ( 2958 document.getElementById("edit-field-address-address-value") 2959 .value !== "" && 2960 document.getElementById("edit-field-address-address-value-1") 2961 .value !== "" 2962 ) { 2963 $( 2964 '<style>.form-item.form-type-select.form-item-field-address-address-value-2::after{content:" "}</style>' 2965 ).appendTo("head"); 2966 } 2967 checkFields(); 2968 }); 2969 2970 $("#edit-field-address-address-value-2").on("change", function () { 2971 if ( 2972 document.getElementById("edit-field-address-address-value").value === "" || 2973 document.getElementById("edit-field-address-address-value-1").value === "" 2974 ) { 2975 $("#edit-field-address-address-value-2-wrapper span.perimeterError").hide(); 2976 2977 if (document.body.className.match("i18n-de")) { 2978 var str = "Bitte PLZ und Ort eingeben."; 2979 } else if (document.body.className.match("i18n-pl")) { 2980 var str = "Prosze podaj kod pocztowy i miejscowoÅæ."; 2981 } else if (document.body.className.match("i18n-es")) { 2982 var str = "Por favor introduzca el código postal y la localidad."; 2983 } else if (document.body.className.match("i18n-fr")) { 2984 var str = "Entrez le code postal y la ville, s`il vous plait."; 2985 } else { 2986 var str = "Please type postcode and place."; 2987 } 2988 2989 $("#addressValidationFail").html(str); 2990 } else { 2991 $("#addressValidationFail").html(""); 2992 } 2993 }); 2994 }); 2995 }, // End attach. 2996 }; 2997})(jQuery); 2998(function ($) { 2999 /** 3000 * Attaches the autocomplete behavior to all required fields. 3001 */ 3002 Drupal.behaviors.autocomplete = { 3003 attach: function (context, settings) { 3004 var acdb = []; 3005 $("input.autocomplete", context).once("autocomplete", function () { 3006 var uri = this.value; 3007 if (!acdb[uri]) { 3008 acdb[uri] = new Drupal.ACDB(uri); 3009 } 3010 var $input = $("#" + this.id.substr(0, this.id.length - 13)) 3011 .attr("autocomplete", "OFF") 3012 .attr("aria-autocomplete", "list"); 3013 $($input[0].form).submit(Drupal.autocompleteSubmit); 3014 $input 3015 .parent() 3016 .attr("role", "application") 3017 .append( 3018 $( 3019 '<span class="element-invisible" aria-live="assertive"></span>' 3020 ).attr("id", $input.attr("id") + "-autocomplete-aria-live") 3021 ); 3022 new Drupal.jsAC($input, acdb[uri]); 3023 }); 3024 }, 3025 }; 3026 3027 /** 3028 * Prevents the form from submitting if the suggestions popup is open 3029 * and closes the suggestions popup when doing so. 3030 */ 3031 Drupal.autocompleteSubmit = function () { 3032 return ( 3033 $("#autocomplete").each(function () { 3034 this.owner.hidePopup(); 3035 }).length == 0 3036 ); 3037 }; 3038 3039 /** 3040 * An AutoComplete object. 3041 */ 3042 Drupal.jsAC = function ($input, db) { 3043 var ac = this; 3044 this.input = $input[0]; 3045 this.ariaLive = $("#" + this.input.id + "-autocomplete-aria-live"); 3046 this.db = db; 3047 3048 $input 3049 .keydown(function (event) { 3050 return ac.onkeydown(this, event); 3051 }) 3052 .keyup(function (event) { 3053 ac.onkeyup(this, event); 3054 }) 3055 .blur(function () { 3056 ac.hidePopup(); 3057 ac.db.cancel(); 3058 }); 3059 }; 3060 3061 /** 3062 * Handler for the "keydown" event. 3063 */ 3064 Drupal.jsAC.prototype.onkeydown = function (input, e) { 3065 if (!e) { 3066 e = window.event; 3067 } 3068 switch (e.keyCode) { 3069 case 40: // down arrow. 3070 this.selectDown(); 3071 return false;
3072 case 38: // up arrow. 3073 this.selectUp(); 3074 return false; 3075 default: 3076 // All other keys. 3077 return true; 3078 } 3079 }; 3080 3081 /** 3082 * Handler for the "keyup" event. 3083 */ 3084 Drupal.jsAC.prototype.onkeyup = function (input, e) { 3085 if (!e) { 3086 e = window.event; 3087 } 3088 switch (e.keyCode) { 3089 case 16: // Shift. 3090 case 17: // Ctrl. 3091 case 18: // Alt. 3092 case 20: // Caps lock. 3093 case 33: // Page up. 3094 case 34: // Page down. 3095 case 35: // End. 3096 case 36: // Home. 3097 case 37: // Left arrow. 3098 case 38: // Up arrow. 3099 case 39: // Right arrow. 3100 case 40: // Down arrow. 3101 return true; 3102 3103 case 9: // Tab. 3104 case 13: // Enter. 3105 case 27: // Esc. 3106 this.hidePopup(e.keyCode); 3107 return true; 3108 3109 default: 3110 // All other keys. 3111 if (input.value.length > 0 && !input.readOnly) { 3112 this.populatePopup(); 3113 } else { 3114 this.hidePopup(e.keyCode); 3115 } 3116 return true; 3117 } 3118 }; 3119 3120 /** 3121 * Puts the currently highlighted suggestion into the autocomplete field. 3122 */ 3123 Drupal.jsAC.prototype.select = function (node) { 3124 this.input.value = $(node).data("autocompleteValue"); 3125 $(this.input).trigger("autocompleteSelect", [node]); 3126 }; 3127 3128 /** 3129 * Highlights the next suggestion. 3130 */ 3131 Drupal.jsAC.prototype.selectDown = function () { 3132 if (this.selected && this.selected.nextSibling) { 3133 this.highlight(this.selected.nextSibling); 3134 } else if (this.popup) { 3135 var lis = $("li", this.popup); 3136 if (lis.length > 0) { 3137 this.highlight(lis.get(0)); 3138 } 3139 } 3140 }; 3141 3142 /** 3143 * Highlights the previous suggestion. 3144 */ 3145 Drupal.jsAC.prototype.selectUp = function () { 3146 if (this.selected && this.selected.previousSibling) { 3147 this.highlight(this.selected.previousSibling); 3148 } 3149 }; 3150 3151 /** 3152 * Highlights a suggestion. 3153 */ 3154 Drupal.jsAC.prototype.highlight = function (node) { 3155 if (this.selected) { 3156 $(this.selected).removeClass("selected"); 3157 } 3158 $(node).addClass("selected"); 3159 this.selected = node; 3160 $(this.ariaLive).html($(this.selected).html()); 3161 }; 3162 3163 /** 3164 * Unhighlights a suggestion. 3165 */ 3166 Drupal.jsAC.prototype.unhighlight = function (node) { 3167 $(node).removeClass("selected"); 3168 this.selected = false; 3169 $(this.ariaLive).empty(); 3170 }; 3171 3172 /** 3173 * Hides the autocomplete suggestions. 3174 */ 3175 Drupal.jsAC.prototype.hidePopup = function (keycode) { 3176 // Select item if the right key or mousebutton was pressed. 3177 if ( 3178 this.selected && 3179 ((keycode && keycode != 46 && keycode != 8 && keycode != 27) || !keycode) 3180 ) { 3181 this.select(this.selected); 3182 } 3183 // Hide popup. 3184 var popup = this.popup; 3185 if (popup) { 3186 this.popup = null; 3187 $(popup).fadeOut("fast", function () { 3188 $(popup).remove(); 3189 }); 3190 } 3191 this.selected = false; 3192 $(this.ariaLive).empty(); 3193 }; 3194 3195 /** 3196 * Positions the suggestions popup and starts a search. 3197 */ 3198 Drupal.jsAC.prototype.populatePopup = function () { 3199 var $input = $(this.input); 3200 var position = $input.position(); 3201 // Show popup. 3202 if (this.popup) { 3203 $(this.popup).remove(); 3204 } 3205 this.selected = false; 3206 this.popup = $('<div id="autocomplete"></div>')[0]; 3207 this.popup.owner = this; 3208 $(this.popup).css({ 3209 top: parseInt(position.top + this.input.offsetHeight, 10) + "px", 3210 left: parseInt(position.left, 10) + "px", 3211 width: $input.innerWidth() + "px", 3212 display: "none", 3213 }); 3214 $input.before(this.popup); 3215 3216 // Do search. 3217 this.db.owner = this; 3218 this.db.search(this.input.value); 3219 }; 3220 3221 /** 3222 * Fills the suggestion popup with any matches received. 3223 */ 3224 Drupal.jsAC.prototype.found = function (matches) { 3225 // If no value in the textfield, do not show the popup. 3226 if (!this.input.value.length) { 3227 return false; 3228 } 3229 3230 // Prepare matches. 3231 var ul = $("<ul></ul>"); 3232 var ac = this; 3233 for (key in matches) { 3234 $("<li></li>") 3235 .html($("<div></div>").html(matches[key])) 3236 .mousedown(function () { 3237 ac.hidePopup(this); 3238 }) 3239 .mouseover(function () { 3240 ac.highlight(this); 3241 }) 3242 .mouseout(function () { 3243 ac.unhighlight(this); 3244 }) 3245 .data("autocompleteValue", key) 3246 .appendTo(ul); 3247 } 3248 3249 // Show popup with matches, if any. 3250 if (this.popup) { 3251 if (ul.children().length) { 3252 $(this.popup).empty().append(ul).show(); 3253 $(this.ariaLive).html(Drupal.t("Autocomplete popup")); 3254 } else { 3255 $(this.popup).css({ visibility: "hidden" }); 3256 this.hidePopup(); 3257 } 3258 } 3259 }; 3260 3261 Drupal.jsAC.prototype.setStatus = function (status) { 3262 switch (status) { 3263 case "begin": 3264 $(this.input).addClass("throbbing"); 3265 $(this.ariaLive).html(Drupal.t("Searching for matches...")); 3266 break; 3267 case "cancel": 3268 case "error": 3269 case "found": 3270 $(this.input).removeClass("throbbing"); 3271 break; 3272 } 3273 }; 3274 3275 /** 3276 * An AutoComplete DataBase object. 3277 */ 3278 Drupal.ACDB = function (uri) { 3279 this.uri = uri; 3280 this.delay = 300; 3281 this.cache = {}; 3282 }; 3283 3284 /** 3285 * Performs a cached and delayed search. 3286 */ 3287 Drupal.ACDB.prototype.search = function (searchString) { 3288 var db = this; 3289 this.searchString = searchString; 3290 3291 // See if this string needs to be searched for anyway. The pattern ../ is 3292 // stripped since it may be misinterpreted by the browser. 3293 searchString = searchString.replace(/^\s+|\.{2,}\/|\s+$/g, ""); 3294 // Skip empty search strings, or search strings ending with a comma, since 3295 // that is the separator between search terms. 3296 if ( 3297 searchString.length <= 0 || 3298 searchString.charAt(searchString.length - 1) == "," 3299 ) { 3300 return; 3301 } 3302 3303 // See if this key has been searched for before. 3304 if (this.cache[searchString]) { 3305 return this.owner.found(this.cache[searchString]); 3306 } 3307 3308 // Initiate delayed search. 3309 if (this.timer) { 3310 clearTimeout(this.timer); 3311 } 3312 this.timer = setTimeout(function () { 3313 db.owner.setStatus("begin"); 3314 3315 // Ajax GET request for autocompletion. We use Drupal.encodePath instead of 3316 // encodeURIComponent to allow autocomplete search terms to contain slashes. 3317 $.ajax({ 3318 type: "GET", 3319 url: db.uri + "/" + Drupal.encodePath(searchString), 3320 dataType: "json", 3321 success: function (matches) { 3322 if (typeof matches.status == "undefined" || matches.status != 0) { 3323 db.cache[searchString] = matches; 3324 // Verify if these are still the matches the user wants to see. 3325 if (db.searchString == searchString) { 3326 db.owner.found(matches); 3327 } 3328 db.owner.setStatus("found"); 3329 } 3330 }, 3331 error: function (xmlhttp) { 3332 Drupal.displayAjaxError(Drupal.ajaxError(xmlhttp, db.uri)); 3333 }, 3334 }); 3335 }, this.delay); 3336 }; 3337 3338 /** 3339 * Cancels the current autocomplete request. 3340 */ 3341 Drupal.ACDB.prototype.cancel = function () { 3342 if (this.owner) this.owner.setStatus("cancel"); 3343 if (this.timer) clearTimeout(this.timer); 3344 this.searchString = ""; 3345 }; 3346})(jQuery); 3347(function ($) { 3348 Drupal.behaviors.feature_address = { 3349 attach: function (context) { 3350 $(document).ready(function () { 3351 $("#edit-field-address-address-value-2").removeAttr("disabled"); 3352 $("#edit-field-address-address-value-2") 3353 .parent() 3354 .removeClass("form-disabled"); 3355 3356 var toggleRadius = function (hide) { 3357 // Disable this for now as they don't like it but don't delete it. 3358 // I'm pretty sure we need this back. 3359 return; 3360 /* 3361 if (hide === 'hide') { 3362 $('#edit-field-address-address-value-2').attr('disabled', 'disabled'); 3363 $('#edit-field-address-address-value-2').parent().addClass('form-disabled'); 3364 } 3365 else { 3366 $('#edit-field-address-address-value-2').removeAttr('disabled'); 3367 $('#edit-field-address-address-value-2').parent().removeClass('form-disabled'); 3368 } 3369 */ 3370 }; 3371 3372 var checkFields = function () { 3373 var zip = $("#edit-field-address-address-value").val(); 3374 var city = $("#edit-field-address-address-value-1").val(); 3375 if (zip && zip.length === 5 && city) { 3376 toggleRadius(); 3377 } else { 3378 toggleRadius("hide"); 3379 } 3380 3381 // Disable this for now as they don't like it but don't delete it. 3382 // I'm pretty sure we need this back. 3383 $("#edit-field-address-address-value-2").removeAttr("disabled"); 3384 $("#edit-field-address-address-value-2") 3385 .parent() 3386 .removeClass("form-disabled"); 3387 }; 3388 3389 // Init. 3390 checkFields();
3391 // onChange. 3392 $("#edit-field-address-address-value").on("change", function () { 3393 //console.log('edit-field-address-address-value ', document.getElementById("edit-field-address-address-value").value); 3394 //console.log('edit-field-address-address-value-1 ', document.getElementById("edit-field-address-address-value-1").value); 3395 if ( 3396 document.getElementById("edit-field-address-address-value") 3397 .value !== "" && 3398 document.getElementById("edit-field-address-address-value-1") 3399 .value !== "" 3400 ) { 3401 $("#addressValidationFail").html(""); 3402 } 3403 checkFields(); 3404 }); 3405 3406 $("#edit-field-address-address-value-1").on("change", function () { 3407 if ( 3408 document.getElementById("edit-field-address-address-value") 3409 .value !== "" && 3410 document.getElementById("edit-field-address-address-value-1") 3411 .value !== "" 3412 ) { 3413 $("#addressValidationFail").html(""); 3414 } 3415 checkFields(); 3416 }); 3417 3418 $("#edit-field-address-address-value-2").on("change", function () { 3419 if ( 3420 document.getElementById("edit-field-address-address-value") 3421 .value === "" || 3422 document.getElementById("edit-field-address-address-value-1") 3423 .value === "" 3424 ) { 3425 if (document.body.className.match("i18n-de")) { 3426 var str = "Bitte PLZ und Ort eingeben."; 3427 } else if (document.body.className.match("i18n-pl")) { 3428 var str = "Prosze podaj kod pocztowy i miejscowoà âæ."; 3429 } else if (document.body.className.match("i18n-es")) { 3430 var str = 3431 "Por favor introduzca el código postal y la localidad."; 3432 } else if (document.body.className.match("i18n-fr")) { 3433 var str = "Entrez le code postal y la ville, s`il vous plait."; 3434 } else { 3435 var str = "Please type postcode and place."; 3436 } 3437 3438 $("#addressValidationFail").html(str); 3439 } else { 3440 $("#addressValidationFail").html(""); 3441 } 3442 }); 3443 }); 3444 }, // End attach. 3445 }; 3446})(jQuery); 3447(function ($) { 3448 /** 3449 * Handler for the "keyup" event. 3450 */ 3451 Drupal.jsAC.prototype.onkeyup = function (input, e) { 3452 if (!e) { 3453 e = window.event; 3454 } 3455 switch (e.keyCode) { 3456 case 16: // Shift. 3457 case 17: // Ctrl. 3458 case 18: // Alt. 3459 case 20: // Caps lock. 3460 case 33: // Page up. 3461 case 34: // Page down. 3462 case 35: // End. 3463 case 36: // Home. 3464 case 37: // Left arrow. 3465 case 38: // Up arrow. 3466 case 39: // Right arrow. 3467 case 40: // Down arrow. 3468 return true; 3469 3470 // Created custom function to submit the form on enter 3471 case 13: // Enter. 3472 this.hidePopup(e.keyCode); 3473 this.redirect(this.selected); 3474 return true; 3475 3476 case 9: // Tab. 3477 case 27: // Esc. 3478 this.hidePopup(e.keyCode); 3479 return true; 3480 3481 default: 3482 // All other keys. 3483 if (input.value.length > 0 && !input.readOnly) { 3484 this.populatePopup(); 3485 } else { 3486 this.hidePopup(e.keyCode); 3487 } 3488 return true; 3489 } 3490 }; 3491 3492 /** 3493 * Highlights the previous suggestion. 3494 */ 3495 Drupal.jsAC.prototype.highlight = function (node) { 3496 if (this.selected) { 3497 $(this.selected).removeClass("hover"); 3498 } 3499 $(node).addClass("hover"); 3500 this.selected = node; 3501 $(this.ariaLive).html($(this.selected).html()); 3502 }; 3503 3504 /** 3505 * Unhighlights a suggestion. 3506 */ 3507 Drupal.jsAC.prototype.unhighlight = function (node) { 3508 $(node).removeClass("hover"); 3509 // this.selected = false; 3510 $(this.ariaLive).empty(); 3511 }; 3512 3513 /** 3514 * Hides the autocomplete suggestions. 3515 */ 3516 Drupal.jsAC.prototype.hidePopup = function (keycode) { 3517 // Select item if the right key or mousebutton was pressed. 3518 if ( 3519 this.selected && 3520 ((keycode && keycode != 46 && keycode != 8 && keycode != 27) || !keycode) 3521 ) { 3522 this.input.value = $(this.selected).data("autocompleteValue"); 3523 } 3524 // Hide popup. 3525 var popup = this.popup; 3526 if (popup) { 3527 this.popup = null; 3528 $(popup).fadeOut("fast", function () { 3529 $(popup).remove(); 3530 }); 3531 } 3532 // this.selected = false;
3533 $(this.ariaLive).empty(); 3534 }; 3535 3536 Drupal.jsAC.prototype.redirect = function (selected) { 3537 if (selected) { 3538 window.location.href = $("#autocomplete").find("li.hover a").attr("href"); 3539 } else { 3540 var search = $("#feature-site-search-header-block-form") 3541 .find("#edit-input") 3542 .val(); 3543 var glossary_search = $("#feature-glossary-dictionary-search-form") 3544 .find(".search-form #edit-search-box") 3545 .val(); 3546 if (search !== "") { 3547 window.location.href = 3548 Drupal.settings.basePath + Drupal.settings.searchUrl + "?s=" + search; 3549 } else if (glossary_search !== "") { 3550 window.location.href = 3551 Drupal.settings.feature_glossary.path + "?d=" + glossary_search; 3552 } 3553 3554 return false; 3555 } 3556 }; 3557 3558 Drupal.ACDB.prototype.search = function (searchString) { 3559 var db = this; 3560 this.searchString = searchString; 3561 3562 // See if this string needs to be searched for anyway. 3563 searchString = searchString.replace(/^\s+|\s+$/, ""); 3564 if ( 3565 searchString.length <= 0 || 3566 searchString.charAt(searchString.length - 1) == "," 3567 ) { 3568 return; 3569 } 3570 3571 // See if this key has been searched for before. 3572 if (this.cache[searchString]) { 3573 return this.owner.found(this.cache[searchString]); 3574 } 3575 3576 // Initiate delayed search. 3577 if (this.timer) { 3578 clearTimeout(this.timer); 3579 } 3580 this.timer = setTimeout(function () { 3581 db.owner.setStatus("begin"); 3582 3583 // Ajax GET request for autocompletion. We use Drupal.encodePath instead of 3584 // encodeURIComponent to allow autocomplete search terms to contain slashes. 3585 $.ajax({ 3586 type: "GET", 3587 url: db.uri + "/" + Drupal.encodePath(searchString), 3588 dataType: "json", 3589 success: function (matches) { 3590 if (typeof matches.status == "undefined" || matches.status != 0) { 3591 db.cache[searchString] = matches; 3592 // Verify if these are still the matches the user wants to see. 3593 if (db.searchString == searchString) { 3594 db.owner.found(matches); 3595 } 3596 db.owner.setStatus("found"); 3597 } 3598 }, 3599 error: function (xmlhttp) { 3600 // alert(Drupal.ajaxError(xmlhttp, db.uri)); 3601 }, 3602 }); 3603 }, this.delay); 3604 }; 3605})(jQuery); 3606 3607jQuery.extend(Drupal.settings, { 3608 "colorbox": { 3609 "transition": "elastic", 3610 "speed": "350", 3611 "opacity": "0.85", 3612 "slideshow": false, 3613 "slideshowAuto": true, 3614 "slideshowSpeed": "2500", 3615 "slideshowStart": "start slideshow", 3616 "slideshowStop": "stop slideshow", 3617 "current": "{current} of {total}", 3618 "previous": "", 3619 "next": "", 3620 "close": "", 3621 "overlayClose": true, 3622 "maxWidth": "98%", 3623 "maxHeight": "98%", 3624 "initialWidth": "98%", 3625 "initialHeight": "98%", 3626 "fixed": false, 3627 "scrolling": true, 3628 "mobiledetect": false, 3629 "mobiledevicewidth": "750px" 3630 } 3631}); 3632 3633/** 3634 * @file 3635 * Attaches behaviors for the Contextual module. 3636 */ 3637 3638(function ($) { 3639 3640 Drupal.contextualLinks = Drupal.contextualLinks || {}; 3641 3642 /** 3643 * Attaches outline behavior for regions associated with contextual links. 3644 */ 3645 Drupal.behaviors.contextualLinks = { 3646 attach: function (context) { 3647 // added the wrapper to the parent 3648 $(".contextual-links-wrapper").parent().addClass('contextual-links-region clearfix'); 3649 3650 $('div.contextual-links-wrapper', context).once('contextual-links', function () { 3651 var $wrapper = $(this); 3652 var $region = $wrapper.closest('.contextual-links-region'); 3653 var $links = $wrapper.find('ul.contextual-links'); 3654 var $trigger = $('<a class="contextual-links-trigger" href="#" />').text(Drupal.t('Configure')).click( 3655 function () { 3656 $links.stop(true, true).slideToggle(100); 3657 $wrapper.toggleClass('contextual-links-active'); 3658 return false; 3659 } 3660 ); 3661 // Attach hover behavior to trigger and ul.contextual-links. 3662 $trigger.add($links).hover( 3663 function () { $region.addClass('contextual-links-region-active'); }, 3664 function () { $region.removeClass('contextual-links-region-active'); } 3665 ); 3666 // Hide the contextual links when user clicks a link or rolls out of the .contextual-links-region. 3667 $region.bind('mouseleave click', Drupal.contextualLinks.mouseleave); 3668 // Prepend the trigger. 3669 $wrapper.prepend($trigger); 3670 }); 3671 } 3672 }; 3673 3674 /** 3675 * Disables outline for the region contextual links are associated with. 3676 */ 3677 Drupal.contextualLinks.mouseleave = function () { 3678 $(this) 3679 .find('.contextual-links-active').removeClass('contextual-links-active') 3680 .find('ul.contextual-links').hide(); 3681 }; 3682 3683})(jQuery); 3684; 3685// (function ($) { 3686// 3687// Drupal.behaviors.languageHandler = { 3688// attach: function(context) { 3689// 3690// var path = $(location).attr('pathname'); 3691// 3692// for (var i = Drupal.settings.feature_i18n.prefixes.length - 1; i >= 0; i--) { 3693// var prefix = Drupal.settings.feature_i18n.prefixes[i], 3694// lang = path.substring(1, 3); 3695// 3696// if (prefix == lang) { 3697// $.cookie('personalization.language', lang, { expires: parseInt(Drupal.settings.feature_i18n.cookie_lifetime), path: '/' }); 3698// } 3699// }; 3700// 3701// if (path == '/') { 3702// if (!$.cookie('personalization.language') && Drupal.settings.feature_i18n.landingspage) { 3703// window.location = Drupal.settings.feature_i18n.path; 3704// } 3705// else if ($.cookie('personalization.language')) { 3706// window.location = path + $.cookie('personalization.language'); 3707// } 3708// } 3709// 3710// } 3711// }; 3712// 3713// })(jQuery); 3714 3715 3716 3717; 3718var lang = window.location.pathname.substring(1, 3); 3719if (lang == "no") { 3720 var langreadmore = "Les mer"; 3721 var langpause = "Pause"; 3722 var langplay = "Spill"; 3723 var langhideexplanation = "Skjul forklaring"; 3724} 3725if (lang == "de") { 3726 var langreadmore = "Mehr lesen"; 3727 var langpause = "Pause"; 3728 var langplay = "Vorlesen"; 3729 var langhideexplanation = "Begriffserklärung ausblenden"; 3730} 3731if (lang == "en") { 3732 var langreadmore = "Read more"; 3733 var langpause = "Pause"; 3734 var langplay = "Listen"; 3735 var langhideexplanation = "Hide explanation"; 3736} 3737if (lang == "fr") { 3738 var langreadmore = "Pour en savoir plus"; 3739 var langpause = "Pause"; 3740 var langplay = "Ãcouter"; 3741 var langhideexplanation = "Masquer l'explication"; 3742} 3743if (lang == "ru") { 3744 var langreadmore = "ÐодÑобнее"; 3745 var langpause = "ÐеÑеÑÑв"; 3746 var langplay = "СлÑÑаÑÑ"; 3747 var langhideexplanation = "СкÑÑÑÑ Ð¾Ð±ÑÑÑнение"; 3748} 3749if (lang == "tr") { 3750 var langreadmore = "Daha fazla bilgi"; 3751 var langpause = "Mola"; 3752 var langplay = "Dinle";
3753 var langhideexplanation = "Açıklamayı gizle"; 3754} 3755if (lang == "ar") { 3756 var langreadmore = "ÙØ±Ø§Ø¡Ø© اÙÙ Ø²ÙØ¯"; 3757 var langpause = "Ø§Ø³ØªØ±Ø§ØØ©"; 3758 var langplay = "است٠اع"; 3759 var langhideexplanation = "Ø¥Ø®ÙØ§Ø¡ Ø§ÙØ´Ø±Ø"; 3760} 3761if (lang == "fa") { 3762 var langreadmore = "Ø®ÙØ§ÙØ¯Ù Ù Ø·Ø§ÙØ¨ Ø¨ÛØ´ØªØ±"; 3763 var langpause = "Ù Ú©Ø«"; 3764 var langplay = "Ú¯ÙØ´ Ú©Ù"; 3765 var langhideexplanation = "Ù¾ÙÙØ§Ù Ú©Ø±Ø¯Ù ØªÙØ¶ÛØØ§Øª"; 3766} 3767if (lang == "bg") { 3768 var langreadmore = "ÐÑоÑеÑеÑе повеÑе"; 3769 var langpause = "ÐÑобив"; 3770 var langplay = "СлÑÑайÑе"; 3771 var langhideexplanation = "СкÑий обÑÑнениеÑо"; 3772} 3773if (lang == "pl") { 3774 var langreadmore = "Czytaj dalej"; 3775 var langpause = "Przerwa"; 3776 var langplay = "PosÅuchaj"; 3777 var langhideexplanation = "Ukryj wyjaÅnienie"; 3778} 3779if (lang == "sq") { 3780 var langreadmore = "Lexoni më shumë"; 3781 var langpause = "Pauzë"; 3782 var langplay = "Dëgjo"; 3783 var langhideexplanation = "Fshih shpjegimin"; 3784} 3785if (lang == "ro") { 3786 var langreadmore = "CitiÈi mai mult"; 3787 var langpause = "PauzÄ"; 3788 var langplay = "AscultaÈi"; 3789 var langhideexplanation = "AscundeÈi explicaÈia"; 3790} 3791if (lang == "es") { 3792 var langreadmore = "Leer más"; 3793 var langpause = "Pausa"; 3794 var langplay = "Escuche"; 3795 var langhideexplanation = "Ocultar explicación"; 3796} 3797if (lang == "nl") { 3798 var langreadmore = "Lees meer"; 3799 var langpause = "Pauze"; 3800 var langplay = "Luister naar"; 3801 var langhideexplanation = "Uitleg verbergen"; 3802} 3803if (lang == "uk") { 3804 var langreadmore = "ÐÑоÑиÑаÑи"; 3805 var langpause = "ÐеÑеÑва"; 3806 var langplay = "СлÑÑ Ð°Ñи"; 3807 var langhideexplanation = "ÐÑÐ¸Ñ Ð¾Ð²Ð°Ñи поÑÑненнÑ"; 3808} 3809 3810(function ($) { 3811 3812 3813 3814 $(document).ready(function (e) { 3815 const urlParams = new URLSearchParams(window.location.search); 3816 const searchWord = urlParams.get('tx_solr[q]'); 3817 if (searchWord) { 3818 var content = $(".icon-results h1").html(); 3819 $("#edit-input").val(searchWord); 3820 $(".icon-results h1").html(content + ' "' + searchWord + '"'); 3821 } 3822 3823 if (!$("#feature-glossary-dictionary-form").length) { 3824 if ($("#no-results").length) { 3825 var content = $("#no-results p").html(); 3826 $("#no-results p").html(content + ' "' + searchWord + '"'); 3827 } 3828 } 3829 3830 if ($(".ext").length) { 3831 var $row = $(".ext"); 3832 $row.each(function () { 3833 var thisHtml = $(this).html(); 3834 $(this).html( 3835 thisHtml + 3836 '<span class="ext"><span class="element-invisible"> (link is external)</span></span>' 3837 ); 3838 }); 3839 } 3840 3841 function getLocation(href) { 3842 var match = href.match( 3843 /^(https?\:)\/\/(([^:\/?#]*)(?:\:([0-9]+))?)([\/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/ 3844 ); 3845 return ( 3846 match && { 3847 href: href, 3848 protocol: match[1], 3849 host: match[2], 3850 hostname: match[3], 3851 port: match[4], 3852 pathname: match[5], 3853 search: match[6], 3854 hash: match[7], 3855 } 3856 ); 3857 } 3858 3859 /* Split screen functionality - load content partially in other language */ 3860 3861 var $splitScreenButton = $("[data-menu-split-screen-button]"); 3862 var $splitScreenCloseButton = $("[data-menu-split-screen-close-button]"); 3863 var otherlanguageContainerAttr = "data-other-language-container"; 3864 var otherlanguageContentAttr = "data-other-language-content-to"; 3865 var otherlanguageContentFromAttr = "data-other-language-content-from"; 3866 var $otherLanguageContainer = $("[" + otherlanguageContainerAttr + "]"); 3867 var $otherLanguageContent = $("[" + otherlanguageContentAttr + "]"); 3868 var $otherLanguagesSelect = $("[data-choose-other-language]"); 3869 3870 // Change second language event 3871 $otherLanguagesSelect.on("change", function (e) { 3872 var selectedOption = $otherLanguagesSelect.find("option:selected"); 3873 sendLanguageRequest( 3874 selectedOption.val(), 3875 selectedOption.attr("direction"), 3876 selectedOption.attr("hreflang") 3877 ); 3878 }); 3879 3880 $splitScreenButton.on("click", function (e) { 3881 e.preventDefault(); 3882 3883 $splitScreenButton.toggleClass("active"); 3884 $otherLanguageContainer.toggleClass("active"); 3885 $splitScreenButton.attr("aria-expanded", function (i, attr) { 3886 return attr == "true" ? "false" : "true"; 3887 }); 3888 if ($otherLanguageContainer.hasClass("active")) { 3889 initialContent(); 3890 } else { 3891 localStorage.removeItem("secondLanguageCode"); 3892 localStorage.removeItem("secondLanguageDir"); 3893 } 3894 }); 3895 3896 $splitScreenCloseButton.on("click", function (e) { 3897 e.preventDefault(); 3898 $splitScreenButton.click(); 3899 }); 3900 3901 // Load the same page in other language, find needed place and put as split screen 3902 function sendLanguageRequest(url, dir, hreflang) { 3903 $.ajax({ 3904 url: url, 3905 context: document.body, 3906 }).done(function (result) { 3907 var newLanguageContent = $(result) 3908 .find("[" + otherlanguageContentFromAttr + "]") 3909 .html(); 3910 $otherLanguageContent.html(newLanguageContent); 3911 3912 // Change language direction in the div block if e.g. it is arabic 3913 $otherLanguageContent.attr("dir", dir); 3914 3915 // Reset Colorbox for images and Readspeaker 3916 setTimeout(function () { 3917 Drupal.behaviors.colorboxEvent.resetColorbox(); 3918 jQuery.fn.reinitReadspeaker(); 3919 }); 3920 3921 localStorage.setItem("secondLanguageCode", hreflang); 3922 localStorage.setItem("secondLanguageDir", dir); 3923 }); 3924 } 3925 3926 // Load initially from localstorage if saved, if not - first language from select 3927 function initialContent() { 3928 var hreflang, initialDir, initialUrl; 3929 3930 hreflang = localStorage.getItem("secondLanguageCode"); 3931 initialDir = localStorage.getItem("secondLanguageDir"); 3932 3933 if ( 3934 !hreflang || 3935 !$otherLanguagesSelect.find("option[hreflang=" + hreflang + "]").length 3936 ) { 3937 hreflang = $otherLanguagesSelect.find("option:first").attr("hreflang"); 3938 initialDir = $otherLanguagesSelect 3939 .find("option:first") 3940 .attr("direction"); 3941 } 3942 3943 initialUrl = $otherLanguagesSelect 3944 .find("option[hreflang=" + hreflang + "]") 3945 .val(); 3946 3947 sendLanguageRequest(initialUrl, initialDir, hreflang); 3948 $otherLanguagesSelect.val(initialUrl); 3949 } 3950 3951 if (localStorage.getItem("secondLanguageCode") !== null) { 3952 $splitScreenButton.click(); 3953 } 3954 3955 /* End split screen*/ 3956 3957 /* Wörterbuch */ 3958 3959 var $otherLanguagesDetailSelect = $("[data-other-language-detail]"); 3960 var $otherLanguagesOverviewSelect = $("[data-other-language-overview]"); 3961 3962 var languageDirection = { 3963 0: "ltr", 3964 1: "ltr", 3965 2: "ltr", 3966 3: "ltr", 3967 4: "ltr", 3968 5: "rtl", 3969 6: "rtl", 3970 7: "ltr", 3971 8: "ltr", 3972 9: "ltr", 3973 10: "ltr", 3974 11: "ltr", 3975 12: "ltr", 3976 }; 3977 3978 var languageName = { 3979 0: "Deutsch ", 3980 1: "English ", 3981 2: "Français ", 3982 3: "Ð ÑÑÑкий ", 3983 4: "Türkçe ", 3984 5: "عرب٠", 3985 6: "ÙØ§Ø±Ø³Û ", 3986 7: "ÐÑлгаÑÑки ", 3987 8: "Polski ", 3988 9: "Shqip ", 3989 10: "RomânÄ ", 3990 11: "Español ", 3991 12: "Nederlands ", 3992 14: "ÑкÑаÑнÑÑка" 3993 }; 3994 3995 var langSlug = { 3996 0: "de-DE", 3997 1: "en-GB",
3998 2: "fr-FR", 3999 3: "ru-RU", 4000 4: "tr-TR", 4001 5: "ar-AR", 4002 6: "fa-IR", 4003 7: "bg-BG", 4004 8: "pl-PL", 4005 9: "sq-SQ", 4006 10: "ro-RO", 4007 11: "es-ES", 4008 12: "nl-NL", 4009 14: "uk-UA" 4010 }; 4011 4012 $otherLanguagesDetailSelect.on("change", function (e) { 4013 var selectedOption = $otherLanguagesDetailSelect.find("option:selected"); 4014 detailSendLanguageRequest( 4015 selectedOption.val(), 4016 selectedOption.attr("dir"), 4017 selectedOption.attr("lang") 4018 ); 4019 }); 4020 4021 $otherLanguagesOverviewSelect.on("change", function (e) { 4022 var selectedOption = $otherLanguagesOverviewSelect.find( 4023 "option:selected" 4024 ); 4025 overviewSendLanguageRequest( 4026 selectedOption.val(), 4027 selectedOption.attr("dir"), 4028 selectedOption.attr("lang") 4029 ); 4030 }); 4031 4032 function detailSendLanguageRequest(url, dir, hreflang) { 4033 var aktDir = languageDirection[dir]; 4034 var aktlangSlug = langSlug[dir]; 4035 4036 $.ajax({ 4037 url: url, 4038 context: document.body, 4039 }).done(function (result) { 4040 var newLanguageContent = $(result) 4041 .find( 4042 ".vocabulary-glossary.view-mode-full div.glossary-description-wrap" 4043 ) 4044 .html(); 4045 4046 var $otherLanguageDictionaryContent = $( 4047 ".vocabulary-glossary.view-mode-translation" 4048 ).html(newLanguageContent); 4049 // Change language direction in the div block if e.g. it is arabic 4050 $otherLanguageDictionaryContent.attr("dir", aktDir); 4051 //} 4052 4053 var aktID = $otherLanguageDictionaryContent.attr("id"); 4054 aktID = aktID + aktlangSlug; 4055 $otherLanguageDictionaryContent.attr("id", aktID); 4056 4057 // Reset Colorbox for images and Readspeaker 4058 setTimeout(function () { 4059 Drupal.behaviors.colorboxEvent.resetColorbox(); 4060 jQuery.fn.reinitReadspeaker(); 4061 }); 4062 4063 localStorage.setItem("secondLanguageCodeDictionary", hreflang); 4064 localStorage.setItem("secondLanguageDirDictionary", dir); 4065 }); 4066 } 4067 4068 function overviewSendLanguageRequest(url, dir, hreflang) { 4069 var pathname = url; 4070 4071 var aktDir = languageDirection[dir]; 4072 4073 $.ajax({ 4074 url: pathname, 4075 dataType: "json", 4076 type: "GET", 4077 }) 4078 .done((data) => { 4079 var letterIds = Object.keys(data); 4080 var aktHreflang = languageName[hreflang]; 4081 4082 for (var i = 0; i < letterIds.length; i++) { 4083 var aktID = letterIds[i]; 4084 4085 $("#glossary-" + aktID + "-translated").attr("dir", aktDir); 4086 $("#glossary-" + aktID + "-translated .info.rs_skip").text( 4087 aktHreflang 4088 ); 4089 $("#glossary-" + aktID + "-translated .rs_skip .rsbtn_play").attr( 4090 "href", 4091 data[aktID].readspeakerURL.replace( 4092 /lang=[a-z]{2}-[A-Z]{2}/, 4093 "lang=" + langSlug[hreflang] 4094 ) 4095 ); 4096 $("#glossary-" + aktID + "-translated .word-translated").text( 4097 data[aktID].translation 4098 ); 4099 } 4100 4101 // Reset Colorbox for images and Readspeaker 4102 setTimeout(function () { 4103 Drupal.behaviors.colorboxEvent.resetColorbox(); 4104 jQuery.fn.reinitReadspeaker(); 4105 }, 0); 4106 4107 // Falls benötigt 4108 /*setTimeout( function() { 4109 for(var i=0; i<letterIds.length; i++) { 4110 4111 var aktID = letterIds[i]; 4112 4113 $("#glossary-"+aktID+"-translated").attr("dir", aktDir); 4114 $("#glossary-"+aktID+"-translated .info.rs_skip").text(aktHreflang); 4115 $("#glossary-"+aktID+"-translated .rs_skip .rsbtn_play").attr("href", data[aktID].readspeakerURL.replace(/lang=[a-z]{2}-[A-Z]{2}/, 'lang=' + langSlug[hreflang])); 4116 $("#glossary-"+aktID+"-translated .word-translated").text(data[aktID].translation); 4117 4118 } 4119 }, 500);*/ 4120 }) 4121 .fail((jqXHR, errorMessage, error) => { 4122 console.warn("Could not load translation data :: ", errorMessage); 4123 }); 4124 4125 localStorage.setItem("secondLanguageCodeDictionary", hreflang); 4126 localStorage.setItem("secondLanguageDirDictionary", dir); 4127 } 4128 4129 function initialDictionaryContent() { 4130 var hreflangDictionary, initialDirDictionary, initialUrlDictionary; 4131 4132 hreflangDictionary = localStorage.getItem("secondLanguageCodeDictionary"); 4133 initialDirDictionary = localStorage.getItem( 4134 "secondLanguageDirDictionary" 4135 ); 4136 4137 if ($("div").hasClass("glossary-term-description")) { 4138 if ( 4139 !hreflangDictionary || 4140 !$otherLanguagesDetailSelect.find( 4141 "option[lang=" + hreflangDictionary + "]" 4142 ).length 4143 ) { 4144 hreflangDictionary = $otherLanguagesDetailSelect 4145 .find("option:first") 4146 .attr("lang"); 4147 initialDirDictionary = $otherLanguagesDetailSelect 4148 .find("option:first") 4149 .attr("dir"); 4150 } 4151 initialUrlDictionary = $otherLanguagesDetailSelect 4152 .find("option[lang=" + hreflangDictionary + "]") 4153 .val(); 4154 4155 detailSendLanguageRequest( 4156 initialUrlDictionary, 4157 initialDirDictionary, 4158 hreflangDictionary 4159 ); 4160 $otherLanguagesDetailSelect.val(initialUrlDictionary); 4161 } else if ($("div").hasClass("result-letter")) { 4162 if ( 4163 !hreflangDictionary || 4164 !$otherLanguagesOverviewSelect.find( 4165 "option[lang=" + hreflangDictionary + "]" 4166 ).length 4167 ) { 4168 hreflangDictionary = $otherLanguagesOverviewSelect 4169 .find("option:first") 4170 .attr("lang"); 4171 initialDirDictionary = $otherLanguagesOverviewSelect 4172 .find("option:first") 4173 .attr("dir"); 4174 } 4175 initialUrlDictionary = $otherLanguagesOverviewSelect 4176 .find("option[lang=" + hreflangDictionary + "]") 4177 .val(); 4178 4179 overviewSendLanguageRequest( 4180 initialUrlDictionary, 4181 initialDirDictionary, 4182 hreflangDictionary 4183 ); 4184 $otherLanguagesOverviewSelect.val(initialUrlDictionary); 4185 } 4186 } 4187 4188 if ($("body").hasClass("dictionary-page")) { 4189 initialDictionaryContent(); 4190 } 4191 }); 4192 4193 // autocomplete dynamic width 4194 4195 $(window).on("load resize orientationchange", function () { 4196 setTimeout(function () { 4197 var $widthAutocompleteBoxWidth = $( 4198 "#feature-site-search-header-block-form" 4199 ).width(); 4200 var $autocompleteBox = $(".autocomplete-suggestions"); 4201 $autocompleteBox.attr( 4202 "style",
4203 "width:" + $widthAutocompleteBoxWidth + "px !important" 4204 ); 4205 }, 500); 4206 }); 4207 4208 Drupal.behaviors.colorboxEvent = { 4209 attach: function (context, settings) { 4210 this.init(); 4211 4212 $(window).bind("resize orientationchange", function () { 4213 if ($(window).width() < 480) { 4214 $.fn.colorbox.resize({ 4215 width: "98%", 4216 }); 4217 } else { 4218 $.fn.colorbox.resize({ 4219 maxWidth: "98%", 4220 maxHeight: "98%", 4221 }); 4222 } 4223 }); 4224 }, 4225 4226 init: function () { 4227 $(".colorbox-iframe") 4228 .once("colorbox-iframe") 4229 .bind("click", function (e) { 4230 e.preventDefault(); 4231 4232 var params = Drupal.settings.colorbox; 4233 params.iframe = true; 4234 params.className = "windowview"; 4235 params.width = "60%"; 4236 params.fastIframe = false; // needed so colorbox will trigger onComplete when iframe is completly loaded 4237 4238 $(".colorbox-iframe").colorbox(params); 4239 4240 $(document).bind("cbox_complete", function () { 4241 // set an id on the iframe by getting the iframe name 4242 var iframeName = $("#cboxLoadedContent iframe").attr("name"); 4243 $("#cboxLoadedContent iframe").attr("id", "iframe-" + iframeName); 4244 4245 // get the id of the iframe 4246 var iframeId = document.getElementById("iframe-" + iframeName); 4247 4248 setTimeout(function () { 4249 var iframeHeight = 4250 parseInt(iframeId.contentWindow.document.body.scrollHeight) + 4251 45; // + 45 for colorbox top 4252 $("#iframe-" + iframeName).css("height", "100%"); 4253 4254 $.colorbox.resize({ 4255 height: iframeHeight, 4256 }); 4257 }, 300); 4258 }); 4259 }); 4260 4261 if ($(".popup-window").length) { 4262 $("input").attr("placeholder", ""); 4263 $("input[type=radio][value=2]").bind("click", function () { 4264 $(this).parents(".form-item").next(".form-item").addClass("show"); 4265 }); 4266 $("input[type=radio][value=1]").bind("click", function () { 4267 $(this).parents(".form-item").next(".form-item").removeClass("show"); 4268 }); 4269 } 4270 4271 $(".rsbtn_play").bind("click", function () { 4272 if (!$(this).parents(".readspeaker-container").length) { 4273 $.colorbox.remove(); 4274 Drupal.behaviors.colorboxEvent.resetColorbox(); 4275 } 4276 }); 4277 4278 $("#cboxPrevious").bind("click", function () { 4279 $("#cboxTitle").css("display", "none"); 4280 Drupal.behaviors.colorboxEvent.clearReadspeakerEvents(); 4281 }); 4282 4283 $("#cboxNext").bind("click", function () { 4284 $("#cboxTitle").css("display", "none"); 4285 Drupal.behaviors.colorboxEvent.clearReadspeakerEvents(); 4286 }); 4287 4288 $(document).bind("cbox_complete", function () { 4289 $("#cboxTitle").css("display", "block"); 4290 }); 4291 4292 $(document).on("cbox_closed", function () { 4293 Drupal.behaviors.colorboxEvent.clearReadspeakerEvents(); 4294 $.colorbox.remove(); 4295 Drupal.behaviors.colorboxEvent.resetColorbox(); 4296 }); 4297 }, 4298 4299 clearReadspeakerEvents: function () { 4300 if ($(".speaking").length) { 4301 if ($(".rsplaying").length) { 4302 $(".speaking").parent().find(".rsbtn_pause").trigger("click"); 4303 } 4304 $(".speaking").removeClass("speaking"); 4305 } 4306 }, 4307 4308 resetColorbox: function () { 4309 var params = []; 4310 var url = $(".colorbox-load").attr("href"); 4311 if (typeof url !== "undefined") { 4312 params = $.urlParams(url); 4313 } 4314 4315 $(".colorbox-load").colorbox( 4316 $.extend( 4317 { 4318 title: function () { 4319 return $(this).data("inner-title"); 4320 }, 4321 }, 4322 Drupal.settings.colorbox, 4323 params 4324 ) 4325 ); 4326 }, 4327 }; 4328 Drupal.behaviors.dictionary = { 4329 attach: function () { 4330 this.init(); 4331 this.changeLetters(); 4332 }, 4333 4334 init: function () { 4335 if ($("#dictionary-results .result-row").length === 0) { 4336 return; 4337 } 4338 4339 var $row = $("#dictionary-results .result-row"); 4340 4341 $row.each(function () { 4342 $(this) 4343 .once("result-row-link") 4344 .bind("click", function () { 4345 window.location = $(this).find(".dictionary-link a").attr("href"); 4346 }); 4347 }); 4348 }, 4349 4350 changeLetters: function () { 4351 if ( 4352 $("#feature-glossary-dictionary-search-form + .glossary-letters") 4353 .length === 0 4354 ) { 4355 return; 4356 } 4357 4358 // should only happen on phones 4359 if ($(window).width() < 768) { 4360 var $glossaryLetters = $(".glossary-letters"), 4361 arrList = $glossaryLetters.find("a"), 4362 activeSelected = ""; 4363 4364 // add a wrapper to hide the links 4365 $glossaryLetters.wrapInner('<div class="hidden"></div>'); 4366 // add a dropdown 4367 $glossaryLetters.prepend( 4368 '<select id="glossary-letters-dropdown"></select>' 4369 ); 4370 4371 var $drop = $("#glossary-letters-dropdown"); 4372 4373 // add the options to the dropdown 4374 arrList.each(function () { 4375 if ($(this).hasClass("active")) { 4376 activeSelected = "selected"; 4377 } else { 4378 activeSelected = ""; 4379 } 4380 4381 $drop.append( 4382 '<option value="' + 4383 $(this).attr("href") + 4384 '"' + 4385 activeSelected + 4386 ">" + 4387 $(this).text() + 4388 "</option>" 4389 ); 4390 }); 4391 4392 $drop.bind("change", function () { 4393 var loc = $drop.find(":selected").val(); 4394 window.location = loc; 4395 }); 4396 } 4397 }, 4398 }; 4399 Drupal.behaviors.facets = { 4400 attach: function (context, settings) { 4401 this.addDivider(); 4402 }, 4403 4404 addDivider: function () { 4405 var $mainThemeFacet = $( 4406 "#facetapi-facet-search-apicontent-index-block-main-theme-facet" 4407 ); 4408 if ($mainThemeFacet.length === 0) { 4409 return; 4410 } 4411 4412 if ( 4413 !$mainThemeFacet 4414 .closest(".sidebar-first") 4415 .children() 4416 .last() 4417 .children() 4418 .hasClass("facetapi-facet-main-theme-facet") 4419 ) { 4420 $mainThemeFacet.parent().addClass("main-theme-facet"); 4421 } 4422 }, 4423 }; 4424 Drupal.behaviors.forms = { 4425 attach: function (context, settings) { 4426 this.searchFields(); 4427 }, 4428 4429 searchFields: function () { 4430 if ( 4431 $("#block-feature-site-search-header-form").length === 0 && 4432 $("#feature-glossary-dictionary-search-form").length === 0 4433 ) { 4434 return; 4435 } 4436 4437 var arrInputs = [ 4438 "#block-feature-site-search-header-form", 4439 "#feature-glossary-dictionary-search-form", 4440 ]; 4441 4442 $.each(arrInputs, function (i) { 4443 var $input = $(arrInputs[i]).find('input[type="text"]'), 4444 $inputWrapper = $input.parents("form"); 4445 4446 $input.once("header-search-input-focus").bind("focus", function () { 4447 $inputWrapper.addClass("focus"); 4448 }); 4449 4450 $input.once("header-search-input-blur").bind("blur", function () { 4451 $inputWrapper.removeClass("focus"); 4452 }); 4453 }); 4454 }, 4455 }; 4456 Drupal.behaviors.languageSwitch = { 4457 attach: function (context, settings) { 4458 var $this = this; 4459 4460 $this.init(); 4461 }, 4462 4463 init: function () { 4464 $("a.language-switch-trigger") 4465 .once("language-switch") 4466 .bind("click", function (ev) { 4467 ev.preventDefault(); 4468 4469 var el = $(this); 4470 4471 if (el.parents(".language-switch").hasClass("active")) { 4472 Drupal.behaviors.languageSwitch.closeLanguageChoice(el); 4473 } else { 4474 Drupal.behaviors.languageSwitch.openLanguageChoice(el); 4475 } 4476 }); 4477 4478 $(document).bind("click", function (e) { 4479 var container = $(".language-switch"); 4480 4481 if (!container.is(e.target) && container.has(e.target).length === 0) { 4482 Drupal.behaviors.languageSwitch.closeLanguageChoice(e); 4483 } 4484 }); 4485 }, 4486 4487 openLanguageChoice: function (el) { 4488 $("ul.available-languages").slideDown("fast"); 4489 $(".language-switch").addClass("active"); 4490 $(".language-switch-trigger").attr("aria-expanded", "true"); 4491 }, 4492 4493 closeLanguageChoice: function (el) {
4494 $("ul.available-languages").slideUp("fast"); 4495 $(".language-switch").removeClass("active"); 4496 $(".language-switch-trigger").attr("aria-expanded", "false"); 4497 }, 4498 }; 4499 Drupal.behaviors.mobileMenu = { 4500 breakPoint1: 1024, 4501 breakPoint2: 768, 4502 breakPoint3: 420, 4503 fontState: "font-normal", 4504 4505 attach: function (context, settings) { 4506 var _this = this, 4507 _window = $(window); 4508 4509 _this.checkMobileMenuExist(); 4510 4511 _window.bind("resize orientationchange", function () { 4512 _this.checkMobileMenuExist(); 4513 }); 4514 }, 4515 4516 checkMobileMenuExist: function () { 4517 var _this = Drupal.behaviors.mobileMenu, 4518 _window = $(window), 4519 _body = $("body"), 4520 _html = $("html"); 4521 4522 if (_window.width() < _this.breakPoint2) { 4523 // Get choossen default font size 4524 if (_body.hasClass("font-middle")) { 4525 _this.fontState = "font-middle"; 4526 } else if (_body.hasClass("font-largest")) { 4527 _this.fontState = "font-largest"; 4528 } else { 4529 _this.fontState = "font-normal"; 4530 } 4531 4532 // Set font size to normal for mobile 4533 _body.removeClass(_this.fontState).addClass("font-normal"); 4534 4535 if (!_body.hasClass("mobile-menu")) { 4536 _this.createMobileMenu(); 4537 } else { 4538 _html.removeClass("show-mobile-search"); 4539 } 4540 } else { 4541 // Set choosen default font size back after resize 4542 var size = $.cookie("personalization.font_size"); 4543 if (size !== null) { 4544 _body.removeClass("font-normal").addClass("font-" + size); 4545 } 4546 4547 if (_body.hasClass("mobile-menu")) { 4548 _this.hideMobileMenu(); 4549 } 4550 } 4551 }, 4552 4553 createMobileMenu: function () { 4554 var _this = Drupal.behaviors.mobileMenu, 4555 _window = $(window), 4556 _body = $("body"), 4557 header = $("header > .container > .row"), 4558 menuButton = $(".js-mobile-menu-button"), 4559 mobileMenu = $('<div tabindex="-1" id="mobile-menu"></div>'), 4560 mobileMenuOverlay = $('<div id="mobile-menu-overlay" />'), 4561 mobileMenuContent = $("#block-feature-site-footer-doormat"), 4562 languageSwitch = $("#block-feature-site-language-switch"), 4563 searchButton = $("#mobile-menu-search-button"), 4564 languageSwitchTrigger = $(".language-switch-trigger").clone(); 4565 4566 // Build mobile menu 4567 // Remove seperator from doormat list 4568 mobileMenuContent.find(".separator").parents("li").remove(); 4569 4570 // take the language-switch-trigger and place it up top 4571 mobileMenuContent.prepend(languageSwitchTrigger); 4572 // Clone doormat and lanugage switch to mobile menu 4573 languageSwitch.clone().appendTo(mobileMenuContent); 4574 mobileMenuContent.clone().appendTo(mobileMenu); 4575 4576 mobileMenu.append(mobileMenuOverlay); 4577 4578 _body.addClass("mobile-menu"); 4579 menuButton.after(mobileMenu); 4580 // Add mobile menu and search toggle buttons to header 4581 // header.prepend(menuButton); 4582 // searchButton.insertBefore(header.find('.header-region')); 4583 4584 // Add events 4585 _this.events(menuButton); 4586 _this.langSitchTrig(); 4587 }, 4588 4589 langSitchTrig: function (menuButton) { 4590 var _this = Drupal.behaviors.mobileMenu, 4591 mobileMenu = $("#mobile-menu"), 4592 mobileMenuContent = mobileMenu.find( 4593 "#block-feature-site-footer-doormat" 4594 ), 4595 mobileLanguage = mobileMenu.find("#block-feature-site-language-switch"), 4596 mobileMenuLangTrigger = mobileMenu.find( 4597 "#block-feature-site-footer-doormat > .language-switch-trigger" 4598 ); 4599 4600 mobileMenuLangTrigger.bind("click", function (e) { 4601 e.preventDefault(); 4602 mobileMenuContent.animate( 4603 { 4604 scrollTop: mobileLanguage.offset().top - 97, 4605 }, 4606 1000 4607 ); 4608 return false; 4609 }); 4610 }, 4611 4612 events: function (menuButton) { 4613 var _this = Drupal.behaviors.mobileMenu, 4614 _body = $("body"), 4615 _html = $("html"), 4616 mobileMenu = $("#mobile-menu"); 4617 4618 // Toggle mobile menu 4619 menuButton.once("mobile-menu-button").bind("click", function (e) { 4620 if (!_html.hasClass("show-mobile-menu")) { 4621 if (_body.hasClass("show-mobile-search")) { 4622 _this.hideSearch(); 4623 } 4624 mobileMenu.show(); 4625 setTimeout(function () { 4626 _html.addClass("show-mobile-menu"); 4627 _body.addClass("show-mobile-menu"); 4628 menuButton.attr({ "aria-expanded": true }); 4629 }, 200); 4630 } else { 4631 _this.hideMobileMenu(); 4632 menuButton.attr({ "aria-expanded": false }); 4633 } 4634 }); 4635
4636 // Close mobile menu on touch/click dark overlay 4637 $("#mobile-menu-overlay") 4638 .once("mobile-menu-overlay") 4639 .bind("click", function () { 4640 _this.hideMobileMenu(); 4641 }); 4642 4643 //Search button, toggle search below header. 4644 $("#mobile-menu-search-button") 4645 .once("mobile-search-button") 4646 .bind("click", function (e) { 4647 if (!_body.hasClass("show-mobile-search")) { 4648 if (_html.hasClass("show-mobile-menu")) { 4649 _this.hideMobileMenu(); 4650 } 4651 $("#mobile-menu-search-button").attr({ 4652 "aria-expanded": true, 4653 "aria-label": "Suche schlieÃen", 4654 }); 4655 _body.addClass("show-mobile-search"); 4656 setTimeout(function () { 4657 $(".header-search").focus(); 4658 }, 400); 4659 } else { 4660 $("#mobile-menu-search-button").attr({ 4661 "aria-expanded": false, 4662 "aria-label": "Suche öffnen", 4663 }); 4664 _this.hideSearch(); 4665 } 4666 }) 4667 .bind("keypress", function (e) { 4668 if (e.which === 13) { 4669 if (!_body.hasClass("show-mobile-search")) { 4670 if (_html.hasClass("show-mobile-menu")) { 4671 _this.hideMobileMenu(); 4672 } 4673 $("#mobile-menu-search-button").attr({ "aria-expanded": true }); 4674 _body.addClass("show-mobile-search"); 4675 setTimeout(function () { 4676 $(".header-search").focus(); 4677 }, 400); 4678 } else { 4679 $("#mobile-menu-search-button").attr({ "aria-expanded": false }); 4680 _this.hideSearch(); 4681 } 4682 } 4683 }); 4684 4685 //Disable language switcher behavior, no dropdown in mobile menu 4686 $("#mobile-menu") 4687 .find(".language-switch-trigger") 4688 .bind("click", function (e) { 4689 e.preventDefault(); 4690 return false; 4691 }); 4692 }, 4693 4694 hideMobileMenu: function () { 4695 var _html = $("html"); 4696 var _body = $("body"); 4697 _html.removeClass("show-mobile-menu"); 4698 _body.removeClass("show-mobile-menu"); 4699 setTimeout(function () { 4700 $("#mobile-menu").hide(); 4701 }, 200); 4702 }, 4703 4704 hideSearch: function () { 4705 var _body = $("body"); 4706 _body.removeClass("show-mobile-search"); 4707 }, 4708 }; 4709 Drupal.behaviors.personalization = { 4710 attach: function (context) { 4711 var $this = Drupal.behaviors.personalization; 4712 4713 $this.fontSize(); 4714 }, 4715 4716 fontSize: function () { 4717 // Set initial size 4718 var size = $.cookie("personalization.font_size"); 4719 if (size !== null) { 4720 $("body") 4721 .removeClass("font-normal") 4722 .addClass("font-" + size); 4723 } 4724 4725 // Toggle size 4726 $(".font-size-switch a").on("click", function (e) { 4727 e.preventDefault(); 4728 4729 var $this = $(this), 4730 oldSize = $.cookie("personalization.font_size"), 4731 size = $this.data("size"); 4732 4733 // Save preference to cookie 4734 $.cookie("personalization.font_size", size, { expires: 7, secure: true, path: "/" }); 4735 4736 $("body") 4737 .removeClass("font-" + oldSize) 4738 .addClass("font-" + size); 4739 4740 Drupal.behaviors.personalization.switchActive(); 4741 4742 return false; 4743 }); 4744 4745 Drupal.behaviors.personalization.switchActive(); 4746 }, 4747 4748 switchActive: function () { 4749 $(".font-size-switch a").removeClass("active"); 4750 4751 var size = $.cookie("personalization.font_size"); 4752 if (size === null) { 4753 size = "normal"; 4754 } 4755 $(".font-size-switch a.font-size-" + size).addClass("active"); 4756 }, 4757 }; 4758 4759 Drupal.behaviors.print = { 4760 attach: function () { 4761 $(".trigger-print").click(function (e) { 4762 e.preventDefault(); 4763 window.print(); 4764 return false; 4765 }); 4766 }, 4767 }; 4768 Drupal.behaviors.readSpeaker = { 4769 attach: function () { 4770 if (!window.rsConf) { 4771 window.rsConf = {}; 4772 } 4773 if (!window.rsConf.ui) { 4774 window.rsConf.ui = {}; 4775 } 4776 if (!window.rsConf.ui.player) { 4777 window.rsConf.ui.player = {}; 4778 } 4779 if (!window.rsConf.general) { 4780 window.rsConf.general = {}; 4781 } 4782 4783 // This default solution does not work, so the Observer's solution below is used 4784 window.rsConf = { 4785 general: { 4786 usePost: true, 4787 }, 4788 ui: { 4789 player: [ 4790 // Define the play button 4791 '<a href="javascript:void(0);" class="rsbtn_play rsimg rspart rsbutton" title="' + langplay + '">', 4792 ' <span class="rsbtn_btnlabel">' + langplay + 'asdf</span>',
4793 ' </a>', 4794 // Define the pause button 4795 '<a href="javascript:void(0);" class="rsbtn_pause rsimg rspart rsbutton" title="' + langpause + '">', 4796 ' <span class="rsbtn_btnlabel">' + langpause + 'asdf</span>', 4797 ' </a>' 4798 ] 4799 } 4800 }; 4801 }, 4802 }; 4803 4804 document.addEventListener('DOMContentLoaded', function () { 4805 function updateButtonLabels() { 4806 const labels = document.querySelectorAll('.rsbtn_btnlabel'); 4807 labels.forEach(function (label) { 4808 const rsbtn = label.closest('.rsbtn'); 4809 if (rsbtn) { 4810 if (rsbtn.classList.contains('rsplaying')) { 4811 label.textContent = langpause; 4812 } else if (rsbtn.classList.contains('rspaused')) { 4813 label.textContent = langplay; 4814 } 4815 } 4816 }); 4817 } 4818 4819 const observer = new MutationObserver(function (mutationsList) { 4820 mutationsList.forEach(function (mutation) { 4821 mutation.addedNodes.forEach(function (node) { 4822 if (node.nodeType === 1) { 4823 if (node.classList && node.classList.contains('rsbtn')) { 4824 updateButtonLabels(); 4825 } else if (node.querySelectorAll) { 4826 const rsbtnElements = node.querySelectorAll('.rsbtn'); 4827 const labelElements = node.querySelectorAll('.rsbtn_btnlabel'); 4828 if (rsbtnElements.length > 0 || labelElements.length > 0) { 4829 updateButtonLabels(); 4830 } 4831 } 4832 } 4833 }); 4834 if (mutation.type === 'attributes' && mutation.target.classList.contains('rsbtn')) { 4835 updateButtonLabels(); 4836 } 4837 }); 4838 }); 4839 4840 observer.observe(document.body, { 4841 childList: true, 4842 subtree: true, 4843 attributes: true, 4844 attributeFilter: ['class'], 4845 }); 4846 4847 updateButtonLabels(); 4848 }); 4849 4850 4851 $(function () { 4852 jQuery.fn.reinitReadspeaker = function () { 4853 ReadSpeaker.q(function () { 4854 rspkr.ui.addClickEvents(); 4855 }); 4856 }; 4857 4858 jQuery.fn.destroyReadspeaker = function () { 4859 ReadSpeaker.q(function () { 4860 var player = rspkr.ui.getActivePlayer(); 4861 if (player) { 4862 player.close(); 4863 } 4864 }); 4865 }; 4866 }); 4867 4868 Drupal.behaviors.scroll = { 4869 attach: function (context) { 4870 var $this = Drupal.behaviors.scroll; 4871 4872 $this.initScroll(); 4873 4874 $(window) 4875 .once("trigger-scroll") 4876 .bind("resize", function () { 4877 $this.initScroll(); 4878 }); 4879 }, 4880 initScroll: function () { 4881 $(".trigger-scroll").click(function (e) { 4882 e.preventDefault(); 4883 4884 var $this = $(this), 4885 target = $this.data("target"), 4886 offset = $this.data("offset") ? $this.data("offset") : 0, 4887 top = 0, 4888 $toolbar = $(".toolbar-menu"), 4889 $breadcrumbDepth = $( 4890 "#block-feature-site-breadcrumbs .color-theme-depth-0" 4891 ), 4892 $breadcrumbPage = $("#block-feature-site-breadcrumbs .color-page"), 4893 $actionbar = $("#block-feature-site-action-bar"); 4894 4895 if ($("#" + target).length !== 0) { 4896 var $targetElement = $("#" + target); 4897 top = $targetElement.offset().top; 4898 } else if ($.isNumeric(target)) { 4899 top = target; 4900 } else { 4901 return false; 4902 } 4903 4904 if ($toolbar.length !== 0) { 4905 top -= $toolbar.height(); 4906 } 4907 4908 if ($breadcrumbDepth.length !== 0) { 4909 top -= $breadcrumbDepth.height() + 28 + offset; 4910 } 4911 4912 if ($breadcrumbPage.length !== 0) { 4913 top -= $breadcrumbPage.height() + offset; 4914 } 4915 4916 if ($actionbar.length !== 0) { 4917 top -= $actionbar.height(); 4918 } 4919 4920 $("html").animate({ scrollTop: top }, "slow"); //IE, FF 4921 $("body").animate({ scrollTop: top }, "slow"); //chrome 4922 4923 return false; 4924 }); 4925 }, 4926 }; 4927 4928 Drupal.behaviors.sticky = { 4929 attach: function (context, settings) { 4930 var $this = Drupal.behaviors.sticky; 4931 var options = { 4932 breakpoint: 1023, 4933 }; 4934 4935 $this.stickItCrumb(); 4936 $this.stickItNav(options); 4937 $this.stickItPage(); 4938 4939 $(window).bind("resize", function () { 4940 $this.stickItCrumb(); 4941 $this.stickItNav(options); 4942 $this.stickItPage(); 4943 }); 4944 }, 4945 4946 stickItCrumb: function () { 4947 this.stickIt( 4948 $("#block-feature-site-breadcrumbs .color-theme-depth-0"), 4949 "breadcrumb-sticky", 4950 0 4951 ); 4952 }, 4953 4954 stickItNav: function (options) { 4955 if ($(window).width() > options.breakpoint) { 4956 this.stickIt($("#block-feature-site-action-bar"), "action-sticky", 1); 4957 } else { 4958 $("#block-feature-site-action-bar").unstick(); 4959 } 4960 }, 4961 4962 stickItPage: function () { 4963 this.stickIt( 4964 $("#block-feature-site-breadcrumbs .color-page"), 4965 "breadcrumb-page-sticky", 4966 0 4967 ); 4968 }, 4969 4970 stickIt: function ($obj, stickyWrap, extraCheck) { 4971 if ($obj.length === 0) { 4972 return; 4973 } 4974 4975 var topSpace = 0; 4976 4977 if ($("body").hasClass("logged-in")) { 4978 topSpace = $("#toolbar").height(); 4979 } 4980 4981 if (extraCheck === 1) { 4982 if ( 4983 $("#block-feature-site-breadcrumbs .color-theme-depth-0").length !== 0 4984 ) { 4985 topSpace += $( 4986 "#block-feature-site-breadcrumbs .color-theme-depth-0" 4987 ).height(); 4988 } else { 4989 topSpace += $("#block-feature-site-breadcrumbs .color-page").height(); 4990 } 4991 } 4992 4993 $obj.once("sticky").sticky({ 4994 topSpacing: topSpace, 4995 wrapperClassName: stickyWrap, 4996 }); 4997 }, 4998 }; 4999})(jQuery); 5000// Sticky Plugin v1.0.0 for jQuery 5001// ============= 5002// Author: Anthony Garand 5003// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk) 5004// Improvements by Leonardo C. Daronco (daronco) 5005// Created: 2/14/2011 5006// Date: 2/12/2012 5007// Website: http://labs.anthonygarand.com/sticky 5008// Description: Makes an element on the page stick on the screen as you scroll 5009// It will only set the 'top' and 'position' of your element, you 5010// might need to adjust the width in some cases. 5011 5012(function ($) { 5013 var defaults = { 5014 topSpacing: 0, 5015 bottomSpacing: 0, 5016 className: "is-sticky", 5017 wrapperClassName: "sticky-wrapper", 5018 center: false, 5019 getWidthFrom: "", 5020 responsiveWidth: false, 5021 }, 5022 $window = $(window), 5023 $document = $(document), 5024 sticked = [], 5025 windowHeight = $window.height(), 5026 scroller = function () { 5027 var scrollTop = $window.scrollTop(), 5028 documentHeight = $document.height(), 5029 dwh = documentHeight - windowHeight, 5030 extra = scrollTop > dwh ? dwh - scrollTop : 0; 5031 5032 for (var i = 0; i < sticked.length; i++) { 5033 var s = sticked[i], 5034 elementTop = s.stickyWrapper.offset().top, 5035 etse = elementTop - s.topSpacing - extra; 5036 5037 if (scrollTop <= etse) { 5038 if (s.currentTop !== null) { 5039 s.stickyElement.css("position", "").css("top", ""); 5040 s.stickyElement 5041 .trigger("sticky-end", [s]) 5042 .parent() 5043 .removeClass(s.className); 5044 s.currentTop = null; 5045 } 5046 } else { 5047 var newTop = 5048 documentHeight - 5049 s.stickyElement.outerHeight() - 5050 s.topSpacing - 5051 s.bottomSpacing - 5052 scrollTop - 5053 extra; 5054 if (newTop < 0) { 5055 newTop = newTop + s.topSpacing; 5056 } else { 5057 newTop = s.topSpacing; 5058 } 5059 if (s.currentTop != newTop) { 5060 s.stickyElement.css("position", "fixed").css("top", newTop); 5061 5062 if (typeof s.getWidthFrom !== "undefined") { 5063 s.stickyElement.css("width", $(s.getWidthFrom).width()); 5064 } 5065 5066 s.stickyElement 5067 .trigger("sticky-start", [s]) 5068 .parent() 5069 .addClass(s.className); 5070 s.currentTop = newTop; 5071 } 5072 } 5073 } 5074 }, 5075 resizer = function () { 5076 windowHeight = $window.height(); 5077 5078 for (var i = 0; i < sticked.length; i++) { 5079 var s = sticked[i]; 5080 if ( 5081 typeof s.getWidthFrom !== "undefined" && 5082 s.responsiveWidth === true 5083 ) { 5084 s.stickyElement.css("width", $(s.getWidthFrom).width()); 5085 } 5086 } 5087 }, 5088 methods = { 5089 init: function (options) { 5090 var o = $.extend({}, defaults, options); 5091 return this.each(function () { 5092 var stickyElement = $(this); 5093 5094 var stickyId = stickyElement.attr("id"); 5095 var wrapperId = stickyId 5096 ? stickyId + "-" + defaults.wrapperClassName 5097 : defaults.wrapperClassName; 5098 var wrapper = $("<div></div>") 5099 .attr("id", stickyId + "-sticky-wrapper") 5100 .addClass(o.wrapperClassName); 5101 stickyElement.wrapAll(wrapper); 5102 5103 if (o.center) { 5104 stickyElement.parent().css({ 5105 width: stickyElement.outerWidth(), 5106 marginLeft: "auto", 5107 marginRight: "auto", 5108 }); 5109 } 5110 5111 if (stickyElement.css("float") == "right") { 5112 stickyElement 5113 .css({ float: "none" }) 5114 .parent() 5115 .css({ float: "right" }); 5116 } 5117 5118 var stickyWrapper = stickyElement.parent(); 5119 stickyWrapper.css("height", stickyElement.outerHeight()); 5120 sticked.push({ 5121 topSpacing: o.topSpacing, 5122 bottomSpacing: o.bottomSpacing, 5123 stickyElement: stickyElement, 5124 currentTop: null, 5125 stickyWrapper: stickyWrapper, 5126 className: o.className, 5127 getWidthFrom: o.getWidthFrom, 5128 responsiveWidth: o.responsiveWidth, 5129 }); 5130 }); 5131 }, 5132 update: scroller, 5133 unstick: function (options) { 5134 return this.each(function () { 5135 var unstickyElement = $(this); 5136 5137 var removeIdx = -1; 5138 for (var i = 0; i < sticked.length; i++) { 5139 if (sticked[i].stickyElement.get(0) == unstickyElement.get(0)) { 5140 removeIdx = i; 5141 } 5142 } 5143 if (removeIdx != -1) { 5144 sticked.splice(removeIdx, 1); 5145 unstickyElement.unwrap(); 5146 unstickyElement.removeAttr("style"); 5147 } 5148 }); 5149 }, 5150 }; 5151 5152 // should be more efficient than using $window.scroll(scroller) and $window.resize(resizer): 5153 if (window.addEventListener) { 5154 window.addEventListener("scroll", scroller, false); 5155 window.addEventListener("resize", resizer, false); 5156 } else if (window.attachEvent) { 5157 window.attachEvent("onscroll", scroller); 5158 window.attachEvent("onresize", resizer); 5159 } 5160 5161 $.fn.sticky = function (method) { 5162 if (methods[method]) { 5163 return methods[method].apply( 5164 this, 5165 Array.prototype.slice.call(arguments, 1) 5166 ); 5167 } else if (typeof method === "object" || !method) { 5168 return methods.init.apply(this, arguments); 5169 } else { 5170 $.error("Method " + method + " does not exist on jQuery.sticky"); 5171 } 5172 }; 5173 5174 $.fn.unstick = function (method) { 5175 if (methods[method]) { 5176 return methods[method].apply( 5177 this, 5178 Array.prototype.slice.call(arguments, 1) 5179 ); 5180 } else if (typeof method === "object" || !method) { 5181 return methods.unstick.apply(this, arguments); 5182 } else { 5183 $.error("Method " + method + " does not exist on jQuery.sticky"); 5184 } 5185 }; 5186 $(function () { 5187 setTimeout(scroller, 0); 5188 }); 5189})(jQuery); 5190 5191/* Modernizr 2.6.2 (Custom Build) | MIT & BSD 5192 * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradiu
5192s-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load 5193 */ 5194(window.Modernizr = (function (a, b, c) { 5195 function D(a) { 5196 j.cssText = a; 5197 } 5198 function E(a, b) { 5199 return D(n.join(a + ";") + (b || "")); 5200 } 5201 function F(a, b) { 5202 return typeof a === b; 5203 } 5204 function G(a, b) { 5205 return !!~("" + a).indexOf(b); 5206 } 5207 function H(a, b) { 5208 for (var d in a) { 5209 var e = a[d]; 5210 if (!G(e, "-") && j[e] !== c) return b == "pfx" ? e : !0; 5211 } 5212 return !1; 5213 } 5214 function I(a, b, d) { 5215 for (var e in a) { 5216 var f = b[a[e]]; 5217 if (f !== c) 5218 return d === !1 ? a[e] : F(f, "function") ? f.bind(d || b) : f; 5219 } 5220 return !1; 5221 } 5222 function J(a, b, c) { 5223 var d = a.charAt(0).toUpperCase() + a.slice(1), 5224 e = (a + " " + p.join(d + " ") + d).split(" "); 5225 return F(b, "string") || F(b, "undefined") 5226 ? H(e, b) 5227 : ((e = (a + " " + q.join(d + " ") + d).split(" ")), I(e, b, c)); 5228 } 5229 function K() { 5230 (e.input = (function (c) { 5231 for (var d = 0, e = c.length; d < e; d++) u[c[d]] = c[d] in k; 5232 return ( 5233 u.list && 5234 (u.list = !!b.createElement("datalist") && !!a.HTMLDataListElement), 5235 u 5236 ); 5237 })( 5238 "autocomplete autofocus list placeholder max min multiple pattern required step".split( 5239 " " 5240 ) 5241 )), 5242 (e.inputtypes = (function (a) { 5243 for (var d = 0, e, f, h, i = a.length; d < i; d++) 5244 k.setAttribute("type", (f = a[d])), 5245 (e = k.type !== "text"), 5246 e && 5247 ((k.value = l), 5248 (k.style.cssText = "position:absolute;visibility:hidden;"), 5249 /^range$/.test(f) && k.style.WebkitAppearance !== c 5250 ? (g.appendChild(k), 5251 (h = b.defaultView), 5252 (e = 5253 h.getComputedStyle && 5254 h.getComputedStyle(k, null).WebkitAppearance !== 5255 "textfield" && 5256 k.offsetHeight !== 0), 5257 g.removeChild(k)) 5258 : /^(search|tel)$/.test(f) || 5259 (/^(url|email)$/.test(f) 5260 ? (e = k.checkValidity && k.checkValidity() === !1) 5261 : (e = k.value != l))), 5262 (t[a[d]] = !!e); 5263 return t; 5264 })( 5265 "search tel url email datetime date month week time datetime-local number range color".split( 5266 " " 5267 ) 5268 )); 5269 } 5270 var d = "2.6.2", 5271 e = {}, 5272 f = !0, 5273 g = b.documentElement, 5274 h = "modernizr", 5275 i = b.createElement(h), 5276 j = i.style, 5277 k = b.createElement("input"), 5278 l = ":)", 5279 m = {}.toString, 5280 n = " -webkit- -moz- -o- -ms- ".split(" "), 5281 o = "Webkit Moz O ms", 5282 p = o.split(" "), 5283 q = o.toLowerCase().split(" "), 5284 r = { svg: "http://www.w3.org/2000/svg" }, 5285 s = {}, 5286 t = {}, 5287 u = {}, 5288 v = [], 5289 w = v.slice, 5290 x, 5291 y = function (a, c, d, e) { 5292 var f, 5293 i, 5294 j, 5295 k, 5296 l = b.createElement("div"), 5297 m = b.body, 5298 n = m || b.createElement("body"); 5299 if (parseInt(d, 10)) 5300 while (d--) 5301 (j = b.createElement("div")), 5302 (j.id = e ? e[d] : h + (d + 1)), 5303 l.appendChild(j); 5304 return ( 5305 (f = ["­", '<style id="s', h, '">', a, "</style>"].join("")), 5306 (l.id = h), 5307 ((m ? l : n).innerHTML += f), 5308 n.appendChild(l), 5309 m || 5310 ((n.style.background = ""), 5311 (n.style.overflow = "hidden"), 5312 (k = g.style.overflow), 5313 (g.style.overflow = "hidden"), 5314 g.appendChild(n)), 5315 (i = c(l, a)), 5316 m 5317 ? l.parentNode.removeChild(l)
5318 : (n.parentNode.removeChild(n), (g.style.overflow = k)), 5319 !!i 5320 ); 5321 }, 5322 z = function (b) { 5323 var c = a.matchMedia || a.msMatchMedia; 5324 if (c) return c(b).matches; 5325 var d; 5326 return ( 5327 y("@media " + b + " { #" + h + " { position: absolute; } }", function ( 5328 b 5329 ) { 5330 d = 5331 (a.getComputedStyle ? getComputedStyle(b, null) : b.currentStyle)[ 5332 "position" 5333 ] == "absolute"; 5334 }), 5335 d 5336 ); 5337 }, 5338 A = (function () { 5339 function d(d, e) { 5340 (e = e || b.createElement(a[d] || "div")), (d = "on" + d); 5341 var f = d in e; 5342 return ( 5343 f || 5344 (e.setAttribute || (e = b.createElement("div")), 5345 e.setAttribute && 5346 e.removeAttribute && 5347 (e.setAttribute(d, ""), 5348 (f = F(e[d], "function")), 5349 F(e[d], "undefined") || (e[d] = c), 5350 e.removeAttribute(d))), 5351 (e = null), 5352 f 5353 ); 5354 } 5355 var a = { 5356 select: "input", 5357 change: "input", 5358 submit: "form", 5359 reset: "form", 5360 error: "img", 5361 load: "img", 5362 abort: "img", 5363 }; 5364 return d; 5365 })(), 5366 B = {}.hasOwnProperty, 5367 C; 5368 !F(B, "undefined") && !F(B.call, "undefined") 5369 ? (C = function (a, b) { 5370 return B.call(a, b); 5371 }) 5372 : (C = function (a, b) { 5373 return b in a && F(a.constructor.prototype[b], "undefined"); 5374 }), 5375 Function.prototype.bind || 5376 (Function.prototype.bind = function (b) { 5377 var c = this; 5378 if (typeof c != "function") throw new TypeError(); 5379 var d = w.call(arguments, 1), 5380 e = function () { 5381 if (this instanceof e) { 5382 var a = function () {}; 5383 a.prototype = c.prototype; 5384 var f = new a(), 5385 g = c.apply(f, d.concat(w.call(arguments))); 5386 return Object(g) === g ? g : f; 5387 } 5388 return c.apply(b, d.concat(w.call(arguments))); 5389 }; 5390 return e; 5391 }), 5392 (s.flexbox = function () { 5393 return J("flexWrap"); 5394 }), 5395 (s.canvas = function () { 5396 var a = b.createElement("canvas"); 5397 return !!a.getContext && !!a.getContext("2d"); 5398 }), 5399 (s.canvastext = function () { 5400 return ( 5401 !!e.canvas && 5402 !!F(b.createElement("canvas").getContext("2d").fillText, "function") 5403 ); 5404 }), 5405 (s.webgl = function () { 5406 return !!a.WebGLRenderingContext; 5407 }), 5408 (s.touch = function () { 5409 var c; 5410 return ( 5411 "ontouchstart" in a || (a.DocumentTouch && b instanceof DocumentTouch) 5412 ? (c = !0) 5413 : y( 5414 [ 5415 "@media (", 5416 n.join("touch-enabled),("), 5417 h, 5418 ")", 5419 "{#modernizr{top:9px;position:absolute}}", 5420 ].join(""), 5421 function (a) { 5422 c = a.offsetTop === 9; 5423 } 5424 ), 5425 c 5426 ); 5427 }), 5428 (s.geolocation = function () { 5429 return "geolocation" in navigator; 5430 }), 5431 (s.postmessage = function () { 5432 return !!a.postMessage; 5433 }), 5434 (s.websqldatabase = function () { 5435 return !!a.openDatabase; 5436 }), 5437 (s.indexedDB = function () { 5438 return !!J("indexedDB", a); 5439 }), 5440 (s.hashchange = function () { 5441 return A("hashchange", a) && (b.documentMode === c || b.documentMode > 7); 5442 }), 5443 (s.history = function () { 5444 return !!a.history && !!history.pushState; 5445 }), 5446 (s.draganddrop = function () { 5447 var a = b.createElement("div"); 5448 return "draggable" in a || ("ondragstart" in a && "ondrop" in a); 5449 }), 5450 (s.websockets = function () { 5451 return "WebSocket" in a || "MozWebSocket" in a; 5452 }), 5453 (s.rgba = function () { 5454 return ( 5455 D("background-color:rgba(150,255,150,.5)"), G(j.backgroundColor, "rgba") 5456 ); 5457 }), 5458 (s.hsla = function () { 5459 return ( 5460 D("background-color:hsla(120,40%,100%,.5)"), 5461 G(j.backgroundColor, "rgba") || G(j.backgroundColor, "hsla") 5462 ); 5463 }), 5464 (s.multiplebgs = function () { 5465 return ( 5466 D("background:url(https://),url(https://),red url(https://)"), 5467 /(url\s*\(.*?){3}/.test(j.background) 5468 ); 5469 }), 5470 (s.backgroundsize = function () { 5471 return J("backgroundSize"); 5472 }), 5473 (s.borderimage = function () { 5474 return J("borderImage"); 5475 }),
5476 (s.borderradius = function () { 5477 return J("borderRadius"); 5478 }), 5479 (s.boxshadow = function () { 5480 return J("boxShadow"); 5481 }), 5482 (s.textshadow = function () { 5483 return b.createElement("div").style.textShadow === ""; 5484 }), 5485 (s.opacity = function () { 5486 return E("opacity:.55"), /^0.55$/.test(j.opacity); 5487 }), 5488 (s.cssanimations = function () { 5489 return J("animationName"); 5490 }), 5491 (s.csscolumns = function () { 5492 return J("columnCount"); 5493 }), 5494 (s.cssgradients = function () { 5495 var a = "background-image:", 5496 b = "gradient(linear,left top,right bottom,from(#9f9),to(white));", 5497 c = "linear-gradient(left top,#9f9, white);"; 5498 return ( 5499 D( 5500 (a + "-webkit- ".split(" ").join(b + a) + n.join(c + a)).slice( 5501 0, 5502 -a.length 5503 ) 5504 ), 5505 G(j.backgroundImage, "gradient") 5506 ); 5507 }), 5508 (s.cssreflections = function () { 5509 return J("boxReflect"); 5510 }), 5511 (s.csstransforms = function () { 5512 return !!J("transform"); 5513 }), 5514 (s.csstransforms3d = function () { 5515 var a = !!J("perspective"); 5516 return ( 5517 a && 5518 "webkitPerspective" in g.style && 5519 y( 5520 "@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}", 5521 function (b, c) { 5522 a = b.offsetLeft === 9 && b.offsetHeight === 3; 5523 } 5524 ), 5525 a 5526 ); 5527 }), 5528 (s.csstransitions = function () { 5529 return J("transition"); 5530 }), 5531 (s.fontface = function () { 5532 var a; 5533 return ( 5534 y('@font-face {font-family:"font";src:url("https://")}', function ( 5535 c, 5536 d 5537 ) { 5538 var e = b.getElementById("smodernizr"), 5539 f = e.sheet || e.styleSheet, 5540 g = f 5541 ? f.cssRules && f.cssRules[0] 5542 ? f.cssRules[0].cssText 5543 : f.cssText || "" 5544 : ""; 5545 a = /src/i.test(g) && g.indexOf(d.split(" ")[0]) === 0; 5546 }), 5547 a 5548 ); 5549 }), 5550 (s.generatedcontent = function () { 5551 var a; 5552 return ( 5553 y( 5554 [ 5555 "#", 5556 h, 5557 "{font:0/0 a}#", 5558 h, 5559 ':after{content:"', 5560 l, 5561 '";visibility:hidden;font:3px/1 a}', 5562 ].join(""), 5563 function (b) { 5564 a = b.offsetHeight >= 3; 5565 } 5566 ), 5567 a 5568 ); 5569 }), 5570 (s.video = function () { 5571 var a = b.createElement("video"), 5572 c = !1; 5573 try { 5574 if ((c = !!a.canPlayType)) 5575 (c = Boolean(c)), 5576 (c.ogg = a 5577 .canPlayType('video/ogg; codecs="theora"') 5578 .replace(/^no$/, "")), 5579 (c.h264 = a 5580 .canPlayType('video/mp4; codecs="avc1.42E01E"') 5581 .replace(/^no$/, "")), 5582 (c.webm = a 5583 .canPlayType('video/webm; codecs="vp8, vorbis"') 5584 .replace(/^no$/, "")); 5585 } catch (d) {} 5586 return c; 5587 }), 5588 (s.audio = function () { 5589 var a = b.createElement("audio"), 5590 c = !1; 5591 try { 5592 if ((c = !!a.canPlayType)) 5593 (c = Boolean(c)), 5594 (c.ogg = a 5595 .canPlayType('audio/ogg; codecs="vorbis"') 5596 .replace(/^no$/, "")), 5597 (c.mp3 = a.canPlayType("audio/mpeg;").replace(/^no$/, "")), 5598 (c.wav = a 5599 .canPlayType('audio/wav; codecs="1"') 5600 .replace(/^no$/, "")), 5601 (c.m4a = ( 5602 a.canPlayType("audio/x-m4a;") || a.canPlayType("audio/aac;") 5603 ).replace(/^no$/, "")); 5604 } catch (d) {} 5605 return c; 5606 }), 5607 (s.localstorage = function () { 5608 try { 5609 return localStorage.setItem(h, h), localStorage.removeItem(h), !0; 5610 } catch (a) { 5611 return !1; 5612 } 5613 }), 5614 (s.sessionstorage = function () { 5615 try { 5616 return sessionStorage.setItem(h, h), sessionStorage.removeItem(h), !0; 5617 } catch (a) { 5618 return !1; 5619 } 5620 }), 5621 (s.webworkers = function () { 5622 return !!a.Worker; 5623 }), 5624 (s.applicationcache = function () { 5625 return !!a.applicationCache; 5626 }), 5627 (s.svg = function () { 5628 return ( 5629 !!b.createElementNS && !!b.createElementNS(r.svg, "svg").createSVGRect 5630 ); 5631 }), 5632 (s.inlinesvg = function () { 5633 var a = b.createElement("div"); 5634 return ( 5635 (a.innerHTML = "<svg/>"), 5636 (a.firstChild && a.firstChild.namespaceURI) == r.svg 5637 ); 5638 }), 5639 (s.smil = function () { 5640 return ( 5641 !!b.createElementNS && 5642 /SVGAnimate/.test(m.call(b.createElementNS(r.svg, "animate"))) 5643 ); 5644 }), 5645 (s.svgclippaths = function () { 5646 return ( 5647 !!b.createElementNS && 5648 /SVGClipPath/.test(m.call(b.createElementNS(r.svg, "clipPath"))) 5649 ); 5650 }); 5651 for (var L in s) 5652 C(s, L) && 5653 ((x = L.toLowerCase()), (e[x] = s[L]()), v.push((e[x] ? "" : "no-") + x)); 5654 return ( 5655 e.input || K(), 5656 (e.addTest = function (a, b) { 5657 if (typeof a == "object") for (var d in a) C(a, d) && e.addTest(d, a[d]); 5658 else { 5659 a = a.toLowerCase(); 5660 if (e[a] !== c) return e; 5661 (b = typeof b == "function" ? b() : b), 5662 typeof f != "undefined" && 5663 f && 5664 (g.className += " " + (b ? "" : "no-") + a), 5665 (e[a] = b); 5666 } 5667 return e; 5668 }), 5669 D(""), 5670 (i = k = null),
5671 (function (a, b) { 5672 function k(a, b) { 5673 var c = a.createElement("p"), 5674 d = a.getElementsByTagName("head")[0] || a.documentElement; 5675 return ( 5676 (c.innerHTML = "x<style>" + b + "</style>"), 5677 d.insertBefore(c.lastChild, d.firstChild) 5678 ); 5679 } 5680 function l() { 5681 var a = r.elements; 5682 return typeof a == "string" ? a.split(" ") : a; 5683 } 5684 function m(a) { 5685 var b = i[a[g]]; 5686 return b || ((b = {}), h++, (a[g] = h), (i[h] = b)), b; 5687 } 5688 function n(a, c, f) { 5689 c || (c = b); 5690 if (j) return c.createElement(a); 5691 f || (f = m(c)); 5692 var g; 5693 return ( 5694 f.cache[a] 5695 ? (g = f.cache[a].cloneNode()) 5696 : e.test(a) 5697 ? (g = (f.cache[a] = f.createElem(a)).cloneNode()) 5698 : (g = f.createElem(a)), 5699 g.canHaveChildren && !d.test(a) ? f.frag.appendChild(g) : g 5700 ); 5701 } 5702 function o(a, c) { 5703 a || (a = b); 5704 if (j) return a.createDocumentFragment(); 5705 c = c || m(a); 5706 var d = c.frag.cloneNode(), 5707 e = 0, 5708 f = l(), 5709 g = f.length; 5710 for (; e < g; e++) d.createElement(f[e]); 5711 return d; 5712 } 5713 function p(a, b) { 5714 b.cache || 5715 ((b.cache = {}), 5716 (b.createElem = a.createElement), 5717 (b.createFrag = a.createDocumentFragment), 5718 (b.frag = b.createFrag())), 5719 (a.createElement = function (c) { 5720 return r.shivMethods ? n(c, a, b) : b.createElem(c); 5721 }), 5722 (a.createDocumentFragment = Function( 5723 "h,f", 5724 "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + 5725 l() 5726 .join() 5727 .replace(/\w+/g, function (a) { 5728 return ( 5729 b.createElem(a), b.frag.createElement(a), 'c("' + a + '")' 5730 ); 5731 }) + 5732 ");return n}" 5733 )(r, b.frag)); 5734 } 5735 function q(a) { 5736 a || (a = b); 5737 var c = m(a); 5738 return ( 5739 r.shivCSS && 5740 !f && 5741 !c.hasCSS && 5742 (c.hasCSS = !!k( 5743 a, 5744 "article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}" 5745 )), 5746 j || p(a, c), 5747 a 5748 ); 5749 } 5750 var c = a.html5 || {}, 5751 d = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i, 5752 e = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i, 5753 f, 5754 g = "_html5shiv", 5755 h = 0, 5756 i = {}, 5757 j; 5758 (function () { 5759 try { 5760 var a = b.createElement("a"); 5761 (a.innerHTML = "<xyz></xyz>"), 5762 (f = "hidden" in a), 5763 (j = 5764 a.childNodes.length == 1 || 5765 (function () { 5766 b.createElement("a"); 5767 var a = b.createDocumentFragment(); 5768 return ( 5769 typeof a.cloneNode == "undefined" || 5770 typeof a.createDocumentFragment == "undefined" || 5771 typeof a.createElement == "undefined" 5772 ); 5773 })()); 5774 } catch (c) { 5775 (f = !0), (j = !0); 5776 } 5777 })(); 5778 var r = { 5779 elements: 5780 c.elements || 5781 "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video", 5782 shivCSS: c.shivCSS !== !1, 5783 supportsUnknownElements: j, 5784 shivMethods: c.shivMethods !== !1, 5785 type: "default", 5786 shivDocument: q, 5787 createElement: n, 5788 createDocumentFragment: o, 5789 }; 5790 (a.html5 = r), q(b); 5791 })(this, b), 5792 (e._version = d), 5793 (e._prefixes = n), 5794 (e._domPrefixes = q), 5795 (e._cssomPrefixes = p), 5796 (e.mq = z), 5797 (e.hasEvent = A), 5798 (e.testProp = function (a) { 5799 return H([a]); 5800 }), 5801 (e.testAllProps = J), 5802 (e.testStyles = y), 5803 (e.prefixed = function (a, b, c) { 5804 return b ? J(a, b, c) : J(a, "pfx"); 5805 }), 5806 (g.className = 5807 g.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") + 5808 (f ? " js " + v.join(" ") : "")), 5809 e 5810 ); 5811})(this, this.document)), 5812 (function (a, b, c) { 5813 function d(a) { 5814 return "[object Function]" == o.call(a); 5815 } 5816 function e(a) { 5817 return "string" == typeof a; 5818 } 5819 function f() {}
5820 function g(a) { 5821 return !a || "loaded" == a || "complete" == a || "uninitialized" == a; 5822 } 5823 function h() { 5824 var a = p.shift(); 5825 (q = 1), 5826 a 5827 ? a.t 5828 ? m(function () { 5829 ("c" == a.t 5830 ? B.injectCss 5831 : B.injectJs)(a.s, 0, a.a, a.x, a.e, 1); 5832 }, 0) 5833 : (a(), h()) 5834 : (q = 0); 5835 } 5836 function i(a, c, d, e, f, i, j) { 5837 function k(b) { 5838 if ( 5839 !o && 5840 g(l.readyState) && 5841 ((u.r = o = 1), 5842 !q && h(), 5843 (l.onload = l.onreadystatechange = null), 5844 b) 5845 ) { 5846 "img" != a && 5847 m(function () { 5848 t.removeChild(l); 5849 }, 50); 5850 for (var d in y[c]) y[c].hasOwnProperty(d) && y[c][d].onload(); 5851 } 5852 } 5853 var j = j || B.errorTimeout, 5854 l = b.createElement(a), 5855 o = 0, 5856 r = 0, 5857 u = { t: d, s: c, e: f, a: i, x: j }; 5858 1 === y[c] && ((r = 1), (y[c] = [])), 5859 "object" == a ? (l.data = c) : ((l.src = c), (l.type = a)), 5860 (l.width = l.height = "0"), 5861 (l.onerror = l.onload = l.onreadystatechange = function () { 5862 k.call(this, r); 5863 }), 5864 p.splice(e, 0, u), 5865 "img" != a && 5866 (r || 2 === y[c] 5867 ? (t.insertBefore(l, s ? null : n), m(k, j)) 5868 : y[c].push(l)); 5869 } 5870 function j(a, b, c, d, f) { 5871 return ( 5872 (q = 0), 5873 (b = b || "j"), 5874 e(a) 5875 ? i("c" == b ? v : u, a, b, this.i++, c, d, f) 5876 : (p.splice(this.i++, 0, a), 1 == p.length && h()), 5877 this 5878 ); 5879 } 5880 function k() { 5881 var a = B; 5882 return (a.loader = { load: j, i: 0 }), a; 5883 } 5884 var l = b.documentElement, 5885 m = a.setTimeout, 5886 n = b.getElementsByTagName("script")[0], 5887 o = {}.toString, 5888 p = [], 5889 q = 0, 5890 r = "MozAppearance" in l.style, 5891 s = r && !!b.createRange().compareNode, 5892 t = s ? l : n.parentNode, 5893 l = a.opera && "[object Opera]" == o.call(a.opera), 5894 l = !!b.attachEvent && !l, 5895 u = r ? "object" : l ? "script" : "img", 5896 v = l ? "script" : u, 5897 w = 5898 Array.isArray || 5899 function (a) { 5900 return "[object Array]" == o.call(a); 5901 }, 5902 x = [], 5903 y = {}, 5904 z = { 5905 timeout: function (a, b) { 5906 return b.length && (a.timeout = b[0]), a; 5907 }, 5908 }, 5909 A, 5910 B; 5911 (B = function (a) { 5912 function b(a) { 5913 var a = a.split("!"), 5914 b = x.length, 5915 c = a.pop(), 5916 d = a.length, 5917 c = { url: c, origUrl: c, prefixes: a }, 5918 e, 5919 f, 5920 g; 5921 for (f = 0; f < d; f++) 5922 (g = a[f].split("=")), (e = z[g.shift()]) && (c = e(c, g)); 5923 for (f = 0; f < b; f++) c = x[f](c); 5924 return c; 5925 } 5926 function g(a, e, f, g, h) { 5927 var i = b(a), 5928 j = i.autoCallback; 5929 i.url.split(".").pop().split("?").shift(), 5930 i.bypass || 5931 (e && 5932 (e = d(e) 5933 ? e 5934 : e[a] || e[g] || e[a.split("/").pop().split("?")[0]]), 5935 i.instead 5936 ? i.instead(a, e, f, g, h) 5937 : (y[i.url] ? (i.noexec = !0) : (y[i.url] = 1), 5938 f.load( 5939 i.url, 5940 i.forceCSS || 5941 (!i.forceJS && 5942 "css" == i.url.split(".").pop().split("?").shift()) 5943 ? "c" 5944 : c, 5945 i.noexec, 5946 i.attrs, 5947 i.timeout 5948 ), 5949 (d(e) || d(j)) && 5950 f.load(function () { 5951 k(), 5952 e && e(i.origUrl, h, g), 5953 j && j(i.origUrl, h, g), 5954 (y[i.url] = 2); 5955 }))); 5956 } 5957 function h(a, b) { 5958 function c(a, c) { 5959 if (a) { 5960 if (e(a)) 5961 c || 5962 (j = function () { 5963 var a = [].slice.call(arguments); 5964 k.apply(this, a), l(); 5965 }), 5966 g(a, j, b, 0, h); 5967 else if (Object(a) === a) 5968 for (n in ((m = (function () { 5969 var b = 0, 5970 c; 5971 for (c in a) a.hasOwnProperty(c) && b++; 5972 return b; 5973 })()), 5974 a)) 5975 a.hasOwnProperty(n) && 5976 (!c && 5977 !--m && 5978 (d(j) 5979 ? (j = function () { 5980 var a = [].slice.call(arguments); 5981 k.apply(this, a), l(); 5982 }) 5983 : (j[n] = (function (a) { 5984 return function () { 5985 var b = [].slice.call(arguments); 5986 a && a.apply(this, b), l(); 5987 }; 5988 })(k[n]))), 5989 g(a[n], j, b, n, h)); 5990 } else !c && l(); 5991 } 5992 var h = !!a.test, 5993 i = a.load || a.both, 5994 j = a.callback || f, 5995 k = j, 5996 l = a.complete || f, 5997 m, 5998 n; 5999 c(h ? a.yep : a.nope, !!i), i && c(i); 6000 } 6001 var i, 6002 j, 6003 l = this.yepnope.loader; 6004 if (e(a)) g(a, 0, l, 0); 6005 else if (w(a)) 6006 for (i = 0; i < a.length; i++) 6007 (j = a[i]), 6008 e(j) ? g(j, 0, l, 0) : w(j) ? B(j) : Object(j) === j && h(j, l); 6009 else Object(a) === a && h(a, l); 6010 }), 6011 (B.addPrefix = function (a, b) { 6012 z[a] = b; 6013 }), 6014 (B.addFilter = function (a) { 6015 x.push(a); 6016 }), 6017 (B.errorTimeout = 1e4), 6018 null == b.readyState && 6019 b.addEventListener && 6020 ((b.readyState = "loading"), 6021 b.addEventListener( 6022 "DOMContentLoaded", 6023 (A = function () { 6024 b.removeEventListener("DOMContentLoaded", A, 0), 6025 (b.readyState = "complete"); 6026 }), 6027 0 6028 )), 6029 (a.yepnope = k()), 6030 (a.yepnope.executeStack = h), 6031 (a.yepnope.injectJs = function (a, c, d, e, i, j) { 6032 var k = b.createElement("script"), 6033 l, 6034 o, 6035 e = e || B.errorTimeout; 6036 k.src = a; 6037 for (o in d) k.setAttribute(o, d[o]); 6038 (c = j ? h : c || f), 6039 (k.onreadystatechange = k.onload = function () { 6040 !l && 6041 g(k.readyState) && 6042 ((l = 1), c(), (k.onload = k.onreadystatechange = null)); 6043 }), 6044 m(function () { 6045 l || ((l = 1), c(1)); 6046 }, e), 6047 i ? k.onload() : n.parentNode.insertBefore(k, n); 6048 }), 6049 (a.yepnope.injectCss = function (a, c, d, e, g, i) { 6050 var e = b.createElement("link"), 6051 j, 6052 c = i ? h : c || f; 6053 (e.href = a), (e.rel = "stylesheet"), (e.type = "text/css"); 6054 for (j in d) e.setAttribute(j, d[j]); 6055 g || (n.parentNode.insertBefore(e, n), m(c, 0)); 6056 }); 6057 })(this, document), 6058 (Modernizr.load = function () { 6059 yepnope.apply(window, [].slice.call(arguments, 0)); 6060 }); 6061 6062 6063
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.