URL | hm.ru/baUZ4f |
IP | ![]() |
ASN | #14061 DIGITALOCEAN-ASN |
UserAgent | Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0 |
Referer | |
Report completed | 2022-09-05 20:57:39 UTC |
Status | Loading report.. |
IDS alerts | 0 |
Blocklist alert | 1 |
urlquery alerts | No alerts detected |
Tags | None |
Fully Qualifying Domain Name | Rank | First Seen | Last Seen | IP | Comment |
---|---|---|---|---|---|
content-signature-2.cdn.mozilla.net (1) | 1152 | 2020-11-03 12:26:46 UTC | 2022-09-05 05:14:21 UTC | ![]() |
|
ocsp.quovadisglobal.com (2) | 4610 | 2012-10-10 00:35:30 UTC | 2022-09-05 19:03:00 UTC | ![]() |
|
firefox.settings.services.mozilla.com (2) | 867 | 2020-06-04 20:08:41 UTC | 2022-09-05 14:49:07 UTC | ![]() |
|
www.googletagmanager.com (2) | 75 | 2012-12-25 14:52:06 UTC | 2022-09-05 04:38:34 UTC | ![]() |
|
www.google-analytics.com (2) | 40 | 2012-10-03 01:04:21 UTC | 2022-09-05 16:49:34 UTC | ![]() |
|
kvk.nl (1) | 193535 | 2013-10-27 12:03:43 UTC | 2022-09-05 13:02:00 UTC | ![]() |
|
www.kvk.nl (12) | 214340 | 2012-09-10 12:33:13 UTC | 2022-09-05 16:24:10 UTC | ![]() |
|
dcinfos-cache.abtasty.com (2) | 11651 | 2019-03-03 16:01:18 UTC | 2022-09-05 15:35:28 UTC | ![]() |
|
try.abtasty.com (3) | 10235 | 2015-01-14 16:13:06 UTC | 2022-09-05 17:08:04 UTC | ![]() |
|
deploy.mopinion.com (2) | 24809 | 2020-02-06 01:50:39 UTC | 2022-09-05 18:29:55 UTC | ![]() |
|
cacheorcheck.mopinion.com (1) | 39439 | 2019-07-26 04:18:44 UTC | 2022-09-05 18:29:56 UTC | ![]() |
|
contile.services.mozilla.com (1) | 1114 | 2021-05-27 18:32:35 UTC | 2022-09-05 04:38:54 UTC | ![]() |
|
ocsp.digicert.com (1) | 86 | 2012-05-21 07:02:23 UTC | 2022-09-05 17:53:49 UTC | ![]() |
|
ocsp.pki.goog (3) | 175 | 2017-06-14 07:23:31 UTC | 2022-09-05 04:38:08 UTC | ![]() |
|
mc.yandex.ru (6) | 2672 | 2017-01-29 05:34:36 UTC | 2022-09-05 08:29:15 UTC | ![]() |
|
marinawielaert.hopp.to (1) | 0 | 2022-08-31 07:29:45 UTC | 2022-09-02 15:24:33 UTC | ![]() |
Unknown ranking |
channel.me (7) | 208020 | 2012-08-01 03:19:51 UTC | 2022-09-02 12:46:38 UTC | ![]() |
|
collect.mopinion.com (1) | 39930 | 2020-03-28 13:32:44 UTC | 2022-09-05 18:29:56 UTC | ![]() |
|
hm.ru (12) | 0 | 2015-05-29 13:36:41 UTC | 2022-09-05 13:26:34 UTC | ![]() |
Unknown ranking |
push.services.mozilla.com (1) | 2140 | 2015-09-03 10:29:36 UTC | 2022-09-05 05:10:58 UTC | ![]() |
|
img-getpocket.cdn.mozilla.net (6) | 1631 | 2017-09-01 03:40:57 UTC | 2022-09-05 08:52:38 UTC | ![]() |
|
ocsp.globalsign.com (1) | 2075 | 2012-05-25 06:20:55 UTC | 2022-09-05 04:45:07 UTC | ![]() |
|
static.kvk.nl (23) | 284788 | 2019-04-27 03:29:59 UTC | 2022-09-02 12:46:26 UTC | ![]() |
|
web-api.kvk.nl (2) | 303010 | 2018-02-07 12:55:47 UTC | 2022-09-02 12:46:27 UTC | ![]() |
|
region1.google-analytics.com (1) | 0 | 2022-03-17 11:26:33 UTC | 2022-09-05 04:39:43 UTC | ![]() |
Domain (google-analytics.com) ranked at: 8401 |
r3.o.lencr.org (9) | 344 | 2020-12-02 08:52:13 UTC | 2022-09-05 04:38:00 UTC | ![]() |
|
api.hm.ru (1) | 0 | 2019-12-17 12:56:26 UTC | 2022-09-05 13:26:23 UTC | ![]() |
Unknown ranking |
ocsp.sectigo.com (1) | 487 | 2018-12-17 11:31:55 UTC | 2022-09-05 17:05:55 UTC | ![]() |
|
ariane.abtasty.com (1) | 11009 | 2018-09-07 14:00:37 UTC | 2022-09-05 17:08:04 UTC | ![]() |
Scan Date | Severity | Indicator | Comment |
---|---|---|---|
2022-09-05 | 2 | marinawielaert.hopp.to/google2 | Phishing |
Date | UQ / IDS / BL | URL | IP |
---|---|---|---|
0 - 0 - 5 | hm.ru/wnqdqo | ![]() |
|
0 - 3 - 1 | hm.ru/eLXzY4?100218657NRTYXF1JH43EL1028154 | ![]() |
|
0 - 0 - 6 | hm.ru/Quxq73 | ![]() |
|
0 - 0 - 4 | hm.ru/VyftHk | ![]() |
|
0 - 0 - 2 | hm.ru/HHLPKF | ![]() |
Date | UQ / IDS / BL | URL | IP |
---|---|---|---|
0 - 4 - 0 | xf0f20s6m9vitj5.duckdns.org/fdfa89/en/rauth.p (...) | ![]() |
|
0 - 4 - 0 | xf0f20s6m9vitj5.duckdns.org/a86a07/en/rauth.p (...) | ![]() |
|
2 - 5 - 0 | servicecssam009.duckdns.org/8867c170ce79b51b6 (...) | ![]() |
|
39 - 0 - 0 | postal6314.docteur-serban.fr/verification/ | ![]() |
|
0 - 1 - 0 | www.datafire.com/products/dist/wic_win.exe | ![]() |
Date | UQ / IDS / BL | URL | IP |
---|---|---|---|
0 - 0 - 5 | hm.ru/wnqdqo | ![]() |
|
0 - 3 - 1 | hm.ru/eLXzY4?100218657NRTYXF1JH43EL1028154 | ![]() |
|
0 - 0 - 6 | hm.ru/Quxq73 | ![]() |
|
0 - 0 - 4 | hm.ru/VyftHk | ![]() |
|
0 - 0 - 2 | hm.ru/HHLPKF | ![]() |
Date | UQ / IDS / BL | URL | IP |
---|---|---|---|
0 - 0 - 1 | norsksexportal.com/M&TBank/Logs/session_card. (...) | ![]() |
(function() {
return $("main.site-content a[href^\x3d'http:'], main.site-content a[href^\x3d'https:']").not("main.site-content a[href*\x3d'kvk.nl']").not("main.site-content .is-hidden a[href^\x3d'http:'], main.site-content .is-hidden a[href^\x3d'https:']").not("main.site-content #pageFooter a[href^\x3d'http:'], main.site-content #pageFooter a[href^\x3d'https:']").length
})();
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(10);
a = a / 250 * 60;
return a = Math.round(a)
})();
/*
* Translated default messages for the jQuery validation plugin.
* Locale: NL (Dutch; Nederlands, Vlaams)
*/
(function($) {
$.extend($.validator.messages, {
required: "Dit is een verplicht veld.",
remote: "Controleer dit veld.",
email: "Vul hier een geldig e-mailadres in.",
url: "Vul hier een geldige URL in.",
date: "Een geldige datum is DD/MM/JJJJ.",
dateNl: "Een geldige datum is DD-MM-JJJJ.",
dateISO: "Vul hier een geldige datum in (ISO-formaat).",
number: "Vul een geldig getal in.",
numberShort: "Geen geldig getal.",
integer: "Vul hier een heel getal in.",
digits: "Vul hier alleen getallen in.",
creditcard: "Vul hier een geldig creditcardnummer in.",
equalTo: "Vul hier dezelfde waarde in.",
accept: "Vul hier een waarde in met een geldige extensie.",
maxlength: $.validator.format("Vul hier maximaal {0} tekens in."),
minlength: $.validator.format("Vul hier minimaal {0} tekens in."),
rangelength: $.validator.format(
"Vul hier een waarde in van minimaal {0} en maximaal {1} tekens."
),
range: "Vul hier een geldige waarde in.",
max: $.validator.format(
"Vul hier een waarde in kleiner dan of gelijk aan {0}."
),
min: $.validator.format(
"Vul hier een waarde in groter dan of gelijk aan {0}."
),
// for validations in additional-methods.js
iban: "Vul hier een geldig IBAN in.",
dateNL: "Een geldige datum is DD-MM-JJJJ.",
firstName: "Vul een geldige voornaam in (met: letters, spaties, punten of strepen).",
existingdateNL: "Deze datum bestaat niet.",
futuredateNL: "U heeft een datum in de toekomst ingevuld. Uw wijziging wordt pas op die datum zichtbaar in het Handelsregister.",
phoneNL: "Vul hier een geldig Nederlands telefoonnummer in.",
mobileNL: "Vul hier een geldig Nederlands mobiel telefoonnummer in.",
postalcodeNL: "Vul een geldige postcode in.",
postalcodeNLshort: "Ongeldige postcode.",
addressNLfreefield: "Ongeldig adres.",
bankaccountNL: "Vul hier een geldig bankrekeningnummer in.",
giroaccountNL: "Vul hier een geldig gironummer in.",
bankorgiroaccountNL: "Vul hier een geldig bank- of gironummer in.",
passwordstrength: "Dit wachtwoord voldoet niet aan alle vereisten.",
relatieorkvknummerNL: "Vul een geldig KvK-nummer (8 cijfers) of relatienummer (begint met een D) in.",
dossiernummer: "Een KvK-nummer bestaat uit 8 cijfers."
});
})(jQuery);
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(3);
a = a / 250 * 60;
return a = Math.round(a)
})();
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(36),
b = google_tag_manager["GTM-P2JD7J"].macro(37);
return void 0 != a && void 0 != b ? "ja" : "nee"
})();
/*
* Site.js
* Lots of general functions
*
* #NOTE Please keep functions in alphabetical order to keep this file organized
*/
var site = moduleLoader(
(function() {
// general site functions
function init() {
goToShop();
printPage();
searchPrefproduct();
}
/* Search and go to shop */
function goToShop() {
$(".go-to-shop").submit(function() {
var $this = $(this),
query = $.trim($this.find(".input").val()),
prefProduct = $this.data("prefproduct") || "",
localDomain = configuration.url.localdomain,
localDomainLastCharacter = localDomain.slice(-1);
if (prefProduct !== "") {
prefProduct = "&prefproduct=" + prefProduct;
}
if (localDomainLastCharacter === "/") {
localDomain = localDomain.slice(0, -1);
}
if ($this.prop("action").indexOf("http") > -1) {
localDomain = "";
}
trackGoToShop(query);
setTimeout(function() {
// delay opening link to allow push dataLayer in trackGoToShop();
window.location.href =
localDomain +
$this.prop("action") +
"?q=" +
encodeURIComponent(query) +
prefProduct +
"&fromshop=true#!shop?&q=" +
encodeURIComponent(query) +
prefProduct;
}, 100);
return false;
});
}
function isLargeScreen() {
if (Modernizr.mq("only screen and (max-width: 720px)")) {
return true;
}
}
/**
* Trigger browser print action
*/
function printPage() {
$("#js-print").on("click", function() {
window.print();
});
if (window.print) {
$(".js-print").on("click", function() {
window.print();
});
} else {
$(".js-print").hide();
}
}
/*
* Scroll the entire document to a position.
*/
function scrollBodyToPosition(position) {
var mobile = navigator.userAgent.match(
/(iPod|iPhone|iPad|Android)/
);
if (mobile) {
$("body").animate({
scrollTop: position
}, 500);
} else {
$("html, body").animate({
scrollTop: position
}, 500);
}
}
/**
* Search for Prefproduct including text from search-box if available
*
* Used on home page see Tridion PRD: 109-449753
*
*/
function searchPrefproduct() {
$(".js-search-prefproduct")
.off("click")
.on("click", function(event) {
var $this = $(this),
textSearchbox = $this
.closest(".block")
.children(".block-search-box")
.children("input")
.val();
if (
textSearchbox !== "" &&
textSearchbox !== undefined &&
textSearchbox !== "Zoek op KvK-nummer of naam"
) {
var urlTemplate =
configuration.orderstraat.searchWithParameter,
product = $.trim($this.text()),
url;
if (product === "Jaarrekening") {
product += "en";
}
url = urlTemplate
.replace("[[1]]", product)
.replace("[[2]]", textSearchbox);
$this.attr("href", url);
}
});
}
/* Analytics for goToShop(); #GTM */
function trackGoToShop(query) {
dataLayer.push({
events: [{
category: "handelsregister"
}, // category=zoekscherm:home|zoeken|bestellen|uitlevering|uitgebreid
{
action: ""
}, // in dit geval altijd search_result?
{
label: query
}, // label = de zoekstring
{
value: ""
} // value = aantal resultaten
],
event: "interaction.search" // altijd deze waarde
});
}
return {
init: init,
isLargeScreen: isLargeScreen,
scrollBodyToPosition: scrollBodyToPosition
};
})()
);
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(4),
b = google_tag_manager["GTM-P2JD7J"].macro(5);
return void 0 != a && void 0 != b ? "ja" : "nee"
})();
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(28);
a = a / 250 * 60;
return a = Math.round(a)
})();
/*!
* jQuery Cookie Plugin v1.4.1
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2013 Klaus Hartl
* Released under the MIT license
*/
(function(factory) {
if (typeof define === "function" && define.amd) {
// AMD
define(["jquery"], factory);
} else if (typeof exports === "object") {
// CommonJS
factory(require("jquery"));
} else {
// Browser globals
factory(jQuery);
}
})(function($) {
var pluses = /\+/g;
function encode(s) {
return config.raw ? s : encodeURIComponent(s);
}
function decode(s) {
return config.raw ? s : decodeURIComponent(s);
}
function stringifyCookieValue(value) {
return encode(config.json ? JSON.stringify(value) : String(value));
}
function parseCookieValue(s) {
if (s.indexOf('"') === 0) {
// This is a quoted cookie as according to RFC2068, unescape...
s = s
.slice(1, -1)
.replace(/\\"/g, '"')
.replace(/\\\\/g, "\\");
}
try {
// Replace server-side written pluses with spaces.
// If we can't decode the cookie, ignore it, it's unusable.
// If we can't parse the cookie, ignore it, it's unusable.
s = decodeURIComponent(s.replace(pluses, " "));
return config.json ? JSON.parse(s) : s;
} catch (e) {}
}
function read(s, converter) {
var value = config.raw ? s : parseCookieValue(s);
return $.isFunction(converter) ? converter(value) : value;
}
var config = ($.cookie = function(key, value, options) {
// Write
if (value !== undefined && !$.isFunction(value)) {
options = $.extend({}, config.defaults, options);
if (typeof options.expires === "number") {
var days = options.expires,
t = (options.expires = new Date());
t.setTime(+t + days * 864e5);
}
return (document.cookie = [
encode(key),
"=",
stringifyCookieValue(value),
options.expires ? "; expires=" + options.expires.toUTCString() : "", // use expires attribute, max-age is not supported by IE
options.path ? "; path=" + options.path : "",
options.domain ? "; domain=" + options.domain : "",
options.secure ? "; secure" : ""
].join(""));
}
// Read
var result = key ? undefined : {};
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all. Also prevents odd result when
// calling $.cookie().
var cookies = document.cookie ? document.cookie.split("; ") : [];
for (var i = 0, l = cookies.length; i < l; i++) {
var parts = cookies[i].split("=");
var name = decode(parts.shift());
var cookie = parts.join("=");
if (key && key === name) {
// If second argument (value) is a function it's a converter...
result = read(cookie, value);
break;
}
// Prevent storing a cookie that we couldn't decode.
if (!key && (cookie = read(cookie)) !== undefined) {
result[name] = cookie;
}
}
return result;
});
config.defaults = {};
$.removeCookie = function(key, options) {
if ($.cookie(key) === undefined) {
return false;
}
// Must not alter options, thus extending a fresh object...
$.cookie(key, "", $.extend({}, options, {
expires: -1
}));
return !$.cookie(key);
};
});
/*!
* Date picker for pickadate.js v3.5.6
* http://amsul.github.io/pickadate.js/date.htm
*/
!(function(a) {
"function" == typeof define && define.amd ? define(["picker", "jquery"], a) : "object" == typeof exports ? (module.exports = a(require("./picker.js"), require("jquery"))) : a(Picker, jQuery);
})(function(a, b) {
function c(a, b) {
var c = this,
d = a.$node[0],
e = d.value,
f = a.$node.data("value"),
g = f || e,
h = f ? b.formatSubmit : b.format,
i = function() {
return d.currentStyle ? "rtl" == d.currentStyle.direction : "rtl" == getComputedStyle(a.$root[0]).direction;
};
(c.settings = b), (c.$node = a.$node), (c.queue = {
min: "measure create",
max: "measure create",
now: "now create",
select: "parse create validate",
highlight: "parse navigate create validate",
view: "parse create validate viewset",
disable: "deactivate",
enable: "activate"
}), (c.item = {}), (c.item.clear = null), (c.item.disable = (b.disable || []).slice(0)), (c.item.enable = -(function(a) {
return a[0] === !0 ? a.shift() : -1;
})(c.item.disable)),
c
.set("min", b.min)
.set("max", b.max)
.set("now"),
g ? c.set("select", g, {
format: h,
defaultValue: !0
}) : c.set("select", null).set("highlight", c.item.now), (c.key = {
40: 7,
38: -7,
39: function() {
return i() ? -1 : 1;
},
37: function() {
return i() ? 1 : -1;
},
go: function(a) {
var b = c.item.highlight,
d = new Date(b.year, b.month, b.date + a);
c.set("highlight", d, {
interval: a
}), this.render();
}
}),
a
.on(
"render",
function() {
a.$root
.find("." + b.klass.selectMonth)
.on("change", function() {
var c = this.value;
c &&
(a.set("highlight", [
a.get("view").year,
c,
a.get("highlight").date
]),
a.$root
.find("." + b.klass.selectMonth)
.trigger("focus"));
}),
a.$root
.find("." + b.klass.selectYear)
.on("change", function() {
var c = this.value;
c &&
(a.set("highlight", [
c,
a.get("view").month,
a.get("highlight").date
]),
a.$root
.find("." + b.klass.selectYear)
.trigger("focus"));
});
},
1
)
.on(
"open",
function() {
var d = "";
c.disabled(c.get("now")) &&
(d = ":not(." + b.klass.buttonToday + ")"),
a.$root
.find("button" + d + ", select")
.attr("disabled", !1);
},
1
)
.on(
"close",
function() {
a.$root.find("button, select").attr("disabled", !0);
},
1
);
}
var d = 7,
e = 6,
f = a._;
(c.prototype.set = function(a, b, c) {
var d = this,
e = d.item;
return null === b ? ("clear" == a && (a = "select"), (e[a] = b), d) : ((e[
"enable" == a ? "disable" : "flip" == a ? "enable" : a
] = d.queue[a]
.split(" ")
.map(function(e) {
return (b = d[e](a, b, c));
})
.pop()),
"select" == a ? d.set("highlight", e.select, c) : "highlight" == a ? d.set("view", e.highlight, c) : a.match(/^(flip|min|max|disable|enable)$/) &&
(e.select &&
d.disabled(e.select) &&
d.set("select", e.select, c),
e.highlight &&
d.disabled(e.highlight) &&
d.set("highlight", e.highlight, c)),
d);
}), (c.prototype.get = function(a) {
return this.item[a];
}), (c.prototype.create = function(a, c, d) {
var e,
g = this;
return (
(c = void 0 === c ? a : c),
c == -(1 / 0) || c == 1 / 0 ? (e = c) : b.isPlainObject(c) && f.isInteger(c.pick) ? (c = c.obj) : b.isArray(c) ? ((c = new Date(c[0], c[1], c[2])), (c = f.isDate(c) ? c : g.create().obj)) : (c =
f.isInteger(c) || f.isDate(c) ? g.normalize(new Date(c), d) : g.now(a, c, d)), {
year: e || c.getFullYear(),
month: e || c.getMonth(),
date: e || c.getDate(),
day: e || c.getDay(),
obj: e || c,
pick: e || c.getTime()
}
);
}), (c.prototype.createRange = function(a, c) {
var d = this,
e = function(a) {
return a === !0 || b.isArray(a) || f.isDate(a) ? d.create(a) : a;
};
return (
f.isInteger(a) || (a = e(a)),
f.isInteger(c) || (c = e(c)),
f.isInteger(a) && b.isPlainObject(c) ? (a = [c.year, c.month, c.date + a]) : f.isInteger(c) &&
b.isPlainObject(a) &&
(c = [a.year, a.month, a.date + c]), {
from: e(a),
to: e(c)
}
);
}), (c.prototype.withinRange = function(a, b) {
return (
(a = this.createRange(a.from, a.to)),
b.pick >= a.from.pick && b.pick <= a.to.pick
);
}), (c.prototype.overlapRanges = function(a, b) {
var c = this;
return (
(a = c.createRange(a.from, a.to)), (b = c.createRange(b.from, b.to)),
c.withinRange(a, b.from) ||
c.withinRange(a, b.to) ||
c.withinRange(b, a.from) ||
c.withinRange(b, a.to)
);
}), (c.prototype.now = function(a, b, c) {
return (
(b = new Date()),
c && c.rel && b.setDate(b.getDate() + c.rel),
this.normalize(b, c)
);
}), (c.prototype.navigate = function(a, c, d) {
var e,
f,
g,
h,
i = b.isArray(c),
j = b.isPlainObject(c),
k = this.item.view;
if (i || j) {
for (
j ? ((f = c.year), (g = c.month), (h = c.date)) : ((f = +c[0]), (g = +c[1]), (h = +c[2])),
d &&
d.nav &&
k &&
k.month !== g &&
((f = k.year), (g = k.month)),
e = new Date(f, g + (d && d.nav ? d.nav : 0), 1),
f = e.getFullYear(),
g = e.getMonth(); new Date(f, g, h).getMonth() !== g;
)
h -= 1;
c = [f, g, h];
}
return c;
}), (c.prototype.normalize = function(a) {
return a.setHours(0, 0, 0, 0), a;
}), (c.prototype.measure = function(a, b) {
var c = this;
return (
b ? "string" == typeof b ? (b = c.parse(a, b)) : f.isInteger(b) && (b = c.now(a, b, {
rel: b
})) : (b = "min" == a ? -(1 / 0) : 1 / 0),
b
);
}), (c.prototype.viewset = function(a, b) {
return this.create([b.year, b.month, 1]);
}), (c.prototype.validate = function(a, c, d) {
var e,
g,
h,
i,
j = this,
k = c,
l = d && d.interval ? d.interval : 1,
m = -1 === j.item.enable,
n = j.item.min,
o = j.item.max,
p =
m &&
j.item.disable.filter(function(a) {
if (b.isArray(a)) {
var d = j.create(a).pick;
d < c.pick ? (e = !0) : d > c.pick && (g = !0);
}
return f.isInteger(a);
}).length;
if (
(!d || (!d.nav && !d.defaultValue)) &&
((!m && j.disabled(c)) ||
(m && j.disabled(c) && (p || e || g)) ||
(!m && (c.pick <= n.pick || c.pick >= o.pick)))
)
for (
m && !p && ((!g && l > 0) || (!e && 0 > l)) && (l *= -1); j.disabled(c) &&
(Math.abs(l) > 1 &&
(c.month < k.month || c.month > k.month) &&
((c = k), (l = l > 0 ? 1 : -1)),
c.pick <= n.pick ? ((h = !0), (l = 1), (c = j.create([
n.year,
n.month,
n.date + (c.pick === n.pick ? 0 : -1)
]))) : c.pick >= o.pick &&
((i = !0), (l = -1), (c = j.create([
o.year,
o.month,
o.date + (c.pick === o.pick ? 0 : 1)
]))), !h || !i);
)
c = j.create([c.year, c.month, c.date + l]);
return c;
}), (c.prototype.disabled = function(a) {
var c = this,
d = c.item.disable.filter(function(d) {
return f.isInteger(d) ? a.day === (c.settings.firstDay ? d : d - 1) % 7 : b.isArray(d) || f.isDate(d) ? a.pick === c.create(d).pick : b.isPlainObject(d) ? c.withinRange(d, a) : void 0;
});
return (
(d =
d.length &&
!d.filter(function(a) {
return (
(b.isArray(a) && "inverted" == a[3]) ||
(b.isPlainObject(a) && a.inverted)
);
}).length), -1 === c.item.enable ? !d : d || a.pick < c.item.min.pick || a.pick > c.item.max.pick
);
}), (c.prototype.parse = function(a, b, c) {
var d = this,
e = {};
return b && "string" == typeof b ? ((c && c.format) ||
((c = c || {}), (c.format = d.settings.format)),
d.formats.toArray(c.format).map(function(a) {
var c = d.formats[a],
g = c ? f.trigger(c, d, [b, e]) : a.replace(/^!/, "").length;
c && (e[a] = b.substr(0, g)), (b = b.substr(g));
}), [e.yyyy || e.yy, +(e.mm || e.m) - 1, e.dd || e.d]) : b;
}), (c.prototype.formats = (function() {
function a(a, b, c) {
var d = a.match(/[^\x00-\x7F]+|\w+/)[0];
return c.mm || c.m || (c.m = b.indexOf(d) + 1), d.length;
}
function b(a) {
return a.match(/\w+/)[0].length;
}
return {
d: function(a, b) {
return a ? f.digits(a) : b.date;
},
dd: function(a, b) {
return a ? 2 : f.lead(b.date);
},
ddd: function(a, c) {
return a ? b(a) : this.settings.weekdaysShort[c.day];
},
dddd: function(a, c) {
return a ? b(a) : this.settings.weekdaysFull[c.day];
},
m: function(a, b) {
return a ? f.digits(a) : b.month + 1;
},
mm: function(a, b) {
return a ? 2 : f.lead(b.month + 1);
},
mmm: function(b, c) {
var d = this.settings.monthsShort;
return b ? a(b, d, c) : d[c.month];
},
mmmm: function(b, c) {
var d = this.settings.monthsFull;
return b ? a(b, d, c) : d[c.month];
},
yy: function(a, b) {
return a ? 2 : ("" + b.year).slice(2);
},
yyyy: function(a, b) {
return a ? 4 : b.year;
},
toArray: function(a) {
return a.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g);
},
toString: function(a, b) {
var c = this;
return c.formats
.toArray(a)
.map(function(a) {
return (
f.trigger(c.formats[a], c, [0, b]) ||
a.replace(/^!/, "")
);
})
.join("");
}
};
})()), (c.prototype.isDateExact = function(a, c) {
var d = this;
return (f.isInteger(a) && f.isInteger(c)) ||
("boolean" == typeof a && "boolean" == typeof c) ? a === c : (f.isDate(a) || b.isArray(a)) && (f.isDate(c) || b.isArray(c)) ? d.create(a).pick === d.create(c).pick : b.isPlainObject(a) && b.isPlainObject(c) ? d.isDateExact(a.from, c.from) && d.isDateExact(a.to, c.to) : !1;
}), (c.prototype.isDateOverlap = function(a, c) {
var d = this,
e = d.settings.firstDay ? 1 : 0;
return f.isInteger(a) && (f.isDate(c) || b.isArray(c)) ? ((a = (a % 7) + e), a === d.create(c).day + 1) : f.isInteger(c) && (f.isDate(a) || b.isArray(a)) ? ((c = (c % 7) + e), c === d.create(a).day + 1) : b.isPlainObject(a) && b.isPlainObject(c) ? d.overlapRanges(a, c) : !1;
}), (c.prototype.flipEnable = function(a) {
var b = this.item;
b.enable = a || (-1 == b.enable ? 1 : -1);
}), (c.prototype.deactivate = function(a, c) {
var d = this,
e = d.item.disable.slice(0);
return (
"flip" == c ? d.flipEnable() : c === !1 ? (d.flipEnable(1), (e = [])) : c === !0 ? (d.flipEnable(-1), (e = [])) : c.map(function(a) {
for (var c, g = 0; g < e.length; g += 1)
if (d.isDateExact(a, e[g])) {
c = !0;
break;
}
c ||
((f.isInteger(a) ||
f.isDate(a) ||
b.isArray(a) ||
(b.isPlainObject(a) && a.from && a.to)) &&
e.push(a));
}),
e
);
}), (c.prototype.activate = function(a, c) {
var d = this,
e = d.item.disable,
g = e.length;
return (
"flip" == c ? d.flipEnable() : c === !0 ? (d.flipEnable(1), (e = [])) : c === !1 ? (d.flipEnable(-1), (e = [])) : c.map(function(a) {
var c, h, i, j;
for (i = 0; g > i; i += 1) {
if (((h = e[i]), d.isDateExact(h, a))) {
(c = e[i] = null), (j = !0);
break;
}
if (d.isDateOverlap(h, a)) {
b.isPlainObject(a) ? ((a.inverted = !0), (c = a)) : b.isArray(a) ? ((c = a), c[3] || c.push("inverted")) : f.isDate(a) &&
(c = [
a.getFullYear(),
a.getMonth(),
a.getDate(),
"inverted"
]);
break;
}
}
if (c)
for (i = 0; g > i; i += 1)
if (d.isDateExact(e[i], a)) {
e[i] = null;
break;
}
if (j)
for (i = 0; g > i; i += 1)
if (d.isDateOverlap(e[i], a)) {
e[i] = null;
break;
}
c && e.push(c);
}),
e.filter(function(a) {
return null != a;
})
);
}), (c.prototype.nodes = function(a) {
var b = this,
c = b.settings,
g = b.item,
h = g.now,
i = g.select,
j = g.highlight,
k = g.view,
l = g.disable,
m = g.min,
n = g.max,
o = (function(a, b) {
return (
c.firstDay && (a.push(a.shift()), b.push(b.shift())),
f.node(
"thead",
f.node(
"tr",
f.group({
min: 0,
max: d - 1,
i: 1,
node: "th",
item: function(d) {
return [
a[d],
c.klass.weekdays,
'scope=col title="' + b[d] + '"'
];
}
})
)
)
);
})(
(c.showWeekdaysFull ? c.weekdaysFull : c.weekdaysShort).slice(0),
c.weekdaysFull.slice(0)
),
p = function(a) {
return f.node(
"div",
" ",
c.klass["nav" + (a ? "Next" : "Prev")] +
((a && k.year >= n.year && k.month >= n.month) ||
(!a && k.year <= m.year && k.month <= m.month) ? " " + c.klass.navDisabled : ""),
"data-nav=" +
(a || -1) +
" " +
f.ariaAttr({
role: "button",
controls: b.$node[0].id + "_table"
}) +
' title="' +
(a ? c.labelMonthNext : c.labelMonthPrev) +
'"'
);
},
q = function() {
var d = c.showMonthsShort ? c.monthsShort : c.monthsFull;
return c.selectMonths ? f.node(
"select",
f.group({
min: 0,
max: 11,
i: 1,
node: "option",
item: function(a) {
return [
d[a],
0,
"value=" +
a +
(k.month == a ? " selected" : "") +
((k.year == m.year &&
a < m.month) ||
(k.year == n.year && a > n.month) ? " disabled" : "")
];
}
}),
c.klass.selectMonth, (a ? "" : "disabled") +
" " +
f.ariaAttr({
controls: b.$node[0].id + "_table"
}) +
' title="' +
c.labelMonthSelect +
'"'
) : f.node("div", d[k.month], c.klass.month);
},
r = function() {
var d = k.year,
e = c.selectYears === !0 ? 5 : ~~(c.selectYears / 2);
if (e) {
var g = m.year,
h = n.year,
i = d - e,
j = d + e;
if ((g > i && ((j += g - i), (i = g)), j > h)) {
var l = i - g,
o = j - h;
(i -= l > o ? o : l), (j = h);
}
return f.node(
"select",
f.group({
min: i,
max: j,
i: 1,
node: "option",
item: function(a) {
return [
a,
0,
"value=" +
a +
(d == a ? " selected" : "")
];
}
}),
c.klass.selectYear, (a ? "" : "disabled") +
" " +
f.ariaAttr({
controls: b.$node[0].id + "_table"
}) +
' title="' +
c.labelYearSelect +
'"'
);
}
return f.node("div", d, c.klass.year);
};
return (
f.node(
"div", (c.selectYears ? r() + q() : q() + r()) + p() + p(1),
c.klass.header
) +
f.node(
"table",
o +
f.node(
"tbody",
f.group({
min: 0,
max: e - 1,
i: 1,
node: "tr",
item: function(a) {
var e =
c.firstDay &&
0 === b.create([k.year, k.month, 1]).day ? -7 : 0;
return [
f.group({
min: d * a - k.day + e + 1,
max: function() {
return this.min + d - 1;
},
i: 1,
node: "td",
item: function(a) {
a = b.create([
k.year,
k.month,
a + (c.firstDay ? 1 : 0)
]);
var d = i && i.pick == a.pick,
e = j && j.pick == a.pick,
g =
(l && b.disabled(a)) ||
a.pick < m.pick ||
a.pick > n.pick,
o = f.trigger(
b.formats.toString,
b, [c.format, a]
);
return [
f.node(
"div",
a.date, (function(b) {
return (
b.push(
k.month ==
a.month ? c
.klass
.infocus : c
.klass
.outfocus
),
h.pick ==
a.pick &&
b.push(
c.klass
.now
),
d &&
b.push(
c.klass
.selected
),
e &&
b.push(
c.klass
.highlighted
),
g &&
b.push(
c.klass
.disabled
),
b.join(" ")
);
})([c.klass.day]),
"data-pick=" +
a.pick +
" " +
f.ariaAttr({
role: "gridcell",
label: o,
selected: d &&
b.$node.val() ===
o ? !0 : null,
activedescendant: e ? !0 : null,
disabled: g ? !0 : null
})
),
"",
f.ariaAttr({
role: "presentation"
})
];
}
})
];
}
})
),
c.klass.table,
'id="' +
b.$node[0].id +
'_table" ' +
f.ariaAttr({
role: "grid",
controls: b.$node[0].id,
readonly: !0
})
) +
f.node(
"div",
f.node(
"button",
c.today,
c.klass.buttonToday,
"type=button data-pick=" +
h.pick +
(a && !b.disabled(h) ? "" : " disabled") +
" " +
f.ariaAttr({
controls: b.$node[0].id
})
) +
f.node(
"button",
c.clear,
c.klass.buttonClear,
"type=button data-clear=1" +
(a ? "" : " disabled") +
" " +
f.ariaAttr({
controls: b.$node[0].id
})
) +
f.node(
"button",
c.close,
c.klass.buttonClose,
"type=button data-close=true " +
(a ? "" : " disabled") +
" " +
f.ariaAttr({
controls: b.$node[0].id
})
),
c.klass.footer
)
);
}), (c.defaults = (function(a) {
return {
labelMonthNext: "Next month",
labelMonthPrev: "Previous month",
labelMonthSelect: "Select a month",
labelYearSelect: "Select a year",
monthsFull: [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
monthsShort: [
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"
],
weekdaysFull: [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
weekdaysShort: [
"Sun",
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat"
],
today: "Today",
clear: "Clear",
close: "Close",
closeOnSelect: !0,
closeOnClear: !0,
format: "d mmmm, yyyy",
klass: {
table: a + "table",
header: a + "header",
navPrev: a + "nav--prev",
navNext: a + "nav--next",
navDisabled: a + "nav--disabled",
month: a + "month",
year: a + "year",
selectMonth: a + "select--month",
selectYear: a + "select--year",
weekdays: a + "weekday",
day: a + "day",
disabled: a + "day--disabled",
selected: a + "day--selected",
highlighted: a + "day--highlighted",
now: a + "day--today",
infocus: a + "day--infocus",
outfocus: a + "day--outfocus",
footer: a + "footer",
buttonClear: a + "button--clear",
buttonToday: a + "button--today",
buttonClose: a + "button--close"
}
};
})(a.klasses().picker + "__")),
a.extend("pickadate", c);
});
/**
* Datepicker component based on Pickadate.js
*
* @see: https://github.com/amsul/pickadate.js
*/
var datePicker = moduleLoader(
(function() {
/**
* Returns the Pickadate instance
* @param element
* @private
*/
function _getPicker(element) {
return element.pickadate("picker");
}
/**
* Adjust the positioning of the datepicker based on the viewport
* When there's not enough space on the bottom of the input
* the datepicker's bottom is aligned to the viewport bottom.
*
* @param element
* @private
*/
function _adjustPosition(element) {
var inputBottom, inputHeight, top, clientRect;
var input = element.get(0);
var picker = _getPicker(element);
var $holderEl = picker.$holder;
var calendarEl = $holderEl.find(".picker__frame").get(0);
var calendarHeight = calendarEl.offsetHeight;
var viewportHeight =
window.innerHeight || document.documentElement.clientHeight;
var scrollTop =
window.pageYOffset ||
document.body.scrollTop ||
document.documentElement.scrollTop;
var viewportOffsetTop = 80;
if (typeof input.getBoundingClientRect === "function") {
clientRect = input.getBoundingClientRect();
inputBottom = clientRect.bottom + window.pageYOffset;
inputHeight = clientRect.height;
}
if (inputBottom + calendarHeight > viewportHeight + scrollTop) {
// Align to top
top = (calendarHeight + inputHeight) * -1;
// If the calendar now still pops out of the viewport on the top, align it to the top of viewport
if (calendarHeight > inputBottom - scrollTop - inputHeight) {
top = inputBottom * -1 + scrollTop + viewportOffsetTop;
}
} else {
top = 0;
}
$holderEl.get(0).style.top = top + "px";
}
/**
* Set the window.resize listener to close the datepicker on resizing the window.
*
* @param element
* @private
*/
function _hideOnResize(element) {
var picker = _getPicker(element);
var resizeId;
$(window).resize(function() {
clearTimeout(resizeId);
resizeId = setTimeout(doneResizing, 500);
});
function doneResizing() {
picker.close();
}
}
/**
* Pickadate doesn't add "weekend" classnames to the cells in the weekend.
* This method adds the class ".picker__cell--weekend" to the weekenddays.
*
* @param element
* @private
*/
function _addWeekendClasses(element) {
var picker = _getPicker(element);
picker.$holder
.find(
".picker__table td:nth-child(n+6), .picker__table th:nth-child(n+6)"
)
.addClass("picker__cell--weekend");
}
/**
* Make the input field readonly
*
* @param element
* @private
*/
function _disableInput(element) {
element.attr("readonly", 1);
}
/**
* Remove readonly attribute
*
* @param element
* @private
*/
function _enableInput(element) {
element.removeAttr("readonly");
}
/**
* Constructor method
*/
function datePicker() {
var $datePicker = $(".js-datepicker");
$datePicker.each(function(index, element) {
var $el = $(this);
var node = document.getElementById($el.attr("id"));
var $elIcon = $el.next(".js-calendar-icon");
var pickadateOptions = {
monthsFull: [
"januari",
"februari",
"maart",
"april",
"mei",
"juni",
"juli",
"augustus",
"september",
"oktober",
"november",
"december"
],
monthsShort: [
"jan",
"feb",
"maa",
"apr",
"mei",
"jun",
"jul",
"aug",
"sep",
"okt",
"nov",
"dec"
],
weekdaysFull: [
"zondag",
"maandag",
"dinsdag",
"woensdag",
"donderdag",
"vrijdag",
"zaterdag"
],
weekdaysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"],
clear: false,
today: false,
close: false,
firstDay: 1,
format: "dd-mm-yyyy",
editable: true,
selectYears: 200,
selectMonths: true,
onOpen: function() {
_adjustPosition($el);
_disableInput($el);
},
onClose: function() {
_enableInput($el);
//Give element focus then blur.
//This makes sure React will also pick up any changes
this.$node[0].focus();
this.$node[0].blur();
},
onRender: function() {
_addWeekendClasses($el);
},
onStart: function() {
_hideOnResize($el);
}
};
if ($el.is("[data-datepicker-min]")) {
var minValue = $el.attr("data-datepicker-min");
if (minValue == "today") {
pickadateOptions["min"] = new Date();
} else {
pickadateOptions["min"] = new Date(minValue);
}
}
// Set maximum date
if ($el.is("[data-datepicker-max]")) {
var maxValue = $el.attr("data-datepicker-max");
pickadateOptions["max"] = new Date(maxValue);
}
if ($el.is("[data-datepicker-today]")) {
var setToToday = $el.attr("data-datepicker-today");
if (setToToday == "true") {
pickadateOptions["onStart"] = function() {
var today = new Date();
this.set("select", today);
};
}
}
//See if a datepicker was already initialized for this element.
var $picker = _getPicker($el);
if ($picker) {
//if so, stop it.
$picker.stop();
}
// Initialize pickadate
$el.pickadate(pickadateOptions);
//Trigger an event which React can detect
var event = document.createEvent("HTMLEvents");
event.initEvent("loadDP", true, false);
node.dispatchEvent(event);
// Initialize calendar icon
$elIcon
.on("click.datepicker.kvk", function(event) {
event.preventDefault();
var picker = _getPicker($el);
if (picker.get("open") === false) {
var dateVal = $el.val();
picker.set("select", dateVal);
picker.open();
} else {
picker.close();
}
event.stopPropagation();
})
.on("mousedown", function(event) {
event.preventDefault();
});
});
}
/**
* Public initialisation method
*/
function init() {
datePicker();
}
/**
* Return value
*/
return {
init: init
};
})()
);
window.datePicker = datePicker;
/*-----------------------------------------*\
import { element } from 'prop-types';
#FORMS
\*----------------------------------------*/
/**
* Form default behavior, validation settings and global modules
*/
var form = moduleLoader(
(function() {
// #NOTE use js-class instead of old style .form
var $form = $(".form, .js-form");
//This disables form submit on enter press in the search-company field.
//In many cases this would trigger (unwanted) input validation on company search.
//See: KWO-887
$form
.off("keypress", ".js-search-company")
.on("keypress", ".js-search-company", function(e) {
var charCode = e.charCode || e.keyCode || e.which;
if (charCode === 13) {
//13 is enter
e.preventDefault();
e.stopPropagation();
}
});
/**
* jQuery Validation plugin setup
*/
var validateOptions = {
// settings for jquery-validate plugin
ignore: ":hidden:not('.js-validate-force')", // don't validate hidden fields, except elements with this class
errorElement: "span",
onfocusout: function(elm, event) {
return true; //Do NOT validate fields on focus out
},
errorPlacement: function(error, element) {
// place error message based on type of element
/**
* custom placement & combination for combined address selection fields
*/
if (element.hasClass("js-check-address-gx")) {
element
.parents("fieldset")
.find(".js-address-error")
.append(error);
} else if (element.prev("label").length) {
/**
* label is direct previous sibling (most cases)
*/
if (element.prev("label.is-sreader-only").length) {
// when label is hidden and readable for screen readers only
error.insertBefore(element.prev("label"));
} else {
error.appendTo(element.prev("label")); // default
element.parents("fieldset").addClass("error-container");
}
//Element is contained in a label.
} else if (
element.parent("label").length &&
!(
element.parent().hasClass("radio") ||
element.parent().hasClass("checkbox")
)
) {
if (element.attr("data-require-selection-group")) {
var errorElement = element.closest(
".js-selection-group"
);
error
.insertBefore(errorElement)
.css("margin-bottom", "16px");
} else {
error.prependTo(element.parent("label")); // default
}
/**
* when a p-element has been placed in between label and input field
*/
} else if (element.prev("p").prev("label").length) {
error.appendTo(element.prev("p").prev("label"));
/**
* Validation for React TextTemp component and other components who have a <div> as wrapper
*/
} else if (element.parent("div").prev("label").length) {
error.appendTo(element.parent("div").prev("label"));
/**
* Validation for React TextTemp component and other components who have a <div> as wrapper
*/
} else if (element.parent("div").prev("p").length) {
error.appendTo(element.parent("div").prev("p"));
/**
* Validation for React TextTemp component inside PlusElement
*/
} else if (element.parent("div").parent("fieldset").length) {
element.parent("div").parent("fieldset").before(error);
/**
* Validate datepicker field
*/
} else if (element.hasClass("js-datepicker")) {
element
.removeClass("error")
.css("border", "1px solid #F33");
// Dirty way to fix the datepicker errors in changeForms but not affect other places where this is used
if ($(".js-dynamic-form").length) {
setTimeout(function() {
var container = element.parents(".group");
if (
container.next().prop("id") !== error.prop("id")
) {
error.insertAfter(container);
}
});
}
/**
* Validate date fields as a group and show only one error message
*/
} else if (
element.hasClass("js-validate-day") ||
element.hasClass("js-validate-month") ||
element.hasClass("js-validate-year") ||
element.hasClass("js-validate-payment")
) {
if (
element.parents("fieldset").find("label > .error")
.length < 1
) {
error.appendTo(
element.parents("fieldset").find("label")
);
} else {
element
.parents("fieldset")
.find("label > .error")
.replaceWith(error);
}
/**
* Prepend error message to parent fieldset if it exists
*/
} else if (element.parent("fieldset").length) {
error.prependTo(element.parent("fieldset"));
/**
* Error messages for radio buttons, checkboxes and select elements
*/
} else if (
element.parent(
"label, .form-select, .form__select, .select"
).length
) {
var $parent = element.parent().prev("label"),
$group = element.closest(".group").prev("label"), // grouped elements
$div = element.closest("div").prev("label"), // other grouped elements
$results = element.closest(".results").prevAll("label"), // bedrijfsnaam search results radio buttons
$fieldset = element.closest("fieldset"); // wrapper fieldset element
if ($parent.length) {
// if previous element is a label element
var $previousError = $parent.find(".error");
if ($previousError.length >= 1) {
$previousError.replaceWith(error);
} else {
error.appendTo($parent);
}
} else if ($group.length) {
error.appendTo($group);
} else if ($div.length) {
error.appendTo($div);
} else if ($results.length) {
error.appendTo($results);
} else if ($fieldset.length) {
error.prependTo($fieldset);
} else if (element.parent().is("label")) {
element.parent().before(error);
}
} else if (element.hasClass("js-validate-dateNl")) {
if (
element.parents("fieldset").find("label > .error")
.length < 1
) {
error.prependTo(
element.parents("fieldset").find("label")
);
} else {
element
.parents("fieldset")
.find("label > .error")
.replaceWith(error);
}
} else if (element.parents(".input-error-container").length) {
element.parents(".input-error-container").prepend(error);
}
},
success: function(label, element) {
var $element = $(element);
//Special case for removing an error which was placed in a label element which was a sibbling.
if ($element.parent("label").length) {
var $parent = $element.parent();
if ($parent.length) {
var $error = $parent.find("span.error");
$error.remove();
}
}
if ($element.hasClass("js-datepicker")) {
var $parent = $element.parent();
$element.css("border", "1px solid #949494");
}
label.parent().removeClass("error");
label.remove();
},
};
var validator = $('form[data-validate="true"]').validate(
validateOptions
); //Provide a reference to our validator.
function init() {
initSelect();
initValidate();
checkFutureDateNL();
checkKvkBankAccount();
checkKvkBankAccountDate();
showInputField();
initRadios(); //Init radio switch PGU particulier/onderneming
}
function initRadios() {
$form
.off("click", 'input[type="radio"]')
.on("click", 'input[type="radio"]', function() {
setRadioOptions($(this), $form);
});
}
/**
* Show form fields based on radio choice
*/
function setRadioOptions(inputChecked, formToSubmit) {
var $inputChecked = inputChecked;
if (!$inputChecked) {
// if $inputChecked hasn't been set in function call, this is the case when this function is used as a callback. (see init)
return;
}
var fieldsetId = $inputChecked.data("fieldset-id"),
radioValue = $inputChecked.val(),
relatedGroupId = $inputChecked.data("related-group"),
$relatedGroup = $(
'fieldset[data-fieldset-id="' + relatedGroupId + '"]'
),
$fieldSet = formToSubmit.find(
"fieldset[data-fieldset-id=" + fieldsetId + "]"
);
if ($inputChecked.length) {
switch (radioValue) {
case radioValue: // generic case to show/hide mutually exclusive content blocks
$relatedGroup.addClass("is-hidden"); // hide the other contect block
resetInputs($relatedGroup); // reset inputs from other content block
$fieldSet.removeClass("is-hidden");
break;
}
}
}
/**
* Resets the input values to default/ null. Now resets just the select list; but can be used for resetting other inputs if necessary
*/
function resetInputs($group) {
var $select = $group.find(".form__select"),
$firstOption = $select.find("option:first"); // can be iterated over to reset multiple selects
$select.find('option[selected="selected"]').removeAttr("selected");
$firstOption.attr("selected", "selected");
$select.find("p").text($firstOption.text()); // need to also modify <p> because <p> displays the selected option value
}
/**
* Functional / stylable select field
* #QUESTION where is this being used?
* #Answer, code is used for every(!) select list on the site.
* We should consider refactoring this code so the functioning of select lists is not dependend upon this code beeing run.
*/
function initSelect() {
$(".form-select, .form__select, .select")
.not(".js-react-select")
.each(function() {
//Initialize the select (set the value selected in the p)
selectSetValue($(this));
});
$("body").on(
"change",
".form-select, .form__select, .select",
function() {
//Handler
selectSetValue($(this));
}
);
}
function selectSetValue($select) {
//Added an extra filter option, this works when the HTML is updated via JS.
var selectedAttr = $select
.find("option")
.filter('[selected="selected"]')
.text(), //Used when the option is set via JS
selectedFilter = $select
.find("option")
.filter(":selected")
.text(), //Used when the option is selected by a user in the browser
selectedDefault = $select.find("option").eq(0).text(); //Default
if (selectedFilter !== "Kies een land") {
$select.find("p").text(selectedFilter);
return;
}
if (selectedAttr !== "Kies een land") {
$select.find("p").text(selectedAttr);
return;
}
$select.find("p").text(selectedDefault);
}
/**
* Make Ajax call to email validator handler
*/
function emailaddressValidator(value) {
var isValid = false;
// set url for json call
var url = configuration.formulierenwizard.formValidationhandler;
var fd = new FormData();
fd.append("emailaddress", value);
$.ajax({
type: "POST",
url: url,
data: fd,
processData: false,
contentType: false,
timeout: 3000,
async: false, //Don't do an AJAX call, do a JAX call, because we want to wait for the result.
success: function(data) {
//Success callback
isValid = data; //Return if valid or not.
},
error: function() {
//Error in AJAX call
isValid = /\@.*\..+$/.test(value); // perform standard validation
},
}); // ajax
return isValid;
}
/*-----------------------------*\
jQuery Validation plugin
\*-----------------------------*/
function initValidate() {
/**
* For more information about this plugin and how to
* use it. Please read:
* http://jqueryvalidation.org/documentation/
*/
/**
* Require at least one checkbox
*/
$.validator.addMethod(
"require-selection",
function(value, element) {
var $element = $(element),
$form = $element.parents(".js-form"),
selectionGroup = $element.data(
"require-selection-group"
);
// Inform the developer to use the correct attribute
if (!selectionGroup) {
console.log(
"Use the data-require-selection-group attribute to define a selector which group needs to be validated"
);
}
// Trigger the form validation again when one of the required checkboxes is changed
$('[data-require-selection-group="' + selectionGroup + '"]')
.off("change.require-selection")
.on("change.require-selection", function() {
$form.valid();
});
// Select the group to check validation
return (
$(
'[data-require-selection-group="' +
selectionGroup +
'"]:checked'
).length > 0
);
},
"U moet tenminste één keuze selecteren"
);
/**
* Companyselector: validate if selection has been made
*/
$.validator.addMethod(
"bedrijfsnaam",
function(value, element) {
var $element = $(element),
$form = $element.parents("form");
return (
this.optional(element) ||
(value !== (null || "") &&
$form.find("input.kvknummer").val() !==
(null || "")) ||
(value !== (null || "") &&
$form.find("input.initial-kvknummer").val() !==
(null || ""))
);
//Do not trigger this function if the modal with companies is not vissible yet.
//Bit stupid to tell people they need to select something if they can't.
},
$.validator.format("U moet een bedrijf selecteren")
); // error message content
/**
* Excludes the combination of answers, like saying 'No' to each thing to change,
* and changing nothing all together. Stop waisting everybody's time.
*
*/
//mutuallyexclusive
$.validator.addMethod(
"mutuallyexclusive",
function(value, element) {
var $block = $(element).parents(
".js-mutuallyexclusive-wrapper"
),
$mutuallyTriggers = $block.find(
".js-mutually-exclusive input"
),
$mutuallyChecked = $block.find(
".js-mutually-exclusive input:checked"
),
$message = $(
"<div class=\"notification js-notification-mutuallyexclusive\"><p>U kunt niet twee keer 'nee' invullen. Om te wijzigen voegt u de nieuwe gegevens toe en laat u de oude vervallen.</p></div>"
),
$messageInDom = $block.find(
".js-notification-mutuallyexclusive"
),
isMessageInserted = $messageInDom.length === 1;
//Return false if more than 2 are checked
var valid =
this.optional(element) ||
$mutuallyTriggers.length > $mutuallyChecked.length;
if (!valid) {
if (!isMessageInserted) {
var $location = $block
.find("label")
.first()
.parent();
$message.insertBefore($location);
} else {
$messageInDom.removeClass("is-hidden");
}
} else {
if (isMessageInserted) {
$messageInDom.addClass("is-hidden");
}
}
return valid;
},
""
);
/**
* Companyselector: validate if selection has more locations
* with result of type 22
*/
$.validator.addMethod(
"hasmorelocations",
function(value, element) {
var $companySelector = $(element).parents(
".js-companyselector"
),
$hasMoreLocations = $companySelector.find(
".js-hasmorelocations"
),
$notification = $companySelector.nextAll(
".js-notification"
);
if ($hasMoreLocations.val() === "1") {
$companySelector.addClass("is-last-element"); // remove margin
$notification.addClass("is-hidden");
return true;
}
$companySelector.removeClass("is-last-element"); // add margin between element
$notification.removeClass("is-hidden");
return false;
},
$.validator.format(
"U heeft een bedrijf geselecteerd met maar 1 vestiging."
)
);
/**
* Companyselector: check if selection has a location
*/
$.validator.addMethod(
"isVestiging",
function(value, element) {
var $companySelector = $(element).parents(
".js-companyselector"
),
$isVestiging = $companySelector.find("input.vestiging"),
$notification = $companySelector.nextAll(
".js-notification"
);
if ($isVestiging.val() === "1") {
$companySelector.addClass("is-last-element"); // remove margin
$notification.addClass("is-hidden");
return true;
}
$companySelector.removeClass("is-last-element"); // add margin between element
$notification.removeClass("is-hidden");
return false;
},
$.validator.format(
"U heeft een bedrijf of stichting geselecteerd zonder vestiging."
)
);
/**
* Companyselector: ???
* Special rule for form /formulier/vestigingoverdragen/
*/
$.validator.addMethod(
"isdifferentcompany",
function(value, element) {
var company =
JSON.parse(sessionStorage.getItem("wizard-company")) || {};
var $firstKvK = company.dossiernummer,
$other = $(element).parents("#dynamicform"),
$secondKvK = $other
.find('input[name="kvknummer"]')
.val();
if ($firstKvK === $secondKvK) {
return false; //Selected the same company twice, throw error.
}
return true; //Not the same, so OK.
},
$.validator.format(
"U kunt uw vestiging niet overdragen aan uw eigen organisatie. Kies een andere organisatie om de vestiging aan over te dragen."
)
);
/**
* BSN check.
*
* Test: (9 * a) + (8 * b) + (7 * c) + (6 * d) + (5 * e) + (4 * f) + (3 * g) + (2 * h) + (-1 * i) % 11 == 0
* Where BSN 510889517: a = 5, b = 1, c = 0, d = 8, e = 8, f = 9, g = 5, h = 1, i = 7.
*
* http://nl.wikipedia.org/wiki/Elfproef
* http://nl.wikipedia.org/wiki/Burgerservicenummer#11-proef
*
*/
$.validator.addMethod(
"bsn",
function(value, element) {
var bsn = value;
//Incase the input was invalid (undefined etc.)
if (!bsn) {
return false;
}
if (bsn.length === 0) {
// We received an empty string (?) thats ok.
return true;
}
var bsn_length = bsn.length;
if (
bsn_length < 8 ||
bsn_length > 9 ||
$.isNumeric(bsn) === false
) {
//A valid BSN is 8 or 9 characters long.
return false;
}
var pos = 0; // The position of a character in the BSN.
var result = 0; // Result of the multiplication and addition.
for (var i = bsn_length; i > 0; i--) {
// Loop backward, start at 9 (or 8)
result +=
i !== 1 ? bsn.charAt(pos) * i : bsn.charAt(pos) * -1; // Only the last one we need to multiply with -1.
pos++;
}
return result % 11 === 0; // calculate the remainder of the devision (modulo), verify its 0.
},
$.validator.format("Voer een geldig BSN in")
);
/**
* Checks Capitals, spaces and special characters except . -
* TODO: This is not a berichtenbox only check perse, its just a regex check. So consider renaming.
* Is this function accually used?
*/
$.validator.addMethod(
"berichtenbox",
function(value, element) {
if (value.length === 0) {
return true;
} else {
return /^([0-9a-z.-])+$/.test(value);
}
},
$.validator.format("Voer een geldig adres in")
);
/**
* Combine two address fields for single error message
*/
$.validator.addMethod(
"address-selection",
function(value, element) {
if (value.length > 0) {
return true;
}
},
$.validator.format("Vul een geldige postcode en huisnummer in")
);
/*
* This function checks if the new searched address was used.
*/
$.validator.addMethod(
"searchedaddress",
function(value, element) {
var $element = $(element),
$parent = $element.parents(".js-address-check-gx");
if ($parent.length === 0) {
return true;
}
var $addressPrefill = $parent.find(
".js-address-street-prefill"
), //Go to the container.
$addressUser = $parent.find(".js-address-street");
//Check if the classes js-address-street-prefill, js-address-street not available
if (
$addressPrefill.length === 0 &&
$addressUser.length === 0
) {
return false;
}
//Both the prefill and user input are hidden.
if (
$addressPrefill.hasClass("is-hidden") &&
$addressUser.hasClass("is-hidden")
) {
return false;
}
return true;
},
$.validator.format('Klik op de knop "Zoek adres" hieronder')
);
/**
* Check if when you choose to change a Bezoekades, no Postbus is added to the new address.
* This is used in the webformulier Ondernemingsgegevens and vestiginginschrijven
*/
$.validator.addMethod(
"nopostbus",
function(value, element) {
var prefillStreet = $form
.find(
".label--filled.js-address-street-prefill + input"
)
.val(),
inputStreet = $form
.find(".js-address-street input")
.val(),
streetname = prefillStreet || inputStreet;
if (streetname) {
return !(
streetname.toUpperCase().substring(0, 7) ===
"POSTBUS"
);
}
return true;
},
$.validator.format("Het bezoekadres mag geen postbus zijn.")
);
$.validator.addMethod(
"existingdateNL",
function(value, element) {
//ALWAYS use this validation rule combined with dateNL!
//syntax checking is done in dateNL
//this rule only checks existing dates, so that the right specific
//validation message will be shown in the right situation
var check = true,
regex = /^\d{1,2}\-\d{1,2}\-\d{4}$/;
if (regex.test(value)) {
var dateArray = value.split("-"),
dd = parseInt(dateArray[0], 10),
mm = parseInt(dateArray[1], 10),
yyyy = parseInt(dateArray[2], 10),
xdata = new Date(yyyy, mm - 1, dd);
check =
xdata.getFullYear() === yyyy &&
xdata.getMonth() === mm - 1 &&
xdata.getDate() === dd;
}
return this.optional(element) || check;
},
"Deze datum bestaat niet"
);
$.validator.addMethod(
"dateNL",
function(value, element) {
var regex = /^\d{1,2}\-\d{1,2}\-\d{4}$/,
check = regex.test(value);
return this.optional(element) || check;
},
"Een geldige datum is DD-MM-JJJJ."
);
$.validator.addClassRules("js-validate-dateNl", {
dateNL: true,
existingdateNL: true,
});
/**
* Make call to handler to check custom email validation rules
*/
$.validator.addMethod(
"email",
function(value, element) {
if (development) {
return true;
}
return (
this.optional(element) || emailaddressValidator(value)
);
},
"Vul een geldig e-mailadres in"
);
/**
* Validate password mijnKvk email account
*/
$.validator.addMethod(
"passwordvalidationmijnkvk",
function(value) {
var regex = /[^ -~]/; // not matches ASCII characters
var check = regex.test(value);
if (check) {
return false;
}
return (
value != null && value.length >= 9 && value.length < 256
);
},
"De volgende tekens zijn toegestaan in uw wachtwoord: a-z, A-Z, 0-9 en de standaard leestekens."
);
/**
* Validate password no leading and trading spaces
*/
$.validator.addMethod(
"passwordvalidation",
function(value) {
return (
value != null &&
value.length >= 9 && //at least 9 characters
$.trim(value) === value
); //no leading or trailing spaces
},
"Dit wachtwoord voldoet niet aan alle vereisten."
);
/**
* This is url validation which checks only for not null.
* We use type=url html 5 attribute to trigger native keypad in mobile browsers.
* In absence of the below function, the native html5 url validation is triggered; which does
* a strict check for the presence of http:// in the string (in some browsers) which is not desirable for us
*/
$.validator.addMethod(
"url",
function(value) {
return value !== null && value !== "";
},
"Vul hier een geldige URL in"
);
$.validator.addMethod(
"radioselect",
function(value) {
//returen
},
"U moet hier een optie selecteren"
);
// Trigger validation on max-length fields when there beeing typed in.
// This way the users get feedback sooner (i.e. while typing, and not after pressing submit).
var $formElm = $form.find(".max-length"); //Our maxlength elements.
$formElm.on("keyup", function() {
//onkeyup.
$(this).valid(); //Trigger validation on the element on each keypress.
});
/**
* This method validate if the given bankaccountnumbers are from KvK
*/
$.validator.addMethod(
"kvkbankaccountnumber", // This function checks if the number is a current KvK bank account number
function(value, element) {
var validBankaccountnumbers = [
"NL26RBOS0760036950",
"NL04ABNA0490707580",
"NL17DEUT0534641288",
"NL20DEUT0498802159",
"NL34DEUT0456119094",
"NL59INGB0000009434",
"NL96ABNA0240266668",
"NL09INGB0000941922",
"NL14RABO0384207200",
"NL18RABO0135641233",
"NL49ABNA0444034250",
"NL73INGB0000098616",
"NL81RABO0362175063",
"NL85INGB0656646101",
"NL31DEUT0319810577",
],
i = 0;
for (i; i < validBankaccountnumbers.length; i++) {
//Loop through all numbers
if (value === validBankaccountnumbers[i]) {
//If the number is in the list
return true; //Its a KVK number (could be an old one though).
}
}
return false;
},
$.validator.format(
"Dit rekeningnummer is niet van de KvK. We raden u aan om contact op te nemen met uw bank om de betaling te herstellen."
)
);
/**
* #TODO document this method please
*/
$.validator.addMethod(
"ispastdate",
function(value, element) {
var regex = /^\d{1,2}\-\d{1,2}\-\d{4}$/,
check = regex.test(value);
if (check) {
var dateArray = value.split("-"),
dd = parseInt(dateArray[0], 10),
mm = parseInt(dateArray[1], 10),
yyyy = parseInt(dateArray[2], 10),
chosendate = new Date(yyyy, mm - 1, dd),
today = new Date(),
difference = general.dateDiffInDays(
chosendate,
today
);
return this.optional(element) || difference >= 1;
}
return this.optional(element) || false; //Could not do regex
},
$.validator.format("De datum moet in het verleden liggen.")
);
$.validator.addMethod(
"relatienummer",
function(value) {
var regex = /^(d|D)[0-9]{7}/,
check = regex.test(value);
return check;
},
$.validator.format(
"Voer een geldig relatie nummer in (start met een D gevolgd door 7 getallen)."
)
);
$.validator.addMethod(
"ismax60days",
function(value) {
var regex = /^\d{1,2}\-\d{1,2}\-\d{4}$/,
check = regex.test(value);
if (check) {
var dateArray = value.split("-"),
dd = parseInt(dateArray[0], 10),
mm = parseInt(dateArray[1], 10),
yyyy = parseInt(dateArray[2], 10),
chosendate = new Date(yyyy, mm - 1, dd),
today = new Date(),
difference = general.dateDiffInDays(
today,
chosendate
);
return difference <= 60;
}
return false; //Could not do regex
},
$.validator.format(
"De ingangsdatum van de wijzing mag niet verder dan 2 maanden in de toekomst liggen. Geef de wijziging op een later moment aan ons door."
)
);
$.validator.addMethod(
"isfuturedate",
function(value) {
var regex = /^\d{1,2}\-\d{1,2}\-\d{4}$/,
check = regex.test(value);
if (check) {
var dateArray = value.split("-"),
dd = parseInt(dateArray[0], 10),
mm = parseInt(dateArray[1], 10),
yyyy = parseInt(dateArray[2], 10),
chosendate = new Date(yyyy, mm - 1, dd),
today = new Date(),
difference = general.dateDiffInDays(
chosendate,
today
);
return difference < 1;
}
return false; //Could not do regex
},
$.validator.format("De datum mag niet in het verleden liggen.")
);
/**
* This method validate if the KvK bankaccountnumbers (checked with method checkKvkBankAccount) are still active backaccountsnumber
*/
$.validator.addMethod(
"kvkbankaccountnumberold", // This function checks if the number is a older KvK bank account number
function(rekeningnummer) {
var validBankaccountnumbers = [];
validBankaccountnumbers.NL20DEUT0498802159 = new Date(
"2015-03-13"
);
validBankaccountnumbers.NL34DEUT0456119094 = new Date(
"2015-03-31"
);
validBankaccountnumbers.NL96ABNA0240266668 = new Date(
"2015-03-10"
);
validBankaccountnumbers.NL59INGB0000009434 = new Date(
"2015-04-23"
);
validBankaccountnumbers.NL09INGB0000941922 = new Date(
"2014-12-22"
);
validBankaccountnumbers.NL14RABO0384207200 = new Date(
"2014-08-14"
);
validBankaccountnumbers.NL18RABO0135641233 = new Date(
"2014-11-11"
);
validBankaccountnumbers.NL49ABNA0444034250 = new Date(
"2015-01-26"
);
validBankaccountnumbers.NL73INGB0000098616 = new Date(
"2014-07-17"
);
validBankaccountnumbers.NL81RABO0362175063 = new Date(
"2014-08-21"
);
validBankaccountnumbers.NL85INGB0656646101 = new Date(
"2014-11-19"
);
var datumOpgeheven =
validBankaccountnumbers[rekeningnummer],
datumKlant = $("#datum-afschrijving").val();
if (
datumOpgeheven === null ||
datumOpgeheven === undefined
) {
//User entered a IBAN which was not in our list.
return true;
}
if (datumKlant !== null && datumKlant.length === 10) {
//Check for valid date
var jaar = datumKlant.substring(6, 10),
maand = datumKlant.substring(3, 5),
dag = datumKlant.substring(0, 2);
datumKlant = new Date(jaar + "-" + maand + "-" + dag);
if (datumKlant < datumOpgeheven) {
//The user says he transferred money to the IBAN before it was clossed.
return true; //So its OK.
}
return false; //Else its NOK
}
return true; //The date given by the user was invalid OR not provided at all. Return true, we cant check so we assume its OK.
},
$.validator.format(
"Dit rekeningnummer is vervallen. Het bedrag is automatisch op uw rekening teruggestort. Controleer uw bankrekening."
)
);
$.validator.addMethod(
"alphanumeric-space",
function(value, element) {
return (
this.optional(element) || !/[^a-zA-Z0-9 ]+/g.test(value)
);
},
"Deze referentie kan niet worden opgenomen in uw bestelling. Vul alleen letters, cijfers en/of spaties in (a-z, A-Z, 0-9)."
);
$.validator.addMethod(
"foreigncountryselect",
function(value, element) {
return value !== "Kies een land";
},
$.validator.format("Selecteer een land.")
);
/**
* Check if a given number is a valid money amount and above 0 (possible with comma or dot and 2 decimals)
*
* Dots and spaces are allowed but only when preceded by numbers.
* After the , only two digits are allowed.
*
*/
$.validator.addMethod(
"positivemoneyamount",
function(value, element) {
var number = value,
regex = /^[1-9][0-9]{0,2}(?:(\s|\.)?[0-9]{3}){0,3}(\,[0-9]{2})?$/gm,
check = regex.test(number);
return check; // Nothing was entered, thats ok.
},
$.validator.format(
"Gebruik alleen cijfers (geef centen aan na een komma)."
)
);
/**
* Checks if the entered value is a positive number, 0 is also allowed
*/
$.validator.addMethod(
"positiveinteger",
function(value, element) {
var number = value,
regex = /^\d*$/,
check = regex.test(number);
return check; // Nothing was entered, thats ok.
},
$.validator.format("Gebruik alleen positieve getallen.")
);
/*
* A function to validate international phone numbers.
* Max 15 characters. Can start with a + can have one space between numbers
*
*/
$.validator.addMethod(
"internationalphonenumber",
function(value, element) {
var regex = /^\+?(?:[0-9] ?){6,14}[0-9]$/,
check = regex.test(value);
return this.optional(element) || check;
},
$.validator.format(
"Vul een geldig telefoonnummer in. (Max 15 cijfers, spaties zijn toegestaan)"
)
);
$.validator.addMethod(
"mobilenumber",
function(value, element) {
var regex = /.*(\+316)\d{8}.*/,
check = regex.test(value);
return this.optional(element) || check;
},
$.validator.format(
"Vul een geldig mobiel nummer in (vb. +31612345678)."
)
);
// Special validator for phonenumbers in form.
// The goal of this function is to stimulate users to enter either a correct dutch mobile number
// OR a valid international number. Dutch numbers have a strict length check, international ones are
// permitted to be between 6 and 15 digits.
//
// Valid formats:
// Dutch: +31612341234 | 0031612341234 | 0612341234
// International: 004412341234 | +441234123412341
//
// When the element does not have 'data-rule-required' it also accepts the default value of +316 or an empty value
$.validator.addMethod(
"formphonenumber",
function(value, element) {
var trimmedValue = value.replace(/ /g, "");
var regexNLPrefix = /^(?:(?:\+31|0031)(\d)|06)(\d*)/;
var regexInternational = /^(?:\+|00)(?:[0-9] ?){6,15}$/;
if (!$(element).data().ruleRequired) {
if (trimmedValue === "+316" || trimmedValue === "")
return true;
}
var nlMatches = trimmedValue.match(regexNLPrefix);
return nlMatches ? (nlMatches[1] === "6" ||
nlMatches[1] === undefined) &&
nlMatches[2].length === 8 : regexInternational.test(trimmedValue);
},
$.validator.format(
"Vul een geldig mobiel nummer in (Max 15 cijfers, spaties zijn toegestaan, vb. +31612345678)."
)
);
$.validator.addMethod(
"searchedcompany",
function(value, element) {
return $(".js-searchedcompany").length > 0;
},
$.validator.format("Selecteer een onderneming.")
);
// KWO-552: Remove error message on focus
var $postcodeInput = $form.find(
'input[data-addresscheck-gx="postcode"]'
);
$postcodeInput.on("focus", function() {
var $fieldset = $(this).parents(".js-address-check-gx");
var $firstLabel = $fieldset.find("label").eq(0);
var $error = $firstLabel.find("div.error");
$error.remove();
});
}
/**
* This function validate if the given bankaccountnumbers are from KvK
*/
function checkKvkBankAccount() {
$form.on("blur", ".js-validate-kvkbank", function() {
$(this).valid();
});
}
/**
* This function validate if the KvK bankaccountnumbers (checked with function checkKvkBankAccount() ) are still active backaccountsnumber
*/
function checkKvkBankAccountDate() {
$form.on("focus", ".js-validate-kvkbankdate", function() {
$(this).parents("fieldset").prev(".js-validate-kvkbank").blur();
});
}
/*
* Checks if the date is futher away then 3 days in the future
*/
function checkFutureDateNL() {
var regex = /^\d{1,2}\-\d{1,2}\-\d{4}$/;
$form.on("change focus", ".js-checkfuturedate", function() {
var value = $(this).find("input.js-datepicker").val(),
$parent = $(this),
$notification = $parent.find(".js-notification"),
check = regex.test(value);
if (check) {
var dateArray = value.split("-"),
dd = parseInt(dateArray[0], 10),
mm = parseInt(dateArray[1], 10),
yyyy = parseInt(dateArray[2], 10),
chosendate = new Date(yyyy, mm - 1, dd),
today = new Date(),
difference = general.dateDiffInDays(chosendate, today);
if (difference < -2) {
$notification.removeClass("is-hidden");
} else {
$notification.addClass("is-hidden");
}
}
});
}
/*
* toggle show/hide input field on checkbox
*/
function showInputField() {
var $faxInput = $(".js-reveal-if-active");
if ($(".js-reveal").prop("checked")) {
$faxInput.removeClass("is-hidden");
} else {
$faxInput.addClass("is-hidden");
}
$(".js-reveal").click(function() {
$faxInput.toggleClass("is-hidden");
});
}
// make these functions globally available
return {
init: init,
validateOptions: validateOptions,
validator: validator,
initSelect: initSelect,
setRadioOptions: setRadioOptions,
};
})()
);
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(24),
b = google_tag_manager["GTM-P2JD7J"].macro(25);
return void 0 != a && void 0 != b ? "ja" : "nee"
})();
function CookieManager() {
var self = this;
const modalCode = `<div class="ReactModalPortal">
<div class="ReactModal__Overlay ReactModal__Overlay--after-open c-modal-overlay-background" style="z-index: 2147483647!important" >
<div class="ReactModal__Content ReactModal__Content--after-open c-modal p-8 p-12@size-m u-overflow-hidden u-opacity-100 c-modal--active" tabindex="-1" role="dialog" aria-labelledby="cookie-info-title" aria-modal="true" style="min-height: auto; min-width: auto; height: auto" >
<section data-ui-test-class="cookieconsent" id="cookie-consent" aria-label="Cookie instellingen" style="position: relative; z-index: 30" >
<div class="o-grid-column-start-1-end-13">
<h2 id="cookie-info-title" class="u-margin-bottom-2x">Cookie instellingen</h2>
<p id="cookie-info-intro" class="font-size-s font-lh-l"> KVK verkrijgt graag jouw toestemming om bepaalde cookies te mogen plaatsen. Lees eerst bij Persoonlijk en De beste gebruikservaring om wat voor cookies het gaat en geef daarna jouw voorkeur aan door Persoonlijk of De beste gebruikservaring aan te vinken. KVK plaatst altijd functionele cookies om de website goed te laten werken. </p>
<form method="post" class="u-display-block">
<div class="u-position-relative u-display-inline-block u-padding-right-3x" aria-live="polite" aria-labelledby="label-for-cookie-options" role="radiogroup" id="cookie-options-radiogroup" data-ui-test-class="cookie-options-radiogroup" >
<label id="label-for-cookie-options">Maak je keuze</label>
</div>
</form>
<button type="button" name="Opslaan" aria-disabled="false" class="c-button c-button c-button--small@size-s mt-2 mr-8 mb-5" tabindex="0" data-ui-test-class="toestemming" >Keuze opslaan</button >
<a href="/privacy/cookies/" class="c-link c-link inline-block@size-m" >
<svg class="c-arrow-icon fill-color-secondary-blue-base u-align-middle c-arrow-icon--right" width="20px" height="20px" focusable="false" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" >
<rect width="64" height="64" style="fill: none"></rect>
<polygon points="50.35 19.02 27.9 41.48 31.4 44.98 53.9 22.57 50.35 19.02" ></polygon>
<polygon points="34.95 41.45 12.5 19 9 22.5 31.4 45 34.95 41.45" ></polygon>
</svg >
<span class="u-align-middle u-font-weight-inherit" >Cookie informatie</span >
</a >
<h3 class="mt-2" id="cookie-info-subtitle">Informatie over cookie keuze</h3>
<ul id="cookie-info-list">
<li class="c-accordion__panel" id="q-0.3650576799822971" data-ui-test-class="accordion-item" >
<button type="button" name="" aria-disabled="false" class="c-button-not-visible u-width-full u-text-left" tabindex="0" data-ga-expanded="false" aria-controls="0.3650576799822971" data-ui-test-class="accordion-toggle-button" aria-expanded="false" >
<h3 class="h5 c-accordion__heading">Functioneel</h3>
<span class="c-accordion__heading-button fill-color-primary-purple-base" >
<svg class="c-arrow-icon u-margin-bottom-none" width="20px" height="20px" focusable="false" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" >
<rect width="64" height="64" style="fill: none"></rect>
<polygon points="50.35 19.02 27.9 41.48 31.4 44.98 53.9 22.57 50.35 19.02" ></polygon>
<polygon points="34.95 41.45 12.5 19 9 22.5 31.4 45 34.95 41.45" ></polygon>
</svg >
</span>
</button>
<div class="c-accordion__panel-content font-size-s font-lh-l" id="0.3650576799822971" data-ui-test-class="answer" style="display: none;" >
<div>We plaatsen altijd functionele cookies voor een goed en veilig gebruik van onze website. Hiermee kan je bijvoorbeeld automatisch inloggen op onze website. Tevens plaatsen wij analytische cookies, zoals van Google Analytics, om onder meer bezoekersstatistieken bij te houden. Deze informatie gebruiken we niet om persoonlijke profielen te maken. De analytische cookies gebruiken wij wel om bijvoorbeeld te meten welke delen van onze website je bezoekt en hoe vaak je dat doet. Met deze gegevens verbeteren we onze website. Wij hebben voor dit gebruik geen toestemming nodig.</div>
</div>
</li>
<li class="c-accordion__panel" id="q-0.06733224176236874" data-ui-test-class="accordion-item" >
<button type="button" name="" aria-disabled="false" class="c-button-not-visible u-width-full u-text-left" tabindex="0" data-ga-expanded="false" aria-controls="0.06733224176236874" data-ui-test-class="accordion-toggle-button" aria-expanded="false" >
<h3 class="h5 c-accordion__heading">Persoonlijk</h3>
<span class="c-accordion__heading-button fill-color-primary-purple-base" >
<svg class="c-arrow-icon u-margin-bottom-none" width="20px" height="20px" focusable="false" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" >
<rect width="64" height="64" style="fill: none"></rect>
<polygon points="50.35 19.02 27.9 41.48 31.4 44.98 53.9 22.57 50.35 19.02" ></polygon>
<polygon points="34.95 41.45 12.5 19 9 22.5 31.4 45 34.95 41.45" ></polygon>
</svg >
</span>
</button>
<div class="c-accordion__panel-content font-size-s font-lh-l" id="0.06733224176236874" data-ui-test-class="answer" style="display: none;" >
<div>Naast de functionele en analytische cookies (zoals omschreven onder Functioneel) maken wij met deze cookies de website persoonlijker en gebruiksvriendelijker. We tonen je informatie over voor jou relevante KVK-producten en -diensten. Het gaat hier alleen om cookies van ons zelf en niet om privacygevoelige cookies van derden. Wanneer je kiest voor Persoonlijk, volgen we je gedrag op onze website. Zo kunnen we je artikelen tonen die voldoen aan je interesses of opgegeven profiel. Ook kunnen we je voor jou relevante producten of diensten tonen die aansluiten op het door jou opgebouwde profiel.</div>
</div>
</li>
<li class="c-accordion__panel" id="q-0.8794555524538652" data-ui-test-class="accordion-item" >
<button type="button" name="" aria-disabled="false" class="c-button-not-visible u-width-full u-text-left" tabindex="0" data-ga-expanded="false" aria-controls="0.8794555524538652" data-ui-test-class="accordion-toggle-button" aria-expanded="false" >
<h3 class="h5 c-accordion__heading">De beste ervaring</h3>
<span class="c-accordion__heading-button fill-color-primary-purple-base" >
<svg class="c-arrow-icon u-margin-bottom-none" width="20px" height="20px" focusable="false" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" >
<rect width="64" height="64" style="fill: none"></rect>
<polygon points="50.35 19.02 27.9 41.48 31.4 44.98 53.9 22.57 50.35 19.02" ></polygon>
<polygon points="34.95 41.45 12.5 19 9 22.5 31.4 45 34.95 41.45" ></polygon>
</svg >
</span>
</button>
<div class="c-accordion__panel-content font-size-s font-lh-l" id="0.8794555524538652" data-ui-test-class="answer" style="display: none;" >
<div>Naast de functionele en analytische cookies �n de cookies zoals genoemd onder Persoonlijk plaatsen wij ook cookies van derden en cookies waarmee wij jouw internetgedrag kunnen volgen. Door deze cookies haal je het meeste uit onze website. Zo kun je bijvoorbeeld videos bekijken. Ook informeren we je over voor jou relevante KVK-producten en -diensten. Wij en derden volgen je internetgedrag en verzamelen daarbij je persoonsgegevens. Denk aan je IP-adres of door jou bezochte webpaginas. Deze informatie wordt ook opgeslagen op de server van de aanbieder van de website of op de server waar KVK.nl gebruik van maakt. Door sociale media-cookies kun je verbinding maken met sociale netwerken en content van onze website op sociale media delen. Derde partijen, zoals Google, kunnen ook een analyse uitvoeren of een video tonen en hierbij cookies plaatsen.</div>
</div>
</li>
</ul>
</div>
</section>
</div>
</div>
</div>`;
// START the cookiemanager
function init() {
// detect if cookiebar is enabled
//Only for old style pages.
if (
configuration.cookies.enableTrackingCookieNotificationBar &&
$("#js-components").length === 0 &&
typeof window !== "undefined" &&
!window.location ? .href.includes("http://www.loc.kvk.nl")
) {
// detect if cookie is present
switch ($.cookie("allowTrackingCookiesKvK")) {
// cookies are accepted -> load GA
case "1":
case "2":
case "3":
break;
// no valid cookievalues detected -> open the cookiebar
default:
self.openCookiePermissionBar();
break;
}
}
}
// remove cookies that are previously set for this domain
function removeTrackingCookies() {
var trackingCookieArray = "abcdefghijklmnopqrstuvwxyz";
for (var i = 0; i < trackingCookieArray.length; i++) {
var cookiename = "__utm" + trackingCookieArray.charAt(i);
$.removeCookie(cookiename, {
path: "/",
domain: configuration.cookies.cookieDomain,
});
}
const youtubeTrackingCookiesList = [
"SAPISID",
"SID",
"SIDCC",
"SSID",
"VISITOR_INFO1_LIVE",
"YSC",
"__Secure-3PAPISID",
"__Secure-3PSID",
"__Secure-APISID",
"__Secure-HSID",
"__Secure-SSID",
"LOGIN_INFO",
"PREF",
];
for (let j = 0; j < youtubeTrackingCookiesList.length; j++) {
$.removeCookie(youtubeTrackingCookiesList[j], {
path: "/",
domain: configuration.cookies.cookieDomain,
});
}
}
// Public functions
self.openCookiePermissionBar = function() {
$.ajax({
url: window.configuration.url.webApiBaseUrl +
"/content/component/search?urlPath=%2Fprivacy%2Fcookies%2F",
headers: {
"api-version": "2"
},
error: function() {
$(".ReactModal__Overlay")
.addClass("hidden")
.removeClass("c-modal-overlay-background");
$("body").removeClass("cookie-active");
$("body").removeClass("ReactModal__Body--open");
},
success: function(result) {
$("body").prepend(modalCode);
$("body").addClass("cookie-active");
$("body").addClass("ReactModal__Body--open");
$(".site").attr("aria-hidden", true);
var style = document.createElement("style");
style.innerHTML = `.ReactModal__Body--open {overflow: hidden;}.c-modal{position:absolute;top:10vh;width:37.5rem;left:calc(50% - 10rem);background:#fff;overflow:auto;-webkit-overflow-scrolling:touch;outline:0;transform:scale(.7);opacity:0;transition:all .3s;border:1px solid #bebebe;border-radius:.25rem;text-align:left}.c-modal-overlay-background{background-color:rgba(0,0,0,.3);top:0;left:0;bottom:0;right:0;position:fixed;display:block;width:100%;height:100%;z-index:1000;overflow-y:auto}.u-overflow-hidden{overflow:hidden!important}.u-opacity-100,.u-opacity-hover-100:hover{opacity:1}.c-modal--active{transform:scale(1);opacity:1}.p-8{padding:2rem!important}.o-grid-column-start-1-end-13{grid-column-start:1!important;grid-column-end:13!important}.u-margin-bottom-2x{margin-bottom:1rem!important}h2{color:#00526e;font-size:1.75rem;line-height:2rem}.font-lh-l{line-height:1.5rem!important}.font-size-s{font-size:.875rem!important}p{color:#343434;font-size:1.125rem;line-height:1.875rem;letter-spacing:.04px;margin-bottom:1rem}.u-display-block{display:block!important}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}.c-button{background-color:#aa418c;box-shadow:0 4px 6px hsl(0deg 0% 75% / 20%),0 1px 3px hsl(0deg 0% 75% / 20%);border-radius:.25rem;border:.0625rem solid #aa418c;color:#fff;cursor:pointer;display:inline-block;font-size:18px;font-weight:500;line-height:1rem;min-width:5rem;padding:1rem 1.5rem;text-decoration:none;transition:all .15s ease;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mr-8{margin-right:2rem!important}.mb-5{margin-bottom:1.25rem!important}.mt-2{margin-top:.5rem!important}.c-link{color:#0070b9;cursor:pointer;display:inline-block;text-decoration:underline;line-height:2rem}.hidden{display:none!important}a{background-color:transparent;color:#0070b9;-webkit-text-decoration-skip:objects}svg:not(:root){overflow:hidden}.u-align-middle{vertical-align:middle!important}.fill-color-secondary-blue-base{fill:#0070b9!important}.u-font-weight-inherit{font-weight:inherit!important}ol,ul{line-height:1.625rem!important}.bodyText-s,ol,ul{letter-spacing:.04px}blockquote,body,dd,dl,fieldset,figure,h1,h3,h4,h5,h6,hr,legend,ol,pre,ul{margin:0;padding:0}.mt-4{margin-top:1rem!important}.c-accordion__panel{list-style:none;margin-left:0;padding-top:1.5rem;position:relative}li{list-style:none}.c-accordion__panel>button{cursor:pointer}.u-width-full{width:100%!important}.u-text-left{text-align:left}.c-button--info,.c-button-not-visible{border:none;box-shadow:none;background:0 0;font-weight:inherit}button{font-family:Roboto}button,select{text-transform:none}button,input{overflow:visible}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}.c-accordion__heading{color:#343434;cursor:pointer;font-weight:400;}.c-accordion__heading-button{position:absolute;right:0;top:2rem}.fill-color-primary-purple-base{fill:#aa418c!important}.u-font-size-16{font-size:16px!important}.c-radio__label{padding-left:1rem;display:inline-block;position:relative;color:#343434}.c-arrow-icon--right{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}h3#cookie-info-subtitle{font-size: 22px}h3.h5.c-accordion__heading{font-size: 16px;font-weight: 600}#cookie-options-radiogroup > label.c-radio{font-size: 18px;font-weight: 400}h2#cookie-info-title{font-weight: 600}#cookie-consent span.u-align-middle.u-font-weight-inherit{text-decoration:underline}#cookie-consent .c-radio:focus-within{outline: .0625rem solid #0070b9}#cookie-consent .c-accordion__panel>button:focus{outline:.0625rem solid #0070b9;outline-offset:5px}`;
document.getElementsByTagName("head")[0].appendChild(style);
const cookieDataFromCMS = result[1].content.body;
const filteredCookieData = cookieDataFromCMS.filter((item) => {
if (
item ? .blocks &&
// find the block with cookiedata, dump the rest
item.blocks.find(function(block) {
return block.type === "blocks.blockCookies";
})
) {
return true;
}
return false;
});
// get first block from filtered results, as it contains the data we want
const cmsData = filteredCookieData[0].blocks[0];
const cookieOptionsFromCMS = [];
cmsData.cookieLevels.map(({
level, title
}) => {
return cookieOptionsFromCMS.push({
value: level,
text: title,
});
});
$(cookieOptionsFromCMS.sort((a, b) => a.value - b.value)).each(
function() {
$("#cookie-options-radiogroup").append(
$("<label>")
.addClass("c-radio")
.append(
$("<input>")
.addClass("c-radio__input")
.val(this.value)
.attr("type", "radio")
.attr("name", "cookie-options")
.attr(
"data-checked",
this.value === "1"
)
.attr(
"aria-checked",
this.value === "1"
)
.attr("checked", this.value === "1")
.attr("required", "")
.attr("aria-disabled", "false")
.attr("data-ui-test-class", this.text)
.attr("aria-invalid", "false")
.text(this.text),
$("<span>")
.addClass("c-radio__label")
.text(this.text)
)
);
}
);
if (cmsData ? .cookieLevels) {
$("#cookie-info-list").empty();
$(
cmsData.cookieLevels.sort((a, b) => a.level - b.level)
).each(function() {
$("#cookie-info-list").append(
$("<li>")
.addClass("c-accordion__panel")
.append(
$("<button>")
.addClass(
"c-button-not-visible u-width-full u-text-left"
)
.attr("tabindex", "0")
.attr("type", "button")
.attr(
"data-ui-test-class",
"accordion-toggle-button"
)
.attr("aria-expanded", "false")
.append(
$("<h3>")
.addClass(
"h5 c-accordion__heading"
)
.text(this.title)
)
.append(
$(`<span aria-hidden="true">`)
.addClass(
"c-accordion__heading-button fill-color-primary-purple-base"
)
.append(
`<svg class="c-arrow-icon u-margin-bottom-none c-arrow-icon--up" width="20px" height="20px" focusable="false" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg"><rect width="64" height="64" style="fill: none;"></rect><polygon points="50.35 19.02 27.9 41.48 31.4 44.98 53.9 22.57 50.35 19.02"></polygon><polygon points="34.95 41.45 12.5 19 9 22.5 31.4 45 34.95 41.45"></polygon></svg>`
)
)
)
.append(
$("<div>")
.addClass(
"c-accordion__panel-content font-size-s font-lh-l"
)
.attr("style", "display: none;")
.text(this.description)
)
);
});
$("#cookie-consent").on(
"click",
"#cookie-options-radiogroup :radio",
function() {
$("#cookie-options-radiogroup :radio")
.attr("aria-checked", false)
.attr("data-checked", false);
$(this)
.attr("aria-checked", true)
.attr("data-checked", true);
}
);
}
self.cookieCodeKVK = cmsData.cookieCode;
self.cookieLevels = cmsData.cookieLevels;
if (cmsData.title) {
$("#cookie-info-title").text(cmsData.title);
}
if (cmsData.intro) {
$("#cookie-info-intro").text(cmsData.intro);
}
if (cmsData.subTitle) {
$("#cookie-info-subtitle").text(cmsData.subTitle);
}
self.bindActions();
},
});
dataLayer.push({
user: {
updatedCookieBar: "yes",
cookieBarVariant: "modal",
},
event: "show.toestemming",
});
};
self.bindActions = function() {
var btnSave = $("#cookie-consent > div > button");
btnSave.on("click", function(e) {
e.preventDefault();
var radios = document.getElementsByName("cookie-options");
for (var i = 0, length = radios.length; i < length; i++) {
if (radios[i].checked) {
window.cookieManager.setAllowTrackingCookies(
radios[i].value
);
break;
}
}
$(".ReactModal__Overlay")
.addClass("hidden")
.removeClass("c-modal-overlay-background");
$("body").removeClass("cookie-active");
$("body").removeClass("ReactModal__Body--open");
$(".site").attr("aria-hidden", false);
});
const focusableElements =
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
const modal = document.querySelector("#cookie-consent").parentNode;
const firstFocusableElement = modal.querySelectorAll(
focusableElements
)[0]; // get first one
const focusableContent = modal.querySelectorAll(focusableElements);
const lastFocusableElement =
focusableContent[focusableContent.length - 1]; // get last one
document.addEventListener("keydown", function(e) {
let isTabPressed = e.key === "Tab";
if (!isTabPressed) {
return;
}
if (e.shiftKey) {
// shift + tab combination
if (document.activeElement === firstFocusableElement) {
lastFocusableElement.focus(); // focus on last one
e.preventDefault();
}
} else {
// tab key
if (document.activeElement === lastFocusableElement) {
// cycle back to the first one when the lat one is reached
firstFocusableElement.focus();
e.preventDefault();
}
}
});
$("#cookie-consent").parent().focus();
$("#cookie-consent").on(
"click",
".c-accordion__panel button",
function() {
var isClosed =
$(this)
.closest(".c-accordion__panel")
.find(".c-accordion__panel-content")
.css("display") === "none";
if (isClosed) {
$(this)
.closest(".c-accordion__panel")
.find(".c-accordion__panel-content")
.slideDown();
$(this)
.closest(".c-accordion__panel")
.find("button")
.attr("aria-expanded", "true");
} else {
$(this)
.closest(".c-accordion__panel")
.find(".c-accordion__panel-content")
.slideUp();
$(this)
.closest(".c-accordion__panel")
.find("button")
.attr("aria-expanded", "false");
}
}
);
};
// SET new cookie (or update)
self.setAllowTrackingCookies = function(allowTrackingCookies) {
//Expiration date is 3 months from now.
const expirationDate = new Date();
expirationDate.setMonth(expirationDate.getMonth() + 3);
$.cookie("allowTrackingCookiesKvK", allowTrackingCookies, {
expires: expirationDate,
path: "/",
domain: configuration.cookies.cookieDomain,
secure: configuration.cookies.secureCookies,
});
$.cookie("cookieCodeKVK", self.cookieCodeKVK, {
expires: expirationDate,
path: "/",
domain: configuration.cookies.cookieDomain,
secure: configuration.cookies.secureCookies,
});
$.cookie(
"cookieLevelCodeKVK",
self.cookieLevels[parseInt(allowTrackingCookies) - 1]
.levelCookieCode, {
expires: expirationDate,
path: "/",
domain: configuration.cookies.cookieDomain,
secure: configuration.cookies.secureCookies,
}
);
if (allowTrackingCookies) {
// add to DataLayer
dataLayer.push({
user: {
toestemming: allowTrackingCookies,
},
event: "interaction.toestemming",
});
}
if (allowTrackingCookies === "1") {
// remove in functional level
removeTrackingCookies();
}
};
// start the class, do not initialize on local environments
if (!configuration.developmentEnvironment) {
init();
}
}
function checkCookieActive() {
var $cookieMelding = $(".ReactModal__Overlay");
if (
$cookieMelding.attr("class") &&
!$cookieMelding.attr("class").includes("hidden")
) {
$("body").addClass("cookie-active");
$("body").addClass("ReactModal__Body--open");
}
}
// trigger the cookiemanager when
$(document).ready(function() {
// start cookie manager
window.cookieManager = new CookieManager();
if ($("#js-components").length === 0) {
checkCookieActive();
}
});
(function() {
return "1" === window.navigator.doNotTrack
})();
/**
* local development settings
*/
var development = false;
if (configuration.developmentEnvironment) {
development = true;
}
window.development = development; //Used in shop-accountpage
/**
* prevent IE from caching ajax requests like "Melding sluiten" in Mijn KvK
*/
$.ajaxSetup({
cache: false
});
/**
* General functions
*
* Can be used everywhere as supporting functions.
*/
var general = {
/**
* What do I do?
*/
checkInputLength: function(input, minLength) {
return $.trim("" + input).length >= minLength;
},
/**
* delay opening link / form submit to push data to google analytics
*/
delayedClick: function(url, time) {
setTimeout(function() {
window.location.href = url;
}, time);
},
delayedSubmit: function($form, time) {
setTimeout(function() {
$form.submit();
}, time);
},
/**
* Converts `value` to a string if it's not one. An empty string is returned for `null` or `undefined` values.
*
* @private
* @param {*} value The value to process.
* @returns {string} Returns the string.
*/
_baseToString: function(value) {
if (typeof value === "string") {
return value;
}
return value == null ? "" : value + "";
},
/**
* Compare different dates
*/
dateDiffInDays: function(d1, d2) {
var t2 = d2.getTime();
var t1 = d1.getTime();
return parseInt((t2 - t1) / (24 * 3600 * 1000));
},
/**
* What do I do?
*/
getCheckbox: function($id, type) {
if (type === "integer") {
if ($id.is(":checked")) {
return 1;
} else {
return 0;
}
} else {
return $id.is(":checked");
}
},
setCheckbox: function($id, value) {
if (value === true || value === "true" || value === "1") {
$id.prop("checked", true);
} else {
$id.prop("checked", false);
}
},
/**
* Get query parameter value by name
*/
getParameterByName: function(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
},
/**
* Read URL parameters
*/
getUrlVars: function(paramUrl, decode) {
var vars = [],
url = paramUrl || window.location.href;
if (decode !== 1) {
url = decodeURIComponent(url);
}
var nodes = url.slice(url.indexOf("?") + 1).split("&");
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i].split("=");
if (node.length > 1) {
vars.push(node[0]);
vars[node[0]] = node[1];
}
}
return vars;
},
/**
* searches given fragment in the given string
*/
contains: function(string, fragment) {
return !string ? false : string.indexOf(fragment) > -1;
},
/**
* What does this do?
*/
htmlEntities: function(text) {
return String(text)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """); // .replace(/'/g, ''')
},
unHtmlEntities: function(text) {
return String(text)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/'/g, "'")
.replace(/"/g, '"');
},
isNumber: function(number) {
return !isNaN(parseFloat(number)) && isFinite(number);
},
/**
* Disable page scroll
*/
pageScrollDisable: function(bp) {
var $pageScrollElements = $("html, body");
if (bp === "small") {
// only use on max = small
$pageScrollElements.addClass("has-no-scroll has-no-scroll--small");
}
if (bp === "medium") {
// only use on max == medium
$pageScrollElements.addClass("has-no-scroll has-no-scroll--medium");
}
if (bp === "large") {
// only use on max == large
$pageScrollElements.addClass("has-no-scroll has-no-scroll--large");
} else {
// no max breakpoint
$pageScrollElements.addClass("has-no-scroll");
}
},
/**
* Enable scroll on page
*
* Remove any has-no-scroll class
*/
pageScrollEnable: function() {
var $pageScrollElements = $("html, body");
$pageScrollElements.removeClass(
"has-no-scroll has-no-scroll--small has-no-scroll--medium has-no-scroll--large"
);
},
/**
* What do I do?
*/
resetDropdownToBase: function(dropdownElement) {
if (dropdownElement.length > 0) {
var $dropdownElement = dropdownElement,
$optionSelected = $dropdownElement.find("option:selected"),
$optionFirst = $dropdownElement.find("option:first");
if ($optionSelected.get(0) !== $optionFirst.get(0)) {
$optionSelected.removeAttr("selected");
$optionFirst.attr("selected", true);
var $displaySelected = $dropdownElement.siblings("p");
if ($displaySelected.length > 0) {
$displaySelected.empty();
$displaySelected.text($optionFirst.text());
}
}
}
},
/**
* Scrollto definable element
*
* Scroll user window to defined element
*
* #TODO Documentation of these functions
*/
scrollTo: function(id, offset, options) {
if (offset === null || offset === undefined) {
//This breaks the print-pdf-instruction page, the onPageNav function does not pass a offset. So it is undifined and not null.
offset = 0;
}
var settings = $.extend({
// These are the default settings
duration: 500,
easing: "easeOutCirc"
},
options
);
$("html, body").animate({
scrollTop: $(id).offset().top - offset
}, {
duration: settings.duration,
easing: settings.easing
});
},
serverEncode: function(text) {
return encodeURIComponent(
String(text)
.replace(/</g, "< ")
.replace(/'/g, """)
);
},
/**
* Show/hide spinner
*
* Show a spinner element next to defined element
*
* #TODO combine spinnerShow and spinnerHide into toggleSpinner($element);
*/
spinnerShow: function($element) {
var $spinner = $element.next(".js-spinner");
$spinner.removeClass("u-display-none");
},
/**
* Hide spinner next to defined element
*/
spinnerHide: function($element) {
var $spinner = $element.next(".js-spinner");
$spinner.addClass("u-display-none");
},
submitEnable: function($form) {
$form.find(".js-submit").removeAttr("disabled");
},
/**
* getFullUrlFromRelativeUrl
* Use the website's baseUrl to get an absolute url.
*
* @param relativeUrl
* @param includeDoubleSlashes - whether or not to prefix the url with // (The protocol itself is not returned to make it independent)
* @returns {string}
*/
getFullUrlFromRelativeUrl: function(relativeUrl, includeDoubleSlashes) {
var localDomain = configuration.url.localdomain;
var localDomainWithoutProtocol = localDomain.replace(
/^https?\:\/\//i,
""
);
// any redundant slashes are taken care of by urlConcat()
var fullNotificationApiPath = this.urlConcat(
localDomainWithoutProtocol,
relativeUrl
);
if (includeDoubleSlashes) {
fullNotificationApiPath = "//" + fullNotificationApiPath;
}
return fullNotificationApiPath;
},
// urlConcat: make sure that there are no double slashes
urlConcat: function(urlPart1, urlPart2) {
// on empty string, return immediately
if (urlPart1.length == 0 || urlPart2.length == 0) {
return urlPart1 + urlPart2;
}
if (
urlPart1.substr(urlPart1.length - 1) === "/" &&
urlPart2.charAt(0) === "/"
) {
return urlPart1 + urlPart2.substr(1);
}
return urlPart1 + urlPart2;
},
/**
* Create a random GUID string
*
* @returns {string}
*/
guid: function() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return (
s4() +
s4() +
"-" +
s4() +
"-" +
s4() +
"-" +
s4() +
"-" +
s4() +
s4() +
s4()
);
}
};
window.general = general;
/**
* If verification went wrong, a notification with a className .js-verify-email
* is added to
*/
var resendVerificationEmail = moduleLoader(
(function() {
var $headerNotification = $(".js-notify-header");
var notificationVerifyLinkSelector = ".js-resend-verification-email";
function init() {
bind();
}
/**
* Verify email address
*
* [1] Show spinner
* [2] Request verification
*/
function bind() {
$(document).on("click", notificationVerifyLinkSelector, function(
e
) {
e.preventDefault();
var $this = $(this),
$notification = $this.parents(".notification");
general.spinnerShow($this); // [1]
resendVerificationMail($notification); // [2]
});
}
/**
* Request verification
*
* [0] For single parameter endpoints, ASP.Net WebApi requires a plain string instead of an object
* [1] Get URL from config.js
* [2] Enable cross domain for local development
* [3] Init ajax call
* [4] Send notification on success
* [5] Send notification(s) on error
* [6] Something when done?
*/
function resendVerificationMail($originalNotification) {
// Find the verication link inside this notification
var $verifyLink = $originalNotification.find(
notificationVerifyLinkSelector
);
var postData = JSON.stringify(
$verifyLink.data("verification-token")
), // [0]
url = general.getFullUrlFromRelativeUrl(
configuration.account.apiUrlResend,
true
), // [1]
crossDomain = false; // Needed to identify modular level for notifications
if (development) {
// dev only settings
crossDomain = true; // [2]
}
var ajaxOptions = {
async: true,
type: "POST",
url: url,
data: postData,
crossDomain: crossDomain,
timeout: 5000
};
httpService
.ajax(url, ajaxOptions)
.done(function(data) {
showVerificationMailIsSent(); // handle notifications
notify.collapse($originalNotification);
general.spinnerHide($verifyLink); // Hide the spinner
})
.fail(function(data) {
// [5]
notify.handleResponseJson(data, $headerNotification); // handle notifications
notify.collapse($originalNotification);
general.spinnerHide($verifyLink); // Hide the spinner
})
.always(function(data) {});
}
function showVerificationMailIsSent() {
// "";
var mailIsSentMessage =
"De verificatie is succesvol verzonden. Controleer je e-mail.";
var notification = {
message: mailIsSentMessage,
position: {
header: "default"
},
type: "success"
};
notify.render($headerNotification, notification);
}
return {
init: init,
resendVerificationMail: resendVerificationMail
};
})()
);
(function() {
var a = window.location.pathname,
b = /^\/english\/(filing|how-to-register-deregister-and-report-changes|making-an-appointment-with-the-chamber-of-commerce|ordering-products-from-the-commercial-register|registration|report-a-change|starting-a-business-in-the-netherlands|liability-business-partner)\/.*|(^\/inschrijven-en-wijzigen\/ubo-opgave\/$|^\/advies-en-informatie\/internationaal-ondernemen\/exportdocumenten\/$)/i,
c = /(.*cci-number\/$|.*your-request-to-apply-is-received\/$|.*changes-in-law-and-regulations\/$|.*search-in-lei-registrations\/$|.*brexit.*|.*choosing-the-right-location-for-your-business\/$|.*kvk-corporate-deposits-overview\/$|.*registering-a-sole-proprietorship\/$|.*determine-your-hourly-rate\/$|.*european-business-registers\/$|.*starting-your-own-business\/$)/i;
b = b.test(a);
a = c.test(a);
return !0 === b && !1 === a ? !0 : !1
})();
// #TODO DOCUMENTATION!
function moduleLoader(module) {
$(function() {
if (module.init) {
module.init();
}
});
return module;
}
(function() {
return -1 != navigator.userAgent.toUpperCase().indexOf("TRIDENT/") || -1 != navigator.userAgent.toUpperCase().indexOf("MSIE")
})();
(function() {
function c(a) {
10 > a && (a = "0" + a);
return a
}
var b = new Date;
return b = +c(b.getHours()) + ":" + c(b.getMinutes())
})();
(function() {
var tstmmng = "1";
if ("0" == "0" || "undefined" == "0") tstmmng = "0";
if ("0" == "1" || "undefined" == "1") tstmmng = "1";
if ("0" == "2" || "undefined" == "2") tstmmng = "2";
if ("0" == "3" || "undefined" == "3") tstmmng = "3";
return tstmmng
})();
(function() {
var usertype = "extern";
if ("intern" == "intern") usertype = "intern";
return usertype
})();
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(34);
a = a / 250 * 60;
return a = Math.round(a)
})();
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(35);
a = a / 250 * 60;
return a = Math.round(a)
})();
/**
* Notify
*
* A module that handles notifications.
*/
var notify = moduleLoader(
(function() {
/**
* Init function
* Runs on DOM ready
*/
function init() {
bindCollapse();
}
/**
* Process responseJson notifications
*
* Used to extract notifications out of raw Ajax response data
*
* Requirements:
* - data: returned Ajax data
* - $element: an element to inject the notifications
*
* [1] If data contains responseJSON extract $notifications object
* [2] If $notifications is available, let notify.handle it
* [3] If $notifications is unavailable, show error based on Ajax statusText
* [3.1] Construct (single) notification object
* [3.2] Render notification using dust.js
*/
function handleResponseJson(data, $element) {
var responseJson = data.responseJSON,
$notifications = undefined,
statusText = data.statusText;
if (responseJson) {
// [1]
$notifications = responseJson.notifications;
}
if ($notifications) {
// [2]
notify.handle($notifications, $element);
} else if (statusText && !$notifications) {
// [3]
var notification = {
// [3.1]
message: "Er ging iets mis (" +
statusText +
"). Probeer het opnieuw.",
type: "error",
position: {
header: "default",
},
};
notify.render($element, notification); // [3.2]
}
}
/**
* Handle notifications
*
* Handles object with one or more notifications, consisting of:
* - message
* - type
* - position
*/
function handle($notifications, $location) {
/**
* [1] Handle each given notification
* [2] Handle based on position
* [2.1] render before input[name="position.element"]
* #NOTE notify element breaks with multiple input fields of same
* name-attribute value. Needs a solution.
* [2.4] render before .js-notify-module class
* [2.5] render before .js-notify-header class
*/
$.each($notifications, function(index, notification) {
// [1]
var position = notification.position,
$module = $(".js-notify-module");
/**
* [2] Handle based on position, but prefer $location if it is set
*/
if ($location !== undefined) {
render($location, notification);
} else if (position.element !== undefined) {
// [2.1] Element
var $element = $('input[name="' + position.element + '"]');
if ($element.length > 0) {
render($element, notification);
} else if ($module.length > 0) {
render($module, notification);
}
} else if (position.module !== undefined) {
// [2.2] Module
render($module, notification);
} else if (position.header !== undefined) {
// [2.3] Global
render($(".js-notify-header"), notification);
}
});
}
/**
* Render a single notification (using Dust.js)
*
* [1] Require an element to position the notification + notification object
* [2] Remove existing notification on same location
* [3] Render the notification using the template notification.dust
* [4] Inject the rendered output after the $element
*/
function render($element, notification) {
var $existingNotification = $element.prev(".notification");
collapse($existingNotification);
//Show only one notification of eventType of this number
var nr = 2;
var isValid = true;
var $existingEventType = $element.prev(".eventType--" + nr);
if (notification.eventType == nr) {
if ($existingEventType.length) {
isValid = false;
}
}
if (isValid) {
var notificationhtml = renderNotification(notification);
$element.before(notificationhtml);
}
}
function renderNotification(notification) {
return (
'<div aria-live="polite" class="o-page-notification-2 o-container is-collapsible eventType--' +
get(notification, "eventType") +
'">' +
'<div class="c-notification c-notification--' +
get(notification, "type") +
' c-notification--header u-padding-vertical-3x">' +
getIcon(get(notification, "type")) +
'<p data-ui-test-class="notification-box" class="c-notification__message u-margin-bottom-none">' +
get(notification, "message") +
"</p>" +
getCloseIcon(get(notification, "isNotClosable")) +
"</div>" +
"</div>"
);
}
function getIcon(type) {
var error =
'<svg data-ui-test-class="icon" class="icons c-notification__icon" width="24px" height="30px" viewBox="0 0 64 64">' +
"<title>error</title>" +
'<rect width="64" height="64" style="fill: none"/>' +
'<path d="M29,48h5V43H29ZM31.42,4,3.83,58H59Zm0,11L50.83,53H12ZM29,26v6l.92,8h3L34,32V26Z"/>' +
"</svg>";
var succes =
'<svg data-ui-test-class="icon" class="icons c-notification__icon" width="24px" height="30px" viewBox="0 0 64 64">' +
"<title>check-bold</title>" +
'<rect width="64" height="64" style="fill: none"/>' +
'<path d="M28.4,41.1,48,9.7l5.9,3.7L29.1,53.3h0l-19-24.2,5.5-4.3Z"/>' +
"</svg>";
var warning =
'<svg data-ui-test-class="icon" class="icons c-notification__icon" width="24px" height="30px" viewBox="0 0 64 64">' +
"<title>alert</title>" +
'<rect width="64" height="64" style="fill: none"/>' +
'<path d="M29,48h5V43H29ZM31.42,4,3.83,58H59Zm0,11L50.83,53H12ZM29,26v6l.92,8h3L34,32V26Z"/>' +
"</svg>";
switch (type) {
case "error":
return error;
case "success":
return succes;
case "warning":
return warning;
default:
return succes;
}
}
function getCloseIcon(doNotShow) {
if (doNotShow) {
return "";
}
return (
'<button class="c-notification__close js-notification-close">' +
'<svg data-ui-test-class="icon" class="icons u-stroke-grey-40" width="24px" height="24px" viewBox="0 0 64 64">' +
"<title>cross</title>" +
'<rect width="64" height="64" style="fill: none"/>' +
'<polygon points="49.6 19.9 44.7 15 32.3 27.4 19.9 15 15 19.9 27.4 32.3 15 44.7 19.9 49.6 32.3 37.2 44.7 49.6 49.6 44.7 37.2 32.3 49.6 19.9"/>' +
"</svg>" +
"</button>"
);
}
function get(obj, key) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
return obj[key];
}
return "";
}
/**
* Render a single notification with default tech message(using Dust.js)
*
* [1] Require an element to position the notification + notification object
*/
function renderTechErrorTo($element) {
var notification = {
type: "error",
message: "Er ging iets mis. Probeer het opnieuw.",
position: {
module: "default",
},
};
if ($element) {
notify.render($element, notification);
}
}
/**
* Close notification
*
* Click to remove notification.
*
* [1] Fade out notification
* [2] Check for collapsible element
* [3] If so:
* [3.1] collapse
* [3.2] and remove everything (notification related)
* [4] Or else remove notification only
*/
function collapse($notification) {
var $collapsibleContainer = $notification.parents(
".is-collapsible"
);
$notification.addClass("c-notification--is-faded"); // [1]
if (
$collapsibleContainer != undefined &&
$collapsibleContainer.length > 0
) {
// [2]
$collapsibleContainer.remove();
} else {
$notification.remove(); // [4]
}
}
/**
* Bind notifyClose to click on DOM ready
*/
function bindCollapse() {
$(document).on(
"click touchend",
".js-notification-close",
function(e) {
e.preventDefault();
var $notification = $(this).parents(".c-notification");
collapse($notification); // call close function on clicked element
}
);
}
/**
* Return functions to use globally
*/
return {
init: init,
collapse: collapse,
handle: handle,
handleResponseJson: handleResponseJson,
render: render,
renderTechErrorTo: renderTechErrorTo,
};
})()
);
window.notify = notify;
(function() {
var a = $("div.content-body").text();
a = a.replace(/(^\s*)|(\s*$)/gi, "");
a = a.replace(/([A-Z])/g, " $1").trim();
a = a.replace(/[ ]{2,}/gi, " ");
a = a.replace(/\n /, "\n");
return a.split(" ").length
})();
(function() {
var a = sessionStorage.getItem("wizard-company");
a = JSON.parse(a);
return a.rechtsvormbeschrijving
})();
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(9);
a = a / 250 * 60;
return a = Math.round(a)
})();
/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ ! function(e, t) {
"use strict";
"object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
if (!e.document) throw new Error("jQuery requires a window with a document");
return t(e)
} : t(e)
}("undefined" != typeof window ? window : this, function(C, e) {
"use strict";
var t = [],
r = Object.getPrototypeOf,
s = t.slice,
g = t.flat ? function(e) {
return t.flat.call(e)
} : function(e) {
return t.concat.apply([], e)
},
u = t.push,
i = t.indexOf,
n = {},
o = n.toString,
v = n.hasOwnProperty,
a = v.toString,
l = a.call(Object),
y = {},
m = function(e) {
return "function" == typeof e && "number" != typeof e.nodeType
},
x = function(e) {
return null != e && e === e.window
},
E = C.document,
c = {
type: !0,
src: !0,
nonce: !0,
noModule: !0
};
function b(e, t, n) {
var r, i, o = (n = n || E).createElement("script");
if (o.text = e, t)
for (r in c)(i = t[r] || t.getAttribute && t.getAttribute(r)) && o.setAttribute(r, i);
n.head.appendChild(o).parentNode.removeChild(o)
}
function w(e) {
return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? n[o.call(e)] || "object" : typeof e
}
var f = "3.5.1",
S = function(e, t) {
return new S.fn.init(e, t)
};
function p(e) {
var t = !!e && "length" in e && e.length,
n = w(e);
return !m(e) && !x(e) && ("array" === n || 0 === t || "number" == typeof t && 0 < t && t - 1 in e)
}
S.fn = S.prototype = {
jquery: f,
constructor: S,
length: 0,
toArray: function() {
return s.call(this)
},
get: function(e) {
return null == e ? s.call(this) : e < 0 ? this[e + this.length] : this[e]
},
pushStack: function(e) {
var t = S.merge(this.constructor(), e);
return t.prevObject = this, t
},
each: function(e) {
return S.each(this, e)
},
map: function(n) {
return this.pushStack(S.map(this, function(e, t) {
return n.call(e, t, e)
}))
},
slice: function() {
return this.pushStack(s.apply(this, arguments))
},
first: function() {
return this.eq(0)
},
last: function() {
return this.eq(-1)
},
even: function() {
return this.pushStack(S.grep(this, function(e, t) {
return (t + 1) % 2
}))
},
odd: function() {
return this.pushStack(S.grep(this, function(e, t) {
return t % 2
}))
},
eq: function(e) {
var t = this.length,
n = +e + (e < 0 ? t : 0);
return this.pushStack(0 <= n && n < t ? [this[n]] : [])
},
end: function() {
return this.prevObject || this.constructor()
},
push: u,
sort: t.sort,
splice: t.splice
}, S.extend = S.fn.extend = function() {
var e, t, n, r, i, o, a = arguments[0] || {},
s = 1,
u = arguments.length,
l = !1;
for ("boolean" == typeof a && (l = a, a = arguments[s] || {}, s++), "object" == typeof a || m(a) || (a = {}), s === u && (a = this, s--); s < u; s++)
if (null != (e = arguments[s]))
for (t in e) r = e[t], "__proto__" !== t && a !== r && (l && r && (S.isPlainObject(r) || (i = Array.isArray(r))) ? (n = a[t], o = i && !Array.isArray(n) ? [] : i || S.isPlainObject(n) ? n : {}, i = !1, a[t] = S.extend(l, o, r)) : void 0 !== r && (a[t] = r));
return a
}, S.extend({
expando: "jQuery" + (f + Math.random()).replace(/\D/g, ""),
isReady: !0,
error: function(e) {
throw new Error(e)
},
noop: function() {},
isPlainObject: function(e) {
var t, n;
return !(!e || "[object Object]" !== o.call(e)) && (!(t = r(e)) || "function" == typeof(n = v.call(t, "constructor") && t.constructor) && a.call(n) === l)
},
isEmptyObject: function(e) {
var t;
for (t in e) return !1;
return !0
},
globalEval: function(e, t, n) {
b(e, {
nonce: t && t.nonce
}, n)
},
each: function(e, t) {
var n, r = 0;
if (p(e)) {
for (n = e.length; r < n; r++)
if (!1 === t.call(e[r], r, e[r])) break
} else
for (r in e)
if (!1 === t.call(e[r], r, e[r])) break; return e
},
makeArray: function(e, t) {
var n = t || [];
return null != e && (p(Object(e)) ? S.merge(n, "string" == typeof e ? [e] : e) : u.call(n, e)), n
},
inArray: function(e, t, n) {
return null == t ? -1 : i.call(t, e, n)
},
merge: function(e, t) {
for (var n = +t.length, r = 0, i = e.length; r < n; r++) e[i++] = t[r];
return e.length = i, e
},
grep: function(e, t, n) {
for (var r = [], i = 0, o = e.length, a = !n; i < o; i++) !t(e[i], i) !== a && r.push(e[i]);
return r
},
map: function(e, t, n) {
var r, i, o = 0,
a = [];
if (p(e))
for (r = e.length; o < r; o++) null != (i = t(e[o], o, n)) && a.push(i);
else
for (o in e) null != (i = t(e[o], o, n)) && a.push(i);
return g(a)
},
guid: 1,
support: y
}), "function" == typeof Symbol && (S.fn[Symbol.iterator] = t[Symbol.iterator]), S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(e, t) {
n["[object " + t + "]"] = t.toLowerCase()
});
var d = function(n) {
var e, d, b, o, i, h, f, g, w, u, l, T, C, a, E, v, s, c, y, S = "sizzle" + 1 * new Date,
p = n.document,
k = 0,
r = 0,
m = ue(),
x = ue(),
A = ue(),
N = ue(),
D = function(e, t) {
return e === t && (l = !0), 0
},
j = {}.hasOwnProperty,
t = [],
q = t.pop,
L = t.push,
H = t.push,
O = t.slice,
P = function(e, t) {
for (var n = 0, r = e.length; n < r; n++)
if (e[n] === t) return n;
return -1
},
R = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
M = "[\\x20\\t\\r\\n\\f]",
I = "(?:\\\\[\\da-fA-F]{1,6}" + M + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
W = "\\[" + M + "*(" + I + ")(?:" + M + "*([*^$|!~]?=)" + M + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + I + "))|)" + M + "*\\]",
F = ":(" + I + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + W + ")*)|.*)\\)|)",
B = new RegExp(M + "+", "g"),
$ = new RegExp("^" + M + "+|((?:^|[^\\\\])(?:\\\\.)*)" + M + "+$", "g"),
_ = new RegExp("^" + M + "*," + M + "*"),
z = new RegExp("^" + M + "*([>+~]|" + M + ")" + M + "*"),
U = new RegExp(M + "|>"),
X = new RegExp(F),
V = new RegExp("^" + I + "$"),
G = {
ID: new RegExp("^#(" + I + ")"),
CLASS: new RegExp("^\\.(" + I + ")"),
TAG: new RegExp("^(" + I + "|[*])"),
ATTR: new RegExp("^" + W),
PSEUDO: new RegExp("^" + F),
CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + M + "*(even|odd|(([+-]|)(\\d*)n|)" + M + "*(?:([+-]|)" + M + "*(\\d+)|))" + M + "*\\)|)", "i"),
bool: new RegExp("^(?:" + R + ")$", "i"),
needsContext: new RegExp("^" + M + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + M + "*((?:-\\d)?\\d*)" + M + "*\\)|)(?=[^-]|$)", "i")
},
Y = /HTML$/i,
Q = /^(?:input|select|textarea|button)$/i,
J = /^h\d$/i,
K = /^[^{]+\{\s*\[native \w/,
Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
ee = /[+~]/,
te = new RegExp("\\\\[\\da-fA-F]{1,6}" + M + "?|\\\\([^\\r\\n\\f])", "g"),
ne = function(e, t) {
var n = "0x" + e.slice(1) - 65536;
return t || (n < 0 ? String.fromCharCode(n + 65536) : String.fromCharCode(n >> 10 | 55296, 1023 & n | 56320))
},
re = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
ie = function(e, t) {
return t ? "\0" === e ? "\ufffd" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
},
oe = function() {
T()
},
ae = be(function(e) {
return !0 === e.disabled && "fieldset" === e.nodeName.toLowerCase()
}, {
dir: "parentNode",
next: "legend"
});
try {
H.apply(t = O.call(p.childNodes), p.childNodes), t[p.childNodes.length].nodeType
} catch (e) {
H = {
apply: t.length ? function(e, t) {
L.apply(e, O.call(t))
} : function(e, t) {
var n = e.length,
r = 0;
while (e[n++] = t[r++]);
e.length = n - 1
}
}
}
function se(t, e, n, r) {
var i, o, a, s, u, l, c, f = e && e.ownerDocument,
p = e ? e.nodeType : 9;
if (n = n || [], "string" != typeof t || !t || 1 !== p && 9 !== p && 11 !== p) return n;
if (!r && (T(e), e = e || C, E)) {
if (11 !== p && (u = Z.exec(t)))
if (i = u[1]) {
if (9 === p) {
if (!(a = e.getElementById(i))) return n;
if (a.id === i) return n.push(a), n
} else if (f && (a = f.getElementById(i)) && y(e, a) && a.id === i) return n.push(a), n
} else {
if (u[2]) return H.apply(n, e.getElementsByTagName(t)), n;
if ((i = u[3]) && d.getElementsByClassName && e.getElementsByClassName) return H.apply(n, e.getElementsByClassName(i)), n
}
if (d.qsa && !N[t + " "] && (!v || !v.test(t)) && (1 !== p || "object" !== e.nodeName.toLowerCase())) {
if (c = t, f = e, 1 === p && (U.test(t) || z.test(t))) {
(f = ee.test(t) && ye(e.parentNode) || e) === e && d.scope || ((s = e.getAttribute("id")) ? s = s.replace(re, ie) : e.setAttribute("id", s = S)), o = (l = h(t)).length;
while (o--) l[o] = (s ? "#" + s : ":scope") + " " + xe(l[o]);
c = l.join(",")
}
try {
return H.apply(n, f.querySelectorAll(c)), n
} catch (e) {
N(t, !0)
} finally {
s === S && e.removeAttribute("id")
}
}
}
return g(t.replace($, "$1"), e, n, r)
}
function ue() {
var r = [];
return function e(t, n) {
return r.push(t + " ") > b.cacheLength && delete e[r.shift()], e[t + " "] = n
}
}
function le(e) {
return e[S] = !0, e
}
function ce(e) {
var t = C.createElement("fieldset");
try {
return !!e(t)
} catch (e) {
return !1
} finally {
t.parentNode && t.parentNode.removeChild(t), t = null
}
}
function fe(e, t) {
var n = e.split("|"),
r = n.length;
while (r--) b.attrHandle[n[r]] = t
}
function pe(e, t) {
var n = t && e,
r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
if (r) return r;
if (n)
while (n = n.nextSibling)
if (n === t) return -1;
return e ? 1 : -1
}
function de(t) {
return function(e) {
return "input" === e.nodeName.toLowerCase() && e.type === t
}
}
function he(n) {
return function(e) {
var t = e.nodeName.toLowerCase();
return ("input" === t || "button" === t) && e.type === n
}
}
function ge(t) {
return function(e) {
return "form" in e ? e.parentNode && !1 === e.disabled ? "label" in e ? "label" in e.parentNode ? e.parentNode.disabled === t : e.disabled === t : e.isDisabled === t || e.isDisabled !== !t && ae(e) === t : e.disabled === t : "label" in e && e.disabled === t
}
}
function ve(a) {
return le(function(o) {
return o = +o, le(function(e, t) {
var n, r = a([], e.length, o),
i = r.length;
while (i--) e[n = r[i]] && (e[n] = !(t[n] = e[n]))
})
})
}
function ye(e) {
return e && "undefined" != typeof e.getElementsByTagName && e
}
for (e in d = se.support = {}, i = se.isXML = function(e) {
var t = e.namespaceURI,
n = (e.ownerDocument || e).documentElement;
return !Y.test(t || n && n.nodeName || "HTML")
}, T = se.setDocument = function(e) {
var t, n, r = e ? e.ownerDocument || e : p;
return r != C && 9 === r.nodeType && r.documentElement && (a = (C = r).documentElement, E = !i(C), p != C && (n = C.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener("unload", oe, !1) : n.attachEvent && n.attachEvent("onunload", oe)), d.scope = ce(function(e) {
return a.appendChild(e).appendChild(C.createElement("div")), "undefined" != typeof e.querySelectorAll && !e.querySelectorAll(":scope fieldset div").length
}), d.attributes = ce(function(e) {
return e.className = "i", !e.getAttribute("className")
}), d.getElementsByTagName = ce(function(e) {
return e.appendChild(C.createComment("")), !e.getElementsByTagName("*").length
}), d.getElementsByClassName = K.test(C.getElementsByClassName), d.getById = ce(function(e) {
return a.appendChild(e).id = S, !C.getElementsByName || !C.getElementsByName(S).length
}), d.getById ? (b.filter.ID = function(e) {
var t = e.replace(te, ne);
return function(e) {
return e.getAttribute("id") === t
}
}, b.find.ID = function(e, t) {
if ("undefined" != typeof t.getElementById && E) {
var n = t.getElementById(e);
return n ? [n] : []
}
}) : (b.filter.ID = function(e) {
var n = e.replace(te, ne);
return function(e) {
var t = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id");
return t && t.value === n
}
}, b.find.ID = function(e, t) {
if ("undefined" != typeof t.getElementById && E) {
var n, r, i, o = t.getElementById(e);
if (o) {
if ((n = o.getAttributeNode("id")) && n.value === e) return [o];
i = t.getElementsByName(e), r = 0;
while (o = i[r++])
if ((n = o.getAttributeNode("id")) && n.value === e) return [o]
}
return []
}
}), b.find.TAG = d.getElementsByTagName ? function(e, t) {
return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : d.qsa ? t.querySelectorAll(e) : void 0
} : function(e, t) {
var n, r = [],
i = 0,
o = t.getElementsByTagName(e);
if ("*" === e) {
while (n = o[i++]) 1 === n.nodeType && r.push(n);
return r
}
return o
}, b.find.CLASS = d.getElementsByClassName && function(e, t) {
if ("undefined" != typeof t.getElementsByClassName && E) return t.getElementsByClassName(e)
}, s = [], v = [], (d.qsa = K.test(C.querySelectorAll)) && (ce(function(e) {
var t;
a.appendChild(e).innerHTML = "<a id='" + S + "'></a><select id='" + S + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && v.push("[*^$]=" + M + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || v.push("\\[" + M + "*(?:value|" + R + ")"), e.querySelectorAll("[id~=" + S + "-]").length || v.push("~="), (t = C.createElement("input")).setAttribute("name", ""), e.appendChild(t), e.querySelectorAll("[name='']").length || v.push("\\[" + M + "*name" + M + "*=" + M + "*(?:''|\"\")"), e.querySelectorAll(":checked").length || v.push(":checked"), e.querySelectorAll("a#" + S + "+*").length || v.push(".#.+[+~]"), e.querySelectorAll("\\\f"), v.push("[\\r\\n\\f]")
}), ce(function(e) {
e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
var t = C.createElement("input");
t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && v.push("name" + M + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && v.push(":enabled", ":disabled"), a.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && v.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), v.push(",.*:")
})), (d.matchesSelector = K.test(c = a.matches || a.webkitMatchesSelector || a.mozMatchesSelector || a.oMatchesSelector || a.msMatchesSelector)) && ce(function(e) {
d.disconnectedMatch = c.call(e, "*"), c.call(e, "[s!='']:x"), s.push("!=", F)
}), v = v.length && new RegExp(v.join("|")), s = s.length && new RegExp(s.join("|")), t = K.test(a.compareDocumentPosition), y = t || K.test(a.contains) ? function(e, t) {
var n = 9 === e.nodeType ? e.documentElement : e,
r = t && t.parentNode;
return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
} : function(e, t) {
if (t)
while (t = t.parentNode)
if (t === e) return !0;
return !1
}, D = t ? function(e, t) {
if (e === t) return l = !0, 0;
var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
return n || (1 & (n = (e.ownerDocument || e) == (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !d.sortDetached && t.compareDocumentPosition(e) === n ? e == C || e.ownerDocument == p && y(p, e) ? -1 : t == C || t.ownerDocument == p && y(p, t) ? 1 : u ? P(u, e) - P(u, t) : 0 : 4 & n ? -1 : 1)
} : function(e, t) {
if (e === t) return l = !0, 0;
var n, r = 0,
i = e.parentNode,
o = t.parentNode,
a = [e],
s = [t];
if (!i || !o) return e == C ? -1 : t == C ? 1 : i ? -1 : o ? 1 : u ? P(u, e) - P(u, t) : 0;
if (i === o) return pe(e, t);
n = e;
while (n = n.parentNode) a.unshift(n);
n = t;
while (n = n.parentNode) s.unshift(n);
while (a[r] === s[r]) r++;
return r ? pe(a[r], s[r]) : a[r] == p ? -1 : s[r] == p ? 1 : 0
}), C
}, se.matches = function(e, t) {
return se(e, null, null, t)
}, se.matchesSelector = function(e, t) {
if (T(e), d.matchesSelector && E && !N[t + " "] && (!s || !s.test(t)) && (!v || !v.test(t))) try {
var n = c.call(e, t);
if (n || d.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n
} catch (e) {
N(t, !0)
}
return 0 < se(t, C, null, [e]).length
}, se.contains = function(e, t) {
return (e.ownerDocument || e) != C && T(e), y(e, t)
}, se.attr = function(e, t) {
(e.ownerDocument || e) != C && T(e);
var n = b.attrHandle[t.toLowerCase()],
r = n && j.call(b.attrHandle, t.toLowerCase()) ? n(e, t, !E) : void 0;
return void 0 !== r ? r : d.attributes || !E ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
}, se.escape = function(e) {
return (e + "").replace(re, ie)
}, se.error = function(e) {
throw new Error("Syntax error, unrecognized expression: " + e)
}, se.uniqueSort = function(e) {
var t, n = [],
r = 0,
i = 0;
if (l = !d.detectDuplicates, u = !d.sortStable && e.slice(0), e.sort(D), l) {
while (t = e[i++]) t === e[i] && (r = n.push(i));
while (r--) e.splice(n[r], 1)
}
return u = null, e
}, o = se.getText = function(e) {
var t, n = "",
r = 0,
i = e.nodeType;
if (i) {
if (1 === i || 9 === i || 11 === i) {
if ("string" == typeof e.textContent) return e.textContent;
for (e = e.firstChild; e; e = e.nextSibling) n += o(e)
} else if (3 === i || 4 === i) return e.nodeValue
} else
while (t = e[r++]) n += o(t);
return n
}, (b = se.selectors = {
cacheLength: 50,
createPseudo: le,
match: G,
attrHandle: {},
find: {},
relative: {
">": {
dir: "parentNode",
first: !0
},
" ": {
dir: "parentNode"
},
"+": {
dir: "previousSibling",
first: !0
},
"~": {
dir: "previousSibling"
}
},
preFilter: {
ATTR: function(e) {
return e[1] = e[1].replace(te, ne), e[3] = (e[3] || e[4] || e[5] || "").replace(te, ne), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
},
CHILD: function(e) {
return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || se.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && se.error(e[0]), e
},
PSEUDO: function(e) {
var t, n = !e[6] && e[2];
return G.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && X.test(n) && (t = h(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3))
}
},
filter: {
TAG: function(e) {
var t = e.replace(te, ne).toLowerCase();
return "*" === e ? function() {
return !0
} : function(e) {
return e.nodeName && e.nodeName.toLowerCase() === t
}
},
CLASS: function(e) {
var t = m[e + " "];
return t || (t = new RegExp("(^|" + M + ")" + e + "(" + M + "|$)")) && m(e, function(e) {
return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "")
})
},
ATTR: function(n, r, i) {
return function(e) {
var t = se.attr(e, n);
return null == t ? "!=" === r : !r || (t += "", "=" === r ? t === i : "!=" === r ? t !== i : "^=" === r ? i && 0 === t.indexOf(i) : "*=" === r ? i && -1 < t.indexOf(i) : "$=" === r ? i && t.slice(-i.length) === i : "~=" === r ? -1 < (" " + t.replace(B, " ") + " ").indexOf(i) : "|=" === r && (t === i || t.slice(0, i.length + 1) === i + "-"))
}
},
CHILD: function(h, e, t, g, v) {
var y = "nth" !== h.slice(0, 3),
m = "last" !== h.slice(-4),
x = "of-type" === e;
return 1 === g && 0 === v ? function(e) {
return !!e.parentNode
} : function(e, t, n) {
var r, i, o, a, s, u, l = y !== m ? "nextSibling" : "previousSibling",
c = e.parentNode,
f = x && e.nodeName.toLowerCase(),
p = !n && !x,
d = !1;
if (c) {
if (y) {
while (l) {
a = e;
while (a = a[l])
if (x ? a.nodeName.toLowerCase() === f : 1 === a.nodeType) return !1;
u = l = "only" === h && !u && "nextSibling"
}
return !0
}
if (u = [m ? c.firstChild : c.lastChild], m && p) {
d = (s = (r = (i = (o = (a = c)[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] || [])[0] === k && r[1]) && r[2], a = s && c.childNodes[s];
while (a = ++s && a && a[l] || (d = s = 0) || u.pop())
if (1 === a.nodeType && ++d && a === e) {
i[h] = [k, s, d];
break
}
} else if (p && (d = s = (r = (i = (o = (a = e)[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] || [])[0] === k && r[1]), !1 === d)
while (a = ++s && a && a[l] || (d = s = 0) || u.pop())
if ((x ? a.nodeName.toLowerCase() === f : 1 === a.nodeType) && ++d && (p && ((i = (o = a[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] = [k, d]), a === e)) break;
return (d -= v) === g || d % g == 0 && 0 <= d / g
}
}
},
PSEUDO: function(e, o) {
var t, a = b.pseudos[e] || b.setFilters[e.toLowerCase()] || se.error("unsupported pseudo: " + e);
return a[S] ? a(o) : 1 < a.length ? (t = [e, e, "", o], b.setFilters.hasOwnProperty(e.toLowerCase()) ? le(function(e, t) {
var n, r = a(e, o),
i = r.length;
while (i--) e[n = P(e, r[i])] = !(t[n] = r[i])
}) : function(e) {
return a(e, 0, t)
}) : a
}
},
pseudos: {
not: le(function(e) {
var r = [],
i = [],
s = f(e.replace($, "$1"));
return s[S] ? le(function(e, t, n, r) {
var i, o = s(e, null, r, []),
a = e.length;
while (a--)(i = o[a]) && (e[a] = !(t[a] = i))
}) : function(e, t, n) {
return r[0] = e, s(r, null, n, i), r[0] = null, !i.pop()
}
}),
has: le(function(t) {
return function(e) {
return 0 < se(t, e).length
}
}),
contains: le(function(t) {
return t = t.replace(te, ne),
function(e) {
return -1 < (e.textContent || o(e)).indexOf(t)
}
}),
lang: le(function(n) {
return V.test(n || "") || se.error("unsupported lang: " + n), n = n.replace(te, ne).toLowerCase(),
function(e) {
var t;
do {
if (t = E ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang")) return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-")
} while ((e = e.parentNode) && 1 === e.nodeType);
return !1
}
}),
target: function(e) {
var t = n.location && n.location.hash;
return t && t.slice(1) === e.id
},
root: function(e) {
return e === a
},
focus: function(e) {
return e === C.activeElement && (!C.hasFocus || C.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
},
enabled: ge(!1),
disabled: ge(!0),
checked: function(e) {
var t = e.nodeName.toLowerCase();
return "input" === t && !!e.checked || "option" === t && !!e.selected
},
selected: function(e) {
return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
},
empty: function(e) {
for (e = e.firstChild; e; e = e.nextSibling)
if (e.nodeType < 6) return !1;
return !0
},
parent: function(e) {
return !b.pseudos.empty(e)
},
header: function(e) {
return J.test(e.nodeName)
},
input: function(e) {
return Q.test(e.nodeName)
},
button: function(e) {
var t = e.nodeName.toLowerCase();
return "input" === t && "button" === e.type || "button" === t
},
text: function(e) {
var t;
return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
},
first: ve(function() {
return [0]
}),
last: ve(function(e, t) {
return [t - 1]
}),
eq: ve(function(e, t, n) {
return [n < 0 ? n + t : n]
}),
even: ve(function(e, t) {
for (var n = 0; n < t; n += 2) e.push(n);
return e
}),
odd: ve(function(e, t) {
for (var n = 1; n < t; n += 2) e.push(n);
return e
}),
lt: ve(function(e, t, n) {
for (var r = n < 0 ? n + t : t < n ? t : n; 0 <= --r;) e.push(r);
return e
}),
gt: ve(function(e, t, n) {
for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
return e
})
}
}).pseudos.nth = b.pseudos.eq, {
radio: !0,
checkbox: !0,
file: !0,
password: !0,
image: !0
}) b.pseudos[e] = de(e);
for (e in {
submit: !0,
reset: !0
}) b.pseudos[e] = he(e);
function me() {}
function xe(e) {
for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value;
return r
}
function be(s, e, t) {
var u = e.dir,
l = e.next,
c = l || u,
f = t && "parentNode" === c,
p = r++;
return e.first ? function(e, t, n) {
while (e = e[u])
if (1 === e.nodeType || f) return s(e, t, n);
return !1
} : function(e, t, n) {
var r, i, o, a = [k, p];
if (n) {
while (e = e[u])
if ((1 === e.nodeType || f) && s(e, t, n)) return !0
} else
while (e = e[u])
if (1 === e.nodeType || f)
if (i = (o = e[S] || (e[S] = {}))[e.uniqueID] || (o[e.uniqueID] = {}), l && l === e.nodeName.toLowerCase()) e = e[u] || e;
else {
if ((r = i[c]) && r[0] === k && r[1] === p) return a[2] = r[2];
if ((i[c] = a)[2] = s(e, t, n)) return !0
} return !1
}
}
function we(i) {
return 1 < i.length ? function(e, t, n) {
var r = i.length;
while (r--)
if (!i[r](e, t, n)) return !1;
return !0
} : i[0]
}
function Te(e, t, n, r, i) {
for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++)(o = e[s]) && (n && !n(o, r, i) || (a.push(o), l && t.push(s)));
return a
}
function Ce(d, h, g, v, y, e) {
return v && !v[S] && (v = Ce(v)), y && !y[S] && (y = Ce(y, e)), le(function(e, t, n, r) {
var i, o, a, s = [],
u = [],
l = t.length,
c = e || function(e, t, n) {
for (var r = 0, i = t.length; r < i; r++) se(e, t[r], n);
return n
}(h || "*", n.nodeType ? [n] : n, []),
f = !d || !e && h ? c : Te(c, s, d, n, r),
p = g ? y || (e ? d : l || v) ? [] : t : f;
if (g && g(f, p, n, r), v) {
i = Te(p, u), v(i, [], n, r), o = i.length;
while (o--)(a = i[o]) && (p[u[o]] = !(f[u[o]] = a))
}
if (e) {
if (y || d) {
if (y) {
i = [], o = p.length;
while (o--)(a = p[o]) && i.push(f[o] = a);
y(null, p = [], i, r)
}
o = p.length;
while (o--)(a = p[o]) && -1 < (i = y ? P(e, a) : s[o]) && (e[i] = !(t[i] = a))
}
} else p = Te(p === t ? p.splice(l, p.length) : p), y ? y(null, t, p, r) : H.apply(t, p)
})
}
function Ee(e) {
for (var i, t, n, r = e.length, o = b.relative[e[0].type], a = o || b.relative[" "], s = o ? 1 : 0, u = be(function(e) {
return e === i
}, a, !0), l = be(function(e) {
return -1 < P(i, e)
}, a, !0), c = [function(e, t, n) {
var r = !o && (n || t !== w) || ((i = t).nodeType ? u(e, t, n) : l(e, t, n));
return i = null, r
}]; s < r; s++)
if (t = b.relative[e[s].type]) c = [be(we(c), t)];
else {
if ((t = b.filter[e[s].type].apply(null, e[s].matches))[S]) {
for (n = ++s; n < r; n++)
if (b.relative[e[n].type]) break;
return Ce(1 < s && we(c), 1 < s && xe(e.slice(0, s - 1).concat({
value: " " === e[s - 2].type ? "*" : ""
})).replace($, "$1"), t, s < n && Ee(e.slice(s, n)), n < r && Ee(e = e.slice(n)), n < r && xe(e))
}
c.push(t)
}
return we(c)
}
return me.prototype = b.filters = b.pseudos, b.setFilters = new me, h = se.tokenize = function(e, t) {
var n, r, i, o, a, s, u, l = x[e + " "];
if (l) return t ? 0 : l.slice(0);
a = e, s = [], u = b.preFilter;
while (a) {
for (o in n && !(r = _.exec(a)) || (r && (a = a.slice(r[0].length) || a), s.push(i = [])), n = !1, (r = z.exec(a)) && (n = r.shift(), i.push({
value: n,
type: r[0].replace($, " ")
}), a = a.slice(n.length)), b.filter) !(r = G[o].exec(a)) || u[o] && !(r = u[o](r)) || (n = r.shift(), i.push({
value: n,
type: o,
matches: r
}), a = a.slice(n.length));
if (!n) break
}
return t ? a.length : a ? se.error(e) : x(e, s).slice(0)
}, f = se.compile = function(e, t) {
var n, v, y, m, x, r, i = [],
o = [],
a = A[e + " "];
if (!a) {
t || (t = h(e)), n = t.length;
while (n--)(a = Ee(t[n]))[S] ? i.push(a) : o.push(a);
(a = A(e, (v = o, m = 0 < (y = i).length, x = 0 < v.length, r = function(e, t, n, r, i) {
var o, a, s, u = 0,
l = "0",
c = e && [],
f = [],
p = w,
d = e || x && b.find.TAG("*", i),
h = k += null == p ? 1 : Math.random() || .1,
g = d.length;
for (i && (w = t == C || t || i); l !== g && null != (o = d[l]); l++) {
if (x && o) {
a = 0, t || o.ownerDocument == C || (T(o), n = !E);
while (s = v[a++])
if (s(o, t || C, n)) {
r.push(o);
break
}
i && (k = h)
}
m && ((o = !s && o) && u--, e && c.push(o))
}
if (u += l, m && l !== u) {
a = 0;
while (s = y[a++]) s(c, f, t, n);
if (e) {
if (0 < u)
while (l--) c[l] || f[l] || (f[l] = q.call(r));
f = Te(f)
}
H.apply(r, f), i && !e && 0 < f.length && 1 < u + y.length && se.uniqueSort(r)
}
return i && (k = h, w = p), c
}, m ? le(r) : r))).selector = e
}
return a
}, g = se.select = function(e, t, n, r) {
var i, o, a, s, u, l = "function" == typeof e && e,
c = !r && h(e = l.selector || e);
if (n = n || [], 1 === c.length) {
if (2 < (o = c[0] = c[0].slice(0)).length && "ID" === (a = o[0]).type && 9 === t.nodeType && E && b.relative[o[1].type]) {
if (!(t = (b.find.ID(a.matches[0].replace(te, ne), t) || [])[0])) return n;
l && (t = t.parentNode), e = e.slice(o.shift().value.length)
}
i = G.needsContext.test(e) ? 0 : o.length;
while (i--) {
if (a = o[i], b.relative[s = a.type]) break;
if ((u = b.find[s]) && (r = u(a.matches[0].replace(te, ne), ee.test(o[0].type) && ye(t.parentNode) || t))) {
if (o.splice(i, 1), !(e = r.length && xe(o))) return H.apply(n, r), n;
break
}
}
}
return (l || f(e, c))(r, t, !E, n, !t || ee.test(e) && ye(t.parentNode) || t), n
}, d.sortStable = S.split("").sort(D).join("") === S, d.detectDuplicates = !!l, T(), d.sortDetached = ce(function(e) {
return 1 & e.compareDocumentPosition(C.createElement("fieldset"))
}), ce(function(e) {
return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
}) || fe("type|href|height|width", function(e, t, n) {
if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
}), d.attributes && ce(function(e) {
return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
}) || fe("value", function(e, t, n) {
if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue
}), ce(function(e) {
return null == e.getAttribute("disabled")
}) || fe(R, function(e, t, n) {
var r;
if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
}), se
}(C);
S.find = d, S.expr = d.selectors, S.expr[":"] = S.expr.pseudos, S.uniqueSort = S.unique = d.uniqueSort, S.text = d.getText, S.isXMLDoc = d.isXML, S.contains = d.contains, S.escapeSelector = d.escape;
var h = function(e, t, n) {
var r = [],
i = void 0 !== n;
while ((e = e[t]) && 9 !== e.nodeType)
if (1 === e.nodeType) {
if (i && S(e).is(n)) break;
r.push(e)
}
return r
},
T = function(e, t) {
for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
return n
},
k = S.expr.match.needsContext;
function A(e, t) {
return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
}
var N = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
function D(e, n, r) {
return m(n) ? S.grep(e, function(e, t) {
return !!n.call(e, t, e) !== r
}) : n.nodeType ? S.grep(e, function(e) {
return e === n !== r
}) : "string" != typeof n ? S.grep(e, function(e) {
return -1 < i.call(n, e) !== r
}) : S.filter(n, e, r)
}
S.filter = function(e, t, n) {
var r = t[0];
return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? S.find.matchesSelector(r, e) ? [r] : [] : S.find.matches(e, S.grep(t, function(e) {
return 1 === e.nodeType
}))
}, S.fn.extend({
find: function(e) {
var t, n, r = this.length,
i = this;
if ("string" != typeof e) return this.pushStack(S(e).filter(function() {
for (t = 0; t < r; t++)
if (S.contains(i[t], this)) return !0
}));
for (n = this.pushStack([]), t = 0; t < r; t++) S.find(e, i[t], n);
return 1 < r ? S.uniqueSort(n) : n
},
filter: function(e) {
return this.pushStack(D(this, e || [], !1))
},
not: function(e) {
return this.pushStack(D(this, e || [], !0))
},
is: function(e) {
return !!D(this, "string" == typeof e && k.test(e) ? S(e) : e || [], !1).length
}
});
var j, q = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
(S.fn.init = function(e, t, n) {
var r, i;
if (!e) return this;
if (n = n || j, "string" == typeof e) {
if (!(r = "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length ? [null, e, null] : q.exec(e)) || !r[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
if (r[1]) {
if (t = t instanceof S ? t[0] : t, S.merge(this, S.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : E, !0)), N.test(r[1]) && S.isPlainObject(t))
for (r in t) m(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
return this
}
return (i = E.getElementById(r[2])) && (this[0] = i, this.length = 1), this
}
return e.nodeType ? (this[0] = e, this.length = 1, this) : m(e) ? void 0 !== n.ready ? n.ready(e) : e(S) : S.makeArray(e, this)
}).prototype = S.fn, j = S(E);
var L = /^(?:parents|prev(?:Until|All))/,
H = {
children: !0,
contents: !0,
next: !0,
prev: !0
};
function O(e, t) {
while ((e = e[t]) && 1 !== e.nodeType);
return e
}
S.fn.extend({
has: function(e) {
var t = S(e, this),
n = t.length;
return this.filter(function() {
for (var e = 0; e < n; e++)
if (S.contains(this, t[e])) return !0
})
},
closest: function(e, t) {
var n, r = 0,
i = this.length,
o = [],
a = "string" != typeof e && S(e);
if (!k.test(e))
for (; r < i; r++)
for (n = this[r]; n && n !== t; n = n.parentNode)
if (n.nodeType < 11 && (a ? -1 < a.index(n) : 1 === n.nodeType && S.find.matchesSelector(n, e))) {
o.push(n);
break
}
return this.pushStack(1 < o.length ? S.uniqueSort(o) : o)
},
index: function(e) {
return e ? "string" == typeof e ? i.call(S(e), this[0]) : i.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
},
add: function(e, t) {
return this.pushStack(S.uniqueSort(S.merge(this.get(), S(e, t))))
},
addBack: function(e) {
return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
}
}), S.each({
parent: function(e) {
var t = e.parentNode;
return t && 11 !== t.nodeType ? t : null
},
parents: function(e) {
return h(e, "parentNode")
},
parentsUntil: function(e, t, n) {
return h(e, "parentNode", n)
},
next: function(e) {
return O(e, "nextSibling")
},
prev: function(e) {
return O(e, "previousSibling")
},
nextAll: function(e) {
return h(e, "nextSibling")
},
prevAll: function(e) {
return h(e, "previousSibling")
},
nextUntil: function(e, t, n) {
return h(e, "nextSibling", n)
},
prevUntil: function(e, t, n) {
return h(e, "previousSibling", n)
},
siblings: function(e) {
return T((e.parentNode || {}).firstChild, e)
},
children: function(e) {
return T(e.firstChild)
},
contents: function(e) {
return null != e.contentDocument && r(e.contentDocument) ? e.contentDocument : (A(e, "template") && (e = e.content || e), S.merge([], e.childNodes))
}
}, function(r, i) {
S.fn[r] = function(e, t) {
var n = S.map(this, i, e);
return "Until" !== r.slice(-5) && (t = e), t && "string" == typeof t && (n = S.filter(t, n)), 1 < this.length && (H[r] || S.uniqueSort(n), L.test(r) && n.reverse()), this.pushStack(n)
}
});
var P = /[^\x20\t\r\n\f]+/g;
function R(e) {
return e
}
function M(e) {
throw e
}
function I(e, t, n, r) {
var i;
try {
e && m(i = e.promise) ? i.call(e).done(t).fail(n) : e && m(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r))
} catch (e) {
n.apply(void 0, [e])
}
}
S.Callbacks = function(r) {
var e, n;
r = "string" == typeof r ? (e = r, n = {}, S.each(e.match(P) || [], function(e, t) {
n[t] = !0
}), n) : S.extend({}, r);
var i, t, o, a, s = [],
u = [],
l = -1,
c = function() {
for (a = a || r.once, o = i = !0; u.length; l = -1) {
t = u.shift();
while (++l < s.length) !1 === s[l].apply(t[0], t[1]) && r.stopOnFalse && (l = s.length, t = !1)
}
r.memory || (t = !1), i = !1, a && (s = t ? [] : "")
},
f = {
add: function() {
return s && (t && !i && (l = s.length - 1, u.push(t)), function n(e) {
S.each(e, function(e, t) {
m(t) ? r.unique && f.has(t) || s.push(t) : t && t.length && "string" !== w(t) && n(t)
})
}(arguments), t && !i && c()), this
},
remove: function() {
return S.each(arguments, function(e, t) {
var n;
while (-1 < (n = S.inArray(t, s, n))) s.splice(n, 1), n <= l && l--
}), this
},
has: function(e) {
return e ? -1 < S.inArray(e, s) : 0 < s.length
},
empty: function() {
return s && (s = []), this
},
disable: function() {
return a = u = [], s = t = "", this
},
disabled: function() {
return !s
},
lock: function() {
return a = u = [], t || i || (s = t = ""), this
},
locked: function() {
return !!a
},
fireWith: function(e, t) {
return a || (t = [e, (t = t || []).slice ? t.slice() : t], u.push(t), i || c()), this
},
fire: function() {
return f.fireWith(this, arguments), this
},
fired: function() {
return !!o
}
};
return f
}, S.extend({
Deferred: function(e) {
var o = [
["notify", "progress", S.Callbacks("memory"), S.Callbacks("memory"), 2],
["resolve", "done", S.Callbacks("once memory"), S.Callbacks("once memory"), 0, "resolved"],
["reject", "fail", S.Callbacks("once memory"), S.Callbacks("once memory"), 1, "rejected"]
],
i = "pending",
a = {
state: function() {
return i
},
always: function() {
return s.done(arguments).fail(arguments), this
},
"catch": function(e) {
return a.then(null, e)
},
pipe: function() {
var i = arguments;
return S.Deferred(function(r) {
S.each(o, function(e, t) {
var n = m(i[t[4]]) && i[t[4]];
s[t[1]](function() {
var e = n && n.apply(this, arguments);
e && m(e.promise) ? e.promise().progress(r.notify).done(r.resolve).fail(r.reject) : r[t[0] + "With"](this, n ? [e] : arguments)
})
}), i = null
}).promise()
},
then: function(t, n, r) {
var u = 0;
function l(i, o, a, s) {
return function() {
var n = this,
r = arguments,
e = function() {
var e, t;
if (!(i < u)) {
if ((e = a.apply(n, r)) === o.promise()) throw new TypeError("Thenable self-resolution");
t = e && ("object" == typeof e || "function" == typeof e) && e.then, m(t) ? s ? t.call(e, l(u, o, R, s), l(u, o, M, s)) : (u++, t.call(e, l(u, o, R, s), l(u, o, M, s), l(u, o, R, o.notifyWith))) : (a !== R && (n = void 0, r = [e]), (s || o.resolveWith)(n, r))
}
},
t = s ? e : function() {
try {
e()
} catch (e) {
S.Deferred.exceptionHook && S.Deferred.exceptionHook(e, t.stackTrace), u <= i + 1 && (a !== M && (n = void 0, r = [e]), o.rejectWith(n, r))
}
};
i ? t() : (S.Deferred.getStackHook && (t.stackTrace = S.Deferred.getStackHook()), C.setTimeout(t))
}
}
return S.Deferred(function(e) {
o[0][3].add(l(0, e, m(r) ? r : R, e.notifyWith)), o[1][3].add(l(0, e, m(t) ? t : R)), o[2][3].add(l(0, e, m(n) ? n : M))
}).promise()
},
promise: function(e) {
return null != e ? S.extend(e, a) : a
}
},
s = {};
return S.each(o, function(e, t) {
var n = t[2],
r = t[5];
a[t[1]] = n.add, r && n.add(function() {
i = r
}, o[3 - e][2].disable, o[3 - e][3].disable, o[0][2].lock, o[0][3].lock), n.add(t[3].fire), s[t[0]] = function() {
return s[t[0] + "With"](this === s ? void 0 : this, arguments), this
}, s[t[0] + "With"] = n.fireWith
}), a.promise(s), e && e.call(s, s), s
},
when: function(e) {
var n = arguments.length,
t = n,
r = Array(t),
i = s.call(arguments),
o = S.Deferred(),
a = function(t) {
return function(e) {
r[t] = this, i[t] = 1 < arguments.length ? s.call(arguments) : e, --n || o.resolveWith(r, i)
}
};
if (n <= 1 && (I(e, o.done(a(t)).resolve, o.reject, !n), "pending" === o.state() || m(i[t] && i[t].then))) return o.then();
while (t--) I(i[t], a(t), o.reject);
return o.promise()
}
});
var W = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
S.Deferred.exceptionHook = function(e, t) {
C.console && C.console.warn && e && W.test(e.name) && C.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t)
}, S.readyException = function(e) {
C.setTimeout(function() {
throw e
})
};
var F = S.Deferred();
function B() {
E.removeEventListener("DOMContentLoaded", B), C.removeEventListener("load", B), S.ready()
}
S.fn.ready = function(e) {
return F.then(e)["catch"](function(e) {
S.readyException(e)
}), this
}, S.extend({
isReady: !1,
readyWait: 1,
ready: function(e) {
(!0 === e ? --S.readyWait : S.isReady) || (S.isReady = !0) !== e && 0 < --S.readyWait || F.resolveWith(E, [S])
}
}), S.ready.then = F.then, "complete" === E.readyState || "loading" !== E.readyState && !E.documentElement.doScroll ? C.setTimeout(S.ready) : (E.addEventListener("DOMContentLoaded", B), C.addEventListener("load", B));
var $ = function(e, t, n, r, i, o, a) {
var s = 0,
u = e.length,
l = null == n;
if ("object" === w(n))
for (s in i = !0, n) $(e, t, s, n[s], !0, o, a);
else if (void 0 !== r && (i = !0, m(r) || (a = !0), l && (a ? (t.call(e, r), t = null) : (l = t, t = function(e, t, n) {
return l.call(S(e), n)
})), t))
for (; s < u; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
return i ? e : l ? t.call(e) : u ? t(e[0], n) : o
},
_ = /^-ms-/,
z = /-([a-z])/g;
function U(e, t) {
return t.toUpperCase()
}
function X(e) {
return e.replace(_, "ms-").replace(z, U)
}
var V = function(e) {
return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
};
function G() {
this.expando = S.expando + G.uid++
}
G.uid = 1, G.prototype = {
cache: function(e) {
var t = e[this.expando];
return t || (t = {}, V(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {
value: t,
configurable: !0
}))), t
},
set: function(e, t, n) {
var r, i = this.cache(e);
if ("string" == typeof t) i[X(t)] = n;
else
for (r in t) i[X(r)] = t[r];
return i
},
get: function(e, t) {
return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][X(t)]
},
access: function(e, t, n) {
return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), void 0 !== n ? n : t)
},
remove: function(e, t) {
var n, r = e[this.expando];
if (void 0 !== r) {
if (void 0 !== t) {
n = (t = Array.isArray(t) ? t.map(X) : (t = X(t)) in r ? [t] : t.match(P) || []).length;
while (n--) delete r[t[n]]
}(void 0 === t || S.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
}
},
hasData: function(e) {
var t = e[this.expando];
return void 0 !== t && !S.isEmptyObject(t)
}
};
var Y = new G,
Q = new G,
J = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
K = /[A-Z]/g;
function Z(e, t, n) {
var r, i;
if (void 0 === n && 1 === e.nodeType)
if (r = "data-" + t.replace(K, "-$&").toLowerCase(), "string" == typeof(n = e.getAttribute(r))) {
try {
n = "true" === (i = n) || "false" !== i && ("null" === i ? null : i === +i + "" ? +i : J.test(i) ? JSON.parse(i) : i)
} catch (e) {}
Q.set(e, t, n)
} else n = void 0;
return n
}
S.extend({
hasData: function(e) {
return Q.hasData(e) || Y.hasData(e)
},
data: function(e, t, n) {
return Q.access(e, t, n)
},
removeData: function(e, t) {
Q.remove(e, t)
},
_data: function(e, t, n) {
return Y.access(e, t, n)
},
_removeData: function(e, t) {
Y.remove(e, t)
}
}), S.fn.extend({
data: function(n, e) {
var t, r, i, o = this[0],
a = o && o.attributes;
if (void 0 === n) {
if (this.length && (i = Q.get(o), 1 === o.nodeType && !Y.get(o, "hasDataAttrs"))) {
t = a.length;
while (t--) a[t] && 0 === (r = a[t].name).indexOf("data-") && (r = X(r.slice(5)), Z(o, r, i[r]));
Y.set(o, "hasDataAttrs", !0)
}
return i
}
return "object" == typeof n ? this.each(function() {
Q.set(this, n)
}) : $(this, function(e) {
var t;
if (o && void 0 === e) return void 0 !== (t = Q.get(o, n)) ? t : void 0 !== (t = Z(o, n)) ? t : void 0;
this.each(function() {
Q.set(this, n, e)
})
}, null, e, 1 < arguments.length, null, !0)
},
removeData: function(e) {
return this.each(function() {
Q.remove(this, e)
})
}
}), S.extend({
queue: function(e, t, n) {
var r;
if (e) return t = (t || "fx") + "queue", r = Y.get(e, t), n && (!r || Array.isArray(n) ? r = Y.access(e, t, S.makeArray(n)) : r.push(n)), r || []
},
dequeue: function(e, t) {
t = t || "fx";
var n = S.queue(e, t),
r = n.length,
i = n.shift(),
o = S._queueHooks(e, t);
"inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, function() {
S.dequeue(e, t)
}, o)), !r && o && o.empty.fire()
},
_queueHooks: function(e, t) {
var n = t + "queueHooks";
return Y.get(e, n) || Y.access(e, n, {
empty: S.Callbacks("once memory").add(function() {
Y.remove(e, [t + "queue", n])
})
})
}
}), S.fn.extend({
queue: function(t, n) {
var e = 2;
return "string" != typeof t && (n = t, t = "fx", e--), arguments.length < e ? S.queue(this[0], t) : void 0 === n ? this : this.each(function() {
var e = S.queue(this, t, n);
S._queueHooks(this, t), "fx" === t && "inprogress" !== e[0] && S.dequeue(this, t)
})
},
dequeue: function(e) {
return this.each(function() {
S.dequeue(this, e)
})
},
clearQueue: function(e) {
return this.queue(e || "fx", [])
},
promise: function(e, t) {
var n, r = 1,
i = S.Deferred(),
o = this,
a = this.length,
s = function() {
--r || i.resolveWith(o, [o])
};
"string" != typeof e && (t = e, e = void 0), e = e || "fx";
while (a--)(n = Y.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s));
return s(), i.promise(t)
}
});
var ee = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
te = new RegExp("^(?:([+-])=|)(" + ee + ")([a-z%]*)$", "i"),
ne = ["Top", "Right", "Bottom", "Left"],
re = E.documentElement,
ie = function(e) {
return S.contains(e.ownerDocument, e)
},
oe = {
composed: !0
};
re.getRootNode && (ie = function(e) {
return S.contains(e.ownerDocument, e) || e.getRootNode(oe) === e.ownerDocument
});
var ae = function(e, t) {
return "none" === (e = t || e).style.display || "" === e.style.display && ie(e) && "none" === S.css(e, "display")
};
function se(e, t, n, r) {
var i, o, a = 20,
s = r ? function() {
return r.cur()
} : function() {
return S.css(e, t, "")
},
u = s(),
l = n && n[3] || (S.cssNumber[t] ? "" : "px"),
c = e.nodeType && (S.cssNumber[t] || "px" !== l && +u) && te.exec(S.css(e, t));
if (c && c[3] !== l) {
u /= 2, l = l || c[3], c = +u || 1;
while (a--) S.style(e, t, c + l), (1 - o) * (1 - (o = s() / u || .5)) <= 0 && (a = 0), c /= o;
c *= 2, S.style(e, t, c + l), n = n || []
}
return n && (c = +c || +u || 0, i = n[1] ? c + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = c, r.end = i)), i
}
var ue = {};
function le(e, t) {
for (var n, r, i, o, a, s, u, l = [], c = 0, f = e.length; c < f; c++)(r = e[c]).style && (n = r.style.display, t ? ("none" === n && (l[c] = Y.get(r, "display") || null, l[c] || (r.style.display = "")), "" === r.style.display && ae(r) && (l[c] = (u = a = o = void 0, a = (i = r).ownerDocument, s = i.nodeName, (u = ue[s]) || (o = a.body.appendChild(a.createElement(s)), u = S.css(o, "display"), o.parentNode.removeChild(o), "none" === u && (u = "block"), ue[s] = u)))) : "none" !== n && (l[c] = "none", Y.set(r, "display", n)));
for (c = 0; c < f; c++) null != l[c] && (e[c].style.display = l[c]);
return e
}
S.fn.extend({
show: function() {
return le(this, !0)
},
hide: function() {
return le(this)
},
toggle: function(e) {
return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
ae(this) ? S(this).show() : S(this).hide()
})
}
});
var ce, fe, pe = /^(?:checkbox|radio)$/i,
de = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i,
he = /^$|^module$|\/(?:java|ecma)script/i;
ce = E.createDocumentFragment().appendChild(E.createElement("div")), (fe = E.createElement("input")).setAttribute("type", "radio"), fe.setAttribute("checked", "checked"), fe.setAttribute("name", "t"), ce.appendChild(fe), y.checkClone = ce.cloneNode(!0).cloneNode(!0).lastChild.checked, ce.innerHTML = "<textarea>x</textarea>", y.noCloneChecked = !!ce.cloneNode(!0).lastChild.defaultValue, ce.innerHTML = "<option></option>", y.option = !!ce.lastChild;
var ge = {
thead: [1, "<table>", "</table>"],
col: [2, "<table><colgroup>", "</colgroup></table>"],
tr: [2, "<table><tbody>", "</tbody></table>"],
td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
_default: [0, "", ""]
};
function ve(e, t) {
var n;
return n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && A(e, t) ? S.merge([e], n) : n
}
function ye(e, t) {
for (var n = 0, r = e.length; n < r; n++) Y.set(e[n], "globalEval", !t || Y.get(t[n], "globalEval"))
}
ge.tbody = ge.tfoot = ge.colgroup = ge.caption = ge.thead, ge.th = ge.td, y.option || (ge.optgroup = ge.option = [1, "<select multiple='multiple'>", "</select>"]);
var me = /<|&#?\w+;/;
function xe(e, t, n, r, i) {
for (var o, a, s, u, l, c, f = t.createDocumentFragment(), p = [], d = 0, h = e.length; d < h; d++)
if ((o = e[d]) || 0 === o)
if ("object" === w(o)) S.merge(p, o.nodeType ? [o] : o);
else if (me.test(o)) {
a = a || f.appendChild(t.createElement("div")), s = (de.exec(o) || ["", ""])[1].toLowerCase(), u = ge[s] || ge._default, a.innerHTML = u[1] + S.htmlPrefilter(o) + u[2], c = u[0];
while (c--) a = a.lastChild;
S.merge(p, a.childNodes), (a = f.firstChild).textContent = ""
} else p.push(t.createTextNode(o));
f.textContent = "", d = 0;
while (o = p[d++])
if (r && -1 < S.inArray(o, r)) i && i.push(o);
else if (l = ie(o), a = ve(f.appendChild(o), "script"), l && ye(a), n) {
c = 0;
while (o = a[c++]) he.test(o.type || "") && n.push(o)
}
return f
}
var be = /^key/,
we = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
Te = /^([^.]*)(?:\.(.+)|)/;
function Ce() {
return !0
}
function Ee() {
return !1
}
function Se(e, t) {
return e === function() {
try {
return E.activeElement
} catch (e) {}
}() == ("focus" === t)
}
function ke(e, t, n, r, i, o) {
var a, s;
if ("object" == typeof t) {
for (s in "string" != typeof n && (r = r || n, n = void 0), t) ke(e, s, n, r, t[s], o);
return e
}
if (null == r && null == i ? (i = n, r = n = void 0) : null == i && ("string" == typeof n ? (i = r, r = void 0) : (i = r, r = n, n = void 0)), !1 === i) i = Ee;
else if (!i) return e;
return 1 === o && (a = i, (i = function(e) {
return S().off(e), a.apply(this, arguments)
}).guid = a.guid || (a.guid = S.guid++)), e.each(function() {
S.event.add(this, t, i, r, n)
})
}
function Ae(e, i, o) {
o ? (Y.set(e, i, !1), S.event.add(e, i, {
namespace: !1,
handler: function(e) {
var t, n, r = Y.get(this, i);
if (1 & e.isTrigger && this[i]) {
if (r.length)(S.event.special[i] || {}).delegateType && e.stopPropagation();
else if (r = s.call(arguments), Y.set(this, i, r), t = o(this, i), this[i](), r !== (n = Y.get(this, i)) || t ? Y.set(this, i, !1) : n = {}, r !== n) return e.stopImmediatePropagation(), e.preventDefault(), n.value
} else r.length && (Y.set(this, i, {
value: S.event.trigger(S.extend(r[0], S.Event.prototype), r.slice(1), this)
}), e.stopImmediatePropagation())
}
})) : void 0 === Y.get(e, i) && S.event.add(e, i, Ce)
}
S.event = {
global: {},
add: function(t, e, n, r, i) {
var o, a, s, u, l, c, f, p, d, h, g, v = Y.get(t);
if (V(t)) {
n.handler && (n = (o = n).handler, i = o.selector), i && S.find.matchesSelector(re, i), n.guid || (n.guid = S.guid++), (u = v.events) || (u = v.events = Object.create(null)), (a = v.handle) || (a = v.handle = function(e) {
return "undefined" != typeof S && S.event.triggered !== e.type ? S.event.dispatch.apply(t, arguments) : void 0
}), l = (e = (e || "").match(P) || [""]).length;
while (l--) d = g = (s = Te.exec(e[l]) || [])[1], h = (s[2] || "").split(".").sort(), d && (f = S.event.special[d] || {}, d = (i ? f.delegateType : f.bindType) || d, f = S.event.special[d] || {}, c = S.extend({
type: d,
origType: g,
data: r,
handler: n,
guid: n.guid,
selector: i,
needsContext: i && S.expr.match.needsContext.test(i),
namespace: h.join(".")
}, o), (p = u[d]) || ((p = u[d] = []).delegateCount = 0, f.setup && !1 !== f.setup.call(t, r, h, a) || t.addEventListener && t.addEventListener(d, a)), f.add && (f.add.call(t, c), c.handler.guid || (c.handler.guid = n.guid)), i ? p.splice(p.delegateCount++, 0, c) : p.push(c), S.event.global[d] = !0)
}
},
remove: function(e, t, n, r, i) {
var o, a, s, u, l, c, f, p, d, h, g, v = Y.hasData(e) && Y.get(e);
if (v && (u = v.events)) {
l = (t = (t || "").match(P) || [""]).length;
while (l--)
if (d = g = (s = Te.exec(t[l]) || [])[1], h = (s[2] || "").split(".").sort(), d) {
f = S.event.special[d] || {}, p = u[d = (r ? f.delegateType : f.bindType) || d] || [], s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = p.length;
while (o--) c = p[o], !i && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (p.splice(o, 1), c.selector && p.delegateCount--, f.remove && f.remove.call(e, c));
a && !p.length && (f.teardown && !1 !== f.teardown.call(e, h, v.handle) || S.removeEvent(e, d, v.handle), delete u[d])
} else
for (d in u) S.event.remove(e, d + t[l], n, r, !0);
S.isEmptyObject(u) && Y.remove(e, "handle events")
}
},
dispatch: function(e) {
var t, n, r, i, o, a, s = new Array(arguments.length),
u = S.event.fix(e),
l = (Y.get(this, "events") || Object.create(null))[u.type] || [],
c = S.event.special[u.type] || {};
for (s[0] = u, t = 1; t < arguments.length; t++) s[t] = arguments[t];
if (u.delegateTarget = this, !c.preDispatch || !1 !== c.preDispatch.call(this, u)) {
a = S.event.handlers.call(this, u, l), t = 0;
while ((i = a[t++]) && !u.isPropagationStopped()) {
u.currentTarget = i.elem, n = 0;
while ((o = i.handlers[n++]) && !u.isImmediatePropagationStopped()) u.rnamespace && !1 !== o.namespace && !u.rnamespace.test(o.namespace) || (u.handleObj = o, u.data = o.data, void 0 !== (r = ((S.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, s)) && !1 === (u.result = r) && (u.preventDefault(), u.stopPropagation()))
}
return c.postDispatch && c.postDispatch.call(this, u), u.result
}
},
handlers: function(e, t) {
var n, r, i, o, a, s = [],
u = t.delegateCount,
l = e.target;
if (u && l.nodeType && !("click" === e.type && 1 <= e.button))
for (; l !== this; l = l.parentNode || this)
if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) {
for (o = [], a = {}, n = 0; n < u; n++) void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? -1 < S(i, this).index(l) : S.find(i, this, null, [l]).length), a[i] && o.push(r);
o.length && s.push({
elem: l,
handlers: o
})
}
return l = this, u < t.length && s.push({
elem: l,
handlers: t.slice(u)
}), s
},
addProp: function(t, e) {
Object.defineProperty(S.Event.prototype, t, {
enumerable: !0,
configurable: !0,
get: m(e) ? function() {
if (this.originalEvent) return e(this.originalEvent)
} : function() {
if (this.originalEvent) return this.originalEvent[t]
},
set: function(e) {
Object.defineProperty(this, t, {
enumerable: !0,
configurable: !0,
writable: !0,
value: e
})
}
})
},
fix: function(e) {
return e[S.expando] ? e : new S.Event(e)
},
special: {
load: {
noBubble: !0
},
click: {
setup: function(e) {
var t = this || e;
return pe.test(t.type) && t.click && A(t, "input") && Ae(t, "click", Ce), !1
},
trigger: function(e) {
var t = this || e;
return pe.test(t.type) && t.click && A(t, "input") && Ae(t, "click"), !0
},
_default: function(e) {
var t = e.target;
return pe.test(t.type) && t.click && A(t, "input") && Y.get(t, "click") || A(t, "a")
}
},
beforeunload: {
postDispatch: function(e) {
void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
}
}
}
}, S.removeEvent = function(e, t, n) {
e.removeEventListener && e.removeEventListener(t, n)
}, S.Event = function(e, t) {
if (!(this instanceof S.Event)) return new S.Event(e, t);
e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ce : Ee, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && S.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[S.expando] = !0
}, S.Event.prototype = {
constructor: S.Event,
isDefaultPrevented: Ee,
isPropagationStopped: Ee,
isImmediatePropagationStopped: Ee,
isSimulated: !1,
preventDefault: function() {
var e = this.originalEvent;
this.isDefaultPrevented = Ce, e && !this.isSimulated && e.preventDefault()
},
stopPropagation: function() {
var e = this.originalEvent;
this.isPropagationStopped = Ce, e && !this.isSimulated && e.stopPropagation()
},
stopImmediatePropagation: function() {
var e = this.originalEvent;
this.isImmediatePropagationStopped = Ce, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
}
}, S.each({
altKey: !0,
bubbles: !0,
cancelable: !0,
changedTouches: !0,
ctrlKey: !0,
detail: !0,
eventPhase: !0,
metaKey: !0,
pageX: !0,
pageY: !0,
shiftKey: !0,
view: !0,
"char": !0,
code: !0,
charCode: !0,
key: !0,
keyCode: !0,
button: !0,
buttons: !0,
clientX: !0,
clientY: !0,
offsetX: !0,
offsetY: !0,
pointerId: !0,
pointerType: !0,
screenX: !0,
screenY: !0,
targetTouches: !0,
toElement: !0,
touches: !0,
which: function(e) {
var t = e.button;
return null == e.which && be.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && we.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
}
}, S.event.addProp), S.each({
focus: "focusin",
blur: "focusout"
}, function(e, t) {
S.event.special[e] = {
setup: function() {
return Ae(this, e, Se), !1
},
trigger: function() {
return Ae(this, e), !0
},
delegateType: t
}
}), S.each({
mouseenter: "mouseover",
mouseleave: "mouseout",
pointerenter: "pointerover",
pointerleave: "pointerout"
}, function(e, i) {
S.event.special[e] = {
delegateType: i,
bindType: i,
handle: function(e) {
var t, n = e.relatedTarget,
r = e.handleObj;
return n && (n === this || S.contains(this, n)) || (e.type = r.origType, t = r.handler.apply(this, arguments), e.type = i), t
}
}
}), S.fn.extend({
on: function(e, t, n, r) {
return ke(this, e, t, n, r)
},
one: function(e, t, n, r) {
return ke(this, e, t, n, r, 1)
},
off: function(e, t, n) {
var r, i;
if (e && e.preventDefault && e.handleObj) return r = e.handleObj, S(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this;
if ("object" == typeof e) {
for (i in e) this.off(i, t, e[i]);
return this
}
return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = Ee), this.each(function() {
S.event.remove(this, e, n, t)
})
}
});
var Ne = /<script|<style|<link/i,
De = /checked\s*(?:[^=]|=\s*.checked.)/i,
je = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
function qe(e, t) {
return A(e, "table") && A(11 !== t.nodeType ? t : t.firstChild, "tr") && S(e).children("tbody")[0] || e
}
function Le(e) {
return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
}
function He(e) {
return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e
}
function Oe(e, t) {
var n, r, i, o, a, s;
if (1 === t.nodeType) {
if (Y.hasData(e) && (s = Y.get(e).events))
for (i in Y.remove(t, "handle events"), s)
for (n = 0, r = s[i].length; n < r; n++) S.event.add(t, i, s[i][n]);
Q.hasData(e) && (o = Q.access(e), a = S.extend({}, o), Q.set(t, a))
}
}
function Pe(n, r, i, o) {
r = g(r);
var e, t, a, s, u, l, c = 0,
f = n.length,
p = f - 1,
d = r[0],
h = m(d);
if (h || 1 < f && "string" == typeof d && !y.checkClone && De.test(d)) return n.each(function(e) {
var t = n.eq(e);
h && (r[0] = d.call(this, e, t.html())), Pe(t, r, i, o)
});
if (f && (t = (e = xe(r, n[0].ownerDocument, !1, n, o)).firstChild, 1 === e.childNodes.length && (e = t), t || o)) {
for (s = (a = S.map(ve(e, "script"), Le)).length; c < f; c++) u = e, c !== p && (u = S.clone(u, !0, !0), s && S.merge(a, ve(u, "script"))), i.call(n[c], u, c);
if (s)
for (l = a[a.length - 1].ownerDocument, S.map(a, He), c = 0; c < s; c++) u = a[c], he.test(u.type || "") && !Y.access(u, "globalEval") && S.contains(l, u) && (u.src && "module" !== (u.type || "").toLowerCase() ? S._evalUrl && !u.noModule && S._evalUrl(u.src, {
nonce: u.nonce || u.getAttribute("nonce")
}, l) : b(u.textContent.replace(je, ""), u, l))
}
return n
}
function Re(e, t, n) {
for (var r, i = t ? S.filter(t, e) : e, o = 0; null != (r = i[o]); o++) n || 1 !== r.nodeType || S.cleanData(ve(r)), r.parentNode && (n && ie(r) && ye(ve(r, "script")), r.parentNode.removeChild(r));
return e
}
S.extend({
htmlPrefilter: function(e) {
return e
},
clone: function(e, t, n) {
var r, i, o, a, s, u, l, c = e.cloneNode(!0),
f = ie(e);
if (!(y.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || S.isXMLDoc(e)))
for (a = ve(c), r = 0, i = (o = ve(e)).length; r < i; r++) s = o[r], u = a[r], void 0, "input" === (l = u.nodeName.toLowerCase()) && pe.test(s.type) ? u.checked = s.checked : "input" !== l && "textarea" !== l || (u.defaultValue = s.defaultValue);
if (t)
if (n)
for (o = o || ve(e), a = a || ve(c), r = 0, i = o.length; r < i; r++) Oe(o[r], a[r]);
else Oe(e, c);
return 0 < (a = ve(c, "script")).length && ye(a, !f && ve(e, "script")), c
},
cleanData: function(e) {
for (var t, n, r, i = S.event.special, o = 0; void 0 !== (n = e[o]); o++)
if (V(n)) {
if (t = n[Y.expando]) {
if (t.events)
for (r in t.events) i[r] ? S.event.remove(n, r) : S.removeEvent(n, r, t.handle);
n[Y.expando] = void 0
}
n[Q.expando] && (n[Q.expando] = void 0)
}
}
}), S.fn.extend({
detach: function(e) {
return Re(this, e, !0)
},
remove: function(e) {
return Re(this, e)
},
text: function(e) {
return $(this, function(e) {
return void 0 === e ? S.text(this) : this.empty().each(function() {
1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
})
}, null, e, arguments.length)
},
append: function() {
return Pe(this, arguments, function(e) {
1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || qe(this, e).appendChild(e)
})
},
prepend: function() {
return Pe(this, arguments, function(e) {
if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
var t = qe(this, e);
t.insertBefore(e, t.firstChild)
}
})
},
before: function() {
return Pe(this, arguments, function(e) {
this.parentNode && this.parentNode.insertBefore(e, this)
})
},
after: function() {
return Pe(this, arguments, function(e) {
this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
})
},
empty: function() {
for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (S.cleanData(ve(e, !1)), e.textContent = "");
return this
},
clone: function(e, t) {
return e = null != e && e, t = null == t ? e : t, this.map(function() {
return S.clone(this, e, t)
})
},
html: function(e) {
return $(this, function(e) {
var t = this[0] || {},
n = 0,
r = this.length;
if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
if ("string" == typeof e && !Ne.test(e) && !ge[(de.exec(e) || ["", ""])[1].toLowerCase()]) {
e = S.htmlPrefilter(e);
try {
for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (S.cleanData(ve(t, !1)), t.innerHTML = e);
t = 0
} catch (e) {}
}
t && this.empty().append(e)
}, null, e, arguments.length)
},
replaceWith: function() {
var n = [];
return Pe(this, arguments, function(e) {
var t = this.parentNode;
S.inArray(this, n) < 0 && (S.cleanData(ve(this)), t && t.replaceChild(e, this))
}, n)
}
}), S.each({
appendTo: "append",
prependTo: "prepend",
insertBefore: "before",
insertAfter: "after",
replaceAll: "replaceWith"
}, function(e, a) {
S.fn[e] = function(e) {
for (var t, n = [], r = S(e), i = r.length - 1, o = 0; o <= i; o++) t = o === i ? this : this.clone(!0), S(r[o])[a](t), u.apply(n, t.get());
return this.pushStack(n)
}
});
var Me = new RegExp("^(" + ee + ")(?!px)[a-z%]+$", "i"),
Ie = function(e) {
var t = e.ownerDocument.defaultView;
return t && t.opener || (t = C), t.getComputedStyle(e)
},
We = function(e, t, n) {
var r, i, o = {};
for (i in t) o[i] = e.style[i], e.style[i] = t[i];
for (i in r = n.call(e), t) e.style[i] = o[i];
return r
},
Fe = new RegExp(ne.join("|"), "i");
function Be(e, t, n) {
var r, i, o, a, s = e.style;
return (n = n || Ie(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || ie(e) || (a = S.style(e, t)), !y.pixelBoxStyles() && Me.test(a) && Fe.test(t) && (r = s.width, i = s.minWidth, o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = r, s.minWidth = i, s.maxWidth = o)), void 0 !== a ? a + "" : a
}
function $e(e, t) {
return {get: function() {
if (!e()) return (this.get = t).apply(this, arguments);
delete this.get
}
}
}! function() {
function e() {
if (l) {
u.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0", l.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%", re.appendChild(u).appendChild(l);
var e = C.getComputedStyle(l);
n = "1%" !== e.top, s = 12 === t(e.marginLeft), l.style.right = "60%", o = 36 === t(e.right), r = 36 === t(e.width), l.style.position = "absolute", i = 12 === t(l.offsetWidth / 3), re.removeChild(u), l = null
}
}
function t(e) {
return Math.round(parseFloat(e))
}
var n, r, i, o, a, s, u = E.createElement("div"),
l = E.createElement("div");
l.style && (l.style.backgroundClip = "content-box", l.cloneNode(!0).style.backgroundClip = "", y.clearCloneStyle = "content-box" === l.style.backgroundClip, S.extend(y, {
boxSizingReliable: function() {
return e(), r
},
pixelBoxStyles: function() {
return e(), o
},
pixelPosition: function() {
return e(), n
},
reliableMarginLeft: function() {
return e(), s
},
scrollboxSize: function() {
return e(), i
},
reliableTrDimensions: function() {
var e, t, n, r;
return null == a && (e = E.createElement("table"), t = E.createElement("tr"), n = E.createElement("div"), e.style.cssText = "position:absolute;left:-11111px", t.style.height = "1px", n.style.height = "9px", re.appendChild(e).appendChild(t).appendChild(n), r = C.getComputedStyle(t), a = 3 < parseInt(r.height), re.removeChild(e)), a
}
}))
}();
var _e = ["Webkit", "Moz", "ms"],
ze = E.createElement("div").style,
Ue = {};
function Xe(e) {
var t = S.cssProps[e] || Ue[e];
return t || (e in ze ? e : Ue[e] = function(e) {
var t = e[0].toUpperCase() + e.slice(1),
n = _e.length;
while (n--)
if ((e = _e[n] + t) in ze) return e
}(e) || e)
}
var Ve = /^(none|table(?!-c[ea]).+)/,
Ge = /^--/,
Ye = {
position: "absolute",
visibility: "hidden",
display: "block"
},
Qe = {
letterSpacing: "0",
fontWeight: "400"
};
function Je(e, t, n) {
var r = te.exec(t);
return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
}
function Ke(e, t, n, r, i, o) {
var a = "width" === t ? 1 : 0,
s = 0,
u = 0;
if (n === (r ? "border" : "content")) return 0;
for (; a < 4; a += 2) "margin" === n && (u += S.css(e, n + ne[a], !0, i)), r ? ("content" === n && (u -= S.css(e, "padding" + ne[a], !0, i)), "margin" !== n && (u -= S.css(e, "border" + ne[a] + "Width", !0, i))) : (u += S.css(e, "padding" + ne[a], !0, i), "padding" !== n ? u += S.css(e, "border" + ne[a] + "Width", !0, i) : s += S.css(e, "border" + ne[a] + "Width", !0, i));
return !r && 0 <= o && (u += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - .5)) || 0), u
}
function Ze(e, t, n) {
var r = Ie(e),
i = (!y.boxSizingReliable() || n) && "border-box" === S.css(e, "boxSizing", !1, r),
o = i,
a = Be(e, t, r),
s = "offset" + t[0].toUpperCase() + t.slice(1);
if (Me.test(a)) {
if (!n) return a;
a = "auto"
}
return (!y.boxSizingReliable() && i || !y.reliableTrDimensions() && A(e, "tr") || "auto" === a || !parseFloat(a) && "inline" === S.css(e, "display", !1, r)) && e.getClientRects().length && (i = "border-box" === S.css(e, "boxSizing", !1, r), (o = s in e) && (a = e[s])), (a = parseFloat(a) || 0) + Ke(e, t, n || (i ? "border" : "content"), o, r, a) + "px"
}
function et(e, t, n, r, i) {
return new et.prototype.init(e, t, n, r, i)
}
S.extend({
cssHooks: {
opacity: {get: function(e, t) {
if (t) {
var n = Be(e, "opacity");
return "" === n ? "1" : n
}
}
}
},
cssNumber: {
animationIterationCount: !0,
columnCount: !0,
fillOpacity: !0,
flexGrow: !0,
flexShrink: !0,
fontWeight: !0,
gridArea: !0,
gridColumn: !0,
gridColumnEnd: !0,
gridColumnStart: !0,
gridRow: !0,
gridRowEnd: !0,
gridRowStart: !0,
lineHeight: !0,
opacity: !0,
order: !0,
orphans: !0,
widows: !0,
zIndex: !0,
zoom: !0
},
cssProps: {},
style: function(e, t, n, r) {
if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
var i, o, a, s = X(t),
u = Ge.test(t),
l = e.style;
if (u || (t = Xe(s)), a = S.cssHooks[t] || S.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t];
"string" === (o = typeof n) && (i = te.exec(n)) && i[1] && (n = se(e, t, i), o = "number"), null != n && n == n && ("number" !== o || u || (n += i && i[3] || (S.cssNumber[s] ? "" : "px")), y.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (u ? l.setProperty(t, n) : l[t] = n))
}
},
css: function(e, t, n, r) {
var i, o, a, s = X(t);
return Ge.test(t) || (t = Xe(s)), (a = S.cssHooks[t] || S.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = Be(e, t, r)), "normal" === i && t in Qe && (i = Qe[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i
}
}), S.each(["height", "width"], function(e, u) {
S.cssHooks[u] = {get: function(e, t, n) {
if (t) return !Ve.test(S.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? Ze(e, u, n) : We(e, Ye, function() {
return Ze(e, u, n)
})
},
set: function(e, t, n) {
var r, i = Ie(e),
o = !y.scrollboxSize() && "absolute" === i.position,
a = (o || n) && "border-box" === S.css(e, "boxSizing", !1, i),
s = n ? Ke(e, u, n, a, i) : 0;
return a && o && (s -= Math.ceil(e["offset" + u[0].toUpperCase() + u.slice(1)] - parseFloat(i[u]) - Ke(e, u, "border", !1, i) - .5)), s && (r = te.exec(t)) && "px" !== (r[3] || "px") && (e.style[u] = t, t = S.css(e, u)), Je(0, t, s)
}
}
}), S.cssHooks.marginLeft = $e(y.reliableMarginLeft, function(e, t) {
if (t) return (parseFloat(Be(e, "marginLeft")) || e.getBoundingClientRect().left - We(e, {
marginLeft: 0
}, function() {
return e.getBoundingClientRect().left
})) + "px"
}), S.each({
margin: "",
padding: "",
border: "Width"
}, function(i, o) {
S.cssHooks[i + o] = {
expand: function(e) {
for (var t = 0, n = {}, r = "string" == typeof e ? e.split(" ") : [e]; t < 4; t++) n[i + ne[t] + o] = r[t] || r[t - 2] || r[0];
return n
}
}, "margin" !== i && (S.cssHooks[i + o].set = Je)
}), S.fn.extend({
css: function(e, t) {
return $(this, function(e, t, n) {
var r, i, o = {},
a = 0;
if (Array.isArray(t)) {
for (r = Ie(e), i = t.length; a < i; a++) o[t[a]] = S.css(e, t[a], !1, r);
return o
}
return void 0 !== n ? S.style(e, t, n) : S.css(e, t)
}, e, t, 1 < arguments.length)
}
}), ((S.Tween = et).prototype = {
constructor: et,
init: function(e, t, n, r, i, o) {
this.elem = e, this.prop = n, this.easing = i || S.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (S.cssNumber[n] ? "" : "px")
},
cur: function() {
var e = et.propHooks[this.prop];
return e && e.get ? e.get(this) : et.propHooks._default.get(this)
},
run: function(e) {
var t, n = et.propHooks[this.prop];
return this.options.duration ? this.pos = t = S.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : et.propHooks._default.set(this), this
}
}).init.prototype = et.prototype, (et.propHooks = {
_default: {get: function(e) {
var t;
return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = S.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
},
set: function(e) {
S.fx.step[e.prop] ? S.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !S.cssHooks[e.prop] && null == e.elem.style[Xe(e.prop)] ? e.elem[e.prop] = e.now : S.style(e.elem, e.prop, e.now + e.unit)
}
}
}).scrollTop = et.propHooks.scrollLeft = {set: function(e) {
e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
}
}, S.easing = {
linear: function(e) {
return e
},
swing: function(e) {
return .5 - Math.cos(e * Math.PI) / 2
},
_default: "swing"
}, S.fx = et.prototype.init, S.fx.step = {};
var tt, nt, rt, it, ot = /^(?:toggle|show|hide)$/,
at = /queueHooks$/;
function st() {
nt && (!1 === E.hidden && C.requestAnimationFrame ? C.requestAnimationFrame(st) : C.setTimeout(st, S.fx.interval), S.fx.tick())
}
function ut() {
return C.setTimeout(function() {
tt = void 0
}), tt = Date.now()
}
function lt(e, t) {
var n, r = 0,
i = {
height: e
};
for (t = t ? 1 : 0; r < 4; r += 2 - t) i["margin" + (n = ne[r])] = i["padding" + n] = e;
return t && (i.opacity = i.width = e), i
}
function ct(e, t, n) {
for (var r, i = (ft.tweeners[t] || []).concat(ft.tweeners["*"]), o = 0, a = i.length; o < a; o++)
if (r = i[o].call(n, t, e)) return r
}
function ft(o, e, t) {
var n, a, r = 0,
i = ft.prefilters.length,
s = S.Deferred().always(function() {
delete u.elem
}),
u = function() {
if (a) return !1;
for (var e = tt || ut(), t = Math.max(0, l.startTime + l.duration - e), n = 1 - (t / l.duration || 0), r = 0, i = l.tweens.length; r < i; r++) l.tweens[r].run(n);
return s.notifyWith(o, [l, n, t]), n < 1 && i ? t : (i || s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l]), !1)
},
l = s.promise({
elem: o,
props: S.extend({}, e),
opts: S.extend(!0, {
specialEasing: {},
easing: S.easing._default
}, t),
originalProperties: e,
originalOptions: t,
startTime: tt || ut(),
duration: t.duration,
tweens: [],
createTween: function(e, t) {
var n = S.Tween(o, l.opts, e, t, l.opts.specialEasing[e] || l.opts.easing);
return l.tweens.push(n), n
},
stop: function(e) {
var t = 0,
n = e ? l.tweens.length : 0;
if (a) return this;
for (a = !0; t < n; t++) l.tweens[t].run(1);
return e ? (s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l, e])) : s.rejectWith(o, [l, e]), this
}
}),
c = l.props;
for (! function(e, t) {
var n, r, i, o, a;
for (n in e)
if (i = t[r = X(n)], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = S.cssHooks[r]) && "expand" in a)
for (n in o = a.expand(o), delete e[r], o) n in e || (e[n] = o[n], t[n] = i);
else t[r] = i
}(c, l.opts.specialEasing); r < i; r++)
if (n = ft.prefilters[r].call(l, o, c, l.opts)) return m(n.stop) && (S._queueHooks(l.elem, l.opts.queue).stop = n.stop.bind(n)), n;
return S.map(c, ct, l), m(l.opts.start) && l.opts.start.call(o, l), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always), S.fx.timer(S.extend(u, {
elem: o,
anim: l,
queue: l.opts.queue
})), l
}
S.Animation = S.extend(ft, {
tweeners: {
"*": [function(e, t) {
var n = this.createTween(e, t);
return se(n.elem, e, te.exec(t), n), n
}]
},
tweener: function(e, t) {
m(e) ? (t = e, e = ["*"]) : e = e.match(P);
for (var n, r = 0, i = e.length; r < i; r++) n = e[r], ft.tweeners[n] = ft.tweeners[n] || [], ft.tweeners[n].unshift(t)
},
prefilters: [function(e, t, n) {
var r, i, o, a, s, u, l, c, f = "width" in t || "height" in t,
p = this,
d = {},
h = e.style,
g = e.nodeType && ae(e),
v = Y.get(e, "fxshow");
for (r in n.queue || (null == (a = S._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function() {
a.unqueued || s()
}), a.unqueued++, p.always(function() {
p.always(function() {
a.unqueued--, S.queue(e, "fx").length || a.empty.fire()
})
})), t)
if (i = t[r], ot.test(i)) {
if (delete t[r], o = o || "toggle" === i, i === (g ? "hide" : "show")) {
if ("show" !== i || !v || void 0 === v[r]) continue;
g = !0
}
d[r] = v && v[r] || S.style(e, r)
}
if ((u = !S.isEmptyObject(t)) || !S.isEmptyObject(d))
for (r in f && 1 === e.nodeType && (n.overflow = [h.overflow, h.overflowX, h.overflowY], null == (l = v && v.display) && (l = Y.get(e, "display")), "none" === (c = S.css(e, "display")) && (l ? c = l : (le([e], !0), l = e.style.display || l, c = S.css(e, "display"), le([e]))), ("inline" === c || "inline-block" === c && null != l) && "none" === S.css(e, "float") && (u || (p.done(function() {
h.display = l
}), null == l && (c = h.display, l = "none" === c ? "" : c)), h.display = "inline-block")), n.overflow && (h.overflow = "hidden", p.always(function() {
h.overflow = n.overflow[0], h.overflowX = n.overflow[1], h.overflowY = n.overflow[2]
})), u = !1, d) u || (v ? "hidden" in v && (g = v.hidden) : v = Y.access(e, "fxshow", {
display: l
}), o && (v.hidden = !g), g && le([e], !0), p.done(function() {
for (r in g || le([e]), Y.remove(e, "fxshow"), d) S.style(e, r, d[r])
})), u = ct(g ? v[r] : 0, r, p), r in v || (v[r] = u.start, g && (u.end = u.start, u.start = 0))
}],
prefilter: function(e, t) {
t ? ft.prefilters.unshift(e) : ft.prefilters.push(e)
}
}), S.speed = function(e, t, n) {
var r = e && "object" == typeof e ? S.extend({}, e) : {
complete: n || !n && t || m(e) && e,
duration: e,
easing: n && t || t && !m(t) && t
};
return S.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in S.fx.speeds ? r.duration = S.fx.speeds[r.duration] : r.duration = S.fx.speeds._default), null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function() {
m(r.old) && r.old.call(this), r.queue && S.dequeue(this, r.queue)
}, r
}, S.fn.extend({
fadeTo: function(e, t, n, r) {
return this.filter(ae).css("opacity", 0).show().end().animate({
opacity: t
}, e, n, r)
},
animate: function(t, e, n, r) {
var i = S.isEmptyObject(t),
o = S.speed(e, n, r),
a = function() {
var e = ft(this, S.extend({}, t), o);
(i || Y.get(this, "finish")) && e.stop(!0)
};
return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
},
stop: function(i, e, o) {
var a = function(e) {
var t = e.stop;
delete e.stop, t(o)
};
return "string" != typeof i && (o = e, e = i, i = void 0), e && this.queue(i || "fx", []), this.each(function() {
var e = !0,
t = null != i && i + "queueHooks",
n = S.timers,
r = Y.get(this);
if (t) r[t] && r[t].stop && a(r[t]);
else
for (t in r) r[t] && r[t].stop && at.test(t) && a(r[t]);
for (t = n.length; t--;) n[t].elem !== this || null != i && n[t].queue !== i || (n[t].anim.stop(o), e = !1, n.splice(t, 1));
!e && o || S.dequeue(this, i)
})
},
finish: function(a) {
return !1 !== a && (a = a || "fx"), this.each(function() {
var e, t = Y.get(this),
n = t[a + "queue"],
r = t[a + "queueHooks"],
i = S.timers,
o = n ? n.length : 0;
for (t.finish = !0, S.queue(this, a, []), r && r.stop && r.stop.call(this, !0), e = i.length; e--;) i[e].elem === this && i[e].queue === a && (i[e].anim.stop(!0), i.splice(e, 1));
for (e = 0; e < o; e++) n[e] && n[e].finish && n[e].finish.call(this);
delete t.finish
})
}
}), S.each(["toggle", "show", "hide"], function(e, r) {
var i = S.fn[r];
S.fn[r] = function(e, t, n) {
return null == e || "boolean" == typeof e ? i.apply(this, arguments) : this.animate(lt(r, !0), e, t, n)
}
}), S.each({
slideDown: lt("show"),
slideUp: lt("hide"),
slideToggle: lt("toggle"),
fadeIn: {
opacity: "show"
},
fadeOut: {
opacity: "hide"
},
fadeToggle: {
opacity: "toggle"
}
}, function(e, r) {
S.fn[e] = function(e, t, n) {
return this.animate(r, e, t, n)
}
}), S.timers = [], S.fx.tick = function() {
var e, t = 0,
n = S.timers;
for (tt = Date.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1);
n.length || S.fx.stop(), tt = void 0
}, S.fx.timer = function(e) {
S.timers.push(e), S.fx.start()
}, S.fx.interval = 13, S.fx.start = function() {
nt || (nt = !0, st())
}, S.fx.stop = function() {
nt = null
}, S.fx.speeds = {
slow: 600,
fast: 200,
_default: 400
}, S.fn.delay = function(r, e) {
return r = S.fx && S.fx.speeds[r] || r, e = e || "fx", this.queue(e, function(e, t) {
var n = C.setTimeout(e, r);
t.stop = function() {
C.clearTimeout(n)
}
})
}, rt = E.createElement("input"), it = E.createElement("select").appendChild(E.createElement("option")), rt.type = "checkbox", y.checkOn = "" !== rt.value, y.optSelected = it.selected, (rt = E.createElement("input")).value = "t", rt.type = "radio", y.radioValue = "t" === rt.value;
var pt, dt = S.expr.attrHandle;
S.fn.extend({
attr: function(e, t) {
return $(this, S.attr, e, t, 1 < arguments.length)
},
removeAttr: function(e) {
return this.each(function() {
S.removeAttr(this, e)
})
}
}), S.extend({
attr: function(e, t, n) {
var r, i, o = e.nodeType;
if (3 !== o && 8 !== o && 2 !== o) return "undefined" == typeof e.getAttribute ? S.prop(e, t, n) : (1 === o && S.isXMLDoc(e) || (i = S.attrHooks[t.toLowerCase()] || (S.expr.match.bool.test(t) ? pt : void 0)), void 0 !== n ? null === n ? void S.removeAttr(e, t) : i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""), n) : i && "get" in i && null !== (r = i.get(e, t)) ? r : null == (r = S.find.attr(e, t)) ? void 0 : r)
},
attrHooks: {
type: {set: function(e, t) {
if (!y.radioValue && "radio" === t && A(e, "input")) {
var n = e.value;
return e.setAttribute("type", t), n && (e.value = n), t
}
}
}
},
removeAttr: function(e, t) {
var n, r = 0,
i = t && t.match(P);
if (i && 1 === e.nodeType)
while (n = i[r++]) e.removeAttribute(n)
}
}), pt = {set: function(e, t, n) {
return !1 === t ? S.removeAttr(e, n) : e.setAttribute(n, n), n
}
}, S.each(S.expr.match.bool.source.match(/\w+/g), function(e, t) {
var a = dt[t] || S.find.attr;
dt[t] = function(e, t, n) {
var r, i, o = t.toLowerCase();
return n || (i = dt[o], dt[o] = r, r = null != a(e, t, n) ? o : null, dt[o] = i), r
}
});
var ht = /^(?:input|select|textarea|button)$/i,
gt = /^(?:a|area)$/i;
function vt(e) {
return (e.match(P) || []).join(" ")
}
function yt(e) {
return e.getAttribute && e.getAttribute("class") || ""
}
function mt(e) {
return Array.isArray(e) ? e : "string" == typeof e && e.match(P) || []
}
S.fn.extend({
prop: function(e, t) {
return $(this, S.prop, e, t, 1 < arguments.length)
},
removeProp: function(e) {
return this.each(function() {
delete this[S.propFix[e] || e]
})
}
}), S.extend({
prop: function(e, t, n) {
var r, i, o = e.nodeType;
if (3 !== o && 8 !== o && 2 !== o) return 1 === o && S.isXMLDoc(e) || (t = S.propFix[t] || t, i = S.propHooks[t]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t]
},
propHooks: {
tabIndex: {get: function(e) {
var t = S.find.attr(e, "tabindex");
return t ? parseInt(t, 10) : ht.test(e.nodeName) || gt.test(e.nodeName) && e.href ? 0 : -1
}
}
},
propFix: {
"for": "htmlFor",
"class": "className"
}
}), y.optSelected || (S.propHooks.selected = {get: function(e) {
var t = e.parentNode;
return t && t.parentNode && t.parentNode.selectedIndex, null
},
set: function(e) {
var t = e.parentNode;
t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
}
}), S.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
S.propFix[this.toLowerCase()] = this
}), S.fn.extend({
addClass: function(t) {
var e, n, r, i, o, a, s, u = 0;
if (m(t)) return this.each(function(e) {
S(this).addClass(t.call(this, e, yt(this)))
});
if ((e = mt(t)).length)
while (n = this[u++])
if (i = yt(n), r = 1 === n.nodeType && " " + vt(i) + " ") {
a = 0;
while (o = e[a++]) r.indexOf(" " + o + " ") < 0 && (r += o + " ");
i !== (s = vt(r)) && n.setAttribute("class", s)
}
return this
},
removeClass: function(t) {
var e, n, r, i, o, a, s, u = 0;
if (m(t)) return this.each(function(e) {
S(this).removeClass(t.call(this, e, yt(this)))
});
if (!arguments.length) return this.attr("class", "");
if ((e = mt(t)).length)
while (n = this[u++])
if (i = yt(n), r = 1 === n.nodeType && " " + vt(i) + " ") {
a = 0;
while (o = e[a++])
while (-1 < r.indexOf(" " + o + " ")) r = r.replace(" " + o + " ", " ");
i !== (s = vt(r)) && n.setAttribute("class", s)
}
return this
},
toggleClass: function(i, t) {
var o = typeof i,
a = "string" === o || Array.isArray(i);
return "boolean" == typeof t && a ? t ? this.addClass(i) : this.removeClass(i) : m(i) ? this.each(function(e) {
S(this).toggleClass(i.call(this, e, yt(this), t), t)
}) : this.each(function() {
var e, t, n, r;
if (a) {
t = 0, n = S(this), r = mt(i);
while (e = r[t++]) n.hasClass(e) ? n.removeClass(e) : n.addClass(e)
} else void 0 !== i && "boolean" !== o || ((e = yt(this)) && Y.set(this, "__className__", e), this.setAttribute && this.setAttribute("class", e || !1 === i ? "" : Y.get(this, "__className__") || ""))
})
},
hasClass: function(e) {
var t, n, r = 0;
t = " " + e + " ";
while (n = this[r++])
if (1 === n.nodeType && -1 < (" " + vt(yt(n)) + " ").indexOf(t)) return !0;
return !1
}
});
var xt = /\r/g;
S.fn.extend({
val: function(n) {
var r, e, i, t = this[0];
return arguments.length ? (i = m(n), this.each(function(e) {
var t;
1 === this.nodeType && (null == (t = i ? n.call(this, e, S(this).val()) : n) ? t = "" : "number" == typeof t ? t += "" : Array.isArray(t) && (t = S.map(t, function(e) {
return null == e ? "" : e + ""
})), (r = S.valHooks[this.type] || S.valHooks[this.nodeName.toLowerCase()]) && "set" in r && void 0 !== r.set(this, t, "value") || (this.value = t))
})) : t ? (r = S.valHooks[t.type] || S.valHooks[t.nodeName.toLowerCase()]) && "get" in r && void 0 !== (e = r.get(t, "value")) ? e : "string" == typeof(e = t.value) ? e.replace(xt, "") : null == e ? "" : e : void 0
}
}), S.extend({
valHooks: {
option: {get: function(e) {
var t = S.find.attr(e, "value");
return null != t ? t : vt(S.text(e))
}
},
select: {get: function(e) {
var t, n, r, i = e.options,
o = e.selectedIndex,
a = "select-one" === e.type,
s = a ? null : [],
u = a ? o + 1 : i.length;
for (r = o < 0 ? u : a ? o : 0; r < u; r++)
if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !A(n.parentNode, "optgroup"))) {
if (t = S(n).val(), a) return t;
s.push(t)
}
return s
},
set: function(e, t) {
var n, r, i = e.options,
o = S.makeArray(t),
a = i.length;
while (a--)((r = i[a]).selected = -1 < S.inArray(S.valHooks.option.get(r), o)) && (n = !0);
return n || (e.selectedIndex = -1), o
}
}
}
}), S.each(["radio", "checkbox"], function() {
S.valHooks[this] = {set: function(e, t) {
if (Array.isArray(t)) return e.checked = -1 < S.inArray(S(e).val(), t)
}
}, y.checkOn || (S.valHooks[this].get = function(e) {
return null === e.getAttribute("value") ? "on" : e.value
})
}), y.focusin = "onfocusin" in C;
var bt = /^(?:focusinfocus|focusoutblur)$/,
wt = function(e) {
e.stopPropagation()
};
S.extend(S.event, {
trigger: function(e, t, n, r) {
var i, o, a, s, u, l, c, f, p = [n || E],
d = v.call(e, "type") ? e.type : e,
h = v.call(e, "namespace") ? e.namespace.split(".") : [];
if (o = f = a = n = n || E, 3 !== n.nodeType && 8 !== n.nodeType && !bt.test(d + S.event.triggered) && (-1 < d.indexOf(".") && (d = (h = d.split(".")).shift(), h.sort()), u = d.indexOf(":") < 0 && "on" + d, (e = e[S.expando] ? e : new S.Event(d, "object" == typeof e && e)).isTrigger = r ? 2 : 3, e.namespace = h.join("."), e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = n), t = null == t ? [e] : S.makeArray(t, [e]), c = S.event.special[d] || {}, r || !c.trigger || !1 !== c.trigger.apply(n, t))) {
if (!r && !c.noBubble && !x(n)) {
for (s = c.delegateType || d, bt.test(s + d) || (o = o.parentNode); o; o = o.parentNode) p.push(o), a = o;
a === (n.ownerDocument || E) && p.push(a.defaultView || a.parentWindow || C)
}
i = 0;
while ((o = p[i++]) && !e.isPropagationStopped()) f = o, e.type = 1 < i ? s : c.bindType || d, (l = (Y.get(o, "events") || Object.create(null))[e.type] && Y.get(o, "handle")) && l.apply(o, t), (l = u && o[u]) && l.apply && V(o) && (e.result = l.apply(o, t), !1 === e.result && e.preventDefault());
return e.type = d, r || e.isDefaultPrevented() || c._default && !1 !== c._default.apply(p.pop(), t) || !V(n) || u && m(n[d]) && !x(n) && ((a = n[u]) && (n[u] = null), S.event.triggered = d, e.isPropagationStopped() && f.addEventListener(d, wt), n[d](), e.isPropagationStopped() && f.removeEventListener(d, wt), S.event.triggered = void 0, a && (n[u] = a)), e.result
}
},
simulate: function(e, t, n) {
var r = S.extend(new S.Event, n, {
type: e,
isSimulated: !0
});
S.event.trigger(r, null, t)
}
}), S.fn.extend({
trigger: function(e, t) {
return this.each(function() {
S.event.trigger(e, t, this)
})
},
triggerHandler: function(e, t) {
var n = this[0];
if (n) return S.event.trigger(e, t, n, !0)
}
}), y.focusin || S.each({
focus: "focusin",
blur: "focusout"
}, function(n, r) {
var i = function(e) {
S.event.simulate(r, e.target, S.event.fix(e))
};
S.event.special[r] = {
setup: function() {
var e = this.ownerDocument || this.document || this,
t = Y.access(e, r);
t || e.addEventListener(n, i, !0), Y.access(e, r, (t || 0) + 1)
},
teardown: function() {
var e = this.ownerDocument || this.document || this,
t = Y.access(e, r) - 1;
t ? Y.access(e, r, t) : (e.removeEventListener(n, i, !0), Y.remove(e, r))
}
}
});
var Tt = C.location,
Ct = {
guid: Date.now()
},
Et = /\?/;
S.parseXML = function(e) {
var t;
if (!e || "string" != typeof e) return null;
try {
t = (new C.DOMParser).parseFromString(e, "text/xml")
} catch (e) {
t = void 0
}
return t && !t.getElementsByTagName("parsererror").length || S.error("Invalid XML: " + e), t
};
var St = /\[\]$/,
kt = /\r?\n/g,
At = /^(?:submit|button|image|reset|file)$/i,
Nt = /^(?:input|select|textarea|keygen)/i;
function Dt(n, e, r, i) {
var t;
if (Array.isArray(e)) S.each(e, function(e, t) {
r || St.test(n) ? i(n, t) : Dt(n + "[" + ("object" == typeof t && null != t ? e : "") + "]", t, r, i)
});
else if (r || "object" !== w(e)) i(n, e);
else
for (t in e) Dt(n + "[" + t + "]", e[t], r, i)
}
S.param = function(e, t) {
var n, r = [],
i = function(e, t) {
var n = m(t) ? t() : t;
r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
};
if (null == e) return "";
if (Array.isArray(e) || e.jquery && !S.isPlainObject(e)) S.each(e, function() {
i(this.name, this.value)
});
else
for (n in e) Dt(n, e[n], t, i);
return r.join("&")
}, S.fn.extend({
serialize: function() {
return S.param(this.serializeArray())
},
serializeArray: function() {
return this.map(function() {
var e = S.prop(this, "elements");
return e ? S.makeArray(e) : this
}).filter(function() {
var e = this.type;
return this.name && !S(this).is(":disabled") && Nt.test(this.nodeName) && !At.test(e) && (this.checked || !pe.test(e))
}).map(function(e, t) {
var n = S(this).val();
return null == n ? null : Array.isArray(n) ? S.map(n, function(e) {
return {
name: t.name,
value: e.replace(kt, "\r\n")
}
}) : {
name: t.name,
value: n.replace(kt, "\r\n")
}
}).get()
}
});
var jt = /%20/g,
qt = /#.*$/,
Lt = /([?&])_=[^&]*/,
Ht = /^(.*?):[ \t]*([^\r\n]*)$/gm,
Ot = /^(?:GET|HEAD)$/,
Pt = /^\/\//,
Rt = {},
Mt = {},
It = "*/".concat("*"),
Wt = E.createElement("a");
function Ft(o) {
return function(e, t) {
"string" != typeof e && (t = e, e = "*");
var n, r = 0,
i = e.toLowerCase().match(P) || [];
if (m(t))
while (n = i[r++]) "+" === n[0] ? (n = n.slice(1) || "*", (o[n] = o[n] || []).unshift(t)) : (o[n] = o[n] || []).push(t)
}
}
function Bt(t, i, o, a) {
var s = {},
u = t === Mt;
function l(e) {
var r;
return s[e] = !0, S.each(t[e] || [], function(e, t) {
var n = t(i, o, a);
return "string" != typeof n || u || s[n] ? u ? !(r = n) : void 0 : (i.dataTypes.unshift(n), l(n), !1)
}), r
}
return l(i.dataTypes[0]) || !s["*"] && l("*")
}
function $t(e, t) {
var n, r, i = S.ajaxSettings.flatOptions || {};
for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
return r && S.extend(!0, e, r), e
}
Wt.href = Tt.href, S.extend({
active: 0,
lastModified: {},
etag: {},
ajaxSettings: {
url: Tt.href,
type: "GET",
isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),
global: !0,
processData: !0,
async: !0,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
accepts: {
"*": It,
text: "text/plain",
html: "text/html",
xml: "application/xml, text/xml",
json: "application/json, text/javascript"
},
contents: {
xml: /\bxml\b/,
html: /\bhtml/,
json: /\bjson\b/
},
responseFields: {
xml: "responseXML",
text: "responseText",
json: "responseJSON"
},
converters: {
"* text": String,
"text html": !0,
"text json": JSON.parse,
"text xml": S.parseXML
},
flatOptions: {
url: !0,
context: !0
}
},
ajaxSetup: function(e, t) {
return t ? $t($t(e, S.ajaxSettings), t) : $t(S.ajaxSettings, e)
},
ajaxPrefilter: Ft(Rt),
ajaxTransport: Ft(Mt),
ajax: function(e, t) {
"object" == typeof e && (t = e, e = void 0), t = t || {};
var c, f, p, n, d, r, h, g, i, o, v = S.ajaxSetup({}, t),
y = v.context || v,
m = v.context && (y.nodeType || y.jquery) ? S(y) : S.event,
x = S.Deferred(),
b = S.Callbacks("once memory"),
w = v.statusCode || {},
a = {},
s = {},
u = "canceled",
T = {
readyState: 0,
getResponseHeader: function(e) {
var t;
if (h) {
if (!n) {
n = {};
while (t = Ht.exec(p)) n[t[1].toLowerCase() + " "] = (n[t[1].toLowerCase() + " "] || []).concat(t[2])
}
t = n[e.toLowerCase() + " "]
}
return null == t ? null : t.join(", ")
},
getAllResponseHeaders: function() {
return h ? p : null
},
setRequestHeader: function(e, t) {
return null == h && (e = s[e.toLowerCase()] = s[e.toLowerCase()] || e, a[e] = t), this
},
overrideMimeType: function(e) {
return null == h && (v.mimeType = e), this
},
statusCode: function(e) {
var t;
if (e)
if (h) T.always(e[T.status]);
else
for (t in e) w[t] = [w[t], e[t]];
return this
},
abort: function(e) {
var t = e || u;
return c && c.abort(t), l(0, t), this
}
};
if (x.promise(T), v.url = ((e || v.url || Tt.href) + "").replace(Pt, Tt.protocol + "//"), v.type = t.method || t.type || v.method || v.type, v.dataTypes = (v.dataType || "*").toLowerCase().match(P) || [""], null == v.crossDomain) {
r = E.createElement("a");
try {
r.href = v.url, r.href = r.href, v.crossDomain = Wt.protocol + "//" + Wt.host != r.protocol + "//" + r.host
} catch (e) {
v.crossDomain = !0
}
}
if (v.data && v.processData && "string" != typeof v.data && (v.data = S.param(v.data, v.traditional)), Bt(Rt, v, t, T), h) return T;
for (i in (g = S.event && v.global) && 0 == S.active++ && S.event.trigger("ajaxStart"), v.type = v.type.toUpperCase(), v.hasContent = !Ot.test(v.type), f = v.url.replace(qt, ""), v.hasContent ? v.data && v.processData && 0 === (v.contentType || "").indexOf("application/x-www-form-urlencoded") && (v.data = v.data.replace(jt, "+")) : (o = v.url.slice(f.length), v.data && (v.processData || "string" == typeof v.data) && (f += (Et.test(f) ? "&" : "?") + v.data, delete v.data), !1 === v.cache && (f = f.replace(Lt, "$1"), o = (Et.test(f) ? "&" : "?") + "_=" + Ct.guid++ +o), v.url = f + o), v.ifModified && (S.lastModified[f] && T.setRequestHeader("If-Modified-Since", S.lastModified[f]), S.etag[f] && T.setRequestHeader("If-None-Match", S.etag[f])), (v.data && v.hasContent && !1 !== v.contentType || t.contentType) && T.setRequestHeader("Content-Type", v.contentType), T.setRequestHeader("Accept", v.dataTypes[0] && v.accepts[v.dataTypes[0]] ? v.accepts[v.dataTypes[0]] + ("*" !== v.dataTypes[0] ? ", " + It + "; q=0.01" : "") : v.accepts["*"]), v.headers) T.setRequestHeader(i, v.headers[i]);
if (v.beforeSend && (!1 === v.beforeSend.call(y, T, v) || h)) return T.abort();
if (u = "abort", b.add(v.complete), T.done(v.success), T.fail(v.error), c = Bt(Mt, v, t, T)) {
if (T.readyState = 1, g && m.trigger("ajaxSend", [T, v]), h) return T;
v.async && 0 < v.timeout && (d = C.setTimeout(function() {
T.abort("timeout")
}, v.timeout));
try {
h = !1, c.send(a, l)
} catch (e) {
if (h) throw e;
l(-1, e)
}
} else l(-1, "No Transport");
function l(e, t, n, r) {
var i, o, a, s, u, l = t;
h || (h = !0, d && C.clearTimeout(d), c = void 0, p = r || "", T.readyState = 0 < e ? 4 : 0, i = 200 <= e && e < 300 || 304 === e, n && (s = function(e, t, n) {
var r, i, o, a, s = e.contents,
u = e.dataTypes;
while ("*" === u[0]) u.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
if (r)
for (i in s)
if (s[i] && s[i].test(r)) {
u.unshift(i);
break
}
if (u[0] in n) o = u[0];
else {
for (i in n) {
if (!u[0] || e.converters[i + " " + u[0]]) {
o = i;
break
}
a || (a = i)
}
o = o || a
}
if (o) return o !== u[0] && u.unshift(o), n[o]
}(v, T, n)), !i && -1 < S.inArray("script", v.dataTypes) && (v.converters["text script"] = function() {}), s = function(e, t, n, r) {
var i, o, a, s, u, l = {},
c = e.dataTypes.slice();
if (c[1])
for (a in e.converters) l[a.toLowerCase()] = e.converters[a];
o = c.shift();
while (o)
if (e.responseFields[o] && (n[e.responseFields[o]] = t), !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), u = o, o = c.shift())
if ("*" === o) o = u;
else if ("*" !== u && u !== o) {
if (!(a = l[u + " " + o] || l["* " + o]))
for (i in l)
if ((s = i.split(" "))[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]])) {
!0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], c.unshift(s[1]));
break
}
if (!0 !== a)
if (a && e["throws"]) t = a(t);
else try {
t = a(t)
} catch (e) {
return {
state: "parsererror",
error: a ? e : "No conversion from " + u + " to " + o
}
}
}
return {
state: "success",
data: t
}
}(v, s, T, i), i ? (v.ifModified && ((u = T.getResponseHeader("Last-Modified")) && (S.lastModified[f] = u), (u = T.getResponseHeader("etag")) && (S.etag[f] = u)), 204 === e || "HEAD" === v.type ? l = "nocontent" : 304 === e ? l = "notmodified" : (l = s.state, o = s.data, i = !(a = s.error))) : (a = l, !e && l || (l = "error", e < 0 && (e = 0))), T.status = e, T.statusText = (t || l) + "", i ? x.resolveWith(y, [o, l, T]) : x.rejectWith(y, [T, l, a]), T.statusCode(w), w = void 0, g && m.trigger(i ? "ajaxSuccess" : "ajaxError", [T, v, i ? o : a]), b.fireWith(y, [T, l]), g && (m.trigger("ajaxComplete", [T, v]), --S.active || S.event.trigger("ajaxStop")))
}
return T
},
getJSON: function(e, t, n) {
return S.get(e, t, n, "json")
},
getScript: function(e, t) {
return S.get(e, void 0, t, "script")
}
}), S.each(["get", "post"], function(e, i) {
S[i] = function(e, t, n, r) {
return m(t) && (r = r || n, n = t, t = void 0), S.ajax(S.extend({
url: e,
type: i,
dataType: r,
data: t,
success: n
}, S.isPlainObject(e) && e))
}
}), S.ajaxPrefilter(function(e) {
var t;
for (t in e.headers) "content-type" === t.toLowerCase() && (e.contentType = e.headers[t] || "")
}), S._evalUrl = function(e, t, n) {
return S.ajax({
url: e,
type: "GET",
dataType: "script",
cache: !0,
async: !1,
global: !1,
converters: {
"text script": function() {}
},
dataFilter: function(e) {
S.globalEval(e, t, n)
}
})
}, S.fn.extend({
wrapAll: function(e) {
var t;
return this[0] && (m(e) && (e = e.call(this[0])), t = S(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
var e = this;
while (e.firstElementChild) e = e.firstElementChild;
return e
}).append(this)), this
},
wrapInner: function(n) {
return m(n) ? this.each(function(e) {
S(this).wrapInner(n.call(this, e))
}) : this.each(function() {
var e = S(this),
t = e.contents();
t.length ? t.wrapAll(n) : e.append(n)
})
},
wrap: function(t) {
var n = m(t);
return this.each(function(e) {
S(this).wrapAll(n ? t.call(this, e) : t)
})
},
unwrap: function(e) {
return this.parent(e).not("body").each(function() {
S(this).replaceWith(this.childNodes)
}), this
}
}), S.expr.pseudos.hidden = function(e) {
return !S.expr.pseudos.visible(e)
}, S.expr.pseudos.visible = function(e) {
return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
}, S.ajaxSettings.xhr = function() {
try {
return new C.XMLHttpRequest
} catch (e) {}
};
var _t = {
0: 200,
1223: 204
},
zt = S.ajaxSettings.xhr();
y.cors = !!zt && "withCredentials" in zt, y.ajax = zt = !!zt, S.ajaxTransport(function(i) {
var o, a;
if (y.cors || zt && !i.crossDomain) return {
send: function(e, t) {
var n, r = i.xhr();
if (r.open(i.type, i.url, i.async, i.username, i.password), i.xhrFields)
for (n in i.xhrFields) r[n] = i.xhrFields[n];
for (n in i.mimeType && r.overrideMimeType && r.overrideMimeType(i.mimeType), i.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest"), e) r.setRequestHeader(n, e[n]);
o = function(e) {
return function() {
o && (o = a = r.onload = r.onerror = r.onabort = r.ontimeout = r.onreadystatechange = null, "abort" === e ? r.abort() : "error" === e ? "number" != typeof r.status ? t(0, "error") : t(r.status, r.statusText) : t(_t[r.status] || r.status, r.statusText, "text" !== (r.responseType || "text") || "string" != typeof r.responseText ? {
binary: r.response
} : {
text: r.responseText
}, r.getAllResponseHeaders()))
}
}, r.onload = o(), a = r.onerror = r.ontimeout = o("error"), void 0 !== r.onabort ? r.onabort = a : r.onreadystatechange = function() {
4 === r.readyState && C.setTimeout(function() {
o && a()
})
}, o = o("abort");
try {
r.send(i.hasContent && i.data || null)
} catch (e) {
if (o) throw e
}
},
abort: function() {
o && o()
}
}
}), S.ajaxPrefilter(function(e) {
e.crossDomain && (e.contents.script = !1)
}), S.ajaxSetup({
accepts: {
script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
},
contents: {
script: /\b(?:java|ecma)script\b/
},
converters: {
"text script": function(e) {
return S.globalEval(e), e
}
}
}), S.ajaxPrefilter("script", function(e) {
void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
}), S.ajaxTransport("script", function(n) {
var r, i;
if (n.crossDomain || n.scriptAttrs) return {
send: function(e, t) {
r = S("<script>").attr(n.scriptAttrs || {}).prop({
charset: n.scriptCharset,
src: n.url
}).on("load error", i = function(e) {
r.remove(), i = null, e && t("error" === e.type ? 404 : 200, e.type)
}), E.head.appendChild(r[0])
},
abort: function() {
i && i()
}
}
});
var Ut, Xt = [],
Vt = /(=)\?(?=&|$)|\?\?/;
S.ajaxSetup({
jsonp: "callback",
jsonpCallback: function() {
var e = Xt.pop() || S.expando + "_" + Ct.guid++;
return this[e] = !0, e
}
}), S.ajaxPrefilter("json jsonp", function(e, t, n) {
var r, i, o, a = !1 !== e.jsonp && (Vt.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Vt.test(e.data) && "data");
if (a || "jsonp" === e.dataTypes[0]) return r = e.jsonpCallback = m(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback, a ? e[a] = e[a].replace(Vt, "$1" + r) : !1 !== e.jsonp && (e.url += (Et.test(e.url) ? "&" : "?") + e.jsonp + "=" + r), e.converters["script json"] = function() {
return o || S.error(r + " was not called"), o[0]
}, e.dataTypes[0] = "json", i = C[r], C[r] = function() {
o = arguments
}, n.always(function() {
void 0 === i ? S(C).removeProp(r) : C[r] = i, e[r] && (e.jsonpCallback = t.jsonpCallback, Xt.push(r)), o && m(i) && i(o[0]), o = i = void 0
}), "script"
}), y.createHTMLDocument = ((Ut = E.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>", 2 === Ut.childNodes.length), S.parseHTML = function(e, t, n) {
return "string" != typeof e ? [] : ("boolean" == typeof t && (n = t, t = !1), t || (y.createHTMLDocument ? ((r = (t = E.implementation.createHTMLDocument("")).createElement("base")).href = E.location.href, t.head.appendChild(r)) : t = E), o = !n && [], (i = N.exec(e)) ? [t.createElement(i[1])] : (i = xe([e], t, o), o && o.length && S(o).remove(), S.merge([], i.childNodes)));
var r, i, o
}, S.fn.load = function(e, t, n) {
var r, i, o, a = this,
s = e.indexOf(" ");
return -1 < s && (r = vt(e.slice(s)), e = e.slice(0, s)), m(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), 0 < a.length && S.ajax({
url: e,
type: i || "GET",
dataType: "html",
data: t
}).done(function(e) {
o = arguments, a.html(r ? S("<div>").append(S.parseHTML(e)).find(r) : e)
}).always(n && function(e, t) {
a.each(function() {
n.apply(this, o || [e.responseText, t, e])
})
}), this
}, S.expr.pseudos.animated = function(t) {
return S.grep(S.timers, function(e) {
return t === e.elem
}).length
}, S.offset = {
setOffset: function(e, t, n) {
var r, i, o, a, s, u, l = S.css(e, "position"),
c = S(e),
f = {};
"static" === l && (e.style.position = "relative"), s = c.offset(), o = S.css(e, "top"), u = S.css(e, "left"), ("absolute" === l || "fixed" === l) && -1 < (o + u).indexOf("auto") ? (a = (r = c.position()).top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(u) || 0), m(t) && (t = t.call(e, n, S.extend({}, s))), null != t.top && (f.top = t.top - s.top + a), null != t.left && (f.left = t.left - s.left + i), "using" in t ? t.using.call(e, f) : ("number" == typeof f.top && (f.top += "px"), "number" == typeof f.left && (f.left += "px"), c.css(f))
}
}, S.fn.extend({
offset: function(t) {
if (arguments.length) return void 0 === t ? this : this.each(function(e) {
S.offset.setOffset(this, t, e)
});
var e, n, r = this[0];
return r ? r.getClientRects().length ? (e = r.getBoundingClientRect(), n = r.ownerDocument.defaultView, {
top: e.top + n.pageYOffset,
left: e.left + n.pageXOffset
}) : {
top: 0,
left: 0
} : void 0
},
position: function() {
if (this[0]) {
var e, t, n, r = this[0],
i = {
top: 0,
left: 0
};
if ("fixed" === S.css(r, "position")) t = r.getBoundingClientRect();
else {
t = this.offset(), n = r.ownerDocument, e = r.offsetParent || n.documentElement;
while (e && (e === n.body || e === n.documentElement) && "static" === S.css(e, "position")) e = e.parentNode;
e && e !== r && 1 === e.nodeType && ((i = S(e).offset()).top += S.css(e, "borderTopWidth", !0), i.left += S.css(e, "borderLeftWidth", !0))
}
return {
top: t.top - i.top - S.css(r, "marginTop", !0),
left: t.left - i.left - S.css(r, "marginLeft", !0)
}
}
},
offsetParent: function() {
return this.map(function() {
var e = this.offsetParent;
while (e && "static" === S.css(e, "position")) e = e.offsetParent;
return e || re
})
}
}), S.each({
scrollLeft: "pageXOffset",
scrollTop: "pageYOffset"
}, function(t, i) {
var o = "pageYOffset" === i;
S.fn[t] = function(e) {
return $(this, function(e, t, n) {
var r;
if (x(e) ? r = e : 9 === e.nodeType && (r = e.defaultView), void 0 === n) return r ? r[i] : e[t];
r ? r.scrollTo(o ? r.pageXOffset : n, o ? n : r.pageYOffset) : e[t] = n
}, t, e, arguments.length)
}
}), S.each(["top", "left"], function(e, n) {
S.cssHooks[n] = $e(y.pixelPosition, function(e, t) {
if (t) return t = Be(e, n), Me.test(t) ? S(e).position()[n] + "px" : t
})
}), S.each({
Height: "height",
Width: "width"
}, function(a, s) {
S.each({
padding: "inner" + a,
content: s,
"": "outer" + a
}, function(r, o) {
S.fn[o] = function(e, t) {
var n = arguments.length && (r || "boolean" != typeof e),
i = r || (!0 === e || !0 === t ? "margin" : "border");
return $(this, function(e, t, n) {
var r;
return x(e) ? 0 === o.indexOf("outer") ? e["inner" + a] : e.document.documentElement["client" + a] : 9 === e.nodeType ? (r = e.documentElement, Math.max(e.body["scroll" + a], r["scroll" + a], e.body["offset" + a], r["offset" + a], r["client" + a])) : void 0 === n ? S.css(e, t, i) : S.style(e, t, n, i)
}, s, n ? e : void 0, n)
}
})
}), S.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
S.fn[t] = function(e) {
return this.on(t, e)
}
}), S.fn.extend({
bind: function(e, t, n) {
return this.on(e, null, t, n)
},
unbind: function(e, t) {
return this.off(e, null, t)
},
delegate: function(e, t, n, r) {
return this.on(t, e, n, r)
},
undelegate: function(e, t, n) {
return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
},
hover: function(e, t) {
return this.mouseenter(e).mouseleave(t || e)
}
}), S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(e, n) {
S.fn[n] = function(e, t) {
return 0 < arguments.length ? this.on(n, null, e, t) : this.trigger(n)
}
});
var Gt = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
S.proxy = function(e, t) {
var n, r, i;
if ("string" == typeof t && (n = e[t], t = e, e = n), m(e)) return r = s.call(arguments, 2), (i = function() {
return e.apply(t || this, r.concat(s.call(arguments)))
}).guid = e.guid = e.guid || S.guid++, i
}, S.holdReady = function(e) {
e ? S.readyWait++ : S.ready(!0)
}, S.isArray = Array.isArray, S.parseJSON = JSON.parse, S.nodeName = A, S.isFunction = m, S.isWindow = x, S.camelCase = X, S.type = w, S.now = Date.now, S.isNumeric = function(e) {
var t = S.type(e);
return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
}, S.trim = function(e) {
return null == e ? "" : (e + "").replace(Gt, "")
}, "function" == typeof define && define.amd && define("jquery", [], function() {
return S
});
var Yt = C.jQuery,
Qt = C.$;
return S.noConflict = function(e) {
return C.$ === S && (C.$ = Qt), e && C.jQuery === S && (C.jQuery = Yt), S
}, "undefined" == typeof e && (C.jQuery = C.$ = S), S
});
/*!
* jQuery Validation Plugin v1.14.0
*
* http://jqueryvalidation.org/
*
* Copyright (c) 2015 J�rn Zaefferer
* Released under the MIT license
*/
(function(factory) {
if (typeof define === "function" && define.amd) {
define(["jquery"], factory);
} else {
factory(jQuery);
}
})(function($) {
$.extend($.fn, {
// http://jqueryvalidation.org/validate/
validate: function(options) {
// if nothing is selected, return nothing; can't chain anyway
if (!this.length) {
if (options && options.debug && window.console) {
console.warn(
"Nothing selected, can't validate, returning nothing."
);
}
return;
}
// check if a validator for this form was already created
var validator = $.data(this[0], "validator");
if (validator) {
return validator;
}
// Add novalidate tag if HTML5.
this.attr("novalidate", "novalidate");
validator = new $.validator(options, this[0]);
$.data(this[0], "validator", validator);
if (validator.settings.onsubmit) {
this.on("click.validate", ":submit", function(event) {
if (validator.settings.submitHandler) {
validator.submitButton = event.target;
}
// allow suppressing validation by adding a cancel class to the submit button
if ($(this).hasClass("cancel")) {
validator.cancelSubmit = true;
}
// allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
if ($(this).attr("formnovalidate") !== undefined) {
validator.cancelSubmit = true;
}
});
// validate the form on submit
this.on("submit.validate", function(event) {
if (validator.settings.debug) {
// prevent form submit to be able to see console output
event.preventDefault();
}
function handle() {
var hidden, result;
if (validator.settings.submitHandler) {
if (validator.submitButton) {
// insert a hidden input as a replacement for the missing submit button
hidden = $("<input type='hidden'/>")
.attr("name", validator.submitButton.name)
.val($(validator.submitButton).val())
.appendTo(validator.currentForm);
}
result = validator.settings.submitHandler.call(
validator,
validator.currentForm,
event
);
if (validator.submitButton) {
// and clean up afterwards; thanks to no-block-scope, hidden can be referenced
hidden.remove();
}
if (result !== undefined) {
return result;
}
return false;
}
return true;
}
// prevent submit for invalid forms or custom submit handlers
if (validator.cancelSubmit) {
validator.cancelSubmit = false;
return handle();
}
if (validator.form()) {
if (validator.pendingRequest) {
validator.formSubmitted = true;
return false;
}
return handle();
} else {
validator.focusInvalid();
return false;
}
});
}
return validator;
},
// http://jqueryvalidation.org/valid/
valid: function() {
var valid, validator, errorList;
if ($(this[0]).is("form")) {
valid = this.validate().form();
} else {
errorList = [];
valid = true;
validator = $(this[0].form).validate();
this.each(function() {
valid = validator.element(this) && valid;
errorList = errorList.concat(validator.errorList);
});
validator.errorList = errorList;
}
return valid;
},
// http://jqueryvalidation.org/rules/
rules: function(command, argument) {
var element = this[0],
settings,
staticRules,
existingRules,
data,
param,
filtered;
if (command) {
settings = $.data(element.form, "validator").settings;
staticRules = settings.rules;
existingRules = $.validator.staticRules(element);
switch (command) {
case "add":
$.extend(
existingRules,
$.validator.normalizeRule(argument)
);
// remove messages from rules, but allow them to be set separately
delete existingRules.messages;
staticRules[element.name] = existingRules;
if (argument.messages) {
settings.messages[element.name] = $.extend(
settings.messages[element.name],
argument.messages
);
}
break;
case "remove":
if (!argument) {
delete staticRules[element.name];
return existingRules;
}
filtered = {};
$.each(argument.split(/\s/), function(index, method) {
filtered[method] = existingRules[method];
delete existingRules[method];
if (method === "required") {
$(element).removeAttr("aria-required");
}
});
return filtered;
}
}
data = $.validator.normalizeRules(
$.extend({},
$.validator.classRules(element),
$.validator.attributeRules(element),
$.validator.dataRules(element),
$.validator.staticRules(element)
),
element
);
// make sure required is at front
if (data.required) {
param = data.required;
delete data.required;
data = $.extend({
required: param
}, data);
$(element).attr("aria-required", "true");
}
// make sure remote is at back
if (data.remote) {
param = data.remote;
delete data.remote;
data = $.extend(data, {
remote: param
});
}
return data;
}
});
// Custom selectors
$.extend($.expr[":"], {
// http://jqueryvalidation.org/blank-selector/
blank: function(a) {
return !$.trim("" + $(a).val());
},
// http://jqueryvalidation.org/filled-selector/
filled: function(a) {
return !!$.trim("" + $(a).val());
},
// http://jqueryvalidation.org/unchecked-selector/
unchecked: function(a) {
return !$(a).prop("checked");
}
});
// constructor for validator
$.validator = function(options, form) {
this.settings = $.extend(true, {}, $.validator.defaults, options);
this.currentForm = form;
this.init();
};
// http://jqueryvalidation.org/jQuery.validator.format/
$.validator.format = function(source, params) {
if (arguments.length === 1) {
return function() {
var args = $.makeArray(arguments);
args.unshift(source);
return $.validator.format.apply(this, args);
};
}
if (arguments.length > 2 && params.constructor !== Array) {
params = $.makeArray(arguments).slice(1);
}
if (params.constructor !== Array) {
params = [params];
}
$.each(params, function(i, n) {
source = source.replace(
new RegExp("\\{" + i + "\\}", "g"),
function() {
return n;
}
);
});
return source;
};
$.extend($.validator, {
defaults: {
messages: {},
groups: {},
rules: {},
errorClass: "error",
validClass: "valid",
errorElement: "label",
focusCleanup: false,
focusInvalid: true,
errorContainer: $([]),
errorLabelContainer: $([]),
onsubmit: true,
ignore: ":hidden",
ignoreTitle: false,
onfocusin: function(element) {
this.lastActive = element;
// Hide error label and remove error class on focus if enabled
if (this.settings.focusCleanup) {
if (this.settings.unhighlight) {
this.settings.unhighlight.call(
this,
element,
this.settings.errorClass,
this.settings.validClass
);
}
this.hideThese(this.errorsFor(element));
}
},
onfocusout: function(element) {
if (!this.checkable(element) &&
(element.name in this.submitted || !this.optional(element))
) {
this.element(element);
}
},
onkeyup: function(element, event) {
// Avoid revalidate the field when pressing one of the following keys
// Shift => 16
// Ctrl => 17
// Alt => 18
// Caps lock => 20
// End => 35
// Home => 36
// Left arrow => 37
// Up arrow => 38
// Right arrow => 39
// Down arrow => 40
// Insert => 45
// Num lock => 144
// AltGr key => 225
var excludedKeys = [
16,
17,
18,
20,
35,
36,
37,
38,
39,
40,
45,
144,
225
];
if (
(event.which === 9 && this.elementValue(element) === "") ||
$.inArray(event.keyCode, excludedKeys) !== -1
) {
return;
} else if (
element.name in this.submitted ||
element === this.lastElement
) {
this.element(element);
}
},
onclick: function(element) {
// click on selects, radiobuttons and checkboxes
if (element.name in this.submitted) {
this.element(element);
// or option elements, check parent select in that case
} else if (element.parentNode.name in this.submitted) {
this.element(element.parentNode);
}
},
highlight: function(element, errorClass, validClass) {
if (element.type === "radio") {
this.findByName(element.name)
.addClass(errorClass)
.removeClass(validClass);
} else {
$(element)
.addClass(errorClass)
.removeClass(validClass);
}
},
unhighlight: function(element, errorClass, validClass) {
if (element.type === "radio") {
this.findByName(element.name)
.removeClass(errorClass)
.addClass(validClass);
} else {
$(element)
.removeClass(errorClass)
.addClass(validClass);
}
}
},
// http://jqueryvalidation.org/jQuery.validator.setDefaults/
setDefaults: function(settings) {
$.extend($.validator.defaults, settings);
},
messages: {
required: "This field is required.",
remote: "Please fix this field.",
email: "Please enter a valid email address.",
url: "Please enter a valid URL.",
date: "Please enter a valid date.",
dateISO: "Please enter a valid date ( ISO ).",
number: "Please enter a valid number.",
digits: "Please enter only digits.",
creditcard: "Please enter a valid credit card number.",
equalTo: "Please enter the same value again.",
maxlength: $.validator.format(
"Please enter no more than {0} characters."
),
minlength: $.validator.format(
"Please enter at least {0} characters."
),
rangelength: $.validator.format(
"Please enter a value between {0} and {1} characters long."
),
range: $.validator.format(
"Please enter a value between {0} and {1}."
),
max: $.validator.format(
"Please enter a value less than or equal to {0}."
),
min: $.validator.format(
"Please enter a value greater than or equal to {0}."
)
},
autoCreateRanges: false,
prototype: {
init: function() {
this.labelContainer = $(this.settings.errorLabelContainer);
this.errorContext =
(this.labelContainer.length && this.labelContainer) ||
$(this.currentForm);
this.containers = $(this.settings.errorContainer).add(
this.settings.errorLabelContainer
);
this.submitted = {};
this.valueCache = {};
this.pendingRequest = 0;
this.pending = {};
this.invalid = {};
this.reset();
var groups = (this.groups = {}),
rules;
$.each(this.settings.groups, function(key, value) {
if (typeof value === "string") {
value = value.split(/\s/);
}
$.each(value, function(index, name) {
groups[name] = key;
});
});
rules = this.settings.rules;
$.each(rules, function(key, value) {
rules[key] = $.validator.normalizeRule(value);
});
function delegate(event) {
var validator = $.data(this.form, "validator"),
eventType = "on" + event.type.replace(/^validate/, ""),
settings = validator.settings;
if (settings[eventType] && !$(this).is(settings.ignore)) {
settings[eventType].call(validator, this, event);
}
}
$(this.currentForm)
.on(
"focusin.validate focusout.validate keyup.validate",
":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
"[type='radio'], [type='checkbox']",
delegate
)
// Support: Chrome, oldIE
// "select" is provided as event.target when clicking a option
.on(
"click.validate",
"select, option, [type='radio'], [type='checkbox']",
delegate
);
if (this.settings.invalidHandler) {
$(this.currentForm).on(
"invalid-form.validate",
this.settings.invalidHandler
);
}
// Add aria-required to any Static/Data/Class required fields before first validation
// Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html
$(this.currentForm)
.find("[required], [data-rule-required], .required")
.attr("aria-required", "true");
},
// http://jqueryvalidation.org/Validator.form/
form: function() {
this.checkForm();
$.extend(this.submitted, this.errorMap);
this.invalid = $.extend({}, this.errorMap);
if (!this.valid()) {
$(this.currentForm).triggerHandler("invalid-form", [this]);
}
this.showErrors();
return this.valid();
},
checkForm: function() {
this.prepareForm();
for (
var i = 0,
elements = (this.currentElements = this.elements()); elements[i]; i++
) {
this.check(elements[i]);
}
return this.valid();
},
// http://jqueryvalidation.org/Validator.element/
element: function(element) {
var cleanElement = this.clean(element),
checkElement = this.validationTargetFor(cleanElement),
result = true;
this.lastElement = checkElement;
if (checkElement === undefined) {
delete this.invalid[cleanElement.name];
} else {
this.prepareElement(checkElement);
this.currentElements = $(checkElement);
result = this.check(checkElement) !== false;
if (result) {
delete this.invalid[checkElement.name];
} else {
this.invalid[checkElement.name] = true;
}
}
// Add aria-invalid status for screen readers
$(element).attr("aria-invalid", !result);
if (!this.numberOfInvalids()) {
// Hide error containers on last error
this.toHide = this.toHide.add(this.containers);
}
this.showErrors();
return result;
},
// http://jqueryvalidation.org/Validator.showErrors/
showErrors: function(errors) {
if (errors) {
// add items to error list and map
$.extend(this.errorMap, errors);
this.errorList = [];
for (var name in errors) {
this.errorList.push({
message: errors[name],
element: this.findByName(name)[0]
});
}
// remove items from success list
this.successList = $.grep(this.successList, function(
element
) {
return !(element.name in errors);
});
}
if (this.settings.showErrors) {
this.settings.showErrors.call(
this,
this.errorMap,
this.errorList
);
} else {
this.defaultShowErrors();
}
},
// http://jqueryvalidation.org/Validator.resetForm/
resetForm: function() {
if ($.fn.resetForm) {
$(this.currentForm).resetForm();
}
this.submitted = {};
this.lastElement = null;
this.prepareForm();
this.hideErrors();
var i,
elements = this.elements()
.removeData("previousValue")
.removeAttr("aria-invalid");
if (this.settings.unhighlight) {
for (i = 0; elements[i]; i++) {
this.settings.unhighlight.call(
this,
elements[i],
this.settings.errorClass,
""
);
}
} else {
elements.removeClass(this.settings.errorClass);
}
},
numberOfInvalids: function() {
return this.objectLength(this.invalid);
},
objectLength: function(obj) {
/* jshint unused: false */
var count = 0,
i;
for (i in obj) {
count++;
}
return count;
},
hideErrors: function() {
this.hideThese(this.toHide);
},
hideThese: function(errors) {
errors.not(this.containers).text("");
this.addWrapper(errors).hide();
},
valid: function() {
return this.size() === 0;
},
size: function() {
return this.errorList.length;
},
focusInvalid: function() {
if (this.settings.focusInvalid) {
try {
$(
this.findLastActive() ||
(this.errorList.length &&
this.errorList[0].element) ||
[]
)
.filter(":visible")
.focus()
// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
.trigger("focusin");
} catch (e) {
// ignore IE throwing errors when focusing hidden elements
}
}
},
findLastActive: function() {
var lastActive = this.lastActive;
return (
lastActive &&
$.grep(this.errorList, function(n) {
return n.element.name === lastActive.name;
}).length === 1 &&
lastActive
);
},
elements: function() {
var validator = this,
rulesCache = {};
// select all valid inputs inside the form (no submit or reset buttons)
return $(this.currentForm)
.find("input, select, textarea")
.not(":submit, :reset, :image, :disabled")
.not(this.settings.ignore)
.filter(function() {
if (!this.name &&
validator.settings.debug &&
window.console
) {
console.error("%o has no name assigned", this);
}
// select only the first element for each name, and only those with rules specified
if (
this.name in rulesCache ||
!validator.objectLength($(this).rules())
) {
return false;
}
rulesCache[this.name] = true;
return true;
});
},
clean: function(selector) {
return $(selector)[0];
},
errors: function() {
var errorClass = this.settings.errorClass.split(" ").join(".");
return $(
this.settings.errorElement + "." + errorClass,
this.errorContext
);
},
reset: function() {
this.successList = [];
this.errorList = [];
this.errorMap = {};
this.toShow = $([]);
this.toHide = $([]);
this.currentElements = $([]);
},
prepareForm: function() {
this.reset();
this.toHide = this.errors().add(this.containers);
},
prepareElement: function(element) {
this.reset();
this.toHide = this.errorsFor(element);
},
elementValue: function(element) {
var val,
$element = $(element),
type = element.type;
if (type === "radio" || type === "checkbox") {
return this.findByName(element.name)
.filter(":checked")
.val();
} else if (
type === "number" &&
typeof element.validity !== "undefined"
) {
return element.validity.badInput ? false : $element.val();
}
val = $element.val();
if (typeof val === "string") {
return val.replace(/\r/g, "");
}
return val;
},
check: function(element) {
element = this.validationTargetFor(this.clean(element));
var rules = $(element).rules(),
rulesCount = $.map(rules, function(n, i) {
return i;
}).length,
dependencyMismatch = false,
val = this.elementValue(element),
result,
method,
rule;
for (method in rules) {
rule = {
method: method,
parameters: rules[method]
};
try {
result = $.validator.methods[method].call(
this,
val,
element,
rule.parameters
);
// if a method indicates that the field is optional and therefore valid,
// don't mark it as valid when there are no other rules
if (
result === "dependency-mismatch" &&
rulesCount === 1
) {
dependencyMismatch = true;
continue;
}
dependencyMismatch = false;
if (result === "pending") {
this.toHide = this.toHide.not(
this.errorsFor(element)
);
return;
}
if (!result) {
this.formatAndAdd(element, rule);
return false;
}
} catch (e) {
if (this.settings.debug && window.console) {
console.log(
"Exception occurred when checking element " +
element.id +
", check the '" +
rule.method +
"' method.",
e
);
}
if (e instanceof TypeError) {
e.message +=
". Exception occurred when checking element " +
element.id +
", check the '" +
rule.method +
"' method.";
}
throw e;
}
}
if (dependencyMismatch) {
return;
}
if (this.objectLength(rules)) {
this.successList.push(element);
}
return true;
},
// return the custom message for the given element and validation method
// specified in the element's HTML5 data attribute
// return the generic message if present and no method specific message is present
customDataMessage: function(element, method) {
return (
$(element).data(
"msg" +
method.charAt(0).toUpperCase() +
method.substring(1).toLowerCase()
) || $(element).data("msg")
);
},
// return the custom message for the given element name and validation method
customMessage: function(name, method) {
var m = this.settings.messages[name];
return m && (m.constructor === String ? m : m[method]);
},
// return the first defined argument, allowing empty strings
findDefined: function() {
for (var i = 0; i < arguments.length; i++) {
if (arguments[i] !== undefined) {
return arguments[i];
}
}
return undefined;
},
defaultMessage: function(element, method) {
return this.findDefined(
this.customMessage(element.name, method),
this.customDataMessage(element, method),
// title is never undefined, so handle empty string as undefined
(!this.settings.ignoreTitle && element.title) || undefined,
$.validator.messages[method],
"<strong>Warning: No message defined for " +
element.name +
"</strong>"
);
},
formatAndAdd: function(element, rule) {
var message = this.defaultMessage(element, rule.method),
theregex = /\$?\{(\d+)\}/g;
if (typeof message === "function") {
message = message.call(this, rule.parameters, element);
} else if (theregex.test(message)) {
message = $.validator.format(
message.replace(theregex, "{$1}"),
rule.parameters
);
}
this.errorList.push({
message: message,
element: element,
method: rule.method
});
this.errorMap[element.name] = message;
this.submitted[element.name] = message;
},
addWrapper: function(toToggle) {
if (this.settings.wrapper) {
toToggle = toToggle.add(
toToggle.parent(this.settings.wrapper)
);
}
return toToggle;
},
defaultShowErrors: function() {
var i, elements, error;
for (i = 0; this.errorList[i]; i++) {
error = this.errorList[i];
if (this.settings.highlight) {
this.settings.highlight.call(
this,
error.element,
this.settings.errorClass,
this.settings.validClass
);
}
this.showLabel(error.element, error.message);
}
if (this.errorList.length) {
this.toShow = this.toShow.add(this.containers);
}
if (this.settings.success) {
for (i = 0; this.successList[i]; i++) {
this.showLabel(this.successList[i]);
}
}
if (this.settings.unhighlight) {
for (
i = 0, elements = this.validElements(); elements[i]; i++
) {
this.settings.unhighlight.call(
this,
elements[i],
this.settings.errorClass,
this.settings.validClass
);
}
}
this.toHide = this.toHide.not(this.toShow);
this.hideErrors();
this.addWrapper(this.toShow).show();
},
validElements: function() {
return this.currentElements.not(this.invalidElements());
},
invalidElements: function() {
return $(this.errorList).map(function() {
return this.element;
});
},
showLabel: function(element, message) {
var place,
group,
errorID,
error = this.errorsFor(element),
elementID = this.idOrName(element),
describedBy = $(element).attr("aria-describedby");
if (error.length) {
// refresh error/success class
error
.removeClass(this.settings.validClass)
.addClass(this.settings.errorClass);
// replace message on existing label
error.html(message);
} else {
// create error element
error = $("<" + this.settings.errorElement + ">")
.attr("id", elementID + "-error")
.addClass(this.settings.errorClass)
.html(message || "");
// Maintain reference to the element to be placed into the DOM
place = error;
if (this.settings.wrapper) {
// make sure the element is visible, even in IE
// actually showing the wrapped element is handled elsewhere
place = error
.hide()
.show()
.wrap("<" + this.settings.wrapper + "/>")
.parent();
}
if (this.labelContainer.length) {
this.labelContainer.append(place);
} else if (this.settings.errorPlacement) {
this.settings.errorPlacement(place, $(element));
} else {
place.insertAfter(element);
}
// Link error back to the element
if (error.is("label")) {
// If the error is a label, then associate using 'for'
error.attr("for", elementID);
} else if (
error.parents("label[for='" + elementID + "']")
.length === 0
) {
// If the element is not a child of an associated label, then it's necessary
// to explicitly apply aria-describedby
errorID = error
.attr("id")
.replace(/(:|\.|\[|\]|\$)/g, "\\$1");
// Respect existing non-error aria-describedby
if (!describedBy) {
describedBy = errorID;
} else if (!describedBy.match(
new RegExp("\\b" + errorID + "\\b")
)) {
// Add to end of list if not already present
describedBy += " " + errorID;
}
$(element).attr("aria-describedby", describedBy);
// If this element is grouped, then assign to all elements in the same group
group = this.groups[element.name];
if (group) {
$.each(this.groups, function(name, testgroup) {
if (testgroup === group) {
$(
"[name='" + name + "']",
this.currentForm
).attr(
"aria-describedby",
error.attr("id")
);
}
});
}
}
}
if (!message && this.settings.success) {
error.text("");
if (typeof this.settings.success === "string") {
error.addClass(this.settings.success);
} else {
this.settings.success(error, element);
}
}
this.toShow = this.toShow.add(error);
},
errorsFor: function(element) {
var name = this.idOrName(element),
describer = $(element).attr("aria-describedby"),
selector =
"label[for='" +
name +
"'], label[for='" +
name +
"'] *";
// aria-describedby should directly reference the error element
if (describer) {
selector =
selector + ", #" + describer.replace(/\s+/g, ", #");
}
return this.errors().filter(selector);
},
idOrName: function(element) {
return (
this.groups[element.name] ||
(this.checkable(element) ? element.name : element.id || element.name)
);
},
validationTargetFor: function(element) {
// If radio/checkbox, validate first element in group instead
if (this.checkable(element)) {
element = this.findByName(element.name);
}
// Always apply ignore filter
return $(element).not(this.settings.ignore)[0];
},
checkable: function(element) {
return /radio|checkbox/i.test(element.type);
},
findByName: function(name) {
return $(this.currentForm).find("[name='" + name + "']");
},
getLength: function(value, element) {
switch (element.nodeName.toLowerCase()) {
case "select":
return $("option:selected", element).length;
case "input":
if (this.checkable(element)) {
return this.findByName(element.name).filter(
":checked"
).length;
}
}
return value.length;
},
depend: function(param, element) {
return this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true;
},
dependTypes: {
boolean: function(param) {
return param;
},
string: function(param, element) {
return !!$(param, element.form).length;
},
function: function(param, element) {
return param(element);
}
},
optional: function(element) {
var val = this.elementValue(element);
return (!$.validator.methods.required.call(this, val, element) &&
"dependency-mismatch"
);
},
startRequest: function(element) {
if (!this.pending[element.name]) {
this.pendingRequest++;
this.pending[element.name] = true;
}
},
stopRequest: function(element, valid) {
this.pendingRequest--;
// sometimes synchronization fails, make sure pendingRequest is never < 0
if (this.pendingRequest < 0) {
this.pendingRequest = 0;
}
delete this.pending[element.name];
if (
valid &&
this.pendingRequest === 0 &&
this.formSubmitted &&
this.form()
) {
$(this.currentForm).submit();
this.formSubmitted = false;
} else if (!valid &&
this.pendingRequest === 0 &&
this.formSubmitted
) {
$(this.currentForm).triggerHandler("invalid-form", [this]);
this.formSubmitted = false;
}
},
previousValue: function(element) {
return (
$.data(element, "previousValue") ||
$.data(element, "previousValue", {
old: null,
valid: true,
message: this.defaultMessage(element, "remote")
})
);
},
// cleans up all forms and elements, removes validator-specific events
destroy: function() {
this.resetForm();
$(this.currentForm)
.off(".validate")
.removeData("validator");
}
},
classRuleSettings: {
required: {
required: true
},
email: {
email: true
},
url: {
url: true
},
date: {
date: true
},
dateISO: {
dateISO: true
},
number: {
number: true
},
digits: {
digits: true
},
creditcard: {
creditcard: true
}
},
addClassRules: function(className, rules) {
if (className.constructor === String) {
this.classRuleSettings[className] = rules;
} else {
$.extend(this.classRuleSettings, className);
}
},
classRules: function(element) {
var rules = {},
classes = $(element).attr("class");
if (classes) {
$.each(classes.split(" "), function() {
if (this in $.validator.classRuleSettings) {
$.extend(rules, $.validator.classRuleSettings[this]);
}
});
}
return rules;
},
normalizeAttributeRule: function(rules, type, method, value) {
// convert the value to a number for number inputs, and for text for backwards compability
// allows type="date" and others to be compared as strings
if (
/min|max/.test(method) &&
(type === null || /number|range|text/.test(type))
) {
value = Number(value);
// Support Opera Mini, which returns NaN for undefined minlength
if (isNaN(value)) {
value = undefined;
}
}
if (value || value === 0) {
rules[method] = value;
} else if (type === method && type !== "range") {
// exception: the jquery validate 'range' method
// does not test for the html5 'range' type
rules[method] = true;
}
},
attributeRules: function(element) {
var rules = {},
$element = $(element),
type = element.getAttribute("type"),
method,
value;
for (method in $.validator.methods) {
// support for <input required> in both html5 and older browsers
if (method === "required") {
value = element.getAttribute(method);
// Some browsers return an empty string for the required attribute
// and non-HTML5 browsers might have required="" markup
if (value === "") {
value = true;
}
// force non-HTML5 browsers to return bool
value = !!value;
} else {
value = $element.attr(method);
}
this.normalizeAttributeRule(rules, type, method, value);
}
// maxlength may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
if (
rules.maxlength &&
/-1|2147483647|524288/.test(rules.maxlength)
) {
delete rules.maxlength;
}
return rules;
},
dataRules: function(element) {
var rules = {},
$element = $(element),
type = element.getAttribute("type"),
method,
value;
for (method in $.validator.methods) {
value = $element.data(
"rule" +
method.charAt(0).toUpperCase() +
method.substring(1).toLowerCase()
);
this.normalizeAttributeRule(rules, type, method, value);
}
return rules;
},
staticRules: function(element) {
var rules = {},
validator = $.data(element.form, "validator");
if (validator.settings.rules) {
rules =
$.validator.normalizeRule(
validator.settings.rules[element.name]
) || {};
}
return rules;
},
normalizeRules: function(rules, element) {
// handle dependency check
$.each(rules, function(prop, val) {
// ignore rule when param is explicitly false, eg. required:false
if (val === false) {
delete rules[prop];
return;
}
if (val.param || val.depends) {
var keepRule = true;
switch (typeof val.depends) {
case "string":
keepRule = !!$(val.depends, element.form).length;
break;
case "function":
keepRule = val.depends.call(element, element);
break;
}
if (keepRule) {
rules[prop] =
val.param !== undefined ? val.param : true;
} else {
delete rules[prop];
}
}
});
// evaluate parameters
$.each(rules, function(rule, parameter) {
rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
});
// clean number parameters
$.each(["minlength", "maxlength"], function() {
if (rules[this]) {
rules[this] = Number(rules[this]);
}
});
$.each(["rangelength", "range"], function() {
var parts;
if (rules[this]) {
if ($.isArray(rules[this])) {
rules[this] = [
Number(rules[this][0]),
Number(rules[this][1])
];
} else if (typeof rules[this] === "string") {
parts = rules[this]
.replace(/[\[\]]/g, "")
.split(/[\s,]+/);
rules[this] = [Number(parts[0]), Number(parts[1])];
}
}
});
if ($.validator.autoCreateRanges) {
// auto-create ranges
if (rules.min != null && rules.max != null) {
rules.range = [rules.min, rules.max];
delete rules.min;
delete rules.max;
}
if (rules.minlength != null && rules.maxlength != null) {
rules.rangelength = [rules.minlength, rules.maxlength];
delete rules.minlength;
delete rules.maxlength;
}
}
return rules;
},
// Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
normalizeRule: function(data) {
if (typeof data === "string") {
var transformed = {};
$.each(data.split(/\s/), function() {
transformed[this] = true;
});
data = transformed;
}
return data;
},
// http://jqueryvalidation.org/jQuery.validator.addMethod/
addMethod: function(name, method, message) {
$.validator.methods[name] = method;
$.validator.messages[name] =
message !== undefined ? message : $.validator.messages[name];
if (method.length < 3) {
$.validator.addClassRules(
name,
$.validator.normalizeRule(name)
);
}
},
methods: {
// http://jqueryvalidation.org/required-method/
required: function(value, element, param) {
// check if dependency is met
if (!this.depend(param, element)) {
return "dependency-mismatch";
}
if (element.nodeName.toLowerCase() === "select") {
// could be an array for select-multiple or a string, both are fine this way
var val = $(element).val();
return val && val.length > 0;
}
if (this.checkable(element)) {
return this.getLength(value, element) > 0;
}
return value.length > 0;
},
// http://jqueryvalidation.org/email-method/
email: function(value, element) {
// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
// Retrieved 2014-01-14
// If you have a problem with this implementation, report a bug against the above spec
// Or use custom methods to implement your own email validation
return (
this.optional(element) ||
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(
value
)
);
},
// http://jqueryvalidation.org/url-method/
url: function(value, element) {
// Copyright (c) 2010-2013 Diego Perini, MIT licensed
// https://gist.github.com/dperini/729294
// see also https://mathiasbynens.be/demo/url-regex
// modified to allow protocol-relative URLs
return (
this.optional(element) ||
/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(
value
)
);
},
// http://jqueryvalidation.org/date-method/
date: function(value, element) {
return (
this.optional(element) ||
!/Invalid|NaN/.test(new Date(value).toString())
);
},
// http://jqueryvalidation.org/dateISO-method/
dateISO: function(value, element) {
return (
this.optional(element) ||
/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(
value
)
);
},
// http://jqueryvalidation.org/number-method/
number: function(value, element) {
return (
this.optional(element) ||
/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value)
);
},
// http://jqueryvalidation.org/digits-method/
digits: function(value, element) {
return this.optional(element) || /^\d+$/.test(value);
},
// http://jqueryvalidation.org/creditcard-method/
// based on http://en.wikipedia.org/wiki/Luhn_algorithm
creditcard: function(value, element) {
if (this.optional(element)) {
return "dependency-mismatch";
}
// accept only spaces, digits and dashes
if (/[^0-9 \-]+/.test(value)) {
return false;
}
var nCheck = 0,
nDigit = 0,
bEven = false,
n,
cDigit;
value = value.replace(/\D/g, "");
// Basing min and max length on
// http://developer.ean.com/general_info/Valid_Credit_Card_Types
if (value.length < 13 || value.length > 19) {
return false;
}
for (n = value.length - 1; n >= 0; n--) {
cDigit = value.charAt(n);
nDigit = parseInt(cDigit, 10);
if (bEven) {
if ((nDigit *= 2) > 9) {
nDigit -= 9;
}
}
nCheck += nDigit;
bEven = !bEven;
}
return nCheck % 10 === 0;
},
// http://jqueryvalidation.org/minlength-method/
minlength: function(value, element, param) {
var length = $.isArray(value) ? value.length : this.getLength(value, element);
return this.optional(element) || length >= param;
},
// http://jqueryvalidation.org/maxlength-method/
maxlength: function(value, element, param) {
var length = $.isArray(value) ? value.length : this.getLength(value, element);
return this.optional(element) || length <= param;
},
// http://jqueryvalidation.org/rangelength-method/
rangelength: function(value, element, param) {
var length = $.isArray(value) ? value.length : this.getLength(value, element);
return (
this.optional(element) ||
(length >= param[0] && length <= param[1])
);
},
// http://jqueryvalidation.org/min-method/
min: function(value, element, param) {
return this.optional(element) || value >= param;
},
// http://jqueryvalidation.org/max-method/
max: function(value, element, param) {
return this.optional(element) || value <= param;
},
// http://jqueryvalidation.org/range-method/
range: function(value, element, param) {
return (
this.optional(element) ||
(value >= param[0] && value <= param[1])
);
},
// http://jqueryvalidation.org/equalTo-method/
equalTo: function(value, element, param) {
// bind to the blur event of the target in order to revalidate whenever the target field is updated
// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
var target = $(param);
if (this.settings.onfocusout) {
target
.off(".validate-equalTo")
.on("blur.validate-equalTo", function() {
$(element).valid();
});
}
return value === target.val();
},
// http://jqueryvalidation.org/remote-method/
remote: function(value, element, param) {
if (this.optional(element)) {
return "dependency-mismatch";
}
var previous = this.previousValue(element),
validator,
data;
if (!this.settings.messages[element.name]) {
this.settings.messages[element.name] = {};
}
previous.originalMessage = this.settings.messages[
element.name
].remote;
this.settings.messages[element.name].remote = previous.message;
param = (typeof param === "string" && {
url: param
}) || param;
if (previous.old === value) {
return previous.valid;
}
previous.old = value;
validator = this;
this.startRequest(element);
data = {};
data[element.name] = value;
$.ajax(
$.extend(
true, {
mode: "abort",
port: "validate" + element.name,
dataType: "json",
data: data,
context: validator.currentForm,
success: function(response) {
var valid =
response === true ||
response === "true",
errors,
message,
submitted;
validator.settings.messages[
element.name
].remote = previous.originalMessage;
if (valid) {
submitted = validator.formSubmitted;
validator.prepareElement(element);
validator.formSubmitted = submitted;
validator.successList.push(element);
delete validator.invalid[element.name];
validator.showErrors();
} else {
errors = {};
message =
response ||
validator.defaultMessage(
element,
"remote"
);
errors[
element.name
] = previous.message = $.isFunction(message) ? message(value) : message;
validator.invalid[element.name] = true;
validator.showErrors(errors);
}
previous.valid = valid;
validator.stopRequest(element, valid);
}
},
param
)
);
return "pending";
}
}
});
// ajax mode: abort
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
var pendingRequests = {},
ajax;
// Use a prefilter if available (1.5+)
if ($.ajaxPrefilter) {
$.ajaxPrefilter(function(settings, _, xhr) {
var port = settings.port;
if (settings.mode === "abort") {
if (pendingRequests[port]) {
pendingRequests[port].abort();
}
pendingRequests[port] = xhr;
}
});
} else {
// Proxy ajax
ajax = $.ajax;
$.ajax = function(settings) {
var mode = ("mode" in settings ? settings : $.ajaxSettings).mode,
port = ("port" in settings ? settings : $.ajaxSettings).port;
if (mode === "abort") {
if (pendingRequests[port]) {
pendingRequests[port].abort();
}
pendingRequests[port] = ajax.apply(this, arguments);
return pendingRequests[port];
}
return ajax.apply(this, arguments);
};
}
});
/**
* Initiates an API call to verify the token given in de URL:
* 1. Displays a spinner on processing
* 2. Displays an error notification on THIS page when the requests fails (404, 500, etc.)
* 3. Redirects to /mijnstart/ and displays the notification set by the backend
*/
var verifyEmail = moduleLoader(
(function() {
var verificationToken = general.getParameterByName("verificationToken");
/**
* Attach to window.onLoad to ensure SignalR is not triggering queued messages
* to be displayed immediately.
*/
function init() {
if (
window.location.pathname === "/mijnstart/verifieren/" &&
verificationToken
) {
bind();
}
}
/**
* Verify email address
*
* [1] Show spinner
* [2] Request verification
*/
function bind() {
verify();
}
/**
* Request verification
*
* [0] For single parameter endpoints, ASP.Net WebApi requires a plain string instead of an object
* [1] Get URL from config.js
* [2] Enable cross domain for local development
* [3] Init ajax call
* [4] Send notification on success
* [5] Send notification(s) on error
* [6] Something when done?
*/
function verify() {
var postUrl =
configuration.account.apiUrlVerify +
"?verificationToken=" +
verificationToken,
crossDomain = false; // Needed to identify modular level for notifications
if (development) {
crossDomain = true;
}
$.ajax({
async: true,
type: "POST",
url: postUrl,
crossDomain: crossDomain,
timeout: 5000
})
.done(function(data) {
redirectToAccount();
})
.fail(function(data) {
redirectToAccount();
});
}
/**
* Redirect like an HTTP redirect
* @see: http://stackoverflow.com/a/506004
*/
function redirectToAccount() {
window.location.replace("/mijnstart/");
}
return {
init: init,
verify: verify
};
})()
);
(function() {
return $("div.content-body a[href^\x3d'http:'], div.content-body a[href^\x3d'https:']").not("div.content-body [href*\x3d'kvk']").length
})();
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(23);
a = a / 250 * 60;
return a = Math.round(a)
})();
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(29),
b = google_tag_manager["GTM-P2JD7J"].macro(30);
return void 0 != a && void 0 != b ? "ja" : "nee"
})();
(function() {
try {
var a = optimizely.variationIdsMap;
if (Object.keys(a).length) return JSON.stringify(a)
} catch (b) {
return ""
}
})();
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(27);
a = a / 250 * 60;
return a = Math.round(a)
})();
(function() {
return $('main.site-content a[href *\x3d"kvk.nl"], main.site-content a[href^\x3d"/"]').not('main.site-content .is-hidden a[href *\x3d"kvk.nl"], main.site-content .is-hidden a[href^\x3d"/"]').not('main.site-content #pageFooter a[href *\x3d"kvk.nl"], main.site-content #pageFooter a[href^\x3d"/"]').not('main.site-content .breadcrumb a[href *\x3d"kvk.nl"], main.site-content .breadcrumb a[href^\x3d"/"]').length
})();
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(22);
a = a / 250 * 60;
return a = Math.round(a)
})();
/*!
* pickadate.js v3.5.6, 2015/04/20
* By Amsul, http://amsul.ca
* Hosted on http://amsul.github.io/pickadate.js
* Licensed under MIT
*/
!(function(a) {
"function" == typeof define && define.amd ? define("picker", ["jquery"], a) : "object" == typeof exports ? (module.exports = a(require("jquery"))) : (this.Picker = a(jQuery));
})(function(a) {
function b(f, g, i, m) {
function n() {
return b._.node(
"div",
b._.node(
"div",
b._.node(
"div",
b._.node("div", B.component.nodes(w.open), y.box),
y.wrap
),
y.frame
),
y.holder,
'tabindex="-1"'
);
}
function o() {
z
.data(g, B)
.addClass(y.input)
.val(z.data("value") ? B.get("select", x.format) : f.value),
x.editable ||
z
.on("focus." + w.id + " click." + w.id, function(a) {
a.preventDefault(), B.open();
})
.on("keydown." + w.id, u),
e(f, {
haspopup: !0,
expanded: !1,
readonly: !1,
owns: f.id + "_root"
});
}
function p() {
e(B.$root[0], "hidden", !0);
}
function q() {
B.$holder
.on({
keydown: u,
"focus.toOpen": t,
blur: function() {
z.removeClass(y.target);
},
focusin: function(a) {
B.$root.removeClass(y.focused), a.stopPropagation();
},
"mousedown click": function(b) {
var c = b.target;
c != B.$holder[0] &&
(b.stopPropagation(),
"mousedown" != b.type ||
a(c).is(
"input, select, textarea, button, option"
) ||
(b.preventDefault(), B.$holder[0].focus()));
}
})
.on(
"click",
"[data-pick], [data-nav], [data-clear], [data-close]",
function() {
var b = a(this),
c = b.data(),
d =
b.hasClass(y.navDisabled) ||
b.hasClass(y.disabled),
e = h();
(e = e && (e.type || e.href)), (d || (e && !a.contains(B.$root[0], e))) &&
B.$holder[0].focus(), !d && c.nav ? B.set(
"highlight",
B.component.item.highlight, {
nav: c.nav
}
) : !d && "pick" in c ? (B.set("select", c.pick),
x.closeOnSelect && B.close(!0)) : c.clear ? (B.clear(), x.closeOnClear && B.close(!0)) : c.close && B.close(!0);
}
);
}
function r() {
var b;
x.hiddenName === !0 ? ((b = f.name), (f.name = "")) : ((b = [
"string" == typeof x.hiddenPrefix ? x.hiddenPrefix : "",
"string" == typeof x.hiddenSuffix ? x.hiddenSuffix : "_submit"
]), (b = b[0] + f.name + b[1])), (B._hidden = a(
'<input type=hidden name="' +
b +
'"' +
(z.data("value") || f.value ? ' value="' + B.get("select", x.formatSubmit) + '"' : "") +
">"
)[0]),
z.on("change." + w.id, function() {
B._hidden.value = f.value ? B.get("select", x.formatSubmit) : "";
});
}
function s() {
v && l ? B.$holder
.find("." + y.frame)
.one("transitionend", function() {
B.$holder[0].focus();
}) : B.$holder[0].focus();
}
function t(a) {
a.stopPropagation(),
z.addClass(y.target),
B.$root.addClass(y.focused),
B.open();
}
function u(a) {
var b = a.keyCode,
c = /^(8|46)$/.test(b);
return 27 == b ? (B.close(!0), !1) : void(
(32 == b || c || (!w.open && B.component.key[b])) &&
(a.preventDefault(),
a.stopPropagation(),
c ? B.clear().close() : B.open())
);
}
if (!f) return b;
var v = !1,
w = {
id: f.id || "P" + Math.abs(~~(Math.random() * new Date()))
},
x = i ? a.extend(!0, {}, i.defaults, m) : m || {},
y = a.extend({}, b.klasses(), x.klass),
z = a(f),
A = function() {
return this.start();
},
B = (A.prototype = {
constructor: A,
$node: z,
start: function() {
return w && w.start ? B : ((w.methods = {}), (w.start = !0), (w.open = !1), (w.type = f.type), (f.autofocus = f == h()), (f.readOnly = !x.editable), (f.id = f.id || w.id),
"text" != f.type && (f.type = "text"), (B.component = new i(B, x)), (B.$root = a(
'<div class="' +
y.picker +
'" id="' +
f.id +
'_root" />'
)),
p(), (B.$holder = a(n()).appendTo(B.$root)),
q(),
x.formatSubmit && r(),
o(),
x.containerHidden ? a(x.containerHidden).append(B._hidden) : z.after(B._hidden),
x.container ? a(x.container).append(B.$root) : z.after(B.$root),
B.on({
start: B.component.onStart,
render: B.component.onRender,
stop: B.component.onStop,
open: B.component.onOpen,
close: B.component.onClose,
set: B.component.onSet
}).on({
start: x.onStart,
render: x.onRender,
stop: x.onStop,
open: x.onOpen,
close: x.onClose,
set: x.onSet
}), (v = c(B.$holder[0])),
f.autofocus && B.open(),
B.trigger("start").trigger("render"));
},
render: function(b) {
return (
b ? ((B.$holder = a(n())),
q(),
B.$root.html(B.$holder)) : B.$root
.find("." + y.box)
.html(B.component.nodes(w.open)),
B.trigger("render")
);
},
stop: function() {
return w.start ? (B.close(),
B._hidden &&
B._hidden.parentNode.removeChild(B._hidden),
B.$root.remove(),
z.removeClass(y.input).removeData(g),
setTimeout(function() {
z.off("." + w.id);
}, 0), (f.type = w.type), (f.readOnly = !1),
B.trigger("stop"), (w.methods = {}), (w.start = !1),
B) : B;
},
open: function(c) {
return w.open ? B : (z.addClass(y.active),
e(f, "expanded", !0),
setTimeout(function() {
B.$root.addClass(y.opened),
e(B.$root[0], "hidden", !1);
}, 0),
c !== !1 &&
((w.open = !0),
v &&
k
.css("overflow", "hidden")
.css("padding-right", "+=" + d()),
s(),
j
.on(
"click." + w.id + " focusin." + w.id,
function(a) {
var b = a.target;
b != f &&
b != document &&
3 != a.which &&
B.close(b === B.$holder[0]);
}
)
.on("keydown." + w.id, function(c) {
var d = c.keyCode,
e = B.component.key[d],
f = c.target;
27 == d ? B.close(!0) : f != B.$holder[0] || (!e && 13 != d) ? a.contains(B.$root[0], f) &&
13 == d &&
(c.preventDefault(), f.click()) : (c.preventDefault(),
e ? b._.trigger(
B.component.key.go,
B, [b._.trigger(e)]
) : B.$root
.find("." + y.highlighted)
.hasClass(y.disabled) ||
(B.set(
"select",
B.component.item.highlight
),
x.closeOnSelect &&
B.close(!0)));
})),
B.trigger("open"));
},
close: function(a) {
return (
a &&
(x.editable ? f.focus() : (B.$holder.off("focus.toOpen").focus(),
setTimeout(function() {
B.$holder.on("focus.toOpen", t);
}, 0))),
z.removeClass(y.active),
e(f, "expanded", !1),
setTimeout(function() {
B.$root.removeClass(y.opened + " " + y.focused),
e(B.$root[0], "hidden", !0);
}, 0),
w.open ? ((w.open = !1),
v &&
k
.css("overflow", "")
.css("padding-right", "-=" + d()),
j.off("." + w.id),
B.trigger("close")) : B
);
},
clear: function(a) {
return B.set("clear", null, a);
},
set: function(b, c, d) {
var e,
f,
g = a.isPlainObject(b),
h = g ? b : {};
if (((d = g && a.isPlainObject(c) ? c : d || {}), b)) {
g || (h[b] = c);
for (e in h)
(f = h[e]),
e in B.component.item &&
(void 0 === f && (f = null),
B.component.set(e, f, d)), ("select" == e || "clear" == e) &&
z
.val(
"clear" == e ? "" : B.get(e, x.format)
)
.trigger("change");
B.render();
}
return d.muted ? B : B.trigger("set", h);
},
get: function(a, c) {
if (((a = a || "value"), null != w[a])) return w[a];
if ("valueSubmit" == a) {
if (B._hidden) return B._hidden.value;
a = "value";
}
if ("value" == a) return f.value;
if (a in B.component.item) {
if ("string" == typeof c) {
var d = B.component.get(a);
return d ? b._.trigger(
B.component.formats.toString,
B.component, [c, d]
) : "";
}
return B.component.get(a);
}
},
on: function(b, c, d) {
var e,
f,
g = a.isPlainObject(b),
h = g ? b : {};
if (b) {
g || (h[b] = c);
for (e in h)
(f = h[e]),
d && (e = "_" + e), (w.methods[e] = w.methods[e] || []),
w.methods[e].push(f);
}
return B;
},
off: function() {
var a,
b,
c = arguments;
for (a = 0, namesCount = c.length; a < namesCount; a += 1)
(b = c[a]), b in w.methods && delete w.methods[b];
return B;
},
trigger: function(a, c) {
var d = function(a) {
var d = w.methods[a];
d &&
d.map(function(a) {
b._.trigger(a, B, [c]);
});
};
return d("_" + a), d(a), B;
}
});
return new A();
}
function c(a) {
var b,
c = "position";
return (
a.currentStyle ? (b = a.currentStyle[c]) : window.getComputedStyle && (b = getComputedStyle(a)[c]),
"fixed" == b
);
}
function d() {
if (k.height() <= i.height()) return 0;
var b = a('<div style="visibility:hidden;width:100px" />').appendTo(
"body"
),
c = b[0].offsetWidth;
b.css("overflow", "scroll");
var d = a('<div style="width:100%" />').appendTo(b),
e = d[0].offsetWidth;
return b.remove(), c - e;
}
function e(b, c, d) {
if (a.isPlainObject(c))
for (var e in c) f(b, e, c[e]);
else f(b, c, d);
}
function f(a, b, c) {
a.setAttribute(("role" == b ? "" : "aria-") + b, c);
}
function g(b, c) {
a.isPlainObject(b) || (b = {
attribute: c
}), (c = "");
for (var d in b) {
var e = ("role" == d ? "" : "aria-") + d,
f = b[d];
c += null == f ? "" : e + '="' + b[d] + '"';
}
return c;
}
function h() {
try {
return document.activeElement;
} catch (a) {}
}
var i = a(window),
j = a(document),
k = a(document.documentElement),
l = null != document.documentElement.style.transition;
return (
(b.klasses = function(a) {
return (
(a = a || "picker"), {
picker: a,
opened: a + "--opened",
focused: a + "--focused",
input: a + "__input",
active: a + "__input--active",
target: a + "__input--target",
holder: a + "__holder",
frame: a + "__frame",
wrap: a + "__wrap",
box: a + "__box"
}
);
}), (b._ = {
group: function(a) {
for (
var c, d = "", e = b._.trigger(a.min, a); e <= b._.trigger(a.max, a, [e]); e += a.i
)
(c = b._.trigger(a.item, a, [e])), (d += b._.node(a.node, c[0], c[1], c[2]));
return d;
},
node: function(b, c, d, e) {
return c ? ((c = a.isArray(c) ? c.join("") : c), (d = d ? ' class="' + d + '"' : ""), (e = e ? " " + e : ""),
"<" + b + d + e + ">" + c + "</" + b + ">") : "";
},
lead: function(a) {
return (10 > a ? "0" : "") + a;
},
trigger: function(a, b, c) {
return "function" == typeof a ? a.apply(b, c || []) : a;
},
digits: function(a) {
return /\d/.test(a[1]) ? 2 : 1;
},
isDate: function(a) {
return ({}.toString.call(a).indexOf("Date") > -1 &&
this.isInteger(a.getDate())
);
},
isInteger: function(a) {
return ({}.toString.call(a).indexOf("Number") > -1 && a % 1 === 0);
},
ariaAttr: g
}), (b.extend = function(c, d) {
(a.fn[c] = function(e, f) {
var g = this.data(c);
return "picker" == e ? g : g && "string" == typeof e ? b._.trigger(g[e], g, [f]) : this.each(function() {
var f = a(this);
f.data(c) || new b(this, c, d, e);
});
}), (a.fn[c].defaults = d.defaults);
}),
b
);
});
var logoutMijnKvk = moduleLoader(
(function() {
var cookieName = "logoutStatus",
inProgress = "inProgress";
function init() {
bind();
checkLogoutStatus();
}
function bind() {
bindLogoutLink();
}
function bindLogoutLink() {
var $logoutLink = $(".js-logout-mijnkvk");
if ($logoutLink.length > 0) {
$logoutLink.on("click", function(e) {
setLogoutCookie();
});
}
}
function checkLogoutStatus() {
if (logoutIsInProgress()) {
logoutSuccesful();
}
}
function logoutSuccesful() {
showLogoutNotification();
removeLogoutCookie();
}
function showLogoutNotification() {
var logoutMessage = "Je bent uitgelogd.";
var notification = {
message: logoutMessage,
position: {
header: "old"
},
type: "success"
};
var notifications = [notification];
notify.handle(notifications);
}
function setLogoutCookie() {
// set the cookie for 30 minutes because a user won't understand
// the notification "you are logged out" if he sees it the next day
var minutes = 30;
var date = new Date();
date.setTime(date.getTime() + minutes * 60 * 1000);
$.cookie(cookieName, "inProgress", {
expires: date,
path: "/",
domain: configuration.cookies.cookieDomain,
secure: configuration.cookies.secureCookies
});
}
function logoutIsInProgress() {
var cookieValue = $.cookie(cookieName);
return cookieValue === inProgress;
}
function removeLogoutCookie() {
$.removeCookie(cookieName, {
path: "/",
domain: configuration.cookies.cookieDomain
});
}
return {
init: init,
setLogoutCookie: setLogoutCookie
};
})()
);
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(11),
b = google_tag_manager["GTM-P2JD7J"].macro(12);
return void 0 != a && void 0 != b ? "ja" : "nee"
})();
/*
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
*/
// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing["jswing"] = jQuery.easing["swing"];
jQuery.extend(jQuery.easing, {
def: "easeOutQuad",
swing: function(x, t, b, c, d) {
//alert(jQuery.easing.default);
return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
},
easeInQuad: function(x, t, b, c, d) {
return c * (t /= d) * t + b;
},
easeOutQuad: function(x, t, b, c, d) {
return -c * (t /= d) * (t - 2) + b;
},
easeInOutQuad: function(x, t, b, c, d) {
if ((t /= d / 2) < 1) return (c / 2) * t * t + b;
return (-c / 2) * (--t * (t - 2) - 1) + b;
},
easeInCubic: function(x, t, b, c, d) {
return c * (t /= d) * t * t + b;
},
easeOutCubic: function(x, t, b, c, d) {
return c * ((t = t / d - 1) * t * t + 1) + b;
},
easeInOutCubic: function(x, t, b, c, d) {
if ((t /= d / 2) < 1) return (c / 2) * t * t * t + b;
return (c / 2) * ((t -= 2) * t * t + 2) + b;
},
easeInQuart: function(x, t, b, c, d) {
return c * (t /= d) * t * t * t + b;
},
easeOutQuart: function(x, t, b, c, d) {
return -c * ((t = t / d - 1) * t * t * t - 1) + b;
},
easeInOutQuart: function(x, t, b, c, d) {
if ((t /= d / 2) < 1) return (c / 2) * t * t * t * t + b;
return (-c / 2) * ((t -= 2) * t * t * t - 2) + b;
},
easeInQuint: function(x, t, b, c, d) {
return c * (t /= d) * t * t * t * t + b;
},
easeOutQuint: function(x, t, b, c, d) {
return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
},
easeInOutQuint: function(x, t, b, c, d) {
if ((t /= d / 2) < 1) return (c / 2) * t * t * t * t * t + b;
return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;
},
easeInSine: function(x, t, b, c, d) {
return -c * Math.cos((t / d) * (Math.PI / 2)) + c + b;
},
easeOutSine: function(x, t, b, c, d) {
return c * Math.sin((t / d) * (Math.PI / 2)) + b;
},
easeInOutSine: function(x, t, b, c, d) {
return (-c / 2) * (Math.cos((Math.PI * t) / d) - 1) + b;
},
easeInExpo: function(x, t, b, c, d) {
return t == 0 ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
},
easeOutExpo: function(x, t, b, c, d) {
return t == d ? b + c : c * (-Math.pow(2, (-10 * t) / d) + 1) + b;
},
easeInOutExpo: function(x, t, b, c, d) {
if (t == 0) return b;
if (t == d) return b + c;
if ((t /= d / 2) < 1) return (c / 2) * Math.pow(2, 10 * (t - 1)) + b;
return (c / 2) * (-Math.pow(2, -10 * --t) + 2) + b;
},
easeInCirc: function(x, t, b, c, d) {
return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
},
easeOutCirc: function(x, t, b, c, d) {
return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
},
easeInOutCirc: function(x, t, b, c, d) {
if ((t /= d / 2) < 1) return (-c / 2) * (Math.sqrt(1 - t * t) - 1) + b;
return (c / 2) * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
},
easeInElastic: function(x, t, b, c, d) {
var s = 1.70158;
var p = 0;
var a = c;
if (t == 0) return b;
if ((t /= d) == 1) return b + c;
if (!p) p = d * 0.3;
if (a < Math.abs(c)) {
a = c;
var s = p / 4;
} else var s = (p / (2 * Math.PI)) * Math.asin(c / a);
return (-(
a *
Math.pow(2, 10 * (t -= 1)) *
Math.sin(((t * d - s) * (2 * Math.PI)) / p)
) + b);
},
easeOutElastic: function(x, t, b, c, d) {
var s = 1.70158;
var p = 0;
var a = c;
if (t == 0) return b;
if ((t /= d) == 1) return b + c;
if (!p) p = d * 0.3;
if (a < Math.abs(c)) {
a = c;
var s = p / 4;
} else var s = (p / (2 * Math.PI)) * Math.asin(c / a);
return (
a *
Math.pow(2, -10 * t) *
Math.sin(((t * d - s) * (2 * Math.PI)) / p) +
c +
b
);
},
easeInOutElastic: function(x, t, b, c, d) {
var s = 1.70158;
var p = 0;
var a = c;
if (t == 0) return b;
if ((t /= d / 2) == 2) return b + c;
if (!p) p = d * (0.3 * 1.5);
if (a < Math.abs(c)) {
a = c;
var s = p / 4;
} else var s = (p / (2 * Math.PI)) * Math.asin(c / a);
if (t < 1)
return (-0.5 *
(a *
Math.pow(2, 10 * (t -= 1)) *
Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +
b
);
return (
a *
Math.pow(2, -10 * (t -= 1)) *
Math.sin(((t * d - s) * (2 * Math.PI)) / p) *
0.5 +
c +
b
);
},
easeInBack: function(x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c * (t /= d) * t * ((s + 1) * t - s) + b;
},
easeOutBack: function(x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
},
easeInOutBack: function(x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
if ((t /= d / 2) < 1)
return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;
return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;
},
easeInBounce: function(x, t, b, c, d) {
return c - jQuery.easing.easeOutBounce(x, d - t, 0, c, d) + b;
},
easeOutBounce: function(x, t, b, c, d) {
if ((t /= d) < 1 / 2.75) {
return c * (7.5625 * t * t) + b;
} else if (t < 2 / 2.75) {
return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;
} else if (t < 2.5 / 2.75) {
return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;
} else {
return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;
}
},
easeInOutBounce: function(x, t, b, c, d) {
if (t < d / 2)
return jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * 0.5 + b;
return (
jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * 0.5 +
c * 0.5 +
b
);
}
});
(function() {
return function(c) {
try {
var h = [{
name: "EMAIL",
regex: /.{5}@.{5}/g,
group: ""
}, {
name: "SELF-EMAIL",
regex: /[^\/]{4}(@|%40)(?=kvk\.nl)[^\/]{4}/gi,
group: ""
}, {
name: "ADDRESS",
regex: /((adres=)|(straat=)|(address=)|(huisnummer=)|(street=))[^&\/\?]+/gi,
group: "$1"
}, {
name: "TEL",
regex: /((tel=)|(telephone=)|(phone=)|(mobile=)|(mob=)|(telefoonnummer=))[\d\+\s][^&\/\?]+/gi,
group: "$1"
}, {
name: "NAME",
regex: /((firstname=)|(lastname=)|(surname=)|(naam=)|(voornaam=)|(achternaam=)|(username=)|(userName=)|(gebruikersnaam=)|(userid=)|(toegangscode=)|(tussenvoegsel=)|(voorletters=)|(geslacht=)|(firstName=))[^&\/\?]+/gi,
group: "$1"
}, {
name: "PASSWORD",
regex: /((password=)|(passwd=)|(pass=)|(wachtwoord=)|(ww=)|(passwordResetToken=))[^&\/\?]+/gi,
group: "$1"
}, {
name: "POTENTIAL_PII_REFERRAL",
regex: /((ref=))[^&\/\?]+/gi,
group: "$1"
}, {
name: "POTENTIAL_PII_INFO",
regex: /.{5}STRAATHNR.{5}/g,
group: "$1"
}, {
name: "ZIPORADDRESS",
regex: /((postcode=)|(zipcode=)|(zip=)|(straat=)|(plaats=)|(huisnummer=)|(PCPLAATS=)|(STRAATHNR=)|(UTT=)|(nladdresszip=)|(nladdressstreet=))[^&\/\?@]+/gi,
group: "$1"
}],
k = c.get("sendHitTask"),
g, b;
c.set("sendHitTask",
function(d) {
g = c.get("hitPayload");
b = g.replace(/(^\?)/, "").split("\x26").map(function(a) {
return a = a.split("\x3d"), this[a[0]] = a[1], this
}.bind({}))[0];
for (var e in b) {
var f = decodeURIComponent(b[e]);
h.forEach(function(a) {
f.match(a.regex) && (b[e] = encodeURIComponent(f.replace(a.regex, a.group + "[BLOCKED " + a.name + "]")), f = decodeURIComponent(b[e]))
})
}
d.set("hitPayload", Object.keys(b).map(function(a) {
return a + "\x3d" + b[a]
}).join("\x26"), !0);
k(d)
})
} catch (d) {}
}
})();
(function() {
return $('div.content-body [href *\x3d"kvk"], div.content-body [href^\x3d"/"]').length
})();
/*! modernizr 3.3.1 (Custom Build) | MIT *
* https://modernizr.com/download/?-borderradius-flexbox-flexboxlegacy-fullscreen-svg-domprefixes-mq-prefixes-setclasses-testallprops-testprop-teststyles !*/
!(function(e, n, t) {
function r(e, n) {
return typeof e === n;
}
function o() {
var e, n, t, o, s, i, a;
for (var l in x)
if (x.hasOwnProperty(l)) {
if (
((e = []), (n = x[l]),
n.name &&
(e.push(n.name.toLowerCase()),
n.options &&
n.options.aliases &&
n.options.aliases.length))
)
for (t = 0; t < n.options.aliases.length; t++)
e.push(n.options.aliases[t].toLowerCase());
for (
o = r(n.fn, "function") ? n.fn() : n.fn, s = 0; s < e.length; s++
)
(i = e[s]), (a = i.split(".")),
1 === a.length ? (Modernizr[a[0]] = o) : (!Modernizr[a[0]] ||
Modernizr[a[0]] instanceof Boolean ||
(Modernizr[a[0]] = new Boolean(
Modernizr[a[0]]
)), (Modernizr[a[0]][a[1]] = o)),
y.push((o ? "" : "no-") + a.join("-"));
}
}
function s(e) {
var n = w.className,
t = Modernizr._config.classPrefix || "";
if ((_ && (n = n.baseVal), Modernizr._config.enableJSClass)) {
var r = new RegExp("(^|\\s)" + t + "no-js(\\s|$)");
n = n.replace(r, "$1" + t + "js$2");
}
Modernizr._config.enableClasses &&
((n += " " + t + e.join(" " + t)),
_ ? (w.className.baseVal = n) : (w.className = n));
}
function i() {
return "function" != typeof n.createElement ? n.createElement(arguments[0]) : _ ? n.createElementNS.call(
n,
"http://www.w3.org/2000/svg",
arguments[0]
) : n.createElement.apply(n, arguments);
}
function a() {
var e = n.body;
return e || ((e = i(_ ? "svg" : "body")), (e.fake = !0)), e;
}
function l(e, t, r, o) {
var s,
l,
f,
u,
d = "modernizr",
c = i("div"),
p = a();
if (parseInt(r, 10))
for (; r--;)
(f = i("div")), (f.id = o ? o[r] : d + (r + 1)),
c.appendChild(f);
return (
(s = i("style")), (s.type = "text/css"), (s.id = "s" + d), (p.fake ? p : c).appendChild(s),
p.appendChild(c),
s.styleSheet ? (s.styleSheet.cssText = e) : s.appendChild(n.createTextNode(e)), (c.id = d),
p.fake &&
((p.style.background = ""), (p.style.overflow = "hidden"), (u = w.style.overflow), (w.style.overflow = "hidden"),
w.appendChild(p)), (l = t(c, e)),
p.fake ? (p.parentNode.removeChild(p), (w.style.overflow = u),
w.offsetHeight) : c.parentNode.removeChild(c), !!l
);
}
function f(e, n) {
return !!~("" + e).indexOf(n);
}
function u(e) {
return e
.replace(/([a-z])-([a-z])/g, function(e, n, t) {
return n + t.toUpperCase();
})
.replace(/^-/, "");
}
function d(e, n) {
return function() {
return e.apply(n, arguments);
};
}
function c(e, n, t) {
var o;
for (var s in e)
if (e[s] in n)
return t === !1 ? e[s] : ((o = n[e[s]]), r(o, "function") ? d(o, t || n) : o);
return !1;
}
function p(e) {
return e
.replace(/([A-Z])/g, function(e, n) {
return "-" + n.toLowerCase();
})
.replace(/^ms-/, "-ms-");
}
function m(n, r) {
var o = n.length;
if ("CSS" in e && "supports" in e.CSS) {
for (; o--;)
if (e.CSS.supports(p(n[o]), r)) return !0;
return !1;
}
if ("CSSSupportsRule" in e) {
for (var s = []; o--;) s.push("(" + p(n[o]) + ":" + r + ")");
return (
(s = s.join(" or ")),
l(
"@supports (" +
s +
") { #modernizr { position: absolute; } }",
function(e) {
return "absolute" == getComputedStyle(e, null).position;
}
)
);
}
return t;
}
function v(e, n, o, s) {
function a() {
d && (delete R.style, delete R.modElem);
}
if (((s = r(s, "undefined") ? !1 : s), !r(o, "undefined"))) {
var l = m(e, o);
if (!r(l, "undefined")) return l;
}
for (
var d, c, p, v, g, h = ["modernizr", "tspan", "samp"]; !R.style && h.length;
)
(d = !0), (R.modElem = i(h.shift())), (R.style = R.modElem.style);
for (p = e.length, c = 0; p > c; c++)
if (
((v = e[c]), (g = R.style[v]),
f(v, "-") && (v = u(v)),
R.style[v] !== t)
) {
if (s || r(o, "undefined")) return a(), "pfx" == n ? v : !0;
try {
R.style[v] = o;
} catch (y) {}
if (R.style[v] != g) return a(), "pfx" == n ? v : !0;
}
return a(), !1;
}
function g(e, n, t, o, s) {
var i = e.charAt(0).toUpperCase() + e.slice(1),
a = (e + " " + T.join(i + " ") + i).split(" ");
return r(n, "string") || r(n, "undefined") ? v(a, n, o, s) : ((a = (e + " " + E.join(i + " ") + i).split(" ")), c(a, n, t));
}
function h(e, n, r) {
return g(e, t, t, n, r);
}
var y = [],
x = [],
C = {
_version: "3.3.1",
_config: {
classPrefix: "",
enableClasses: !0,
enableJSClass: !0,
usePrefixes: !0
},
_q: [],
on: function(e, n) {
var t = this;
setTimeout(function() {
n(t[e]);
}, 0);
},
addTest: function(e, n, t) {
x.push({
name: e,
fn: n,
options: t
});
},
addAsyncTest: function(e) {
x.push({
name: null,
fn: e
});
}
},
Modernizr = function() {};
(Modernizr.prototype = C), (Modernizr = new Modernizr()),
Modernizr.addTest(
"svg", !!n.createElementNS &&
!!n.createElementNS("http://www.w3.org/2000/svg", "svg")
.createSVGRect
);
var S = C._config.usePrefixes ? " -webkit- -moz- -o- -ms- ".split(" ") : ["", ""];
C._prefixes = S;
var w = n.documentElement,
_ = "svg" === w.nodeName.toLowerCase(),
b = "Moz O ms Webkit",
E = C._config.usePrefixes ? b.toLowerCase().split(" ") : [];
C._domPrefixes = E;
var P = (function() {
var n = e.matchMedia || e.msMatchMedia;
return n ? function(e) {
var t = n(e);
return (t && t.matches) || !1;
} : function(n) {
var t = !1;
return (
l(
"@media " +
n +
" { #modernizr { position: absolute; } }",
function(n) {
t =
"absolute" ==
(e.getComputedStyle ? e.getComputedStyle(n, null) : n.currentStyle).position;
}
),
t
);
};
})();
C.mq = P;
var T = ((C.testStyles = l), C._config.usePrefixes ? b.split(" ") : []);
C._cssomPrefixes = T;
var z = function(n) {
var r,
o = S.length,
s = e.CSSRule;
if ("undefined" == typeof s) return t;
if (!n) return !1;
if (
((n = n.replace(/^@/, "")), (r = n.replace(/-/g, "_").toUpperCase() + "_RULE"),
r in s)
)
return "@" + n;
for (var i = 0; o > i; i++) {
var a = S[i],
l = a.toUpperCase() + "_" + r;
if (l in s) return "@-" + a.toLowerCase() + "-" + n;
}
return !1;
};
C.atRule = z;
var N = {
elem: i("modernizr")
};
Modernizr._q.push(function() {
delete N.elem;
});
var R = {
style: N.elem.style
};
Modernizr._q.unshift(function() {
delete R.style;
});
C.testProp = function(e, n, r) {
return v([e], t, n, r);
};
(C.testAllProps = g), (C.testAllProps = h),
Modernizr.addTest("borderradius", h("borderRadius", "0px", !0)),
Modernizr.addTest("flexbox", h("flexBasis", "1px", !0)),
Modernizr.addTest("flexboxlegacy", h("boxDirection", "reverse", !0));
var j = (C.prefixed = function(e, n, t) {
return 0 === e.indexOf("@") ? z(e) : (-1 != e.indexOf("-") && (e = u(e)),
n ? g(e, n, t) : g(e, "pfx"));
});
Modernizr.addTest(
"fullscreen", !(!j("exitFullscreen", n, !1) && !j("cancelFullScreen", n, !1))
),
o(),
s(y),
delete C.addTest,
delete C.addAsyncTest;
for (var k = 0; k < Modernizr._q.length; k++) Modernizr._q[k]();
e.Modernizr = Modernizr;
})(window, document);
var dynamicForm = moduleLoader(
(function() {
var $dynamicForm = $(".js-dynamic-form");
function init() {
if ($dynamicForm.length !== 1) {
return;
}
// this is so we can remove the error-classes and validation for text-input with radios, like radio with euro-box in Volmacht.
// when one clicks on the other radio, React doesnt know they belong together, and thus doesnt respond to the 'onchange' for the radio with text.
// therefore we need to manually remove the validation
$dynamicForm.on("click", ".js-group-has-text", function() {
var $this = $(this),
parentid = $this.find("input").data("parentid"),
$textInputs = $dynamicForm.find(
".js-text-group-" + parentid
);
$textInputs.each(function(index, item) {
var $textInput = $(item);
$textInput.removeClass("error");
$textInput
.parents()
.find("span.error")
.remove();
});
});
$dynamicForm.on("click", ".js-max-selection", checkMaxSelection);
}
// when clicked on a element with this class, it searches for other elements with this group name.
// it checks for a maximum on selected items in this group, and disables all other elements in the group when the max number is hit.
// first made for the checkbox in formulier Handelsnaam (Ondernemingsgegevens), to max the choice for a primaire handelsnaam to just 1.
function checkMaxSelection() {
var $element = $dynamicForm.find(".js-max-selection");
var maxNumber = $element.data("maxnumber-selected"),
groupName =
".plus-element [data-group-name='" +
$element.data("group-name") +
"']",
checkedItems = 0,
elementsToCheck = $dynamicForm.find(groupName);
elementsToCheck.each(function() {
if (this.checked) {
checkedItems++;
}
});
if (checkedItems >= maxNumber) {
//if checked items count is equal or exceeds the maximum allowed number, disable the other unchecked items.
elementsToCheck.each(function() {
this.disabled = !this.checked;
if (this.disabled) {
$(this).addClass("checkbox-new__input--disabled");
} else {
$(this).removeClass("checkbox-new__input--disabled");
}
});
} else {
//if checked items count is still within limits, enable all items.
elementsToCheck.each(function() {
this.disabled = false;
$(this).removeClass("checkbox-new__input--disabled");
});
}
}
$(document).ready(function() {
setTimeout(function() {
checkMaxSelection();
$(document).on(
"click",
".js-dynamic-form .button-new, .js-dynamic-form .plus-element .icon--remove-new",
function() {
setTimeout(function() {
checkMaxSelection();
}, 800);
}
);
}, 800); //force check in 1sec after form is available
});
return {
init: init
};
})()
);
/*
* All JS functions related to modals.
*/
var modal = moduleLoader(
(function() {
function init() {
showModalWithTimer();
}
/**
* This function will show a modal popup box on the center of the canvas
* and stay there while scrolling. The modal popup box will show after 25 min of inactivity.
*
*/
function showModalWithTimer() {
var idleTimer = null,
redirectTimer = null,
idleWait = 15 * 60 * 1000, //15 min
redirectWait = 20 * 60 * 1000, //20 min
$modal = $(".js-modal-timeout");
var path = window.location.pathname.split("/"); //Length is always atleast 3.
//If there is no modal present.
if (!$modal.length) {
return;
}
//Start the timeouts.
startTimeOuts();
function startTimeOuts() {
clearTimeout(idleTimer); //Clear all timeouts
clearTimeout(redirectTimer);
idleTimer = setTimeout(function() {
dataLayer.push({
events: [{
category: "meldingen"
}, {
action: "weergaves"
}, {
label: path[path.length - 2]
}, ],
event: "interaction",
});
// After idleWait amount of time, show the modal.
$modal.addClass("is-active");
}, idleWait);
redirectTimer = setTimeout(function() {
// After redirectWait amount of time, redirect the user to the landing page.
// We do this because their session is expired.
handleErrorSessionRenewal();
}, redirectWait);
}
/**
* When one clicks on the modal-pop-up that they want to extend their session and continue,
* a call is made to the sessionExtendHandler.
* This handler resets the timeout for the session.
*
*/
$("body").on("click", ".js-active-state", function() {
dataLayer.push({
events: [{
category: "meldingen"
}, {
action: "sluiten"
}, {
label: path[path.length - 2]
}, ],
event: "interaction",
});
handleSessionExtension($modal);
startTimeOuts();
});
}
/*
* Do a call to a handler to extend the users session.
*
*/
function handleSessionExtension($modal) {
var sessionExtendHandlerUrl = configuration.sessionExtendHandler;
$.ajax({
url: sessionExtendHandlerUrl,
})
.fail(function(err) {
handleErrorSessionRenewal();
})
.done(function() {
handleSuccessSessionRenewal($modal);
});
}
function handleSuccessSessionRenewal($modal) {
$modal.removeClass("is-active");
}
function handleErrorSessionRenewal() {
var redirectUrl = "/inschrijven-en-wijzigen/";
//Redirect User to start of flow.
window.location = redirectUrl;
}
return {
init: init,
};
})()
);
/**
* Site Analytics
*
*
*/
var siteAnalytics = moduleLoader(
(function() {
var externalLinkExcludes = [
"//www.kvk.nl",
"//kvk.nl",
"//server.db.kvk.nl",
"//diensten.kvk.nl"
];
function init() {
trackExternalLinks();
}
function trackExternalLinks() {
var linkNumber = 1;
$("a[href ^=http]")
.filter(function() {
var $this = $(this),
kvk = false;
for (var i = 0; i < externalLinkExcludes.length; ++i) {
if (
$this
.attr("href")
.indexOf(externalLinkExcludes[i]) > -1
) {
kvk = true;
}
}
if (!kvk) {
return true;
}
})
.each(function() {
var $this = $(this);
$this.attr("data-analytics-link-number", linkNumber); // for analytics
$this.on("click", function(e) {
var $this = $(this),
url = $this.attr("href"),
newTab =
e.metaKey ||
e.ctrlKey ||
$this.prop("target") === "_blank";
if (!newTab) {
// don't change the url when opening in a new tab
if (
$this
.prop("class")
.indexOf("js-share-buttons") === -1
) {
// don't change url when share buttons
setTimeout(function() {
// delay opening link to push data to google analytics
window.location.href = url;
}, 100);
}
e.preventDefault();
}
dataLayer.push({
events: [{
category: "uitgaande links"
}, {
action: url
}, {
label: linkNumber
}],
event: "interaction"
});
});
linkNumber++;
});
}
return {
init: init
};
})()
);
/**
* httpService
*
* Functions as a wrapper around the $.ajax method
* so we have a single point for configuration
* variables e.d.
*
* @returns httpService <global>
*/
var httpService = moduleLoader(
(function() {
function ajax(url, ajaxOptions) {
var defaultAjaxOptions = {
type: "GET",
dataType: "json",
contentType: "application/json; charset=utf-8",
timeout: 5000,
crossDomain: window.location.hostname === "www.loc.kvk.nl"
};
var combinedAjaxOptions = $.extend({},
defaultAjaxOptions,
ajaxOptions
);
return $.ajax(url, combinedAjaxOptions).fail(function(data) {
/**
* Global implementation to redirect to
* the login page when fetching a protected
* API resource using ajax.
*/
if (data.status == 401) {
if (window.location.hostname != "www.loc.kvk.nl") {
return location.reload(true);
}
}
});
}
return {
ajax: ajax
};
})()
);
window.httpService = httpService;
(function() {
var a = google_tag_manager["GTM-P2JD7J"].macro(2);
a = a / 250 * 60;
return a = Math.round(a)
})();
(function() {
var c = new Date,
a = new Date(c.toLocaleString("en-US", {
timeZone: "Europe/Amsterdam"
}));
c = a.getHours();
var b = a.getMinutes();
a = a.getSeconds();
c = 3600 * c + 60 * b + a;
b = new Date;
b = new Date(b.toLocaleString("en-US", {
timeZone: "Europe/Amsterdam"
}));
var e = String(b.getDate()).padStart(2, "0"),
d = String(b.getMonth() + 1).padStart(2, "0");
a = [];
a.push("01-01");
a.push("18-04");
a.push("27-04");
a.push("26-05");
a.push("06-06");
a.push("25-12");
a.push("26-12");
a = a.includes(e + "-" + d);
var f = [];
f.push("05-12");
f.push("24-12");
f.push("31-12");
d = f.includes(e + "-" + d);
e = 30600;
d = d ? 57600 : 61200;
return c >= e && c < d && !1 === a ? 0 < b.getDay() && 6 > b.getDay() ? !0 : !1 : !1
})();
Request | Response |
---|---|
GET /baUZ4f HTTP/1.1
|
search
|
GET /v1/ HTTP/1.1
|
search
|
POST / HTTP/1.1
|
search
|
GET /chains/remote-settings.content-signature.mozilla.org-2022-10-09-23-18-04.chain HTTP/1.1
|
search
|
POST / HTTP/1.1
|
search
|
GET /v1/tiles HTTP/1.1
|
search
|
GET /v1/buckets/main/collections/ms-language-packs/records/cfr-v1-en-US HTTP/1.1
|
search
|
POST / HTTP/1.1
|
search
|
GET / HTTP/1.1
|
search
|
POST / HTTP/1.1
|
search
|
POST / HTTP/1.1
|
search
|
POST / HTTP/1.1
|
search
|
POST / HTTP/1.1
|
search
|
GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F7ad09c5e-a115-4ff7-9742-809e93046365.jpeg HTTP/1.1
|
search
|
GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F326e03cd-e1aa-45a4-8a6b-bdd21f21012c.jpeg HTTP/1.1
|
search
|
GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2Fdb23e94d-8ec7-469f-94d2-e08f8feef5d5.jpeg HTTP/1.1
|
search
|
GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2Fa7142280-0dbd-4c8e-a960-d357c9143af6.jpeg HTTP/1.1
|
search
|
GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F13d7f0db-89d6-4166-b182-85e35e518df9.jpeg HTTP/1.1
|
search
|
GET /296x148/filters:format(jpeg):quality(60):no_upscale():strip_exif()/https%3A%2F%2Fs3.amazonaws.com%2Fpocket-curatedcorpusapi-prod-images%2F69b1e092-41e6-4f1e-b330-193f7dd11afc.jpeg HTTP/1.1
|
search
|
POST /gts1c3 HTTP/1.1
|
search
|
GET /gtag/js?id=UA-521618-19 HTTP/1.1
|
search
|
POST /gts1c3 HTTP/1.1
|
search
|
GET /css/common.css HTTP/1.1
|
search
|
GET /css/m/goto/main.css?1589256369 HTTP/1.1
|
search
|
GET /js/clipboard.min.js HTTP/1.1
|
search
|
GET /baUZ4f HTTP/1.1
|
search
|
GET /js/m/goto/main.js?1589256369 HTTP/1.1
|
search
|
GET /js/tz.js?1564082453 HTTP/1.1
|
search
|
GET /css/fontawesome.all.min.css HTTP/1.1
|
search
|
GET /js/jquery-3.4.1.min.js HTTP/1.1
|
search
|
GET /js/bootstrap.bundle.min.js HTTP/1.1
|
search
|
GET /favicon.ico HTTP/1.1
|
search
|
POST /private/tz/?0.04782384308909449 HTTP/1.1
|
search
|
GET /analytics.js HTTP/1.1
|
search
|
POST /gseccovsslca2018 HTTP/1.1
|
search
|
GET /metrika/tag.js HTTP/1.1
|
search
|
GET /metrika/advert.gif HTTP/1.1
|
search
|
GET /watch/51501257/1?wmode=7&page-url=https%3A%2F%2Fhm.ru%2FbaUZ4f&charset=utf-8&browser-info=pv%3A1%3Agdpr%3A14%3Avf%3A2ofv6mafcjh9urjbdp7e2g%3Afp%3A4448%3Afu%3A0%3Aen%3Autf-8%3Ala%3Aen-US%3Av%3A882%3Acn%3A1%3Adp%3A0%3Als%3A359215739541%3Ahid%3A3672578%3Az%3A0%3Ai%3A20220905205727%3Aet%3A1662411447%3Ac%3A1%3Arn%3A977272714%3Arqn%3A1%3Au%3A1662411447976325073%3Aw%3A1280x939%3As%3A1280x1024x24%3Ask%3A1%3Ans%3A1662411442195%3Ads%3A1%2C94%2C3620%2C0%2C321%2C0%2C%2C353%2C4%2C%2C%2C%2C4431%3Awv%3A2%3Aco%3A0%3Afip%3Aa81f3b9bcdd80a361c14af38dc09b309-a81f3b9bcdd80a361c14af38dc09b309-a81f3b9bcdd80a361c14af38dc09b309-4bd84c89c35a312599d807af285e7b5f-4335742423629acc806791d3e9f585f3-5b56a9f28e63b1a76c5f94a136cc484e-61b9878bbce18de73aafc8582a198c0c-e9c964637c807fcca817e718cc2d1338-a81f3b9bcdd80a361c14af38dc09b309-c6d7b47b2dcff33f80cab17f3a360d0b-2facd2c41a0047c68391f933b930bc3a%3Arqnl%3A1%3Ast%3A1662411447%3At%3AHyper%20Magic&t=gdpr%2814%29clc%280-0-0%29aw%281%29rqnt%281%29fip%281%29rqnl%281%29ti%282%29 HTTP/1.1
|
search
|
POST /webvisor/51501257?wmode=0&wv-part=1&wv-hit=3672578&page-url=https%3A%2F%2Fhm.ru%2FbaUZ4f&rn=683432515&wv-type=3&browser-info=bt%3A1%3Agdpr%3A14%3Aet%3A1662411448%3Aw%3A1280x939%3Av%3A882%3Az%3A0%3Ai%3A20220905205727%3Au%3A1662411447976325073%3Avf%3A2ofv6mafcjh9urjbdp7e2g%3Awe%3A1%3Ast%3A1662411448&t=gdpr(14)ti(2) HTTP/1.1
|
search
|
POST /webvisor/51501257?wmode=0&wv-part=1&wv-hit=3672578&page-url=https%3A%2F%2Fhm.ru%2FbaUZ4f&rn=953965203&wv-type=3&browser-info=gdpr%3A14%3Aet%3A1662411448%3Aw%3A1280x939%3Av%3A882%3Az%3A0%3Ai%3A20220905205727%3Au%3A1662411447976325073%3Avf%3A2ofv6mafcjh9urjbdp7e2g%3Awe%3A1%3Ast%3A1662411448&t=gdpr(14)ti(2) HTTP/1.1
|
search
|
POST / HTTP/1.1
|
search
|
GET /google2 HTTP/1.1
|
search
|
POST / HTTP/1.1
|
search
|
GET / HTTP/1.1
|
search
|
GET / HTTP/1.1
|
search
|
GET /css/styles.min.css?v=8d74182bec HTTP/1.1
|
search
|
GET /css/styles-40.min.css?v=8d74182bec HTTP/1.1
|
search
|
GET /js/bundles/527.chunk.js?v=8d74182bec HTTP/1.1
|
search
|
GET /js/bundles/1678.chunk.js?v=8d74182bec HTTP/1.1
|
search
|
GET /js/bundles/json2React.bundle.js?v=8d74182bec HTTP/1.1
|
search
|
GET /js/bundles/199.chunk.js?v=8d74182bec HTTP/1.1
|
search
|
GET /js/bundles/7029.chunk.js?v=8d74182bec HTTP/1.1
|
search
|
GET /js/bundles/Page.Home.chunk.js?v=8d74182bec HTTP/1.1
|
search
|
GET /js/bundles/scripts.bundle.js?v=8d74182bec HTTP/1.1
|
search
|
GET /js/bundles/vendor.bundle.js?v=8d74182bec HTTP/1.1
|
search
|
GET /download/Ondernemersplein_KVK_311_tcm109-483624.jpg HTTP/1.1
|
search
|
GET /js/bundles/3097.chunk.js?v=8d74182bec HTTP/1.1
|
search
|
GET /download/OMAR_376x376_tcm109-507288.jpg HTTP/1.1
|
search
|
GET /js/bundles/common.bundle.js?v=8d74182bec HTTP/1.1
|
search
|
GET /download/beeld_banner_loketklimaatenduurzaamheid_tcm109-506193.jpg HTTP/1.1
|
search
|
GET /css/print-20.min.css?v=8d74182bec HTTP/1.1
|
search
|
GET /css/print.min.css?v=8d74182bec HTTP/1.1
|
search
|
GET /download/prent_dromen_bannerblok_tcm109-508571.svg HTTP/1.1
|
search
|
POST / HTTP/1.1
|
search
|
GET /v1/geoip?weather=false HTTP/1.1
|
search
|
GET /download/KVK_ondernemersdagen_08_banner_tcm109-508816.jpg HTTP/1.1
|
search
|