(function(global, factory){
"use strict";
if(typeof module==="object"&&typeof module.exports==="object"){
module.exports=global.document ?
factory(global, true) :
function(w){
if(!w.document){
throw new Error("jQuery requires a window with a document");
}
return factory(w);
};}else{
factory(global);
}})(typeof window!=="undefined" ? window:this, function(window, noGlobal){
"use strict";
var arr=[];
var getProto=Object.getPrototypeOf;
var slice=arr.slice;
var flat=arr.flat ? function(array){
return arr.flat.call(array);
}:function(array){
return arr.concat.apply([], array);
};
var push=arr.push;
var indexOf=arr.indexOf;
var class2type={};
var toString=class2type.toString;
var hasOwn=class2type.hasOwnProperty;
var fnToString=hasOwn.toString;
var ObjectFunctionString=fnToString.call(Object);
var support={};
var isFunction=function isFunction(obj){
return typeof obj==="function"&&typeof obj.nodeType!=="number" &&
typeof obj.item!=="function";
};
var isWindow=function isWindow(obj){
return obj!=null&&obj===obj.window;
};
var document=window.document;
var preservedScriptAttributes={
type: true,
src: true,
nonce: true,
noModule: true
};
function DOMEval(code, node, doc){
doc=doc||document;
var i, val,
script=doc.createElement("script");
script.text=code;
if(node){
for(i in preservedScriptAttributes){
val=node[ i ]||node.getAttribute&&node.getAttribute(i);
if(val){
script.setAttribute(i, val);
}}
}
doc.head.appendChild(script).parentNode.removeChild(script);
}
function toType(obj){
if(obj==null){
return obj + "";
}
return typeof obj==="object"||typeof obj==="function" ?
class2type[ toString.call(obj) ]||"object" :
typeof obj;
}
var version="3.7.1",
rhtmlSuffix=/HTML$/i,
jQuery=function(selector, context){
return new jQuery.fn.init(selector, context);
};
jQuery.fn=jQuery.prototype={
jquery: version,
constructor: jQuery,
length: 0,
toArray: function(){
return slice.call(this);
},
get: function(num){
if(num==null){
return slice.call(this);
}
return num < 0 ? this[ num + this.length ]:this[ num ];
},
pushStack: function(elems){
var ret=jQuery.merge(this.constructor(), elems);
ret.prevObject=this;
return ret;
},
each: function(callback){
return jQuery.each(this, callback);
},
map: function(callback){
return this.pushStack(jQuery.map(this, function(elem, i){
return callback.call(elem, i, elem);
}) );
},
slice: function(){
return this.pushStack(slice.apply(this, arguments) );
},
first: function(){
return this.eq(0);
},
last: function(){
return this.eq(-1);
},
even: function(){
return this.pushStack(jQuery.grep(this, function(_elem, i){
return(i + 1) % 2;
}) );
},
odd: function(){
return this.pushStack(jQuery.grep(this, function(_elem, i){
return i % 2;
}) );
},
eq: function(i){
var len=this.length,
j=+i +(i < 0 ? len:0);
return this.pushStack(j >=0&&j < len ? [ this[ j ] ]:[]);
},
end: function(){
return this.prevObject||this.constructor();
},
push: push,
sort: arr.sort,
splice: arr.splice
};
jQuery.extend=jQuery.fn.extend=function(){
var options, name, src, copy, copyIsArray, clone,
target=arguments[ 0 ]||{},
i=1,
length=arguments.length,
deep=false;
if(typeof target==="boolean"){
deep=target;
target=arguments[ i ]||{};
i++;
}
if(typeof target!=="object"&&!isFunction(target) ){
target={};}
if(i===length){
target=this;
i--;
}
for(; i < length; i++){
if(( options=arguments[ i ])!=null){
for(name in options){
copy=options[ name ];
if(name==="__proto__"||target===copy){
continue;
}
if(deep&&copy&&(jQuery.isPlainObject(copy) ||
(copyIsArray=Array.isArray(copy) )) ){
src=target[ name ];
if(copyIsArray&&!Array.isArray(src) ){
clone=[];
}else if(!copyIsArray&&!jQuery.isPlainObject(src) ){
clone={};}else{
clone=src;
}
copyIsArray=false;
target[ name ]=jQuery.extend(deep, clone, copy);
}else if(copy!==undefined){
target[ name ]=copy;
}}
}}
return target;
};
jQuery.extend({
expando: "jQuery" +(version + Math.random()).replace(/\D/g, ""),
isReady: true,
error: function(msg){
throw new Error(msg);
},
noop: function(){},
isPlainObject: function(obj){
var proto, Ctor;
if(!obj||toString.call(obj)!=="[object Object]"){
return false;
}
proto=getProto(obj);
if(!proto){
return true;
}
Ctor=hasOwn.call(proto, "constructor")&&proto.constructor;
return typeof Ctor==="function"&&fnToString.call(Ctor)===ObjectFunctionString;
},
isEmptyObject: function(obj){
var name;
for(name in obj){
return false;
}
return true;
},
globalEval: function(code, options, doc){
DOMEval(code, { nonce: options&&options.nonce }, doc);
},
each: function(obj, callback){
var length, i=0;
if(isArrayLike(obj) ){
length=obj.length;
for(; i < length; i++){
if(callback.call(obj[ i ], i, obj[ i ])===false){
break;
}}
}else{
for(i in obj){
if(callback.call(obj[ i ], i, obj[ i ])===false){
break;
}}
}
return obj;
},
text: function(elem){
var node,
ret="",
i=0,
nodeType=elem.nodeType;
if(!nodeType){
while(( node=elem[ i++ ]) ){
ret +=jQuery.text(node);
}}
if(nodeType===1||nodeType===11){
return elem.textContent;
}
if(nodeType===9){
return elem.documentElement.textContent;
}
if(nodeType===3||nodeType===4){
return elem.nodeValue;
}
return ret;
},
makeArray: function(arr, results){
var ret=results||[];
if(arr!=null){
if(isArrayLike(Object(arr) )){
jQuery.merge(ret,
typeof arr==="string" ?
[ arr ]:arr
);
}else{
push.call(ret, arr);
}}
return ret;
},
inArray: function(elem, arr, i){
return arr==null ? -1:indexOf.call(arr, elem, i);
},
isXMLDoc: function(elem){
var namespace=elem&&elem.namespaceURI,
docElem=elem&&(elem.ownerDocument||elem).documentElement;
return !rhtmlSuffix.test(namespace||docElem&&docElem.nodeName||"HTML");
},
merge: function(first, second){
var len=+second.length,
j=0,
i=first.length;
for(; j < len; j++){
first[ i++ ]=second[ j ];
}
first.length=i;
return first;
},
grep: function(elems, callback, invert){
var callbackInverse,
matches=[],
i=0,
length=elems.length,
callbackExpect = !invert;
for(; i < length; i++){
callbackInverse = !callback(elems[ i ], i);
if(callbackInverse!==callbackExpect){
matches.push(elems[ i ]);
}}
return matches;
},
map: function(elems, callback, arg){
var length, value,
i=0,
ret=[];
if(isArrayLike(elems) ){
length=elems.length;
for(; i < length; i++){
value=callback(elems[ i ], i, arg);
if(value!=null){
ret.push(value);
}}
}else{
for(i in elems){
value=callback(elems[ i ], i, arg);
if(value!=null){
ret.push(value);
}}
}
return flat(ret);
},
guid: 1,
support: support
});
if(typeof Symbol==="function"){
jQuery.fn[ Symbol.iterator ]=arr[ Symbol.iterator ];
}
jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),
function(_i, name){
class2type[ "[object " + name + "]" ]=name.toLowerCase();
});
function isArrayLike(obj){
var length = !!obj&&"length" in obj&&obj.length,
type=toType(obj);
if(isFunction(obj)||isWindow(obj) ){
return false;
}
return type==="array"||length===0 ||
typeof length==="number"&&length > 0&&(length - 1) in obj;
}
function nodeName(elem, name){
return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase();
}
var pop=arr.pop;
var sort=arr.sort;
var splice=arr.splice;
var whitespace="[\\x20\\t\\r\\n\\f]";
var rtrimCSS=new RegExp(
"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
"g"
);
jQuery.contains=function(a, b){
var bup=b&&b.parentNode;
return a===bup||!!(bup&&bup.nodeType===1&&(
a.contains ?
a.contains(bup) :
a.compareDocumentPosition&&a.compareDocumentPosition(bup) & 16
));
};
var rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
function fcssescape(ch, asCodePoint){
if(asCodePoint){
if(ch==="\0"){
return "\uFFFD";
}
return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " ";
}
return "\\" + ch;
}
jQuery.escapeSelector=function(sel){
return(sel + "").replace(rcssescape, fcssescape);
};
var preferredDoc=document,
pushNative=push;
(function(){
var i,
Expr,
outermostContext,
sortInput,
hasDuplicate,
push=pushNative,
document,
documentElement,
documentIsHTML,
rbuggyQSA,
matches,
expando=jQuery.expando,
dirruns=0,
done=0,
classCache=createCache(),
tokenCache=createCache(),
compilerCache=createCache(),
nonnativeSelectorCache=createCache(),
sortOrder=function(a, b){
if(a===b){
hasDuplicate=true;
}
return 0;
},
booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" +
"loop|multiple|open|readonly|required|scoped",
identifier="(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
attributes="\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
"*([*^$|!~]?=)" + whitespace +
"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
whitespace + "*\\]",
pseudos=":(" + identifier + ")(?:\\((" +
"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
".*" +
")\\)|)",
rwhitespace=new RegExp(whitespace + "+", "g"),
rcomma=new RegExp("^" + whitespace + "*," + whitespace + "*"),
rleadingCombinator=new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" +
whitespace + "*"),
rdescend=new RegExp(whitespace + "|>"),
rpseudo=new RegExp(pseudos),
ridentifier=new RegExp("^" + identifier + "$"),
matchExpr={
ID: new RegExp("^#(" + identifier + ")"),
CLASS: new RegExp("^\\.(" + identifier + ")"),
TAG: new RegExp("^(" + identifier + "|[*])"),
ATTR: new RegExp("^" + attributes),
PSEUDO: new RegExp("^" + pseudos),
CHILD: new RegExp(
"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"),
bool: new RegExp("^(?:" + booleans + ")$", "i"),
needsContext: new RegExp("^" + whitespace +
"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
},
rinputs=/^(?:input|select|textarea|button)$/i,
rheader=/^h\d$/i,
rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
rsibling=/[+~]/,
runescape=new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace +
"?|\\\\([^\\r\\n\\f])", "g"),
funescape=function(escape, nonHex){
var high="0x" + escape.slice(1) - 0x10000;
if(nonHex){
return nonHex;
}
return high < 0 ?
String.fromCharCode(high + 0x10000) :
String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);
},
unloadHandler=function(){
setDocument();
},
inDisabledFieldset=addCombinator(
function(elem){
return elem.disabled===true&&nodeName(elem, "fieldset");
},
{ dir: "parentNode", next: "legend" }
);
function safeActiveElement(){
try {
return document.activeElement;
} catch(err){ }}
try {
push.apply((arr=slice.call(preferredDoc.childNodes) ),
preferredDoc.childNodes
);
arr[ preferredDoc.childNodes.length ].nodeType;
} catch(e){
push={
apply: function(target, els){
pushNative.apply(target, slice.call(els) );
},
call: function(target){
pushNative.apply(target, slice.call(arguments, 1) );
}};}
function find(selector, context, results, seed){
var m, i, elem, nid, match, groups, newSelector,
newContext=context&&context.ownerDocument,
nodeType=context ? context.nodeType:9;
results=results||[];
if(typeof selector!=="string"||!selector ||
nodeType!==1&&nodeType!==9&&nodeType!==11){
return results;
}
if(!seed){
setDocument(context);
context=context||document;
if(documentIsHTML){
if(nodeType!==11&&(match=rquickExpr.exec(selector) )){
if(( m=match[ 1 ]) ){
if(nodeType===9){
if(( elem=context.getElementById(m) )){
if(elem.id===m){
push.call(results, elem);
return results;
}}else{
return results;
}}else{
if(newContext&&(elem=newContext.getElementById(m) ) &&
find.contains(context, elem) &&
elem.id===m){
push.call(results, elem);
return results;
}}
}else if(match[ 2 ]){
push.apply(results, context.getElementsByTagName(selector) );
return results;
}else if(( m=match[ 3 ])&&context.getElementsByClassName){
push.apply(results, context.getElementsByClassName(m) );
return results;
}}
if(!nonnativeSelectorCache[ selector + " " ] &&
(!rbuggyQSA||!rbuggyQSA.test(selector) )){
newSelector=selector;
newContext=context;
if(nodeType===1 &&
(rdescend.test(selector)||rleadingCombinator.test(selector) )){
newContext=rsibling.test(selector)&&testContext(context.parentNode) ||
context;
if(newContext!=context||!support.scope){
if(( nid=context.getAttribute("id") )){
nid=jQuery.escapeSelector(nid);
}else{
context.setAttribute("id",(nid=expando) );
}}
groups=tokenize(selector);
i=groups.length;
while(i--){
groups[ i ]=(nid ? "#" + nid:":scope") + " " +
toSelector(groups[ i ]);
}
newSelector=groups.join(",");
}
try {
push.apply(results,
newContext.querySelectorAll(newSelector)
);
return results;
} catch(qsaError){
nonnativeSelectorCache(selector, true);
} finally {
if(nid===expando){
context.removeAttribute("id");
}}
}}
}
return select(selector.replace(rtrimCSS, "$1"), context, results, seed);
}
/**
* Create key-value caches of limited size
* @returns {function(string, object)} Returns the Object data after storing it on itself with
*	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
*	deleting the oldest entry
*/
function createCache(){
var keys=[];
function cache(key, value){
if(keys.push(key + " ") > Expr.cacheLength){
delete cache[ keys.shift() ];
}
return(cache[ key + " " ]=value);
}
return cache;
}
function markFunction(fn){
fn[ expando ]=true;
return fn;
}
function assert(fn){
var el=document.createElement("fieldset");
try {
return !!fn(el);
} catch(e){
return false;
} finally {
if(el.parentNode){
el.parentNode.removeChild(el);
}
el=null;
}}
function createInputPseudo(type){
return function(elem){
return nodeName(elem, "input")&&elem.type===type;
};}
function createButtonPseudo(type){
return function(elem){
return(nodeName(elem, "input")||nodeName(elem, "button") ) &&
elem.type===type;
};}
function createDisabledPseudo(disabled){
return function(elem){
if("form" in elem){
if(elem.parentNode&&elem.disabled===false){
if("label" in elem){
if("label" in elem.parentNode){
return elem.parentNode.disabled===disabled;
}else{
return elem.disabled===disabled;
}}
return elem.isDisabled===disabled ||
elem.isDisabled!==!disabled &&
inDisabledFieldset(elem)===disabled;
}
return elem.disabled===disabled;
}else if("label" in elem){
return elem.disabled===disabled;
}
return false;
};}
function createPositionalPseudo(fn){
return markFunction(function(argument){
argument=+argument;
return markFunction(function(seed, matches){
var j,
matchIndexes=fn([], seed.length, argument),
i=matchIndexes.length;
while(i--){
if(seed[(j=matchIndexes[ i ]) ]){
seed[ j ] = !(matches[ j ]=seed[ j ]);
}}
});
});
}
function testContext(context){
return context&&typeof context.getElementsByTagName!=="undefined"&&context;
}
function setDocument(node){
var subWindow,
doc=node ? node.ownerDocument||node:preferredDoc;
if(doc==document||doc.nodeType!==9||!doc.documentElement){
return document;
}
document=doc;
documentElement=document.documentElement;
documentIsHTML = !jQuery.isXMLDoc(document);
matches=documentElement.matches ||
documentElement.webkitMatchesSelector ||
documentElement.msMatchesSelector;
if(documentElement.msMatchesSelector &&
preferredDoc!=document &&
(subWindow=document.defaultView)&&subWindow.top!==subWindow){
subWindow.addEventListener("unload", unloadHandler);
}
support.getById=assert(function(el){
documentElement.appendChild(el).id=jQuery.expando;
return !document.getElementsByName ||
!document.getElementsByName(jQuery.expando).length;
});
support.disconnectedMatch=assert(function(el){
return matches.call(el, "*");
});
support.scope=assert(function(){
return document.querySelectorAll(":scope");
});
support.cssHas=assert(function(){
try {
document.querySelector(":has(*,:jqfake)");
return false;
} catch(e){
return true;
}});
if(support.getById){
Expr.filter.ID=function(id){
var attrId=id.replace(runescape, funescape);
return function(elem){
return elem.getAttribute("id")===attrId;
};};
Expr.find.ID=function(id, context){
if(typeof context.getElementById!=="undefined"&&documentIsHTML){
var elem=context.getElementById(id);
return elem ? [ elem ]:[];
}};}else{
Expr.filter.ID=function(id){
var attrId=id.replace(runescape, funescape);
return function(elem){
var node=typeof elem.getAttributeNode!=="undefined" &&
elem.getAttributeNode("id");
return node&&node.value===attrId;
};};
Expr.find.ID=function(id, context){
if(typeof context.getElementById!=="undefined"&&documentIsHTML){
var node, i, elems,
elem=context.getElementById(id);
if(elem){
node=elem.getAttributeNode("id");
if(node&&node.value===id){
return [ elem ];
}
elems=context.getElementsByName(id);
i=0;
while(( elem=elems[ i++ ]) ){
node=elem.getAttributeNode("id");
if(node&&node.value===id){
return [ elem ];
}}
}
return [];
}};}
Expr.find.TAG=function(tag, context){
if(typeof context.getElementsByTagName!=="undefined"){
return context.getElementsByTagName(tag);
}else{
return context.querySelectorAll(tag);
}};
Expr.find.CLASS=function(className, context){
if(typeof context.getElementsByClassName!=="undefined"&&documentIsHTML){
return context.getElementsByClassName(className);
}};
rbuggyQSA=[];
assert(function(el){
var input;
documentElement.appendChild(el).innerHTML =
"<a id='" + expando + "' href='' disabled='disabled'></a>" +
"<select id='" + expando + "-\r\\' disabled='disabled'>" +
"<option selected=''></option></select>";
if(!el.querySelectorAll("[selected]").length){
rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")");
}
if(!el.querySelectorAll("[id~=" + expando + "-]").length){
rbuggyQSA.push("~=");
}
if(!el.querySelectorAll("a#" + expando + "+*").length){
rbuggyQSA.push(".#.+[+~]");
}
if(!el.querySelectorAll(":checked").length){
rbuggyQSA.push(":checked");
}
input=document.createElement("input");
input.setAttribute("type", "hidden");
el.appendChild(input).setAttribute("name", "D");
documentElement.appendChild(el).disabled=true;
if(el.querySelectorAll(":disabled").length!==2){
rbuggyQSA.push(":enabled", ":disabled");
}
input=document.createElement("input");
input.setAttribute("name", "");
el.appendChild(input);
if(!el.querySelectorAll("[name='']").length){
rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" +
whitespace + "*(?:''|\"\")");
}});
if(!support.cssHas){
rbuggyQSA.push(":has");
}
rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|") );
sortOrder=function(a, b){
if(a===b){
hasDuplicate=true;
return 0;
}
var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
if(compare){
return compare;
}
compare=(a.ownerDocument||a)==(b.ownerDocument||b) ?
a.compareDocumentPosition(b) :
1;
if(compare & 1 ||
(!support.sortDetached&&b.compareDocumentPosition(a)===compare) ){
if(a===document||a.ownerDocument==preferredDoc &&
find.contains(preferredDoc, a) ){
return -1;
}
if(b===document||b.ownerDocument==preferredDoc &&
find.contains(preferredDoc, b) ){
return 1;
}
return sortInput ?
(indexOf.call(sortInput, a) - indexOf.call(sortInput, b) ) :
0;
}
return compare & 4 ? -1:1;
};
return document;
}
find.matches=function(expr, elements){
return find(expr, null, null, elements);
};
find.matchesSelector=function(elem, expr){
setDocument(elem);
if(documentIsHTML &&
!nonnativeSelectorCache[ expr + " " ] &&
(!rbuggyQSA||!rbuggyQSA.test(expr) )){
try {
var ret=matches.call(elem, expr);
if(ret||support.disconnectedMatch ||
elem.document&&elem.document.nodeType!==11){
return ret;
}} catch(e){
nonnativeSelectorCache(expr, true);
}}
return find(expr, document, null, [ elem ]).length > 0;
};
find.contains=function(context, elem){
if(( context.ownerDocument||context)!=document){
setDocument(context);
}
return jQuery.contains(context, elem);
};
find.attr=function(elem, name){
if(( elem.ownerDocument||elem)!=document){
setDocument(elem);
}
var fn=Expr.attrHandle[ name.toLowerCase() ],
val=fn&&hasOwn.call(Expr.attrHandle, name.toLowerCase()) ?
fn(elem, name, !documentIsHTML) :
undefined;
if(val!==undefined){
return val;
}
return elem.getAttribute(name);
};
find.error=function(msg){
throw new Error("Syntax error, unrecognized expression: " + msg);
};
jQuery.uniqueSort=function(results){
var elem,
duplicates=[],
j=0,
i=0;
hasDuplicate = !support.sortStable;
sortInput = !support.sortStable&&slice.call(results, 0);
sort.call(results, sortOrder);
if(hasDuplicate){
while(( elem=results[ i++ ]) ){
if(elem===results[ i ]){
j=duplicates.push(i);
}}
while(j--){
splice.call(results, duplicates[ j ], 1);
}}
sortInput=null;
return results;
};
jQuery.fn.uniqueSort=function(){
return this.pushStack(jQuery.uniqueSort(slice.apply(this) ));
};
Expr=jQuery.expr={
cacheLength: 50,
createPseudo: markFunction,
match: matchExpr,
attrHandle: {},
find: {},
relative: {
">": { dir: "parentNode", first: true },
" ": { dir: "parentNode" },
"+": { dir: "previousSibling", first: true },
"~": { dir: "previousSibling" }},
preFilter: {
ATTR: function(match){
match[ 1 ]=match[ 1 ].replace(runescape, funescape);
match[ 3 ]=(match[ 3 ]||match[ 4 ]||match[ 5 ]||"")
.replace(runescape, funescape);
if(match[ 2 ]==="~="){
match[ 3 ]=" " + match[ 3 ] + " ";
}
return match.slice(0, 4);
},
CHILD: function(match){
match[ 1 ]=match[ 1 ].toLowerCase();
if(match[ 1 ].slice(0, 3)==="nth"){
if(!match[ 3 ]){
find.error(match[ 0 ]);
}
match[ 4 ]=+(match[ 4 ] ?
match[ 5 ] +(match[ 6 ]||1) :
2 *(match[ 3 ]==="even"||match[ 3 ]==="odd")
);
match[ 5 ]=+(( match[ 7 ] + match[ 8 ])||match[ 3 ]==="odd");
}else if(match[ 3 ]){
find.error(match[ 0 ]);
}
return match;
},
PSEUDO: function(match){
var excess,
unquoted = !match[ 6 ]&&match[ 2 ];
if(matchExpr.CHILD.test(match[ 0 ]) ){
return null;
}
if(match[ 3 ]){
match[ 2 ]=match[ 4 ]||match[ 5 ]||"";
}else if(unquoted&&rpseudo.test(unquoted) &&
(excess=tokenize(unquoted, true) ) &&
(excess=unquoted.indexOf(")", unquoted.length - excess) - unquoted.length) ){
match[ 0 ]=match[ 0 ].slice(0, excess);
match[ 2 ]=unquoted.slice(0, excess);
}
return match.slice(0, 3);
}},
filter: {
TAG: function(nodeNameSelector){
var expectedNodeName=nodeNameSelector.replace(runescape, funescape).toLowerCase();
return nodeNameSelector==="*" ?
function(){
return true;
} :
function(elem){
return nodeName(elem, expectedNodeName);
};},
CLASS: function(className){
var pattern=classCache[ className + " " ];
return pattern ||
(pattern=new RegExp("(^|" + whitespace + ")" + className +
"(" + whitespace + "|$)") ) &&
classCache(className, function(elem){
return pattern.test(typeof elem.className==="string"&&elem.className ||
typeof elem.getAttribute!=="undefined" &&
elem.getAttribute("class") ||
""
);
});
},
ATTR: function(name, operator, check){
return function(elem){
var result=find.attr(elem, name);
if(result==null){
return operator==="!=";
}
if(!operator){
return true;
}
result +="";
if(operator==="="){
return result===check;
}
if(operator==="!="){
return result!==check;
}
if(operator==="^="){
return check&&result.indexOf(check)===0;
}
if(operator==="*="){
return check&&result.indexOf(check) > -1;
}
if(operator==="$="){
return check&&result.slice(-check.length)===check;
}
if(operator==="~="){
return(" " + result.replace(rwhitespace, " ") + " ")
.indexOf(check) > -1;
}
if(operator==="|="){
return result===check||result.slice(0, check.length + 1)===check + "-";
}
return false;
};},
CHILD: function(type, what, _argument, first, last){
var simple=type.slice(0, 3)!=="nth",
forward=type.slice(-4)!=="last",
ofType=what==="of-type";
return first===1&&last===0 ?
function(elem){
return !!elem.parentNode;
} :
function(elem, _context, xml){
var cache, outerCache, node, nodeIndex, start,
dir=simple!==forward ? "nextSibling":"previousSibling",
parent=elem.parentNode,
name=ofType&&elem.nodeName.toLowerCase(),
useCache = !xml&&!ofType,
diff=false;
if(parent){
if(simple){
while(dir){
node=elem;
while(( node=node[ dir ]) ){
if(ofType ?
nodeName(node, name) :
node.nodeType===1){
return false;
}}
start=dir=type==="only"&&!start&&"nextSibling";
}
return true;
}
start=[ forward ? parent.firstChild:parent.lastChild ];
if(forward&&useCache){
outerCache=parent[ expando ]||(parent[ expando ]={});
cache=outerCache[ type ]||[];
nodeIndex=cache[ 0 ]===dirruns&&cache[ 1 ];
diff=nodeIndex&&cache[ 2 ];
node=nodeIndex&&parent.childNodes[ nodeIndex ];
while(( node=++nodeIndex&&node&&node[ dir ] ||
(diff=nodeIndex=0)||start.pop()) ){
if(node.nodeType===1&&++diff&&node===elem){
outerCache[ type ]=[ dirruns, nodeIndex, diff ];
break;
}}
}else{
if(useCache){
outerCache=elem[ expando ]||(elem[ expando ]={});
cache=outerCache[ type ]||[];
nodeIndex=cache[ 0 ]===dirruns&&cache[ 1 ];
diff=nodeIndex;
}
if(diff===false){
while(( node=++nodeIndex&&node&&node[ dir ] ||
(diff=nodeIndex=0)||start.pop()) ){
if(( ofType ?
nodeName(node, name) :
node.nodeType===1) &&
++diff){
if(useCache){
outerCache=node[ expando ] ||
(node[ expando ]={});
outerCache[ type ]=[ dirruns, diff ];
}
if(node===elem){
break;
}}
}}
}
diff -=last;
return diff===first||(diff % first===0&&diff / first >=0);
}};},
PSEUDO: function(pseudo, argument){
var args,
fn=Expr.pseudos[ pseudo ]||Expr.setFilters[ pseudo.toLowerCase() ] ||
find.error("unsupported pseudo: " + pseudo);
if(fn[ expando ]){
return fn(argument);
}
if(fn.length > 1){
args=[ pseudo, pseudo, "", argument ];
return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ?
markFunction(function(seed, matches){
var idx,
matched=fn(seed, argument),
i=matched.length;
while(i--){
idx=indexOf.call(seed, matched[ i ]);
seed[ idx ] = !(matches[ idx ]=matched[ i ]);
}}) :
function(elem){
return fn(elem, 0, args);
};}
return fn;
}},
pseudos: {
not: markFunction(function(selector){
var input=[],
results=[],
matcher=compile(selector.replace(rtrimCSS, "$1") );
return matcher[ expando ] ?
markFunction(function(seed, matches, _context, xml){
var elem,
unmatched=matcher(seed, null, xml, []),
i=seed.length;
while(i--){
if(( elem=unmatched[ i ]) ){
seed[ i ] = !(matches[ i ]=elem);
}}
}) :
function(elem, _context, xml){
input[ 0 ]=elem;
matcher(input, null, xml, results);
input[ 0 ]=null;
return !results.pop();
};}),
has: markFunction(function(selector){
return function(elem){
return find(selector, elem).length > 0;
};}),
contains: markFunction(function(text){
text=text.replace(runescape, funescape);
return function(elem){
return(elem.textContent||jQuery.text(elem) ).indexOf(text) > -1;
};}),
lang: markFunction(function(lang){
if(!ridentifier.test(lang||"") ){
find.error("unsupported lang: " + lang);
}
lang=lang.replace(runescape, funescape).toLowerCase();
return function(elem){
var elemLang;
do {
if(( elemLang=documentIsHTML ?
elem.lang :
elem.getAttribute("xml:lang")||elem.getAttribute("lang") )){
elemLang=elemLang.toLowerCase();
return elemLang===lang||elemLang.indexOf(lang + "-")===0;
}} while(( elem=elem.parentNode)&&elem.nodeType===1);
return false;
};}),
target: function(elem){
var hash=window.location&&window.location.hash;
return hash&&hash.slice(1)===elem.id;
},
root: function(elem){
return elem===documentElement;
},
focus: function(elem){
return elem===safeActiveElement() &&
document.hasFocus() &&
!!(elem.type||elem.href||~elem.tabIndex);
},
enabled: createDisabledPseudo(false),
disabled: createDisabledPseudo(true),
checked: function(elem){
return(nodeName(elem, "input")&&!!elem.checked) ||
(nodeName(elem, "option")&&!!elem.selected);
},
selected: function(elem){
if(elem.parentNode){
elem.parentNode.selectedIndex;
}
return elem.selected===true;
},
empty: function(elem){
for(elem=elem.firstChild; elem; elem=elem.nextSibling){
if(elem.nodeType < 6){
return false;
}}
return true;
},
parent: function(elem){
return !Expr.pseudos.empty(elem);
},
header: function(elem){
return rheader.test(elem.nodeName);
},
input: function(elem){
return rinputs.test(elem.nodeName);
},
button: function(elem){
return nodeName(elem, "input")&&elem.type==="button" ||
nodeName(elem, "button");
},
text: function(elem){
var attr;
return nodeName(elem, "input")&&elem.type==="text" &&
(( attr=elem.getAttribute("type") )==null ||
attr.toLowerCase()==="text");
},
first: createPositionalPseudo(function(){
return [ 0 ];
}),
last: createPositionalPseudo(function(_matchIndexes, length){
return [ length - 1 ];
}),
eq: createPositionalPseudo(function(_matchIndexes, length, argument){
return [ argument < 0 ? argument + length:argument ];
}),
even: createPositionalPseudo(function(matchIndexes, length){
var i=0;
for(; i < length; i +=2){
matchIndexes.push(i);
}
return matchIndexes;
}),
odd: createPositionalPseudo(function(matchIndexes, length){
var i=1;
for(; i < length; i +=2){
matchIndexes.push(i);
}
return matchIndexes;
}),
lt: createPositionalPseudo(function(matchIndexes, length, argument){
var i;
if(argument < 0){
i=argument + length;
}else if(argument > length){
i=length;
}else{
i=argument;
}
for(; --i >=0;){
matchIndexes.push(i);
}
return matchIndexes;
}),
gt: createPositionalPseudo(function(matchIndexes, length, argument){
var i=argument < 0 ? argument + length:argument;
for(; ++i < length;){
matchIndexes.push(i);
}
return matchIndexes;
})
}};
Expr.pseudos.nth=Expr.pseudos.eq;
for(i in { radio: true, checkbox: true, file: true, password: true, image: true }){
Expr.pseudos[ i ]=createInputPseudo(i);
}
for(i in { submit: true, reset: true }){
Expr.pseudos[ i ]=createButtonPseudo(i);
}
function setFilters(){}
setFilters.prototype=Expr.filters=Expr.pseudos;
Expr.setFilters=new setFilters();
function tokenize(selector, parseOnly){
var matched, match, tokens, type,
soFar, groups, preFilters,
cached=tokenCache[ selector + " " ];
if(cached){
return parseOnly ? 0:cached.slice(0);
}
soFar=selector;
groups=[];
preFilters=Expr.preFilter;
while(soFar){
if(!matched||(match=rcomma.exec(soFar) )){
if(match){
soFar=soFar.slice(match[ 0 ].length)||soFar;
}
groups.push(( tokens=[]) );
}
matched=false;
if(( match=rleadingCombinator.exec(soFar) )){
matched=match.shift();
tokens.push({
value: matched,
type: match[ 0 ].replace(rtrimCSS, " ")
});
soFar=soFar.slice(matched.length);
}
for(type in Expr.filter){
if(( match=matchExpr[ type ].exec(soFar) )&&(!preFilters[ type ] ||
(match=preFilters[ type ](match) )) ){
matched=match.shift();
tokens.push({
value: matched,
type: type,
matches: match
});
soFar=soFar.slice(matched.length);
}}
if(!matched){
break;
}}
if(parseOnly){
return soFar.length;
}
return soFar ?
find.error(selector) :
tokenCache(selector, groups).slice(0);
}
function toSelector(tokens){
var i=0,
len=tokens.length,
selector="";
for(; i < len; i++){
selector +=tokens[ i ].value;
}
return selector;
}
function addCombinator(matcher, combinator, base){
var dir=combinator.dir,
skip=combinator.next,
key=skip||dir,
checkNonElements=base&&key==="parentNode",
doneName=done++;
return combinator.first ?
function(elem, context, xml){
while(( elem=elem[ dir ]) ){
if(elem.nodeType===1||checkNonElements){
return matcher(elem, context, xml);
}}
return false;
} :
function(elem, context, xml){
var oldCache, outerCache,
newCache=[ dirruns, doneName ];
if(xml){
while(( elem=elem[ dir ]) ){
if(elem.nodeType===1||checkNonElements){
if(matcher(elem, context, xml) ){
return true;
}}
}}else{
while(( elem=elem[ dir ]) ){
if(elem.nodeType===1||checkNonElements){
outerCache=elem[ expando ]||(elem[ expando ]={});
if(skip&&nodeName(elem, skip) ){
elem=elem[ dir ]||elem;
}else if(( oldCache=outerCache[ key ]) &&
oldCache[ 0 ]===dirruns&&oldCache[ 1 ]===doneName){
return(newCache[ 2 ]=oldCache[ 2 ]);
}else{
outerCache[ key ]=newCache;
if(( newCache[ 2 ]=matcher(elem, context, xml) )){
return true;
}}
}}
}
return false;
};}
function elementMatcher(matchers){
return matchers.length > 1 ?
function(elem, context, xml){
var i=matchers.length;
while(i--){
if(!matchers[ i ](elem, context, xml) ){
return false;
}}
return true;
} :
matchers[ 0 ];
}
function multipleContexts(selector, contexts, results){
var i=0,
len=contexts.length;
for(; i < len; i++){
find(selector, contexts[ i ], results);
}
return results;
}
function condense(unmatched, map, filter, context, xml){
var elem,
newUnmatched=[],
i=0,
len=unmatched.length,
mapped=map!=null;
for(; i < len; i++){
if(( elem=unmatched[ i ]) ){
if(!filter||filter(elem, context, xml) ){
newUnmatched.push(elem);
if(mapped){
map.push(i);
}}
}}
return newUnmatched;
}
function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector){
if(postFilter&&!postFilter[ expando ]){
postFilter=setMatcher(postFilter);
}
if(postFinder&&!postFinder[ expando ]){
postFinder=setMatcher(postFinder, postSelector);
}
return markFunction(function(seed, results, context, xml){
var temp, i, elem, matcherOut,
preMap=[],
postMap=[],
preexisting=results.length,
elems=seed ||
multipleContexts(selector||"*",
context.nodeType ? [ context ]:context, []),
matcherIn=preFilter&&(seed||!selector) ?
condense(elems, preMap, preFilter, context, xml) :
elems;
if(matcher){
matcherOut=postFinder||(seed ? preFilter:preexisting||postFilter) ?
[] :
results;
matcher(matcherIn, matcherOut, context, xml);
}else{
matcherOut=matcherIn;
}
if(postFilter){
temp=condense(matcherOut, postMap);
postFilter(temp, [], context, xml);
i=temp.length;
while(i--){
if(( elem=temp[ i ]) ){
matcherOut[ postMap[ i ] ] = !(matcherIn[ postMap[ i ] ]=elem);
}}
}
if(seed){
if(postFinder||preFilter){
if(postFinder){
temp=[];
i=matcherOut.length;
while(i--){
if(( elem=matcherOut[ i ]) ){
temp.push(( matcherIn[ i ]=elem) );
}}
postFinder(null,(matcherOut=[]), temp, xml);
}
i=matcherOut.length;
while(i--){
if(( elem=matcherOut[ i ]) &&
(temp=postFinder ? indexOf.call(seed, elem):preMap[ i ]) > -1){
seed[ temp ] = !(results[ temp ]=elem);
}}
}}else{
matcherOut=condense(
matcherOut===results ?
matcherOut.splice(preexisting, matcherOut.length) :
matcherOut
);
if(postFinder){
postFinder(null, results, matcherOut, xml);
}else{
push.apply(results, matcherOut);
}}
});
}
function matcherFromTokens(tokens){
var checkContext, matcher, j,
len=tokens.length,
leadingRelative=Expr.relative[ tokens[ 0 ].type ],
implicitRelative=leadingRelative||Expr.relative[ " " ],
i=leadingRelative ? 1:0,
matchContext=addCombinator(function(elem){
return elem===checkContext;
}, implicitRelative, true),
matchAnyContext=addCombinator(function(elem){
return indexOf.call(checkContext, elem) > -1;
}, implicitRelative, true),
matchers=[ function(elem, context, xml){
var ret=(!leadingRelative&&(xml||context!=outermostContext) )||(
(checkContext=context).nodeType ?
matchContext(elem, context, xml) :
matchAnyContext(elem, context, xml) );
checkContext=null;
return ret;
} ];
for(; i < len; i++){
if(( matcher=Expr.relative[ tokens[ i ].type ]) ){
matchers=[ addCombinator(elementMatcher(matchers), matcher) ];
}else{
matcher=Expr.filter[ tokens[ i ].type ].apply(null, tokens[ i ].matches);
if(matcher[ expando ]){
j=++i;
for(; j < len; j++){
if(Expr.relative[ tokens[ j ].type ]){
break;
}}
return setMatcher(
i > 1&&elementMatcher(matchers),
i > 1&&toSelector(
tokens.slice(0, i - 1)
.concat({ value: tokens[ i - 2 ].type===" " ? "*":"" })
).replace(rtrimCSS, "$1"),
matcher,
i < j&&matcherFromTokens(tokens.slice(i, j) ),
j < len&&matcherFromTokens(( tokens=tokens.slice(j) )),
j < len&&toSelector(tokens)
);
}
matchers.push(matcher);
}}
return elementMatcher(matchers);
}
function matcherFromGroupMatchers(elementMatchers, setMatchers){
var bySet=setMatchers.length > 0,
byElement=elementMatchers.length > 0,
superMatcher=function(seed, context, xml, results, outermost){
var elem, j, matcher,
matchedCount=0,
i="0",
unmatched=seed&&[],
setMatched=[],
contextBackup=outermostContext,
elems=seed||byElement&&Expr.find.TAG("*", outermost),
dirrunsUnique=(dirruns +=contextBackup==null ? 1:Math.random()||0.1),
len=elems.length;
if(outermost){
outermostContext=context==document||context||outermost;
}
for(; i!==len&&(elem=elems[ i ])!=null; i++){
if(byElement&&elem){
j=0;
if(!context&&elem.ownerDocument!=document){
setDocument(elem);
xml = !documentIsHTML;
}
while(( matcher=elementMatchers[ j++ ]) ){
if(matcher(elem, context||document, xml) ){
push.call(results, elem);
break;
}}
if(outermost){
dirruns=dirrunsUnique;
}}
if(bySet){
if(( elem = !matcher&&elem) ){
matchedCount--;
}
if(seed){
unmatched.push(elem);
}}
}
matchedCount +=i;
if(bySet&&i!==matchedCount){
j=0;
while(( matcher=setMatchers[ j++ ]) ){
matcher(unmatched, setMatched, context, xml);
}
if(seed){
if(matchedCount > 0){
while(i--){
if(!(unmatched[ i ]||setMatched[ i ]) ){
setMatched[ i ]=pop.call(results);
}}
}
setMatched=condense(setMatched);
}
push.apply(results, setMatched);
if(outermost&&!seed&&setMatched.length > 0 &&
(matchedCount + setMatchers.length) > 1){
jQuery.uniqueSort(results);
}}
if(outermost){
dirruns=dirrunsUnique;
outermostContext=contextBackup;
}
return unmatched;
};
return bySet ?
markFunction(superMatcher) :
superMatcher;
}
function compile(selector, match ){
var i,
setMatchers=[],
elementMatchers=[],
cached=compilerCache[ selector + " " ];
if(!cached){
if(!match){
match=tokenize(selector);
}
i=match.length;
while(i--){
cached=matcherFromTokens(match[ i ]);
if(cached[ expando ]){
setMatchers.push(cached);
}else{
elementMatchers.push(cached);
}}
cached=compilerCache(selector,
matcherFromGroupMatchers(elementMatchers, setMatchers) );
cached.selector=selector;
}
return cached;
}
function select(selector, context, results, seed){
var i, tokens, token, type, find,
compiled=typeof selector==="function"&&selector,
match = !seed&&tokenize(( selector=compiled.selector||selector) );
results=results||[];
if(match.length===1){
tokens=match[ 0 ]=match[ 0 ].slice(0);
if(tokens.length > 2&&(token=tokens[ 0 ]).type==="ID" &&
context.nodeType===9&&documentIsHTML&&Expr.relative[ tokens[ 1 ].type ]){
context=(Expr.find.ID(token.matches[ 0 ].replace(runescape, funescape),
context
)||[])[ 0 ];
if(!context){
return results;
}else if(compiled){
context=context.parentNode;
}
selector=selector.slice(tokens.shift().value.length);
}
i=matchExpr.needsContext.test(selector) ? 0:tokens.length;
while(i--){
token=tokens[ i ];
if(Expr.relative[(type=token.type) ]){
break;
}
if(( find=Expr.find[ type ]) ){
if(( seed=find(
token.matches[ 0 ].replace(runescape, funescape),
rsibling.test(tokens[ 0 ].type) &&
testContext(context.parentNode)||context
)) ){
tokens.splice(i, 1);
selector=seed.length&&toSelector(tokens);
if(!selector){
push.apply(results, seed);
return results;
}
break;
}}
}}
(compiled||compile(selector, match) )(
seed,
context,
!documentIsHTML,
results,
!context||rsibling.test(selector)&&testContext(context.parentNode)||context
);
return results;
}
support.sortStable=expando.split("").sort(sortOrder).join("")===expando;
setDocument();
support.sortDetached=assert(function(el){
return el.compareDocumentPosition(document.createElement("fieldset") ) & 1;
});
jQuery.find=find;
jQuery.expr[ ":" ]=jQuery.expr.pseudos;
jQuery.unique=jQuery.uniqueSort;
find.compile=compile;
find.select=select;
find.setDocument=setDocument;
find.tokenize=tokenize;
find.escape=jQuery.escapeSelector;
find.getText=jQuery.text;
find.isXML=jQuery.isXMLDoc;
find.selectors=jQuery.expr;
find.support=jQuery.support;
find.uniqueSort=jQuery.uniqueSort;
})();
var dir=function(elem, dir, until){
var matched=[],
truncate=until!==undefined;
while(( elem=elem[ dir ])&&elem.nodeType!==9){
if(elem.nodeType===1){
if(truncate&&jQuery(elem).is(until) ){
break;
}
matched.push(elem);
}}
return matched;
};
var siblings=function(n, elem){
var matched=[];
for(; n; n=n.nextSibling){
if(n.nodeType===1&&n!==elem){
matched.push(n);
}}
return matched;
};
var rneedsContext=jQuery.expr.match.needsContext;
var rsingleTag=(/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i);
function winnow(elements, qualifier, not){
if(isFunction(qualifier) ){
return jQuery.grep(elements, function(elem, i){
return !!qualifier.call(elem, i, elem)!==not;
});
}
if(qualifier.nodeType){
return jQuery.grep(elements, function(elem){
return(elem===qualifier)!==not;
});
}
if(typeof qualifier!=="string"){
return jQuery.grep(elements, function(elem){
return(indexOf.call(qualifier, elem) > -1)!==not;
});
}
return jQuery.filter(qualifier, elements, not);
}
jQuery.filter=function(expr, elems, not){
var elem=elems[ 0 ];
if(not){
expr=":not(" + expr + ")";
}
if(elems.length===1&&elem.nodeType===1){
return jQuery.find.matchesSelector(elem, expr) ? [ elem ]:[];
}
return jQuery.find.matches(expr, jQuery.grep(elems, function(elem){
return elem.nodeType===1;
}) );
};
jQuery.fn.extend({
find: function(selector){
var i, ret,
len=this.length,
self=this;
if(typeof selector!=="string"){
return this.pushStack(jQuery(selector).filter(function(){
for(i=0; i < len; i++){
if(jQuery.contains(self[ i ], this) ){
return true;
}}
}) );
}
ret=this.pushStack([]);
for(i=0; i < len; i++){
jQuery.find(selector, self[ i ], ret);
}
return len > 1 ? jQuery.uniqueSort(ret):ret;
},
filter: function(selector){
return this.pushStack(winnow(this, selector||[], false) );
},
not: function(selector){
return this.pushStack(winnow(this, selector||[], true) );
},
is: function(selector){
return !!winnow(
this,
typeof selector==="string"&&rneedsContext.test(selector) ?
jQuery(selector) :
selector||[],
false
).length;
}});
var rootjQuery,
rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
init=jQuery.fn.init=function(selector, context, root){
var match, elem;
if(!selector){
return this;
}
root=root||rootjQuery;
if(typeof selector==="string"){
if(selector[ 0 ]==="<" &&
selector[ selector.length - 1 ]===">" &&
selector.length >=3){
match=[ null, selector, null ];
}else{
match=rquickExpr.exec(selector);
}
if(match&&(match[ 1 ]||!context) ){
if(match[ 1 ]){
context=context instanceof jQuery ? context[ 0 ]:context;
jQuery.merge(this, jQuery.parseHTML(match[ 1 ],
context&&context.nodeType ? context.ownerDocument||context:document,
true
));
if(rsingleTag.test(match[ 1 ])&&jQuery.isPlainObject(context) ){
for(match in context){
if(isFunction(this[ match ]) ){
this[ match ](context[ match ]);
}else{
this.attr(match, context[ match ]);
}}
}
return this;
}else{
elem=document.getElementById(match[ 2 ]);
if(elem){
this[ 0 ]=elem;
this.length=1;
}
return this;
}}else if(!context||context.jquery){
return(context||root).find(selector);
}else{
return this.constructor(context).find(selector);
}}else if(selector.nodeType){
this[ 0 ]=selector;
this.length=1;
return this;
}else if(isFunction(selector) ){
return root.ready!==undefined ?
root.ready(selector) :
selector(jQuery);
}
return jQuery.makeArray(selector, this);
};
init.prototype=jQuery.fn;
rootjQuery=jQuery(document);
var rparentsprev=/^(?:parents|prev(?:Until|All))/,
guaranteedUnique={
children: true,
contents: true,
next: true,
prev: true
};
jQuery.fn.extend({
has: function(target){
var targets=jQuery(target, this),
l=targets.length;
return this.filter(function(){
var i=0;
for(; i < l; i++){
if(jQuery.contains(this, targets[ i ]) ){
return true;
}}
});
},
closest: function(selectors, context){
var cur,
i=0,
l=this.length,
matched=[],
targets=typeof selectors!=="string"&&jQuery(selectors);
if(!rneedsContext.test(selectors) ){
for(; i < l; i++){
for(cur=this[ i ]; cur&&cur!==context; cur=cur.parentNode){
if(cur.nodeType < 11&&(targets ?
targets.index(cur) > -1 :
cur.nodeType===1 &&
jQuery.find.matchesSelector(cur, selectors) )){
matched.push(cur);
break;
}}
}}
return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched):matched);
},
index: function(elem){
if(!elem){
return(this[ 0 ]&&this[ 0 ].parentNode) ? this.first().prevAll().length:-1;
}
if(typeof elem==="string"){
return indexOf.call(jQuery(elem), this[ 0 ]);
}
return indexOf.call(this,
elem.jquery ? elem[ 0 ]:elem
);
},
add: function(selector, context){
return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context) )
)
);
},
addBack: function(selector){
return this.add(selector==null ?
this.prevObject:this.prevObject.filter(selector)
);
}});
function sibling(cur, dir){
while(( cur=cur[ dir ])&&cur.nodeType!==1){}
return cur;
}
jQuery.each({
parent: function(elem){
var parent=elem.parentNode;
return parent&&parent.nodeType!==11 ? parent:null;
},
parents: function(elem){
return dir(elem, "parentNode");
},
parentsUntil: function(elem, _i, until){
return dir(elem, "parentNode", until);
},
next: function(elem){
return sibling(elem, "nextSibling");
},
prev: function(elem){
return sibling(elem, "previousSibling");
},
nextAll: function(elem){
return dir(elem, "nextSibling");
},
prevAll: function(elem){
return dir(elem, "previousSibling");
},
nextUntil: function(elem, _i, until){
return dir(elem, "nextSibling", until);
},
prevUntil: function(elem, _i, until){
return dir(elem, "previousSibling", until);
},
siblings: function(elem){
return siblings(( elem.parentNode||{}).firstChild, elem);
},
children: function(elem){
return siblings(elem.firstChild);
},
contents: function(elem){
if(elem.contentDocument!=null &&
getProto(elem.contentDocument) ){
return elem.contentDocument;
}
if(nodeName(elem, "template") ){
elem=elem.content||elem;
}
return jQuery.merge([], elem.childNodes);
}}, function(name, fn){
jQuery.fn[ name ]=function(until, selector){
var matched=jQuery.map(this, fn, until);
if(name.slice(-5)!=="Until"){
selector=until;
}
if(selector&&typeof selector==="string"){
matched=jQuery.filter(selector, matched);
}
if(this.length > 1){
if(!guaranteedUnique[ name ]){
jQuery.uniqueSort(matched);
}
if(rparentsprev.test(name) ){
matched.reverse();
}}
return this.pushStack(matched);
};});
var rnothtmlwhite=(/[^\x20\t\r\n\f]+/g);
function createOptions(options){
var object={};
jQuery.each(options.match(rnothtmlwhite)||[], function(_, flag){
object[ flag ]=true;
});
return object;
}
jQuery.Callbacks=function(options){
options=typeof options==="string" ?
createOptions(options) :
jQuery.extend({}, options);
var
firing,
memory,
fired,
locked,
list=[],
queue=[],
firingIndex=-1,
fire=function(){
locked=locked||options.once;
fired=firing=true;
for(; queue.length; firingIndex=-1){
memory=queue.shift();
while ( ++firingIndex < list.length){
if(list[ firingIndex ].apply(memory[ 0 ], memory[ 1 ])===false &&
options.stopOnFalse){
firingIndex=list.length;
memory=false;
}}
}
if(!options.memory){
memory=false;
}
firing=false;
if(locked){
if(memory){
list=[];
}else{
list="";
}}
},
self={
add: function(){
if(list){
if(memory&&!firing){
firingIndex=list.length - 1;
queue.push(memory);
}
(function add(args){
jQuery.each(args, function(_, arg){
if(isFunction(arg) ){
if(!options.unique||!self.has(arg) ){
list.push(arg);
}}else if(arg&&arg.length&&toType(arg)!=="string"){
add(arg);
}});
})(arguments);
if(memory&&!firing){
fire();
}}
return this;
},
remove: function(){
jQuery.each(arguments, function(_, arg){
var index;
while(( index=jQuery.inArray(arg, list, index) ) > -1){
list.splice(index, 1);
if(index <=firingIndex){
firingIndex--;
}}
});
return this;
},
has: function(fn){
return fn ?
jQuery.inArray(fn, list) > -1 :
list.length > 0;
},
empty: function(){
if(list){
list=[];
}
return this;
},
disable: function(){
locked=queue=[];
list=memory="";
return this;
},
disabled: function(){
return !list;
},
lock: function(){
locked=queue=[];
if(!memory&&!firing){
list=memory="";
}
return this;
},
locked: function(){
return !!locked;
},
fireWith: function(context, args){
if(!locked){
args=args||[];
args=[ context, args.slice ? args.slice():args ];
queue.push(args);
if(!firing){
fire();
}}
return this;
},
fire: function(){
self.fireWith(this, arguments);
return this;
},
fired: function(){
return !!fired;
}};
return self;
};
function Identity(v){
return v;
}
function Thrower(ex){
throw ex;
}
function adoptValue(value, resolve, reject, noValue){
var method;
try {
if(value&&isFunction(( method=value.promise) )){
method.call(value).done(resolve).fail(reject);
}else if(value&&isFunction(( method=value.then) )){
method.call(value, resolve, reject);
}else{
resolve.apply(undefined, [ value ].slice(noValue) );
}} catch(value){
reject.apply(undefined, [ value ]);
}}
jQuery.extend({
Deferred: function(func){
var tuples=[
[ "notify", "progress", jQuery.Callbacks("memory"),
jQuery.Callbacks("memory"), 2 ],
[ "resolve", "done", jQuery.Callbacks("once memory"),
jQuery.Callbacks("once memory"), 0, "resolved" ],
[ "reject", "fail", jQuery.Callbacks("once memory"),
jQuery.Callbacks("once memory"), 1, "rejected" ]
],
state="pending",
promise={
state: function(){
return state;
},
always: function(){
deferred.done(arguments).fail(arguments);
return this;
},
"catch": function(fn){
return promise.then(null, fn);
},
pipe: function(){
var fns=arguments;
return jQuery.Deferred(function(newDefer){
jQuery.each(tuples, function(_i, tuple){
var fn=isFunction(fns[ tuple[ 4 ] ])&&fns[ tuple[ 4 ] ];
deferred[ tuple[ 1 ] ](function(){
var returned=fn&&fn.apply(this, arguments);
if(returned&&isFunction(returned.promise) ){
returned.promise()
.progress(newDefer.notify)
.done(newDefer.resolve)
.fail(newDefer.reject);
}else{
newDefer[ tuple[ 0 ] + "With" ](
this,
fn ? [ returned ]:arguments
);
}});
});
fns=null;
}).promise();
},
then: function(onFulfilled, onRejected, onProgress){
var maxDepth=0;
function resolve(depth, deferred, handler, special){
return function(){
var that=this,
args=arguments,
mightThrow=function(){
var returned, then;
if(depth < maxDepth){
return;
}
returned=handler.apply(that, args);
if(returned===deferred.promise()){
throw new TypeError("Thenable self-resolution");
}
then=returned &&
(typeof returned==="object" ||
typeof returned==="function") &&
returned.then;
if(isFunction(then) ){
if(special){
then.call(returned,
resolve(maxDepth, deferred, Identity, special),
resolve(maxDepth, deferred, Thrower, special)
);
}else{
maxDepth++;
then.call(returned,
resolve(maxDepth, deferred, Identity, special),
resolve(maxDepth, deferred, Thrower, special),
resolve(maxDepth, deferred, Identity,
deferred.notifyWith)
);
}}else{
if(handler!==Identity){
that=undefined;
args=[ returned ];
}
(special||deferred.resolveWith)(that, args);
}},
process=special ?
mightThrow :
function(){
try {
mightThrow();
} catch(e){
if(jQuery.Deferred.exceptionHook){
jQuery.Deferred.exceptionHook(e,
process.error);
}
if(depth + 1 >=maxDepth){
if(handler!==Thrower){
that=undefined;
args=[ e ];
}
deferred.rejectWith(that, args);
}}
};
if(depth){
process();
}else{
if(jQuery.Deferred.getErrorHook){
process.error=jQuery.Deferred.getErrorHook();
}else if(jQuery.Deferred.getStackHook){
process.error=jQuery.Deferred.getStackHook();
}
window.setTimeout(process);
}};}
return jQuery.Deferred(function(newDefer){
tuples[ 0 ][ 3 ].add(resolve(
0,
newDefer,
isFunction(onProgress) ?
onProgress :
Identity,
newDefer.notifyWith
)
);
tuples[ 1 ][ 3 ].add(resolve(
0,
newDefer,
isFunction(onFulfilled) ?
onFulfilled :
Identity
)
);
tuples[ 2 ][ 3 ].add(resolve(
0,
newDefer,
isFunction(onRejected) ?
onRejected :
Thrower
)
);
}).promise();
},
promise: function(obj){
return obj!=null ? jQuery.extend(obj, promise):promise;
}},
deferred={};
jQuery.each(tuples, function(i, tuple){
var list=tuple[ 2 ],
stateString=tuple[ 5 ];
promise[ tuple[ 1 ] ]=list.add;
if(stateString){
list.add(function(){
state=stateString;
},
tuples[ 3 - i ][ 2 ].disable,
tuples[ 3 - i ][ 3 ].disable,
tuples[ 0 ][ 2 ].lock,
tuples[ 0 ][ 3 ].lock
);
}
list.add(tuple[ 3 ].fire);
deferred[ tuple[ 0 ] ]=function(){
deferred[ tuple[ 0 ] + "With" ](this===deferred ? undefined:this, arguments);
return this;
};
deferred[ tuple[ 0 ] + "With" ]=list.fireWith;
});
promise.promise(deferred);
if(func){
func.call(deferred, deferred);
}
return deferred;
},
when: function(singleValue){
var
remaining=arguments.length,
i=remaining,
resolveContexts=Array(i),
resolveValues=slice.call(arguments),
primary=jQuery.Deferred(),
updateFunc=function(i){
return function(value){
resolveContexts[ i ]=this;
resolveValues[ i ]=arguments.length > 1 ? slice.call(arguments):value;
if(!(--remaining) ){
primary.resolveWith(resolveContexts, resolveValues);
}};};
if(remaining <=1){
adoptValue(singleValue, primary.done(updateFunc(i) ).resolve, primary.reject,
!remaining);
if(primary.state()==="pending" ||
isFunction(resolveValues[ i ]&&resolveValues[ i ].then) ){
return primary.then();
}}
while(i--){
adoptValue(resolveValues[ i ], updateFunc(i), primary.reject);
}
return primary.promise();
}});
var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
jQuery.Deferred.exceptionHook=function(error, asyncError){
if(window.console&&window.console.warn&&error&&rerrorNames.test(error.name) ){
window.console.warn("jQuery.Deferred exception: " + error.message,
error.stack, asyncError);
}};
jQuery.readyException=function(error){
window.setTimeout(function(){
throw error;
});
};
var readyList=jQuery.Deferred();
jQuery.fn.ready=function(fn){
readyList
.then(fn)
.catch(function(error){
jQuery.readyException(error);
});
return this;
};
jQuery.extend({
isReady: false,
readyWait: 1,
ready: function(wait){
if(wait===true ? --jQuery.readyWait:jQuery.isReady){
return;
}
jQuery.isReady=true;
if(wait!==true&&--jQuery.readyWait > 0){
return;
}
readyList.resolveWith(document, [ jQuery ]);
}});
jQuery.ready.then=readyList.then;
function completed(){
document.removeEventListener("DOMContentLoaded", completed);
window.removeEventListener("load", completed);
jQuery.ready();
}
if(document.readyState==="complete" ||
(document.readyState!=="loading"&&!document.documentElement.doScroll) ){
window.setTimeout(jQuery.ready);
}else{
document.addEventListener("DOMContentLoaded", completed);
window.addEventListener("load", completed);
}
var access=function(elems, fn, key, value, chainable, emptyGet, raw){
var i=0,
len=elems.length,
bulk=key==null;
if(toType(key)==="object"){
chainable=true;
for(i in key){
access(elems, fn, i, key[ i ], true, emptyGet, raw);
}}else if(value!==undefined){
chainable=true;
if(!isFunction(value) ){
raw=true;
}
if(bulk){
if(raw){
fn.call(elems, value);
fn=null;
}else{
bulk=fn;
fn=function(elem, _key, value){
return bulk.call(jQuery(elem), value);
};}}
if(fn){
for(; i < len; i++){
fn(
elems[ i ], key, raw ?
value :
value.call(elems[ i ], i, fn(elems[ i ], key) )
);
}}
}
if(chainable){
return elems;
}
if(bulk){
return fn.call(elems);
}
return len ? fn(elems[ 0 ], key):emptyGet;
};
var rmsPrefix=/^-ms-/,
rdashAlpha=/-([a-z])/g;
function fcamelCase(_all, letter){
return letter.toUpperCase();
}
function camelCase(string){
return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
}
var acceptData=function(owner){
return owner.nodeType===1||owner.nodeType===9||!( +owner.nodeType);
};
function Data(){
this.expando=jQuery.expando + Data.uid++;
}
Data.uid=1;
Data.prototype={
cache: function(owner){
var value=owner[ this.expando ];
if(!value){
value={};
if(acceptData(owner) ){
if(owner.nodeType){
owner[ this.expando ]=value;
}else{
Object.defineProperty(owner, this.expando, {
value: value,
configurable: true
});
}}
}
return value;
},
set: function(owner, data, value){
var prop,
cache=this.cache(owner);
if(typeof data==="string"){
cache[ camelCase(data) ]=value;
}else{
for(prop in data){
cache[ camelCase(prop) ]=data[ prop ];
}}
return cache;
},
get: function(owner, key){
return key===undefined ?
this.cache(owner) :
owner[ this.expando ]&&owner[ this.expando ][ camelCase(key) ];
},
access: function(owner, key, value){
if(key===undefined ||
(( key&&typeof key==="string")&&value===undefined) ){
return this.get(owner, key);
}
this.set(owner, key, value);
return value!==undefined ? value:key;
},
remove: function(owner, key){
var i,
cache=owner[ this.expando ];
if(cache===undefined){
return;
}
if(key!==undefined){
if(Array.isArray(key) ){
key=key.map(camelCase);
}else{
key=camelCase(key);
key=key in cache ?
[ key ] :
(key.match(rnothtmlwhite)||[]);
}
i=key.length;
while(i--){
delete cache[ key[ i ] ];
}}
if(key===undefined||jQuery.isEmptyObject(cache) ){
if(owner.nodeType){
owner[ this.expando ]=undefined;
}else{
delete owner[ this.expando ];
}}
},
hasData: function(owner){
var cache=owner[ this.expando ];
return cache!==undefined&&!jQuery.isEmptyObject(cache);
}};
var dataPriv=new Data();
var dataUser=new Data();
var rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
rmultiDash=/[A-Z]/g;
function getData(data){
if(data==="true"){
return true;
}
if(data==="false"){
return false;
}
if(data==="null"){
return null;
}
if(data===+data + ""){
return +data;
}
if(rbrace.test(data) ){
return JSON.parse(data);
}
return data;
}
function dataAttr(elem, key, data){
var name;
if(data===undefined&&elem.nodeType===1){
name="data-" + key.replace(rmultiDash, "-$&").toLowerCase();
data=elem.getAttribute(name);
if(typeof data==="string"){
try {
data=getData(data);
} catch(e){}
dataUser.set(elem, key, data);
}else{
data=undefined;
}}
return data;
}
jQuery.extend({
hasData: function(elem){
return dataUser.hasData(elem)||dataPriv.hasData(elem);
},
data: function(elem, name, data){
return dataUser.access(elem, name, data);
},
removeData: function(elem, name){
dataUser.remove(elem, name);
},
_data: function(elem, name, data){
return dataPriv.access(elem, name, data);
},
_removeData: function(elem, name){
dataPriv.remove(elem, name);
}});
jQuery.fn.extend({
data: function(key, value){
var i, name, data,
elem=this[ 0 ],
attrs=elem&&elem.attributes;
if(key===undefined){
if(this.length){
data=dataUser.get(elem);
if(elem.nodeType===1&&!dataPriv.get(elem, "hasDataAttrs") ){
i=attrs.length;
while(i--){
if(attrs[ i ]){
name=attrs[ i ].name;
if(name.indexOf("data-")===0){
name=camelCase(name.slice(5) );
dataAttr(elem, name, data[ name ]);
}}
}
dataPriv.set(elem, "hasDataAttrs", true);
}}
return data;
}
if(typeof key==="object"){
return this.each(function(){
dataUser.set(this, key);
});
}
return access(this, function(value){
var data;
if(elem&&value===undefined){
data=dataUser.get(elem, key);
if(data!==undefined){
return data;
}
data=dataAttr(elem, key);
if(data!==undefined){
return data;
}
return;
}
this.each(function(){
dataUser.set(this, key, value);
});
}, null, value, arguments.length > 1, null, true);
},
removeData: function(key){
return this.each(function(){
dataUser.remove(this, key);
});
}});
jQuery.extend({
queue: function(elem, type, data){
var queue;
if(elem){
type=(type||"fx") + "queue";
queue=dataPriv.get(elem, type);
if(data){
if(!queue||Array.isArray(data) ){
queue=dataPriv.access(elem, type, jQuery.makeArray(data) );
}else{
queue.push(data);
}}
return queue||[];
}},
dequeue: function(elem, type){
type=type||"fx";
var queue=jQuery.queue(elem, type),
startLength=queue.length,
fn=queue.shift(),
hooks=jQuery._queueHooks(elem, type),
next=function(){
jQuery.dequeue(elem, type);
};
if(fn==="inprogress"){
fn=queue.shift();
startLength--;
}
if(fn){
if(type==="fx"){
queue.unshift("inprogress");
}
delete hooks.stop;
fn.call(elem, next, hooks);
}
if(!startLength&&hooks){
hooks.empty.fire();
}},
_queueHooks: function(elem, type){
var key=type + "queueHooks";
return dataPriv.get(elem, key)||dataPriv.access(elem, key, {
empty: jQuery.Callbacks("once memory").add(function(){
dataPriv.remove(elem, [ type + "queue", key ]);
})
});
}});
jQuery.fn.extend({
queue: function(type, data){
var setter=2;
if(typeof type!=="string"){
data=type;
type="fx";
setter--;
}
if(arguments.length < setter){
return jQuery.queue(this[ 0 ], type);
}
return data===undefined ?
this :
this.each(function(){
var queue=jQuery.queue(this, type, data);
jQuery._queueHooks(this, type);
if(type==="fx"&&queue[ 0 ]!=="inprogress"){
jQuery.dequeue(this, type);
}});
},
dequeue: function(type){
return this.each(function(){
jQuery.dequeue(this, type);
});
},
clearQueue: function(type){
return this.queue(type||"fx", []);
},
promise: function(type, obj){
var tmp,
count=1,
defer=jQuery.Deferred(),
elements=this,
i=this.length,
resolve=function(){
if(!(--count) ){
defer.resolveWith(elements, [ elements ]);
}};
if(typeof type!=="string"){
obj=type;
type=undefined;
}
type=type||"fx";
while(i--){
tmp=dataPriv.get(elements[ i ], type + "queueHooks");
if(tmp&&tmp.empty){
count++;
tmp.empty.add(resolve);
}}
resolve();
return defer.promise(obj);
}});
var pnum=(/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
var rcssNum=new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i");
var cssExpand=[ "Top", "Right", "Bottom", "Left" ];
var documentElement=document.documentElement;
var isAttached=function(elem){
return jQuery.contains(elem.ownerDocument, elem);
},
composed={ composed: true };
if(documentElement.getRootNode){
isAttached=function(elem){
return jQuery.contains(elem.ownerDocument, elem) ||
elem.getRootNode(composed)===elem.ownerDocument;
};}
var isHiddenWithinTree=function(elem, el){
elem=el||elem;
return elem.style.display==="none" ||
elem.style.display==="" &&
isAttached(elem) &&
jQuery.css(elem, "display")==="none";
};
function adjustCSS(elem, prop, valueParts, tween){
var adjusted, scale,
maxIterations=20,
currentValue=tween ?
function(){
return tween.cur();
} :
function(){
return jQuery.css(elem, prop, "");
},
initial=currentValue(),
unit=valueParts&&valueParts[ 3 ]||(jQuery.cssNumber[ prop ] ? "":"px"),
initialInUnit=elem.nodeType &&
(jQuery.cssNumber[ prop ]||unit!=="px"&&+initial) &&
rcssNum.exec(jQuery.css(elem, prop) );
if(initialInUnit&&initialInUnit[ 3 ]!==unit){
initial=initial / 2;
unit=unit||initialInUnit[ 3 ];
initialInUnit=+initial||1;
while(maxIterations--){
jQuery.style(elem, prop, initialInUnit + unit);
if(( 1 - scale) *(1 -(scale=currentValue() / initial||0.5) ) <=0){
maxIterations=0;
}
initialInUnit=initialInUnit / scale;
}
initialInUnit=initialInUnit * 2;
jQuery.style(elem, prop, initialInUnit + unit);
valueParts=valueParts||[];
}
if(valueParts){
initialInUnit=+initialInUnit||+initial||0;
adjusted=valueParts[ 1 ] ?
initialInUnit +(valueParts[ 1 ] + 1) * valueParts[ 2 ] :
+valueParts[ 2 ];
if(tween){
tween.unit=unit;
tween.start=initialInUnit;
tween.end=adjusted;
}}
return adjusted;
}
var defaultDisplayMap={};
function getDefaultDisplay(elem){
var temp,
doc=elem.ownerDocument,
nodeName=elem.nodeName,
display=defaultDisplayMap[ nodeName ];
if(display){
return display;
}
temp=doc.body.appendChild(doc.createElement(nodeName) );
display=jQuery.css(temp, "display");
temp.parentNode.removeChild(temp);
if(display==="none"){
display="block";
}
defaultDisplayMap[ nodeName ]=display;
return display;
}
function showHide(elements, show){
var display, elem,
values=[],
index=0,
length=elements.length;
for(; index < length; index++){
elem=elements[ index ];
if(!elem.style){
continue;
}
display=elem.style.display;
if(show){
if(display==="none"){
values[ index ]=dataPriv.get(elem, "display")||null;
if(!values[ index ]){
elem.style.display="";
}}
if(elem.style.display===""&&isHiddenWithinTree(elem) ){
values[ index ]=getDefaultDisplay(elem);
}}else{
if(display!=="none"){
values[ index ]="none";
dataPriv.set(elem, "display", display);
}}
}
for(index=0; index < length; index++){
if(values[ index ]!=null){
elements[ index ].style.display=values[ index ];
}}
return elements;
}
jQuery.fn.extend({
show: function(){
return showHide(this, true);
},
hide: function(){
return showHide(this);
},
toggle: function(state){
if(typeof state==="boolean"){
return state ? this.show():this.hide();
}
return this.each(function(){
if(isHiddenWithinTree(this) ){
jQuery(this).show();
}else{
jQuery(this).hide();
}});
}});
var rcheckableType=(/^(?:checkbox|radio)$/i);
var rtagName=(/<([a-z][^\/\0>\x20\t\r\n\f]*)/i);
var rscriptType=(/^$|^module$|\/(?:java|ecma)script/i);
(function(){
var fragment=document.createDocumentFragment(),
div=fragment.appendChild(document.createElement("div") ),
input=document.createElement("input");
input.setAttribute("type", "radio");
input.setAttribute("checked", "checked");
input.setAttribute("name", "t");
div.appendChild(input);
support.checkClone=div.cloneNode(true).cloneNode(true).lastChild.checked;
div.innerHTML="<textarea>x</textarea>";
support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;
div.innerHTML="<option></option>";
support.option = !!div.lastChild;
})();
var wrapMap={
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, "", "" ]
};
wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;
wrapMap.th=wrapMap.td;
if(!support.option){
wrapMap.optgroup=wrapMap.option=[ 1, "<select multiple='multiple'>", "</select>" ];
}
function getAll(context, tag){
var ret;
if(typeof context.getElementsByTagName!=="undefined"){
ret=context.getElementsByTagName(tag||"*");
}else if(typeof context.querySelectorAll!=="undefined"){
ret=context.querySelectorAll(tag||"*");
}else{
ret=[];
}
if(tag===undefined||tag&&nodeName(context, tag) ){
return jQuery.merge([ context ], ret);
}
return ret;
}
function setGlobalEval(elems, refElements){
var i=0,
l=elems.length;
for(; i < l; i++){
dataPriv.set(elems[ i ],
"globalEval",
!refElements||dataPriv.get(refElements[ i ], "globalEval")
);
}}
var rhtml=/<|&#?\w+;/;
function buildFragment(elems, context, scripts, selection, ignored){
var elem, tmp, tag, wrap, attached, j,
fragment=context.createDocumentFragment(),
nodes=[],
i=0,
l=elems.length;
for(; i < l; i++){
elem=elems[ i ];
if(elem||elem===0){
if(toType(elem)==="object"){
jQuery.merge(nodes, elem.nodeType ? [ elem ]:elem);
}else if(!rhtml.test(elem) ){
nodes.push(context.createTextNode(elem) );
}else{
tmp=tmp||fragment.appendChild(context.createElement("div") );
tag=(rtagName.exec(elem)||[ "", "" ])[ 1 ].toLowerCase();
wrap=wrapMap[ tag ]||wrapMap._default;
tmp.innerHTML=wrap[ 1 ] + jQuery.htmlPrefilter(elem) + wrap[ 2 ];
j=wrap[ 0 ];
while(j--){
tmp=tmp.lastChild;
}
jQuery.merge(nodes, tmp.childNodes);
tmp=fragment.firstChild;
tmp.textContent="";
}}
}
fragment.textContent="";
i=0;
while(( elem=nodes[ i++ ]) ){
if(selection&&jQuery.inArray(elem, selection) > -1){
if(ignored){
ignored.push(elem);
}
continue;
}
attached=isAttached(elem);
tmp=getAll(fragment.appendChild(elem), "script");
if(attached){
setGlobalEval(tmp);
}
if(scripts){
j=0;
while(( elem=tmp[ j++ ]) ){
if(rscriptType.test(elem.type||"") ){
scripts.push(elem);
}}
}}
return fragment;
}
var rtypenamespace=/^([^.]*)(?:\.(.+)|)/;
function returnTrue(){
return true;
}
function returnFalse(){
return false;
}
function on(elem, types, selector, data, fn, one){
var origFn, type;
if(typeof types==="object"){
if(typeof selector!=="string"){
data=data||selector;
selector=undefined;
}
for(type in types){
on(elem, type, selector, data, types[ type ], one);
}
return elem;
}
if(data==null&&fn==null){
fn=selector;
data=selector=undefined;
}else if(fn==null){
if(typeof selector==="string"){
fn=data;
data=undefined;
}else{
fn=data;
data=selector;
selector=undefined;
}}
if(fn===false){
fn=returnFalse;
}else if(!fn){
return elem;
}
if(one===1){
origFn=fn;
fn=function(event){
jQuery().off(event);
return origFn.apply(this, arguments);
};
fn.guid=origFn.guid||(origFn.guid=jQuery.guid++);
}
return elem.each(function(){
jQuery.event.add(this, types, fn, data, selector);
});
}
jQuery.event={
global: {},
add: function(elem, types, handler, data, selector){
var handleObjIn, eventHandle, tmp,
events, t, handleObj,
special, handlers, type, namespaces, origType,
elemData=dataPriv.get(elem);
if(!acceptData(elem) ){
return;
}
if(handler.handler){
handleObjIn=handler;
handler=handleObjIn.handler;
selector=handleObjIn.selector;
}
if(selector){
jQuery.find.matchesSelector(documentElement, selector);
}
if(!handler.guid){
handler.guid=jQuery.guid++;
}
if(!(events=elemData.events) ){
events=elemData.events=Object.create(null);
}
if(!(eventHandle=elemData.handle) ){
eventHandle=elemData.handle=function(e){
return typeof jQuery!=="undefined"&&jQuery.event.triggered!==e.type ?
jQuery.event.dispatch.apply(elem, arguments):undefined;
};}
types=(types||"").match(rnothtmlwhite)||[ "" ];
t=types.length;
while(t--){
tmp=rtypenamespace.exec(types[ t ])||[];
type=origType=tmp[ 1 ];
namespaces=(tmp[ 2 ]||"").split(".").sort();
if(!type){
continue;
}
special=jQuery.event.special[ type ]||{};
type=(selector ? special.delegateType:special.bindType)||type;
special=jQuery.event.special[ type ]||{};
handleObj=jQuery.extend({
type: type,
origType: origType,
data: data,
handler: handler,
guid: handler.guid,
selector: selector,
needsContext: selector&&jQuery.expr.match.needsContext.test(selector),
namespace: namespaces.join(".")
}, handleObjIn);
if(!(handlers=events[ type ]) ){
handlers=events[ type ]=[];
handlers.delegateCount=0;
if(!special.setup ||
special.setup.call(elem, data, namespaces, eventHandle)===false){
if(elem.addEventListener){
elem.addEventListener(type, eventHandle);
}}
}
if(special.add){
special.add.call(elem, handleObj);
if(!handleObj.handler.guid){
handleObj.handler.guid=handler.guid;
}}
if(selector){
handlers.splice(handlers.delegateCount++, 0, handleObj);
}else{
handlers.push(handleObj);
}
jQuery.event.global[ type ]=true;
}},
remove: function(elem, types, handler, selector, mappedTypes){
var j, origCount, tmp,
events, t, handleObj,
special, handlers, type, namespaces, origType,
elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);
if(!elemData||!(events=elemData.events) ){
return;
}
types=(types||"").match(rnothtmlwhite)||[ "" ];
t=types.length;
while(t--){
tmp=rtypenamespace.exec(types[ t ])||[];
type=origType=tmp[ 1 ];
namespaces=(tmp[ 2 ]||"").split(".").sort();
if(!type){
for(type in events){
jQuery.event.remove(elem, type + types[ t ], handler, selector, true);
}
continue;
}
special=jQuery.event.special[ type ]||{};
type=(selector ? special.delegateType:special.bindType)||type;
handlers=events[ type ]||[];
tmp=tmp[ 2 ] &&
new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)");
origCount=j = handlers.length;
while(j--){
handleObj=handlers[ j ];
if(( mappedTypes||origType===handleObj.origType) &&
(!handler||handler.guid===handleObj.guid) &&
(!tmp||tmp.test(handleObj.namespace) ) &&
(!selector||selector===handleObj.selector ||
selector==="**"&&handleObj.selector) ){
handlers.splice(j, 1);
if(handleObj.selector){
handlers.delegateCount--;
}
if(special.remove){
special.remove.call(elem, handleObj);
}}
}
if(origCount&&!handlers.length){
if(!special.teardown ||
special.teardown.call(elem, namespaces, elemData.handle)===false){
jQuery.removeEvent(elem, type, elemData.handle);
}
delete events[ type ];
}}
if(jQuery.isEmptyObject(events) ){
dataPriv.remove(elem, "handle events");
}},
dispatch: function(nativeEvent){
var i, j, ret, matched, handleObj, handlerQueue,
args=new Array(arguments.length),
event=jQuery.event.fix(nativeEvent),
handlers=(
dataPriv.get(this, "events")||Object.create(null)
)[ event.type ]||[],
special=jQuery.event.special[ event.type ]||{};
args[ 0 ]=event;
for(i=1; i < arguments.length; i++){
args[ i ]=arguments[ i ];
}
event.delegateTarget=this;
if(special.preDispatch&&special.preDispatch.call(this, event)===false){
return;
}
handlerQueue=jQuery.event.handlers.call(this, event, handlers);
i=0;
while(( matched=handlerQueue[ i++ ])&&!event.isPropagationStopped()){
event.currentTarget=matched.elem;
j=0;
while(( handleObj=matched.handlers[ j++ ]) &&
!event.isImmediatePropagationStopped()){
if(!event.rnamespace||handleObj.namespace===false ||
event.rnamespace.test(handleObj.namespace) ){
event.handleObj=handleObj;
event.data=handleObj.data;
ret=(( jQuery.event.special[ handleObj.origType ]||{}).handle ||
handleObj.handler).apply(matched.elem, args);
if(ret!==undefined){
if(( event.result=ret)===false){
event.preventDefault();
event.stopPropagation();
}}
}}
}
if(special.postDispatch){
special.postDispatch.call(this, event);
}
return event.result;
},
handlers: function(event, handlers){
var i, handleObj, sel, matchedHandlers, matchedSelectors,
handlerQueue=[],
delegateCount=handlers.delegateCount,
cur=event.target;
if(delegateCount &&
cur.nodeType &&
!(event.type==="click"&&event.button >=1) ){
for(; cur!==this; cur=cur.parentNode||this){
if(cur.nodeType===1&&!(event.type==="click"&&cur.disabled===true) ){
matchedHandlers=[];
matchedSelectors={};
for(i=0; i < delegateCount; i++){
handleObj=handlers[ i ];
sel=handleObj.selector + " ";
if(matchedSelectors[ sel ]===undefined){
matchedSelectors[ sel ]=handleObj.needsContext ?
jQuery(sel, this).index(cur) > -1 :
jQuery.find(sel, this, null, [ cur ]).length;
}
if(matchedSelectors[ sel ]){
matchedHandlers.push(handleObj);
}}
if(matchedHandlers.length){
handlerQueue.push({ elem: cur, handlers: matchedHandlers });
}}
}}
cur=this;
if(delegateCount < handlers.length){
handlerQueue.push({ elem: cur, handlers: handlers.slice(delegateCount) });
}
return handlerQueue;
},
addProp: function(name, hook){
Object.defineProperty(jQuery.Event.prototype, name, {
enumerable: true,
configurable: true,
get: isFunction(hook) ?
function(){
if(this.originalEvent){
return hook(this.originalEvent);
}} :
function(){
if(this.originalEvent){
return this.originalEvent[ name ];
}},
set: function(value){
Object.defineProperty(this, name, {
enumerable: true,
configurable: true,
writable: true,
value: value
});
}});
},
fix: function(originalEvent){
return originalEvent[ jQuery.expando ] ?
originalEvent :
new jQuery.Event(originalEvent);
},
special: {
load: {
noBubble: true
},
click: {
setup: function(data){
var el=this||data;
if(rcheckableType.test(el.type) &&
el.click&&nodeName(el, "input") ){
leverageNative(el, "click", true);
}
return false;
},
trigger: function(data){
var el=this||data;
if(rcheckableType.test(el.type) &&
el.click&&nodeName(el, "input") ){
leverageNative(el, "click");
}
return true;
},
_default: function(event){
var target=event.target;
return rcheckableType.test(target.type) &&
target.click&&nodeName(target, "input") &&
dataPriv.get(target, "click") ||
nodeName(target, "a");
}},
beforeunload: {
postDispatch: function(event){
if(event.result!==undefined&&event.originalEvent){
event.originalEvent.returnValue=event.result;
}}
}}
};
function leverageNative(el, type, isSetup){
if(!isSetup){
if(dataPriv.get(el, type)===undefined){
jQuery.event.add(el, type, returnTrue);
}
return;
}
dataPriv.set(el, type, false);
jQuery.event.add(el, type, {
namespace: false,
handler: function(event){
var result,
saved=dataPriv.get(this, type);
if(( event.isTrigger & 1)&&this[ type ]){
if(!saved){
saved=slice.call(arguments);
dataPriv.set(this, type, saved);
this[ type ]();
result=dataPriv.get(this, type);
dataPriv.set(this, type, false);
if(saved!==result){
event.stopImmediatePropagation();
event.preventDefault();
return result;
}}else if(( jQuery.event.special[ type ]||{}).delegateType){
event.stopPropagation();
}}else if(saved){
dataPriv.set(this, type, jQuery.event.trigger(saved[ 0 ],
saved.slice(1),
this
));
event.stopPropagation();
event.isImmediatePropagationStopped=returnTrue;
}}
});
}
jQuery.removeEvent=function(elem, type, handle){
if(elem.removeEventListener){
elem.removeEventListener(type, handle);
}};
jQuery.Event=function(src, props){
if(!(this instanceof jQuery.Event) ){
return new jQuery.Event(src, props);
}
if(src&&src.type){
this.originalEvent=src;
this.type=src.type;
this.isDefaultPrevented=src.defaultPrevented ||
src.defaultPrevented===undefined &&
src.returnValue===false ?
returnTrue :
returnFalse;
this.target=(src.target&&src.target.nodeType===3) ?
src.target.parentNode :
src.target;
this.currentTarget=src.currentTarget;
this.relatedTarget=src.relatedTarget;
}else{
this.type=src;
}
if(props){
jQuery.extend(this, props);
}
this.timeStamp=src&&src.timeStamp||Date.now();
this[ jQuery.expando ]=true;
};
jQuery.Event.prototype={
constructor: jQuery.Event,
isDefaultPrevented: returnFalse,
isPropagationStopped: returnFalse,
isImmediatePropagationStopped: returnFalse,
isSimulated: false,
preventDefault: function(){
var e=this.originalEvent;
this.isDefaultPrevented=returnTrue;
if(e&&!this.isSimulated){
e.preventDefault();
}},
stopPropagation: function(){
var e=this.originalEvent;
this.isPropagationStopped=returnTrue;
if(e&&!this.isSimulated){
e.stopPropagation();
}},
stopImmediatePropagation: function(){
var e=this.originalEvent;
this.isImmediatePropagationStopped=returnTrue;
if(e&&!this.isSimulated){
e.stopImmediatePropagation();
}
this.stopPropagation();
}};
jQuery.each({
altKey: true,
bubbles: true,
cancelable: true,
changedTouches: true,
ctrlKey: true,
detail: true,
eventPhase: true,
metaKey: true,
pageX: true,
pageY: true,
shiftKey: true,
view: true,
"char": true,
code: true,
charCode: true,
key: true,
keyCode: true,
button: true,
buttons: true,
clientX: true,
clientY: true,
offsetX: true,
offsetY: true,
pointerId: true,
pointerType: true,
screenX: true,
screenY: true,
targetTouches: true,
toElement: true,
touches: true,
which: true
}, jQuery.event.addProp);
jQuery.each({ focus: "focusin", blur: "focusout" }, function(type, delegateType){
function focusMappedHandler(nativeEvent){
if(document.documentMode){
var handle=dataPriv.get(this, "handle"),
event=jQuery.event.fix(nativeEvent);
event.type=nativeEvent.type==="focusin" ? "focus":"blur";
event.isSimulated=true;
handle(nativeEvent);
if(event.target===event.currentTarget){
handle(event);
}}else{
jQuery.event.simulate(delegateType, nativeEvent.target,
jQuery.event.fix(nativeEvent) );
}}
jQuery.event.special[ type ]={
setup: function(){
var attaches;
leverageNative(this, type, true);
if(document.documentMode){
attaches=dataPriv.get(this, delegateType);
if(!attaches){
this.addEventListener(delegateType, focusMappedHandler);
}
dataPriv.set(this, delegateType,(attaches||0) + 1);
}else{
return false;
}},
trigger: function(){
leverageNative(this, type);
return true;
},
teardown: function(){
var attaches;
if(document.documentMode){
attaches=dataPriv.get(this, delegateType) - 1;
if(!attaches){
this.removeEventListener(delegateType, focusMappedHandler);
dataPriv.remove(this, delegateType);
}else{
dataPriv.set(this, delegateType, attaches);
}}else{
return false;
}},
_default: function(event){
return dataPriv.get(event.target, type);
},
delegateType: delegateType
};
jQuery.event.special[ delegateType ]={
setup: function(){
var doc=this.ownerDocument||this.document||this,
dataHolder=document.documentMode ? this:doc,
attaches=dataPriv.get(dataHolder, delegateType);
if(!attaches){
if(document.documentMode){
this.addEventListener(delegateType, focusMappedHandler);
}else{
doc.addEventListener(type, focusMappedHandler, true);
}}
dataPriv.set(dataHolder, delegateType,(attaches||0) + 1);
},
teardown: function(){
var doc=this.ownerDocument||this.document||this,
dataHolder=document.documentMode ? this:doc,
attaches=dataPriv.get(dataHolder, delegateType) - 1;
if(!attaches){
if(document.documentMode){
this.removeEventListener(delegateType, focusMappedHandler);
}else{
doc.removeEventListener(type, focusMappedHandler, true);
}
dataPriv.remove(dataHolder, delegateType);
}else{
dataPriv.set(dataHolder, delegateType, attaches);
}}
};});
jQuery.each({
mouseenter: "mouseover",
mouseleave: "mouseout",
pointerenter: "pointerover",
pointerleave: "pointerout"
}, function(orig, fix){
jQuery.event.special[ orig ]={
delegateType: fix,
bindType: fix,
handle: function(event){
var ret,
target=this,
related=event.relatedTarget,
handleObj=event.handleObj;
if(!related||(related!==target&&!jQuery.contains(target, related) )){
event.type=handleObj.origType;
ret=handleObj.handler.apply(this, arguments);
event.type=fix;
}
return ret;
}};});
jQuery.fn.extend({
on: function(types, selector, data, fn){
return on(this, types, selector, data, fn);
},
one: function(types, selector, data, fn){
return on(this, types, selector, data, fn, 1);
},
off: function(types, selector, fn){
var handleObj, type;
if(types&&types.preventDefault&&types.handleObj){
handleObj=types.handleObj;
jQuery(types.delegateTarget).off(handleObj.namespace ?
handleObj.origType + "." + handleObj.namespace :
handleObj.origType,
handleObj.selector,
handleObj.handler
);
return this;
}
if(typeof types==="object"){
for(type in types){
this.off(type, selector, types[ type ]);
}
return this;
}
if(selector===false||typeof selector==="function"){
fn=selector;
selector=undefined;
}
if(fn===false){
fn=returnFalse;
}
return this.each(function(){
jQuery.event.remove(this, types, fn, selector);
});
}});
var
rnoInnerhtml=/<script|<style|<link/i,
rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,
rcleanScript=/^\s*<!\[CDATA\[|\]\]>\s*$/g;
function manipulationTarget(elem, content){
if(nodeName(elem, "table") &&
nodeName(content.nodeType!==11 ? content:content.firstChild, "tr") ){
return jQuery(elem).children("tbody")[ 0 ]||elem;
}
return elem;
}
function disableScript(elem){
elem.type=(elem.getAttribute("type")!==null) + "/" + elem.type;
return elem;
}
function restoreScript(elem){
if(( elem.type||"").slice(0, 5)==="true/"){
elem.type=elem.type.slice(5);
}else{
elem.removeAttribute("type");
}
return elem;
}
function cloneCopyEvent(src, dest){
var i, l, type, pdataOld, udataOld, udataCur, events;
if(dest.nodeType!==1){
return;
}
if(dataPriv.hasData(src) ){
pdataOld=dataPriv.get(src);
events=pdataOld.events;
if(events){
dataPriv.remove(dest, "handle events");
for(type in events){
for(i=0, l=events[ type ].length; i < l; i++){
jQuery.event.add(dest, type, events[ type ][ i ]);
}}
}}
if(dataUser.hasData(src) ){
udataOld=dataUser.access(src);
udataCur=jQuery.extend({}, udataOld);
dataUser.set(dest, udataCur);
}}
function fixInput(src, dest){
var nodeName=dest.nodeName.toLowerCase();
if(nodeName==="input"&&rcheckableType.test(src.type) ){
dest.checked=src.checked;
}else if(nodeName==="input"||nodeName==="textarea"){
dest.defaultValue=src.defaultValue;
}}
function domManip(collection, args, callback, ignored){
args=flat(args);
var fragment, first, scripts, hasScripts, node, doc,
i=0,
l=collection.length,
iNoClone=l - 1,
value=args[ 0 ],
valueIsFunction=isFunction(value);
if(valueIsFunction ||
(l > 1&&typeof value==="string" &&
!support.checkClone&&rchecked.test(value) )){
return collection.each(function(index){
var self=collection.eq(index);
if(valueIsFunction){
args[ 0 ]=value.call(this, index, self.html());
}
domManip(self, args, callback, ignored);
});
}
if(l){
fragment=buildFragment(args, collection[ 0 ].ownerDocument, false, collection, ignored);
first=fragment.firstChild;
if(fragment.childNodes.length===1){
fragment=first;
}
if(first||ignored){
scripts=jQuery.map(getAll(fragment, "script"), disableScript);
hasScripts=scripts.length;
for(; i < l; i++){
node=fragment;
if(i!==iNoClone){
node=jQuery.clone(node, true, true);
if(hasScripts){
jQuery.merge(scripts, getAll(node, "script") );
}}
callback.call(collection[ i ], node, i);
}
if(hasScripts){
doc=scripts[ scripts.length - 1 ].ownerDocument;
jQuery.map(scripts, restoreScript);
for(i=0; i < hasScripts; i++){
node=scripts[ i ];
if(rscriptType.test(node.type||"") &&
!dataPriv.access(node, "globalEval") &&
jQuery.contains(doc, node) ){
if(node.src&&(node.type||"").toLowerCase()!=="module"){
if(jQuery._evalUrl&&!node.noModule){
jQuery._evalUrl(node.src, {
nonce: node.nonce||node.getAttribute("nonce")
}, doc);
}}else{
DOMEval(node.textContent.replace(rcleanScript, ""), node, doc);
}}
}}
}}
return collection;
}
function remove(elem, selector, keepData){
var node,
nodes=selector ? jQuery.filter(selector, elem):elem,
i=0;
for(;(node=nodes[ i ])!=null; i++){
if(!keepData&&node.nodeType===1){
jQuery.cleanData(getAll(node) );
}
if(node.parentNode){
if(keepData&&isAttached(node) ){
setGlobalEval(getAll(node, "script") );
}
node.parentNode.removeChild(node);
}}
return elem;
}
jQuery.extend({
htmlPrefilter: function(html){
return html;
},
clone: function(elem, dataAndEvents, deepDataAndEvents){
var i, l, srcElements, destElements,
clone=elem.cloneNode(true),
inPage=isAttached(elem);
if(!support.noCloneChecked&&(elem.nodeType===1||elem.nodeType===11) &&
!jQuery.isXMLDoc(elem) ){
destElements=getAll(clone);
srcElements=getAll(elem);
for(i=0, l=srcElements.length; i < l; i++){
fixInput(srcElements[ i ], destElements[ i ]);
}}
if(dataAndEvents){
if(deepDataAndEvents){
srcElements=srcElements||getAll(elem);
destElements=destElements||getAll(clone);
for(i=0, l=srcElements.length; i < l; i++){
cloneCopyEvent(srcElements[ i ], destElements[ i ]);
}}else{
cloneCopyEvent(elem, clone);
}}
destElements=getAll(clone, "script");
if(destElements.length > 0){
setGlobalEval(destElements, !inPage&&getAll(elem, "script") );
}
return clone;
},
cleanData: function(elems){
var data, elem, type,
special=jQuery.event.special,
i=0;
for(;(elem=elems[ i ])!==undefined; i++){
if(acceptData(elem) ){
if(( data=elem[ dataPriv.expando ]) ){
if(data.events){
for(type in data.events){
if(special[ type ]){
jQuery.event.remove(elem, type);
}else{
jQuery.removeEvent(elem, type, data.handle);
}}
}
elem[ dataPriv.expando ]=undefined;
}
if(elem[ dataUser.expando ]){
elem[ dataUser.expando ]=undefined;
}}
}}
});
jQuery.fn.extend({
detach: function(selector){
return remove(this, selector, true);
},
remove: function(selector){
return remove(this, selector);
},
text: function(value){
return access(this, function(value){
return value===undefined ?
jQuery.text(this) :
this.empty().each(function(){
if(this.nodeType===1||this.nodeType===11||this.nodeType===9){
this.textContent=value;
}});
}, null, value, arguments.length);
},
append: function(){
return domManip(this, arguments, function(elem){
if(this.nodeType===1||this.nodeType===11||this.nodeType===9){
var target=manipulationTarget(this, elem);
target.appendChild(elem);
}});
},
prepend: function(){
return domManip(this, arguments, function(elem){
if(this.nodeType===1||this.nodeType===11||this.nodeType===9){
var target=manipulationTarget(this, elem);
target.insertBefore(elem, target.firstChild);
}});
},
before: function(){
return domManip(this, arguments, function(elem){
if(this.parentNode){
this.parentNode.insertBefore(elem, this);
}});
},
after: function(){
return domManip(this, arguments, function(elem){
if(this.parentNode){
this.parentNode.insertBefore(elem, this.nextSibling);
}});
},
empty: function(){
var elem,
i=0;
for(;(elem=this[ i ])!=null; i++){
if(elem.nodeType===1){
jQuery.cleanData(getAll(elem, false) );
elem.textContent="";
}}
return this;
},
clone: function(dataAndEvents, deepDataAndEvents){
dataAndEvents=dataAndEvents==null ? false:dataAndEvents;
deepDataAndEvents=deepDataAndEvents==null ? dataAndEvents:deepDataAndEvents;
return this.map(function(){
return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
});
},
html: function(value){
return access(this, function(value){
var elem=this[ 0 ]||{},
i=0,
l=this.length;
if(value===undefined&&elem.nodeType===1){
return elem.innerHTML;
}
if(typeof value==="string"&&!rnoInnerhtml.test(value) &&
!wrapMap[(rtagName.exec(value)||[ "", "" ])[ 1 ].toLowerCase() ]){
value=jQuery.htmlPrefilter(value);
try {
for(; i < l; i++){
elem=this[ i ]||{};
if(elem.nodeType===1){
jQuery.cleanData(getAll(elem, false) );
elem.innerHTML=value;
}}
elem=0;
} catch(e){}}
if(elem){
this.empty().append(value);
}}, null, value, arguments.length);
},
replaceWith: function(){
var ignored=[];
return domManip(this, arguments, function(elem){
var parent=this.parentNode;
if(jQuery.inArray(this, ignored) < 0){
jQuery.cleanData(getAll(this) );
if(parent){
parent.replaceChild(elem, this);
}}
}, ignored);
}});
jQuery.each({
appendTo: "append",
prependTo: "prepend",
insertBefore: "before",
insertAfter: "after",
replaceAll: "replaceWith"
}, function(name, original){
jQuery.fn[ name ]=function(selector){
var elems,
ret=[],
insert=jQuery(selector),
last=insert.length - 1,
i=0;
for(; i <=last; i++){
elems=i===last ? this:this.clone(true);
jQuery(insert[ i ])[ original ](elems);
push.apply(ret, elems.get());
}
return this.pushStack(ret);
};});
var rnumnonpx=new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i");
var rcustomProp=/^--/;
var getStyles=function(elem){
var view=elem.ownerDocument.defaultView;
if(!view||!view.opener){
view=window;
}
return view.getComputedStyle(elem);
};
var swap=function(elem, options, callback){
var ret, name,
old={};
for(name in options){
old[ name ]=elem.style[ name ];
elem.style[ name ]=options[ name ];
}
ret=callback.call(elem);
for(name in options){
elem.style[ name ]=old[ name ];
}
return ret;
};
var rboxStyle=new RegExp(cssExpand.join("|"), "i");
(function(){
function computeStyleTests(){
if(!div){
return;
}
container.style.cssText="position:absolute;left:-11111px;width:60px;" +
"margin-top:1px;padding:0;border:0";
div.style.cssText =
"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
"margin:auto;border:1px;padding:1px;" +
"width:60%;top:1%";
documentElement.appendChild(container).appendChild(div);
var divStyle=window.getComputedStyle(div);
pixelPositionVal=divStyle.top!=="1%";
reliableMarginLeftVal=roundPixelMeasures(divStyle.marginLeft)===12;
div.style.right="60%";
pixelBoxStylesVal=roundPixelMeasures(divStyle.right)===36;
boxSizingReliableVal=roundPixelMeasures(divStyle.width)===36;
div.style.position="absolute";
scrollboxSizeVal=roundPixelMeasures(div.offsetWidth / 3)===12;
documentElement.removeChild(container);
div=null;
}
function roundPixelMeasures(measure){
return Math.round(parseFloat(measure) );
}
var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
reliableTrDimensionsVal, reliableMarginLeftVal,
container=document.createElement("div"),
div=document.createElement("div");
if(!div.style){
return;
}
div.style.backgroundClip="content-box";
div.cloneNode(true).style.backgroundClip="";
support.clearCloneStyle=div.style.backgroundClip==="content-box";
jQuery.extend(support, {
boxSizingReliable: function(){
computeStyleTests();
return boxSizingReliableVal;
},
pixelBoxStyles: function(){
computeStyleTests();
return pixelBoxStylesVal;
},
pixelPosition: function(){
computeStyleTests();
return pixelPositionVal;
},
reliableMarginLeft: function(){
computeStyleTests();
return reliableMarginLeftVal;
},
scrollboxSize: function(){
computeStyleTests();
return scrollboxSizeVal;
},
reliableTrDimensions: function(){
var table, tr, trChild, trStyle;
if(reliableTrDimensionsVal==null){
table=document.createElement("table");
tr=document.createElement("tr");
trChild=document.createElement("div");
table.style.cssText="position:absolute;left:-11111px;border-collapse:separate";
tr.style.cssText="box-sizing:content-box;border:1px solid";
tr.style.height="1px";
trChild.style.height="9px";
trChild.style.display="block";
documentElement
.appendChild(table)
.appendChild(tr)
.appendChild(trChild);
trStyle=window.getComputedStyle(tr);
reliableTrDimensionsVal=(parseInt(trStyle.height, 10) +
parseInt(trStyle.borderTopWidth, 10) +
parseInt(trStyle.borderBottomWidth, 10) )===tr.offsetHeight;
documentElement.removeChild(table);
}
return reliableTrDimensionsVal;
}});
})();
function curCSS(elem, name, computed){
var width, minWidth, maxWidth, ret,
isCustomProp=rcustomProp.test(name),
style=elem.style;
computed=computed||getStyles(elem);
if(computed){
ret=computed.getPropertyValue(name)||computed[ name ];
if(isCustomProp&&ret){
ret=ret.replace(rtrimCSS, "$1")||undefined;
}
if(ret===""&&!isAttached(elem) ){
ret=jQuery.style(elem, name);
}
if(!support.pixelBoxStyles()&&rnumnonpx.test(ret)&&rboxStyle.test(name) ){
width=style.width;
minWidth=style.minWidth;
maxWidth=style.maxWidth;
style.minWidth=style.maxWidth=style.width=ret;
ret=computed.width;
style.width=width;
style.minWidth=minWidth;
style.maxWidth=maxWidth;
}}
return ret!==undefined ?
ret + "" :
ret;
}
function addGetHookIf(conditionFn, hookFn){
return {
get: function(){
if(conditionFn()){
delete this.get;
return;
}
return(this.get=hookFn).apply(this, arguments);
}};}
var cssPrefixes=[ "Webkit", "Moz", "ms" ],
emptyStyle=document.createElement("div").style,
vendorProps={};
function vendorPropName(name){
var capName=name[ 0 ].toUpperCase() + name.slice(1),
i=cssPrefixes.length;
while(i--){
name=cssPrefixes[ i ] + capName;
if(name in emptyStyle){
return name;
}}
}
function finalPropName(name){
var final=jQuery.cssProps[ name ]||vendorProps[ name ];
if(final){
return final;
}
if(name in emptyStyle){
return name;
}
return vendorProps[ name ]=vendorPropName(name)||name;
}
var
rdisplayswap=/^(none|table(?!-c[ea]).+)/,
cssShow={ position: "absolute", visibility: "hidden", display: "block" },
cssNormalTransform={
letterSpacing: "0",
fontWeight: "400"
};
function setPositiveNumber(_elem, value, subtract){
var matches=rcssNum.exec(value);
return matches ?
Math.max(0, matches[ 2 ] -(subtract||0) ) +(matches[ 3 ]||"px") :
value;
}
function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal){
var i=dimension==="width" ? 1:0,
extra=0,
delta=0,
marginDelta=0;
if(box===(isBorderBox ? "border":"content") ){
return 0;
}
for(; i < 4; i +=2){
if(box==="margin"){
marginDelta +=jQuery.css(elem, box + cssExpand[ i ], true, styles);
}
if(!isBorderBox){
delta +=jQuery.css(elem, "padding" + cssExpand[ i ], true, styles);
if(box!=="padding"){
delta +=jQuery.css(elem, "border" + cssExpand[ i ] + "Width", true, styles);
}else{
extra +=jQuery.css(elem, "border" + cssExpand[ i ] + "Width", true, styles);
}}else{
if(box==="content"){
delta -=jQuery.css(elem, "padding" + cssExpand[ i ], true, styles);
}
if(box!=="margin"){
delta -=jQuery.css(elem, "border" + cssExpand[ i ] + "Width", true, styles);
}}
}
if(!isBorderBox&&computedVal >=0){
delta +=Math.max(0, Math.ceil(elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice(1) ] -
computedVal -
delta -
extra -
0.5
))||0;
}
return delta + marginDelta;
}
function getWidthOrHeight(elem, dimension, extra){
var styles=getStyles(elem),
boxSizingNeeded = !support.boxSizingReliable()||extra,
isBorderBox=boxSizingNeeded &&
jQuery.css(elem, "boxSizing", false, styles)==="border-box",
valueIsBorderBox=isBorderBox,
val=curCSS(elem, dimension, styles),
offsetProp="offset" + dimension[ 0 ].toUpperCase() + dimension.slice(1);
if(rnumnonpx.test(val) ){
if(!extra){
return val;
}
val="auto";
}
if(( !support.boxSizingReliable()&&isBorderBox ||
!support.reliableTrDimensions()&&nodeName(elem, "tr") ||
val==="auto" ||
!parseFloat(val)&&jQuery.css(elem, "display", false, styles)==="inline") &&
elem.getClientRects().length){
isBorderBox=jQuery.css(elem, "boxSizing", false, styles)==="border-box";
valueIsBorderBox=offsetProp in elem;
if(valueIsBorderBox){
val=elem[ offsetProp ];
}}
val=parseFloat(val)||0;
return(val +
boxModelAdjustment(
elem,
dimension,
extra||(isBorderBox ? "border":"content"),
valueIsBorderBox,
styles,
val
)
) + "px";
}
jQuery.extend({
cssHooks: {
opacity: {
get: function(elem, computed){
if(computed){
var ret=curCSS(elem, "opacity");
return ret==="" ? "1":ret;
}}
}},
cssNumber: {
animationIterationCount: true,
aspectRatio: true,
borderImageSlice: true,
columnCount: true,
flexGrow: true,
flexShrink: true,
fontWeight: true,
gridArea: true,
gridColumn: true,
gridColumnEnd: true,
gridColumnStart: true,
gridRow: true,
gridRowEnd: true,
gridRowStart: true,
lineHeight: true,
opacity: true,
order: true,
orphans: true,
scale: true,
widows: true,
zIndex: true,
zoom: true,
fillOpacity: true,
floodOpacity: true,
stopOpacity: true,
strokeMiterlimit: true,
strokeOpacity: true
},
cssProps: {},
style: function(elem, name, value, extra){
if(!elem||elem.nodeType===3||elem.nodeType===8||!elem.style){
return;
}
var ret, type, hooks,
origName=camelCase(name),
isCustomProp=rcustomProp.test(name),
style=elem.style;
if(!isCustomProp){
name=finalPropName(origName);
}
hooks=jQuery.cssHooks[ name ]||jQuery.cssHooks[ origName ];
if(value!==undefined){
type=typeof value;
if(type==="string"&&(ret=rcssNum.exec(value) )&&ret[ 1 ]){
value=adjustCSS(elem, name, ret);
type="number";
}
if(value==null||value!==value){
return;
}
if(type==="number"&&!isCustomProp){
value +=ret&&ret[ 3 ]||(jQuery.cssNumber[ origName ] ? "":"px");
}
if(!support.clearCloneStyle&&value===""&&name.indexOf("background")===0){
style[ name ]="inherit";
}
if(!hooks||!("set" in hooks) ||
(value=hooks.set(elem, value, extra) )!==undefined){
if(isCustomProp){
style.setProperty(name, value);
}else{
style[ name ]=value;
}}
}else{
if(hooks&&"get" in hooks &&
(ret=hooks.get(elem, false, extra) )!==undefined){
return ret;
}
return style[ name ];
}},
css: function(elem, name, extra, styles){
var val, num, hooks,
origName=camelCase(name),
isCustomProp=rcustomProp.test(name);
if(!isCustomProp){
name=finalPropName(origName);
}
hooks=jQuery.cssHooks[ name ]||jQuery.cssHooks[ origName ];
if(hooks&&"get" in hooks){
val=hooks.get(elem, true, extra);
}
if(val===undefined){
val=curCSS(elem, name, styles);
}
if(val==="normal"&&name in cssNormalTransform){
val=cssNormalTransform[ name ];
}
if(extra===""||extra){
num=parseFloat(val);
return extra===true||isFinite(num) ? num||0:val;
}
return val;
}});
jQuery.each([ "height", "width" ], function(_i, dimension){
jQuery.cssHooks[ dimension ]={
get: function(elem, computed, extra){
if(computed){
return rdisplayswap.test(jQuery.css(elem, "display") ) &&
(!elem.getClientRects().length||!elem.getBoundingClientRect().width) ?
swap(elem, cssShow, function(){
return getWidthOrHeight(elem, dimension, extra);
}) :
getWidthOrHeight(elem, dimension, extra);
}},
set: function(elem, value, extra){
var matches,
styles=getStyles(elem),
scrollboxSizeBuggy = !support.scrollboxSize() &&
styles.position==="absolute",
boxSizingNeeded=scrollboxSizeBuggy||extra,
isBorderBox=boxSizingNeeded &&
jQuery.css(elem, "boxSizing", false, styles)==="border-box",
subtract=extra ?
boxModelAdjustment(
elem,
dimension,
extra,
isBorderBox,
styles
) :
0;
if(isBorderBox&&scrollboxSizeBuggy){
subtract -=Math.ceil(elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice(1) ] -
parseFloat(styles[ dimension ]) -
boxModelAdjustment(elem, dimension, "border", false, styles) -
0.5
);
}
if(subtract&&(matches=rcssNum.exec(value) ) &&
(matches[ 3 ]||"px")!=="px"){
elem.style[ dimension ]=value;
value=jQuery.css(elem, dimension);
}
return setPositiveNumber(elem, value, subtract);
}};});
jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,
function(elem, computed){
if(computed){
return(parseFloat(curCSS(elem, "marginLeft") ) ||
elem.getBoundingClientRect().left -
swap(elem, { marginLeft: 0 }, function(){
return elem.getBoundingClientRect().left;
})
) + "px";
}}
);
jQuery.each({
margin: "",
padding: "",
border: "Width"
}, function(prefix, suffix){
jQuery.cssHooks[ prefix + suffix ]={
expand: function(value){
var i=0,
expanded={},
parts=typeof value==="string" ? value.split(" "):[ value ];
for(; i < 4; i++){
expanded[ prefix + cssExpand[ i ] + suffix ] =
parts[ i ]||parts[ i - 2 ]||parts[ 0 ];
}
return expanded;
}};
if(prefix!=="margin"){
jQuery.cssHooks[ prefix + suffix ].set=setPositiveNumber;
}});
jQuery.fn.extend({
css: function(name, value){
return access(this, function(elem, name, value){
var styles, len,
map={},
i=0;
if(Array.isArray(name) ){
styles=getStyles(elem);
len=name.length;
for(; i < len; i++){
map[ name[ i ] ]=jQuery.css(elem, name[ i ], false, styles);
}
return map;
}
return value!==undefined ?
jQuery.style(elem, name, value) :
jQuery.css(elem, name);
}, name, value, arguments.length > 1);
}});
function Tween(elem, options, prop, end, easing){
return new Tween.prototype.init(elem, options, prop, end, easing);
}
jQuery.Tween=Tween;
Tween.prototype={
constructor: Tween,
init: function(elem, options, prop, end, easing, unit){
this.elem=elem;
this.prop=prop;
this.easing=easing||jQuery.easing._default;
this.options=options;
this.start=this.now=this.cur();
this.end=end;
this.unit=unit||(jQuery.cssNumber[ prop ] ? "":"px");
},
cur: function(){
var hooks=Tween.propHooks[ this.prop ];
return hooks&&hooks.get ?
hooks.get(this) :
Tween.propHooks._default.get(this);
},
run: function(percent){
var eased,
hooks=Tween.propHooks[ this.prop ];
if(this.options.duration){
this.pos=eased=jQuery.easing[ this.easing ](
percent, this.options.duration * percent, 0, 1, this.options.duration
);
}else{
this.pos=eased=percent;
}
this.now=(this.end - this.start) * eased + this.start;
if(this.options.step){
this.options.step.call(this.elem, this.now, this);
}
if(hooks&&hooks.set){
hooks.set(this);
}else{
Tween.propHooks._default.set(this);
}
return this;
}};
Tween.prototype.init.prototype=Tween.prototype;
Tween.propHooks={
_default: {
get: function(tween){
var result;
if(tween.elem.nodeType!==1 ||
tween.elem[ tween.prop ]!=null&&tween.elem.style[ tween.prop ]==null){
return tween.elem[ tween.prop ];
}
result=jQuery.css(tween.elem, tween.prop, "");
return !result||result==="auto" ? 0:result;
},
set: function(tween){
if(jQuery.fx.step[ tween.prop ]){
jQuery.fx.step[ tween.prop ](tween);
}else if(tween.elem.nodeType===1&&(
jQuery.cssHooks[ tween.prop ] ||
tween.elem.style[ finalPropName(tween.prop) ]!=null) ){
jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);
}else{
tween.elem[ tween.prop ]=tween.now;
}}
}};
Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={
set: function(tween){
if(tween.elem.nodeType&&tween.elem.parentNode){
tween.elem[ tween.prop ]=tween.now;
}}
};
jQuery.easing={
linear: function(p){
return p;
},
swing: function(p){
return 0.5 - Math.cos(p * Math.PI) / 2;
},
_default: "swing"
};
jQuery.fx=Tween.prototype.init;
jQuery.fx.step={};
var
fxNow, inProgress,
rfxtypes=/^(?:toggle|show|hide)$/,
rrun=/queueHooks$/;
function schedule(){
if(inProgress){
if(document.hidden===false&&window.requestAnimationFrame){
window.requestAnimationFrame(schedule);
}else{
window.setTimeout(schedule, jQuery.fx.interval);
}
jQuery.fx.tick();
}}
function createFxNow(){
window.setTimeout(function(){
fxNow=undefined;
});
return(fxNow=Date.now());
}
function genFx(type, includeWidth){
var which,
i=0,
attrs={ height: type };
includeWidth=includeWidth ? 1:0;
for(; i < 4; i +=2 - includeWidth){
which=cssExpand[ i ];
attrs[ "margin" + which ]=attrs[ "padding" + which ]=type;
}
if(includeWidth){
attrs.opacity=attrs.width=type;
}
return attrs;
}
function createTween(value, prop, animation){
var tween,
collection=(Animation.tweeners[ prop ]||[]).concat(Animation.tweeners[ "*" ]),
index=0,
length=collection.length;
for(; index < length; index++){
if(( tween=collection[ index ].call(animation, prop, value) )){
return tween;
}}
}
function defaultPrefilter(elem, props, opts){
var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
isBox="width" in props||"height" in props,
anim=this,
orig={},
style=elem.style,
hidden=elem.nodeType&&isHiddenWithinTree(elem),
dataShow=dataPriv.get(elem, "fxshow");
if(!opts.queue){
hooks=jQuery._queueHooks(elem, "fx");
if(hooks.unqueued==null){
hooks.unqueued=0;
oldfire=hooks.empty.fire;
hooks.empty.fire=function(){
if(!hooks.unqueued){
oldfire();
}};}
hooks.unqueued++;
anim.always(function(){
anim.always(function(){
hooks.unqueued--;
if(!jQuery.queue(elem, "fx").length){
hooks.empty.fire();
}});
});
}
for(prop in props){
value=props[ prop ];
if(rfxtypes.test(value) ){
delete props[ prop ];
toggle=toggle||value==="toggle";
if(value===(hidden ? "hide":"show") ){
if(value==="show"&&dataShow&&dataShow[ prop ]!==undefined){
hidden=true;
}else{
continue;
}}
orig[ prop ]=dataShow&&dataShow[ prop ]||jQuery.style(elem, prop);
}}
propTween = !jQuery.isEmptyObject(props);
if(!propTween&&jQuery.isEmptyObject(orig) ){
return;
}
if(isBox&&elem.nodeType===1){
opts.overflow=[ style.overflow, style.overflowX, style.overflowY ];
restoreDisplay=dataShow&&dataShow.display;
if(restoreDisplay==null){
restoreDisplay=dataPriv.get(elem, "display");
}
display=jQuery.css(elem, "display");
if(display==="none"){
if(restoreDisplay){
display=restoreDisplay;
}else{
showHide([ elem ], true);
restoreDisplay=elem.style.display||restoreDisplay;
display=jQuery.css(elem, "display");
showHide([ elem ]);
}}
if(display==="inline"||display==="inline-block"&&restoreDisplay!=null){
if(jQuery.css(elem, "float")==="none"){
if(!propTween){
anim.done(function(){
style.display=restoreDisplay;
});
if(restoreDisplay==null){
display=style.display;
restoreDisplay=display==="none" ? "":display;
}}
style.display="inline-block";
}}
}
if(opts.overflow){
style.overflow="hidden";
anim.always(function(){
style.overflow=opts.overflow[ 0 ];
style.overflowX=opts.overflow[ 1 ];
style.overflowY=opts.overflow[ 2 ];
});
}
propTween=false;
for(prop in orig){
if(!propTween){
if(dataShow){
if("hidden" in dataShow){
hidden=dataShow.hidden;
}}else{
dataShow=dataPriv.access(elem, "fxshow", { display: restoreDisplay });
}
if(toggle){
dataShow.hidden = !hidden;
}
if(hidden){
showHide([ elem ], true);
}
anim.done(function(){
if(!hidden){
showHide([ elem ]);
}
dataPriv.remove(elem, "fxshow");
for(prop in orig){
jQuery.style(elem, prop, orig[ prop ]);
}});
}
propTween=createTween(hidden ? dataShow[ prop ]:0, prop, anim);
if(!(prop in dataShow) ){
dataShow[ prop ]=propTween.start;
if(hidden){
propTween.end=propTween.start;
propTween.start=0;
}}
}}
function propFilter(props, specialEasing){
var index, name, easing, value, hooks;
for(index in props){
name=camelCase(index);
easing=specialEasing[ name ];
value=props[ index ];
if(Array.isArray(value) ){
easing=value[ 1 ];
value=props[ index ]=value[ 0 ];
}
if(index!==name){
props[ name ]=value;
delete props[ index ];
}
hooks=jQuery.cssHooks[ name ];
if(hooks&&"expand" in hooks){
value=hooks.expand (value);
delete props[ name ];
for(index in value){
if(!(index in props) ){
props[ index ]=value[ index ];
specialEasing[ index ]=easing;
}}
}else{
specialEasing[ name ]=easing;
}}
}
function Animation(elem, properties, options){
var result,
stopped,
index=0,
length=Animation.prefilters.length,
deferred=jQuery.Deferred().always(function(){
delete tick.elem;
}),
tick=function(){
if(stopped){
return false;
}
var currentTime=fxNow||createFxNow(),
remaining=Math.max(0, animation.startTime + animation.duration - currentTime),
temp=remaining / animation.duration||0,
percent=1 - temp,
index=0,
length=animation.tweens.length;
for(; index < length; index++){
animation.tweens[ index ].run(percent);
}
deferred.notifyWith(elem, [ animation, percent, remaining ]);
if(percent < 1&&length){
return remaining;
}
if(!length){
deferred.notifyWith(elem, [ animation, 1, 0 ]);
}
deferred.resolveWith(elem, [ animation ]);
return false;
},
animation=deferred.promise({
elem: elem,
props: jQuery.extend({}, properties),
opts: jQuery.extend(true, {
specialEasing: {},
easing: jQuery.easing._default
}, options),
originalProperties: properties,
originalOptions: options,
startTime: fxNow||createFxNow(),
duration: options.duration,
tweens: [],
createTween: function(prop, end){
var tween=jQuery.Tween(elem, animation.opts, prop, end,
animation.opts.specialEasing[ prop ]||animation.opts.easing);
animation.tweens.push(tween);
return tween;
},
stop: function(gotoEnd){
var index=0,
length=gotoEnd ? animation.tweens.length:0;
if(stopped){
return this;
}
stopped=true;
for(; index < length; index++){
animation.tweens[ index ].run(1);
}
if(gotoEnd){
deferred.notifyWith(elem, [ animation, 1, 0 ]);
deferred.resolveWith(elem, [ animation, gotoEnd ]);
}else{
deferred.rejectWith(elem, [ animation, gotoEnd ]);
}
return this;
}}),
props=animation.props;
propFilter(props, animation.opts.specialEasing);
for(; index < length; index++){
result=Animation.prefilters[ index ].call(animation, elem, props, animation.opts);
if(result){
if(isFunction(result.stop) ){
jQuery._queueHooks(animation.elem, animation.opts.queue).stop =
result.stop.bind(result);
}
return result;
}}
jQuery.map(props, createTween, animation);
if(isFunction(animation.opts.start) ){
animation.opts.start.call(elem, animation);
}
animation
.progress(animation.opts.progress)
.done(animation.opts.done, animation.opts.complete)
.fail(animation.opts.fail)
.always(animation.opts.always);
jQuery.fx.timer(jQuery.extend(tick, {
elem: elem,
anim: animation,
queue: animation.opts.queue
})
);
return animation;
}
jQuery.Animation=jQuery.extend(Animation, {
tweeners: {
"*": [ function(prop, value){
var tween=this.createTween(prop, value);
adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);
return tween;
} ]
},
tweener: function(props, callback){
if(isFunction(props) ){
callback=props;
props=[ "*" ];
}else{
props=props.match(rnothtmlwhite);
}
var prop,
index=0,
length=props.length;
for(; index < length; index++){
prop=props[ index ];
Animation.tweeners[ prop ]=Animation.tweeners[ prop ]||[];
Animation.tweeners[ prop ].unshift(callback);
}},
prefilters: [ defaultPrefilter ],
prefilter: function(callback, prepend){
if(prepend){
Animation.prefilters.unshift(callback);
}else{
Animation.prefilters.push(callback);
}}
});
jQuery.speed=function(speed, easing, fn){
var opt=speed&&typeof speed==="object" ? jQuery.extend({}, speed):{
complete: fn||!fn&&easing ||
isFunction(speed)&&speed,
duration: speed,
easing: fn&&easing||easing&&!isFunction(easing)&&easing
};
if(jQuery.fx.off){
opt.duration=0;
}else{
if(typeof opt.duration!=="number"){
if(opt.duration in jQuery.fx.speeds){
opt.duration=jQuery.fx.speeds[ opt.duration ];
}else{
opt.duration=jQuery.fx.speeds._default;
}}
}
if(opt.queue==null||opt.queue===true){
opt.queue="fx";
}
opt.old=opt.complete;
opt.complete=function(){
if(isFunction(opt.old) ){
opt.old.call(this);
}
if(opt.queue){
jQuery.dequeue(this, opt.queue);
}};
return opt;
};
jQuery.fn.extend({
fadeTo: function(speed, to, easing, callback){
return this.filter(isHiddenWithinTree).css("opacity", 0).show()
.end().animate({ opacity: to }, speed, easing, callback);
},
animate: function(prop, speed, easing, callback){
var empty=jQuery.isEmptyObject(prop),
optall=jQuery.speed(speed, easing, callback),
doAnimation=function(){
var anim=Animation(this, jQuery.extend({}, prop), optall);
if(empty||dataPriv.get(this, "finish") ){
anim.stop(true);
}};
doAnimation.finish=doAnimation;
return empty||optall.queue===false ?
this.each(doAnimation) :
this.queue(optall.queue, doAnimation);
},
stop: function(type, clearQueue, gotoEnd){
var stopQueue=function(hooks){
var stop=hooks.stop;
delete hooks.stop;
stop(gotoEnd);
};
if(typeof type!=="string"){
gotoEnd=clearQueue;
clearQueue=type;
type=undefined;
}
if(clearQueue){
this.queue(type||"fx", []);
}
return this.each(function(){
var dequeue=true,
index=type!=null&&type + "queueHooks",
timers=jQuery.timers,
data=dataPriv.get(this);
if(index){
if(data[ index ]&&data[ index ].stop){
stopQueue(data[ index ]);
}}else{
for(index in data){
if(data[ index ]&&data[ index ].stop&&rrun.test(index) ){
stopQueue(data[ index ]);
}}
}
for(index=timers.length; index--;){
if(timers[ index ].elem===this &&
(type==null||timers[ index ].queue===type) ){
timers[ index ].anim.stop(gotoEnd);
dequeue=false;
timers.splice(index, 1);
}}
if(dequeue||!gotoEnd){
jQuery.dequeue(this, type);
}});
},
finish: function(type){
if(type!==false){
type=type||"fx";
}
return this.each(function(){
var index,
data=dataPriv.get(this),
queue=data[ type + "queue" ],
hooks=data[ type + "queueHooks" ],
timers=jQuery.timers,
length=queue ? queue.length:0;
data.finish=true;
jQuery.queue(this, type, []);
if(hooks&&hooks.stop){
hooks.stop.call(this, true);
}
for(index=timers.length; index--;){
if(timers[ index ].elem===this&&timers[ index ].queue===type){
timers[ index ].anim.stop(true);
timers.splice(index, 1);
}}
for(index=0; index < length; index++){
if(queue[ index ]&&queue[ index ].finish){
queue[ index ].finish.call(this);
}}
delete data.finish;
});
}});
jQuery.each([ "toggle", "show", "hide" ], function(_i, name){
var cssFn=jQuery.fn[ name ];
jQuery.fn[ name ]=function(speed, easing, callback){
return speed==null||typeof speed==="boolean" ?
cssFn.apply(this, arguments) :
this.animate(genFx(name, true), speed, easing, callback);
};});
jQuery.each({
slideDown: genFx("show"),
slideUp: genFx("hide"),
slideToggle: genFx("toggle"),
fadeIn: { opacity: "show" },
fadeOut: { opacity: "hide" },
fadeToggle: { opacity: "toggle" }}, function(name, props){
jQuery.fn[ name ]=function(speed, easing, callback){
return this.animate(props, speed, easing, callback);
};});
jQuery.timers=[];
jQuery.fx.tick=function(){
var timer,
i=0,
timers=jQuery.timers;
fxNow=Date.now();
for(; i < timers.length; i++){
timer=timers[ i ];
if(!timer()&&timers[ i ]===timer){
timers.splice(i--, 1);
}}
if(!timers.length){
jQuery.fx.stop();
}
fxNow=undefined;
};
jQuery.fx.timer=function(timer){
jQuery.timers.push(timer);
jQuery.fx.start();
};
jQuery.fx.interval=13;
jQuery.fx.start=function(){
if(inProgress){
return;
}
inProgress=true;
schedule();
};
jQuery.fx.stop=function(){
inProgress=null;
};
jQuery.fx.speeds={
slow: 600,
fast: 200,
_default: 400
};
jQuery.fn.delay=function(time, type){
time=jQuery.fx ? jQuery.fx.speeds[ time ]||time:time;
type=type||"fx";
return this.queue(type, function(next, hooks){
var timeout=window.setTimeout(next, time);
hooks.stop=function(){
window.clearTimeout(timeout);
};});
};
(function(){
var input=document.createElement("input"),
select=document.createElement("select"),
opt=select.appendChild(document.createElement("option") );
input.type="checkbox";
support.checkOn=input.value!=="";
support.optSelected=opt.selected;
input=document.createElement("input");
input.value="t";
input.type="radio";
support.radioValue=input.value==="t";
})();
var boolHook,
attrHandle=jQuery.expr.attrHandle;
jQuery.fn.extend({
attr: function(name, value){
return access(this, jQuery.attr, name, value, arguments.length > 1);
},
removeAttr: function(name){
return this.each(function(){
jQuery.removeAttr(this, name);
});
}});
jQuery.extend({
attr: function(elem, name, value){
var ret, hooks,
nType=elem.nodeType;
if(nType===3||nType===8||nType===2){
return;
}
if(typeof elem.getAttribute==="undefined"){
return jQuery.prop(elem, name, value);
}
if(nType!==1||!jQuery.isXMLDoc(elem) ){
hooks=jQuery.attrHooks[ name.toLowerCase() ] ||
(jQuery.expr.match.bool.test(name) ? boolHook:undefined);
}
if(value!==undefined){
if(value===null){
jQuery.removeAttr(elem, name);
return;
}
if(hooks&&"set" in hooks &&
(ret=hooks.set(elem, value, name) )!==undefined){
return ret;
}
elem.setAttribute(name, value + "");
return value;
}
if(hooks&&"get" in hooks&&(ret=hooks.get(elem, name) )!==null){
return ret;
}
ret=jQuery.find.attr(elem, name);
return ret==null ? undefined:ret;
},
attrHooks: {
type: {
set: function(elem, value){
if(!support.radioValue&&value==="radio" &&
nodeName(elem, "input") ){
var val=elem.value;
elem.setAttribute("type", value);
if(val){
elem.value=val;
}
return value;
}}
}},
removeAttr: function(elem, value){
var name,
i=0,
attrNames=value&&value.match(rnothtmlwhite);
if(attrNames&&elem.nodeType===1){
while(( name=attrNames[ i++ ]) ){
elem.removeAttribute(name);
}}
}});
boolHook={
set: function(elem, value, name){
if(value===false){
jQuery.removeAttr(elem, name);
}else{
elem.setAttribute(name, name);
}
return name;
}};
jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function(_i, name){
var getter=attrHandle[ name ]||jQuery.find.attr;
attrHandle[ name ]=function(elem, name, isXML){
var ret, handle,
lowercaseName=name.toLowerCase();
if(!isXML){
handle=attrHandle[ lowercaseName ];
attrHandle[ lowercaseName ]=ret;
ret=getter(elem, name, isXML)!=null ?
lowercaseName :
null;
attrHandle[ lowercaseName ]=handle;
}
return ret;
};});
var rfocusable=/^(?:input|select|textarea|button)$/i,
rclickable=/^(?:a|area)$/i;
jQuery.fn.extend({
prop: function(name, value){
return access(this, jQuery.prop, name, value, arguments.length > 1);
},
removeProp: function(name){
return this.each(function(){
delete this[ jQuery.propFix[ name ]||name ];
});
}});
jQuery.extend({
prop: function(elem, name, value){
var ret, hooks,
nType=elem.nodeType;
if(nType===3||nType===8||nType===2){
return;
}
if(nType!==1||!jQuery.isXMLDoc(elem) ){
name=jQuery.propFix[ name ]||name;
hooks=jQuery.propHooks[ name ];
}
if(value!==undefined){
if(hooks&&"set" in hooks &&
(ret=hooks.set(elem, value, name) )!==undefined){
return ret;
}
return(elem[ name ]=value);
}
if(hooks&&"get" in hooks&&(ret=hooks.get(elem, name) )!==null){
return ret;
}
return elem[ name ];
},
propHooks: {
tabIndex: {
get: function(elem){
var tabindex=jQuery.find.attr(elem, "tabindex");
if(tabindex){
return parseInt(tabindex, 10);
}
if(rfocusable.test(elem.nodeName) ||
rclickable.test(elem.nodeName) &&
elem.href
){
return 0;
}
return -1;
}}
},
propFix: {
"for": "htmlFor",
"class": "className"
}});
if(!support.optSelected){
jQuery.propHooks.selected={
get: function(elem){
var parent=elem.parentNode;
if(parent&&parent.parentNode){
parent.parentNode.selectedIndex;
}
return null;
},
set: function(elem){
var parent=elem.parentNode;
if(parent){
parent.selectedIndex;
if(parent.parentNode){
parent.parentNode.selectedIndex;
}}
}};}
jQuery.each([
"tabIndex",
"readOnly",
"maxLength",
"cellSpacing",
"cellPadding",
"rowSpan",
"colSpan",
"useMap",
"frameBorder",
"contentEditable"
], function(){
jQuery.propFix[ this.toLowerCase() ]=this;
});
function stripAndCollapse(value){
var tokens=value.match(rnothtmlwhite)||[];
return tokens.join(" ");
}
function getClass(elem){
return elem.getAttribute&&elem.getAttribute("class")||"";
}
function classesToArray(value){
if(Array.isArray(value) ){
return value;
}
if(typeof value==="string"){
return value.match(rnothtmlwhite)||[];
}
return [];
}
jQuery.fn.extend({
addClass: function(value){
var classNames, cur, curValue, className, i, finalValue;
if(isFunction(value) ){
return this.each(function(j){
jQuery(this).addClass(value.call(this, j, getClass(this) ));
});
}
classNames=classesToArray(value);
if(classNames.length){
return this.each(function(){
curValue=getClass(this);
cur=this.nodeType===1&&(" " + stripAndCollapse(curValue) + " ");
if(cur){
for(i=0; i < classNames.length; i++){
className=classNames[ i ];
if(cur.indexOf(" " + className + " ") < 0){
cur +=className + " ";
}}
finalValue=stripAndCollapse(cur);
if(curValue!==finalValue){
this.setAttribute("class", finalValue);
}}
});
}
return this;
},
removeClass: function(value){
var classNames, cur, curValue, className, i, finalValue;
if(isFunction(value) ){
return this.each(function(j){
jQuery(this).removeClass(value.call(this, j, getClass(this) ));
});
}
if(!arguments.length){
return this.attr("class", "");
}
classNames=classesToArray(value);
if(classNames.length){
return this.each(function(){
curValue=getClass(this);
cur=this.nodeType===1&&(" " + stripAndCollapse(curValue) + " ");
if(cur){
for(i=0; i < classNames.length; i++){
className=classNames[ i ];
while(cur.indexOf(" " + className + " ") > -1){
cur=cur.replace(" " + className + " ", " ");
}}
finalValue=stripAndCollapse(cur);
if(curValue!==finalValue){
this.setAttribute("class", finalValue);
}}
});
}
return this;
},
toggleClass: function(value, stateVal){
var classNames, className, i, self,
type=typeof value,
isValidValue=type==="string"||Array.isArray(value);
if(isFunction(value) ){
return this.each(function(i){
jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal),
stateVal
);
});
}
if(typeof stateVal==="boolean"&&isValidValue){
return stateVal ? this.addClass(value):this.removeClass(value);
}
classNames=classesToArray(value);
return this.each(function(){
if(isValidValue){
self=jQuery(this);
for(i=0; i < classNames.length; i++){
className=classNames[ i ];
if(self.hasClass(className) ){
self.removeClass(className);
}else{
self.addClass(className);
}}
}else if(value===undefined||type==="boolean"){
className=getClass(this);
if(className){
dataPriv.set(this, "__className__", className);
}
if(this.setAttribute){
this.setAttribute("class",
className||value===false ?
"" :
dataPriv.get(this, "__className__")||""
);
}}
});
},
hasClass: function(selector){
var className, elem,
i=0;
className=" " + selector + " ";
while(( elem=this[ i++ ]) ){
if(elem.nodeType===1 &&
(" " + stripAndCollapse(getClass(elem) ) + " ").indexOf(className) > -1){
return true;
}}
return false;
}});
var rreturn=/\r/g;
jQuery.fn.extend({
val: function(value){
var hooks, ret, valueIsFunction,
elem=this[ 0 ];
if(!arguments.length){
if(elem){
hooks=jQuery.valHooks[ elem.type ] ||
jQuery.valHooks[ elem.nodeName.toLowerCase() ];
if(hooks &&
"get" in hooks &&
(ret=hooks.get(elem, "value") )!==undefined
){
return ret;
}
ret=elem.value;
if(typeof ret==="string"){
return ret.replace(rreturn, "");
}
return ret==null ? "":ret;
}
return;
}
valueIsFunction=isFunction(value);
return this.each(function(i){
var val;
if(this.nodeType!==1){
return;
}
if(valueIsFunction){
val=value.call(this, i, jQuery(this).val());
}else{
val=value;
}
if(val==null){
val="";
}else if(typeof val==="number"){
val +="";
}else if(Array.isArray(val) ){
val=jQuery.map(val, function(value){
return value==null ? "":value + "";
});
}
hooks=jQuery.valHooks[ this.type ]||jQuery.valHooks[ this.nodeName.toLowerCase() ];
if(!hooks||!("set" in hooks)||hooks.set(this, val, "value")===undefined){
this.value=val;
}});
}});
jQuery.extend({
valHooks: {
option: {
get: function(elem){
var val=jQuery.find.attr(elem, "value");
return val!=null ?
val :
stripAndCollapse(jQuery.text(elem) );
}},
select: {
get: function(elem){
var value, option, i,
options=elem.options,
index=elem.selectedIndex,
one=elem.type==="select-one",
values=one ? null:[],
max=one ? index + 1:options.length;
if(index < 0){
i=max;
}else{
i=one ? index:0;
}
for(; i < max; i++){
option=options[ i ];
if(( option.selected||i===index) &&
!option.disabled &&
(!option.parentNode.disabled ||
!nodeName(option.parentNode, "optgroup") )){
value=jQuery(option).val();
if(one){
return value;
}
values.push(value);
}}
return values;
},
set: function(elem, value){
var optionSet, option,
options=elem.options,
values=jQuery.makeArray(value),
i=options.length;
while(i--){
option=options[ i ];
if(option.selected =
jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1
){
optionSet=true;
}
}
if(!optionSet){
elem.selectedIndex=-1;
}
return values;
}}
}});
jQuery.each([ "radio", "checkbox" ], function(){
jQuery.valHooks[ this ]={
set: function(elem, value){
if(Array.isArray(value) ){
return(elem.checked=jQuery.inArray(jQuery(elem).val(), value) > -1);
}}
};
if(!support.checkOn){
jQuery.valHooks[ this ].get=function(elem){
return elem.getAttribute("value")===null ? "on":elem.value;
};}});
var location=window.location;
var nonce={ guid: Date.now() };
var rquery=(/\?/);
jQuery.parseXML=function(data){
var xml, parserErrorElem;
if(!data||typeof data!=="string"){
return null;
}
try {
xml=(new window.DOMParser()).parseFromString(data, "text/xml");
} catch(e){}
parserErrorElem=xml&&xml.getElementsByTagName("parsererror")[ 0 ];
if(!xml||parserErrorElem){
jQuery.error("Invalid XML: " + (
parserErrorElem ?
jQuery.map(parserErrorElem.childNodes, function(el){
return el.textContent;
}).join("\n") :
data
));
}
return xml;
};
var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,
stopPropagationCallback=function(e){
e.stopPropagation();
};
jQuery.extend(jQuery.event, {
trigger: function(event, data, elem, onlyHandlers){
var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
eventPath=[ elem||document ],
type=hasOwn.call(event, "type") ? event.type:event,
namespaces=hasOwn.call(event, "namespace") ? event.namespace.split("."):[];
cur=lastElement=tmp=elem=elem||document;
if(elem.nodeType===3||elem.nodeType===8){
return;
}
if(rfocusMorph.test(type + jQuery.event.triggered) ){
return;
}
if(type.indexOf(".") > -1){
namespaces=type.split(".");
type=namespaces.shift();
namespaces.sort();
}
ontype=type.indexOf(":") < 0&&"on" + type;
event=event[ jQuery.expando ] ?
event :
new jQuery.Event(type, typeof event==="object"&&event);
event.isTrigger=onlyHandlers ? 2:3;
event.namespace=namespaces.join(".");
event.rnamespace=event.namespace ?
new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") :
null;
event.result=undefined;
if(!event.target){
event.target=elem;
}
data=data==null ?
[ event ] :
jQuery.makeArray(data, [ event ]);
special=jQuery.event.special[ type ]||{};
if(!onlyHandlers&&special.trigger&&special.trigger.apply(elem, data)===false){
return;
}
if(!onlyHandlers&&!special.noBubble&&!isWindow(elem) ){
bubbleType=special.delegateType||type;
if(!rfocusMorph.test(bubbleType + type) ){
cur=cur.parentNode;
}
for(; cur; cur=cur.parentNode){
eventPath.push(cur);
tmp=cur;
}
if(tmp===(elem.ownerDocument||document) ){
eventPath.push(tmp.defaultView||tmp.parentWindow||window);
}}
i=0;
while(( cur=eventPath[ i++ ])&&!event.isPropagationStopped()){
lastElement=cur;
event.type=i > 1 ?
bubbleType :
special.bindType||type;
handle=(dataPriv.get(cur, "events")||Object.create(null) )[ event.type ] &&
dataPriv.get(cur, "handle");
if(handle){
handle.apply(cur, data);
}
handle=ontype&&cur[ ontype ];
if(handle&&handle.apply&&acceptData(cur) ){
event.result=handle.apply(cur, data);
if(event.result===false){
event.preventDefault();
}}
}
event.type=type;
if(!onlyHandlers&&!event.isDefaultPrevented()){
if(( !special._default ||
special._default.apply(eventPath.pop(), data)===false) &&
acceptData(elem) ){
if(ontype&&isFunction(elem[ type ])&&!isWindow(elem) ){
tmp=elem[ ontype ];
if(tmp){
elem[ ontype ]=null;
}
jQuery.event.triggered=type;
if(event.isPropagationStopped()){
lastElement.addEventListener(type, stopPropagationCallback);
}
elem[ type ]();
if(event.isPropagationStopped()){
lastElement.removeEventListener(type, stopPropagationCallback);
}
jQuery.event.triggered=undefined;
if(tmp){
elem[ ontype ]=tmp;
}}
}}
return event.result;
},
simulate: function(type, elem, event){
var e=jQuery.extend(new jQuery.Event(),
event,
{
type: type,
isSimulated: true
}
);
jQuery.event.trigger(e, null, elem);
}});
jQuery.fn.extend({
trigger: function(type, data){
return this.each(function(){
jQuery.event.trigger(type, data, this);
});
},
triggerHandler: function(type, data){
var elem=this[ 0 ];
if(elem){
return jQuery.event.trigger(type, data, elem, true);
}}
});
var
rbracket=/\[\]$/,
rCRLF=/\r?\n/g,
rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,
rsubmittable=/^(?:input|select|textarea|keygen)/i;
function buildParams(prefix, obj, traditional, add){
var name;
if(Array.isArray(obj) ){
jQuery.each(obj, function(i, v){
if(traditional||rbracket.test(prefix) ){
add(prefix, v);
}else{
buildParams(
prefix + "[" +(typeof v==="object"&&v!=null ? i:"") + "]",
v,
traditional,
add
);
}});
}else if(!traditional&&toType(obj)==="object"){
for(name in obj){
buildParams(prefix + "[" + name + "]", obj[ name ], traditional, add);
}}else{
add(prefix, obj);
}}
jQuery.param=function(a, traditional){
var prefix,
s=[],
add=function(key, valueOrFunction){
var value=isFunction(valueOrFunction) ?
valueOrFunction() :
valueOrFunction;
s[ s.length ]=encodeURIComponent(key) + "=" +
encodeURIComponent(value==null ? "":value);
};
if(a==null){
return "";
}
if(Array.isArray(a)||(a.jquery&&!jQuery.isPlainObject(a) )){
jQuery.each(a, function(){
add(this.name, this.value);
});
}else{
for(prefix in a){
buildParams(prefix, a[ prefix ], traditional, add);
}}
return s.join("&");
};
jQuery.fn.extend({
serialize: function(){
return jQuery.param(this.serializeArray());
},
serializeArray: function(){
return this.map(function(){
var elements=jQuery.prop(this, "elements");
return elements ? jQuery.makeArray(elements):this;
}).filter(function(){
var type=this.type;
return this.name&&!jQuery(this).is(":disabled") &&
rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type) &&
(this.checked||!rcheckableType.test(type) );
}).map(function(_i, elem){
var val=jQuery(this).val();
if(val==null){
return null;
}
if(Array.isArray(val) ){
return jQuery.map(val, function(val){
return { name: elem.name, value: val.replace(rCRLF, "\r\n") };});
}
return { name: elem.name, value: val.replace(rCRLF, "\r\n") };}).get();
}});
var
r20=/%20/g,
rhash=/#.*$/,
rantiCache=/([?&])_=[^&]*/,
rheaders=/^(.*?):[ \t]*([^\r\n]*)$/mg,
rlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
rnoContent=/^(?:GET|HEAD)$/,
rprotocol=/^\/\//,
prefilters={},
transports={},
allTypes="*/".concat("*"),
originAnchor=document.createElement("a");
originAnchor.href=location.href;
function addToPrefiltersOrTransports(structure){
return function(dataTypeExpression, func){
if(typeof dataTypeExpression!=="string"){
func=dataTypeExpression;
dataTypeExpression="*";
}
var dataType,
i=0,
dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];
if(isFunction(func) ){
while(( dataType=dataTypes[ i++ ]) ){
if(dataType[ 0 ]==="+"){
dataType=dataType.slice(1)||"*";
(structure[ dataType ]=structure[ dataType ]||[]).unshift(func);
}else{
(structure[ dataType ]=structure[ dataType ]||[]).push(func);
}}
}};}
function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR){
var inspected={},
seekingTransport=(structure===transports);
function inspect(dataType){
var selected;
inspected[ dataType ]=true;
jQuery.each(structure[ dataType ]||[], function(_, prefilterOrFactory){
var dataTypeOrTransport=prefilterOrFactory(options, originalOptions, jqXHR);
if(typeof dataTypeOrTransport==="string" &&
!seekingTransport&&!inspected[ dataTypeOrTransport ]){
options.dataTypes.unshift(dataTypeOrTransport);
inspect(dataTypeOrTransport);
return false;
}else if(seekingTransport){
return !(selected=dataTypeOrTransport);
}});
return selected;
}
return inspect(options.dataTypes[ 0 ])||!inspected[ "*" ]&&inspect("*");
}
function ajaxExtend(target, src){
var key, deep,
flatOptions=jQuery.ajaxSettings.flatOptions||{};
for(key in src){
if(src[ key ]!==undefined){
(flatOptions[ key ] ? target:(deep||(deep={}) ))[ key ]=src[ key ];
}}
if(deep){
jQuery.extend(true, target, deep);
}
return target;
}
function ajaxHandleResponses(s, jqXHR, responses){
var ct, type, finalDataType, firstDataType,
contents=s.contents,
dataTypes=s.dataTypes;
while(dataTypes[ 0 ]==="*"){
dataTypes.shift();
if(ct===undefined){
ct=s.mimeType||jqXHR.getResponseHeader("Content-Type");
}}
if(ct){
for(type in contents){
if(contents[ type ]&&contents[ type ].test(ct) ){
dataTypes.unshift(type);
break;
}}
}
if(dataTypes[ 0 ] in responses){
finalDataType=dataTypes[ 0 ];
}else{
for(type in responses){
if(!dataTypes[ 0 ]||s.converters[ type + " " + dataTypes[ 0 ] ]){
finalDataType=type;
break;
}
if(!firstDataType){
firstDataType=type;
}}
finalDataType=finalDataType||firstDataType;
}
if(finalDataType){
if(finalDataType!==dataTypes[ 0 ]){
dataTypes.unshift(finalDataType);
}
return responses[ finalDataType ];
}}
function ajaxConvert(s, response, jqXHR, isSuccess){
var conv2, current, conv, tmp, prev,
converters={},
dataTypes=s.dataTypes.slice();
if(dataTypes[ 1 ]){
for(conv in s.converters){
converters[ conv.toLowerCase() ]=s.converters[ conv ];
}}
current=dataTypes.shift();
while(current){
if(s.responseFields[ current ]){
jqXHR[ s.responseFields[ current ] ]=response;
}
if(!prev&&isSuccess&&s.dataFilter){
response=s.dataFilter(response, s.dataType);
}
prev=current;
current=dataTypes.shift();
if(current){
if(current==="*"){
current=prev;
}else if(prev!=="*"&&prev!==current){
conv=converters[ prev + " " + current ]||converters[ "* " + current ];
if(!conv){
for(conv2 in converters){
tmp=conv2.split(" ");
if(tmp[ 1 ]===current){
conv=converters[ prev + " " + tmp[ 0 ] ] ||
converters[ "* " + tmp[ 0 ] ];
if(conv){
if(conv===true){
conv=converters[ conv2 ];
}else if(converters[ conv2 ]!==true){
current=tmp[ 0 ];
dataTypes.unshift(tmp[ 1 ]);
}
break;
}}
}}
if(conv!==true){
if(conv&&s.throws){
response=conv(response);
}else{
try {
response=conv(response);
} catch(e){
return {
state: "parsererror",
error: conv ? e:"No conversion from " + prev + " to " + current
};}}
}}
}}
return { state: "success", data: response };}
jQuery.extend({
active: 0,
lastModified: {},
etag: {},
ajaxSettings: {
url: location.href,
type: "GET",
isLocal: rlocalProtocol.test(location.protocol),
global: true,
processData: true,
async: true,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
accepts: {
"*": allTypes,
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": true,
"text json": JSON.parse,
"text xml": jQuery.parseXML
},
flatOptions: {
url: true,
context: true
}},
ajaxSetup: function(target, settings){
return settings ?
ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) :
ajaxExtend(jQuery.ajaxSettings, target);
},
ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
ajaxTransport: addToPrefiltersOrTransports(transports),
ajax: function(url, options){
if(typeof url==="object"){
options=url;
url=undefined;
}
options=options||{};
var transport,
cacheURL,
responseHeadersString,
responseHeaders,
timeoutTimer,
urlAnchor,
completed,
fireGlobals,
i,
uncached,
s=jQuery.ajaxSetup({}, options),
callbackContext=s.context||s,
globalEventContext=s.context &&
(callbackContext.nodeType||callbackContext.jquery) ?
jQuery(callbackContext) :
jQuery.event,
deferred=jQuery.Deferred(),
completeDeferred=jQuery.Callbacks("once memory"),
statusCode=s.statusCode||{},
requestHeaders={},
requestHeadersNames={},
strAbort="canceled",
jqXHR={
readyState: 0,
getResponseHeader: function(key){
var match;
if(completed){
if(!responseHeaders){
responseHeaders={};
while(( match=rheaders.exec(responseHeadersString) )){
responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
(responseHeaders[ match[ 1 ].toLowerCase() + " " ]||[])
.concat(match[ 2 ]);
}}
match=responseHeaders[ key.toLowerCase() + " " ];
}
return match==null ? null:match.join(", ");
},
getAllResponseHeaders: function(){
return completed ? responseHeadersString:null;
},
setRequestHeader: function(name, value){
if(completed==null){
name=requestHeadersNames[ name.toLowerCase() ] =
requestHeadersNames[ name.toLowerCase() ]||name;
requestHeaders[ name ]=value;
}
return this;
},
overrideMimeType: function(type){
if(completed==null){
s.mimeType=type;
}
return this;
},
statusCode: function(map){
var code;
if(map){
if(completed){
jqXHR.always(map[ jqXHR.status ]);
}else{
for(code in map){
statusCode[ code ]=[ statusCode[ code ], map[ code ] ];
}}
}
return this;
},
abort: function(statusText){
var finalText=statusText||strAbort;
if(transport){
transport.abort(finalText);
}
done(0, finalText);
return this;
}};
deferred.promise(jqXHR);
s.url=(( url||s.url||location.href) + "")
.replace(rprotocol, location.protocol + "//");
s.type=options.method||options.type||s.method||s.type;
s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[ "" ];
if(s.crossDomain==null){
urlAnchor=document.createElement("a");
try {
urlAnchor.href=s.url;
urlAnchor.href=urlAnchor.href;
s.crossDomain=originAnchor.protocol + "//" + originAnchor.host!==urlAnchor.protocol + "//" + urlAnchor.host;
} catch(e){
s.crossDomain=true;
}}
if(s.data&&s.processData&&typeof s.data!=="string"){
s.data=jQuery.param(s.data, s.traditional);
}
inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);
if(completed){
return jqXHR;
}
fireGlobals=jQuery.event&&s.global;
if(fireGlobals&&jQuery.active++===0){
jQuery.event.trigger("ajaxStart");
}
s.type=s.type.toUpperCase();
s.hasContent = !rnoContent.test(s.type);
cacheURL=s.url.replace(rhash, "");
if(!s.hasContent){
uncached=s.url.slice(cacheURL.length);
if(s.data&&(s.processData||typeof s.data==="string") ){
cacheURL +=(rquery.test(cacheURL) ? "&":"?") + s.data;
delete s.data;
}
if(s.cache===false){
cacheURL=cacheURL.replace(rantiCache, "$1");
uncached=(rquery.test(cacheURL) ? "&":"?") + "_=" +(nonce.guid++) +
uncached;
}
s.url=cacheURL + uncached;
}else if(s.data&&s.processData &&
(s.contentType||"").indexOf("application/x-www-form-urlencoded")===0){
s.data=s.data.replace(r20, "+");
}
if(s.ifModified){
if(jQuery.lastModified[ cacheURL ]){
jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[ cacheURL ]);
}
if(jQuery.etag[ cacheURL ]){
jqXHR.setRequestHeader("If-None-Match", jQuery.etag[ cacheURL ]);
}}
if(s.data&&s.hasContent&&s.contentType!==false||options.contentType){
jqXHR.setRequestHeader("Content-Type", s.contentType);
}
jqXHR.setRequestHeader("Accept",
s.dataTypes[ 0 ]&&s.accepts[ s.dataTypes[ 0 ] ] ?
s.accepts[ s.dataTypes[ 0 ] ] +
(s.dataTypes[ 0 ]!=="*" ? ", " + allTypes + "; q=0.01":"") :
s.accepts[ "*" ]
);
for(i in s.headers){
jqXHR.setRequestHeader(i, s.headers[ i ]);
}
if(s.beforeSend &&
(s.beforeSend.call(callbackContext, jqXHR, s)===false||completed) ){
return jqXHR.abort();
}
strAbort="abort";
completeDeferred.add(s.complete);
jqXHR.done(s.success);
jqXHR.fail(s.error);
transport=inspectPrefiltersOrTransports(transports, s, options, jqXHR);
if(!transport){
done(-1, "No Transport");
}else{
jqXHR.readyState=1;
if(fireGlobals){
globalEventContext.trigger("ajaxSend", [ jqXHR, s ]);
}
if(completed){
return jqXHR;
}
if(s.async&&s.timeout > 0){
timeoutTimer=window.setTimeout(function(){
jqXHR.abort("timeout");
}, s.timeout);
}
try {
completed=false;
transport.send(requestHeaders, done);
} catch(e){
if(completed){
throw e;
}
done(-1, e);
}}
function done(status, nativeStatusText, responses, headers){
var isSuccess, success, error, response, modified,
statusText=nativeStatusText;
if(completed){
return;
}
completed=true;
if(timeoutTimer){
window.clearTimeout(timeoutTimer);
}
transport=undefined;
responseHeadersString=headers||"";
jqXHR.readyState=status > 0 ? 4:0;
isSuccess=status >=200&&status < 300||status===304;
if(responses){
response=ajaxHandleResponses(s, jqXHR, responses);
}
if(!isSuccess &&
jQuery.inArray("script", s.dataTypes) > -1 &&
jQuery.inArray("json", s.dataTypes) < 0){
s.converters[ "text script" ]=function(){};}
response=ajaxConvert(s, response, jqXHR, isSuccess);
if(isSuccess){
if(s.ifModified){
modified=jqXHR.getResponseHeader("Last-Modified");
if(modified){
jQuery.lastModified[ cacheURL ]=modified;
}
modified=jqXHR.getResponseHeader("etag");
if(modified){
jQuery.etag[ cacheURL ]=modified;
}}
if(status===204||s.type==="HEAD"){
statusText="nocontent";
}else if(status===304){
statusText="notmodified";
}else{
statusText=response.state;
success=response.data;
error=response.error;
isSuccess = !error;
}}else{
error=statusText;
if(status||!statusText){
statusText="error";
if(status < 0){
status=0;
}}
}
jqXHR.status=status;
jqXHR.statusText=(nativeStatusText||statusText) + "";
if(isSuccess){
deferred.resolveWith(callbackContext, [ success, statusText, jqXHR ]);
}else{
deferred.rejectWith(callbackContext, [ jqXHR, statusText, error ]);
}
jqXHR.statusCode(statusCode);
statusCode=undefined;
if(fireGlobals){
globalEventContext.trigger(isSuccess ? "ajaxSuccess":"ajaxError",
[ jqXHR, s, isSuccess ? success:error ]);
}
completeDeferred.fireWith(callbackContext, [ jqXHR, statusText ]);
if(fireGlobals){
globalEventContext.trigger("ajaxComplete", [ jqXHR, s ]);
if(!(--jQuery.active) ){
jQuery.event.trigger("ajaxStop");
}}
}
return jqXHR;
},
getJSON: function(url, data, callback){
return jQuery.get(url, data, callback, "json");
},
getScript: function(url, callback){
return jQuery.get(url, undefined, callback, "script");
}});
jQuery.each([ "get", "post" ], function(_i, method){
jQuery[ method ]=function(url, data, callback, type){
if(isFunction(data) ){
type=type||callback;
callback=data;
data=undefined;
}
return jQuery.ajax(jQuery.extend({
url: url,
type: method,
dataType: type,
data: data,
success: callback
}, jQuery.isPlainObject(url)&&url) );
};});
jQuery.ajaxPrefilter(function(s){
var i;
for(i in s.headers){
if(i.toLowerCase()==="content-type"){
s.contentType=s.headers[ i ]||"";
}}
});
jQuery._evalUrl=function(url, options, doc){
return jQuery.ajax({
url: url,
type: "GET",
dataType: "script",
cache: true,
async: false,
global: false,
converters: {
"text script": function(){}},
dataFilter: function(response){
jQuery.globalEval(response, options, doc);
}});
};
jQuery.fn.extend({
wrapAll: function(html){
var wrap;
if(this[ 0 ]){
if(isFunction(html) ){
html=html.call(this[ 0 ]);
}
wrap=jQuery(html, this[ 0 ].ownerDocument).eq(0).clone(true);
if(this[ 0 ].parentNode){
wrap.insertBefore(this[ 0 ]);
}
wrap.map(function(){
var elem=this;
while(elem.firstElementChild){
elem=elem.firstElementChild;
}
return elem;
}).append(this);
}
return this;
},
wrapInner: function(html){
if(isFunction(html) ){
return this.each(function(i){
jQuery(this).wrapInner(html.call(this, i) );
});
}
return this.each(function(){
var self=jQuery(this),
contents=self.contents();
if(contents.length){
contents.wrapAll(html);
}else{
self.append(html);
}});
},
wrap: function(html){
var htmlIsFunction=isFunction(html);
return this.each(function(i){
jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i):html);
});
},
unwrap: function(selector){
this.parent(selector).not("body").each(function(){
jQuery(this).replaceWith(this.childNodes);
});
return this;
}});
jQuery.expr.pseudos.hidden=function(elem){
return !jQuery.expr.pseudos.visible(elem);
};
jQuery.expr.pseudos.visible=function(elem){
return !!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length);
};
jQuery.ajaxSettings.xhr=function(){
try {
return new window.XMLHttpRequest();
} catch(e){}};
var xhrSuccessStatus={
0: 200,
1223: 204
},
xhrSupported=jQuery.ajaxSettings.xhr();
support.cors = !!xhrSupported&&("withCredentials" in xhrSupported);
support.ajax=xhrSupported = !!xhrSupported;
jQuery.ajaxTransport(function(options){
var callback, errorCallback;
if(support.cors||xhrSupported&&!options.crossDomain){
return {
send: function(headers, complete){
var i,
xhr=options.xhr();
xhr.open(options.type,
options.url,
options.async,
options.username,
options.password
);
if(options.xhrFields){
for(i in options.xhrFields){
xhr[ i ]=options.xhrFields[ i ];
}}
if(options.mimeType&&xhr.overrideMimeType){
xhr.overrideMimeType(options.mimeType);
}
if(!options.crossDomain&&!headers[ "X-Requested-With" ]){
headers[ "X-Requested-With" ]="XMLHttpRequest";
}
for(i in headers){
xhr.setRequestHeader(i, headers[ i ]);
}
callback=function(type){
return function(){
if(callback){
callback=errorCallback=xhr.onload =
xhr.onerror=xhr.onabort=xhr.ontimeout =
xhr.onreadystatechange=null;
if(type==="abort"){
xhr.abort();
}else if(type==="error"){
if(typeof xhr.status!=="number"){
complete(0, "error");
}else{
complete(
xhr.status,
xhr.statusText
);
}}else{
complete(
xhrSuccessStatus[ xhr.status ]||xhr.status,
xhr.statusText,
(xhr.responseType||"text")!=="text"  ||
typeof xhr.responseText!=="string" ?
{ binary: xhr.response } :
{ text: xhr.responseText },
xhr.getAllResponseHeaders()
);
}}
};};
xhr.onload=callback();
errorCallback=xhr.onerror=xhr.ontimeout=callback("error");
if(xhr.onabort!==undefined){
xhr.onabort=errorCallback;
}else{
xhr.onreadystatechange=function(){
if(xhr.readyState===4){
window.setTimeout(function(){
if(callback){
errorCallback();
}});
}};}
callback=callback("abort");
try {
xhr.send(options.hasContent&&options.data||null);
} catch(e){
if(callback){
throw e;
}}
},
abort: function(){
if(callback){
callback();
}}
};}});
jQuery.ajaxPrefilter(function(s){
if(s.crossDomain){
s.contents.script=false;
}});
jQuery.ajaxSetup({
accepts: {
script: "text/javascript, application/javascript, " +
"application/ecmascript, application/x-ecmascript"
},
contents: {
script: /\b(?:java|ecma)script\b/
},
converters: {
"text script": function(text){
jQuery.globalEval(text);
return text;
}}
});
jQuery.ajaxPrefilter("script", function(s){
if(s.cache===undefined){
s.cache=false;
}
if(s.crossDomain){
s.type="GET";
}});
jQuery.ajaxTransport("script", function(s){
if(s.crossDomain||s.scriptAttrs){
var script, callback;
return {
send: function(_, complete){
script=jQuery("<script>")
.attr(s.scriptAttrs||{})
.prop({ charset: s.scriptCharset, src: s.url })
.on("load error", callback=function(evt){
script.remove();
callback=null;
if(evt){
complete(evt.type==="error" ? 404:200, evt.type);
}});
document.head.appendChild(script[ 0 ]);
},
abort: function(){
if(callback){
callback();
}}
};}});
var oldCallbacks=[],
rjsonp=/(=)\?(?=&|$)|\?\?/;
jQuery.ajaxSetup({
jsonp: "callback",
jsonpCallback: function(){
var callback=oldCallbacks.pop()||(jQuery.expando + "_" +(nonce.guid++) );
this[ callback ]=true;
return callback;
}});
jQuery.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR){
var callbackName, overwritten, responseContainer,
jsonProp=s.jsonp!==false&&(rjsonp.test(s.url) ?
"url" :
typeof s.data==="string" &&
(s.contentType||"")
.indexOf("application/x-www-form-urlencoded")===0 &&
rjsonp.test(s.data)&&"data"
);
if(jsonProp||s.dataTypes[ 0 ]==="jsonp"){
callbackName=s.jsonpCallback=isFunction(s.jsonpCallback) ?
s.jsonpCallback() :
s.jsonpCallback;
if(jsonProp){
s[ jsonProp ]=s[ jsonProp ].replace(rjsonp, "$1" + callbackName);
}else if(s.jsonp!==false){
s.url +=(rquery.test(s.url) ? "&":"?") + s.jsonp + "=" + callbackName;
}
s.converters[ "script json" ]=function(){
if(!responseContainer){
jQuery.error(callbackName + " was not called");
}
return responseContainer[ 0 ];
};
s.dataTypes[ 0 ]="json";
overwritten=window[ callbackName ];
window[ callbackName ]=function(){
responseContainer=arguments;
};
jqXHR.always(function(){
if(overwritten===undefined){
jQuery(window).removeProp(callbackName);
}else{
window[ callbackName ]=overwritten;
}
if(s[ callbackName ]){
s.jsonpCallback=originalSettings.jsonpCallback;
oldCallbacks.push(callbackName);
}
if(responseContainer&&isFunction(overwritten) ){
overwritten(responseContainer[ 0 ]);
}
responseContainer=overwritten=undefined;
});
return "script";
}});
support.createHTMLDocument=(function(){
var body=document.implementation.createHTMLDocument("").body;
body.innerHTML="<form></form><form></form>";
return body.childNodes.length===2;
})();
jQuery.parseHTML=function(data, context, keepScripts){
if(typeof data!=="string"){
return [];
}
if(typeof context==="boolean"){
keepScripts=context;
context=false;
}
var base, parsed, scripts;
if(!context){
if(support.createHTMLDocument){
context=document.implementation.createHTMLDocument("");
base=context.createElement("base");
base.href=document.location.href;
context.head.appendChild(base);
}else{
context=document;
}}
parsed=rsingleTag.exec(data);
scripts = !keepScripts&&[];
if(parsed){
return [ context.createElement(parsed[ 1 ]) ];
}
parsed=buildFragment([ data ], context, scripts);
if(scripts&&scripts.length){
jQuery(scripts).remove();
}
return jQuery.merge([], parsed.childNodes);
};
jQuery.fn.load=function(url, params, callback){
var selector, type, response,
self=this,
off=url.indexOf(" ");
if(off > -1){
selector=stripAndCollapse(url.slice(off) );
url=url.slice(0, off);
}
if(isFunction(params) ){
callback=params;
params=undefined;
}else if(params&&typeof params==="object"){
type="POST";
}
if(self.length > 0){
jQuery.ajax({
url: url,
type: type||"GET",
dataType: "html",
data: params
}).done(function(responseText){
response=arguments;
self.html(selector ?
jQuery("<div>").append(jQuery.parseHTML(responseText) ).find(selector) :
responseText);
}).always(callback&&function(jqXHR, status){
self.each(function(){
callback.apply(this, response||[ jqXHR.responseText, status, jqXHR ]);
});
});
}
return this;
};
jQuery.expr.pseudos.animated=function(elem){
return jQuery.grep(jQuery.timers, function(fn){
return elem===fn.elem;
}).length;
};
jQuery.offset={
setOffset: function(elem, options, i){
var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
position=jQuery.css(elem, "position"),
curElem=jQuery(elem),
props={};
if(position==="static"){
elem.style.position="relative";
}
curOffset=curElem.offset();
curCSSTop=jQuery.css(elem, "top");
curCSSLeft=jQuery.css(elem, "left");
calculatePosition=(position==="absolute"||position==="fixed") &&
(curCSSTop + curCSSLeft).indexOf("auto") > -1;
if(calculatePosition){
curPosition=curElem.position();
curTop=curPosition.top;
curLeft=curPosition.left;
}else{
curTop=parseFloat(curCSSTop)||0;
curLeft=parseFloat(curCSSLeft)||0;
}
if(isFunction(options) ){
options=options.call(elem, i, jQuery.extend({}, curOffset) );
}
if(options.top!=null){
props.top=(options.top - curOffset.top) + curTop;
}
if(options.left!=null){
props.left=(options.left - curOffset.left) + curLeft;
}
if("using" in options){
options.using.call(elem, props);
}else{
curElem.css(props);
}}
};
jQuery.fn.extend({
offset: function(options){
if(arguments.length){
return options===undefined ?
this :
this.each(function(i){
jQuery.offset.setOffset(this, options, i);
});
}
var rect, win,
elem=this[ 0 ];
if(!elem){
return;
}
if(!elem.getClientRects().length){
return { top: 0, left: 0 };}
rect=elem.getBoundingClientRect();
win=elem.ownerDocument.defaultView;
return {
top: rect.top + win.pageYOffset,
left: rect.left + win.pageXOffset
};},
position: function(){
if(!this[ 0 ]){
return;
}
var offsetParent, offset, doc,
elem=this[ 0 ],
parentOffset={ top: 0, left: 0 };
if(jQuery.css(elem, "position")==="fixed"){
offset=elem.getBoundingClientRect();
}else{
offset=this.offset();
doc=elem.ownerDocument;
offsetParent=elem.offsetParent||doc.documentElement;
while(offsetParent &&
(offsetParent===doc.body||offsetParent===doc.documentElement) &&
jQuery.css(offsetParent, "position")==="static"){
offsetParent=offsetParent.parentNode;
}
if(offsetParent&&offsetParent!==elem&&offsetParent.nodeType===1){
parentOffset=jQuery(offsetParent).offset();
parentOffset.top +=jQuery.css(offsetParent, "borderTopWidth", true);
parentOffset.left +=jQuery.css(offsetParent, "borderLeftWidth", true);
}}
return {
top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", true),
left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", true)
};},
offsetParent: function(){
return this.map(function(){
var offsetParent=this.offsetParent;
while(offsetParent&&jQuery.css(offsetParent, "position")==="static"){
offsetParent=offsetParent.offsetParent;
}
return offsetParent||documentElement;
});
}});
jQuery.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(method, prop){
var top="pageYOffset"===prop;
jQuery.fn[ method ]=function(val){
return access(this, function(elem, method, val){
var win;
if(isWindow(elem) ){
win=elem;
}else if(elem.nodeType===9){
win=elem.defaultView;
}
if(val===undefined){
return win ? win[ prop ]:elem[ method ];
}
if(win){
win.scrollTo(!top ? val:win.pageXOffset,
top ? val:win.pageYOffset
);
}else{
elem[ method ]=val;
}}, method, val, arguments.length);
};});
jQuery.each([ "top", "left" ], function(_i, prop){
jQuery.cssHooks[ prop ]=addGetHookIf(support.pixelPosition,
function(elem, computed){
if(computed){
computed=curCSS(elem, prop);
return rnumnonpx.test(computed) ?
jQuery(elem).position()[ prop ] + "px" :
computed;
}}
);
});
jQuery.each({ Height: "height", Width: "width" }, function(name, type){
jQuery.each({
padding: "inner" + name,
content: type,
"": "outer" + name
}, function(defaultExtra, funcName){
jQuery.fn[ funcName ]=function(margin, value){
var chainable=arguments.length&&(defaultExtra||typeof margin!=="boolean"),
extra=defaultExtra||(margin===true||value===true ? "margin":"border");
return access(this, function(elem, type, value){
var doc;
if(isWindow(elem) ){
return funcName.indexOf("outer")===0 ?
elem[ "inner" + name ] :
elem.document.documentElement[ "client" + name ];
}
if(elem.nodeType===9){
doc=elem.documentElement;
return Math.max(elem.body[ "scroll" + name ], doc[ "scroll" + name ],
elem.body[ "offset" + name ], doc[ "offset" + name ],
doc[ "client" + name ]
);
}
return value===undefined ?
jQuery.css(elem, type, extra) :
jQuery.style(elem, type, value, extra);
}, type, chainable ? margin:undefined, chainable);
};});
});
jQuery.each([
"ajaxStart",
"ajaxStop",
"ajaxComplete",
"ajaxError",
"ajaxSuccess",
"ajaxSend"
], function(_i, type){
jQuery.fn[ type ]=function(fn){
return this.on(type, fn);
};});
jQuery.fn.extend({
bind: function(types, data, fn){
return this.on(types, null, data, fn);
},
unbind: function(types, fn){
return this.off(types, null, fn);
},
delegate: function(selector, types, data, fn){
return this.on(types, selector, data, fn);
},
undelegate: function(selector, types, fn){
return arguments.length===1 ?
this.off(selector, "**") :
this.off(types, selector||"**", fn);
},
hover: function(fnOver, fnOut){
return this
.on("mouseenter", fnOver)
.on("mouseleave", fnOut||fnOver);
}});
jQuery.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(_i, name){
jQuery.fn[ name ]=function(data, fn){
return arguments.length > 0 ?
this.on(name, null, data, fn) :
this.trigger(name);
};}
);
var rtrim=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
jQuery.proxy=function(fn, context){
var tmp, args, proxy;
if(typeof context==="string"){
tmp=fn[ context ];
context=fn;
fn=tmp;
}
if(!isFunction(fn) ){
return undefined;
}
args=slice.call(arguments, 2);
proxy=function(){
return fn.apply(context||this, args.concat(slice.call(arguments) ));
};
proxy.guid=fn.guid=fn.guid||jQuery.guid++;
return proxy;
};
jQuery.holdReady=function(hold){
if(hold){
jQuery.readyWait++;
}else{
jQuery.ready(true);
}};
jQuery.isArray=Array.isArray;
jQuery.parseJSON=JSON.parse;
jQuery.nodeName=nodeName;
jQuery.isFunction=isFunction;
jQuery.isWindow=isWindow;
jQuery.camelCase=camelCase;
jQuery.type=toType;
jQuery.now=Date.now;
jQuery.isNumeric=function(obj){
var type=jQuery.type(obj);
return(type==="number"||type==="string") &&
!isNaN(obj - parseFloat(obj) );
};
jQuery.trim=function(text){
return text==null ?
"" :
(text + "").replace(rtrim, "$1");
};
if(typeof define==="function"&&define.amd){
define("jquery", [], function(){
return jQuery;
});
}
var
_jQuery=window.jQuery,
_$=window.$;
jQuery.noConflict=function(deep){
if(window.$===jQuery){
window.$=_$;
}
if(deep&&window.jQuery===jQuery){
window.jQuery=_jQuery;
}
return jQuery;
};
if(typeof noGlobal==="undefined"){
window.jQuery=window.$=jQuery;
}
return jQuery;
});
jQuery.noConflict();
(function(factory){
"use strict";
if(typeof define==="function"&&define.amd){
define([ "jquery" ], function(jQuery){
return factory(jQuery, window);
});
}else if(typeof module==="object"&&module.exports){
module.exports=factory(require("jquery"), window);
}else{
factory(jQuery, window);
}})(function(jQuery, window){
"use strict";
jQuery.migrateVersion="3.4.1";
function compareVersions(v1, v2){
var i,
rVersionParts=/^(\d+)\.(\d+)\.(\d+)/,
v1p=rVersionParts.exec(v1)||[ ],
v2p=rVersionParts.exec(v2)||[ ];
for(i=1; i <=3; i++){
if(+v1p[ i ] > +v2p[ i ]){
return 1;
}
if(+v1p[ i ] < +v2p[ i ]){
return -1;
}}
return 0;
}
function jQueryVersionSince(version){
return compareVersions(jQuery.fn.jquery, version) >=0;
}
var disabledPatches=Object.create(null);
jQuery.migrateDisablePatches=function(){
var i;
for(i=0; i < arguments.length; i++){
disabledPatches[ arguments[ i ] ]=true;
}};
jQuery.migrateEnablePatches=function(){
var i;
for(i=0; i < arguments.length; i++){
delete disabledPatches[ arguments[ i ] ];
}};
jQuery.migrateIsPatchEnabled=function(patchCode){
return !disabledPatches[ patchCode ];
};
(function(){
if(!window.console||!window.console.log){
return;
}
if(!jQuery||!jQueryVersionSince("3.0.0") ||
jQueryVersionSince("5.0.0") ){
window.console.log("JQMIGRATE: jQuery 3.x-4.x REQUIRED");
}
if(jQuery.migrateWarnings){
window.console.log("JQMIGRATE: Migrate plugin loaded multiple times");
}
window.console.log("JQMIGRATE: Migrate is installed" +
(jQuery.migrateMute ? "":" with logging active") +
", version " + jQuery.migrateVersion);
})();
var warnedAbout={};
jQuery.migrateDeduplicateWarnings=true;
jQuery.migrateWarnings=[];
if(jQuery.migrateTrace===undefined){
jQuery.migrateTrace=true;
}
jQuery.migrateReset=function(){
warnedAbout={};
jQuery.migrateWarnings.length=0;
};
function migrateWarn(code, msg){
var console=window.console;
if(jQuery.migrateIsPatchEnabled(code) &&
(!jQuery.migrateDeduplicateWarnings||!warnedAbout[ msg ]) ){
warnedAbout[ msg ]=true;
jQuery.migrateWarnings.push(msg + " [" + code + "]");
if(console&&console.warn&&!jQuery.migrateMute){
console.warn("JQMIGRATE: " + msg);
if(jQuery.migrateTrace&&console.trace){
console.trace();
}}
}}
function migrateWarnProp(obj, prop, value, code, msg){
Object.defineProperty(obj, prop, {
configurable: true,
enumerable: true,
get: function(){
migrateWarn(code, msg);
return value;
},
set: function(newValue){
migrateWarn(code, msg);
value=newValue;
}});
}
function migrateWarnFuncInternal(obj, prop, newFunc, code, msg){
var finalFunc,
origFunc=obj[ prop ];
obj[ prop ]=function(){
if(msg){
migrateWarn(code, msg);
}
finalFunc=jQuery.migrateIsPatchEnabled(code) ?
newFunc :
(origFunc||jQuery.noop);
return finalFunc.apply(this, arguments);
};}
function migratePatchAndWarnFunc(obj, prop, newFunc, code, msg){
if(!msg){
throw new Error("No warning message provided");
}
return migrateWarnFuncInternal(obj, prop, newFunc, code, msg);
}
function migratePatchFunc(obj, prop, newFunc, code){
return migrateWarnFuncInternal(obj, prop, newFunc, code);
}
if(window.document.compatMode==="BackCompat"){
migrateWarn("quirks", "jQuery is not compatible with Quirks Mode");
}
var findProp,
class2type={},
oldInit=jQuery.fn.init,
oldFind=jQuery.find,
rattrHashTest=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,
rattrHashGlob=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,
rtrim=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
migratePatchFunc(jQuery.fn, "init", function(arg1){
var args=Array.prototype.slice.call(arguments);
if(jQuery.migrateIsPatchEnabled("selector-empty-id") &&
typeof arg1==="string"&&arg1==="#"){
migrateWarn("selector-empty-id", "jQuery('#') is not a valid selector");
args[ 0 ]=[];
}
return oldInit.apply(this, args);
}, "selector-empty-id");
jQuery.fn.init.prototype=jQuery.fn;
migratePatchFunc(jQuery, "find", function(selector){
var args=Array.prototype.slice.call(arguments);
if(typeof selector==="string"&&rattrHashTest.test(selector) ){
try {
window.document.querySelector(selector);
} catch(err1){
selector=selector.replace(rattrHashGlob, function(_, attr, op, value){
return "[" + attr + op + "\"" + value + "\"]";
});
try {
window.document.querySelector(selector);
migrateWarn("selector-hash",
"Attribute selector with '#' must be quoted: " + args[ 0 ]);
args[ 0 ]=selector;
} catch(err2){
migrateWarn("selector-hash",
"Attribute selector with '#' was not fixed: " + args[ 0 ]);
}}
}
return oldFind.apply(this, args);
}, "selector-hash");
for(findProp in oldFind){
if(Object.prototype.hasOwnProperty.call(oldFind, findProp) ){
jQuery.find[ findProp ]=oldFind[ findProp ];
}}
migratePatchAndWarnFunc(jQuery.fn, "size", function(){
return this.length;
}, "size",
"jQuery.fn.size() is deprecated and removed; use the .length property");
migratePatchAndWarnFunc(jQuery, "parseJSON", function(){
return JSON.parse.apply(null, arguments);
}, "parseJSON",
"jQuery.parseJSON is deprecated; use JSON.parse");
migratePatchAndWarnFunc(jQuery, "holdReady", jQuery.holdReady,
"holdReady", "jQuery.holdReady is deprecated");
migratePatchAndWarnFunc(jQuery, "unique", jQuery.uniqueSort,
"unique", "jQuery.unique is deprecated; use jQuery.uniqueSort");
migrateWarnProp(jQuery.expr, "filters", jQuery.expr.pseudos, "expr-pre-pseudos",
"jQuery.expr.filters is deprecated; use jQuery.expr.pseudos");
migrateWarnProp(jQuery.expr, ":", jQuery.expr.pseudos, "expr-pre-pseudos",
"jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos");
if(jQueryVersionSince("3.1.1") ){
migratePatchAndWarnFunc(jQuery, "trim", function(text){
return text==null ?
"" :
(text + "").replace(rtrim, "$1");
}, "trim",
"jQuery.trim is deprecated; use String.prototype.trim");
}
if(jQueryVersionSince("3.2.0") ){
migratePatchAndWarnFunc(jQuery, "nodeName", function(elem, name){
return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase();
}, "nodeName",
"jQuery.nodeName is deprecated");
migratePatchAndWarnFunc(jQuery, "isArray", Array.isArray, "isArray",
"jQuery.isArray is deprecated; use Array.isArray"
);
}
if(jQueryVersionSince("3.3.0") ){
migratePatchAndWarnFunc(jQuery, "isNumeric", function(obj){
var type=typeof obj;
return(type==="number"||type==="string") &&
!isNaN(obj - parseFloat(obj) );
}, "isNumeric",
"jQuery.isNumeric() is deprecated"
);
jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".
split(" "),
function(_, name){
class2type[ "[object " + name + "]" ]=name.toLowerCase();
});
migratePatchAndWarnFunc(jQuery, "type", function(obj){
if(obj==null){
return obj + "";
}
return typeof obj==="object"||typeof obj==="function" ?
class2type[ Object.prototype.toString.call(obj) ]||"object" :
typeof obj;
}, "type",
"jQuery.type is deprecated");
migratePatchAndWarnFunc(jQuery, "isFunction",
function(obj){
return typeof obj==="function";
}, "isFunction",
"jQuery.isFunction() is deprecated");
migratePatchAndWarnFunc(jQuery, "isWindow",
function(obj){
return obj!=null&&obj===obj.window;
}, "isWindow",
"jQuery.isWindow() is deprecated"
);
}
if(jQuery.ajax){
var oldAjax=jQuery.ajax,
rjsonp=/(=)\?(?=&|$)|\?\?/;
migratePatchFunc(jQuery, "ajax", function(){
var jQXHR=oldAjax.apply(this, arguments);
if(jQXHR.promise){
migratePatchAndWarnFunc(jQXHR, "success", jQXHR.done, "jqXHR-methods",
"jQXHR.success is deprecated and removed");
migratePatchAndWarnFunc(jQXHR, "error", jQXHR.fail, "jqXHR-methods",
"jQXHR.error is deprecated and removed");
migratePatchAndWarnFunc(jQXHR, "complete", jQXHR.always, "jqXHR-methods",
"jQXHR.complete is deprecated and removed");
}
return jQXHR;
}, "jqXHR-methods");
if(!jQueryVersionSince("4.0.0") ){
jQuery.ajaxPrefilter("+json", function(s){
if(s.jsonp!==false&&(rjsonp.test(s.url) ||
typeof s.data==="string" &&
(s.contentType||"")
.indexOf("application/x-www-form-urlencoded")===0 &&
rjsonp.test(s.data)
)){
migrateWarn("jsonp-promotion", "JSON-to-JSONP auto-promotion is deprecated");
}});
}}
var oldRemoveAttr=jQuery.fn.removeAttr,
oldToggleClass=jQuery.fn.toggleClass,
rmatchNonSpace=/\S+/g;
migratePatchFunc(jQuery.fn, "removeAttr", function(name){
var self=this,
patchNeeded=false;
jQuery.each(name.match(rmatchNonSpace), function(_i, attr){
if(jQuery.expr.match.bool.test(attr) ){
self.each(function(){
if(jQuery(this).prop(attr)!==false){
patchNeeded=true;
return false;
}});
}
if(patchNeeded){
migrateWarn("removeAttr-bool",
"jQuery.fn.removeAttr no longer sets boolean properties: " + attr);
self.prop(attr, false);
}});
return oldRemoveAttr.apply(this, arguments);
}, "removeAttr-bool");
migratePatchFunc(jQuery.fn, "toggleClass", function(state){
if(state!==undefined&&typeof state!=="boolean"){
return oldToggleClass.apply(this, arguments);
}
migrateWarn("toggleClass-bool", "jQuery.fn.toggleClass(boolean) is deprecated");
return this.each(function(){
var className=this.getAttribute&&this.getAttribute("class")||"";
if(className){
jQuery.data(this, "__className__", className);
}
if(this.setAttribute){
this.setAttribute("class",
className||state===false ?
"" :
jQuery.data(this, "__className__")||""
);
}});
}, "toggleClass-bool");
function camelCase(string){
return string.replace(/-([a-z])/g, function(_, letter){
return letter.toUpperCase();
});
}
var origFnCss, internalCssNumber,
internalSwapCall=false,
ralphaStart=/^[a-z]/,
rautoPx=/^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;
if(jQuery.swap){
jQuery.each([ "height", "width", "reliableMarginRight" ], function(_, name){
var oldHook=jQuery.cssHooks[ name ]&&jQuery.cssHooks[ name ].get;
if(oldHook){
jQuery.cssHooks[ name ].get=function(){
var ret;
internalSwapCall=true;
ret=oldHook.apply(this, arguments);
internalSwapCall=false;
return ret;
};}});
}
migratePatchFunc(jQuery, "swap", function(elem, options, callback, args){
var ret, name,
old={};
if(!internalSwapCall){
migrateWarn("swap", "jQuery.swap() is undocumented and deprecated");
}
for(name in options){
old[ name ]=elem.style[ name ];
elem.style[ name ]=options[ name ];
}
ret=callback.apply(elem, args||[]);
for(name in options){
elem.style[ name ]=old[ name ];
}
return ret;
}, "swap");
if(jQueryVersionSince("3.4.0")&&typeof Proxy!=="undefined"){
jQuery.cssProps=new Proxy(jQuery.cssProps||{}, {
set: function(){
migrateWarn("cssProps", "jQuery.cssProps is deprecated");
return Reflect.set.apply(this, arguments);
}});
}
if(jQueryVersionSince("4.0.0") ){
internalCssNumber={
animationIterationCount: true,
columnCount: true,
fillOpacity: true,
flexGrow: true,
flexShrink: true,
fontWeight: true,
gridArea: true,
gridColumn: true,
gridColumnEnd: true,
gridColumnStart: true,
gridRow: true,
gridRowEnd: true,
gridRowStart: true,
lineHeight: true,
opacity: true,
order: true,
orphans: true,
widows: true,
zIndex: true,
zoom: true
};
if(typeof Proxy!=="undefined"){
jQuery.cssNumber=new Proxy(internalCssNumber, {
get: function(){
migrateWarn("css-number", "jQuery.cssNumber is deprecated");
return Reflect.get.apply(this, arguments);
},
set: function(){
migrateWarn("css-number", "jQuery.cssNumber is deprecated");
return Reflect.set.apply(this, arguments);
}});
}else{
jQuery.cssNumber=internalCssNumber;
}}else{
internalCssNumber=jQuery.cssNumber;
}
function isAutoPx(prop){
return ralphaStart.test(prop) &&
rautoPx.test(prop[ 0 ].toUpperCase() + prop.slice(1) );
}
origFnCss=jQuery.fn.css;
migratePatchFunc(jQuery.fn, "css", function(name, value){
var camelName,
origThis=this;
if(name&&typeof name==="object"&&!Array.isArray(name) ){
jQuery.each(name, function(n, v){
jQuery.fn.css.call(origThis, n, v);
});
return this;
}
if(typeof value==="number"){
camelName=camelCase(name);
if(!isAutoPx(camelName)&&!internalCssNumber[ camelName ]){
migrateWarn("css-number",
"Number-typed values are deprecated for jQuery.fn.css(\"" +
name + "\", value)");
}}
return origFnCss.apply(this, arguments);
}, "css-number");
var origData=jQuery.data;
migratePatchFunc(jQuery, "data", function(elem, name, value){
var curData, sameKeys, key;
if(name&&typeof name==="object"&&arguments.length===2){
curData=jQuery.hasData(elem)&&origData.call(this, elem);
sameKeys={};
for(key in name){
if(key!==camelCase(key) ){
migrateWarn("data-camelCase",
"jQuery.data() always sets/gets camelCased names: " + key);
curData[ key ]=name[ key ];
}else{
sameKeys[ key ]=name[ key ];
}}
origData.call(this, elem, sameKeys);
return name;
}
if(name&&typeof name==="string"&&name!==camelCase(name) ){
curData=jQuery.hasData(elem)&&origData.call(this, elem);
if(curData&&name in curData){
migrateWarn("data-camelCase",
"jQuery.data() always sets/gets camelCased names: " + name);
if(arguments.length > 2){
curData[ name ]=value;
}
return curData[ name ];
}}
return origData.apply(this, arguments);
}, "data-camelCase");
if(jQuery.fx){
var intervalValue, intervalMsg,
oldTweenRun=jQuery.Tween.prototype.run,
linearEasing=function(pct){
return pct;
};
migratePatchFunc(jQuery.Tween.prototype, "run", function(){
if(jQuery.easing[ this.easing ].length > 1){
migrateWarn(
"easing-one-arg",
"'jQuery.easing." + this.easing.toString() + "' should use only one argument"
);
jQuery.easing[ this.easing ]=linearEasing;
}
oldTweenRun.apply(this, arguments);
}, "easing-one-arg");
intervalValue=jQuery.fx.interval;
intervalMsg="jQuery.fx.interval is deprecated";
if(window.requestAnimationFrame){
Object.defineProperty(jQuery.fx, "interval", {
configurable: true,
enumerable: true,
get: function(){
if(!window.document.hidden){
migrateWarn("fx-interval", intervalMsg);
}
if(!jQuery.migrateIsPatchEnabled("fx-interval") ){
return intervalValue;
}
return intervalValue===undefined ? 13:intervalValue;
},
set: function(newValue){
migrateWarn("fx-interval", intervalMsg);
intervalValue=newValue;
}});
}}
var oldLoad=jQuery.fn.load,
oldEventAdd=jQuery.event.add,
originalFix=jQuery.event.fix;
jQuery.event.props=[];
jQuery.event.fixHooks={};
migrateWarnProp(jQuery.event.props, "concat", jQuery.event.props.concat,
"event-old-patch",
"jQuery.event.props.concat() is deprecated and removed");
migratePatchFunc(jQuery.event, "fix", function(originalEvent){
var event,
type=originalEvent.type,
fixHook=this.fixHooks[ type ],
props=jQuery.event.props;
if(props.length){
migrateWarn("event-old-patch",
"jQuery.event.props are deprecated and removed: " + props.join());
while(props.length){
jQuery.event.addProp(props.pop());
}}
if(fixHook&&!fixHook._migrated_){
fixHook._migrated_=true;
migrateWarn("event-old-patch",
"jQuery.event.fixHooks are deprecated and removed: " + type);
if(( props=fixHook.props)&&props.length){
while(props.length){
jQuery.event.addProp(props.pop());
}}
}
event=originalFix.call(this, originalEvent);
return fixHook&&fixHook.filter ?
fixHook.filter(event, originalEvent) :
event;
}, "event-old-patch");
migratePatchFunc(jQuery.event, "add", function(elem, types){
if(elem===window&&types==="load"&&window.document.readyState==="complete"){
migrateWarn("load-after-event",
"jQuery(window).on('load'...) called after load event occurred");
}
return oldEventAdd.apply(this, arguments);
}, "load-after-event");
jQuery.each([ "load", "unload", "error" ], function(_, name){
migratePatchFunc(jQuery.fn, name, function(){
var args=Array.prototype.slice.call(arguments, 0);
if(name==="load"&&typeof args[ 0 ]==="string"){
return oldLoad.apply(this, args);
}
migrateWarn("shorthand-removed-v3",
"jQuery.fn." + name + "() is deprecated");
args.splice(0, 0, name);
if(arguments.length){
return this.on.apply(this, args);
}
this.triggerHandler.apply(this, args);
return this;
}, "shorthand-removed-v3");
});
jQuery.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(_i, name){
migratePatchAndWarnFunc(jQuery.fn, name, function(data, fn){
return arguments.length > 0 ?
this.on(name, null, data, fn) :
this.trigger(name);
},
"shorthand-deprecated-v3",
"jQuery.fn." + name + "() event shorthand is deprecated");
});
jQuery(function(){
jQuery(window.document).triggerHandler("ready");
});
jQuery.event.special.ready={
setup: function(){
if(this===window.document){
migrateWarn("ready-event", "'ready' event is deprecated");
}}
};
migratePatchAndWarnFunc(jQuery.fn, "bind", function(types, data, fn){
return this.on(types, null, data, fn);
}, "pre-on-methods", "jQuery.fn.bind() is deprecated");
migratePatchAndWarnFunc(jQuery.fn, "unbind", function(types, fn){
return this.off(types, null, fn);
}, "pre-on-methods", "jQuery.fn.unbind() is deprecated");
migratePatchAndWarnFunc(jQuery.fn, "delegate", function(selector, types, data, fn){
return this.on(types, selector, data, fn);
}, "pre-on-methods", "jQuery.fn.delegate() is deprecated");
migratePatchAndWarnFunc(jQuery.fn, "undelegate", function(selector, types, fn){
return arguments.length===1 ?
this.off(selector, "**") :
this.off(types, selector||"**", fn);
}, "pre-on-methods", "jQuery.fn.undelegate() is deprecated");
migratePatchAndWarnFunc(jQuery.fn, "hover", function(fnOver, fnOut){
return this.on("mouseenter", fnOver).on("mouseleave", fnOut||fnOver);
}, "pre-on-methods", "jQuery.fn.hover() is deprecated");
var rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
makeMarkup=function(html){
var doc=window.document.implementation.createHTMLDocument("");
doc.body.innerHTML=html;
return doc.body&&doc.body.innerHTML;
},
warnIfChanged=function(html){
var changed=html.replace(rxhtmlTag, "<$1></$2>");
if(changed!==html&&makeMarkup(html)!==makeMarkup(changed) ){
migrateWarn("self-closed-tags",
"HTML tags must be properly nested and closed: " + html);
}};
jQuery.UNSAFE_restoreLegacyHtmlPrefilter=function(){
jQuery.migrateEnablePatches("self-closed-tags");
};
migratePatchFunc(jQuery, "htmlPrefilter", function(html){
warnIfChanged(html);
return html.replace(rxhtmlTag, "<$1></$2>");
}, "self-closed-tags");
jQuery.migrateDisablePatches("self-closed-tags");
var origOffset=jQuery.fn.offset;
migratePatchFunc(jQuery.fn, "offset", function(){
var elem=this[ 0 ];
if(elem&&(!elem.nodeType||!elem.getBoundingClientRect) ){
migrateWarn("offset-valid-elem", "jQuery.fn.offset() requires a valid DOM element");
return arguments.length ? this:undefined;
}
return origOffset.apply(this, arguments);
}, "offset-valid-elem");
if(jQuery.ajax){
var origParam=jQuery.param;
migratePatchFunc(jQuery, "param", function(data, traditional){
var ajaxTraditional=jQuery.ajaxSettings&&jQuery.ajaxSettings.traditional;
if(traditional===undefined&&ajaxTraditional){
migrateWarn("param-ajax-traditional",
"jQuery.param() no longer uses jQuery.ajaxSettings.traditional");
traditional=ajaxTraditional;
}
return origParam.call(this, data, traditional);
}, "param-ajax-traditional");
}
migratePatchAndWarnFunc(jQuery.fn, "andSelf", jQuery.fn.addBack, "andSelf",
"jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()");
if(jQuery.Deferred){
var oldDeferred=jQuery.Deferred,
tuples=[
[ "resolve", "done", jQuery.Callbacks("once memory"),
jQuery.Callbacks("once memory"), "resolved" ],
[ "reject", "fail", jQuery.Callbacks("once memory"),
jQuery.Callbacks("once memory"), "rejected" ],
[ "notify", "progress", jQuery.Callbacks("memory"),
jQuery.Callbacks("memory") ]
];
migratePatchFunc(jQuery, "Deferred", function(func){
var deferred=oldDeferred(),
promise=deferred.promise();
function newDeferredPipe(){
var fns=arguments;
return jQuery.Deferred(function(newDefer){
jQuery.each(tuples, function(i, tuple){
var fn=typeof fns[ i ]==="function"&&fns[ i ];
deferred[ tuple[ 1 ] ](function(){
var returned=fn&&fn.apply(this, arguments);
if(returned&&typeof returned.promise==="function"){
returned.promise()
.done(newDefer.resolve)
.fail(newDefer.reject)
.progress(newDefer.notify);
}else{
newDefer[ tuple[ 0 ] + "With" ](
this===promise ? newDefer.promise():this,
fn ? [ returned ]:arguments
);
}});
});
fns=null;
}).promise();
}
migratePatchAndWarnFunc(deferred, "pipe", newDeferredPipe, "deferred-pipe",
"deferred.pipe() is deprecated");
migratePatchAndWarnFunc(promise, "pipe", newDeferredPipe, "deferred-pipe",
"deferred.pipe() is deprecated");
if(func){
func.call(deferred, deferred);
}
return deferred;
}, "deferred-pipe");
jQuery.Deferred.exceptionHook=oldDeferred.exceptionHook;
}
return jQuery;
});
document.addEventListener("DOMContentLoaded", function(){
var lastScrollTop=0;
window.addEventListener('scroll', function(){
var st=window.pageYOffset||document.documentElement.scrollTop;
if(st > lastScrollTop){
document.getElementById('header').classList.add('scroll-down');
}else if(st < lastScrollTop){
document.getElementById('header').classList.remove('scroll-down');
}
lastScrollTop=st <=0 ? 0:st;
if(window.scrollY > 100){
document.getElementById('header').classList.add('cs-header-fixed-top');
document.body.classList.add('header-is-fixed');
}else{
document.getElementById('header').classList.remove('cs-header-fixed-top');
document.body.style.paddingTop='0';
document.body.classList.remove('header-is-fixed');
}});
document.querySelectorAll('.cs-tab').forEach((el)=> {
el.addEventListener('click', function (event){
const list=document.getElementsByClassName('cs-tab');
for (let item of list){
item.dataset.selected='false';
}
const list_tab=document.getElementsByClassName('cs-post-tab');
for (let item of list_tab){
item.classList.add('d-none');
}
document.getElementById(event.target.getAttribute('data-category')).classList.remove('d-none');
event.target.setAttribute('data-selected', 'true');
console.log(event.target.getAttribute('data-selected'))
})
})
});
document.addEventListener("DOMContentLoaded", function(){
(function (){
'use strict'
var forms=document.querySelectorAll('.needs-validation')
Array.prototype.slice.call(forms)
.forEach(function (form){
form.addEventListener('submit', function (event){
if(!form.checkValidity()){
event.preventDefault()
event.stopPropagation()
}
form.classList.add('was-validated')
}, false)
})
})()
var form=document.getElementById('sendRequest');
if(form){
form.addEventListener('submit', function(event){
document.getElementById('spinner').innerHTML='<div class="spinner-border" role="status"><span class="sr-only"></span></div>'
document.getElementById('submitButton').classList.add('disabled')
if(form.checkValidity()===false){
event.preventDefault();
event.stopPropagation();
document.getElementById('spinner').innerHTML='';
document.getElementById('submitButton').classList.remove('disabled');
}else{
form.classList.add('was-validated');
event.preventDefault();
event.stopPropagation();
grecaptcha.ready(function(){
grecaptcha.execute('6Lcn69kgAAAAABT82xVWxshJNDp7RcrSVLxQsT17', {action: 'submit'}).then(function(token){
var formData=new FormData()
formData.append('action', document.getElementById('ActionForm').value)
formData.append('user_name', document.getElementById('InfoFormName').value)
formData.append('user_course',  document.getElementById('InfoFormCourse')?.value ?? '')
formData.append('user_course_link', document.getElementById('InfoFormCourseLink')?.value ?? '')
formData.append('user_surname',  document.getElementById('InfoFormSurname').value)
formData.append('user_phone', document.getElementById('InfoFormPhone')?.value ?? '')
formData.append('user_email', document.getElementById('InfoFormEmail').value)
formData.append('user_newsletter', document.getElementById('InfoFormNewsletter').checked ?? false)
formData.append('user_message', document.getElementById('InfoFormMessage')?.value ?? '')
if(document.getElementById('sendRequestFile')){
for (let i=0; i < document.getElementById('sendRequestFile').files.length; i++){
let file=document.getElementById('sendRequestFile').files.item(i);
console.log(file.name);
formData.append('user_file_' +  i, file);
}
formData.append('user_file', document.getElementById('sendRequestFile').files.length);
}
if(document.getElementById('InfoFormOrder')){
formData.append('user_order', document.getElementById('InfoFormOrder').value ?? '');
}
var ajaxurl=document.getElementById('adminUrl').value;
$.ajax({
method: 'post',
processData: false,
contentType: false,
cache: false,
data: formData,
enctype: 'multipart/form-data',
url: ajaxurl,
success: function (response){
console.log(response.body)
document.getElementById('spinner').innerHTML=''
setTimeout(()=> {
document.getElementById('successResponse').innerHTML='Email inviata con successo'
document.getElementById('successResponseContainer').classList.remove('d-none')
}, 600)
document.getElementById('successResponseContainer').classList.add('d-none')
document.getElementById('successResponse').innerHTML=''
document.getElementById('submitButton').classList.remove('disabled')
}});
});
});
}});
}
var form_newsletter=document.getElementById('sendRequestNewsletter');
if(form_newsletter){
form_newsletter.addEventListener('submit', function(event){
document.getElementById('spinnerNewsletter').innerHTML='<div class="spinner-border" role="status"><span class="sr-only"></span></div>'
document.getElementById('submitButton').classList.add('disabled')
if(form_newsletter.checkValidity()===false){
event.preventDefault();
event.stopPropagation();
document.getElementById('spinnerNewsletter').innerHTML='';
document.getElementById('submitButton').classList.remove('disabled');
}else{
form_newsletter.classList.add('was-validated');
event.preventDefault();
event.stopPropagation();
var formData=new FormData();
formData.append('action', 'send_newsletter')
formData.append('email', document.getElementById('newsletterEmail').value)
var ajaxurl=document.getElementById('adminUrl').value;
$.ajax({
method: 'post',
processData: false,
contentType: false,
cache: false,
data: formData,
enctype: 'multipart/form-data',
url: ajaxurl,
success: function (response){
document.getElementById('spinnerNewsletter').innerHTML=''
setTimeout(()=> {
document.getElementById('successResponseNewsletter').innerHTML='Iscrizione effettuata'
document.getElementById('successResponseNewsletterContainer').classList.remove('d-none')
}, 600)
document.getElementById('successResponseNewsletterContainer').classList.add('d-none')
document.getElementById('successResponseNewsletter').innerHTML=''
document.getElementById('submitButton').classList.remove('disabled')
}});
}});
}
var form_newsletter_modal=document.getElementById('sendRequestNewsletterModal');
if(form_newsletter_modal){
form_newsletter_modal.addEventListener('submit', function(event){
document.getElementById('spinnerNewsletterModal').innerHTML='<div class="spinner-border" role="status"><span class="sr-only"></span></div>'
document.getElementById('submitButton').classList.add('disabled')
if(form_newsletter_modal.checkValidity()===false){
event.preventDefault();
event.stopPropagation();
document.getElementById('spinnerNewsletterModal').innerHTML='';
}else{
form_newsletter_modal.classList.add('was-validated');
event.preventDefault();
event.stopPropagation();
var formData=new FormData();
formData.append('action', 'send_newsletter')
formData.append('email', document.getElementById('newsletterEmailModal').value)
var ajaxurl=document.getElementById('adminUrl').value;
$.ajax({
method: 'post',
processData: false,
contentType: false,
cache: false,
data: formData,
enctype: 'multipart/form-data',
url: ajaxurl,
success: function (response){
document.getElementById('spinnerNewsletterModal').innerHTML=''
setTimeout(()=> {
document.getElementById('successResponseNewsletterModal').innerHTML='Iscrizione effettuata'
document.getElementById('successResponseNewsletterModalContainer').classList.remove('d-none')
}, 600)
document.getElementById('successResponseNewsletterModalContainer').classList.add('d-none')
document.getElementById('successResponseNewsletterModal').innerHTML=''
document.getElementById('submitButtonModal').classList.remove('disabled')
}});
}});
}
const files=document.getElementById('sendRequestFile');
if(files){
files.addEventListener('change', (event)=> {
document.getElementById('fileUploaded').innerHTML='';
for (const [key, value] of Object.entries(event.target.files)){
document.getElementById('fileUploaded').innerHTML +='<p class="mb-1" data-file="' + key + '">' + value.name + '</p>';
}})
}})
function dropHandler(ev){
console.log('File(s) dropped');
ev.preventDefault();
if(ev.dataTransfer.items){
for (let i=0; i < ev.dataTransfer.items.length; i++){
if(ev.dataTransfer.items[i].kind==='file'){
document.getElementById('drop_zone').style.border="";
document.getElementById('drop_zone').style.backgroundColor="";
const file=ev.dataTransfer.items[i].getAsFile();
document.getElementById('sendRequestFile').files=ev.dataTransfer.files;
console.log('... file[' + i + '].name=' + file.name);
document.getElementById('fileUploaded').innerHTML='';
for (const [key, value] of Object.entries(document.getElementById('sendRequestFile').files)){
document.getElementById('fileUploaded').innerHTML +='<p class="mb-1" data-file="' + key + '">' + value.name + '</p>';
}}
}}else{
for (let i=0; i < ev.dataTransfer.files.length; i++){
console.log('... file[' + i + '].name=' + ev.dataTransfer.files[i].name);
}}
}
function dragOverHandler(ev){
console.log('File(s) in drop zone');
ev.preventDefault();
document.getElementById('drop_zone').style.border="2px solid #56af43";
document.getElementById('drop_zone').style.backgroundColor="#868686";
}
function clickHandler(ev){
document.getElementById('sendRequestFile').click();
};
document.addEventListener("DOMContentLoaded", function (){
if(!document.body.classList.contains("position-loaded")){
document.body.classList.add("position-loaded");
const currentPositions=document.querySelectorAll(".current-position");
for (let i=0; i < currentPositions.length; i++){
currentPositions[i].addEventListener("click", function (e){
navigator.geolocation.getCurrentPosition(function (pos){
var latlng=pos.coords.latitude + "," + pos.coords.longitude;
var inputPos =
currentPositions[i].previousElementSibling.querySelector('input[type="text"]'
);
if(inputPos==null){
inputPos =
currentPositions[i].parentNode.querySelector('input[type="text"]'
);
if(inputPos==null){
inputPos =
currentPositions[i].parentNode.parentNode.querySelector('input[type="text"]'
);
}}
if(!inputPos.disabled){
inputPos.value=latlng;
var justPosition=true;
var cta=inputPos.parentNode.parentNode.querySelector(".cta");
if(cta==null){
cta =
inputPos.parentNode.parentNode.parentNode.querySelector(".cta"
);
}
if(!currentPositions[i].classList.contains("just-position")){
justPosition=false;
getLocationLatLng(latlng, inputPos, justPosition);
}
if(justPosition){
inputPos.disabled=true;
cta.classList.add("cta-loading");
}
inputPos.classList.add("input-loading");
}},
function (err){
alert('Non è stato possibile recuperare la tua posizione. Riprova più tardi.');
console.warn(`ERROR(${err.code}): ${err.message}`);
},
{
enableHighAccuracy: false,
timeout: 10000,
maximumAge: 300_000,
}
);
e.preventDefault();
});
var cta=currentPositions[i].parentNode.parentNode.querySelector(".cta");
if(cta==null)
cta =
currentPositions[i].parentNode.parentNode.parentNode.querySelector(".cta"
);
if(cta!=null){
cta.addEventListener("click", function (e){
if(!this.classList.contains("cta-loading")){
var inputPos =
currentPositions[i].previousElementSibling.querySelector('input[type="text"]'
);
if(inputPos==null){
inputPos =
currentPositions[i].parentNode.querySelector('input[type="text"]'
);
if(inputPos==null){
inputPos =
currentPositions[i].parentNode.parentNode.querySelector('input[type="text"]'
);
}}
if(inputPos.value==""){
}else{
this.classList.add("cta-loading");
inputPos.disabled=true;
if(this.classList.contains("landing-shortcode-search")){
getClinics(inputPos, true);
}else{
getClinics(inputPos);
}}
}
e.preventDefault();
});
}}
if(document.getElementById("location-search-input")!=null){
document
.getElementById("location-search-input")
.addEventListener("keydown", function (event){
if(event.keyCode===13){
event.preventDefault();
document.getElementById("location-search-button").click();
}});
}
if(document.getElementById("call-current-position-input")!=null){
document
.getElementById("call-current-position-input")
.addEventListener("keydown", function (event){
if(event.keyCode===13){
event.preventDefault();
document.getElementById("call-current-position-btn").click();
}});
}
if(document.querySelector(".centri input")!=null){
document
.querySelector(".centri input")
.addEventListener("keydown", function (event){
if(event.keyCode===13){
event.preventDefault();
document.querySelector(".centri button").click();
}});
}
var bookingAddresses=document.querySelectorAll(".page-booking input.address"
);
for (let e=0; e < bookingAddresses.length; e++){
bookingAddresses[e].addEventListener("keydown", function (event){
if(event.keyCode===13){
event.preventDefault();
this.parentNode.querySelector("button.booking-search").click();
}});
}
function getLocationLatLng(latlng, input, justPosition){
input.classList.add("input-loading");
var grecaptcha_key=document
.getElementById("g-recaptcha")
.getAttribute("src")
.split("render=")[1];
grecaptcha.ready(function (){
grecaptcha
.execute(grecaptcha_key, { action: "submit" })
.then(function (token){
let myData =
"action=dp_get_location_latlng&g-recaptcha-response=" +
token +
"&latlng=" +
latlng;
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function (){
if(this.readyState==4&&this.status==200){
input.value=xhttp.responseText;
var cta=input.parentNode.parentNode.querySelector(".cta");
if(cta==null)
cta =
input.parentNode.parentNode.parentNode.querySelector(".cta"
);
cta.click();
if(justPosition){
input.disabled=false;
input.classList.remove("input-loading");
var cta=input.parentNode.parentNode.querySelector(".cta");
if(cta==null)
cta =
input.parentNode.parentNode.parentNode.querySelector(".cta"
);
cta.classList.remove("cta-loading");
}}
};
let link=document.getElementById("ajaxurl").getAttribute("href");
xhttp.open("POST", link, true);
xhttp.setRequestHeader("Content-type",
"application/x-www-form-urlencoded; charset=UTF-8"
);
xhttp.send(myData);
});
});
}
function getClinics(input, isShortcode=false){
if(!input.classList.contains("search-nolimit")){
var shortcodeLimit=18;
var shortcodeRange=false;
if(document.querySelector("#shortcode-search-box-container")){
if(input.getAttribute("numero-centri")!=="" &&
input.getAttribute("numero-centri")!==null &&
input.getAttribute("numero-centri")!=false &&
input.getAttribute("numero-centri") > 0
)
shortcodeLimit=input.getAttribute("numero-centri");
}
if(document.querySelector("#shortcode-search-box-container")){
if(input.getAttribute("raggio")!=="" &&
input.getAttribute("raggio")!==null &&
input.getAttribute("raggio")!=false &&
parseFloat(input.getAttribute("raggio").replace(",", ".")) > 0
)
shortcodeRange=Math.floor(parseFloat(input.getAttribute("raggio").replace(",", "."))
);
}
var grecaptcha_key=document
.getElementById("g-recaptcha")
.getAttribute("src")
.split("render=")[1];
grecaptcha.ready(function (){
grecaptcha
.execute(grecaptcha_key, { action: "submit" })
.then(function (token){
let estetica=input.classList.contains("search-estetica")
? "&estetica"
: "";
let count=isShortcode ? "&count=" + shortcodeLimit:"&count=6";
var range=shortcodeRange
? "&range=" + shortcodeRange
: "&range=false";
let myData =
"action=dp_get_clinics&g-recaptcha-response=" +
token +
"&address=" +
input.value +
estetica +
count +
range;
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function (){
if(this.readyState==4&&this.status==200){
var clinics=xhttp.responseText;
input.disabled=false;
input.classList.remove("input-loading");
var cta=input.parentNode.parentNode.querySelector(".cta");
if(cta==null)
cta =
input.parentNode.parentNode.parentNode.querySelector(".cta"
);
cta.classList.remove("cta-loading");
if(isShortcode){
compileClinicsShortcode(clinics, input);
const updatePagedCards=new CustomEvent(
"updatePagedCards",
{
bubbles: true,
cancelable: true,
}
);
document.dispatchEvent(updatePagedCards);
}else{
compileClinics(clinics, input);
}}
};
let link=document
.getElementById("ajaxurl")
.getAttribute("href");
xhttp.open("POST", link, true);
xhttp.setRequestHeader("Content-type",
"application/x-www-form-urlencoded; charset=UTF-8"
);
xhttp.send(myData);
});
});
}else{
compileClinics("", input);
}}
function compileClinics(locations, input){
if(document.querySelector(".section-2.tab-yes .locator-results-mine")!=null
){
document
.querySelector(".section-2.tab-yes .locator-results-mine")
.classList.add("hide");
var resultsContainerEl =
input.parentNode.parentNode.parentNode.querySelector(".locator-results"
);
if(resultsContainerEl!=null){
var itemsTemplate=Handlebars.compile(input.parentNode.parentNode.parentNode.querySelector(".locator-results-html"
).innerHTML
);
var resultItemContext={ locations: JSON.parse(locations) };
resultsContainerEl.innerHTML=itemsTemplate(resultItemContext);
bookingBoxes();
}}else if(!document.body.classList.contains("post-type-archive-centro")
){
var resultsContainerEl =
input.parentNode.parentNode.parentNode.querySelector(".locator-results"
);
if(input.closest(".offcanvas-body")){
var newQueryString=editQueryParameters();
var link=input
.closest(".offcanvas-body")
.querySelector(".offcanvas-locator-button");
link.href =
location.protocol +
"//" +
location.hostname +
"/centri/" +
newQueryString +
"location=" +
encodeURIComponent(input.value);
if(!link.classList.contains("show")){
link.classList.add("show");
}}
if(resultsContainerEl!=null){
var itemsTemplate=Handlebars.compile(input.parentNode.parentNode.parentNode.querySelector(".locator-results-html"
).innerHTML
);
var resultItemContext={ locations: JSON.parse(locations) };
resultsContainerEl.innerHTML=itemsTemplate(resultItemContext);
bookingBoxes();
}}else if(document.body.classList.contains("post-type-archive-centro")){
var resultsContainerEl =
input.parentNode.parentNode.parentNode.querySelector(".locator-results"
);
if(input.closest(".offcanvas-body")){
var newQueryString=editQueryParameters();
var link=input
.closest(".offcanvas-body")
.querySelector(".offcanvas-locator-button");
link.href =
location.protocol +
"//" +
location.hostname +
"/centri/" +
newQueryString +
"location=" +
encodeURIComponent(input.value);
if(!link.classList.contains("show")){
link.classList.add("show");
}}
if(input.closest(".tab-content.centri")){
var newQueryString=editQueryParameters();
const stateObj={};
var newURI =
location.protocol +
"//" +
location.hostname +
"/centri/" +
newQueryString +
"location=" +
encodeURIComponent(input.value);
history.replaceState(stateObj, "", newURI);
}
if(resultsContainerEl!=null){
var itemsTemplate=Handlebars.compile(input.parentNode.parentNode.parentNode.querySelector(".locator-results-html"
).innerHTML
);
var resultItemContext={ locations: JSON.parse(locations) };
resultsContainerEl.innerHTML=itemsTemplate(resultItemContext);
bookingBoxes();
}}
}
function editQueryParameters(){
var queryString=window.location.search;
var urlparts=queryString.substring(1).split("&");
newQueryString="?";
if(queryString!==null||queryString!==""){
for (var i=0; i < urlparts.length; i++){
if(urlparts[i].includes("location")) continue;
newQueryString=newQueryString + urlparts[i] + "&";
}}
return newQueryString;
}
function compileClinicsShortcode(locations, input){
Handlebars.registerHelper("chunk", function (context, options){
let out="";
const size=6;
for (let i=0; i < context.length; i +=size){
out +='<div class="col-single-box item">';
out +=context
.slice(i, i + size)
.map(options.fn)
.join("");
out +="</div>";
}
return out;
});
var itemsTemplate=Handlebars.compile(input.parentNode.parentNode.parentNode.querySelector(".locator-results-html-desk"
).innerHTML
);
var resultItemContext={ locations: JSON.parse(locations) };
var resultsContainerEl=input
.closest("#shortcode-maps-container")
.querySelector(".locator-results-desk");
if(resultsContainerEl!=null){
resultsContainerEl.innerHTML=itemsTemplate(resultItemContext);
}
var itemsTemplate=Handlebars.compile(input.parentNode.parentNode.parentNode.querySelector(".locator-results-html"
).innerHTML
);
var resultsContainerEl=input
.closest("#shortcode-maps-container")
.querySelector(".locator-results-mobile");
if(resultsContainerEl!=null){
resultsContainerEl.innerHTML=itemsTemplate(resultItemContext);
}}
function updateDots(event){
var totalItems=event.item.count;
var currentItem=event.item.index + 1;
if($(event.target).hasClass("owl-loaded")){
$(event.target)
.find(".owl-dot")
.each(function (index){
$(this).text(index + 1);
});
}}
}});
function bookingBoxes(){
const pageBooking=document.querySelector(".page-booking");
if(pageBooking!=null){
var formSection2_yes=pageBooking.querySelector(".booking-section.section-2.tab-yes"
);
var formSection2_no=pageBooking.querySelector(".booking-section.section-2.tab-no"
);
var formSection3=pageBooking.querySelector(".booking-section.section-3");
var formSection4=pageBooking.querySelector(".booking-section.section-4");
var bookingLocations=formSection2_yes.querySelectorAll(".box-location");
for (let i=0; i < bookingLocations.length; i++){
if(bookingLocations[i].classList.contains("has-event")){
continue;
}
bookingLocations[i].addEventListener("click", function (){
this.classList.add("has-event");
var code=this.dataset.code;
title=this.querySelector(".box-location-title").innerHTML;
address=this.querySelector(".box-location-address");
if(address!=null){
address=address.innerHTML;
formSection2_yes.querySelector(".details p").innerHTML =
title + "<br>" + address;
}else{
formSection2_yes.querySelector(".details p").innerHTML=title;
}
formSection2_yes.classList.remove("active");
formSection2_yes.classList.add("done");
formSection2_no.querySelector(".details p").innerHTML=title;
formSection2_no.classList.remove("active");
formSection2_no.classList.add("done");
if(formSection3!=null){
formSection3.classList.add("active");
formSection4.classList.remove("active");
}else{
formSection4.classList.add("active");
}
bookingData.location={};
bookingData.location.code=code;
bookingData.location.title=title;
bookingData.location.address=address;
dataLayer.push({
event: "FP_step3_centro",
FP_step3_centro_value: title,
FP_step1_paziente_value: bookingData.customer ? "si":"no",
});
});
}}
};
jQuery(function(){
const owlReview=jQuery(".cs-review");
const owlNews=jQuery(".cs-news");
const owlTratt=jQuery(".cs-tratt");
const owlPrimary=jQuery(".cs-primary");
const owlPrimaryContent=jQuery(".cs-primary-content");
if(owlReview.length){
owlReview.owlCarousel({
autoplay: false,
loop: true,
margin: 20,
dots: true,
nav: true,
slideTransition: "linear",
responsive: {
0: {
items: 1,
stagePadding: 70
},
768: {
items: 3,
stagePadding: 0
},
992: {
items: 3
}},
navText:[
`<span class="icon-arrow_left"></span>`,
`<span class="icon-arrow_right"></span>`
]
});
}
if(owlNews.length){
owlNews.each(function(){
draggable=jQuery(this).find('.dp-card-review').length > 2;
jQuery(this).owlCarousel({
autoplay: false,
loop: draggable,
margin: 20,
dots: true,
nav: true,
slideTransition: "linear",
touchDrag:true,
mouseDrag:draggable,
responsive: {
0: {
items: 1
},
768: {
items: 2
},
992: {
items: 2
}},
navText:[
`<span class="icon-arrow_left"></span>`,
`<span class="icon-arrow_right"></span>`
]
});
if(!draggable){
jQuery(this).closest('.container').find('.row:first-child').remove();
}});
}
if(owlTratt.length){
owlTratt.owlCarousel({
autoplay: false,
loop: true,
margin: 20,
dots: true,
nav: true,
slideTransition: "linear",
responsive: {
0: {
items: 1,
stagePadding: 70
},
768: {
items: 3,
stagePadding: 0
},
992: {
items: 4
}},
navText:[
`<span class="icon-arrow_left"></span>`,
`<span class="icon-arrow_right"></span>`
]
});
}
if(owlPrimary.length){
draggable=owlPrimary.find('.slide-image-container').length > 1;
owlPrimary.owlCarousel({
autoplay: false,
loop: false,
dots: true,
nav: true,
slideTransition: "linear",
onTranslated: setSlide,
touchDrag:draggable,
mouseDrag:draggable,
responsive: {
0: {
items: 1
},
},
navText:[
`<span class="icon-arrow_left"></span>`,
`<span class="icon-arrow_right"></span>`
]
});
}
if(owlPrimaryContent.length){
owlPrimaryContent.owlCarousel({
autoplay: false,
loop: false,
dots: false,
nav: false,
touchDrag: false,
mouseDrag: false,
slideTransition: "linear",
responsive: {
0: {
items: 1
},
},
navText:[
`<span class="icon-arrow_left"></span>`,
`<span class="icon-arrow_right"></span>`
]
});
if(jQuery('#primaryContentSlide .owl-item').length > 1||jQuery('body').hasClass('home')){
jQuery('#primarySlide + .dp-slider-content').css({'visibility': 'hidden', 'position': 'absolute'});
jQuery('#primarySlide + .dp-slider-content').show();
setTimeout(function(){
jQuery('#primarySlide + .dp-slider-content').css({'visibility': '', 'position': ''});
}, 500);
}}
function setSlide(event){
owlPrimaryContent.trigger("to.owl.carousel", event.page.index);
}
if(document.getElementById('trattRight')){
document.getElementById('trattRight').addEventListener('click', ()=> {
owlTratt.trigger("prev.owl.carousel");
});
}
if(document.getElementById('trattLeft')){
document.getElementById('trattLeft').addEventListener('click', ()=> {
owlTratt.trigger("next.owl.carousel");
});
}
if(document.getElementById('newsRight')){
document.getElementById('newsRight').addEventListener('click', ()=> {
owlNews.trigger("prev.owl.carousel");
});
}
if(document.getElementById('newsLeft')){
document.getElementById('newsLeft').addEventListener('click', ()=> {
owlNews.trigger("next.owl.carousel");
});
}
if(document.getElementById('newsLeft')){
document.getElementById('newsSecondRight').addEventListener('click', ()=> {
owlNews.trigger("prev.owl.carousel");
});
}
if(document.getElementById('newsSecondLeft')){
document.getElementById('newsSecondLeft').addEventListener('click', ()=> {
owlNews.trigger("next.owl.carousel");
});
}
if(document.getElementById('aboutMeRight')){
document.getElementById('aboutMeRight').addEventListener('click', ()=> {
owlReview.trigger("prev.owl.carousel");
});
}
if(document.getElementById('aboutMeLeft')){
document.getElementById('aboutMeLeft').addEventListener('click', ()=> {
owlReview.trigger("next.owl.carousel");
});
}
if(document.getElementById('primaryLeft')){
document.getElementById('primaryLeft').addEventListener('click', ()=> {
owlPrimary.trigger("next.owl.carousel");
owlPrimaryContent.trigger("next.owl.carousel");
});
}
if(document.getElementById('primaryRight')){
document.getElementById('primaryRight').addEventListener('click', ()=> {
owlPrimary.trigger("prev.owl.carousel");
owlPrimaryContent.trigger("prev.owl.carousel");
});
}
window.addEventListener('resize', checkSliderCard, true);
checkSliderCard();
function checkSliderCard(){
var dpCardSlider=document.querySelector('.dp-card-slider');
var owlResizer=document.querySelector('.owl-resizer');
if(dpCardSlider!=null){
var setCardOnTop=false;
if(window.outerWidth >=992){
if(window.outerHeight < 800){
setCardOnTop=true;
}}
if(setCardOnTop){
owlResizer.classList.add('active');
}else{
owlResizer.classList.remove('active');
}}
}});
function initMap(){
var mapContainer=document.querySelector('.map-container');
if(mapContainer!=null){
var gmapsKey=new URLSearchParams(document.getElementById('g-maps').getAttribute('src').split('?')[1]);
if(document.querySelector('.page-centri')!=null){
centriInitMap();
}else{
var title=mapContainer.querySelector('h1')!=null ? mapContainer.querySelector('h1').innerHTML:'';
var lat=parseFloat(mapContainer.dataset.lat);
var lng=parseFloat(mapContainer.dataset.lng);
centroInitMap(gmapsKey.get('key'), title, lat, lng);
}}
var options={
componentRestrictions: {country: "it"}};
var autocomplete=document.querySelectorAll('.autocomplete');
for(let i=0; i<autocomplete.length; i++){
new google.maps.places.Autocomplete(autocomplete[i], options);
}};
function centroInitMap(mapsApiKey, title, lat, lng){
const mapStyle=[
{
"featureType": "water",
"elementType": "geometry",
"stylers": [
{
"color": "#193341"
}
]
},
{
"featureType": "landscape",
"elementType": "geometry",
"stylers": [
{
"color": "#2c5a71"
}
]
},
{
"featureType": "road",
"elementType": "geometry",
"stylers": [
{
"color": "#29768a"
},
{
"lightness": -37
}
]
},
{
"featureType": "poi",
"elementType": "geometry",
"stylers": [
{
"color": "#406d80"
}
]
},
{
"featureType": "transit",
"elementType": "geometry",
"stylers": [
{
"color": "#406d80"
}
]
},
{
"elementType": "labels.text.stroke",
"stylers": [
{
"visibility": "on"
},
{
"color": "#3e606f"
},
{
"weight": 2
},
{
"gamma": 0.84
}
]
},
{
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#ffffff"
}
]
},
{
"featureType": "administrative",
"elementType": "geometry",
"stylers": [
{
"weight": 0.6
},
{
"color": "#1a3541"
}
]
},
{
"elementType": "labels.icon",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "poi.park",
"elementType": "geometry",
"stylers": [
{
"color": "#2c5a71"
}
]
}
];
const configuration={
"locations": [
{"title":title,"coords":{"lat":lat,"lng":lng}}
],
"mapOptions": {"center":{"lat":lat,"lng":lng},"fullscreenControl":true,"mapTypeControl":false,"streetViewControl":false,"zoom":16,"zoomControl":true,"maxZoom":16, "mapTypeId": "myStyle"},
"mapsApiKey": mapsApiKey
};
const locator=this;
locator.locations=configuration.locations||[];
locator.capabilities=configuration.capabilities||{};
const mapEl=document.getElementById('centro-map');
if(mapEl==null)
return;
const panelEl=document.getElementById('locations-panel');
locator.panelListEl=document.getElementById('locations-panel-list');
const resultsContainerEl=document.getElementById('location-results-list');
locator.searchLocation=null;
locator.searchLocationMarker=null;
locator.selectedLocationIdx=null;
locator.userCountry=null;
locator.map=new google.maps.Map(mapEl, configuration.mapOptions);
locator.map.mapTypes.set('myStyle', new google.maps.StyledMapType(mapStyle, { name: 'Map Style' }));
const selectResultItem=function(locationIdx, panToMarker, scrollToResult){
locator.selectedLocationIdx=locationIdx;
for (let locationElem of resultsContainerEl.children){
locationElem.classList.remove('selected');
if(getResultIndex(locationElem)===locator.selectedLocationIdx){
locationElem.classList.add('selected');
if(scrollToResult){
panelEl.scrollTop=locationElem.offsetTop;
}}
}
if(panToMarker&&(locationIdx!=null)){
locator.map.panTo(locator.locations[locationIdx].coords);
}};
var svg=[
'<?xml version="1.0"?>',
'<svg width="26" height="31" viewBox="0 0 26 31" fill="none" xmlns="http://www.w3.org/2000/svg">',
'<path d="M25.2329 12.6165C25.2329 22.4293 12.6165 30.8402 12.6165 30.8402C12.6165 30.8402 0 22.4293 0 12.6165C4.98607e-08 9.27036 1.32923 6.06132 3.69527 3.69527C6.06132 1.32923 9.27036 0 12.6165 0C15.9625 0 19.1716 1.32923 21.5376 3.69527C23.9037 6.06132 25.2329 9.27036 25.2329 12.6165Z" fill="#79E2D9"/>',
'<path d="M12.6166 16.822C14.9392 16.822 16.8221 14.9391 16.8221 12.6165C16.8221 10.2939 14.9392 8.41104 12.6166 8.41104C10.294 8.41104 8.41113 10.2939 8.41113 12.6165C8.41113 14.9391 10.294 16.822 12.6166 16.822Z" fill="#215682"/>',
'</svg>'
].join('\n');
const markers=locator.locations.map(function(location, index){
const marker=new google.maps.Marker({
position: location.coords,
map: locator.map,
title: location.title,
icon: { url: 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg) },
optimized: false
});
marker.addListener('click', function(){
selectResultItem(index, false, true);
});
return marker;
});
locator.updateBounds=function(){
const bounds=new google.maps.LatLngBounds();
if(locator.searchLocationMarker){
bounds.extend(locator.searchLocationMarker.getPosition());
}
for (let i=0; i < markers.length; i++){
bounds.extend(markers[i].getPosition());
}
locator.map.fitBounds(bounds);
};
if(locator.locations.length){
locator.updateBounds();
}
const getLocationDistance=function(location){
if(!locator.searchLocation) return null;
if(location.travelDistanceValue!=null){
return location.travelDistanceValue;
}
return google.maps.geometry.spherical.computeDistanceBetween(new google.maps.LatLng(location.coords),
locator.searchLocation.location);
};
const getResultIndex=function(elem){
return parseInt(elem.getAttribute('data-location-index'));
};
locator.renderResultsList=function(){
let locations=locator.locations.slice();
for (let i=0; i < locations.length; i++){
locations[i].index=i;
}
if(locator.searchLocation){
locations.sort(function(a, b){
return getLocationDistance(a) - getLocationDistance(b);
});
}};
locator.renderResultsList();
if(window.innerWidth > 991){
const center=new google.maps.LatLng(lat+0.0015, lng-0.005);
locator.map.panTo(center);
}}
jQuery(function(){
const owlOpinioni=jQuery(".owl-carousel.dp-opinioni");
const owlCentroImmagini=jQuery(".dp-centro-immagini");
const owlStaff=jQuery(".dp-staff");
const owlTreatments=jQuery(".dp-treatments");
if(owlOpinioni.length){
owlOpinioni.owlCarousel({
autoplay: false,
loop: true,
margin: 20,
dots: true,
nav: true,
slideTransition: "linear",
responsive: {
0: {
items: 1
},
768: {
items: 3
},
992: {
items: 3
}},
navText:[
`<span class="icon-arrow_left"></span>`,
`<span class="icon-arrow_right"></span>`
]
});
}
if(owlCentroImmagini.length){
owlCentroImmagini.owlCarousel({
autoplay: false,
loop: true,
margin: 0,
dots: true,
nav: false,
slideTransition: "linear",
items: 1
});
}
if(owlStaff.length){
draggable=owlStaff.find('.dp-card-review').length > 4;
owlStaff.owlCarousel({
autoplay: false,
loop: true,
margin: 20,
dots: true,
nav: true,
slideTransition: "linear",
responsive: {
0: {
items: 1,
stagePadding: 70
},
768: {
items: 3,
stagePadding: 0
},
992: {
items: 4
}},
navText:[
`<span class="icon-arrow_left"></span>`,
`<span class="icon-arrow_right"></span>`
]
});
if(!draggable){
jQuery('#staffRight, #staffLeft').removeClass('d-md-block').hide();
}}
if(owlTreatments.length){
draggable=owlTreatments.find('.dp-card-review').length > 4;
owlTreatments.owlCarousel({
autoplay: false,
loop: true,
margin: 20,
dots: true,
nav: true,
slideTransition: "linear",
responsive: {
0: {
items: 1,
stagePadding: 70
},
768: {
items: 4,
stagePadding: 0
}},
navText:[
`<span class="icon-arrow_left"></span>`,
`<span class="icon-arrow_right"></span>`
]
});
if(!draggable){
jQuery('#treatmentsRight, #treatmentsLeft').removeClass('d-md-block').hide();
}}
document.querySelectorAll('[id="opinioniRight"]').forEach((btn)=> {
btn.addEventListener('click', ()=> owlOpinioni.trigger("prev.owl.carousel"));
});
document.querySelectorAll('[id="opinioniLeft"]').forEach((btn)=> {
btn.addEventListener('click', ()=> owlOpinioni.trigger("next.owl.carousel"));
});
if(document.getElementById('staffRight')){
document.getElementById('staffRight').addEventListener('click', ()=> {
owlStaff.trigger("prev.owl.carousel");
});
}
if(document.getElementById('staffLeft')){
document.getElementById('staffLeft').addEventListener('click', ()=> {
owlStaff.trigger("next.owl.carousel");
});
}
if(document.getElementById('treatmentsRight')){
document.getElementById('treatmentsRight').addEventListener('click', ()=> {
owlTreatments.trigger("prev.owl.carousel");
});
}
if(document.getElementById('treatmentsLeft')){
document.getElementById('treatmentsLeft').addEventListener('click', ()=> {
owlTreatments.trigger("next.owl.carousel");
});
}});
function centriInitMap(lat=null, lng=null){
const mapStyle=[
{
"featureType": "water",
"elementType": "geometry",
"stylers": [
{
"color": "#193341"
}
]
},
{
"featureType": "landscape",
"elementType": "geometry",
"stylers": [
{
"color": "#2c5a71"
}
]
},
{
"featureType": "road",
"elementType": "geometry",
"stylers": [
{
"color": "#29768a"
},
{
"lightness": -37
}
]
},
{
"featureType": "poi",
"elementType": "geometry",
"stylers": [
{
"color": "#406d80"
}
]
},
{
"featureType": "transit",
"elementType": "geometry",
"stylers": [
{
"color": "#406d80"
}
]
},
{
"elementType": "labels.text.stroke",
"stylers": [
{
"visibility": "on"
},
{
"color": "#3e606f"
},
{
"weight": 2
},
{
"gamma": 0.84
}
]
},
{
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#ffffff"
}
]
},
{
"featureType": "administrative",
"elementType": "geometry",
"stylers": [
{
"weight": 0.6
},
{
"color": "#1a3541"
}
]
},
{
"elementType": "labels.icon",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "poi.park",
"elementType": "geometry",
"stylers": [
{
"color": "#2c5a71"
}
]
}
];
var svg=[
'<?xml version="1.0"?>',
'<svg width="26" height="31" viewBox="0 0 26 31" fill="none" xmlns="http://www.w3.org/2000/svg">',
'<path d="M25.2329 12.6165C25.2329 22.4293 12.6165 30.8402 12.6165 30.8402C12.6165 30.8402 0 22.4293 0 12.6165C4.98607e-08 9.27036 1.32923 6.06132 3.69527 3.69527C6.06132 1.32923 9.27036 0 12.6165 0C15.9625 0 19.1716 1.32923 21.5376 3.69527C23.9037 6.06132 25.2329 9.27036 25.2329 12.6165Z" fill="#79E2D9"/>',
'<path d="M12.6166 16.822C14.9392 16.822 16.8221 14.9391 16.8221 12.6165C16.8221 10.2939 14.9392 8.41104 12.6166 8.41104C10.294 8.41104 8.41113 10.2939 8.41113 12.6165C8.41113 14.9391 10.294 16.822 12.6166 16.822Z" fill="#215682"/>',
'</svg>'
].join('\n');
var mapOptions={
zoom: 6,
center: {lat: 42.655583, lng: 12.846389},
mapTypeId: "myStyle",
fullscreenControl: true,
mapTypeControl: false,
streetViewControl: false
};
if(lat!=null&&lng!=null){
mapOptions.zoom=9;
mapOptions.center={lat: lat, lng: lng};}
var map=new google.maps.Map(document.querySelector('.map-container'), mapOptions);
map.mapTypes.set('myStyle', new google.maps.StyledMapType(mapStyle, { name: 'Map Style' }));
var markers=[];
var markersLtLong=[];
if(document.querySelector('#centri-list').getAttribute('data-distance-max'))
window.mapConstants.maxKm=parseInt(document.querySelector('#centri-list').getAttribute('data-distance-max'));
window.currentMax=window.currentMax||window.mapConstants.minKm;
if(window.currentMax <=window.mapConstants.maxKm)
maxDistance=window.currentMax;
locations=document.querySelectorAll('#centri-list .box-location');
var initState=document.querySelector(".tab-content.locator-results").getAttribute("data-init")=='true';
var bounds=new google.maps.LatLngBounds();
while(maxDistance <  window.mapConstants.maxKm){
markers=[];
markersLtLong=[];
for(let i=0; i<locations.length; i++){
loc_lat=locations[i].getAttribute('data-lat');
loc_lng=locations[i].getAttribute('data-lng');
distance=locations[i].getAttribute('data-distance');
if(distance==null||parseInt(distance) <=maxDistance){
markers.push({
position: { lat: parseFloat(loc_lat), lng: parseFloat(loc_lng) },
content: '<div class="tab-content"><div class="tab-box"><div class="box-location">'+locations[i].innerHTML+'</div></div></div>'
});
}}
if(markers.length >=window.mapConstants.minResults){
break;
}else if(!initState&&markers.length < window.mapConstants.minResults){
maxDistance=maxDistance + window.mapConstants.stepKm;
}}
if(markers.length===1){
google.maps.event.addListenerOnce(map, "bounds_changed", function (){
this.setZoom(13);
});
};
if(markers.length > 0){
for (var i=0; i < markers.length; i++)
bounds.extend(new google.maps.LatLng(markers[i].position.lat,markers[i].position.lng));
map.fitBounds(bounds);
}else{
map.zoom=11;
}
if(!initState){
var feedbackTxt=document.querySelector(".locator-results--feedback");
if(markers.length > 0)
feedbackTxt.innerHTML="Sono stati trovati " + markers.length + " centri nel raggio di " + maxDistance + " Km";
else
feedbackTxt.innerHTML="Nessun centro trovato per la ricerca corrente nel raggio di " + maxDistance + " Km ";
setAccordionHeaderStickyVariable();
}
var currentInfowindow=null;
var markerObjects=[];
let lastSelectedMarker=null;
for (var i=0; i < markers.length; i++){
let marker=new google.maps.Marker({
position: markers[i].position,
map: map,
icon: { url: 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg) }});
let infowindow=new google.maps.InfoWindow({
content: markers[i].content
});
if(markers.length===1){
var vw=getClientWidth();
let lat=marker.position.lat();
let lng=marker.position.lng();
let targetElement=document.querySelector(`#centri-list .box-location[data-lat="${lat}"][data-lng="${lng}"]`)?.closest('.tab-box');
if(targetElement){
let accordionItem=targetElement.closest(".accordion");
if(accordionItem){
let accordionButton=accordionItem.querySelector("button.accordion-button");
if(accordionButton&&accordionButton.classList.contains("collapsed")){
accordionButton.click();
}
let scrollAndHighlight=function(){
setTimeout(function (){
let accordionItemOffset=accordionItem.offsetTop - accordionItem.querySelector(".accordion-header").clientHeight;
let totalOffset=accordionItemOffset + (targetElement.offsetTop - targetElement.clientHeight) + 300;
let scrollContainer=document.querySelector(".store-locator-container .col-4.col-lg-4");
if(scrollContainer){
scrollContainer.scroll({ top: totalOffset, behavior: 'smooth' });
}
document.querySelectorAll(".box-location.highlight").forEach(el=> el.classList.remove("highlight"));
targetElement.classList.add("highlight");
}, 300);
setTimeout(()=> targetElement.classList.remove("highlight"), 3000);
};
let centriList=document.querySelector("#centri-list");
if(vw <=991&&centriList&&getComputedStyle(centriList).display==="none"){
lastSelectedMarker={ scrollAndHighlight };}else{
scrollAndHighlight();
}}
}}
markerObjects.push({ marker, infowindow });
marker.addListener('click', function(){
var vw=getClientWidth();
if(currentInfowindow){
currentInfowindow.close();
}
infowindow.open(map, marker);
map.panTo(marker.position);
currentInfowindow=infowindow;
let lat=marker.position.lat();
let lng=marker.position.lng();
let targetElement=document.querySelector(`#centri-list .box-location[data-lat="${lat}"][data-lng="${lng}"]`)?.closest('.tab-box');
let test=document.querySelector(`#centri-list .box-location[data-lat="${lat}"][data-lng="${lng}"]`);
if(targetElement){
let accordionItem=targetElement.closest(".accordion");
if(accordionItem){
let accordionButton=accordionItem.querySelector("button.accordion-button");
if(accordionButton&&accordionButton.classList.contains("collapsed")){
accordionButton.click();
}
let scrollAndHighlight=function(){
setTimeout(function (){
let accordionItemOffset=accordionItem.offsetTop - accordionItem.querySelector(".accordion-header").clientHeight;
let totalOffset=accordionItemOffset + (targetElement.offsetTop - targetElement.clientHeight) + 300;
let scrollContainer=document.querySelector(".store-locator-container .col-4.col-lg-4");
if(scrollContainer){
scrollContainer.scroll({ top: totalOffset, behavior: 'smooth' });
}
document.querySelectorAll(".box-location.highlight").forEach(el=> el.classList.remove("highlight"));
test.classList.add("highlight");
}, 300);
setTimeout(()=> test.classList.remove("highlight"), 3000);
};
let centriList=document.querySelector("#centri-list");
if(vw <=991&&centriList&&getComputedStyle(centriList).display==="none"){
lastSelectedMarker={ scrollAndHighlight };}else{
scrollAndHighlight();
}}
}});
}
document.querySelector("#centri-list-tab").addEventListener("click", function(){
if(lastSelectedMarker){
setTimeout(lastSelectedMarker.scrollAndHighlight, 500);
}});
document.querySelectorAll("#centri-list .box-location .cta-link").forEach(link=> {
link.addEventListener("click", function (e){
e.stopPropagation();
});
});
document.querySelectorAll("#centri-list .box-location").forEach(item=> {
item.addEventListener("click", function (){
let lat=parseFloat(item.getAttribute("data-lat"));
let lng=parseFloat(item.getAttribute("data-lng"));
if(!isNaN(lat)&&!isNaN(lng)){
let targetLatLng=new google.maps.LatLng(lat, lng);
if(typeof map!=="undefined"&&map instanceof google.maps.Map){
let currentZoom=map.getZoom();
let targetZoom=currentZoom < 14 ? 14:currentZoom;
map.setZoom(targetZoom);
map.panTo(targetLatLng);
let markerObj=markerObjects.find(obj=>
obj.marker.position.lat()===lat&&obj.marker.position.lng()===lng
);
if(markerObj){
if(currentInfowindow) currentInfowindow.close();
markerObj.infowindow.open(map, markerObj.marker);
currentInfowindow=markerObj.infowindow;
}}
let accordionItem=item.closest(".accordion-item");
if(accordionItem){
let accordionButton=accordionItem.querySelector("button.accordion-button");
if(accordionButton&&accordionButton.classList.contains("collapsed")){
accordionButton.click();
}}
}});
});
}
document.addEventListener("DOMContentLoaded", function(){
const calcSubmit=document.querySelector('.tab-content.centri .cta');
if(calcSubmit!=null){
calcSubmit.addEventListener('click', function(){
address=this.parentNode.querySelector('input');
if(address.value!=''){
address.disabled=true;
address.classList.add('input-loading');
calcSubmit.classList.add('cta-loading');
var grecaptcha_key=document.getElementById('g-recaptcha').getAttribute('src').split('render=')[1];
grecaptcha.ready(function(){
grecaptcha.execute(grecaptcha_key, {action: 'submit'}).then(function(token){
let myData='action=dp_get_latlng_by_address&g-recaptcha-response=' + token + '&address=' + address.value;
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function(){
if(this.readyState==4&&this.status==200){
var latlng=xhttp.responseText;
address.disabled=false;
address.classList.remove('input-loading');
calcSubmit.classList.remove('cta-loading');
var lat=null, lng=null;
if(isJson(latlng)){
latlng=JSON.parse(latlng);
lat=latlng.lat;
lng=latlng.lng;
}else{
if(latlng.indexOf(',')!=-1){
latlng=address.trim().split(',');
lat=latlng[0];
lng=latlng[1];
}}
if(lat!=null&&lng!=null){
locations=document.querySelectorAll('#centri-list .box-location');
if(document.querySelector('#centri-list').getAttribute('data-distance-max'))
window.mapConstants.maxKm=parseInt(document.querySelector('#centri-list').getAttribute('data-distance-max'));
window.currentMax=window.currentMax||window.mapConstants.minKm;
if(window.currentMax <=window.mapConstants.maxKm)
maxDistance=window.currentMax;
while(maxDistance <  window.mapConstants.maxKm){
for(let i=0; i<locations.length; i++){
loc_lat=locations[i].getAttribute('data-lat');
loc_lng=locations[i].getAttribute('data-lng');
distance=calcDistance(lat, lng, loc_lat, loc_lng);
locations[i].querySelector('.box-location-distance').innerHTML='<span>' + Math.round(distance) + ' Km</span>';
locations[i].parentNode.style.order=Math.round(distance);
locations[i].setAttribute('data-distance', Math.round(distance));
locations[i].parentNode.style.display=(Math.round(distance) > maxDistance) ? 'none':'block';
locations[i].parentNode.setAttribute("location-active", (Math.round(distance) <=maxDistance) ? 'true':'false');
}
var locationsActive=document.querySelectorAll(".tab-box[location-active='true']");
if(locationsActive.length >=window.mapConstants.minResults){
break;
}else if(locationsActive.length < locations.length&&locationsActive.length < window.mapConstants.minResults){
maxDistance=maxDistance + window.mapConstants.stepKm;
}}
accordions=document.querySelectorAll('#centri-list .accordion');
for(let i=0; i<accordions.length; i++){
accordions[i].classList.remove("accordion-active");
accordions[i].querySelector(".accordion-collapse").classList.remove("show");
accordions[i].querySelector(".accordion-button").classList.add("collapsed");
accordions[i].querySelector(".accordion-button").setAttribute("aria-expanded", "false");
regionHasLocation=false;
locations=accordions[i].querySelectorAll('.tab-box');
for(let e=0; e<locations.length; e++){
if(locations[e].style.display=='block'){
regionHasLocation=true;
}}
accordions[i].style.display=regionHasLocation ? 'block':'none';
if(regionHasLocation){
accordions[i].classList.add("accordion-active");
accordions[i].querySelector(".accordion-collapse").classList.add("show");
accordions[i].querySelector(".accordion-button").classList.remove("collapsed");
accordions[i].querySelector(".accordion-button").setAttribute("aria-expanded", "true");
}}
document.querySelector('.store-locator-container .col-4').scrollTo(0,0);
document.querySelector(".tab-content.locator-results").setAttribute("data-init", false);
centriInitMap(lat, lng);
}}
};
let link=document.getElementById('ajaxurl').getAttribute('href');
xhttp.open("POST", link, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
xhttp.send(myData);
});
});
}});
}
const completeMap=document.querySelector(".complete-map");
if(completeMap){
var searchInput=completeMap.querySelector(".tab-content.centri input");
if(searchInput.value&&searchInput!=""){
var cta=searchInput.parentNode.parentNode.querySelector(".cta");
cta.click();
}
switchMapToMobile();
setHeaderHeightVariable();
window.addEventListener("resize", setHeaderHeightVariable);
window.addEventListener("resize", switchMapToMobile);
}
function isJson(str){
try {
JSON.parse(str);
} catch (e){
return false;
}
return true;
}
function calcDistance(lat1, lon1, lat2, lon2){
const earthRadius=6371;
const dLat=(lat2 - lat1) * Math.PI / 180;
const dLon=(lon2 - lon1) * Math.PI / 180;
const a =
Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
const c=2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
const distance=earthRadius * c;
return distance;
}
function switchMapToMobile (){
var vw=getClientWidth();
if(vw <=991){
if(!completeMap.classList.contains("complete-map--mobile")){
completeMap.classList.add("complete-map--mobile");
completeMap.querySelector("#centri-list")
.classList.remove("show", "active");
completeMap
.querySelector(".store-locator-container ")
.prepend(completeMap.querySelector(".row-search"));
completeMap
.querySelector("#centri-list")
.after(completeMap.querySelector("#centri-map"));
}}else{
if(completeMap.classList.contains("complete-map--mobile")){
completeMap.classList.remove("complete-map--mobile");
completeMap.querySelector("#centri-list")
.classList.add("show", "active");
completeMap.querySelector("#centri-map")
.classList.add("show", "active");
completeMap
.querySelector(".store-locator-container .col-4 .row")
.prepend(completeMap.querySelector(".row-search"));
completeMap
.querySelector(".col-8 .locator-results")
.prepend(completeMap.querySelector("#centri-map"));
}}
}
function setHeaderHeightVariable (){
var vw=getClientWidth();
if(vw < 992){
var headerHeight=document.querySelector(".header-mobile .d-flex").offsetHeight;
document.documentElement.style.setProperty("--header-height", headerHeight + "px");
}else{
var headerHeight=document.querySelector(".header .d-flex").offsetHeight;
document.documentElement.style.setProperty("--header-height", headerHeight + "px");
}}
});
function setAccordionHeaderStickyVariable (){
var vw=getClientWidth();
if(vw > 991){
var offsetForSticky=document.querySelector(".row-search");
var accordionHeaders=document.querySelectorAll(".accordion-header");
for(var i=0; i<accordionHeaders.length; i++)
accordionHeaders[i].style.setProperty("--accordion-header-sticky", offsetForSticky.clientHeight + "px");
}}
function getClientWidth (){
return Math.max(document.documentElement.clientWidth||0, window.innerWidth||0);
};
document.addEventListener("DOMContentLoaded", function(){
if(!document.body.classList.contains('header-loaded')&&!document.body.classList.contains('page-template-page-landing')&&!document.body.classList.contains('area-pazienti')){
document.body.classList.add('header-loaded');
const parentMenu=document.querySelectorAll('#nav-main .cta.has-submenu .action');
const overlayMenu=document.querySelector('#menu-page-overlay');
const activeMenuClass='actived';
for(let i=0; i<parentMenu.length; i++){
parentMenu[i].addEventListener('click', function(){
var menuElement=this.parentNode;
if(menuElement.classList.contains(activeMenuClass)){
menuElement.classList.remove(activeMenuClass);
}else{
menuElement.classList.add(activeMenuClass);
}
overlayMenu.style.display=overlayMenu.style.display!='block' ? 'block':'none';
});
}
overlayMenu.addEventListener('click', function(){
for(let i=0; i<parentMenu.length; i++){
if(parentMenu[i].parentNode.classList.contains(activeMenuClass)){
parentMenu[i].parentNode.classList.remove(activeMenuClass);
}}
this.style.display='none';
});
const headerMobileStickyClass='header-mobile-sticky';
const menuClose=document.querySelectorAll('#menu-mobile .menu-close');
const submenuMobile=document.querySelectorAll('#menu-mobile .submenu-mobile');
const menuMain=document.querySelector('#menu-mobile-main');
const menuMobile=document.querySelector('#menu-mobile');
const submenuLink=document.querySelectorAll('#menu-mobile .menu-link.has-submenu');
const menuBack=document.querySelectorAll('#menu-mobile .menu-back');
const menuChooseLink=document.querySelectorAll('#menu-mobile .choose-links .choose-link');
const headerMobileMain=document.querySelector('#header-mobile-main');
const headerMobileMainHeight=headerMobileMain.clientHeight;
var lastScrollTop=0;
document.querySelector('.open-menu-mobile').addEventListener('click', function(e){
document.querySelector('#menu-mobile').style.display='block';
document.body.classList.add('overflow-hidden');
e.preventDefault();
});
for(let i=0; i<menuClose.length; i++){
menuClose[i].addEventListener('click', function(e){
for(let r=0; r<submenuMobile.length; r++){
submenuMobile[r].style.display='none';
}
menuMain.style.display='block';
menuMobile.style.display='none';
document.body.classList.remove('overflow-hidden');
e.preventDefault();
});
}
for(let i=0; i<submenuLink.length; i++){
submenuLink[i].addEventListener('click', function(){
var menu=this.getAttribute('data-menu');
for(let r=0; r<submenuMobile.length; r++){
if(submenuMobile[r].getAttribute('data-menu')==menu){
menuMain.style.display='none';
submenuMobile[r].style.display='block';
}}
});
}
for(let i=0; i<menuBack.length; i++){
menuBack[i].addEventListener('click', function(){
for(let r=0; r<submenuMobile.length; r++){
submenuMobile[r].style.display='none';
}
menuMain.style.display='block';
});
}
for(let i=0; i<menuChooseLink.length; i++){
menuChooseLink[i].addEventListener('click', function(e){
if(!this.classList.contains(activeMenuClass)){
var submenu=this.getAttribute('data-submenu');
for(let r=0; r<menuChooseLink.length; r++){
if(menuChooseLink[r].classList.contains(activeMenuClass)){
menuChooseLink[r].classList.remove(activeMenuClass);
}}
this.classList.add(activeMenuClass);
var navs=closest(this, '.submenu-mobile');
navs=navs.querySelector('.multiple-navs');
var navigations=navs.querySelectorAll('nav');
for(let r=0; r<navigations.length; r++){
if(navigations[r].classList.contains(activeMenuClass)){
navigations[r].classList.remove(activeMenuClass);
}}
navs.querySelector('nav.' + submenu).classList.add(activeMenuClass);
}
e.preventDefault();
});
}
window.addEventListener('scroll', function(){
var st=window.scrollY;
if(lastScrollTop > headerMobileMainHeight&&st < lastScrollTop&&headerMobileMainHeight>0){
if(!headerMobileMain.classList.contains(headerMobileStickyClass)){
headerMobileMain.classList.add(headerMobileStickyClass);
document.body.style.marginTop=headerMobileMainHeight + 80 + 'px';
document.body.classList.add(headerMobileStickyClass);
}}else{
if(headerMobileMain.classList.contains(headerMobileStickyClass)){
headerMobileMain.classList.remove(headerMobileStickyClass);
document.body.style.marginTop=0;
document.body.classList.remove(headerMobileStickyClass);
}}
lastScrollTop=st;
});
function closest(el, selector){
var matchesSelector=el.matches||el.webkitMatchesSelector||el.mozMatchesSelector||el.msMatchesSelector;
while (el){
if(matchesSelector.call(el, selector)){
break;
}
el=el.parentElement;
}
return el;
}
const searchOverlay=document.querySelector('.search-overlay');
const searchInputBox=document.querySelector('.search-input-box');
const searchInputBoxMobile=document.querySelector('.search-input-box-mobile');
const searchLinks=document.querySelectorAll('.search-link');
for(let i=0; i<searchLinks.length; i++){
searchLinks[i].addEventListener('click', function(e){
if(this.classList.contains('menu-link')){
searchOverlay.style.display='block';
}else{
if(searchLinks[i].parentNode.classList.contains('search-opened')){
searchLinks[i].parentNode.classList.remove('search-opened');
}else{
searchLinks[i].parentNode.classList.add('search-opened');
}}
e.preventDefault();
});
}
searchOverlay.querySelector('.search-overlay-close').addEventListener('click', function(){
searchOverlay.style.display='none';
});
}});
document.addEventListener("DOMContentLoaded", function(){
const dpIndex=document.querySelector('.dp-index');
if(dpIndex!=null){
var cumulativeOffset=function(element){
var top=0, left=0;
do {
top +=element.offsetTop||0;
left +=element.offsetLeft||0;
element=element.offsetParent;
} while(element);
return {
top: top,
left: left
};};
dpIndexItems=dpIndex.querySelectorAll('.dp-list-items');
for(let i=0; i<dpIndexItems.length; i++){
if(document.querySelector('#index-'+(i+1))!=null){
if(dpIndexItems[i].querySelector('p a').innerHTML==''){
dpIndexItems[i].querySelector('p a').innerHTML=document.querySelector('#index-'+(i+1)).innerHTML;
}}else{
dpIndexItems[i].remove();
}}
var dpIndexPosition=cumulativeOffset(dpIndex).top;
var dpIndexHeight=dpIndex.offsetHeight;
var dpIndexClone=dpIndex.cloneNode(true);
var dpCurrentIndex=dpIndexClone.querySelector('.current-index');
dpIndexClone.classList.add('fixed');
document.body.appendChild(dpIndexClone);
window.addEventListener('scroll', dpIndexToggle);
dpIndexClone.querySelector('.current-index').addEventListener('click', function(){
if(dpIndexClone.classList.contains('opened')){
dpIndexClone.classList.remove('opened');
}else{
dpIndexClone.classList.add('opened');
}});
dpIndexItems=document.querySelectorAll('.dp-index .dp-list-items');
for(let i=0; i<dpIndexItems.length; i++){
dpIndexItems[i].querySelector('p a').addEventListener('click', function(e){
e.preventDefault();
const href=this.getAttribute("href");
const offsetTop=document.querySelector(href).offsetTop - document.getElementById('header').offsetHeight - document.getElementById('header-mobile').offsetHeight;
scroll({
top: offsetTop,
behavior: "smooth"
});
});
}
cloneLinks=dpIndexClone.querySelectorAll('a');
for(let i=0; i<cloneLinks.length; i++){
cloneLinks[i].addEventListener('click', function(e){
dpIndexClone.classList.remove('opened');
e.preventDefault();
});
}
dpIndexToggle();
window.addEventListener('resize', dpIndexResize, true);
dpIndexResize();
}
function dpIndexToggle(){
var scrollY=window.scrollY;
if(scrollY > dpIndexPosition - dpIndexHeight){
if(!dpIndexClone.classList.contains('show')){
dpIndexClone.classList.add('show');
}
var titles=document.querySelectorAll('h1, h2, h3, h4, h5, h6');
var stopTitles=false;
for(let i=0; i<titles.length; i++){
if(scrollY <=titles[i].offsetTop&&!stopTitles){
currentIndexID=titles[i].getAttribute('id');
if(currentIndexID!=null){
for(let i=0; i<dpIndexItems.length; i++){
dpIndexItem=dpIndexItems[i].querySelector('p a');
if(dpIndexItem.getAttribute("href").split('#')[1]==currentIndexID){
dpCurrentIndex.innerHTML=dpIndexItem.innerHTML;
}}
}
stopTitles=true;
}}
}else{
if(dpIndexClone.classList.contains('show')){
dpIndexClone.classList.remove('show');
}}
}
function dpIndexResize(){
var ct=document.querySelector('.content-text .sticky');
if(ct!=null){
ct.style.marginTop=0;
document.getElementById('index-1').style.marginTop=0;
if(window.innerWidth >=992){
dpIndexResizePosition=cumulativeOffset(dpIndex).top + dpIndex.offsetHeight;
ctPosition=cumulativeOffset(ct).top;
if(ctPosition < dpIndexResizePosition+35){
padded=document.body.classList.contains('admin-bar') ? -15:15;
newPosition=dpIndexResizePosition - ctPosition + padded;
if(newPosition < 0) newPosition=0;
ct.style.marginTop=newPosition + 'px';
if(window.innerWidth < 1200){
document.getElementById('index-1').style.marginTop=0;
}else{
document.getElementById('index-1').style.marginTop=newPosition + 'px';
}}
}}
}
setTimeout(function (){
const iubBtn=document.querySelector('.iubenda-tp-btn');
if(iubBtn){
iubBtn.style.setProperty('z-index', '999', 'important');
}}, 3000);
});
var bookingData={};
document.addEventListener("DOMContentLoaded", function (){
if(!document.body.classList.contains("booking-loaded") &&
!document.body.classList.contains("area-pazienti-dashboard")
){
document.body.classList.add("booking-loaded");
const pageBooking=document.querySelector(".page-booking");
if(pageBooking!=null){
var formSection0=pageBooking.querySelector(".booking-section.section-0"
);
var formSection1=pageBooking.querySelector(".booking-section.section-1"
);
var cards_yes=formSection1.querySelector(".cards-yes");
var cards_no=formSection1.querySelector(".cards-no");
var formSection2_yes=pageBooking.querySelector(".booking-section.section-2.tab-yes"
);
var formSection2_no=pageBooking.querySelector(".booking-section.section-2.tab-no"
);
var formSection3=pageBooking.querySelector(".booking-section.section-3"
);
var formSection3_no=pageBooking.querySelector(".booking-section.section-3.tab-no"
);
var formSection4=pageBooking.querySelector(".booking-section.section-4"
);
var setupFormStep0=function (e){
if(formSection1.classList.contains("done"))
formSection1.classList.remove("done");
if(formSection1.classList.contains("active"))
formSection1.classList.remove("active");
if(formSection2_yes.classList.contains("done"))
formSection2_yes.classList.remove("done");
if(formSection2_yes.classList.contains("active"))
formSection2_yes.classList.remove("active");
if(formSection2_no.classList.contains("done"))
formSection2_no.classList.remove("done");
if(formSection2_no.classList.contains("active"))
formSection2_no.classList.remove("active");
if(formSection3.classList.contains("done"))
formSection3.classList.remove("done");
if(formSection3.classList.contains("active"))
formSection3.classList.remove("active");
if(formSection4.classList.contains("active"))
formSection4.classList.remove("active");
formSection0.classList.remove("done");
formSection0.classList.add("active");
if(document.querySelector("#booking_customer_yes").checked){
bookingCustomerYes();
}
if(document.querySelector("#booking_customer_no").checked){
bookingCustomerNo();
}
bookingSosNo();
bookingScroll();
if(e){
e.preventDefault();
}};
setupFormStep0();
formSection0
.querySelector(".changesection")
.addEventListener("click", setupFormStep0);
formSection1
.querySelector(".changesection")
.addEventListener("click", function (e){
if(formSection2_yes.classList.contains("done"))
formSection2_yes.classList.remove("done");
if(formSection2_yes.classList.contains("active"))
formSection2_yes.classList.remove("active");
if(formSection2_no.classList.contains("done"))
formSection2_no.classList.remove("done");
if(formSection2_no.classList.contains("active"))
formSection2_no.classList.remove("active");
if(formSection3.classList.contains("done"))
formSection3.classList.remove("done");
if(formSection3.classList.contains("active"))
formSection3.classList.remove("active");
if(formSection4.classList.contains("active"))
formSection4.classList.remove("active");
formSection1.classList.remove("done");
formSection1.classList.add("active");
if(document.querySelector("#booking_customer_yes").checked){
bookingCustomerYes();
}
if(document.querySelector("#booking_customer_no").checked){
bookingCustomerNo();
}
bookingSosNo();
bookingScroll();
e.preventDefault();
});
formSection2_yes
.querySelector(".changesection")
.addEventListener("click", function (e){
if(formSection3.classList.contains("done"))
formSection3.classList.remove("done");
if(formSection3.classList.contains("active"))
formSection3.classList.remove("active");
if(formSection4.classList.contains("active"))
formSection4.classList.remove("active");
formSection2_yes.classList.remove("done");
formSection2_yes.classList.add("active");
formSection2_no.classList.remove("done");
formSection2_no.classList.add("active");
bookingScroll();
e.preventDefault();
});
formSection2_no
.querySelector(".changesection")
.addEventListener("click", function (e){
if(formSection3.classList.contains("done"))
formSection3.classList.remove("done");
if(formSection3.classList.contains("active"))
formSection3.classList.remove("active");
if(formSection4.classList.contains("active"))
formSection4.classList.remove("active");
formSection2_yes.classList.remove("done");
formSection2_yes.classList.add("active");
formSection2_no.classList.remove("done");
formSection2_no.classList.add("active");
bookingScroll();
e.preventDefault();
});
formSection3
.querySelector(".changesection")
.addEventListener("click", function (e){
formSection4.classList.remove("active");
formSection3.classList.remove("done");
formSection3.classList.add("active");
bookingScroll();
e.preventDefault();
});
var bookingLocations=formSection1.querySelectorAll(".box-location");
for (let i=0; i < bookingLocations.length; i++){
bookingLocations[i].addEventListener("click", function (){
subtitle=this.querySelector(".box-location-address");
if(subtitle!=null){
subtitle=subtitle.innerHTML;
}
title=this.querySelector(".box-location-title").innerHTML;
formSection1.querySelector(".details p").innerHTML =
"<strong>" +
title +
"</strong>" +
(subtitle ? ", " + subtitle:"");
formSection1.classList.remove("active");
formSection1.classList.add("done");
titleslug=title.toLowerCase().split(" ").join("-");
switch (titleslug){
case "urgenze":
bookingSosYes();
break;
case "urgenza":
bookingSosYes();
break;
default:
formSection2_yes.classList.add("active");
formSection2_no.classList.add("active");
break;
}
bookingScroll();
bookingData.service=title;
dataLayer.push({
event: "FP_step2_esigenza",
FP_step2_esigenza_value: title,
});
});
}
document
.querySelector("#booking_time_choose")
.addEventListener("click", function (){
formSection3.querySelector(".times").style.display=this.checked
? "flex"
: "none";
if(this.checked){
this.parentNode.parentNode.classList.add("line-bordered");
}else{
this.parentNode.parentNode.classList.remove("line-bordered");
}});
document
.querySelector("#booking_customer_yes")
.addEventListener("change", function (){
bookingCustomerYes();
formSection1.classList.add("cards-yes-active");
});
document
.querySelector("#booking_customer_no")
.addEventListener("change", function (){
bookingCustomerNo();
formSection1.classList.remove("cards-yes-active");
});
formSection0
.querySelector(".cta")
.addEventListener("click", function (e){
if(document.querySelector("#booking_customer_yes").checked){
title=document.querySelector('label[for="booking_customer_yes"]'
).innerHTML;
bookingData.customer=true;
}else{
title=document.querySelector('label[for="booking_customer_no"]'
).innerHTML;
bookingData.customer=false;
}
formSection0.querySelector(".details p").innerHTML=title;
formSection0.classList.remove("active");
formSection0.classList.add("done");
formSection1.classList.add("active");
bookingScroll();
dataLayer.push({
event: "FP_step1_paziente",
FP_step1_paziente_value: bookingData.customer ? "si":"no",
});
e.preventDefault();
});
formSection2_no
.querySelector(".cta")
.addEventListener("click", function (e){
var title=[];
titles=this.parentNode.querySelectorAll(".address");
for (let i=0; i < titles.length; i++){
title.push(titles[i].value);
}
var title=title.filter(function (el){
return el!=null&&el!="";
});
if(title.length){
this.parentNode.querySelector(".hint").style.display="none";
formSection2_no.querySelector(".details p").innerHTML =
title.join("<br>");
formSection2_no.classList.remove("active");
formSection2_yes.classList.add("done");
formSection2_no.classList.remove("active");
formSection2_no.classList.add("done");
formSection3.classList.add("active");
bookingScroll();
bookingData.location=title.join("\n\n");
bookingData.locations=title;
dataLayer.push({
event: "FP_step3_centro",
FP_step3_centro_value: title.join(" - "),
FP_step1_paziente_value: bookingData.customer ? "si":"no",
});
}else{
this.parentNode.querySelector(".hint").style.display="block";
}
e.preventDefault();
});
formSection3
.querySelector(".cta")
.addEventListener("click", function (e){
title=[];
bookingData.timesAsap =
document.querySelector("#booking_time_asap").checked;
if(bookingData.asap){
title.push(document.querySelector('label[for="booking_time_asap"]').innerHTML
);
}
bookingData.timesChoose=document.querySelector("#booking_time_choose"
).checked;
if(bookingData.timesChoose){
hours=formSection3.querySelectorAll(".times .form-check-input");
for (let i=0; i < hours.length; i++){
if(hours[i].checked){
title.push(hours[i].value);
}}
}
if(title.length==0){
title.push(document.querySelector('label[for="booking_time_asap"]').innerHTML
);
}
bookingData.times=title;
formSection3.querySelector(".details p").innerHTML =
title.join("<br>");
formSection3.classList.remove("active");
formSection3.classList.add("done");
formSection4.classList.add("active");
bookingScroll();
dataLayer.push({
event: "FP_step4_appuntamento",
FP_step4_appuntamento_value: title.join("\r\n"),
});
e.preventDefault();
});
/*document.querySelector('#booking_insurance_check_yes').addEventListener('click', function(){
formSection4.querySelector('.insurance-select').style.display='block';
if(document.querySelector('#booking-insurance-name').getAttribute('value')=='other'){
formSection4.querySelector('.insurance-custom').style.display='block';
}});
document.querySelector('#booking_insurance_check_no').addEventListener('click', function(){
formSection4.querySelector('.insurance-select').style.display='none';
formSection4.querySelector('.insurance-custom').style.display='none';
});
var insurances=document.querySelectorAll('.insurance-select .dropdown-menu li a');
for(let i=0; i<insurances.length; i++){
insurances[i].addEventListener('click', function(){
formSection4.querySelector('.insurance-custom').style.display=(this.getAttribute('data-value')=='other') ? 'block':'none';
});
}*/
formSection4
.querySelector(".submit")
.addEventListener("click", function (e){
var hasError=false;
var regName=/^[a-zA-ZàèéìíîïòóôùúûñÁÉÍÓÚÜÑ\s\']+$/;
var regEmail =
/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
firstname=formSection4.querySelector("#booking-firstname");
lastname=formSection4.querySelector("#booking-lastname");
phone=formSection4.querySelector("#booking-phone");
email=formSection4.querySelector("#booking-email");
if(!regName.test(firstname.value)){
if(firstname.parentNode.classList.contains("valid")){
firstname.parentNode.classList.remove("valid");
}
firstname.parentNode.classList.add("error");
hasError=true;
}else{
if(firstname.parentNode.classList.contains("error")){
firstname.parentNode.classList.remove("error");
}
firstname.parentNode.classList.add("valid");
}
if(!regName.test(lastname.value)){
if(lastname.parentNode.classList.contains("valid")){
lastname.parentNode.classList.remove("valid");
}
lastname.parentNode.classList.add("error");
hasError=true;
}else{
if(lastname.parentNode.classList.contains("error")){
lastname.parentNode.classList.remove("error");
}
lastname.parentNode.classList.add("valid");
}
if(phone.value.length < 9 ||
phone.value.length > 10 ||
(phone.value.charAt(0)!=3&&phone.value.charAt(0)!=0) ||
!/^\d+$/.test(phone.value)
){
if(phone.parentNode.classList.contains("valid")){
phone.parentNode.classList.remove("valid");
}
phone.parentNode.classList.add("error");
hasError=true;
}else{
if(phone.parentNode.classList.contains("error")){
phone.parentNode.classList.remove("error");
}
phone.parentNode.classList.add("valid");
}
if(!regEmail.test(email.value)){
if(email.parentNode.classList.contains("valid")){
email.parentNode.classList.remove("valid");
}
email.parentNode.classList.add("error");
hasError=true;
}else{
if(email.parentNode.classList.contains("error")){
email.parentNode.classList.remove("error");
}
email.parentNode.classList.add("valid");
}
bookingData.firstname=firstname.value;
bookingData.lastname=lastname.value;
bookingData.phone=phone.value;
bookingData.email=email.value;
if(pageBooking.classList.contains("sos")){
bookingData.sos=true;
bookingData.message =
document.querySelector("#booking-message").value;
}else{
bookingData.sos=false;
bookingData.message="";
}
bookingData.marketing =
document.querySelector("#booking-marketing").checked;
bookingData.profile =
document.querySelector("#booking-profile").checked;
bookingData.pageUrl=window.location.href;
bookingData.pageTitle=document.title;
if(!hasError){
document
.getElementById("email_customer")
.setAttribute("href", "mailto:" + bookingData.email);
document.getElementById("email_customer").innerHTML =
bookingData.email;
dataLayer.push({
event: "FP_step5_inviorichiesta",
convezione: "no", //document.querySelector('#booking_insurance_check_yes').checked ? 'si':'no',
assicurazione: "no", //document.querySelector('#booking_insurance_check_yes').checked ? (bookingData.insurance=='other' ? bookingData.insurance_custom:(bookingData.insurance ? bookingData.insurance:'no')):'no',
informativag: bookingData.marketing ? "si":"no",
informativap: bookingData.profile ? "si":"no",
FP_step1_paziente_value: bookingData.customer ? "si":"no",
});
bookingSubmit(bookingData);
}else{
bookingScroll();
}
e.preventDefault();
});
function bookingCustomerYes(){
var tab_no=document.querySelectorAll(".tab-no");
var tab_yes=document.querySelectorAll(".tab-yes");
for (let i=0; i < tab_no.length; i++){
tab_no[i].style.display="none";
}
for (let i=0; i < tab_yes.length; i++){
tab_yes[i].style.display="flex";
}}
function bookingCustomerNo(){
var tab_no=document.querySelectorAll(".tab-no");
var tab_yes=document.querySelectorAll(".tab-yes");
for (let i=0; i < tab_no.length; i++){
tab_no[i].style.display="flex";
}
for (let i=0; i < tab_yes.length; i++){
tab_yes[i].style.display="none";
}}
function bookingSosYes(){
formSection4.classList.add("active");
pageBooking.classList.add("sos");
}
function bookingSosNo(){
pageBooking.classList.remove("sos");
}
function bookingSubmit(dataContent){
var grecaptcha_key=document
.getElementById("g-recaptcha")
.getAttribute("src")
.split("render=")[1];
grecaptcha.ready(function (){
grecaptcha
.execute(grecaptcha_key, { action: "submit" })
.then(function (token){
document.body.classList.add("overlay-loading-show");
const urlParams=new URLSearchParams(window.location.search);
const gclid_field=urlParams.get("gclid");
dataContent.gclid_field=gclid_field!=null ? gclid_field:"";
let myDataJSON=JSON.stringify({
"g-recaptcha-response": token,
data: dataContent,
});
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function (){
if(this.readyState==4&&this.status==200){
goThankyou("/grazie-prenota/", {
email: dataContent.email,
customer: bookingData.customer ? "si":"no",
});
}};
const link=new URL(
document.getElementById("booking_ajax_url").value
);
link.searchParams.set("action", "dp_booking");
xhttp.open("POST", link, true);
xhttp.setRequestHeader("Content-type",
"application/json; charset=UTF-8"
);
xhttp.send(myDataJSON);
});
});
}}
}
function bookingScroll(){
activeSections=document.querySelectorAll(".booking-section.active");
maxTop=0;
for (let i=0; i < activeSections.length; i++){
if(maxTop < activeSections[i].offsetTop){
maxTop=activeSections[i].offsetTop;
}}
scroll({
top: maxTop - 190,
behavior: "smooth",
});
}});
var bookingData={};
document.addEventListener("DOMContentLoaded", function (){
if(!document.body.classList.contains("booking-loaded") &&
document.body.classList.contains("area-pazienti-dashboard")
){
document.body.classList.add("booking-loaded");
const pageBooking=document.querySelector(".page-booking");
if(pageBooking!=null){
if(sessionStorage.getItem("access_token")==null){
var accessToken=getTokenFromHash("access_token");
if(accessToken){
sessionStorage.setItem("access_token", accessToken);
sessionStorage.setItem("id_token", getTokenFromHash("id_token"));
document.body.classList.add("blankpage");
document.body.classList.add("overlay-loading-show");
const formLoginData=new FormData();
formLoginData.append("token", accessToken);
var tokenSelector=sessionStorage.getItem("TokenSelector");
if(tokenSelector){
formLoginData.append("action", "dp_get_card_validate");
formLoginData.append("tokenselector", tokenSelector);
}else{
formLoginData.append("action", "dp_get_card");
}
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function (){
if(this.readyState==4&&this.status==200){
var response=xhttp.responseText;
response=JSON.parse(response);
response.Data.expiry=false;
sessionStorage.removeItem("TokenSelector");
sessionStorage.setItem("userData", JSON.stringify(response.Data));
sessionStorage.setItem("PublicWebMasterTables",
JSON.stringify(response.PublicWebMasterTables)
);
window.location.href="/prenota-visita/";
}};
let link=document.getElementById("ajaxurl").getAttribute("href");
xhttp.open("POST", link, true);
xhttp.send(formLoginData);
}else{
document.body.classList.add("blankpage");
document.body.classList.add("overlay-loading-show");
window.location.href="/prenota-visita/?login";
return;
}}else{
var formSection0=pageBooking.querySelector(".booking-section.section-0"
);
var formSection1=pageBooking.querySelector(".booking-section.section-1"
);
var cards_yes=formSection1.querySelector(".cards-yes");
var cards_no=formSection1.querySelector(".cards-no");
var formSection2_yes=pageBooking.querySelector(".booking-section.section-2.tab-yes"
);
var formSection2_no=pageBooking.querySelector(".booking-section.section-2.tab-no"
);
var formSection3=pageBooking.querySelector(".booking-section.section-3"
);
var formSection4=pageBooking.querySelector(".booking-section.section-4"
);
var userData=sessionStorage.getItem("userData");
var master=sessionStorage.getItem("PublicWebMasterTables");
var numAccounts=1;
userData=JSON.parse(userData);
master=JSON.parse(master);
isProspect=false;
if(userData.PatientWebCard==null){
isProspect=true;
document.querySelector("#booking_customer_yes").checked=false;
document.querySelector("#booking_customer_no").checked=true;
bookingCustomerNo();
var decodedToken=getDecodedToken(
sessionStorage.getItem("access_token")
);
var accountsHtml =
'<div class="form-check"><input class="form-check-input" type="radio" name="booking_account" id="booking_customer_account_main" data-account="main" checked><label class="form-check-label" for="booking_customer_account_main">' +
decodedToken.given_name +
" " +
decodedToken.family_name +
"</label></div>";
}else{
formSection1.classList.add("cards-yes-active");
document.querySelector("#booking_customer_yes").checked=true;
document.querySelector("#booking_customer_no").checked=false;
bookingCustomerYes();
var accountsHtml =
'<div class="form-check"><input class="form-check-input" type="radio" name="booking_account" id="booking_customer_account_main" data-account="main" checked><label class="form-check-label" for="booking_customer_account_main">' +
userData.PatientWebCard.Paziente.PazienteNome +
" " +
userData.PatientWebCard.Paziente.PazienteCognome +
"</label></div>";
for (let i=0; i < userData.PatientWebCard.Correlati.length; i++){
numAccounts++;
accountsHtml +=
'<div class="form-check"><input class="form-check-input" type="radio" name="booking_account" id="booking_customer_account_' +
i +
'" data-account="' +
userData.PatientWebCard.Correlati[i].PazienteCorrelatoId +
'"><label class="form-check-label" for="booking_customer_account_' +
i +
'">' +
userData.PatientWebCard.Correlati[i].PazienteNome +
" " +
userData.PatientWebCard.Correlati[i].PazienteCognome +
"</label></div>";
}}
document.querySelector(".accounts-list").innerHTML=accountsHtml;
var setupFormStep0=function (e){
if(formSection1.classList.contains("done"))
formSection1.classList.remove("done");
if(formSection1.classList.contains("active"))
formSection1.classList.remove("active");
if(formSection2_yes.classList.contains("done"))
formSection2_yes.classList.remove("done");
if(formSection2_yes.classList.contains("active"))
formSection2_yes.classList.remove("active");
if(formSection2_no.classList.contains("done"))
formSection2_no.classList.remove("done");
if(formSection2_no.classList.contains("active"))
formSection2_no.classList.remove("active");
if(formSection3.classList.contains("done"))
formSection3.classList.remove("done");
if(formSection3.classList.contains("active"))
formSection3.classList.remove("active");
if(formSection4.classList.contains("active"))
formSection4.classList.remove("active");
formSection0.classList.remove("done");
formSection0.classList.add("active");
if(document.querySelector("#booking_customer_yes").checked){
bookingCustomerYes();
}
if(document.querySelector("#booking_customer_no").checked){
bookingCustomerNo();
}
bookingSosNo();
bookingScroll();
if(e){
e.preventDefault();
}};
setupFormStep0();
formSection0
.querySelector(".changesection")
.addEventListener("click", setupFormStep0);
formSection1
.querySelector(".changesection")
.addEventListener("click", function (e){
if(formSection2_yes.classList.contains("done"))
formSection2_yes.classList.remove("done");
if(formSection2_yes.classList.contains("active"))
formSection2_yes.classList.remove("active");
if(formSection2_no.classList.contains("done"))
formSection2_no.classList.remove("done");
if(formSection2_no.classList.contains("active"))
formSection2_no.classList.remove("active");
if(formSection3.classList.contains("done"))
formSection3.classList.remove("done");
if(formSection3.classList.contains("active"))
formSection3.classList.remove("active");
if(formSection4.classList.contains("active"))
formSection4.classList.remove("active");
formSection1.classList.remove("done");
formSection1.classList.add("active");
if(document.querySelector("#booking_customer_yes").checked){
bookingCustomerYes();
}
if(document.querySelector("#booking_customer_no").checked){
bookingCustomerNo();
}
bookingSosNo();
bookingScroll();
e.preventDefault();
});
formSection2_yes
.querySelector(".changesection")
.addEventListener("click", function (e){
if(formSection3.classList.contains("done"))
formSection3.classList.remove("done");
if(formSection3.classList.contains("active"))
formSection3.classList.remove("active");
if(formSection4.classList.contains("active"))
formSection4.classList.remove("active");
formSection2_yes.classList.remove("done");
formSection2_yes.classList.add("active");
formSection2_no.classList.remove("done");
formSection2_no.classList.add("active");
bookingScroll();
e.preventDefault();
});
formSection2_no
.querySelector(".changesection")
.addEventListener("click", function (e){
if(formSection3.classList.contains("done"))
formSection3.classList.remove("done");
if(formSection3.classList.contains("active"))
formSection3.classList.remove("active");
if(formSection4.classList.contains("active"))
formSection4.classList.remove("active");
formSection2_yes.classList.remove("done");
formSection2_yes.classList.add("active");
formSection2_no.classList.remove("done");
formSection2_no.classList.add("active");
bookingScroll();
e.preventDefault();
});
formSection3
.querySelector(".changesection")
.addEventListener("click", function (e){
formSection4.classList.remove("active");
formSection3.classList.remove("done");
formSection3.classList.add("active");
bookingScroll();
e.preventDefault();
});
var bookingLocations=formSection1.querySelectorAll(".box-location");
for (let i=0; i < bookingLocations.length; i++){
bookingLocations[i].addEventListener("click", function (){
subtitle=this.querySelector(".box-location-address");
if(subtitle!=null){
subtitle=subtitle.innerHTML;
}
title=this.querySelector(".box-location-title").innerHTML;
formSection1.querySelector(".details p").innerHTML =
"<strong>" +
title +
"</strong>" +
(subtitle ? ", " + subtitle:"");
formSection1.classList.remove("active");
formSection1.classList.add("done");
titleslug=title.toLowerCase().split(" ").join("-");
switch (titleslug){
case "urgenze":
bookingSosYes();
break;
case "urgenza":
bookingSosYes();
break;
default:
formSection2_yes.classList.add("active");
formSection2_no.classList.add("active");
break;
}
bookingScroll();
bookingData.service=title;
dataLayer.push({
event: "FP_step2_esigenza",
FP_step2_esigenza_value: title,
});
});
}
document
.querySelector("#booking_time_choose")
.addEventListener("click", function (){
formSection3.querySelector(".times").style.display=this.checked
? "flex"
: "none";
if(this.checked){
this.parentNode.parentNode.classList.add("line-bordered");
}else{
this.parentNode.parentNode.classList.remove("line-bordered");
}});
document
.querySelector("#booking_customer_yes")
.addEventListener("change", function (){
bookingCustomerYes();
formSection1.classList.add("cards-yes-active");
formSection1.classList.remove("cards-no-active");
});
document
.querySelector("#booking_customer_no")
.addEventListener("change", function (){
bookingCustomerNo();
formSection1.classList.add("cards-no-active");
formSection1.classList.remove("cards-yes-active");
});
formSection0
.querySelector(".cta")
.addEventListener("click", function (e){
title=document.querySelector('input[name="booking_account"]:checked + label'
).innerHTML;
if(document.querySelector("#booking_customer_yes").checked){
bookingData.customer=true;
}else{
bookingData.customer=false;
}
formSection0.querySelector(".details p").innerHTML=title;
formSection0.classList.remove("active");
formSection0.classList.add("done");
formSection1.classList.add("active");
bookingScroll();
var accountId=document
.querySelector('input[name="booking_account"]:checked')
.getAttribute("data-account");
var bookingAccount=null;
if(!isProspect){
if(accountId=="main"){
bookingAccount=userData.PatientWebCard.Paziente;
}else{
for (
let i=0;
i < userData.PatientWebCard.Correlati.length;
i++
){
if(accountId==userData.PatientWebCard.Correlati[i].PazienteCorrelatoId
){
bookingAccount=userData.PatientWebCard.Correlati[i];
}}
}}
if(bookingAccount){
document.getElementById("booking-firstname").value =
bookingAccount.PazienteNome;
document.getElementById("booking-lastname").value =
bookingAccount.PazienteCognome;
document.getElementById("booking-phone").value =
bookingAccount.PazienteTelefono;
document.getElementById("booking-email").value =
bookingAccount.PazienteEmail;
document.getElementById("booking-marketing").checked =
typeof bookingAccount.PazientiPrivacy_3_Marketing!=="undefined"
? bookingAccount.PazientiPrivacy_3_Marketing
: false;
document.getElementById("booking-profile").checked =
typeof bookingAccount.PazientiPrivacy_4_Profilazione!=="undefined"
? bookingAccount.PazientiPrivacy_4_Profilazione
: false;
}
if(isProspect){
document.getElementById("booking-firstname").value =
decodedToken.given_name;
document.getElementById("booking-lastname").value =
decodedToken.family_name;
document.getElementById("booking-email").value =
decodedToken.email;
document.getElementById("booking-phone").value =
decodedToken.telephone;
document.getElementById("booking-marketing").checked =
decodedToken.market_consent
? decodedToken.market_consent.toString().toLowerCase()=="true"
: false;
document.getElementById("booking-profile").checked =
decodedToken.profiling_consent
? decodedToken.profiling_consent.toString().toLowerCase()=="true"
: false;
}
dataLayer.push({
event: "FP_step1_paziente",
FP_step1_paziente_value: bookingData.customer ? "si":"no",
});
e.preventDefault();
});
if(numAccounts==1){
formSection0.querySelector(".cta").click();
formSection0.classList.add("hide");
}
formSection2_no
.querySelector(".cta")
.addEventListener("click", function (e){
var title=[];
titles=this.parentNode.querySelectorAll(".address");
for (let i=0; i < titles.length; i++){
title.push(titles[i].value);
}
var title=title.filter(function (el){
return el!=null&&el!="";
});
if(title.length){
this.parentNode.querySelector(".hint").style.display="none";
formSection2_no.querySelector(".details p").innerHTML =
title.join("<br>");
formSection2_no.classList.remove("active");
formSection2_yes.classList.add("done");
formSection2_no.classList.remove("active");
formSection2_no.classList.add("done");
formSection3.classList.add("active");
bookingScroll();
bookingData.location=title.join("\n\n");
bookingData.locations=title;
dataLayer.push({
event: "FP_step3_centro",
FP_step3_centro_value: title.join(" - "),
FP_step1_paziente_value: bookingData.customer ? "si":"no",
});
}else{
this.parentNode.querySelector(".hint").style.display="block";
}
e.preventDefault();
});
formSection3
.querySelector(".cta")
.addEventListener("click", function (e){
title=[];
bookingData.timesAsap =
document.querySelector("#booking_time_asap").checked;
if(bookingData.timesAsap){
title.push(document.querySelector('label[for="booking_time_asap"]')
.innerHTML
);
}
bookingData.timesChoose=document.querySelector("#booking_time_choose"
).checked;
if(bookingData.timesChoose){
hours=formSection3.querySelectorAll(".times .form-check-input");
for (let i=0; i < hours.length; i++){
if(hours[i].checked){
title.push(hours[i].value);
}}
}
if(title.length==0){
title.push(document.querySelector('label[for="booking_time_asap"]')
.innerHTML
);
}
bookingData.times=title;
formSection3.querySelector(".details p").innerHTML =
title.join("<br>");
formSection3.classList.remove("active");
formSection3.classList.add("done");
formSection4.classList.add("active");
bookingScroll();
dataLayer.push({
event: "FP_step4_appuntamento",
FP_step4_appuntamento_value: title.join("\r\n"),
});
e.preventDefault();
});
/*document.querySelector('#booking_insurance_check_yes').addEventListener('click', function(){
formSection4.querySelector('.insurance-select').style.display='block';
if(document.querySelector('#booking-insurance-name').getAttribute('value')=='other'){
formSection4.querySelector('.insurance-custom').style.display='block';
}});
document.querySelector('#booking_insurance_check_no').addEventListener('click', function(){
formSection4.querySelector('.insurance-select').style.display='none';
formSection4.querySelector('.insurance-custom').style.display='none';
});
var insurances=document.querySelectorAll('.insurance-select .dropdown-menu li a');
for(let i=0; i<insurances.length; i++){
insurances[i].addEventListener('click', function(){
formSection4.querySelector('.insurance-custom').style.display=(this.getAttribute('data-value')=='other') ? 'block':'none';
});
}*/
formSection4
.querySelector(".submit")
.addEventListener("click", function (e){
var hasError=false;
var regName=/^[a-zA-ZàèéìíîïòóôùúûñÁÉÍÓÚÜÑ\s\']+$/;
var regEmail =
/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
firstname=formSection4.querySelector("#booking-firstname");
lastname=formSection4.querySelector("#booking-lastname");
phone=formSection4.querySelector("#booking-phone");
email=formSection4.querySelector("#booking-email");
if(!regName.test(firstname.value)){
if(firstname.parentNode.classList.contains("valid")){
firstname.parentNode.classList.remove("valid");
}
firstname.parentNode.classList.add("error");
hasError=true;
}else{
if(firstname.parentNode.classList.contains("error")){
firstname.parentNode.classList.remove("error");
}
firstname.parentNode.classList.add("valid");
}
if(!regName.test(lastname.value)){
if(lastname.parentNode.classList.contains("valid")){
lastname.parentNode.classList.remove("valid");
}
lastname.parentNode.classList.add("error");
hasError=true;
}else{
if(lastname.parentNode.classList.contains("error")){
lastname.parentNode.classList.remove("error");
}
lastname.parentNode.classList.add("valid");
}
if(phone.value.length < 9 ||
phone.value.length > 10 ||
(phone.value.charAt(0)!=3&&phone.value.charAt(0)!=0) ||
!/^\d+$/.test(phone.value)
){
if(phone.parentNode.classList.contains("valid")){
phone.parentNode.classList.remove("valid");
}
phone.parentNode.classList.add("error");
hasError=true;
}else{
if(phone.parentNode.classList.contains("error")){
phone.parentNode.classList.remove("error");
}
phone.parentNode.classList.add("valid");
}
if(!regEmail.test(email.value)){
if(email.parentNode.classList.contains("valid")){
email.parentNode.classList.remove("valid");
}
email.parentNode.classList.add("error");
hasError=true;
}else{
if(email.parentNode.classList.contains("error")){
email.parentNode.classList.remove("error");
}
email.parentNode.classList.add("valid");
}
bookingData.firstname=firstname.value;
bookingData.lastname=lastname.value;
bookingData.phone=phone.value;
bookingData.email=email.value;
if(pageBooking.classList.contains("sos")){
bookingData.sos=true;
bookingData.message =
document.querySelector("#booking-message").value;
}else{
bookingData.sos=false;
bookingData.message="";
}
bookingData.marketing =
document.querySelector("#booking-marketing").checked;
bookingData.profile =
document.querySelector("#booking-profile").checked;
bookingData.pageUrl=window.location.href;
bookingData.pageTitle=document.title;
if(!hasError){
document
.getElementById("email_customer")
.setAttribute("href", "mailto:" + bookingData.email);
document.getElementById("email_customer").innerHTML =
bookingData.email;
dataLayer.push({
event: "FP_step5_inviorichiesta",
convezione: "no", //document.querySelector('#booking_insurance_check_yes').checked ? 'si':'no',
assicurazione: "no", //document.querySelector('#booking_insurance_check_yes').checked ? (bookingData.insurance=='other' ? bookingData.insurance_custom:(bookingData.insurance ? bookingData.insurance:'no')):'no',
informativag: bookingData.marketing ? "si":"no",
informativap: bookingData.profile ? "si":"no",
FP_step1_paziente_value: bookingData.customer ? "si":"no",
});
bookingSubmit(bookingData);
}else{
bookingScroll();
}
e.preventDefault();
});
function bookingCustomerYes(){
var tab_no=document.querySelectorAll(".tab-no");
var tab_yes=document.querySelectorAll(".tab-yes");
for (let i=0; i < tab_no.length; i++){
tab_no[i].style.display="none";
}
for (let i=0; i < tab_yes.length; i++){
tab_yes[i].style.display="flex";
}}
function bookingCustomerNo(){
var tab_no=document.querySelectorAll(".tab-no");
var tab_yes=document.querySelectorAll(".tab-yes");
for (let i=0; i < tab_no.length; i++){
tab_no[i].style.display="flex";
}
for (let i=0; i < tab_yes.length; i++){
tab_yes[i].style.display="none";
}}
function bookingSosYes(){
formSection4.classList.add("active");
pageBooking.classList.add("sos");
}
function bookingSosNo(){
pageBooking.classList.remove("sos");
}
function bookingSubmit(dataContent){
var grecaptcha_key=document
.getElementById("g-recaptcha")
.getAttribute("src")
.split("render=")[1];
grecaptcha.ready(function (){
grecaptcha
.execute(grecaptcha_key, { action: "submit" })
.then(function (token){
document.body.classList.add("overlay-loading-show");
const urlParams=new URLSearchParams(window.location.search);
const gclid_field=urlParams.get("gclid");
dataContent.gclid_field =
gclid_field!=null ? gclid_field:"";
let myDataJSON=JSON.stringify({
"g-recaptcha-response": token,
data: dataContent,
});
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function (){
if(this.readyState==4&&this.status==200){
document
.getElementById("prenota")
.classList.remove("active");
document
.getElementById("prenota-thankyou")
.classList.add("active");
dataLayer.push({
event: "generate_lead",
formID: "form_prenotazione",
email_customer: dataContent.email,
});
document.body.classList.remove("overlay-loading-show");
}};
const link=new URL(
document.getElementById("booking_ajax_url").value
);
link.searchParams.set("action", "dp_booking");
xhttp.open("POST", link, true);
xhttp.setRequestHeader("Content-type",
"application/json; charset=UTF-8"
);
xhttp.send(myDataJSON);
});
});
}}
}}
function bookingScroll(){
activeSections=document.querySelectorAll(".booking-section.active");
maxTop=0;
for (let i=0; i < activeSections.length; i++){
if(maxTop < activeSections[i].offsetTop){
maxTop=activeSections[i].offsetTop;
}}
scroll({
top: maxTop - 190,
behavior: "smooth",
});
}
function getTokenFromHash(nametoken){
var hash=window.location.hash.substr(1);
var params=hash.split("&");
for (var i=0; i < params.length; i++){
var param=params[i].split("=");
if(param[0]===nametoken){
return param[1];
}}
return null;
}
/*function getDecodedTokenOld(token){
token=token.split('.');
token=token[1];
token=token.split('-').join('+');
token=token.split('_').join('/');
token=atob(token);
token=JSON.parse(token);
return token;
}*/
function getDecodedToken(token){
var base64Url=token.split(".")[1];
var base64=base64Url.replace(/-/g, "+").replace(/_/g, "/");
var jsonPayload=decodeURIComponent(
window
.atob(base64)
.split("")
.map(function (c){
return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
})
.join("")
);
return JSON.parse(jsonPayload);
}
function getUserCliniche(){
if(typeof userData.PatientWebCard.Cliniche!=="undefined"){
var cliniche=userData.PatientWebCard.Cliniche;
var masterCliniche=master.Cliniche;
for (let i=0; i < cliniche.length; i++){
for (let e=0; e < masterCliniche.length; e++){
if(cliniche[i].ClinicaId==masterCliniche[e].ClinicaId){
cliniche[i].ClinicaPartitaIva=masterCliniche[e].ClinicaPartitaIva;
}}
}
return cliniche;
}
return [];
}});
document.addEventListener("DOMContentLoaded", function (){
if(!document.body.classList.contains('footer-loaded')){
document.body.classList.add('footer-loaded');
const footerAccordion=document.querySelectorAll('.cs-footer h4');
for (let i=0; i < footerAccordion.length; i++){
footerAccordion[i].addEventListener('click', function (e){
var parent=this.parentNode;
if(parent.classList.contains('active')){
parent.classList.remove('active')
}else{
parent.classList.add('active')
}});
}
let floatingCta=document.querySelector('.floating-cta');
let ctaMain=document.querySelector('#cta-main');
if(ctaMain){
ctaMain.addEventListener('click', function (){
floatingCta.classList.toggle('cta-open');
});
}
var chatbotTriggers=document.querySelectorAll('#action-btn-chatbot');
chatbotTriggers.forEach(function (chatbotTrigger){
chatbotTrigger.addEventListener('click', function (e){
if(window.IndigoAIChat&&typeof window.IndigoAIChat.setOpen==='function'){
let oldChatbotTrigger=document.getElementById('iaw-trigger');
let expanded=oldChatbotTrigger&&oldChatbotTrigger.getAttribute('aria-expanded');
if(expanded==='true'){
window.IndigoAIChat.setOpen(false);
if(floatingCta) floatingCta.classList.remove('cta-open');
}else{
window.IndigoAIChat.setOpen(true);
if(floatingCta) floatingCta.classList.add('cta-open');
}}
});
});
function waitForChatTrigger(callback){
var interval=setInterval(function (){
var oldChatbotTrigger=document.getElementById('iaw-trigger');
if(oldChatbotTrigger){
clearInterval(interval);
callback(oldChatbotTrigger);
}}, 300);
}
waitForChatTrigger(function (oldChatbotTrigger){
var floatingCta=document.querySelector('.floating-cta');
const observer=new MutationObserver(function (mutations){
mutations.forEach(function (mutation){
if(mutation.type==='attributes'&&mutation.attributeName==='aria-expanded'){
const expanded=oldChatbotTrigger.getAttribute('aria-expanded');
if(expanded==='true'){
if(floatingCta) floatingCta.classList.add('cta-open');
}else{
if(floatingCta) floatingCta.classList.remove('cta-open');
}}
});
});
observer.observe(oldChatbotTrigger, { attributes: true });
});
}});
document.addEventListener("DOMContentLoaded", function(){
const bootstrapDropdowns=document.querySelectorAll('.dropdown-menu li a');
for(let i=0; i<bootstrapDropdowns.length; i++){
bootstrapDropdowns[i].addEventListener('click', function(e){
var dropdown=findAncestor(this, '.dropdown');
dropdown.querySelector('.btn').innerHTML=this.innerHTML;
dropdown.querySelector('.btn').value=this.getAttribute('data-value');
e.preventDefault();
});
}
function findAncestor (el, sel){
while ((el=el.parentElement)&&!((el.matches||el.matchesSelector).call(el,sel)));
return el;
}});
var urgenzeData={};
document.addEventListener("DOMContentLoaded", function (){
const urgenzeForm=document.querySelector("#request-urgenze-form");
if(urgenzeForm!=null){
urgenzeForm.querySelector(".cta").addEventListener("click", function (e){
var hasError=false;
var regName=/^[a-zA-ZàèéìíîïòóôùúûñÁÉÍÓÚÜÑ\s\']+$/;
var regEmail =
/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
firstname=urgenzeForm.querySelector('input[name="firstname"]');
lastname=urgenzeForm.querySelector('input[name="lastname"]');
phone=urgenzeForm.querySelector('input[name="phone"]');
email=urgenzeForm.querySelector('input[name="email"]');
message=urgenzeForm.querySelector('textarea[name="message"]');
if(!regName.test(firstname.value)){
if(firstname.parentNode.classList.contains("valid")){
firstname.parentNode.classList.remove("valid");
}
firstname.parentNode.classList.add("error");
hasError=true;
}else{
if(firstname.parentNode.classList.contains("error")){
firstname.parentNode.classList.remove("error");
}
firstname.parentNode.classList.add("valid");
}
if(!regName.test(lastname.value)){
if(lastname.parentNode.classList.contains("valid")){
lastname.parentNode.classList.remove("valid");
}
lastname.parentNode.classList.add("error");
hasError=true;
}else{
if(lastname.parentNode.classList.contains("error")){
lastname.parentNode.classList.remove("error");
}
lastname.parentNode.classList.add("valid");
}
if(phone.value.length < 9 ||
phone.value.length > 10 ||
(phone.value.charAt(0)!=3&&phone.value.charAt(0)!=0) ||
!/^\d+$/.test(phone.value)
){
if(phone.parentNode.classList.contains("valid")){
phone.parentNode.classList.remove("valid");
}
phone.parentNode.classList.add("error");
hasError=true;
}else{
if(phone.parentNode.classList.contains("error")){
phone.parentNode.classList.remove("error");
}
phone.parentNode.classList.add("valid");
}
if(!regEmail.test(email.value)){
if(email.parentNode.classList.contains("valid")){
email.parentNode.classList.remove("valid");
}
email.parentNode.classList.add("error");
hasError=true;
}else{
if(email.parentNode.classList.contains("error")){
email.parentNode.classList.remove("error");
}
email.parentNode.classList.add("valid");
}
if(!hasError){
urgenzeData.firstname=firstname.value;
urgenzeData.lastname=lastname.value;
urgenzeData.phone=phone.value;
urgenzeData.email=email.value;
urgenzeData.message=message.value;
urgenzeData.marketing =
urgenzeForm.querySelector("#urgenze-marketing").checked;
urgenzeData.profile =
urgenzeForm.querySelector("#urgenze-profile").checked;
urgenzeSubmit(urgenzeData);
}
e.preventDefault();
});
}
function urgenzeSubmit(dataContent){
var grecaptcha_key=document
.getElementById("g-recaptcha")
.getAttribute("src")
.split("render=")[1];
grecaptcha.ready(function (){
grecaptcha
.execute(grecaptcha_key, { action: "submit" })
.then(function (token){
document.body.classList.add("overlay-loading-show");
const urlParams=new URLSearchParams(window.location.search);
const gclid_field=urlParams.get("gclid");
dataContent.gclid_field=gclid_field!=null ? gclid_field:"";
dataContent.path=window.location.pathname;
let myDataJSON=JSON.stringify({
"g-recaptcha-response": token,
data: dataContent,
});
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function (){
if(this.readyState==4&&this.status==200){
goThankyou("/grazie-urgenze/", { email: dataContent.email });
}};
const link=new URL(
document.getElementById("ajaxurl").getAttribute("href")
);
link.searchParams.set("action", "dp_urgenze");
xhttp.open("POST", link, true);
xhttp.setRequestHeader("Content-type",
"application/json; charset=UTF-8"
);
xhttp.send(myDataJSON);
});
});
}});
document.addEventListener("DOMContentLoaded", function(){
if(document.body.classList.contains('page-template-page-work')&&!document.body.classList.contains('work-loaded')){
document.body.classList.add('work-loaded');
function getAnnounces(){
var grecaptcha_key=document.getElementById('g-recaptcha').getAttribute('src').split('render=')[1];
grecaptcha.ready(function(){
grecaptcha.execute(grecaptcha_key, {action: 'submit'}).then(function(token){
let myData='action=dp_get_announces&g-recaptcha-response=' + token;
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function(){
if(this.readyState==4&&this.status==200){
var announces=xhttp.responseText;
try {
announces=JSON.parse(announces);
} catch (e){
console.log(e);
return;
}
bindAnnounces(announces);
}};
let link=document.getElementById('ajaxurl').getAttribute('href');
xhttp.open("POST", link, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
xhttp.send(myData);
});
});
}
getAnnounces();
function bindAnnounces(announces){
var announce, validAnnounces=[], jobsLi='', categoriesLi='', provincesLi='', projects=[], functions=[], provinces=[], workModal=document.getElementById('workModal');
var workCategoryPlaceholder=document.querySelector('#work-category').innerHTML;
var workProvincePlaceholder=document.querySelector('#work-province').innerHTML;
for(let i=0; i<announces.length; i++){
announce=announces[i];
expire=announce.expires.replace(/ *\([^)]*\) */g, "");
expire=expire.split('-');
newDate=new Date(expire[2], expire[1]-1, expire[0]);
timestamp=newDate.getTime();
if(timestamp - Date.now() > 0){
validAnnounces.push(announce);
}}
for(let i=0; i<validAnnounces.length; i++){
announce=validAnnounces[i];
if(announce.project_label!=null&&projects.indexOf(announce.project_label)===-1){
projects.push(announce.project_label)
}
}
for(let i=0; i<projects.length; i++){
jobsLi +='<li><a class="dropdown-item" href="#" data-value="'+projects[i]+'">'+projects[i]+'</a></li>';
}
document.getElementById('work-job').parentNode.querySelector('ul').innerHTML=jobsLi;
var filters=document.querySelectorAll('.search-work .col-md-4');
for(let i=0; i<filters.length; i++){
if(i > 0){
filters[i].classList.add('inactive');
}}
const searchWorkDropdowns=document.querySelector('#work-job').parentNode.querySelectorAll('.dropdown-menu li a');
for(let i=0; i<searchWorkDropdowns.length; i++){
searchWorkDropdowns[i].addEventListener('click', function(event){
var dropdown=findAncestor(this, '.dropdown');
dropdown.querySelector('.btn').innerHTML=this.innerHTML;
dropdown.querySelector('.btn').value=this.getAttribute('data-value');
if(dropdown.querySelector('.btn').getAttribute('id')=='work-job'){
var currentJob=this.getAttribute('data-value');
enableCategories=[];
categoriesLi='';
var boxes=document.querySelectorAll('#candidature .work-boxes .box');
for(let e=0; e<boxes.length; e++){
boxes[e].parentNode.classList.remove('active');
boxes[e].parentNode.classList.remove('inactive');
boxes[e].parentNode.classList.remove('hidden');
if(boxes[e].getAttribute('data-job')==currentJob){
boxes[e].parentNode.classList.add('active');
cat=boxes[e].getAttribute('data-category');
if(enableCategories.indexOf(cat)===-1){
enableCategories.push(cat);
}}else{
boxes[e].parentNode.classList.add('inactive');
}}
for(let e=0; e<filters.length; e++){
if(e > 1){
filters[e].classList.add('inactive');
}else{
filters[e].classList.remove('inactive');
}}
for(let e=0; e<enableCategories.length; e++){
categoriesLi +='<li><a class="dropdown-item" href="#" data-value="'+enableCategories[e]+'">'+enableCategories[e]+'</a></li>';
}
document.querySelector('#work-category').innerHTML=workCategoryPlaceholder;
document.querySelector('#work-category').parentNode.querySelector('ul').innerHTML=categoriesLi;
workPagination();
workCategoryDropdown=document.querySelector('#work-category').parentNode.querySelectorAll('.dropdown-menu li a');
for(let e=0; e<workCategoryDropdown.length; e++){
workCategoryDropdown[e].addEventListener('click', function(event){
var dropdown=findAncestor(this, '.dropdown');
dropdown.querySelector('.btn').innerHTML=this.innerHTML;
dropdown.querySelector('.btn').value=this.getAttribute('data-value');
var currentCategory=this.getAttribute('data-value');
enableProvince=[];
provinceLi='';
for(let e=0; e<boxes.length; e++){
boxes[e].parentNode.classList.remove('active');
boxes[e].parentNode.classList.remove('inactive');
boxes[e].parentNode.classList.remove('hidden');
if(boxes[e].getAttribute('data-job')==currentJob&&boxes[e].getAttribute('data-category')==currentCategory){
boxes[e].parentNode.classList.add('active');
province=boxes[e].getAttribute('data-province');
if(enableProvince.indexOf(province)===-1){
enableProvince.push(province);
}}else{
boxes[e].parentNode.classList.add('inactive');
}}
for(let e=0; e<filters.length; e++){
filters[e].classList.remove('inactive');
}
for(let e=0; e<enableProvince.length; e++){
provinceLi +='<li><a class="dropdown-item" href="#" data-value="'+enableProvince[e]+'">'+enableProvince[e]+'</a></li>';
}
document.querySelector('#work-province').innerHTML=workProvincePlaceholder;
document.querySelector('#work-province').parentNode.querySelector('ul').innerHTML=provinceLi;
workPagination();
workProvinceDropdown=document.querySelector('#work-province').parentNode.querySelectorAll('.dropdown-menu li a');
for(let e=0; e<workProvinceDropdown.length; e++){
workProvinceDropdown[e].addEventListener('click', function(event){
var dropdown=findAncestor(this, '.dropdown');
dropdown.querySelector('.btn').innerHTML=this.innerHTML;
dropdown.querySelector('.btn').value=this.getAttribute('data-value');
var currentProvince=this.getAttribute('data-value');
for(let e=0; e<boxes.length; e++){
boxes[e].parentNode.classList.remove('active');
boxes[e].parentNode.classList.remove('inactive');
boxes[e].parentNode.classList.remove('hidden');
if(boxes[e].getAttribute('data-job')==currentJob&&boxes[e].getAttribute('data-category')==currentCategory&&boxes[e].getAttribute('data-province')==currentProvince){
boxes[e].parentNode.classList.add('active');
}else{
boxes[e].parentNode.classList.add('inactive');
}}
workPagination();
event.preventDefault();
});
}
event.preventDefault();
});
}}
event.preventDefault();
});
}
const announcesContainerEl=document.querySelector('#candidature .work-boxes');
if(announcesContainerEl!=null){
var itemsTemplate=Handlebars.compile(document.querySelector('.work-boxes-html').innerHTML);
var resultItemContext={ announces: validAnnounces };
announcesContainerEl.innerHTML=itemsTemplate(resultItemContext);
workPagination();
var announcesBoxes=announcesContainerEl.querySelectorAll('.box');
for(let i=0; i<announcesBoxes.length; i++){
announcesBoxes[i].addEventListener('click', function(e){
var id=this.getAttribute('data-id');
for(let e=0; e<validAnnounces.length; e++){
if(validAnnounces[e].id==id){
var announce=validAnnounces[e], announceContent;
workModal.querySelector('.teaser h2').innerHTML=announce.title;
workModal.querySelector('.teaser .location-name').innerHTML=announce.county;
announceContent=workModal.querySelector('.work-content');
announceContent.innerHTML='';
announceContent.innerHTML +=sanitizeAnnounceHtml(announce.position_description);
announceContent.innerHTML +=sanitizeAnnounceHtml(announce.requirements_description);
announceContent.innerHTML +=sanitizeAnnounceHtml(announce.other_information_description);
workModal.querySelector('.work-form').innerHTML='<iframe src="'+announce.registration_iframe_url+'"></iframe>';
}}
e.preventDefault();
});
}
document.querySelector('.search-work').classList.add('work-loaded');
}}
function findAncestor (el, sel){
while ((el=el.parentElement)&&!((el.matches||el.matchesSelector).call(el,sel)));
return el;
}
function sanitizeAnnounceHtml(html){
var t=document.createElement('template');
t.innerHTML=html;
content=t.content;
p=content.childNodes;
content.innerHTML='';
for(let i=0; i<p.length; i++){
if(p[i].innerHTML.trim()!=''&&p[i].innerHTML.trim()!='<br>')
content.innerHTML +='<'+p[i].localName+'>'+p[i].innerHTML+'</'+p[i].localName+'>';
}
return content.innerHTML;
}
function workPagination(){
var boxes_per_page=6;
var boxes=document.querySelectorAll('.work-boxes .active');
var totPages=Math.ceil(boxes.length / boxes_per_page);
var pagination=document.querySelector('.work-boxes-pagination .pager');
var pages='';
for(let i=0; i<boxes.length; i++){
if(i >=boxes_per_page){
boxes[i].classList.add('hidden');
}}
for(let i=1; i<=totPages; i++){
current=(i==1) ? ' current':'';
if(i==3||i==totPages-1){
pages +='<span class="dots">...</span>';
}
pages +='<span class="page'+current+'">'+i+'</span>';
}
pagination.innerHTML='<span class="prev"></span>' + pages + '<span class="next"></span>';
var pages=pagination.querySelectorAll('span');
for(let i=0; i<pages.length; i++){
pages[i].addEventListener('click', function(){
if(!this.classList.contains('current')&&!this.classList.contains('dots')){
var currentPage=parseInt(pagination.querySelector('.current').innerHTML);
var pageClick=null;
if(this.classList.contains('prev')&&currentPage > 1){
pageClick=currentPage - 1;
}
if(this.classList.contains('next')&&currentPage < pages.length-4){
pageClick=currentPage + 1;
}
if(this.classList.contains('page')){
pageClick=parseInt(this.innerHTML);
}
if(pageClick!=null){
for(let e=0; e<pages.length; e++){
if(pages[e].innerHTML==currentPage){
pages[e].classList.remove('current');
}
if(pages[e].innerHTML==pageClick){
pages[e].classList.add('current');
}}
minLimit=(pageClick-1)*boxes_per_page;
maxLimit=minLimit+boxes_per_page;
for(let e=0; e<boxes.length; e++){
boxes[e].classList.remove('hidden');
if(e < minLimit||e >=maxLimit){
boxes[e].classList.add('hidden');
}}
}
updatePaginationPager();
}});
}
function updatePaginationPager(){
myCurrent=parseInt(pagination.querySelector('.current').innerHTML);
dots=pagination.querySelectorAll('.dots');
if(dots.length){
dots[0].classList.remove('hidden');
if(myCurrent < 5||pages.length<=9){
dots[0].classList.add('hidden');
}
if(dots.length > 1){
dots[1].classList.remove('hidden');
if(myCurrent==pages.length-6||myCurrent==pages.length-7||myCurrent==pages.length-8||pages.length<=9){
dots[1].classList.add('hidden');
}}
for(let i=0; i<pages.length; i++){
if(!pages[i].classList.contains('dots')){
pages[i].classList.remove('hidden');
if(i > 1&&i<pages.length-3){
if(i!=myCurrent&&i!=myCurrent+1&&i!=myCurrent+2&&pages.length > 9){
pages[i].classList.add('hidden');
}}
}}
if(myCurrent <=5){
pages[2].classList.remove('hidden');
}
if(myCurrent==pages.length-8){
pages[pages.length-5].classList.remove('hidden');
}}
}
updatePaginationPager();
}}
if(document.querySelector('#primaryContentSlide .cta')!=null){
document.querySelector('#primaryContentSlide .cta').addEventListener('click', function(e){
if(this.getAttribute('href')=='#candidature'){
minus=(window.innerWidth > 991) ? 200:0
scroll({
top: document.getElementById('candidature').offsetTop - minus,
behavior: "smooth"
});
e.preventDefault();
}
if(this.getAttribute('href')=='#recensioni'){
minus=(window.innerWidth > 991) ? 200:0
scroll({
top: document.getElementById('index-2').offsetTop - minus,
behavior: "smooth"
});
e.preventDefault();
}});
}});
(function (){
var isDesktop=function (){ return window.matchMedia("(min-width: 768px)").matches; };
function initRsMobile(){
if(typeof jQuery==="undefined") return;
var wrap=jQuery(".review-slider .rs-slider-mobile");
if(!wrap.length) return;
wrap.find(".rs-tab").on("click", function (){
var tab=jQuery(this).attr("data-tab");
wrap.find(".rs-tab").removeClass("rs-active").attr("aria-selected", "false");
jQuery(this).addClass("rs-active").attr("aria-selected", "true");
wrap.find(".rs-panel").removeClass("rs-active");
var activePanel=wrap.find(".rs-panel[data-tab=\"" + tab + "\"]").addClass("rs-active");
setTimeout(checkCardTruncation, 80);
});
function setMobileCardsHeight(owlEl){
owlEl.find(".rs-card").removeClass("rs-expanded").css("height", "");
owlEl.find(".rs-card-more").text("Mostra di più").attr("aria-expanded", "false");
checkCardTruncation();
}
wrap.find(".rs-owl-mobile").each(function (){
var el=jQuery(this);
if(el.hasClass("owl-loaded")) return;
el.owlCarousel({
items: 1,
margin: 12,
loop: el.find(".item").length > 1,
nav: false,
dots: true,
autoplay: false,
onTranslated: function (){
setTimeout(function (){ setMobileCardsHeight(el); }, 150);
},
onChanged: function (){
setTimeout(function (){ setMobileCardsHeight(el); }, 150);
},
onDragged: function (){
setTimeout(function (){ setMobileCardsHeight(el); }, 150);
}});
el.on("translated.owl.carousel dragged.owl.carousel changed.owl.carousel", function (){
setTimeout(function (){ setMobileCardsHeight(el); }, 150);
});
});
setTimeout(checkCardTruncation, 200);
}
function initReviewSliders(){
if(typeof jQuery==="undefined") return;
var section=jQuery(".review-slider");
if(!section.length) return;
var desktopBlock=section.find(".rs-slider-desktop");
var rsOwl=desktopBlock.find(".rs-owl");
if(!rsOwl.length) return;
rsOwl.each(function (){
var el=jQuery(this);
if(el.hasClass("owl-loaded")) return;
el.owlCarousel({
items: 2,
margin: 16,
loop: el.find(".item").length > 2,
nav: false,
dots: false,
autoplay: false,
navText: ["‹", "›"],
responsive: {
0: { items: 1 },
768: { items: 2 },
992: { items: 2 }}
});
el.on("changed.owl.carousel", function (){
el.find(".rs-card").removeClass("rs-expanded");
el.find(".rs-card-more").text("Mostra di più").attr("aria-expanded", "false");
resetCardHeights(el);
setTimeout(function (){
equalizeVisibleSlideCards(el);
checkCardTruncation();
}, 80);
});
});
section.find(".rs-summary-prev").on("click", function (){
rsOwl.each(function (){ jQuery(this).trigger("prev.owl.carousel"); });
});
section.find(".rs-summary-next").on("click", function (){
rsOwl.each(function (){ jQuery(this).trigger("next.owl.carousel"); });
});
}
function checkCardTruncation(){
if(typeof jQuery==="undefined") return;
jQuery(".rs-card").each(function (){
var card=jQuery(this);
var textEl=card.find(".rs-card-text")[0];
var btn=card.find(".rs-card-more");
if(!textEl||!btn.length) return;
if(card.hasClass("rs-expanded")) return;
if(textEl.scrollHeight > textEl.clientHeight){
btn.addClass("is-visible").attr("aria-expanded", "false");
}else{
btn.removeClass("is-visible");
}});
}
function equalizeCardHeights(sliderEl){
if(!sliderEl||!sliderEl.length) return;
sliderEl.each(function (){
var el=jQuery(this);
if(el.hasClass("rs-owl-mobile")) return;
var cards=el.find(".rs-card");
if(!cards.length) return;
var panel=el.closest(".rs-panel");
if(panel.length&&panel.css("display")==="none") return;
cards.css("height", "auto");
var maxH=0;
cards.each(function (){
var h=this.offsetHeight;
if(h > maxH) maxH=h;
});
if(maxH > 0) cards.css("height", maxH + "px");
});
}
function resetCardHeights(sliderEl){
if(!sliderEl||!sliderEl.length) return;
sliderEl.find(".rs-card").css("height", "");
}
function equalizeVisibleSlideCards(carouselEl){
if(!carouselEl||!carouselEl.length) return;
if(carouselEl.hasClass("rs-owl-mobile")) return;
var cards=carouselEl.find(".owl-item.active .rs-card");
if(!cards.length){
cards=carouselEl.find(".owl-item.center .rs-card");
}
if(!cards.length){
equalizeCardHeights(carouselEl);
return;
}
cards.css("height", "auto");
var maxH=0;
cards.each(function (){
var h=this.offsetHeight;
if(h > maxH) maxH=h;
});
if(maxH > 0) cards.css("height", maxH + "px");
}
function runEqualizationForSlider(slider){
if(!slider||!slider.length) return;
resetCardHeights(slider);
setTimeout(function (){
equalizeCardHeights(slider);
setTimeout(checkCardTruncation, 50);
}, 80);
}
function bindCardMore(){
if(typeof jQuery==="undefined") return;
jQuery(document).on("click", ".rs-card-more", function (){
var btn=jQuery(this);
var card=btn.closest(".rs-card");
var slider=card.closest(".rs-owl-mobile, .rs-owl");
var isGmbOpinioni=card.closest(".opinioni-pazienti").length > 0;
if(card.hasClass("rs-expanded")){
card.removeClass("rs-expanded");
btn.text("Mostra di più").attr("aria-expanded", "false");
if(slider.length&&!isGmbOpinioni){
var isMobile=slider.hasClass("rs-owl-mobile");
if(isMobile){
resetCardHeights(slider);
}else{
runEqualizationForSlider(slider);
}}
}else{
card.addClass("rs-expanded");
btn.text("Mostra di meno").attr("aria-expanded", "true");
if(slider.length&&!isGmbOpinioni){
var isMobile=slider.hasClass("rs-owl-mobile");
if(!isMobile){
equalizeCardHeights(slider);
setTimeout(checkCardTruncation, 50);
}}
}});
}
function init(){
if(isDesktop()){
initReviewSliders();
}else{
initRsMobile();
}
bindCardMore();
setTimeout(checkCardTruncation, 200);
jQuery(window).on("resize", function (){
jQuery(".rs-card").removeClass("rs-expanded");
jQuery(".rs-card-more").text("Mostra di più").attr("aria-expanded", "false").removeClass("is-visible");
resetCardHeights(jQuery(".review-slider .rs-owl-mobile, .review-slider .rs-owl"));
setTimeout(checkCardTruncation, 150);
});
}
if(document.readyState==="loading"){
document.addEventListener("DOMContentLoaded", init);
}else{
init();
}})();
function landingSubmit(form, subject, recipients, thankyou, validExtensions=['doc', 'docx', 'pdf', 'png']){
var grecaptcha_key=document.getElementById('g-recaptcha').getAttribute('src').split('render=')[1];
grecaptcha.ready(function(){
grecaptcha.execute(grecaptcha_key, {action: 'submit'}).then(function(token){
document.body.classList.add('overlay-loading-show');
const urlParams=new URLSearchParams(window.location.search);
const gclid_field=urlParams.get('gclid');
form.gclid_field=(gclid_field!=null) ? gclid_field:'';
var formData=new FormData();
formData.append('action', 'dp_landing');
formData.append('g-recaptcha-response', token);
formData.append('data', JSON.stringify(form));
formData.append('subject', subject);
formData.append('recipients', JSON.stringify(recipients));
var fileInput=document.getElementById('request-landing-file');
if(fileInput!=null){
var hint=fileInput.parentNode.querySelector('.hint');
if(hint!=null){
hint.remove();
}
var file=fileInput.files[0];
if(file){
var isValidFile=false;
var fileExtension=file.name.split('.').pop();
for(let i=0; i<validExtensions.length; i++){
if(fileExtension==validExtensions[i]){
isValidFile=true;
}}
if(!isValidFile){
var error='I formati validi sono: ' + validExtensions.join(', ');
}else{
var fileSizeMB=file.size / (1024 * 1024);
if(fileSizeMB > 20){
isValidFile=false;
var error='La dimensione massima deve essere 20MB';
}}
if(isValidFile){
formData.append('file', file);
}
if(!isValidFile){
var spanElement=document.createElement('span');
spanElement.textContent=error;
spanElement.classList.add('hint');
spanElement.style.display='block';
spanElement.style.marginBottom=0;
fileInput.insertAdjacentElement('afterend', spanElement);
document.body.classList.remove('overlay-loading-show');
return;
}}
}
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function(){
if(this.readyState==4&&this.status==200){
goThankyou(thankyou, {email: formData.email});
}};
let link=document.getElementById('ajaxurl').getAttribute('href');
xhttp.open("POST", link, true);
xhttp.send(formData);
});
});
}
function goThankyou(path, params, method='post'){
const form=document.createElement('form');
form.method=method;
form.action=path;
for (const key in params){
if(params.hasOwnProperty(key)){
const hiddenField=document.createElement('input');
hiddenField.type='hidden';
hiddenField.name=key;
hiddenField.value=params[key];
form.appendChild(hiddenField);
}}
document.body.appendChild(form);
form.submit();
};
document.addEventListener("DOMContentLoaded", function(){
if(!document.body.classList.contains('area-pazienti-login-loaded')&&document.body.classList.contains('area-pazienti')&&!document.body.classList.contains('area-pazienti-dashboard')){
document.body.classList.add('area-pazienti-login-loaded');
if(!document.body.classList.contains('area-pazienti-register')){
if(!sessionStorage.getItem('userData')){
const currentUrl=window.location.href;
const urlObj=new URL(currentUrl);
const params=new URLSearchParams(urlObj.search);
if(!params.has('matchPatient')&&!params.has('TokenSelector')&&!params.has('ts')){
window.location.href='/area-pazienti/?login';
}}else{
window.location.href='/area-pazienti/dashboard/';
}}
var login=document.getElementById('login');
var register=document.getElementById('register');
if(login!=null){
var formLogin=login.querySelector('.form-login form');
var formRecover=login.querySelector('.form-recover form');
formLogin.addEventListener('submit', function(e){
const formLoginData=new FormData(formLogin);
formLogin.querySelector('.error').innerHTML='';
formLogin.querySelector('.error').classList.add('hide');
var grecaptcha_key=document.getElementById('g-recaptcha').getAttribute('src').split('render=')[1];
grecaptcha.ready(function(){
grecaptcha.execute(grecaptcha_key, {action: 'submit'}).then(function(token){
document.body.classList.add('overlay-loading-show');
formLoginData.append('action', 'dp_login');
formLoginData.append('g-recaptcha-response', token);
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function(){
if(this.readyState==4&&this.status==200){
var response=xhttp.responseText;
if(isJSON(response)){
response=JSON.parse(response);
if(!response.esit){
document.body.classList.remove('overlay-loading-show');
formLogin.querySelector('.error').innerHTML=response.errorDesc;
formLogin.querySelector('.error').classList.remove('hide');
}else{
response.Data.expiry=(formLoginData.get('remember')) ? false:(new Date().getTime() + (60 * 60 * 1000));
sessionStorage.setItem('userData', JSON.stringify(response.Data));
window.location.href='/area-pazienti/dashboard/';
}}else{
document.body.classList.remove('overlay-loading-show');
formLogin.querySelector('.error').innerHTML=response;
formLogin.querySelector('.error').classList.remove('hide');
}}
};
let link=document.getElementById('ajaxurl').getAttribute('href');
xhttp.open("POST", link, true);
xhttp.send(formLoginData);
});
});
e.preventDefault();
});
formRecover.addEventListener('submit', function(e){
const formRecoverData=new FormData(formRecover);
formRecover.querySelector('.error').innerHTML='';
formRecover.querySelector('.error').classList.add('hide');
formRecover.querySelector('.valid').innerHTML='';
formRecover.querySelector('.valid').classList.add('hide');
var grecaptcha_key=document.getElementById('g-recaptcha').getAttribute('src').split('render=')[1];
grecaptcha.ready(function(){
grecaptcha.execute(grecaptcha_key, {action: 'submit'}).then(function(token){
document.body.classList.add('overlay-loading-show');
formRecoverData.append('action', 'dp_recover');
formRecoverData.append('g-recaptcha-response', token);
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function(){
if(this.readyState==4&&this.status==200){
document.body.classList.remove('overlay-loading-show');
var response=xhttp.responseText;
if(isJSON(response)){
response=JSON.parse(response);
if(!response.esit){
formRecover.querySelector('.error').innerHTML=response.errorDesc;
formRecover.querySelector('.error').classList.remove('hide');
}else{
formRecover.querySelector('.valid').innerHTML='È stata inviata una mail per recuperare la password';
formRecover.querySelector('.valid').classList.remove('hide');
}}else{
formRecover.querySelector('.error').innerHTML=response;
formRecover.querySelector('.error').classList.remove('hide');
}}
};
let link=document.getElementById('ajaxurl').getAttribute('href');
xhttp.open("POST", link, true);
xhttp.send(formRecoverData);
});
});
e.preventDefault();
});
}
if(register!=null){
var formRegister=register.querySelector('.form-register form');
formRegister.addEventListener('submit', function(e){
const formRegisterData=new FormData(formRegister);
formRegister.querySelector('.error').innerHTML='';
formRegister.querySelector('.error').classList.add('hide');
var grecaptcha_key=document.getElementById('g-recaptcha').getAttribute('src').split('render=')[1];
grecaptcha.ready(function(){
grecaptcha.execute(grecaptcha_key, {action: 'submit'}).then(function(token){
document.body.classList.add('overlay-loading-show');
formRegisterData.append('action', 'dp_register');
formRegisterData.append('g-recaptcha-response', token);
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function(){
if(this.readyState==4&&this.status==200){
document.body.classList.remove('overlay-loading-show');
var response=xhttp.responseText;
if(isJSON(response)){
response=JSON.parse(response);
if(!response.esit){
formRegister.querySelector('.error').innerHTML=response.errorDesc;
formRegister.querySelector('.error').classList.remove('hide');
}else{
register.querySelector('.form-register').classList.add('hide');
register.querySelector('.thankyou').classList.remove('hide');;
}}else{
formRegister.querySelector('.error').innerHTML=response;
formRegister.querySelector('.error').classList.remove('hide');
}}
};
let link=document.getElementById('ajaxurl').getAttribute('href');
xhttp.open("POST", link, true);
xhttp.send(formRegisterData);
});
});
e.preventDefault();
});
}
var loginLinks=document.querySelectorAll('.show-login-form');
for(let i=0; i<loginLinks.length; i++){
loginLinks[i].addEventListener('click', function(e){
login.classList.remove('hide');
register.classList.add('hide');
login.querySelector('.form-login').classList.remove('hide');
login.querySelector('.form-recover').classList.add('hide');
e.preventDefault();
});
}
var recoverLinks=document.querySelectorAll('.show-recover-form');
for(let i=0; i<recoverLinks.length; i++){
recoverLinks[i].addEventListener('click', function(e){
login.classList.remove('hide');
register.classList.add('hide');
login.querySelector('.form-login').classList.add('hide');
login.querySelector('.form-recover').classList.remove('hide');
e.preventDefault();
});
}
var registerLinks=document.querySelectorAll('.show-register-form');
for(let i=0; i<registerLinks.length; i++){
registerLinks[i].addEventListener('click', function(e){
login.classList.add('hide');
register.classList.remove('hide');
e.preventDefault();
});
}}
function checkExpiry(){
var expired=false;
var key='userData';
var itemStr=sessionStorage.getItem(key);
if(!itemStr&&document.body.classList.contains('page-template-page-register')){
return null;
}
if(!itemStr){
window.location.href='/area-pazienti/?login';
return null;
}
if(isJSON(itemStr)){
var item=JSON.parse(itemStr);
if(item.expiry){
var now=new Date();
if(now.getTime() > item.expiry){
sessionStorage.removeItem(key);
expired=true;
}}
if(sessionStorage.getItem(key)&&document.body.classList.contains('area-pazienti')&&!document.body.classList.contains('area-pazienti-dashboard')){
document.body.classList.add('overlay-loading-show');
window.location.href='/area-pazienti/dashboard/';
return null;
}}else{
sessionStorage.removeItem(key);
expired=true;
}
if(expired&&document.body.classList.contains('page-template-page-register')){
return null;
}
if(expired&&document.body.classList.contains('area-pazienti')){
document.body.classList.add('overlay-loading-show');
window.location.href='/area-pazienti/?login';
return null;
}}
function isJSON(str){
try {
JSON.parse(str);
return true;
} catch (e){
return false;
}}
});
var shortcodeMap;
function shortcodeInitMap(lat=null, lng=null, zoom=null){
class CustomInfoWindow extends google.maps.OverlayView {
constructor(){
super();
this.div=null;
this.position=null;
this.visible=false;
}
onAdd(){
this.div=document.createElement('div');
this.div.className='custom-infowindow';
this.getPanes().floatPane.appendChild(this.div);
this.div.addEventListener('click', function (event){
event.stopPropagation();
});
this.div.addEventListener('touchstart', function (event){
event.stopPropagation();
});
}
draw(){
if(!this.position||!this.div||!this.visible) return;
const overlayProjection=this.getProjection();
const pixelPosition=overlayProjection.fromLatLngToDivPixel(this.position);
if(pixelPosition){
this.div.style.left=`${pixelPosition.x}px`;
this.div.style.top=`${pixelPosition.y}px`;
this.div.style.display='block';
const divHeight=this.div.offsetHeight;
const divWidth=this.div.offsetWidth;
if(window.innerWidth < 992){
const offsetX=-(divWidth / 2);
this.div.style.transform=`translate(${offsetX}px, 30px)`;
}else{
const offsetY=-(divHeight / 3) * 2;
this.div.style.transform=`translate(42px, ${offsetY}px)`;
}}
}
onRemove(){
if(this.div){
this.div.parentNode.removeChild(this.div);
this.div=null;
}}
setContent(content){
if(this.div){
this.div.innerHTML=content;
}}
setPosition(position){
this.position=position;
if(this.div){
this.draw();
}}
show(){
if(this.div){
this.visible=true;
this.div.style.display='block';
this.draw();
}}
hide(){
if(this.div){
this.visible=false;
this.div.style.display='none';
}}
}
const shortcodeMapStyle=[
{
"elementType": "geometry",
"stylers": [
{
"color": "#f5f5f5"
}
]
},
{
"elementType": "labels.icon",
"stylers": [
{
"visibility": "off"
}
]
},
{
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#616161"
}
]
},
{
"elementType": "labels.text.stroke",
"stylers": [
{
"color": "#f5f5f5"
}
]
},
{
"featureType": "administrative.land_parcel",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#bdbdbd"
}
]
},
{
"featureType": "landscape.man_made",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#f8f8fa"
}
]
},
{
"featureType": "landscape.natural",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#f8f8fa"
}
]
},
{
"featureType": "poi",
"elementType": "geometry",
"stylers": [
{
"color": "#eeedf2"
}
]
},
{
"featureType": "poi",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#eeedf2"
}
]
},
{
"featureType": "poi",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#757575"
}
]
},
{
"featureType": "poi.park",
"elementType": "geometry",
"stylers": [
{
"color": "#e5e5e5"
}
]
},
{
"featureType": "poi.park",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#eeedf2"
}
]
},
{
"featureType": "poi.park",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#9e9e9e"
}
]
},
{
"featureType": "road",
"elementType": "geometry",
"stylers": [
{
"color": "#ffffff"
}
]
},
{
"featureType": "road.arterial",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#dad8e3"
}
]
},
{
"featureType": "road.arterial",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#757575"
}
]
},
{
"featureType": "road.highway",
"elementType": "geometry",
"stylers": [
{
"color": "#dad8e3"
}
]
},
{
"featureType": "road.highway",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#dad8e3"
}
]
},
{
"featureType": "road.highway",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#616161"
}
]
},
{
"featureType": "road.local",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#dad8e3"
}
]
},
{
"featureType": "road.local",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#9e9e9e"
}
]
},
{
"featureType": "transit.line",
"elementType": "geometry",
"stylers": [
{
"color": "#e5e5e5"
}
]
},
{
"featureType": "transit.station",
"elementType": "geometry",
"stylers": [
{
"color": "#eeedf2"
}
]
},
{
"featureType": "water",
"elementType": "geometry",
"stylers": [
{
"color": "#c9c9c9"
}
]
},
{
"featureType": "water",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#9e9e9e"
}
]
}
];
var svg_std=[
'<svg width="45" height="45" viewBox="0 0 45 44" fill="none" xmlns="http://www.w3.org/2000/svg">',
'<rect x="0.924805" y="0.5" width="43.0668" height="43" rx="21.5" fill="white"/>',
'<rect x="0.924805" y="0.5" width="43.0668" height="43" rx="21.5" stroke="#215682"/>',
'<path d="M22.4246 13.6666C19.1996 13.6666 16.5913 16.275 16.5913 19.5C16.5913 23.875 22.4246 30.3333 22.4246 30.3333C22.4246 30.3333 28.258 23.875 28.258 19.5C28.258 16.275 25.6496 13.6666 22.4246 13.6666ZM22.4246 21.5833C21.8721 21.5833 21.3422 21.3638 20.9515 20.9731C20.5608 20.5824 20.3413 20.0525 20.3413 19.5C20.3413 18.9474 20.5608 18.4175 20.9515 18.0268C21.3422 17.6361 21.8721 17.4166 22.4246 17.4166C22.9772 17.4166 23.5071 17.6361 23.8978 18.0268C24.2885 18.4175 24.508 18.9474 24.508 19.5C24.508 20.0525 24.2885 20.5824 23.8978 20.9731C23.5071 21.3638 22.9772 21.5833 22.4246 21.5833Z" fill="#215682"/>',
'</svg>'
].join('\n');
var svg_nearest=[
'<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">',
'<rect width="44" height="44" rx="22" fill="#66C1BF"/>',
'<path d="M22.0007 13.3523C18.654 13.3523 15.9473 16.059 15.9473 19.4057C15.9473 23.9458 22.0007 30.6478 22.0007 30.6478C22.0007 30.6478 28.0541 23.9458 28.0541 19.4057C28.0541 16.059 25.3474 13.3523 22.0007 13.3523ZM22.0007 21.5676C21.4273 21.5676 20.8774 21.3399 20.472 20.9344C20.0665 20.529 19.8387 19.9791 19.8387 19.4057C19.8387 18.8323 20.0665 18.2824 20.472 17.877C20.8774 17.4716 21.4273 17.2438 22.0007 17.2438C22.5741 17.2438 23.124 17.4716 23.5294 17.877C23.9348 18.2824 24.1626 18.8323 24.1626 19.4057C24.1626 19.9791 23.9348 20.529 23.5294 20.9344C23.124 21.3399 22.5741 21.5676 22.0007 21.5676Z" fill="white"/>',
'</svg>'
].join('\n');
var mapOptions={
center: {lat: 42.655583, lng: 12.846389},
mapTypeId: "shortcodeMapStyle",
fullscreenControl: false,
mapTypeControl: false,
streetViewControl: false,
zoom: 9,
clickableIcons: false,
zoomControl: false,
};
if(lat!=null&&lng!=null){
mapOptions.center={lat: lat, lng: lng};}
if(zoom!=null){
mapOptions.zoom=zoom;
}
shortcodeMap =
new google.maps.Map(document.querySelector('.shortcode-maps-container .map-container-shortcode'), mapOptions);
shortcodeMap.mapTypes.set('shortcodeMapStyle',
new google.maps.StyledMapType(shortcodeMapStyle, {name: 'Shortcode Map Style'}));
var markers=[];
maxDistance=document.querySelector('#centri-list').getAttribute('data-distance-max');
maxDistance=parseInt(maxDistance);
locations=document.querySelectorAll('#centri-list .box-location');
var nearestMarkerIdx=-1;
var nearestMarkerDistance=null;
for (let i=0; i < locations.length; i++){
loc_lat=locations[i].getAttribute('data-lat');
loc_lng=locations[i].getAttribute('data-lng');
distance=locations[i].getAttribute('data-distance');
markers.push({
position: {lat: parseFloat(loc_lat), lng: parseFloat(loc_lng)},
content: '<div class="tab-content"><div class="tab-box"><div class="box-location">' +
locations[i].innerHTML +
'</div></div></div>'
});
if(nearestMarkerDistance===null||parseInt(distance) < nearestMarkerDistance){
nearestMarkerDistance=distance;
nearestMarkerIdx=markers.length - 1;
}}
var currentMarker=null;
const customInfoWindow=new CustomInfoWindow();
customInfoWindow.setMap(shortcodeMap);
var nearestMarker=null;
for (var i=0; i < markers.length; i++){
const marker=new google.maps.Marker({
position: markers[i].position,
content: markers[i].content,
map: shortcodeMap,
icon: {url: 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg_std)}});
if(i===nearestMarkerIdx){
nearestMarker=marker;
}
marker.addListener('click', function (){
customInfoWindow.setContent(marker.content);
customInfoWindow.setPosition(marker.getPosition());
customInfoWindow.show();
const overlayProjection=customInfoWindow.getProjection();
const pixelPosition=overlayProjection.fromLatLngToDivPixel(marker.getPosition());
const divHeight=customInfoWindow.div.offsetHeight;
const divWidth=customInfoWindow.div.offsetWidth;
const centerPixel=calculateCenterForIW(divWidth, divHeight, pixelPosition);
const centerLatLng=overlayProjection.fromDivPixelToLatLng(centerPixel);
shortcodeMap.panTo(centerLatLng);
setActiveMarker(marker);
});
}
var options={
componentRestrictions: {country: "it"}};
var autocomplete=document.querySelectorAll('.autocomplete');
for (let i=0; i < autocomplete.length; i++){
new google.maps.places.Autocomplete(autocomplete[i], options);
}
google.maps.event.addListener(shortcodeMap, "click", function (event){
if(customInfoWindow){
customInfoWindow.hide();
}
if(currentMarker){
setInactiveMarker(currentMarker)
}});
google.maps.event.addListenerOnce(shortcodeMap, 'idle', function(){
if(nearestMarker!==null){
new google.maps.event.trigger(nearestMarker, 'click');
nearestMarker.setIcon({url: 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg_nearest)});
}});
function setActiveMarker(marker){
currentMarker=marker;
}
function setInactiveMarker(marker){
currentMarker=null;
}
function calculateCenterForIW(divWidth, divHeight, pixelPosition){
let offsetY, offsetX;
if(window.innerWidth < 992){
offsetY=-(divHeight / 2);
offsetX=0;
}else{
offsetY=(divHeight / 5);
offsetX=(divWidth / 2);
}
return new google.maps.Point(pixelPosition.x + offsetX,
pixelPosition.y - offsetY
);
}}
document.addEventListener("DOMContentLoaded", function (){
const shortcodeCalcSubmit=document.querySelector('.shortcode-maps-container .cta');
if(shortcodeCalcSubmit!=null){
shortcodeCalcSubmit.addEventListener('click', function (){
address=this.parentNode.querySelector('input');
if(address.value!=''){
address.disabled=true;
address.classList.add('input-loading');
shortcodeCalcSubmit.classList.add('cta-loading');
var grecaptcha_key=document.getElementById('g-recaptcha').getAttribute('src').split('render=')[1];
grecaptcha.ready(function (){
grecaptcha.execute(grecaptcha_key, {action: 'submit'}).then(function (token){
let myData='action=dp_get_latlng_by_address&g-recaptcha-response=' +
token +
'&address=' +
address.value;
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function (){
if(this.readyState==4&&this.status==200){
var latlng=xhttp.responseText;
address.disabled=false;
address.classList.remove('input-loading');
shortcodeCalcSubmit.classList.remove('cta-loading');
var lat=null, lng=null;
if(isJson(latlng)){
latlng=JSON.parse(latlng);
lat=latlng.lat;
lng=latlng.lng;
}else{
if(latlng.indexOf(',')!=-1){
latlng=address.trim().split(',');
lat=latlng[0];
lng=latlng[1];
}}
if(lat!=null&&lng!=null){
locations=document.querySelectorAll('#centri-list .box-location');
maxDistance =
document.querySelector('#centri-list').getAttribute('data-distance-max');
for (let i=0; i < locations.length; i++){
loc_lat=locations[i].getAttribute('data-lat');
loc_lng=locations[i].getAttribute('data-lng');
distance=calcDistance(lat, lng, loc_lat, loc_lng);
locations[i].querySelector('.box-location-distance').innerHTML =
'<span>' + Math.round(distance) + ' Km</span>';
locations[i].parentNode.style.order=Math.round(distance);
locations[i].setAttribute('data-distance', Math.round(distance));
}
shortcodeInitMap(lat, lng, 13);
}}
};
let link=document.getElementById('ajaxurl').getAttribute('href');
xhttp.open("POST", link, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
xhttp.send(myData);
});
});
}});
}
function isJson(str){
try {
JSON.parse(str);
}
catch (e){
return false;
}
return true;
}
function calcDistance(lat1, lon1, lat2, lon2){
const earthRadius=6371;
const dLat=(lat2 - lat1) * Math.PI / 180;
const dLon=(lon2 - lon1) * Math.PI / 180;
const a =
Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
const c=2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
const distance=earthRadius * c;
return distance;
}
var smc=document.getElementById('shortcode-search-box-container');
var inputStoreLocator=document.getElementById('inputstorelocator')
if(smc!=null&&inputStoreLocator){
document
.getElementById("inputstorelocator")
.addEventListener("keydown", function (event){
if(event.keyCode===13){
event.preventDefault();
smc.getElementsByClassName("cta booking-search")[0].click();
}});
}});
window.addEventListener('load', function (){
var inputStoreLocator=document.getElementById('inputstorelocator')
if(inputStoreLocator&&inputStoreLocator.value!==""){
document
.getElementById("shortcode-maps-container")
.getElementsByClassName("cta booking-search")[0]
.click();
}else if(document.querySelector(".shortcode-maps-container .map-container-shortcode")
){
shortcodeInitMap();
}});
function dp_shortcode_map_adjustElementPosition(){
const element=document.getElementById('shortcode-search-box-container');
const mapRef=document.getElementById('map-container-shortcode');
const newTopPosition=mapRef.offsetTop + 20;
element.style.top=`${newTopPosition}px`;
}
window.addEventListener('resize', function (){
dp_shortcode_map_adjustElementPosition;
});
document.addEventListener("updatePagedCards", function (){
document.getElementById("locator-results-desk-pagination").innerHtml='';
document.getElementById("locator-results-mobile-pagination").innerHtml='';
dp_shortcode_map_manageDesktopCards();
dp_shortcode_map_manageMobileCards();
});
function dp_shortcode_map_manageDesktopCards(){
const pages=document.querySelectorAll(".locator-results-desk .col-single-box");
const pagination=document.getElementById("locator-results-desk-pagination");
let currentPage=0;
const maxVisiblePages=3;
function getTallestBoxLocationHeight(){
let maxHeight=0;
pages.forEach(page=> {
page.style.display='flex';
const boxLocations=page.querySelectorAll(".box-location");
boxLocations.forEach(box=> {
const boxHeight=box.scrollHeight;
if(boxHeight > maxHeight){
maxHeight=boxHeight;
}});
page.style.display='';
});
return maxHeight;
}
function setBoxLocationsHeight(height){
pages.forEach(page=> {
const boxLocations=page.querySelectorAll(".box-location");
boxLocations.forEach(box=> {
box.style.height=`${height}px`;
});
});
}
function updateHeights(){
const tallestBoxLocationHeight=getTallestBoxLocationHeight();
setBoxLocationsHeight(tallestBoxLocationHeight);
}
function showPage(pageIndex){
pages.forEach((p, index)=> {
p.classList.toggle("active", index===pageIndex);
p.style.display=index===pageIndex ? 'block':'none';
});
currentPage=pageIndex;
updatePagination();
updateButtons();
}
function updateButtons(){
const prevButton=document.getElementById("prevButton");
const nextButton=document.getElementById("nextButton");
prevButton.disabled=currentPage===0;
nextButton.disabled=currentPage===pages.length - 1;
prevButton.classList.remove("active");
nextButton.classList.remove("active");
if(currentPage===0){
prevButton.classList.add("disabled");
}
if(currentPage===pages.length - 1){
nextButton.classList.add("disabled");
}}
function createPagination(){
pagination.innerHTML='';
const prevButton=document.createElement("button");
prevButton.id="prevButton";
prevButton.textContent="<";
prevButton.className="nav-button";
prevButton.addEventListener("click", function (){
if(currentPage > 0) showPage(currentPage - 1);
});
pagination.appendChild(prevButton);
const nextButton=document.createElement("button");
nextButton.id="nextButton";
nextButton.textContent=">";
nextButton.className="nav-button";
nextButton.addEventListener("click", function (){
if(currentPage < pages.length - 1) showPage(currentPage + 1);
});
pagination.appendChild(nextButton);
updatePagination();
}
function updatePagination(){
const cardLinks=document.querySelectorAll("#locator-results-desk-pagination .card-link, #locator-results-desk-pagination .ellipsis");
cardLinks.forEach(link=> link.remove());
const totalPages=pages.length;
let startPage=Math.max(currentPage - 1, 0);
let endPage=Math.min(currentPage + 1, totalPages - 1);
if(currentPage - 1 < 0){
endPage=Math.min(maxVisiblePages - 1, totalPages - 1);
}
if(currentPage + 1 > totalPages - 1){
startPage=Math.max(totalPages - maxVisiblePages, 0);
}
if(startPage > 0){
addPageLink(0);
if(startPage > 1) addEllipsis();
}
for (let i=startPage; i <=endPage; i++){
addPageLink(i);
}
if(endPage < totalPages - 1){
if(endPage < totalPages - 2) addEllipsis();
addPageLink(totalPages - 1);
}
pagination.appendChild(document.getElementById("nextButton"));
}
function addPageLink(page){
const cardLink=document.createElement("button");
cardLink.textContent=page + 1;
cardLink.className="card-link";
cardLink.addEventListener("click", function (){
showPage(page);
});
pagination.insertBefore(cardLink, document.getElementById("nextButton"));
if(page===currentPage){
cardLink.classList.add("active");
}}
function addEllipsis(){
const ellipsis=document.createElement("span");
ellipsis.textContent="...";
ellipsis.className="ellipsis";
pagination.insertBefore(ellipsis, document.getElementById("nextButton"));
}
createPagination();
updateHeights();
showPage(currentPage);
window.addEventListener("resize", updateHeights);
}
function dp_shortcode_map_manageMobileCards(){
const pages=document.querySelectorAll(".locator-results-mobile .col-single-box");
const pagination=document.getElementById("locator-results-mobile-pagination");
let currentPage=0;
const maxVisiblePages=3;
function getTallestBoxLocationHeight(){
let maxHeight=0;
pages.forEach(page=> {
page.style.display='flex';
const boxHeight=page.scrollHeight;
if(boxHeight > maxHeight){
maxHeight=boxHeight;
}
page.style.display='';
});
return maxHeight;
}
function setBoxLocationsHeight(height){
pages.forEach(page=> {
page.style.height=`${height}px`;
});
}
function showPage(pageIndex){
pages.forEach((p, index)=> {
p.classList.toggle("active", index===pageIndex);
p.style.display=index===pageIndex ? 'block':'none';
});
currentPage=pageIndex;
updatePagination();
updateButtons();
}
function updateButtons(){
const prevButton=document.getElementById("prevButtonMobile");
const nextButton=document.getElementById("nextButtonMobile");
prevButton.disabled=currentPage===0;
nextButton.disabled=currentPage===pages.length - 1;
prevButton.classList.remove("active");
nextButton.classList.remove("active");
if(currentPage===0){
prevButton.classList.add("disabled");
}
if(currentPage===pages.length - 1){
nextButton.classList.add("disabled");
}}
function createPagination(){
pagination.innerHTML='';
const prevButton=document.createElement("button");
prevButton.id="prevButtonMobile";
prevButton.textContent="<";
prevButton.className="nav-button";
prevButton.addEventListener("click", function (){
if(currentPage > 0) showPage(currentPage - 1);
});
pagination.appendChild(prevButton);
const nextButton=document.createElement("button");
nextButton.id="nextButtonMobile";
nextButton.textContent=">";
nextButton.className="nav-button";
nextButton.addEventListener("click", function (){
if(currentPage < pages.length - 1) showPage(currentPage + 1);
});
pagination.appendChild(nextButton);
updatePagination();
}
function updatePagination(){
const cardLinks=document.querySelectorAll("#locator-results-mobile-pagination .card-link, #locator-results-mobile-pagination .ellipsis");
cardLinks.forEach(link=> link.remove());
const totalPages=pages.length;
let startPage=Math.max(currentPage - 1, 0);
let endPage=Math.min(currentPage + 1, totalPages - 1);
if(currentPage - 1 < 0){
endPage=Math.min(maxVisiblePages - 1, totalPages - 1);
}
if(currentPage + 1 > totalPages - 1){
startPage=Math.max(totalPages - maxVisiblePages, 0);
}
if(startPage > 0){
addPageLink(0);
if(startPage > 1) addEllipsis();
}
for (let i=startPage; i <=endPage; i++){
addPageLink(i);
}
if(endPage < totalPages - 1){
if(endPage < totalPages - 2) addEllipsis();
addPageLink(totalPages - 1);
}
pagination.appendChild(document.getElementById("nextButtonMobile"));
}
function addPageLink(page){
const cardLink=document.createElement("button");
cardLink.textContent=page + 1;
cardLink.className="card-link";
cardLink.addEventListener("click", function (){
showPage(page);
});
pagination.insertBefore(cardLink, document.getElementById("nextButtonMobile"));
if(page===currentPage){
cardLink.classList.add("active");
}}
function addEllipsis(){
const ellipsis=document.createElement("span");
ellipsis.textContent="...";
ellipsis.className="ellipsis";
pagination.insertBefore(ellipsis, document.getElementById("nextButtonMobile"));
}
createPagination();
showPage(currentPage);
};