(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;
}}
});