");
return b.inlineElement = e, e
}
return n.updateStatus("ready"), n._parseMarkup(c, {}, b), c
}
}
});
var H = "ajax",
I, J = function() {
I && a(document.body).removeClass(I)
},
K = function() {
J(), n.req && n.req.abort()
};
a.magnificPopup.registerModule(H, {
options: {
settings: null,
cursor: "mfp-ajax-cur",
tError: '
The content could not be loaded.'
},
proto: {
initAjax: function() {
n.types.push(H), I = n.st.ajax.cursor, w(b + "." + H, K), w("BeforeChange." + H, K)
},
getAjax: function(b) {
I && a(document.body).addClass(I), n.updateStatus("loading");
var c = a.extend({
url: b.src,
success: function(c, d, e) {
var f = {
data: c,
xhr: e
};
y("ParseAjax", f), n.appendContent(a(f.data), H), b.finished = !0, J(), n._setFocus(), setTimeout(function() {
n.wrap.addClass(k)
}, 16), n.updateStatus("ready"), y("AjaxContentAdded")
},
error: function() {
J(), b.finished = b.loadError = !0, n.updateStatus("error", n.st.ajax.tError.replace("%url%", b.src))
}
}, n.st.ajax.settings);
return n.req = a.ajax(c), ""
}
}
});
var L, M = function(b) {
if (b.data && b.data.title !== undefined) return b.data.title;
var c = n.st.image.titleSrc;
if (c) {
if (a.isFunction(c)) return c.call(n, b);
if (b.el) return b.el.attr(c) || ""
}
return ""
};
a.magnificPopup.registerModule("image", {
options: {
markup: '
',
cursor: "mfp-zoom-out-cur",
titleSrc: "title",
verticalFit: !0,
tError: '
The image could not be loaded.'
},
proto: {
initImage: function() {
var c = n.st.image,
d = ".image";
n.types.push("image"), w(g + d, function() {
n.currItem.type === "image" && c.cursor && a(document.body).addClass(c.cursor)
}), w(b + d, function() {
c.cursor && a(document.body).removeClass(c.cursor), r.off("resize" + j)
}), w("Resize" + d, n.resizeImage), n.isLowIE && w("AfterChange", n.resizeImage)
},
resizeImage: function() {
var a = n.currItem;
if (!a || !a.img) return;
if (n.st.image.verticalFit) {
var b = 0;
n.isLowIE && (b = parseInt(a.img.css("padding-top"), 10) + parseInt(a.img.css("padding-bottom"), 10)), a.img.css("max-height", n.wH - b)
}
},
_onImageHasSize: function(a) {
a.img && (a.hasSize = !0, L && clearInterval(L), a.isCheckingImgSize = !1, y("ImageHasSize", a), a.imgHidden && (n.content && n.content.removeClass("mfp-loading"), a.imgHidden = !1))
},
findImageSize: function(a) {
var b = 0,
c = a.img[0],
d = function(e) {
L && clearInterval(L), L = setInterval(function() {
if (c.naturalWidth > 0) {
n._onImageHasSize(a);
return
}
b > 200 && clearInterval(L), b++, b === 3 ? d(10) : b === 40 ? d(50) : b === 100 && d(500)
}, e)
};
d(1)
},
getImage: function(b, c) {
var d = 0,
e = function() {
b && (b.img[0].complete ? (b.img.off(".mfploader"), b === n.currItem && (n._onImageHasSize(b), n.updateStatus("ready")), b.hasSize = !0, b.loaded = !0, y("ImageLoadComplete")) : (d++, d < 200 ? setTimeout(e, 100) : f()))
},
f = function() {
b && (b.img.off(".mfploader"), b === n.currItem && (n._onImageHasSize(b), n.updateStatus("error", g.tError.replace("%url%", b.src))), b.hasSize = !0, b.loaded = !0, b.loadError = !0)
},
g = n.st.image,
h = c.find(".mfp-img");
if (h.length) {
var i = document.createElement("img");
i.className = "mfp-img", b.el && b.el.find("img").length && (i.alt = b.el.find("img").attr("alt")), b.img = a(i).on("load.mfploader", e).on("error.mfploader", f), i.src = b.src, h.is("img") && (b.img = b.img.clone()), i = b.img[0], i.naturalWidth > 0 ? b.hasSize = !0 : i.width || (b.hasSize = !1)
}
return n._parseMarkup(c, {
title: M(b),
img_replaceWith: b.img
}, b), n.resizeImage(), b.hasSize ? (L && clearInterval(L), b.loadError ? (c.addClass("mfp-loading"), n.updateStatus("error", g.tError.replace("%url%", b.src))) : (c.removeClass("mfp-loading"), n.updateStatus("ready")), c) : (n.updateStatus("loading"), b.loading = !0, b.hasSize || (b.imgHidden = !0, c.addClass("mfp-loading"), n.findImageSize(b)), c)
}
}
});
var N, O = function() {
return N === undefined && (N = document.createElement("p").style.MozTransform !== undefined), N
};
a.magnificPopup.registerModule("zoom", {
options: {
enabled: !1,
easing: "ease-in-out",
duration: 300,
opener: function(a) {
return a.is("img") ? a : a.find("img")
}
},
proto: {
initZoom: function() {
var a = n.st.zoom,
d = ".zoom",
e;
if (!a.enabled || !n.supportsTransition) return;
var f = a.duration,
g = function(b) {
var c = b.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),
d = "all " + a.duration / 1e3 + "s " + a.easing,
e = {
position: "fixed",
zIndex: 9999,
left: 0,
top: 0,
"-webkit-backface-visibility": "hidden"
},
f = "transition";
return e["-webkit-" + f] = e["-moz-" + f] = e["-o-" + f] = e[f] = d, c.css(e), c
},
h = function() {
n.content.css("visibility", "visible")
},
i, j;
w("BuildControls" + d, function() {
if (n._allowZoom()) {
clearTimeout(i), n.content.css("visibility", "hidden"), e = n._getItemToZoom();
if (!e) {
h();
return
}
j = g(e), j.css(n._getOffset()), n.wrap.append(j), i = setTimeout(function() {
j.css(n._getOffset(!0)), i = setTimeout(function() {
h(), setTimeout(function() {
j.remove(), e = j = null, y("ZoomAnimationEnded")
}, 16)
}, f)
}, 16)
}
}), w(c + d, function() {
if (n._allowZoom()) {
clearTimeout(i), n.st.removalDelay = f;
if (!e) {
e = n._getItemToZoom();
if (!e) return;
j = g(e)
}
j.css(n._getOffset(!0)), n.wrap.append(j), n.content.css("visibility", "hidden"), setTimeout(function() {
j.css(n._getOffset())
}, 16)
}
}), w(b + d, function() {
n._allowZoom() && (h(), j && j.remove(), e = null)
})
},
_allowZoom: function() {
return n.currItem.type === "image"
},
_getItemToZoom: function() {
return n.currItem.hasSize ? n.currItem.img : !1
},
_getOffset: function(b) {
var c;
b ? c = n.currItem.img : c = n.st.zoom.opener(n.currItem.el || n.currItem);
var d = c.offset(),
e = parseInt(c.css("padding-top"), 10),
f = parseInt(c.css("padding-bottom"), 10);
d.top -= a(window).scrollTop() - e;
var g = {
width: c.width(),
height: (p ? c.innerHeight() : c[0].offsetHeight) - f - e
};
return O() ? g["-moz-transform"] = g.transform = "translate(" + d.left + "px," + d.top + "px)" : (g.left = d.left, g.top = d.top), g
}
}
});
var P = "iframe",
Q = "//about:blank",
R = function(a) {
if (n.currTemplate[P]) {
var b = n.currTemplate[P].find("iframe");
b.length && (a || (b[0].src = Q), n.isIE8 && b.css("display", a ? "block" : "none"))
}
};
a.magnificPopup.registerModule(P, {
options: {
markup: '
',
srcAction: "iframe_src",
patterns: {
youtube: {
index: "youtube.com",
id: "v=",
src: "//www.youtube.com/embed/%id%?autoplay=1"
},
vimeo: {
index: "vimeo.com/",
id: "/",
src: "//player.vimeo.com/video/%id%?autoplay=1"
},
gmaps: {
index: "//maps.google.",
src: "%id%&output=embed"
}
}
},
proto: {
initIframe: function() {
n.types.push(P), w("BeforeChange", function(a, b, c) {
b !== c && (b === P ? R() : c === P && R(!0))
}), w(b + "." + P, function() {
R()
})
},
getIframe: function(b, c) {
var d = b.src,
e = n.st.iframe;
a.each(e.patterns, function() {
if (d.indexOf(this.index) > -1) return this.id && (typeof this.id == "string" ? d = d.substr(d.lastIndexOf(this.id) + this.id.length, d.length) : d = this.id.call(this, d)), d = this.src.replace("%id%", d), !1
});
var f = {};
return e.srcAction && (f[e.srcAction] = d), n._parseMarkup(c, f, b), n.updateStatus("ready"), c
}
}
});
var S = function(a) {
var b = n.items.length;
return a > b - 1 ? a - b : a < 0 ? b + a : a
},
T = function(a, b, c) {
return a.replace(/%curr%/gi, b + 1).replace(/%total%/gi, c)
};
a.magnificPopup.registerModule("gallery", {
options: {
enabled: !1,
arrowMarkup: '
',
preload: [0, 2],
navigateByImgClick: !0,
arrows: !0,
tPrev: "Previous (Left arrow key)",
tNext: "Next (Right arrow key)",
tCounter: "%curr% of %total%"
},
proto: {
initGallery: function() {
var c = n.st.gallery,
d = ".mfp-gallery";
n.direction = !0;
if (!c || !c.enabled) return !1;
u += " mfp-gallery", w(g + d, function() {
c.navigateByImgClick && n.wrap.on("click" + d, ".mfp-img", function() {
if (n.items.length > 1) return n.next(), !1
}), s.on("keydown" + d, function(a) {
a.keyCode === 37 ? n.prev() : a.keyCode === 39 && n.next()
})
}), w("UpdateStatus" + d, function(a, b) {
b.text && (b.text = T(b.text, n.currItem.index, n.items.length))
}), w(f + d, function(a, b, d, e) {
var f = n.items.length;
d.counter = f > 1 ? T(c.tCounter, e.index, f) : ""
}), w("BuildControls" + d, function() {
if (n.items.length > 1 && c.arrows && !n.arrowLeft) {
var b = c.arrowMarkup,
d = n.arrowLeft = a(b.replace(/%title%/gi, c.tPrev).replace(/%dir%/gi, "left")).addClass(m),
e = n.arrowRight = a(b.replace(/%title%/gi, c.tNext).replace(/%dir%/gi, "right")).addClass(m);
d.click(function() {
n.prev()
}), e.click(function() {
n.next()
}), n.container.append(d.add(e))
}
}), w(h + d, function() {
n._preloadTimeout && clearTimeout(n._preloadTimeout), n._preloadTimeout = setTimeout(function() {
n.preloadNearbyImages(), n._preloadTimeout = null
}, 16)
}), w(b + d, function() {
s.off(d), n.wrap.off("click" + d), n.arrowRight = n.arrowLeft = null
})
},
next: function() {
n.direction = !0, n.index = S(n.index + 1), n.updateItemHTML()
},
prev: function() {
n.direction = !1, n.index = S(n.index - 1), n.updateItemHTML()
},
goTo: function(a) {
n.direction = a >= n.index, n.index = a, n.updateItemHTML()
},
preloadNearbyImages: function() {
var a = n.st.gallery.preload,
b = Math.min(a[0], n.items.length),
c = Math.min(a[1], n.items.length),
d;
for (d = 1; d <= (n.direction ? c : b); d++) n._preloadItem(n.index + d);
for (d = 1; d <= (n.direction ? b : c); d++) n._preloadItem(n.index - d)
},
_preloadItem: function(b) {
b = S(b);
if (n.items[b].preloaded) return;
var c = n.items[b];
c.parsed || (c = n.parseEl(b)), y("LazyLoad", c), c.type === "image" && (c.img = a('
').on("load.mfploader", function() {
c.hasSize = !0
}).on("error.mfploader", function() {
c.hasSize = !0, c.loadError = !0, y("LazyLoadError", c)
}).attr("src", c.src)), c.preloaded = !0
}
}
});
var U = "retina";
a.magnificPopup.registerModule(U, {
options: {
replaceSrc: function(a) {
return a.src.replace(/\.\w+$/, function(a) {
return "@2x" + a
})
},
ratio: 1
},
proto: {
initRetina: function() {
if (window.devicePixelRatio > 1) {
var a = n.st.retina,
b = a.ratio;
b = isNaN(b) ? b() : b, b > 1 && (w("ImageHasSize." + U, function(a, c) {
c.img.css({
"max-width": c.img[0].naturalWidth / b,
width: "100%"
})
}), w("ElementParse." + U, function(c, d) {
d.src = a.replaceSrc(d, b)
}))
}
}
}
}), A()
})
/*! modernizr 3.3.1 (Custom Build) | MIT *
* https://modernizr.com/download/?-flexbox-requestanimationframe-touchevents-setclasses !*/
! function(e, n, t) {
function r(e, n) {
return typeof e === n
}
function o() {
var e, n, t, o, s, i, a;
for (var f in C)
if (C.hasOwnProperty(f)) {
if (e = [], n = C[f], 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), g.push((o ? "" : "no-") + a.join("-"))
}
}
function s(e) {
var n = _.className,
t = Modernizr._config.classPrefix || "";
if (w && (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 : _.className = n)
}
function i(e) {
return e.replace(/([a-z])-([a-z])/g, function(e, n, t) {
return n + t.toUpperCase()
}).replace(/^-/, "")
}
function a() {
return "function" != typeof n.createElement ? n.createElement(arguments[0]) : w ? n.createElementNS.call(n, "http://www.w3.org/2000/svg", arguments[0]) : n.createElement.apply(n, arguments)
}
function f() {
var e = n.body;
return e || (e = a(w ? "svg" : "body"), e.fake = !0), e
}
function l(e, t, r, o) {
var s, i, l, u, p = "modernizr",
c = a("div"),
d = f();
if (parseInt(r, 10))
for (; r--;) l = a("div"), l.id = o ? o[r] : p + (r + 1), c.appendChild(l);
return s = a("style"), s.type = "text/css", s.id = "s" + p, (d.fake ? d : c).appendChild(s), d.appendChild(c), s.styleSheet ? s.styleSheet.cssText = e : s.appendChild(n.createTextNode(e)), c.id = p, d.fake && (d.style.background = "", d.style.overflow = "hidden", u = _.style.overflow, _.style.overflow = "hidden", _.appendChild(d)), i = t(c, e), d.fake ? (d.parentNode.removeChild(d), _.style.overflow = u, _.offsetHeight) : c.parentNode.removeChild(c), !!i
}
function u(e, n) {
return function() {
return e.apply(n, arguments)
}
}
function p(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") ? u(o, t || n) : o);
return !1
}
function c(e, n) {
return !!~("" + e).indexOf(n)
}
function d(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(d(n[o]), r)) return !0;
return !1
}
if ("CSSSupportsRule" in e) {
for (var s = []; o--;) s.push("(" + d(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 f() {
u && (delete N.style, delete N.modElem)
}
if (s = r(s, "undefined") ? !1 : s, !r(o, "undefined")) {
var l = m(e, o);
if (!r(l, "undefined")) return l
}
for (var u, p, d, v, h, y = ["modernizr", "tspan", "samp"]; !N.style && y.length;) u = !0, N.modElem = a(y.shift()), N.style = N.modElem.style;
for (d = e.length, p = 0; d > p; p++)
if (v = e[p], h = N.style[v], c(v, "-") && (v = i(v)), N.style[v] !== t) {
if (s || r(o, "undefined")) return f(), "pfx" == n ? v : !0;
try {
N.style[v] = o
} catch (g) {}
if (N.style[v] != h) return f(), "pfx" == n ? v : !0
}
return f(), !1
}
function h(e, n, t, o, s) {
var i = e.charAt(0).toUpperCase() + e.slice(1),
a = (e + " " + z.join(i + " ") + i).split(" ");
return r(n, "string") || r(n, "undefined") ? v(a, n, o, s) : (a = (e + " " + P.join(i + " ") + i).split(" "), p(a, n, t))
}
function y(e, n, r) {
return h(e, t, t, n, r)
}
var g = [],
C = [],
x = {
_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) {
C.push({
name: e,
fn: n,
options: t
})
},
addAsyncTest: function(e) {
C.push({
name: null,
fn: e
})
}
},
Modernizr = function() {};
Modernizr.prototype = x, Modernizr = new Modernizr;
var _ = n.documentElement,
w = "svg" === _.nodeName.toLowerCase(),
S = x._config.usePrefixes ? " -webkit- -moz- -o- -ms- ".split(" ") : ["", ""];
x._prefixes = S;
var b = x.testStyles = l;
Modernizr.addTest("touchevents", function() {
var t;
if ("ontouchstart" in e || e.DocumentTouch && n instanceof DocumentTouch) t = !0;
else {
var r = ["@media (", S.join("touch-enabled),("), "heartz", ")", "{#modernizr{top:9px;position:absolute}}"].join("");
b(r, function(e) {
t = 9 === e.offsetTop
})
}
return t
});
var T = "Moz O ms Webkit",
z = x._config.usePrefixes ? T.split(" ") : [];
x._cssomPrefixes = z;
var E = 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],
f = a.toUpperCase() + "_" + r;
if (f in s) return "@-" + a.toLowerCase() + "-" + n
}
return !1
};
x.atRule = E;
var P = x._config.usePrefixes ? T.toLowerCase().split(" ") : [];
x._domPrefixes = P;
var j = {
elem: a("modernizr")
};
Modernizr._q.push(function() {
delete j.elem
});
var N = {
style: j.elem.style
};
Modernizr._q.unshift(function() {
delete N.style
}), x.testAllProps = h;
var k = x.prefixed = function(e, n, t) {
return 0 === e.indexOf("@") ? E(e) : (-1 != e.indexOf("-") && (e = i(e)), n ? h(e, n, t) : h(e, "pfx"))
};
Modernizr.addTest("requestanimationframe", !!k("requestAnimationFrame", e), {
aliases: ["raf"]
}), x.testAllProps = y, Modernizr.addTest("flexbox", y("flexBasis", "1px", !0)), o(), s(g), delete x.addTest, delete x.addAsyncTest;
for (var q = 0; q < Modernizr._q.length; q++) Modernizr._q[q]();
e.Modernizr = Modernizr
}(window, document);
// https://github.com/taylorhakes/promise-polyfill
! function(e) {
function n() {}
function t(e, n) {
return function() {
e.apply(n, arguments)
}
}
function o(e) {
if ("object" != typeof this) throw new TypeError("Promises must be constructed via new");
if ("function" != typeof e) throw new TypeError("not a function");
this._state = 0, this._handled = !1, this._value = void 0, this._deferreds = [], s(e, this)
}
function i(e, n) {
for (; 3 === e._state;) e = e._value;
return 0 === e._state ? void e._deferreds.push(n) : (e._handled = !0, void o._immediateFn(function() {
var t = 1 === e._state ? n.onFulfilled : n.onRejected;
if (null === t) return void(1 === e._state ? r : u)(n.promise, e._value);
var o;
try {
o = t(e._value)
} catch (i) {
return void u(n.promise, i)
}
r(n.promise, o)
}))
}
function r(e, n) {
try {
if (n === e) throw new TypeError("A promise cannot be resolved with itself.");
if (n && ("object" == typeof n || "function" == typeof n)) {
var i = n.then;
if (n instanceof o) return e._state = 3, e._value = n, void f(e);
if ("function" == typeof i) return void s(t(i, n), e)
}
e._state = 1, e._value = n, f(e)
} catch (r) {
u(e, r)
}
}
function u(e, n) {
e._state = 2, e._value = n, f(e)
}
function f(e) {
2 === e._state && 0 === e._deferreds.length && o._immediateFn(function() {
e._handled || o._unhandledRejectionFn(e._value)
});
for (var n = 0, t = e._deferreds.length; n < t; n++) i(e, e._deferreds[n]);
e._deferreds = null
}
function c(e, n, t) {
this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof n ? n : null, this.promise = t
}
function s(e, n) {
var t = !1;
try {
e(function(e) {
t || (t = !0, r(n, e))
}, function(e) {
t || (t = !0, u(n, e))
})
} catch (o) {
if (t) return;
t = !0, u(n, o)
}
}
var a = setTimeout;
o.prototype["catch"] = function(e) {
return this.then(null, e)
}, o.prototype.then = function(e, t) {
var o = new this.constructor(n);
return i(this, new c(e, t, o)), o
}, o.all = function(e) {
var n = Array.prototype.slice.call(e);
return new o(function(e, t) {
function o(r, u) {
try {
if (u && ("object" == typeof u || "function" == typeof u)) {
var f = u.then;
if ("function" == typeof f) return void f.call(u, function(e) {
o(r, e)
}, t)
}
n[r] = u, 0 === --i && e(n)
} catch (c) {
t(c)
}
}
if (0 === n.length) return e([]);
for (var i = n.length, r = 0; r < n.length; r++) o(r, n[r])
})
}, o.resolve = function(e) {
return e && "object" == typeof e && e.constructor === o ? e : new o(function(n) {
n(e)
})
}, o.reject = function(e) {
return new o(function(n, t) {
t(e)
})
}, o.race = function(e) {
return new o(function(n, t) {
for (var o = 0, i = e.length; o < i; o++) e[o].then(n, t)
})
}, o._immediateFn = "function" == typeof setImmediate && function(e) {
setImmediate(e)
} || function(e) {
a(e, 0)
}, o._unhandledRejectionFn = function(e) {
"undefined" != typeof console && console && console.warn("Possible Unhandled Promise Rejection:", e)
}, o._setImmediateFn = function(e) {
o._immediateFn = e
}, o._setUnhandledRejectionFn = function(e) {
o._unhandledRejectionFn = e
}, "undefined" != typeof module && module.exports ? module.exports = o : e.Promise || (e.Promise = o)
}(this);
/**
* requestAnimationFrame polyfill by Erik Möller.
* Fixes from Paul Irish, Tino Zijdel, Andrew Mao, Klemen Slavič, Darius Bacon
*
* MIT license
*/
if (!Date.now)
Date.now = function() {
return new Date().getTime();
};
(function() {
'use strict';
var vendors = ['webkit', 'moz'];
for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
var vp = vendors[i];
window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];
window.cancelAnimationFrame = (window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame']);
}
if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) // iOS6 is buggy
||
!window.requestAnimationFrame || !window.cancelAnimationFrame) {
var lastTime = 0;
window.requestAnimationFrame = function(callback) {
var now = Date.now();
var nextTime = Math.max(lastTime + 16, now);
return setTimeout(function() {
callback(lastTime = nextTime);
},
nextTime - now);
};
window.cancelAnimationFrame = clearTimeout;
}
}());
/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */
! function(a) {
"function" == typeof define && define.amd ? define(["jquery"], a) : a("object" == typeof exports ? require("jquery") : jQuery)
}(function(a) {
var b = function() {
if (a && a.fn && a.fn.select2 && a.fn.select2.amd) var b = a.fn.select2.amd;
var b;
return function() {
if (!b || !b.requirejs) {
b ? c = b : b = {};
var a, c, d;
! function(b) {
function e(a, b) {
return u.call(a, b)
}
function f(a, b) {
var c, d, e, f, g, h, i, j, k, l, m, n = b && b.split("/"),
o = s.map,
p = o && o["*"] || {};
if (a && "." === a.charAt(0))
if (b) {
for (a = a.split("/"), g = a.length - 1, s.nodeIdCompat && w.test(a[g]) && (a[g] = a[g].replace(w, "")), a = n.slice(0, n.length - 1).concat(a), k = 0; k < a.length; k += 1)
if (m = a[k], "." === m) a.splice(k, 1), k -= 1;
else if (".." === m) {
if (1 === k && (".." === a[2] || ".." === a[0])) break;
k > 0 && (a.splice(k - 1, 2), k -= 2)
}
a = a.join("/")
} else 0 === a.indexOf("./") && (a = a.substring(2));
if ((n || p) && o) {
for (c = a.split("/"), k = c.length; k > 0; k -= 1) {
if (d = c.slice(0, k).join("/"), n)
for (l = n.length; l > 0; l -= 1)
if (e = o[n.slice(0, l).join("/")], e && (e = e[d])) {
f = e, h = k;
break
}
if (f) break;
!i && p && p[d] && (i = p[d], j = k)
}!f && i && (f = i, h = j), f && (c.splice(0, h, f), a = c.join("/"))
}
return a
}
function g(a, c) {
return function() {
var d = v.call(arguments, 0);
return "string" != typeof d[0] && 1 === d.length && d.push(null), n.apply(b, d.concat([a, c]))
}
}
function h(a) {
return function(b) {
return f(b, a)
}
}
function i(a) {
return function(b) {
q[a] = b
}
}
function j(a) {
if (e(r, a)) {
var c = r[a];
delete r[a], t[a] = !0, m.apply(b, c)
}
if (!e(q, a) && !e(t, a)) throw new Error("No " + a);
return q[a]
}
function k(a) {
var b, c = a ? a.indexOf("!") : -1;
return c > -1 && (b = a.substring(0, c), a = a.substring(c + 1, a.length)), [b, a]
}
function l(a) {
return function() {
return s && s.config && s.config[a] || {}
}
}
var m, n, o, p, q = {},
r = {},
s = {},
t = {},
u = Object.prototype.hasOwnProperty,
v = [].slice,
w = /\.js$/;
o = function(a, b) {
var c, d = k(a),
e = d[0];
return a = d[1], e && (e = f(e, b), c = j(e)), e ? a = c && c.normalize ? c.normalize(a, h(b)) : f(a, b) : (a = f(a, b), d = k(a), e = d[0], a = d[1], e && (c = j(e))), {
f: e ? e + "!" + a : a,
n: a,
pr: e,
p: c
}
}, p = {
require: function(a) {
return g(a)
},
exports: function(a) {
var b = q[a];
return "undefined" != typeof b ? b : q[a] = {}
},
module: function(a) {
return {
id: a,
uri: "",
exports: q[a],
config: l(a)
}
}
}, m = function(a, c, d, f) {
var h, k, l, m, n, s, u = [],
v = typeof d;
if (f = f || a, "undefined" === v || "function" === v) {
for (c = !c.length && d.length ? ["require", "exports", "module"] : c, n = 0; n < c.length; n += 1)
if (m = o(c[n], f), k = m.f, "require" === k) u[n] = p.require(a);
else if ("exports" === k) u[n] = p.exports(a), s = !0;
else if ("module" === k) h = u[n] = p.module(a);
else if (e(q, k) || e(r, k) || e(t, k)) u[n] = j(k);
else {
if (!m.p) throw new Error(a + " missing " + k);
m.p.load(m.n, g(f, !0), i(k), {}), u[n] = q[k]
}
l = d ? d.apply(q[a], u) : void 0, a && (h && h.exports !== b && h.exports !== q[a] ? q[a] = h.exports : l === b && s || (q[a] = l))
} else a && (q[a] = d)
}, a = c = n = function(a, c, d, e, f) {
if ("string" == typeof a) return p[a] ? p[a](c) : j(o(a, c).f);
if (!a.splice) {
if (s = a, s.deps && n(s.deps, s.callback), !c) return;
c.splice ? (a = c, c = d, d = null) : a = b
}
return c = c || function() {}, "function" == typeof d && (d = e, e = f), e ? m(b, a, c, d) : setTimeout(function() {
m(b, a, c, d)
}, 4), n
}, n.config = function(a) {
return n(a)
}, a._defined = q, d = function(a, b, c) {
if ("string" != typeof a) throw new Error("See almond README: incorrect module build, no module name");
b.splice || (c = b, b = []), e(q, a) || e(r, a) || (r[a] = [a, b, c])
}, d.amd = {
jQuery: !0
}
}(), b.requirejs = a, b.require = c, b.define = d
}
}(), b.define("almond", function() {}), b.define("jquery", [], function() {
var b = a || $;
return null == b && console && console.error && console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."), b
}), b.define("select2/utils", ["jquery"], function(a) {
function b(a) {
var b = a.prototype,
c = [];
for (var d in b) {
var e = b[d];
"function" == typeof e && "constructor" !== d && c.push(d)
}
return c
}
var c = {};
c.Extend = function(a, b) {
function c() {
this.constructor = a
}
var d = {}.hasOwnProperty;
for (var e in b) d.call(b, e) && (a[e] = b[e]);
return c.prototype = b.prototype, a.prototype = new c, a.__super__ = b.prototype, a
}, c.Decorate = function(a, c) {
function d() {
var b = Array.prototype.unshift,
d = c.prototype.constructor.length,
e = a.prototype.constructor;
d > 0 && (b.call(arguments, a.prototype.constructor), e = c.prototype.constructor), e.apply(this, arguments)
}
function e() {
this.constructor = d
}
var f = b(c),
g = b(a);
c.displayName = a.displayName, d.prototype = new e;
for (var h = 0; h < g.length; h++) {
var i = g[h];
d.prototype[i] = a.prototype[i]
}
for (var j = (function(a) {
var b = function() {};
a in d.prototype && (b = d.prototype[a]);
var e = c.prototype[a];
return function() {
var a = Array.prototype.unshift;
return a.call(arguments, b), e.apply(this, arguments)
}
}), k = 0; k < f.length; k++) {
var l = f[k];
d.prototype[l] = j(l)
}
return d
};
var d = function() {
this.listeners = {}
};
return d.prototype.on = function(a, b) {
this.listeners = this.listeners || {}, a in this.listeners ? this.listeners[a].push(b) : this.listeners[a] = [b]
}, d.prototype.trigger = function(a) {
var b = Array.prototype.slice;
this.listeners = this.listeners || {}, a in this.listeners && this.invoke(this.listeners[a], b.call(arguments, 1)), "*" in this.listeners && this.invoke(this.listeners["*"], arguments)
}, d.prototype.invoke = function(a, b) {
for (var c = 0, d = a.length; d > c; c++) a[c].apply(this, b)
}, c.Observable = d, c.generateChars = function(a) {
for (var b = "", c = 0; a > c; c++) {
var d = Math.floor(36 * Math.random());
b += d.toString(36)
}
return b
}, c.bind = function(a, b) {
return function() {
a.apply(b, arguments)
}
}, c._convertData = function(a) {
for (var b in a) {
var c = b.split("-"),
d = a;
if (1 !== c.length) {
for (var e = 0; e < c.length; e++) {
var f = c[e];
f = f.substring(0, 1).toLowerCase() + f.substring(1), f in d || (d[f] = {}), e == c.length - 1 && (d[f] = a[b]), d = d[f]
}
delete a[b]
}
}
return a
}, c.hasScroll = function(b, c) {
var d = a(c),
e = c.style.overflowX,
f = c.style.overflowY;
return e !== f || "hidden" !== f && "visible" !== f ? "scroll" === e || "scroll" === f ? !0 : d.innerHeight() < c.scrollHeight || d.innerWidth() < c.scrollWidth : !1
}, c.escapeMarkup = function(a) {
var b = {
"\\": "\",
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'",
"/": "/"
};
return "string" != typeof a ? a : String(a).replace(/[&<>"'\/\\]/g, function(a) {
return b[a]
})
}, c.appendMany = function(b, c) {
if ("1.7" === a.fn.jquery.substr(0, 3)) {
var d = a();
a.map(c, function(a) {
d = d.add(a)
}), c = d
}
b.append(c)
}, c
}), b.define("select2/results", ["jquery", "./utils"], function(a, b) {
function c(a, b, d) {
this.$element = a, this.data = d, this.options = b, c.__super__.constructor.call(this)
}
return b.Extend(c, b.Observable), c.prototype.render = function() {
var b = a('
');
return this.options.get("multiple") && b.attr("aria-multiselectable", "true"), this.$results = b, b
}, c.prototype.clear = function() {
this.$results.empty()
}, c.prototype.displayMessage = function(b) {
var c = this.options.get("escapeMarkup");
this.clear(), this.hideLoading();
var d = a('
'),
e = this.options.get("translations").get(b.message);
d.append(c(e(b.args))), d[0].className += " select2-results__message", this.$results.append(d)
}, c.prototype.hideMessages = function() {
this.$results.find(".select2-results__message").remove()
}, c.prototype.append = function(a) {
this.hideLoading();
var b = [];
if (null == a.results || 0 === a.results.length) return void(0 === this.$results.children().length && this.trigger("results:message", {
message: "noResults"
}));
a.results = this.sort(a.results);
for (var c = 0; c < a.results.length; c++) {
var d = a.results[c],
e = this.option(d);
b.push(e)
}
this.$results.append(b)
}, c.prototype.position = function(a, b) {
var c = b.find(".select2-results");
c.append(a)
}, c.prototype.sort = function(a) {
var b = this.options.get("sorter");
return b(a)
}, c.prototype.setClasses = function() {
var b = this;
this.data.current(function(c) {
var d = a.map(c, function(a) {
return a.id.toString()
}),
e = b.$results.find(".select2-results__option[aria-selected]");
e.each(function() {
var b = a(this),
c = a.data(this, "data"),
e = "" + c.id;
null != c.element && c.element.selected || null == c.element && a.inArray(e, d) > -1 ? b.attr("aria-selected", "true") : b.attr("aria-selected", "false")
});
var f = e.filter("[aria-selected=true]");
f.length > 0 ? f.first().trigger("mouseenter") : e.first().trigger("mouseenter")
})
}, c.prototype.showLoading = function(a) {
this.hideLoading();
var b = this.options.get("translations").get("searching"),
c = {
disabled: !0,
loading: !0,
text: b(a)
},
d = this.option(c);
d.className += " loading-results", this.$results.prepend(d)
}, c.prototype.hideLoading = function() {
this.$results.find(".loading-results").remove()
}, c.prototype.option = function(b) {
var c = document.createElement("li");
c.className = "select2-results__option";
var d = {
role: "treeitem",
"aria-selected": "false"
};
b.disabled && (delete d["aria-selected"], d["aria-disabled"] = "true"), null == b.id && delete d["aria-selected"], null != b._resultId && (c.id = b._resultId), b.title && (c.title = b.title), b.children && (d.role = "group", d["aria-label"] = b.text, delete d["aria-selected"]);
for (var e in d) {
var f = d[e];
c.setAttribute(e, f)
}
if (b.children) {
var g = a(c),
h = document.createElement("strong");
h.className = "select2-results__group";
a(h);
this.template(b, h);
for (var i = [], j = 0; j < b.children.length; j++) {
var k = b.children[j],
l = this.option(k);
i.push(l)
}
var m = a("
", {
"class": "select2-results__options select2-results__options--nested"
});
m.append(i), g.append(h), g.append(m)
} else this.template(b, c);
return a.data(c, "data", b), c
}, c.prototype.bind = function(b, c) {
var d = this,
e = b.id + "-results";
this.$results.attr("id", e), b.on("results:all", function(a) {
d.clear(), d.append(a.data), b.isOpen() && d.setClasses()
}), b.on("results:append", function(a) {
d.append(a.data), b.isOpen() && d.setClasses()
}), b.on("query", function(a) {
d.hideMessages(), d.showLoading(a)
}), b.on("select", function() {
b.isOpen() && d.setClasses()
}), b.on("unselect", function() {
b.isOpen() && d.setClasses()
}), b.on("open", function() {
d.$results.attr("aria-expanded", "true"), d.$results.attr("aria-hidden", "false"), d.setClasses(), d.ensureHighlightVisible()
}), b.on("close", function() {
d.$results.attr("aria-expanded", "false"), d.$results.attr("aria-hidden", "true"), d.$results.removeAttr("aria-activedescendant")
}), b.on("results:toggle", function() {
var a = d.getHighlightedResults();
0 !== a.length && a.trigger("mouseup")
}), b.on("results:select", function() {
var a = d.getHighlightedResults();
if (0 !== a.length) {
var b = a.data("data");
"true" == a.attr("aria-selected") ? d.trigger("close", {}) : d.trigger("select", {
data: b
})
}
}), b.on("results:previous", function() {
var a = d.getHighlightedResults(),
b = d.$results.find("[aria-selected]"),
c = b.index(a);
if (0 !== c) {
var e = c - 1;
0 === a.length && (e = 0);
var f = b.eq(e);
f.trigger("mouseenter");
var g = d.$results.offset().top,
h = f.offset().top,
i = d.$results.scrollTop() + (h - g);
0 === e ? d.$results.scrollTop(0) : 0 > h - g && d.$results.scrollTop(i)
}
}), b.on("results:next", function() {
var a = d.getHighlightedResults(),
b = d.$results.find("[aria-selected]"),
c = b.index(a),
e = c + 1;
if (!(e >= b.length)) {
var f = b.eq(e);
f.trigger("mouseenter");
var g = d.$results.offset().top + d.$results.outerHeight(!1),
h = f.offset().top + f.outerHeight(!1),
i = d.$results.scrollTop() + h - g;
0 === e ? d.$results.scrollTop(0) : h > g && d.$results.scrollTop(i)
}
}), b.on("results:focus", function(a) {
a.element.addClass("select2-results__option--highlighted")
}), b.on("results:message", function(a) {
d.displayMessage(a)
}), a.fn.mousewheel && this.$results.on("mousewheel", function(a) {
var b = d.$results.scrollTop(),
c = d.$results.get(0).scrollHeight - b + a.deltaY,
e = a.deltaY > 0 && b - a.deltaY <= 0,
f = a.deltaY < 0 && c <= d.$results.height();
e ? (d.$results.scrollTop(0), a.preventDefault(), a.stopPropagation()) : f && (d.$results.scrollTop(d.$results.get(0).scrollHeight - d.$results.height()), a.preventDefault(), a.stopPropagation())
}), this.$results.on("mouseup", ".select2-results__option[aria-selected]", function(b) {
var c = a(this),
e = c.data("data");
return "true" === c.attr("aria-selected") ? void(d.options.get("multiple") ? d.trigger("unselect", {
originalEvent: b,
data: e
}) : d.trigger("close", {})) : void d.trigger("select", {
originalEvent: b,
data: e
})
}), this.$results.on("mouseenter", ".select2-results__option[aria-selected]", function(b) {
var c = a(this).data("data");
d.getHighlightedResults().removeClass("select2-results__option--highlighted"), d.trigger("results:focus", {
data: c,
element: a(this)
})
})
}, c.prototype.getHighlightedResults = function() {
var a = this.$results.find(".select2-results__option--highlighted");
return a
}, c.prototype.destroy = function() {
this.$results.remove()
}, c.prototype.ensureHighlightVisible = function() {
var a = this.getHighlightedResults();
if (0 !== a.length) {
var b = this.$results.find("[aria-selected]"),
c = b.index(a),
d = this.$results.offset().top,
e = a.offset().top,
f = this.$results.scrollTop() + (e - d),
g = e - d;
f -= 2 * a.outerHeight(!1), 2 >= c ? this.$results.scrollTop(0) : (g > this.$results.outerHeight() || 0 > g) && this.$results.scrollTop(f)
}
}, c.prototype.template = function(b, c) {
var d = this.options.get("templateResult"),
e = this.options.get("escapeMarkup"),
f = d(b, c);
null == f ? c.style.display = "none" : "string" == typeof f ? c.innerHTML = e(f) : a(c).append(f)
}, c
}), b.define("select2/keys", [], function() {
var a = {
BACKSPACE: 8,
TAB: 9,
ENTER: 13,
SHIFT: 16,
CTRL: 17,
ALT: 18,
ESC: 27,
SPACE: 32,
PAGE_UP: 33,
PAGE_DOWN: 34,
END: 35,
HOME: 36,
LEFT: 37,
UP: 38,
RIGHT: 39,
DOWN: 40,
DELETE: 46
};
return a
}), b.define("select2/selection/base", ["jquery", "../utils", "../keys"], function(a, b, c) {
function d(a, b) {
this.$element = a, this.options = b, d.__super__.constructor.call(this)
}
return b.Extend(d, b.Observable), d.prototype.render = function() {
var b = a('
');
return this._tabindex = 0, null != this.$element.data("old-tabindex") ? this._tabindex = this.$element.data("old-tabindex") : null != this.$element.attr("tabindex") && (this._tabindex = this.$element.attr("tabindex")), b.attr("title", this.$element.attr("title")), b.attr("tabindex", this._tabindex), this.$selection = b, b
}, d.prototype.bind = function(a, b) {
var d = this,
e = (a.id + "-container", a.id + "-results");
this.container = a, this.$selection.on("focus", function(a) {
d.trigger("focus", a)
}), this.$selection.on("blur", function(a) {
d._handleBlur(a)
}), this.$selection.on("keydown", function(a) {
d.trigger("keypress", a), a.which === c.SPACE && a.preventDefault()
}), a.on("results:focus", function(a) {
d.$selection.attr("aria-activedescendant", a.data._resultId)
}), a.on("selection:update", function(a) {
d.update(a.data)
}), a.on("open", function() {
d.$selection.attr("aria-expanded", "true"), d.$selection.attr("aria-owns", e), d._attachCloseHandler(a)
}), a.on("close", function() {
d.$selection.attr("aria-expanded", "false"), d.$selection.removeAttr("aria-activedescendant"), d.$selection.removeAttr("aria-owns"), d.$selection.focus(), d._detachCloseHandler(a)
}), a.on("enable", function() {
d.$selection.attr("tabindex", d._tabindex)
}), a.on("disable", function() {
d.$selection.attr("tabindex", "-1")
})
}, d.prototype._handleBlur = function(b) {
var c = this;
window.setTimeout(function() {
document.activeElement == c.$selection[0] || a.contains(c.$selection[0], document.activeElement) || c.trigger("blur", b)
}, 1)
}, d.prototype._attachCloseHandler = function(b) {
a(document.body).on("mousedown.select2." + b.id, function(b) {
var c = a(b.target),
d = c.closest(".select2"),
e = a(".select2.select2-container--open");
e.each(function() {
var b = a(this);
if (this != d[0]) {
var c = b.data("element");
c.select2("close")
}
})
})
}, d.prototype._detachCloseHandler = function(b) {
a(document.body).off("mousedown.select2." + b.id)
}, d.prototype.position = function(a, b) {
var c = b.find(".selection");
c.append(a)
}, d.prototype.destroy = function() {
this._detachCloseHandler(this.container)
}, d.prototype.update = function(a) {
throw new Error("The `update` method must be defined in child classes.")
}, d
}), b.define("select2/selection/single", ["jquery", "./base", "../utils", "../keys"], function(a, b, c, d) {
function e() {
e.__super__.constructor.apply(this, arguments)
}
return c.Extend(e, b), e.prototype.render = function() {
var a = e.__super__.render.call(this);
return a.addClass("select2-selection--single"), a.html('
'), a
}, e.prototype.bind = function(a, b) {
var c = this;
e.__super__.bind.apply(this, arguments);
var d = a.id + "-container";
this.$selection.find(".select2-selection__rendered").attr("id", d), this.$selection.attr("aria-labelledby", d), this.$selection.on("mousedown", function(a) {
1 === a.which && c.trigger("toggle", {
originalEvent: a
})
}), this.$selection.on("focus", function(a) {}), this.$selection.on("blur", function(a) {}), a.on("selection:update", function(a) {
c.update(a.data)
})
}, e.prototype.clear = function() {
this.$selection.find(".select2-selection__rendered").empty()
}, e.prototype.display = function(a, b) {
var c = this.options.get("templateSelection"),
d = this.options.get("escapeMarkup");
return d(c(a, b))
}, e.prototype.selectionContainer = function() {
return a("
")
}, e.prototype.update = function(a) {
if (0 === a.length) return void this.clear();
var b = a[0],
c = this.$selection.find(".select2-selection__rendered"),
d = this.display(b, c);
c.empty().append(d), c.prop("title", b.title || b.text)
}, e
}), b.define("select2/selection/multiple", ["jquery", "./base", "../utils"], function(a, b, c) {
function d(a, b) {
d.__super__.constructor.apply(this, arguments)
}
return c.Extend(d, b), d.prototype.render = function() {
var a = d.__super__.render.call(this);
return a.addClass("select2-selection--multiple"), a.html('
'), a
}, d.prototype.bind = function(b, c) {
var e = this;
d.__super__.bind.apply(this, arguments), this.$selection.on("click", function(a) {
e.trigger("toggle", {
originalEvent: a
})
}), this.$selection.on("click", ".select2-selection__choice__remove", function(b) {
if (!e.options.get("disabled")) {
var c = a(this),
d = c.parent(),
f = d.data("data");
e.trigger("unselect", {
originalEvent: b,
data: f
})
}
})
}, d.prototype.clear = function() {
this.$selection.find(".select2-selection__rendered").empty()
}, d.prototype.display = function(a, b) {
var c = this.options.get("templateSelection"),
d = this.options.get("escapeMarkup");
return d(c(a, b))
}, d.prototype.selectionContainer = function() {
var b = a('
× ');
return b
}, d.prototype.update = function(a) {
if (this.clear(), 0 !== a.length) {
for (var b = [], d = 0; d < a.length; d++) {
var e = a[d],
f = this.selectionContainer(),
g = this.display(e, f);
f.append(g), f.prop("title", e.title || e.text), f.data("data", e), b.push(f)
}
var h = this.$selection.find(".select2-selection__rendered");
c.appendMany(h, b)
}
}, d
}), b.define("select2/selection/placeholder", ["../utils"], function(a) {
function b(a, b, c) {
this.placeholder = this.normalizePlaceholder(c.get("placeholder")), a.call(this, b, c)
}
return b.prototype.normalizePlaceholder = function(a, b) {
return "string" == typeof b && (b = {
id: "",
text: b
}), b
}, b.prototype.createPlaceholder = function(a, b) {
var c = this.selectionContainer();
return c.html(this.display(b)), c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"), c
}, b.prototype.update = function(a, b) {
var c = 1 == b.length && b[0].id != this.placeholder.id,
d = b.length > 1;
if (d || c) return a.call(this, b);
this.clear();
var e = this.createPlaceholder(this.placeholder);
this.$selection.find(".select2-selection__rendered").append(e)
}, b
}), b.define("select2/selection/allowClear", ["jquery", "../keys"], function(a, b) {
function c() {}
return c.prototype.bind = function(a, b, c) {
var d = this;
a.call(this, b, c), null == this.placeholder && this.options.get("debug") && window.console && console.error && console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."), this.$selection.on("mousedown", ".select2-selection__clear", function(a) {
d._handleClear(a)
}), b.on("keypress", function(a) {
d._handleKeyboardClear(a, b)
})
}, c.prototype._handleClear = function(a, b) {
if (!this.options.get("disabled")) {
var c = this.$selection.find(".select2-selection__clear");
if (0 !== c.length) {
b.stopPropagation();
for (var d = c.data("data"), e = 0; e < d.length; e++) {
var f = {
data: d[e]
};
if (this.trigger("unselect", f), f.prevented) return
}
this.$element.val(this.placeholder.id).trigger("change"), this.trigger("toggle", {})
}
}
}, c.prototype._handleKeyboardClear = function(a, c, d) {
d.isOpen() || (c.which == b.DELETE || c.which == b.BACKSPACE) && this._handleClear(c)
}, c.prototype.update = function(b, c) {
if (b.call(this, c), !(this.$selection.find(".select2-selection__placeholder").length > 0 || 0 === c.length)) {
var d = a('
× ');
d.data("data", c), this.$selection.find(".select2-selection__rendered").prepend(d)
}
}, c
}), b.define("select2/selection/search", ["jquery", "../utils", "../keys"], function(a, b, c) {
function d(a, b, c) {
a.call(this, b, c)
}
return d.prototype.render = function(b) {
var c = a('
');
this.$searchContainer = c, this.$search = c.find("input");
var d = b.call(this);
return this._transferTabIndex(), d
}, d.prototype.bind = function(a, b, d) {
var e = this;
a.call(this, b, d), b.on("open", function() {
e.$search.trigger("focus")
}), b.on("close", function() {
e.$search.val(""), e.$search.removeAttr("aria-activedescendant"), e.$search.trigger("focus")
}), b.on("enable", function() {
e.$search.prop("disabled", !1), e._transferTabIndex()
}), b.on("disable", function() {
e.$search.prop("disabled", !0)
}), b.on("focus", function(a) {
e.$search.trigger("focus")
}), b.on("results:focus", function(a) {
e.$search.attr("aria-activedescendant", a.id)
}), this.$selection.on("focusin", ".select2-search--inline", function(a) {
e.trigger("focus", a)
}), this.$selection.on("focusout", ".select2-search--inline", function(a) {
e._handleBlur(a)
}), this.$selection.on("keydown", ".select2-search--inline", function(a) {
a.stopPropagation(), e.trigger("keypress", a), e._keyUpPrevented = a.isDefaultPrevented();
var b = a.which;
if (b === c.BACKSPACE && "" === e.$search.val()) {
var d = e.$searchContainer.prev(".select2-selection__choice");
if (d.length > 0) {
var f = d.data("data");
e.searchRemoveChoice(f), a.preventDefault()
}
}
});
var f = document.documentMode,
g = f && 11 >= f;
this.$selection.on("input.searchcheck", ".select2-search--inline", function(a) {
return g ? void e.$selection.off("input.search input.searchcheck") : void e.$selection.off("keyup.search")
}), this.$selection.on("keyup.search input.search", ".select2-search--inline", function(a) {
if (g && "input" === a.type) return void e.$selection.off("input.search input.searchcheck");
var b = a.which;
b != c.SHIFT && b != c.CTRL && b != c.ALT && b != c.TAB && e.handleSearch(a)
})
}, d.prototype._transferTabIndex = function(a) {
this.$search.attr("tabindex", this.$selection.attr("tabindex")), this.$selection.attr("tabindex", "-1")
}, d.prototype.createPlaceholder = function(a, b) {
this.$search.attr("placeholder", b.text)
}, d.prototype.update = function(a, b) {
var c = this.$search[0] == document.activeElement;
this.$search.attr("placeholder", ""), a.call(this, b), this.$selection.find(".select2-selection__rendered").append(this.$searchContainer), this.resizeSearch(), c && this.$search.focus()
}, d.prototype.handleSearch = function() {
if (this.resizeSearch(), !this._keyUpPrevented) {
var a = this.$search.val();
this.trigger("query", {
term: a
})
}
this._keyUpPrevented = !1
}, d.prototype.searchRemoveChoice = function(a, b) {
this.trigger("unselect", {
data: b
}), this.$search.val(b.text), this.handleSearch()
}, d.prototype.resizeSearch = function() {
this.$search.css("width", "25px");
var a = "";
if ("" !== this.$search.attr("placeholder")) a = this.$selection.find(".select2-selection__rendered").innerWidth();
else {
var b = this.$search.val().length + 1;
a = .75 * b + "em"
}
this.$search.css("width", a)
}, d
}), b.define("select2/selection/eventRelay", ["jquery"], function(a) {
function b() {}
return b.prototype.bind = function(b, c, d) {
var e = this,
f = ["open", "opening", "close", "closing", "select", "selecting", "unselect", "unselecting"],
g = ["opening", "closing", "selecting", "unselecting"];
b.call(this, c, d), c.on("*", function(b, c) {
if (-1 !== a.inArray(b, f)) {
c = c || {};
var d = a.Event("select2:" + b, {
params: c
});
e.$element.trigger(d), -1 !== a.inArray(b, g) && (c.prevented = d.isDefaultPrevented())
}
})
}, b
}), b.define("select2/translation", ["jquery", "require"], function(a, b) {
function c(a) {
this.dict = a || {}
}
return c.prototype.all = function() {
return this.dict
}, c.prototype.get = function(a) {
return this.dict[a]
}, c.prototype.extend = function(b) {
this.dict = a.extend({}, b.all(), this.dict)
}, c._cache = {}, c.loadPath = function(a) {
if (!(a in c._cache)) {
var d = b(a);
c._cache[a] = d
}
return new c(c._cache[a])
}, c
}), b.define("select2/diacritics", [], function() {
var a = {
"Ⓐ": "A",
"A": "A",
"À": "A",
"Á": "A",
"Â": "A",
"Ầ": "A",
"Ấ": "A",
"Ẫ": "A",
"Ẩ": "A",
"Ã": "A",
"Ā": "A",
"Ă": "A",
"Ằ": "A",
"Ắ": "A",
"Ẵ": "A",
"Ẳ": "A",
"Ȧ": "A",
"Ǡ": "A",
"Ä": "A",
"Ǟ": "A",
"Ả": "A",
"Å": "A",
"Ǻ": "A",
"Ǎ": "A",
"Ȁ": "A",
"Ȃ": "A",
"Ạ": "A",
"Ậ": "A",
"Ặ": "A",
"Ḁ": "A",
"Ą": "A",
"Ⱥ": "A",
"Ɐ": "A",
"Ꜳ": "AA",
"Æ": "AE",
"Ǽ": "AE",
"Ǣ": "AE",
"Ꜵ": "AO",
"Ꜷ": "AU",
"Ꜹ": "AV",
"Ꜻ": "AV",
"Ꜽ": "AY",
"Ⓑ": "B",
"B": "B",
"Ḃ": "B",
"Ḅ": "B",
"Ḇ": "B",
"Ƀ": "B",
"Ƃ": "B",
"Ɓ": "B",
"Ⓒ": "C",
"C": "C",
"Ć": "C",
"Ĉ": "C",
"Ċ": "C",
"Č": "C",
"Ç": "C",
"Ḉ": "C",
"Ƈ": "C",
"Ȼ": "C",
"Ꜿ": "C",
"Ⓓ": "D",
"D": "D",
"Ḋ": "D",
"Ď": "D",
"Ḍ": "D",
"Ḑ": "D",
"Ḓ": "D",
"Ḏ": "D",
"Đ": "D",
"Ƌ": "D",
"Ɗ": "D",
"Ɖ": "D",
"Ꝺ": "D",
"DZ": "DZ",
"DŽ": "DZ",
"Dz": "Dz",
"Dž": "Dz",
"Ⓔ": "E",
"E": "E",
"È": "E",
"É": "E",
"Ê": "E",
"Ề": "E",
"Ế": "E",
"Ễ": "E",
"Ể": "E",
"Ẽ": "E",
"Ē": "E",
"Ḕ": "E",
"Ḗ": "E",
"Ĕ": "E",
"Ė": "E",
"Ë": "E",
"Ẻ": "E",
"Ě": "E",
"Ȅ": "E",
"Ȇ": "E",
"Ẹ": "E",
"Ệ": "E",
"Ȩ": "E",
"Ḝ": "E",
"Ę": "E",
"Ḙ": "E",
"Ḛ": "E",
"Ɛ": "E",
"Ǝ": "E",
"Ⓕ": "F",
"F": "F",
"Ḟ": "F",
"Ƒ": "F",
"Ꝼ": "F",
"Ⓖ": "G",
"G": "G",
"Ǵ": "G",
"Ĝ": "G",
"Ḡ": "G",
"Ğ": "G",
"Ġ": "G",
"Ǧ": "G",
"Ģ": "G",
"Ǥ": "G",
"Ɠ": "G",
"Ꞡ": "G",
"Ᵹ": "G",
"Ꝿ": "G",
"Ⓗ": "H",
"H": "H",
"Ĥ": "H",
"Ḣ": "H",
"Ḧ": "H",
"Ȟ": "H",
"Ḥ": "H",
"Ḩ": "H",
"Ḫ": "H",
"Ħ": "H",
"Ⱨ": "H",
"Ⱶ": "H",
"Ɥ": "H",
"Ⓘ": "I",
"I": "I",
"Ì": "I",
"Í": "I",
"Î": "I",
"Ĩ": "I",
"Ī": "I",
"Ĭ": "I",
"İ": "I",
"Ï": "I",
"Ḯ": "I",
"Ỉ": "I",
"Ǐ": "I",
"Ȉ": "I",
"Ȋ": "I",
"Ị": "I",
"Į": "I",
"Ḭ": "I",
"Ɨ": "I",
"Ⓙ": "J",
"J": "J",
"Ĵ": "J",
"Ɉ": "J",
"Ⓚ": "K",
"K": "K",
"Ḱ": "K",
"Ǩ": "K",
"Ḳ": "K",
"Ķ": "K",
"Ḵ": "K",
"Ƙ": "K",
"Ⱪ": "K",
"Ꝁ": "K",
"Ꝃ": "K",
"Ꝅ": "K",
"Ꞣ": "K",
"Ⓛ": "L",
"L": "L",
"Ŀ": "L",
"Ĺ": "L",
"Ľ": "L",
"Ḷ": "L",
"Ḹ": "L",
"Ļ": "L",
"Ḽ": "L",
"Ḻ": "L",
"Ł": "L",
"Ƚ": "L",
"Ɫ": "L",
"Ⱡ": "L",
"Ꝉ": "L",
"Ꝇ": "L",
"Ꞁ": "L",
"LJ": "LJ",
"Lj": "Lj",
"Ⓜ": "M",
"M": "M",
"Ḿ": "M",
"Ṁ": "M",
"Ṃ": "M",
"Ɱ": "M",
"Ɯ": "M",
"Ⓝ": "N",
"N": "N",
"Ǹ": "N",
"Ń": "N",
"Ñ": "N",
"Ṅ": "N",
"Ň": "N",
"Ṇ": "N",
"Ņ": "N",
"Ṋ": "N",
"Ṉ": "N",
"Ƞ": "N",
"Ɲ": "N",
"Ꞑ": "N",
"Ꞥ": "N",
"NJ": "NJ",
"Nj": "Nj",
"Ⓞ": "O",
"O": "O",
"Ò": "O",
"Ó": "O",
"Ô": "O",
"Ồ": "O",
"Ố": "O",
"Ỗ": "O",
"Ổ": "O",
"Õ": "O",
"Ṍ": "O",
"Ȭ": "O",
"Ṏ": "O",
"Ō": "O",
"Ṑ": "O",
"Ṓ": "O",
"Ŏ": "O",
"Ȯ": "O",
"Ȱ": "O",
"Ö": "O",
"Ȫ": "O",
"Ỏ": "O",
"Ő": "O",
"Ǒ": "O",
"Ȍ": "O",
"Ȏ": "O",
"Ơ": "O",
"Ờ": "O",
"Ớ": "O",
"Ỡ": "O",
"Ở": "O",
"Ợ": "O",
"Ọ": "O",
"Ộ": "O",
"Ǫ": "O",
"Ǭ": "O",
"Ø": "O",
"Ǿ": "O",
"Ɔ": "O",
"Ɵ": "O",
"Ꝋ": "O",
"Ꝍ": "O",
"Ƣ": "OI",
"Ꝏ": "OO",
"Ȣ": "OU",
"Ⓟ": "P",
"P": "P",
"Ṕ": "P",
"Ṗ": "P",
"Ƥ": "P",
"Ᵽ": "P",
"Ꝑ": "P",
"Ꝓ": "P",
"Ꝕ": "P",
"Ⓠ": "Q",
"Q": "Q",
"Ꝗ": "Q",
"Ꝙ": "Q",
"Ɋ": "Q",
"Ⓡ": "R",
"R": "R",
"Ŕ": "R",
"Ṙ": "R",
"Ř": "R",
"Ȑ": "R",
"Ȓ": "R",
"Ṛ": "R",
"Ṝ": "R",
"Ŗ": "R",
"Ṟ": "R",
"Ɍ": "R",
"Ɽ": "R",
"Ꝛ": "R",
"Ꞧ": "R",
"Ꞃ": "R",
"Ⓢ": "S",
"S": "S",
"ẞ": "S",
"Ś": "S",
"Ṥ": "S",
"Ŝ": "S",
"Ṡ": "S",
"Š": "S",
"Ṧ": "S",
"Ṣ": "S",
"Ṩ": "S",
"Ș": "S",
"Ş": "S",
"Ȿ": "S",
"Ꞩ": "S",
"Ꞅ": "S",
"Ⓣ": "T",
"T": "T",
"Ṫ": "T",
"Ť": "T",
"Ṭ": "T",
"Ț": "T",
"Ţ": "T",
"Ṱ": "T",
"Ṯ": "T",
"Ŧ": "T",
"Ƭ": "T",
"Ʈ": "T",
"Ⱦ": "T",
"Ꞇ": "T",
"Ꜩ": "TZ",
"Ⓤ": "U",
"U": "U",
"Ù": "U",
"Ú": "U",
"Û": "U",
"Ũ": "U",
"Ṹ": "U",
"Ū": "U",
"Ṻ": "U",
"Ŭ": "U",
"Ü": "U",
"Ǜ": "U",
"Ǘ": "U",
"Ǖ": "U",
"Ǚ": "U",
"Ủ": "U",
"Ů": "U",
"Ű": "U",
"Ǔ": "U",
"Ȕ": "U",
"Ȗ": "U",
"Ư": "U",
"Ừ": "U",
"Ứ": "U",
"Ữ": "U",
"Ử": "U",
"Ự": "U",
"Ụ": "U",
"Ṳ": "U",
"Ų": "U",
"Ṷ": "U",
"Ṵ": "U",
"Ʉ": "U",
"Ⓥ": "V",
"V": "V",
"Ṽ": "V",
"Ṿ": "V",
"Ʋ": "V",
"Ꝟ": "V",
"Ʌ": "V",
"Ꝡ": "VY",
"Ⓦ": "W",
"W": "W",
"Ẁ": "W",
"Ẃ": "W",
"Ŵ": "W",
"Ẇ": "W",
"Ẅ": "W",
"Ẉ": "W",
"Ⱳ": "W",
"Ⓧ": "X",
"X": "X",
"Ẋ": "X",
"Ẍ": "X",
"Ⓨ": "Y",
"Y": "Y",
"Ỳ": "Y",
"Ý": "Y",
"Ŷ": "Y",
"Ỹ": "Y",
"Ȳ": "Y",
"Ẏ": "Y",
"Ÿ": "Y",
"Ỷ": "Y",
"Ỵ": "Y",
"Ƴ": "Y",
"Ɏ": "Y",
"Ỿ": "Y",
"Ⓩ": "Z",
"Z": "Z",
"Ź": "Z",
"Ẑ": "Z",
"Ż": "Z",
"Ž": "Z",
"Ẓ": "Z",
"Ẕ": "Z",
"Ƶ": "Z",
"Ȥ": "Z",
"Ɀ": "Z",
"Ⱬ": "Z",
"Ꝣ": "Z",
"ⓐ": "a",
"a": "a",
"ẚ": "a",
"à": "a",
"á": "a",
"â": "a",
"ầ": "a",
"ấ": "a",
"ẫ": "a",
"ẩ": "a",
"ã": "a",
"ā": "a",
"ă": "a",
"ằ": "a",
"ắ": "a",
"ẵ": "a",
"ẳ": "a",
"ȧ": "a",
"ǡ": "a",
"ä": "a",
"ǟ": "a",
"ả": "a",
"å": "a",
"ǻ": "a",
"ǎ": "a",
"ȁ": "a",
"ȃ": "a",
"ạ": "a",
"ậ": "a",
"ặ": "a",
"ḁ": "a",
"ą": "a",
"ⱥ": "a",
"ɐ": "a",
"ꜳ": "aa",
"æ": "ae",
"ǽ": "ae",
"ǣ": "ae",
"ꜵ": "ao",
"ꜷ": "au",
"ꜹ": "av",
"ꜻ": "av",
"ꜽ": "ay",
"ⓑ": "b",
"b": "b",
"ḃ": "b",
"ḅ": "b",
"ḇ": "b",
"ƀ": "b",
"ƃ": "b",
"ɓ": "b",
"ⓒ": "c",
"c": "c",
"ć": "c",
"ĉ": "c",
"ċ": "c",
"č": "c",
"ç": "c",
"ḉ": "c",
"ƈ": "c",
"ȼ": "c",
"ꜿ": "c",
"ↄ": "c",
"ⓓ": "d",
"d": "d",
"ḋ": "d",
"ď": "d",
"ḍ": "d",
"ḑ": "d",
"ḓ": "d",
"ḏ": "d",
"đ": "d",
"ƌ": "d",
"ɖ": "d",
"ɗ": "d",
"ꝺ": "d",
"dz": "dz",
"dž": "dz",
"ⓔ": "e",
"e": "e",
"è": "e",
"é": "e",
"ê": "e",
"ề": "e",
"ế": "e",
"ễ": "e",
"ể": "e",
"ẽ": "e",
"ē": "e",
"ḕ": "e",
"ḗ": "e",
"ĕ": "e",
"ė": "e",
"ë": "e",
"ẻ": "e",
"ě": "e",
"ȅ": "e",
"ȇ": "e",
"ẹ": "e",
"ệ": "e",
"ȩ": "e",
"ḝ": "e",
"ę": "e",
"ḙ": "e",
"ḛ": "e",
"ɇ": "e",
"ɛ": "e",
"ǝ": "e",
"ⓕ": "f",
"f": "f",
"ḟ": "f",
"ƒ": "f",
"ꝼ": "f",
"ⓖ": "g",
"g": "g",
"ǵ": "g",
"ĝ": "g",
"ḡ": "g",
"ğ": "g",
"ġ": "g",
"ǧ": "g",
"ģ": "g",
"ǥ": "g",
"ɠ": "g",
"ꞡ": "g",
"ᵹ": "g",
"ꝿ": "g",
"ⓗ": "h",
"h": "h",
"ĥ": "h",
"ḣ": "h",
"ḧ": "h",
"ȟ": "h",
"ḥ": "h",
"ḩ": "h",
"ḫ": "h",
"ẖ": "h",
"ħ": "h",
"ⱨ": "h",
"ⱶ": "h",
"ɥ": "h",
"ƕ": "hv",
"ⓘ": "i",
"i": "i",
"ì": "i",
"í": "i",
"î": "i",
"ĩ": "i",
"ī": "i",
"ĭ": "i",
"ï": "i",
"ḯ": "i",
"ỉ": "i",
"ǐ": "i",
"ȉ": "i",
"ȋ": "i",
"ị": "i",
"į": "i",
"ḭ": "i",
"ɨ": "i",
"ı": "i",
"ⓙ": "j",
"j": "j",
"ĵ": "j",
"ǰ": "j",
"ɉ": "j",
"ⓚ": "k",
"k": "k",
"ḱ": "k",
"ǩ": "k",
"ḳ": "k",
"ķ": "k",
"ḵ": "k",
"ƙ": "k",
"ⱪ": "k",
"ꝁ": "k",
"ꝃ": "k",
"ꝅ": "k",
"ꞣ": "k",
"ⓛ": "l",
"l": "l",
"ŀ": "l",
"ĺ": "l",
"ľ": "l",
"ḷ": "l",
"ḹ": "l",
"ļ": "l",
"ḽ": "l",
"ḻ": "l",
"ſ": "l",
"ł": "l",
"ƚ": "l",
"ɫ": "l",
"ⱡ": "l",
"ꝉ": "l",
"ꞁ": "l",
"ꝇ": "l",
"lj": "lj",
"ⓜ": "m",
"m": "m",
"ḿ": "m",
"ṁ": "m",
"ṃ": "m",
"ɱ": "m",
"ɯ": "m",
"ⓝ": "n",
"n": "n",
"ǹ": "n",
"ń": "n",
"ñ": "n",
"ṅ": "n",
"ň": "n",
"ṇ": "n",
"ņ": "n",
"ṋ": "n",
"ṉ": "n",
"ƞ": "n",
"ɲ": "n",
"ʼn": "n",
"ꞑ": "n",
"ꞥ": "n",
"nj": "nj",
"ⓞ": "o",
"o": "o",
"ò": "o",
"ó": "o",
"ô": "o",
"ồ": "o",
"ố": "o",
"ỗ": "o",
"ổ": "o",
"õ": "o",
"ṍ": "o",
"ȭ": "o",
"ṏ": "o",
"ō": "o",
"ṑ": "o",
"ṓ": "o",
"ŏ": "o",
"ȯ": "o",
"ȱ": "o",
"ö": "o",
"ȫ": "o",
"ỏ": "o",
"ő": "o",
"ǒ": "o",
"ȍ": "o",
"ȏ": "o",
"ơ": "o",
"ờ": "o",
"ớ": "o",
"ỡ": "o",
"ở": "o",
"ợ": "o",
"ọ": "o",
"ộ": "o",
"ǫ": "o",
"ǭ": "o",
"ø": "o",
"ǿ": "o",
"ɔ": "o",
"ꝋ": "o",
"ꝍ": "o",
"ɵ": "o",
"ƣ": "oi",
"ȣ": "ou",
"ꝏ": "oo",
"ⓟ": "p",
"p": "p",
"ṕ": "p",
"ṗ": "p",
"ƥ": "p",
"ᵽ": "p",
"ꝑ": "p",
"ꝓ": "p",
"ꝕ": "p",
"ⓠ": "q",
"q": "q",
"ɋ": "q",
"ꝗ": "q",
"ꝙ": "q",
"ⓡ": "r",
"r": "r",
"ŕ": "r",
"ṙ": "r",
"ř": "r",
"ȑ": "r",
"ȓ": "r",
"ṛ": "r",
"ṝ": "r",
"ŗ": "r",
"ṟ": "r",
"ɍ": "r",
"ɽ": "r",
"ꝛ": "r",
"ꞧ": "r",
"ꞃ": "r",
"ⓢ": "s",
"s": "s",
"ß": "s",
"ś": "s",
"ṥ": "s",
"ŝ": "s",
"ṡ": "s",
"š": "s",
"ṧ": "s",
"ṣ": "s",
"ṩ": "s",
"ș": "s",
"ş": "s",
"ȿ": "s",
"ꞩ": "s",
"ꞅ": "s",
"ẛ": "s",
"ⓣ": "t",
"t": "t",
"ṫ": "t",
"ẗ": "t",
"ť": "t",
"ṭ": "t",
"ț": "t",
"ţ": "t",
"ṱ": "t",
"ṯ": "t",
"ŧ": "t",
"ƭ": "t",
"ʈ": "t",
"ⱦ": "t",
"ꞇ": "t",
"ꜩ": "tz",
"ⓤ": "u",
"u": "u",
"ù": "u",
"ú": "u",
"û": "u",
"ũ": "u",
"ṹ": "u",
"ū": "u",
"ṻ": "u",
"ŭ": "u",
"ü": "u",
"ǜ": "u",
"ǘ": "u",
"ǖ": "u",
"ǚ": "u",
"ủ": "u",
"ů": "u",
"ű": "u",
"ǔ": "u",
"ȕ": "u",
"ȗ": "u",
"ư": "u",
"ừ": "u",
"ứ": "u",
"ữ": "u",
"ử": "u",
"ự": "u",
"ụ": "u",
"ṳ": "u",
"ų": "u",
"ṷ": "u",
"ṵ": "u",
"ʉ": "u",
"ⓥ": "v",
"v": "v",
"ṽ": "v",
"ṿ": "v",
"ʋ": "v",
"ꝟ": "v",
"ʌ": "v",
"ꝡ": "vy",
"ⓦ": "w",
"w": "w",
"ẁ": "w",
"ẃ": "w",
"ŵ": "w",
"ẇ": "w",
"ẅ": "w",
"ẘ": "w",
"ẉ": "w",
"ⱳ": "w",
"ⓧ": "x",
"x": "x",
"ẋ": "x",
"ẍ": "x",
"ⓨ": "y",
"y": "y",
"ỳ": "y",
"ý": "y",
"ŷ": "y",
"ỹ": "y",
"ȳ": "y",
"ẏ": "y",
"ÿ": "y",
"ỷ": "y",
"ẙ": "y",
"ỵ": "y",
"ƴ": "y",
"ɏ": "y",
"ỿ": "y",
"ⓩ": "z",
"z": "z",
"ź": "z",
"ẑ": "z",
"ż": "z",
"ž": "z",
"ẓ": "z",
"ẕ": "z",
"ƶ": "z",
"ȥ": "z",
"ɀ": "z",
"ⱬ": "z",
"ꝣ": "z",
"Ά": "Α",
"Έ": "Ε",
"Ή": "Η",
"Ί": "Ι",
"Ϊ": "Ι",
"Ό": "Ο",
"Ύ": "Υ",
"Ϋ": "Υ",
"Ώ": "Ω",
"ά": "α",
"έ": "ε",
"ή": "η",
"ί": "ι",
"ϊ": "ι",
"ΐ": "ι",
"ό": "ο",
"ύ": "υ",
"ϋ": "υ",
"ΰ": "υ",
"ω": "ω",
"ς": "σ"
};
return a
}), b.define("select2/data/base", ["../utils"], function(a) {
function b(a, c) {
b.__super__.constructor.call(this)
}
return a.Extend(b, a.Observable), b.prototype.current = function(a) {
throw new Error("The `current` method must be defined in child classes.")
}, b.prototype.query = function(a, b) {
throw new Error("The `query` method must be defined in child classes.")
}, b.prototype.bind = function(a, b) {}, b.prototype.destroy = function() {}, b.prototype.generateResultId = function(b, c) {
var d = b.id + "-result-";
return d += a.generateChars(4), d += null != c.id ? "-" + c.id.toString() : "-" + a.generateChars(4)
}, b
}), b.define("select2/data/select", ["./base", "../utils", "jquery"], function(a, b, c) {
function d(a, b) {
this.$element = a, this.options = b, d.__super__.constructor.call(this)
}
return b.Extend(d, a), d.prototype.current = function(a) {
var b = [],
d = this;
this.$element.find(":selected").each(function() {
var a = c(this),
e = d.item(a);
b.push(e)
}), a(b)
}, d.prototype.select = function(a) {
var b = this;
if (a.selected = !0, c(a.element).is("option")) return a.element.selected = !0, void this.$element.trigger("change");
if (this.$element.prop("multiple")) this.current(function(d) {
var e = [];
a = [a], a.push.apply(a, d);
for (var f = 0; f < a.length; f++) {
var g = a[f].id; - 1 === c.inArray(g, e) && e.push(g)
}
b.$element.val(e), b.$element.trigger("change")
});
else {
var d = a.id;
this.$element.val(d), this.$element.trigger("change")
}
}, d.prototype.unselect = function(a) {
var b = this;
if (this.$element.prop("multiple")) return a.selected = !1,
c(a.element).is("option") ? (a.element.selected = !1, void this.$element.trigger("change")) : void this.current(function(d) {
for (var e = [], f = 0; f < d.length; f++) {
var g = d[f].id;
g !== a.id && -1 === c.inArray(g, e) && e.push(g)
}
b.$element.val(e), b.$element.trigger("change")
})
}, d.prototype.bind = function(a, b) {
var c = this;
this.container = a, a.on("select", function(a) {
c.select(a.data)
}), a.on("unselect", function(a) {
c.unselect(a.data)
})
}, d.prototype.destroy = function() {
this.$element.find("*").each(function() {
c.removeData(this, "data")
})
}, d.prototype.query = function(a, b) {
var d = [],
e = this,
f = this.$element.children();
f.each(function() {
var b = c(this);
if (b.is("option") || b.is("optgroup")) {
var f = e.item(b),
g = e.matches(a, f);
null !== g && d.push(g)
}
}), b({
results: d
})
}, d.prototype.addOptions = function(a) {
b.appendMany(this.$element, a)
}, d.prototype.option = function(a) {
var b;
a.children ? (b = document.createElement("optgroup"), b.label = a.text) : (b = document.createElement("option"), void 0 !== b.textContent ? b.textContent = a.text : b.innerText = a.text), a.id && (b.value = a.id), a.disabled && (b.disabled = !0), a.selected && (b.selected = !0), a.title && (b.title = a.title);
var d = c(b),
e = this._normalizeItem(a);
return e.element = b, c.data(b, "data", e), d
}, d.prototype.item = function(a) {
var b = {};
if (b = c.data(a[0], "data"), null != b) return b;
if (a.is("option")) b = {
id: a.val(),
text: a.text(),
disabled: a.prop("disabled"),
selected: a.prop("selected"),
title: a.prop("title")
};
else if (a.is("optgroup")) {
b = {
text: a.prop("label"),
children: [],
title: a.prop("title")
};
for (var d = a.children("option"), e = [], f = 0; f < d.length; f++) {
var g = c(d[f]),
h = this.item(g);
e.push(h)
}
b.children = e
}
return b = this._normalizeItem(b), b.element = a[0], c.data(a[0], "data", b), b
}, d.prototype._normalizeItem = function(a) {
c.isPlainObject(a) || (a = {
id: a,
text: a
}), a = c.extend({}, {
text: ""
}, a);
var b = {
selected: !1,
disabled: !1
};
return null != a.id && (a.id = a.id.toString()), null != a.text && (a.text = a.text.toString()), null == a._resultId && a.id && null != this.container && (a._resultId = this.generateResultId(this.container, a)), c.extend({}, b, a)
}, d.prototype.matches = function(a, b) {
var c = this.options.get("matcher");
return c(a, b)
}, d
}), b.define("select2/data/array", ["./select", "../utils", "jquery"], function(a, b, c) {
function d(a, b) {
var c = b.get("data") || [];
d.__super__.constructor.call(this, a, b), this.addOptions(this.convertToOptions(c))
}
return b.Extend(d, a), d.prototype.select = function(a) {
var b = this.$element.find("option").filter(function(b, c) {
return c.value == a.id.toString()
});
0 === b.length && (b = this.option(a), this.addOptions(b)), d.__super__.select.call(this, a)
}, d.prototype.convertToOptions = function(a) {
function d(a) {
return function() {
return c(this).val() == a.id
}
}
for (var e = this, f = this.$element.find("option"), g = f.map(function() {
return e.item(c(this)).id
}).get(), h = [], i = 0; i < a.length; i++) {
var j = this._normalizeItem(a[i]);
if (c.inArray(j.id, g) >= 0) {
var k = f.filter(d(j)),
l = this.item(k),
m = c.extend(!0, {}, j, l),
n = this.option(m);
k.replaceWith(n)
} else {
var o = this.option(j);
if (j.children) {
var p = this.convertToOptions(j.children);
b.appendMany(o, p)
}
h.push(o)
}
}
return h
}, d
}), b.define("select2/data/ajax", ["./array", "../utils", "jquery"], function(a, b, c) {
function d(a, b) {
this.ajaxOptions = this._applyDefaults(b.get("ajax")), null != this.ajaxOptions.processResults && (this.processResults = this.ajaxOptions.processResults), d.__super__.constructor.call(this, a, b)
}
return b.Extend(d, a), d.prototype._applyDefaults = function(a) {
var b = {
data: function(a) {
return c.extend({}, a, {
q: a.term
})
},
transport: function(a, b, d) {
var e = c.ajax(a);
return e.then(b), e.fail(d), e
}
};
return c.extend({}, b, a, !0)
}, d.prototype.processResults = function(a) {
return a
}, d.prototype.query = function(a, b) {
function d() {
var d = f.transport(f, function(d) {
var f = e.processResults(d, a);
e.options.get("debug") && window.console && console.error && (f && f.results && c.isArray(f.results) || console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")), b(f)
}, function() {
e.trigger("results:message", {
message: "errorLoading"
})
});
e._request = d
}
var e = this;
null != this._request && (c.isFunction(this._request.abort) && this._request.abort(), this._request = null);
var f = c.extend({
type: "GET"
}, this.ajaxOptions);
"function" == typeof f.url && (f.url = f.url.call(this.$element, a)), "function" == typeof f.data && (f.data = f.data.call(this.$element, a)), this.ajaxOptions.delay && "" !== a.term ? (this._queryTimeout && window.clearTimeout(this._queryTimeout), this._queryTimeout = window.setTimeout(d, this.ajaxOptions.delay)) : d()
}, d
}), b.define("select2/data/tags", ["jquery"], function(a) {
function b(b, c, d) {
var e = d.get("tags"),
f = d.get("createTag");
void 0 !== f && (this.createTag = f);
var g = d.get("insertTag");
if (void 0 !== g && (this.insertTag = g), b.call(this, c, d), a.isArray(e))
for (var h = 0; h < e.length; h++) {
var i = e[h],
j = this._normalizeItem(i),
k = this.option(j);
this.$element.append(k)
}
}
return b.prototype.query = function(a, b, c) {
function d(a, f) {
for (var g = a.results, h = 0; h < g.length; h++) {
var i = g[h],
j = null != i.children && !d({
results: i.children
}, !0),
k = i.text === b.term;
if (k || j) return f ? !1 : (a.data = g, void c(a))
}
if (f) return !0;
var l = e.createTag(b);
if (null != l) {
var m = e.option(l);
m.attr("data-select2-tag", !0), e.addOptions([m]), e.insertTag(g, l)
}
a.results = g, c(a)
}
var e = this;
return this._removeOldTags(), null == b.term || null != b.page ? void a.call(this, b, c) : void a.call(this, b, d)
}, b.prototype.createTag = function(b, c) {
var d = a.trim(c.term);
return "" === d ? null : {
id: d,
text: d
}
}, b.prototype.insertTag = function(a, b, c) {
b.unshift(c)
}, b.prototype._removeOldTags = function(b) {
var c = (this._lastTag, this.$element.find("option[data-select2-tag]"));
c.each(function() {
this.selected || a(this).remove()
})
}, b
}), b.define("select2/data/tokenizer", ["jquery"], function(a) {
function b(a, b, c) {
var d = c.get("tokenizer");
void 0 !== d && (this.tokenizer = d), a.call(this, b, c)
}
return b.prototype.bind = function(a, b, c) {
a.call(this, b, c), this.$search = b.dropdown.$search || b.selection.$search || c.find(".select2-search__field")
}, b.prototype.query = function(a, b, c) {
function d(a) {
e.trigger("select", {
data: a
})
}
var e = this;
b.term = b.term || "";
var f = this.tokenizer(b, this.options, d);
f.term !== b.term && (this.$search.length && (this.$search.val(f.term), this.$search.focus()), b.term = f.term), a.call(this, b, c)
}, b.prototype.tokenizer = function(b, c, d, e) {
for (var f = d.get("tokenSeparators") || [], g = c.term, h = 0, i = this.createTag || function(a) {
return {
id: a.term,
text: a.term
}
}; h < g.length;) {
var j = g[h];
if (-1 !== a.inArray(j, f)) {
var k = g.substr(0, h),
l = a.extend({}, c, {
term: k
}),
m = i(l);
null != m ? (e(m), g = g.substr(h + 1) || "", h = 0) : h++
} else h++
}
return {
term: g
}
}, b
}), b.define("select2/data/minimumInputLength", [], function() {
function a(a, b, c) {
this.minimumInputLength = c.get("minimumInputLength"), a.call(this, b, c)
}
return a.prototype.query = function(a, b, c) {
return b.term = b.term || "", b.term.length < this.minimumInputLength ? void this.trigger("results:message", {
message: "inputTooShort",
args: {
minimum: this.minimumInputLength,
input: b.term,
params: b
}
}) : void a.call(this, b, c)
}, a
}), b.define("select2/data/maximumInputLength", [], function() {
function a(a, b, c) {
this.maximumInputLength = c.get("maximumInputLength"), a.call(this, b, c)
}
return a.prototype.query = function(a, b, c) {
return b.term = b.term || "", this.maximumInputLength > 0 && b.term.length > this.maximumInputLength ? void this.trigger("results:message", {
message: "inputTooLong",
args: {
maximum: this.maximumInputLength,
input: b.term,
params: b
}
}) : void a.call(this, b, c)
}, a
}), b.define("select2/data/maximumSelectionLength", [], function() {
function a(a, b, c) {
this.maximumSelectionLength = c.get("maximumSelectionLength"), a.call(this, b, c)
}
return a.prototype.query = function(a, b, c) {
var d = this;
this.current(function(e) {
var f = null != e ? e.length : 0;
return d.maximumSelectionLength > 0 && f >= d.maximumSelectionLength ? void d.trigger("results:message", {
message: "maximumSelected",
args: {
maximum: d.maximumSelectionLength
}
}) : void a.call(d, b, c)
})
}, a
}), b.define("select2/dropdown", ["jquery", "./utils"], function(a, b) {
function c(a, b) {
this.$element = a, this.options = b, c.__super__.constructor.call(this)
}
return b.Extend(c, b.Observable), c.prototype.render = function() {
var b = a('
');
return b.attr("dir", this.options.get("dir")), this.$dropdown = b, b
}, c.prototype.bind = function() {}, c.prototype.position = function(a, b) {}, c.prototype.destroy = function() {
this.$dropdown.remove()
}, c
}), b.define("select2/dropdown/search", ["jquery", "../utils"], function(a, b) {
function c() {}
return c.prototype.render = function(b) {
var c = b.call(this),
d = a('
');
return this.$searchContainer = d, this.$search = d.find("input"), c.prepend(d), c
}, c.prototype.bind = function(b, c, d) {
var e = this;
b.call(this, c, d), this.$search.on("keydown", function(a) {
e.trigger("keypress", a), e._keyUpPrevented = a.isDefaultPrevented()
}), this.$search.on("input", function(b) {
a(this).off("keyup")
}), this.$search.on("keyup input", function(a) {
e.handleSearch(a)
}), c.on("open", function() {
e.$search.attr("tabindex", 0), e.$search.focus(), window.setTimeout(function() {
e.$search.focus()
}, 0)
}), c.on("close", function() {
e.$search.attr("tabindex", -1), e.$search.val("")
}), c.on("results:all", function(a) {
if (null == a.query.term || "" === a.query.term) {
var b = e.showSearch(a);
b ? e.$searchContainer.removeClass("select2-search--hide") : e.$searchContainer.addClass("select2-search--hide")
}
})
}, c.prototype.handleSearch = function(a) {
if (!this._keyUpPrevented) {
var b = this.$search.val();
this.trigger("query", {
term: b
})
}
this._keyUpPrevented = !1
}, c.prototype.showSearch = function(a, b) {
return !0
}, c
}), b.define("select2/dropdown/hidePlaceholder", [], function() {
function a(a, b, c, d) {
this.placeholder = this.normalizePlaceholder(c.get("placeholder")), a.call(this, b, c, d)
}
return a.prototype.append = function(a, b) {
b.results = this.removePlaceholder(b.results), a.call(this, b)
}, a.prototype.normalizePlaceholder = function(a, b) {
return "string" == typeof b && (b = {
id: "",
text: b
}), b
}, a.prototype.removePlaceholder = function(a, b) {
for (var c = b.slice(0), d = b.length - 1; d >= 0; d--) {
var e = b[d];
this.placeholder.id === e.id && c.splice(d, 1)
}
return c
}, a
}), b.define("select2/dropdown/infiniteScroll", ["jquery"], function(a) {
function b(a, b, c, d) {
this.lastParams = {}, a.call(this, b, c, d), this.$loadingMore = this.createLoadingMore(), this.loading = !1
}
return b.prototype.append = function(a, b) {
this.$loadingMore.remove(), this.loading = !1, a.call(this, b), this.showLoadingMore(b) && this.$results.append(this.$loadingMore)
}, b.prototype.bind = function(b, c, d) {
var e = this;
b.call(this, c, d), c.on("query", function(a) {
e.lastParams = a, e.loading = !0
}), c.on("query:append", function(a) {
e.lastParams = a, e.loading = !0
}), this.$results.on("scroll", function() {
var b = a.contains(document.documentElement, e.$loadingMore[0]);
if (!e.loading && b) {
var c = e.$results.offset().top + e.$results.outerHeight(!1),
d = e.$loadingMore.offset().top + e.$loadingMore.outerHeight(!1);
c + 50 >= d && e.loadMore()
}
})
}, b.prototype.loadMore = function() {
this.loading = !0;
var b = a.extend({}, {
page: 1
}, this.lastParams);
b.page++, this.trigger("query:append", b)
}, b.prototype.showLoadingMore = function(a, b) {
return b.pagination && b.pagination.more
}, b.prototype.createLoadingMore = function() {
var b = a('
'),
c = this.options.get("translations").get("loadingMore");
return b.html(c(this.lastParams)), b
}, b
}), b.define("select2/dropdown/attachBody", ["jquery", "../utils"], function(a, b) {
function c(b, c, d) {
this.$dropdownParent = d.get("dropdownParent") || a(document.body), b.call(this, c, d)
}
return c.prototype.bind = function(a, b, c) {
var d = this,
e = !1;
a.call(this, b, c), b.on("open", function() {
d._showDropdown(), d._attachPositioningHandler(b), e || (e = !0, b.on("results:all", function() {
d._positionDropdown(), d._resizeDropdown()
}), b.on("results:append", function() {
d._positionDropdown(), d._resizeDropdown()
}))
}), b.on("close", function() {
d._hideDropdown(), d._detachPositioningHandler(b)
}), this.$dropdownContainer.on("mousedown", function(a) {
a.stopPropagation()
})
}, c.prototype.destroy = function(a) {
a.call(this), this.$dropdownContainer.remove()
}, c.prototype.position = function(a, b, c) {
b.attr("class", c.attr("class")), b.removeClass("select2"), b.addClass("select2-container--open"), b.css({
position: "absolute",
top: -999999
}), this.$container = c
}, c.prototype.render = function(b) {
var c = a("
"),
d = b.call(this);
return c.append(d), this.$dropdownContainer = c, c
}, c.prototype._hideDropdown = function(a) {
this.$dropdownContainer.detach()
}, c.prototype._attachPositioningHandler = function(c, d) {
var e = this,
f = "scroll.select2." + d.id,
g = "resize.select2." + d.id,
h = "orientationchange.select2." + d.id,
i = this.$container.parents().filter(b.hasScroll);
i.each(function() {
a(this).data("select2-scroll-position", {
x: a(this).scrollLeft(),
y: a(this).scrollTop()
})
}), i.on(f, function(b) {
var c = a(this).data("select2-scroll-position");
a(this).scrollTop(c.y)
}), a(window).on(f + " " + g + " " + h, function(a) {
e._positionDropdown(), e._resizeDropdown()
})
}, c.prototype._detachPositioningHandler = function(c, d) {
var e = "scroll.select2." + d.id,
f = "resize.select2." + d.id,
g = "orientationchange.select2." + d.id,
h = this.$container.parents().filter(b.hasScroll);
h.off(e), a(window).off(e + " " + f + " " + g)
}, c.prototype._positionDropdown = function() {
var b = a(window),
c = this.$dropdown.hasClass("select2-dropdown--above"),
d = this.$dropdown.hasClass("select2-dropdown--below"),
e = null,
f = this.$container.offset();
f.bottom = f.top + this.$container.outerHeight(!1);
var g = {
height: this.$container.outerHeight(!1)
};
g.top = f.top, g.bottom = f.top + g.height;
var h = {
height: this.$dropdown.outerHeight(!1)
},
i = {
top: b.scrollTop(),
bottom: b.scrollTop() + b.height()
},
j = i.top < f.top - h.height,
k = i.bottom > f.bottom + h.height,
l = {
left: f.left,
top: g.bottom
},
m = this.$dropdownParent;
"static" === m.css("position") && (m = m.offsetParent());
var n = m.offset();
l.top -= n.top, l.left -= n.left, c || d || (e = "below"), k || !j || c ? !j && k && c && (e = "below") : e = "above", ("above" == e || c && "below" !== e) && (l.top = g.top - h.height), null != e && (this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--" + e), this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--" + e)), this.$dropdownContainer.css(l)
}, c.prototype._resizeDropdown = function() {
var a = {
width: this.$container.outerWidth(!1) + "px"
};
this.options.get("dropdownAutoWidth") && (a.minWidth = a.width, a.width = "auto"), this.$dropdown.css(a)
}, c.prototype._showDropdown = function(a) {
this.$dropdownContainer.appendTo(this.$dropdownParent), this._positionDropdown(), this._resizeDropdown()
}, c
}), b.define("select2/dropdown/minimumResultsForSearch", [], function() {
function a(b) {
for (var c = 0, d = 0; d < b.length; d++) {
var e = b[d];
e.children ? c += a(e.children) : c++
}
return c
}
function b(a, b, c, d) {
this.minimumResultsForSearch = c.get("minimumResultsForSearch"), this.minimumResultsForSearch < 0 && (this.minimumResultsForSearch = 1 / 0), a.call(this, b, c, d)
}
return b.prototype.showSearch = function(b, c) {
return a(c.data.results) < this.minimumResultsForSearch ? !1 : b.call(this, c)
}, b
}), b.define("select2/dropdown/selectOnClose", [], function() {
function a() {}
return a.prototype.bind = function(a, b, c) {
var d = this;
a.call(this, b, c), b.on("close", function() {
d._handleSelectOnClose()
})
}, a.prototype._handleSelectOnClose = function() {
var a = this.getHighlightedResults();
if (!(a.length < 1)) {
var b = a.data("data");
null != b.element && b.element.selected || null == b.element && b.selected || this.trigger("select", {
data: b
})
}
}, a
}), b.define("select2/dropdown/closeOnSelect", [], function() {
function a() {}
return a.prototype.bind = function(a, b, c) {
var d = this;
a.call(this, b, c), b.on("select", function(a) {
d._selectTriggered(a)
}), b.on("unselect", function(a) {
d._selectTriggered(a)
})
}, a.prototype._selectTriggered = function(a, b) {
var c = b.originalEvent;
c && c.ctrlKey || this.trigger("close", {})
}, a
}), b.define("select2/i18n/en", [], function() {
return {
errorLoading: function() {
return "The results could not be loaded."
},
inputTooLong: function(a) {
var b = a.input.length - a.maximum,
c = "Please delete " + b + " character";
return 1 != b && (c += "s"), c
},
inputTooShort: function(a) {
var b = a.minimum - a.input.length,
c = "Please enter " + b + " or more characters";
return c
},
loadingMore: function() {
return "Loading more results…"
},
maximumSelected: function(a) {
var b = "You can only select " + a.maximum + " item";
return 1 != a.maximum && (b += "s"), b
},
noResults: function() {
return "No results found"
},
searching: function() {
return "Searching…"
}
}
}), b.define("select2/defaults", ["jquery", "require", "./results", "./selection/single", "./selection/multiple", "./selection/placeholder", "./selection/allowClear", "./selection/search", "./selection/eventRelay", "./utils", "./translation", "./diacritics", "./data/select", "./data/array", "./data/ajax", "./data/tags", "./data/tokenizer", "./data/minimumInputLength", "./data/maximumInputLength", "./data/maximumSelectionLength", "./dropdown", "./dropdown/search", "./dropdown/hidePlaceholder", "./dropdown/infiniteScroll", "./dropdown/attachBody", "./dropdown/minimumResultsForSearch", "./dropdown/selectOnClose", "./dropdown/closeOnSelect", "./i18n/en"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C) {
function D() {
this.reset()
}
D.prototype.apply = function(l) {
if (l = a.extend(!0, {}, this.defaults, l), null == l.dataAdapter) {
if (null != l.ajax ? l.dataAdapter = o : null != l.data ? l.dataAdapter = n : l.dataAdapter = m, l.minimumInputLength > 0 && (l.dataAdapter = j.Decorate(l.dataAdapter, r)), l.maximumInputLength > 0 && (l.dataAdapter = j.Decorate(l.dataAdapter, s)), l.maximumSelectionLength > 0 && (l.dataAdapter = j.Decorate(l.dataAdapter, t)), l.tags && (l.dataAdapter = j.Decorate(l.dataAdapter, p)), (null != l.tokenSeparators || null != l.tokenizer) && (l.dataAdapter = j.Decorate(l.dataAdapter, q)), null != l.query) {
var C = b(l.amdBase + "compat/query");
l.dataAdapter = j.Decorate(l.dataAdapter, C)
}
if (null != l.initSelection) {
var D = b(l.amdBase + "compat/initSelection");
l.dataAdapter = j.Decorate(l.dataAdapter, D)
}
}
if (null == l.resultsAdapter && (l.resultsAdapter = c, null != l.ajax && (l.resultsAdapter = j.Decorate(l.resultsAdapter, x)), null != l.placeholder && (l.resultsAdapter = j.Decorate(l.resultsAdapter, w)), l.selectOnClose && (l.resultsAdapter = j.Decorate(l.resultsAdapter, A))), null == l.dropdownAdapter) {
if (l.multiple) l.dropdownAdapter = u;
else {
var E = j.Decorate(u, v);
l.dropdownAdapter = E
}
if (0 !== l.minimumResultsForSearch && (l.dropdownAdapter = j.Decorate(l.dropdownAdapter, z)), l.closeOnSelect && (l.dropdownAdapter = j.Decorate(l.dropdownAdapter, B)), null != l.dropdownCssClass || null != l.dropdownCss || null != l.adaptDropdownCssClass) {
var F = b(l.amdBase + "compat/dropdownCss");
l.dropdownAdapter = j.Decorate(l.dropdownAdapter, F)
}
l.dropdownAdapter = j.Decorate(l.dropdownAdapter, y)
}
if (null == l.selectionAdapter) {
if (l.multiple ? l.selectionAdapter = e : l.selectionAdapter = d, null != l.placeholder && (l.selectionAdapter = j.Decorate(l.selectionAdapter, f)), l.allowClear && (l.selectionAdapter = j.Decorate(l.selectionAdapter, g)), l.multiple && (l.selectionAdapter = j.Decorate(l.selectionAdapter, h)), null != l.containerCssClass || null != l.containerCss || null != l.adaptContainerCssClass) {
var G = b(l.amdBase + "compat/containerCss");
l.selectionAdapter = j.Decorate(l.selectionAdapter, G)
}
l.selectionAdapter = j.Decorate(l.selectionAdapter, i)
}
if ("string" == typeof l.language)
if (l.language.indexOf("-") > 0) {
var H = l.language.split("-"),
I = H[0];
l.language = [l.language, I]
} else l.language = [l.language];
if (a.isArray(l.language)) {
var J = new k;
l.language.push("en");
for (var K = l.language, L = 0; L < K.length; L++) {
var M = K[L],
N = {};
try {
N = k.loadPath(M)
} catch (O) {
try {
M = this.defaults.amdLanguageBase + M, N = k.loadPath(M)
} catch (P) {
l.debug && window.console && console.warn && console.warn('Select2: The language file for "' + M + '" could not be automatically loaded. A fallback will be used instead.');
continue
}
}
J.extend(N)
}
l.translations = J
} else {
var Q = k.loadPath(this.defaults.amdLanguageBase + "en"),
R = new k(l.language);
R.extend(Q), l.translations = R
}
return l
}, D.prototype.reset = function() {
function b(a) {
function b(a) {
return l[a] || a
}
return a.replace(/[^\u0000-\u007E]/g, b)
}
function c(d, e) {
if ("" === a.trim(d.term)) return e;
if (e.children && e.children.length > 0) {
for (var f = a.extend(!0, {}, e), g = e.children.length - 1; g >= 0; g--) {
var h = e.children[g],
i = c(d, h);
null == i && f.children.splice(g, 1)
}
return f.children.length > 0 ? f : c(d, f)
}
var j = b(e.text).toUpperCase(),
k = b(d.term).toUpperCase();
return j.indexOf(k) > -1 ? e : null
}
this.defaults = {
amdBase: "./",
amdLanguageBase: "./i18n/",
closeOnSelect: !0,
debug: !1,
dropdownAutoWidth: !1,
escapeMarkup: j.escapeMarkup,
language: C,
matcher: c,
minimumInputLength: 0,
maximumInputLength: 0,
maximumSelectionLength: 0,
minimumResultsForSearch: 0,
selectOnClose: !1,
sorter: function(a) {
return a
},
templateResult: function(a) {
return a.text
},
templateSelection: function(a) {
return a.text
},
theme: "default",
width: "resolve"
}
}, D.prototype.set = function(b, c) {
var d = a.camelCase(b),
e = {};
e[d] = c;
var f = j._convertData(e);
a.extend(this.defaults, f)
};
var E = new D;
return E
}), b.define("select2/options", ["require", "jquery", "./defaults", "./utils"], function(a, b, c, d) {
function e(b, e) {
if (this.options = b, null != e && this.fromElement(e), this.options = c.apply(this.options), e && e.is("input")) {
var f = a(this.get("amdBase") + "compat/inputData");
this.options.dataAdapter = d.Decorate(this.options.dataAdapter, f)
}
}
return e.prototype.fromElement = function(a) {
var c = ["select2"];
null == this.options.multiple && (this.options.multiple = a.prop("multiple")), null == this.options.disabled && (this.options.disabled = a.prop("disabled")), null == this.options.language && (a.prop("lang") ? this.options.language = a.prop("lang").toLowerCase() : a.closest("[lang]").prop("lang") && (this.options.language = a.closest("[lang]").prop("lang"))), null == this.options.dir && (a.prop("dir") ? this.options.dir = a.prop("dir") : a.closest("[dir]").prop("dir") ? this.options.dir = a.closest("[dir]").prop("dir") : this.options.dir = "ltr"), a.prop("disabled", this.options.disabled), a.prop("multiple", this.options.multiple), a.data("select2Tags") && (this.options.debug && window.console && console.warn && console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'), a.data("data", a.data("select2Tags")), a.data("tags", !0)), a.data("ajaxUrl") && (this.options.debug && window.console && console.warn && console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."), a.attr("ajax--url", a.data("ajaxUrl")), a.data("ajax--url", a.data("ajaxUrl")));
var e = {};
e = b.fn.jquery && "1." == b.fn.jquery.substr(0, 2) && a[0].dataset ? b.extend(!0, {}, a[0].dataset, a.data()) : a.data();
var f = b.extend(!0, {}, e);
f = d._convertData(f);
for (var g in f) b.inArray(g, c) > -1 || (b.isPlainObject(this.options[g]) ? b.extend(this.options[g], f[g]) : this.options[g] = f[g]);
return this
}, e.prototype.get = function(a) {
return this.options[a]
}, e.prototype.set = function(a, b) {
this.options[a] = b
}, e
}), b.define("select2/core", ["jquery", "./options", "./utils", "./keys"], function(a, b, c, d) {
var e = function(a, c) {
null != a.data("select2") && a.data("select2").destroy(), this.$element = a, this.id = this._generateId(a), c = c || {}, this.options = new b(c, a), e.__super__.constructor.call(this);
var d = a.attr("tabindex") || 0;
a.data("old-tabindex", d), a.attr("tabindex", "-1");
var f = this.options.get("dataAdapter");
this.dataAdapter = new f(a, this.options);
var g = this.render();
this._placeContainer(g);
var h = this.options.get("selectionAdapter");
this.selection = new h(a, this.options), this.$selection = this.selection.render(), this.selection.position(this.$selection, g);
var i = this.options.get("dropdownAdapter");
this.dropdown = new i(a, this.options), this.$dropdown = this.dropdown.render(), this.dropdown.position(this.$dropdown, g);
var j = this.options.get("resultsAdapter");
this.results = new j(a, this.options, this.dataAdapter), this.$results = this.results.render(), this.results.position(this.$results, this.$dropdown);
var k = this;
this._bindAdapters(), this._registerDomEvents(), this._registerDataEvents(), this._registerSelectionEvents(), this._registerDropdownEvents(), this._registerResultsEvents(), this._registerEvents(), this.dataAdapter.current(function(a) {
k.trigger("selection:update", {
data: a
})
}), a.addClass("select2-hidden-accessible"), a.attr("aria-hidden", "true"), this._syncAttributes(), a.data("select2", this)
};
return c.Extend(e, c.Observable), e.prototype._generateId = function(a) {
var b = "";
return b = null != a.attr("id") ? a.attr("id") : null != a.attr("name") ? a.attr("name") + "-" + c.generateChars(2) : c.generateChars(4), b = b.replace(/(:|\.|\[|\]|,)/g, ""), b = "select2-" + b
}, e.prototype._placeContainer = function(a) {
a.insertAfter(this.$element);
var b = this._resolveWidth(this.$element, this.options.get("width"));
null != b && a.css("width", b)
}, e.prototype._resolveWidth = function(a, b) {
var c = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
if ("resolve" == b) {
var d = this._resolveWidth(a, "style");
return null != d ? d : this._resolveWidth(a, "element")
}
if ("element" == b) {
var e = a.outerWidth(!1);
return 0 >= e ? "auto" : e + "px"
}
if ("style" == b) {
var f = a.attr("style");
if ("string" != typeof f) return null;
for (var g = f.split(";"), h = 0, i = g.length; i > h; h += 1) {
var j = g[h].replace(/\s/g, ""),
k = j.match(c);
if (null !== k && k.length >= 1) return k[1]
}
return null
}
return b
}, e.prototype._bindAdapters = function() {
this.dataAdapter.bind(this, this.$container), this.selection.bind(this, this.$container), this.dropdown.bind(this, this.$container), this.results.bind(this, this.$container)
}, e.prototype._registerDomEvents = function() {
var b = this;
this.$element.on("change.select2", function() {
b.dataAdapter.current(function(a) {
b.trigger("selection:update", {
data: a
})
})
}), this._sync = c.bind(this._syncAttributes, this), this.$element[0].attachEvent && this.$element[0].attachEvent("onpropertychange", this._sync);
var d = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
null != d ? (this._observer = new d(function(c) {
a.each(c, b._sync)
}), this._observer.observe(this.$element[0], {
attributes: !0,
subtree: !1
})) : this.$element[0].addEventListener && this.$element[0].addEventListener("DOMAttrModified", b._sync, !1)
}, e.prototype._registerDataEvents = function() {
var a = this;
this.dataAdapter.on("*", function(b, c) {
a.trigger(b, c)
})
}, e.prototype._registerSelectionEvents = function() {
var b = this,
c = ["toggle", "focus"];
this.selection.on("toggle", function() {
b.toggleDropdown()
}), this.selection.on("focus", function(a) {
b.focus(a)
}), this.selection.on("*", function(d, e) {
-1 === a.inArray(d, c) && b.trigger(d, e)
})
}, e.prototype._registerDropdownEvents = function() {
var a = this;
this.dropdown.on("*", function(b, c) {
a.trigger(b, c)
})
}, e.prototype._registerResultsEvents = function() {
var a = this;
this.results.on("*", function(b, c) {
a.trigger(b, c)
})
}, e.prototype._registerEvents = function() {
var a = this;
this.on("open", function() {
a.$container.addClass("select2-container--open")
}), this.on("close", function() {
a.$container.removeClass("select2-container--open")
}), this.on("enable", function() {
a.$container.removeClass("select2-container--disabled")
}), this.on("disable", function() {
a.$container.addClass("select2-container--disabled")
}), this.on("blur", function() {
a.$container.removeClass("select2-container--focus")
}), this.on("query", function(b) {
a.isOpen() || a.trigger("open", {}), this.dataAdapter.query(b, function(c) {
a.trigger("results:all", {
data: c,
query: b
})
})
}), this.on("query:append", function(b) {
this.dataAdapter.query(b, function(c) {
a.trigger("results:append", {
data: c,
query: b
})
})
}), this.on("keypress", function(b) {
var c = b.which;
a.isOpen() ? c === d.ESC || c === d.TAB || c === d.UP && b.altKey ? (a.close(), b.preventDefault()) : c === d.ENTER ? (a.trigger("results:select", {}), b.preventDefault()) : c === d.SPACE && b.ctrlKey ? (a.trigger("results:toggle", {}), b.preventDefault()) : c === d.UP ? (a.trigger("results:previous", {}), b.preventDefault()) : c === d.DOWN && (a.trigger("results:next", {}), b.preventDefault()) : (c === d.ENTER || c === d.SPACE || c === d.DOWN && b.altKey) && (a.open(), b.preventDefault())
})
}, e.prototype._syncAttributes = function() {
this.options.set("disabled", this.$element.prop("disabled")), this.options.get("disabled") ? (this.isOpen() && this.close(), this.trigger("disable", {})) : this.trigger("enable", {})
}, e.prototype.trigger = function(a, b) {
var c = e.__super__.trigger,
d = {
open: "opening",
close: "closing",
select: "selecting",
unselect: "unselecting"
};
if (void 0 === b && (b = {}), a in d) {
var f = d[a],
g = {
prevented: !1,
name: a,
args: b
};
if (c.call(this, f, g), g.prevented) return void(b.prevented = !0)
}
c.call(this, a, b)
}, e.prototype.toggleDropdown = function() {
this.options.get("disabled") || (this.isOpen() ? this.close() : this.open())
}, e.prototype.open = function() {
this.isOpen() || this.trigger("query", {})
}, e.prototype.close = function() {
this.isOpen() && this.trigger("close", {})
}, e.prototype.isOpen = function() {
return this.$container.hasClass("select2-container--open")
}, e.prototype.hasFocus = function() {
return this.$container.hasClass("select2-container--focus")
}, e.prototype.focus = function(a) {
this.hasFocus() || (this.$container.addClass("select2-container--focus"), this.trigger("focus", {}))
}, e.prototype.enable = function(a) {
this.options.get("debug") && window.console && console.warn && console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'), (null == a || 0 === a.length) && (a = [!0]);
var b = !a[0];
this.$element.prop("disabled", b)
}, e.prototype.data = function() {
this.options.get("debug") && arguments.length > 0 && window.console && console.warn && console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');
var a = [];
return this.dataAdapter.current(function(b) {
a = b
}), a
}, e.prototype.val = function(b) {
if (this.options.get("debug") && window.console && console.warn && console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'), null == b || 0 === b.length) return this.$element.val();
var c = b[0];
a.isArray(c) && (c = a.map(c, function(a) {
return a.toString()
})), this.$element.val(c).trigger("change")
}, e.prototype.destroy = function() {
this.$container.remove(), this.$element[0].detachEvent && this.$element[0].detachEvent("onpropertychange", this._sync), null != this._observer ? (this._observer.disconnect(), this._observer = null) : this.$element[0].removeEventListener && this.$element[0].removeEventListener("DOMAttrModified", this._sync, !1), this._sync = null, this.$element.off(".select2"), this.$element.attr("tabindex", this.$element.data("old-tabindex")), this.$element.removeClass("select2-hidden-accessible"), this.$element.attr("aria-hidden", "false"), this.$element.removeData("select2"), this.dataAdapter.destroy(), this.selection.destroy(), this.dropdown.destroy(), this.results.destroy(), this.dataAdapter = null, this.selection = null, this.dropdown = null, this.results = null
}, e.prototype.render = function() {
var b = a('
');
return b.attr("dir", this.options.get("dir")), this.$container = b, this.$container.addClass("select2-container--" + this.options.get("theme")), b.data("element", this.$element), b
}, e
}), b.define("select2/compat/utils", ["jquery"], function(a) {
function b(b, c, d) {
var e, f, g = [];
e = a.trim(b.attr("class")), e && (e = "" + e, a(e.split(/\s+/)).each(function() {
0 === this.indexOf("select2-") && g.push(this)
})), e = a.trim(c.attr("class")), e && (e = "" + e, a(e.split(/\s+/)).each(function() {
0 !== this.indexOf("select2-") && (f = d(this), null != f && g.push(f))
})), b.attr("class", g.join(" "))
}
return {
syncCssClasses: b
}
}), b.define("select2/compat/containerCss", ["jquery", "./utils"], function(a, b) {
function c(a) {
return null
}
function d() {}
return d.prototype.render = function(d) {
var e = d.call(this),
f = this.options.get("containerCssClass") || "";
a.isFunction(f) && (f = f(this.$element));
var g = this.options.get("adaptContainerCssClass");
if (g = g || c, -1 !== f.indexOf(":all:")) {
f = f.replace(":all:", "");
var h = g;
g = function(a) {
var b = h(a);
return null != b ? b + " " + a : a
}
}
var i = this.options.get("containerCss") || {};
return a.isFunction(i) && (i = i(this.$element)), b.syncCssClasses(e, this.$element, g), e.css(i), e.addClass(f), e
}, d
}), b.define("select2/compat/dropdownCss", ["jquery", "./utils"], function(a, b) {
function c(a) {
return null
}
function d() {}
return d.prototype.render = function(d) {
var e = d.call(this),
f = this.options.get("dropdownCssClass") || "";
a.isFunction(f) && (f = f(this.$element));
var g = this.options.get("adaptDropdownCssClass");
if (g = g || c, -1 !== f.indexOf(":all:")) {
f = f.replace(":all:", "");
var h = g;
g = function(a) {
var b = h(a);
return null != b ? b + " " + a : a;
}
}
var i = this.options.get("dropdownCss") || {};
return a.isFunction(i) && (i = i(this.$element)), b.syncCssClasses(e, this.$element, g), e.css(i), e.addClass(f), e
}, d
}), b.define("select2/compat/initSelection", ["jquery"], function(a) {
function b(a, b, c) {
c.get("debug") && window.console && console.warn && console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"), this.initSelection = c.get("initSelection"), this._isInitialized = !1, a.call(this, b, c)
}
return b.prototype.current = function(b, c) {
var d = this;
return this._isInitialized ? void b.call(this, c) : void this.initSelection.call(null, this.$element, function(b) {
d._isInitialized = !0, a.isArray(b) || (b = [b]), c(b)
})
}, b
}), b.define("select2/compat/inputData", ["jquery"], function(a) {
function b(a, b, c) {
this._currentData = [], this._valueSeparator = c.get("valueSeparator") || ",", "hidden" === b.prop("type") && c.get("debug") && console && console.warn && console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `
` element instead."), a.call(this, b, c)
}
return b.prototype.current = function(b, c) {
function d(b, c) {
var e = [];
return b.selected || -1 !== a.inArray(b.id, c) ? (b.selected = !0, e.push(b)) : b.selected = !1, b.children && e.push.apply(e, d(b.children, c)), e
}
for (var e = [], f = 0; f < this._currentData.length; f++) {
var g = this._currentData[f];
e.push.apply(e, d(g, this.$element.val().split(this._valueSeparator)))
}
c(e)
}, b.prototype.select = function(b, c) {
if (this.options.get("multiple")) {
var d = this.$element.val();
d += this._valueSeparator + c.id, this.$element.val(d), this.$element.trigger("change")
} else this.current(function(b) {
a.map(b, function(a) {
a.selected = !1
})
}), this.$element.val(c.id), this.$element.trigger("change")
}, b.prototype.unselect = function(a, b) {
var c = this;
b.selected = !1, this.current(function(a) {
for (var d = [], e = 0; e < a.length; e++) {
var f = a[e];
b.id != f.id && d.push(f.id)
}
c.$element.val(d.join(c._valueSeparator)), c.$element.trigger("change")
})
}, b.prototype.query = function(a, b, c) {
for (var d = [], e = 0; e < this._currentData.length; e++) {
var f = this._currentData[e],
g = this.matches(b, f);
null !== g && d.push(g)
}
c({
results: d
})
}, b.prototype.addOptions = function(b, c) {
var d = a.map(c, function(b) {
return a.data(b[0], "data")
});
this._currentData.push.apply(this._currentData, d)
}, b
}), b.define("select2/compat/matcher", ["jquery"], function(a) {
function b(b) {
function c(c, d) {
var e = a.extend(!0, {}, d);
if (null == c.term || "" === a.trim(c.term)) return e;
if (d.children) {
for (var f = d.children.length - 1; f >= 0; f--) {
var g = d.children[f],
h = b(c.term, g.text, g);
h || e.children.splice(f, 1)
}
if (e.children.length > 0) return e
}
return b(c.term, d.text, d) ? e : null
}
return c
}
return b
}), b.define("select2/compat/query", [], function() {
function a(a, b, c) {
c.get("debug") && window.console && console.warn && console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."), a.call(this, b, c)
}
return a.prototype.query = function(a, b, c) {
b.callback = c;
var d = this.options.get("query");
d.call(null, b)
}, a
}), b.define("select2/dropdown/attachContainer", [], function() {
function a(a, b, c) {
a.call(this, b, c)
}
return a.prototype.position = function(a, b, c) {
var d = c.find(".dropdown-wrapper");
d.append(b), b.addClass("select2-dropdown--below"), c.addClass("select2-container--below")
}, a
}), b.define("select2/dropdown/stopPropagation", [], function() {
function a() {}
return a.prototype.bind = function(a, b, c) {
a.call(this, b, c);
var d = ["blur", "change", "click", "dblclick", "focus", "focusin", "focusout", "input", "keydown", "keyup", "keypress", "mousedown", "mouseenter", "mouseleave", "mousemove", "mouseover", "mouseup", "search", "touchend", "touchstart"];
this.$dropdown.on(d.join(" "), function(a) {
a.stopPropagation()
})
}, a
}), b.define("select2/selection/stopPropagation", [], function() {
function a() {}
return a.prototype.bind = function(a, b, c) {
a.call(this, b, c);
var d = ["blur", "change", "click", "dblclick", "focus", "focusin", "focusout", "input", "keydown", "keyup", "keypress", "mousedown", "mouseenter", "mouseleave", "mousemove", "mouseover", "mouseup", "search", "touchend", "touchstart"];
this.$selection.on(d.join(" "), function(a) {
a.stopPropagation()
})
}, a
}),
function(c) {
"function" == typeof b.define && b.define.amd ? b.define("jquery-mousewheel", ["jquery"], c) : "object" == typeof exports ? module.exports = c : c(a)
}(function(a) {
function b(b) {
var g = b || window.event,
h = i.call(arguments, 1),
j = 0,
l = 0,
m = 0,
n = 0,
o = 0,
p = 0;
if (b = a.event.fix(g), b.type = "mousewheel", "detail" in g && (m = -1 * g.detail), "wheelDelta" in g && (m = g.wheelDelta), "wheelDeltaY" in g && (m = g.wheelDeltaY), "wheelDeltaX" in g && (l = -1 * g.wheelDeltaX), "axis" in g && g.axis === g.HORIZONTAL_AXIS && (l = -1 * m, m = 0), j = 0 === m ? l : m, "deltaY" in g && (m = -1 * g.deltaY, j = m), "deltaX" in g && (l = g.deltaX, 0 === m && (j = -1 * l)), 0 !== m || 0 !== l) {
if (1 === g.deltaMode) {
var q = a.data(this, "mousewheel-line-height");
j *= q, m *= q, l *= q
} else if (2 === g.deltaMode) {
var r = a.data(this, "mousewheel-page-height");
j *= r, m *= r, l *= r
}
if (n = Math.max(Math.abs(m), Math.abs(l)), (!f || f > n) && (f = n, d(g, n) && (f /= 40)), d(g, n) && (j /= 40, l /= 40, m /= 40), j = Math[j >= 1 ? "floor" : "ceil"](j / f), l = Math[l >= 1 ? "floor" : "ceil"](l / f), m = Math[m >= 1 ? "floor" : "ceil"](m / f), k.settings.normalizeOffset && this.getBoundingClientRect) {
var s = this.getBoundingClientRect();
o = b.clientX - s.left, p = b.clientY - s.top
}
return b.deltaX = l, b.deltaY = m, b.deltaFactor = f, b.offsetX = o, b.offsetY = p, b.deltaMode = 0, h.unshift(b, j, l, m), e && clearTimeout(e), e = setTimeout(c, 200), (a.event.dispatch || a.event.handle).apply(this, h)
}
}
function c() {
f = null
}
function d(a, b) {
return k.settings.adjustOldDeltas && "mousewheel" === a.type && b % 120 === 0
}
var e, f, g = ["wheel", "mousewheel", "DOMMouseScroll", "MozMousePixelScroll"],
h = "onwheel" in document || document.documentMode >= 9 ? ["wheel"] : ["mousewheel", "DomMouseScroll", "MozMousePixelScroll"],
i = Array.prototype.slice;
if (a.event.fixHooks)
for (var j = g.length; j;) a.event.fixHooks[g[--j]] = a.event.mouseHooks;
var k = a.event.special.mousewheel = {
version: "3.1.12",
setup: function() {
if (this.addEventListener)
for (var c = h.length; c;) this.addEventListener(h[--c], b, !1);
else this.onmousewheel = b;
a.data(this, "mousewheel-line-height", k.getLineHeight(this)), a.data(this, "mousewheel-page-height", k.getPageHeight(this))
},
teardown: function() {
if (this.removeEventListener)
for (var c = h.length; c;) this.removeEventListener(h[--c], b, !1);
else this.onmousewheel = null;
a.removeData(this, "mousewheel-line-height"), a.removeData(this, "mousewheel-page-height")
},
getLineHeight: function(b) {
var c = a(b),
d = c["offsetParent" in a.fn ? "offsetParent" : "parent"]();
return d.length || (d = a("body")), parseInt(d.css("fontSize"), 10) || parseInt(c.css("fontSize"), 10) || 16
},
getPageHeight: function(b) {
return a(b).height()
},
settings: {
adjustOldDeltas: !0,
normalizeOffset: !0
}
};
a.fn.extend({
mousewheel: function(a) {
return a ? this.bind("mousewheel", a) : this.trigger("mousewheel")
},
unmousewheel: function(a) {
return this.unbind("mousewheel", a)
}
})
}), b.define("jquery.select2", ["jquery", "jquery-mousewheel", "./select2/core", "./select2/defaults"], function(a, b, c, d) {
if (null == a.fn.select2) {
var e = ["open", "close", "destroy"];
a.fn.select2 = function(b) {
if (b = b || {}, "object" == typeof b) return this.each(function() {
var d = a.extend(!0, {}, b);
new c(a(this), d)
}), this;
if ("string" == typeof b) {
var d;
return this.each(function() {
var c = a(this).data("select2");
null == c && window.console && console.error && console.error("The select2('" + b + "') method was called on an element that is not using Select2.");
var e = Array.prototype.slice.call(arguments, 1);
d = c[b].apply(c, e)
}), a.inArray(b, e) > -1 ? this : d
}
throw new Error("Invalid arguments for Select2: " + b)
}
}
return null == a.fn.select2.defaults && (a.fn.select2.defaults = d), c
}), {
define: b.define,
require: b.require
}
}(),
c = b.require("jquery.select2");
return a.fn.select2.amd = b, c
});
(function($, undefined) {
"use strict";
/**
* Shared variables
*/
var ua = navigator.userAgent.toLowerCase(),
platform = navigator.platform.toLowerCase(),
$window = $(window),
$document = $(document),
$html = $('html'),
$body = $('body'),
android_ancient = (ua.indexOf('mozilla/5.0') !== -1 && ua.indexOf('android') !== -1 && ua.indexOf('applewebKit') !== -1) && ua.indexOf('chrome') === -1,
apple = ua.match(/(iPad|iPhone|iPod|Macintosh)/i),
webkit = ua.indexOf('webkit') != -1,
isiPhone = false,
isiPod = false,
isAndroidPhone = false,
android = false,
iOS = false,
isIE = false,
ieMobile = false,
isSafari = false,
isMac = false,
isWindows = false,
isiele10 = false,
firefox = ua.indexOf('gecko') != -1,
safari = ua.indexOf('safari') != -1 && ua.indexOf('chrome') == -1,
is_small = $('.js-nav-trigger').is(':visible'),
windowHeight = $window.height(),
windowWidth = $window.width(),
documentHeight = $document.height(),
orientation = windowWidth > windowHeight ? 'portrait' : 'landscape',
filmWidth,
contentWidth,
sidebarWidth,
latestKnownScrollY = window.scrollY,
latestKnownScrollX = window.scrollX,
latestKnownMouseX = 0,
latestKnownMouseY = 0,
latestDeviceAlpha = 0,
latestDeviceBeta = 0,
latestDeviceGamma = 0,
ticking = false,
horToVertScroll = false,
globalDebug = false,
$reviewsParent = null;
var Carousel = (function() {
var offset, $container, $images, $prev, $next, lastScroll, totalWidth, $arrow, $currentImg;
function init() {
if (!$('.entry-featured-gallery').length) {
return;
}
offset = $('.entry-header').offset().left;
$container = $('.entry-featured-gallery');
$arrow = $('.arrow-icon-svg');
$prev = $('' + $arrow.html() + '
');
$next = $('' + $arrow.html() + '
');
lastScroll = 0;
totalWidth = 0;
var isRtl = $body.hasClass('rtl');
if (isRtl) {
$container.children().each(function(i, obj) {
$container.prepend(obj)
});
}
$images = $container.find('.entry-featured-image');
if ($container.length && $images.length) {
$prev.add($next).appendTo($container.parent());
var zeroWidth = $images.last().width();
$currentImg = $images.first();
$images.each(function(i, obj) {
var $item = $(obj),
itemWidth = $item.width(),
itemOffset = $item.offset().left,
marginRight = parseInt($item.css('marginRight'), 10);
totalWidth = totalWidth + itemWidth + marginRight;
$item.data('index', i);
$item.data('offset', itemOffset);
$item.data('width', itemWidth);
});
if (totalWidth < windowWidth) {
$container.parent().addClass('is--at-start is--at-end').addClass('carousel-center');
}
lastScroll = zeroWidth - offset;
$images = $container.children();
onScroll();
$container.on('scroll', onScroll);
$('.gallery-arrow-prev').on('click', goToPrev);
$('.gallery-arrow-next').on('click', goToNext);
$prev.add($next).addClass('is--ready');
}
if (isRtl) {
$container.scrollLeft($container[0].scrollWidth);
}
}
function onScroll() {
lastScroll = $container.scrollLeft();
$container.parent()
.toggleClass('is--at-start', lastScroll <= 10)
.toggleClass('is--at-end', lastScroll >= totalWidth - windowWidth - 10);
}
function goToPrev() {
var $to;
$images.each(function(i, obj) {
var $image = $(obj);
if ($image.data('offset') < lastScroll) {
$to = $image;
}
});
if (typeof $to !== "undefined") {
setCurrent($to);
}
}
function goToNext() {
var $to;
$images.each(function(i, obj) {
var $image = $(obj);
if ($image.data('offset') + $image.data('width') > lastScroll + windowWidth) {
if ($image.attr('src') == $currentImg.attr('src')) {
$image = $image.next();
}
$to = $image;
return false;
}
});
if (typeof $to !== "undefined") {
setCurrent($to);
}
}
function setCurrent($current) {
$currentImg = $current;
TweenLite.to($container, .3, {
scrollTo: {
x: $current.data('offset') - offset
},
ease: Power2.easeOut
});
}
return {
init: init
}
})();
$('.js-widget-gallery').magnificPopup({
delegate: '.listing-gallery__item', // child items selector, by clicking on it popup will open
type: 'image',
image: {
titleSrc: function(item) {
var output = '';
output += item.el.find('img').attr('caption');
output += '' + item.el.find('img').attr('description') + ' ';
return output;
}
},
gallery: {
enabled: true,
tCounter: '%curr%/%total% ',
arrowMarkup: '' + $('.arrow-icon-svg').html() + '
'
}
});
$('.listing-gallery__all').on('click', function(e) {
e.preventDefault();
$('.js-widget-gallery').magnificPopup('open');
});
if (typeof listable_params.login_url !== "undefined" && listable_params.login_url.indexOf('action=logout') === -1) {
$('a.iframe-login-link').magnificPopup({
mainClass: "mfp-bg-transparent mfp-login-modal",
type: 'iframe',
src: listable_params.login_url,
iframe: {
markup: '' // HTML markup of popup, `mfp-close` will be replaced by the close button
},
callbacks: {
open: function() {
if (!listableDocumentCookies.hasItem('listable_login_modal')) {
listableDocumentCookies.setItem('listable_login_modal', 'opened', null, '/');
}
closeMenu();
$('body').addClass('overlay-is-open');
$('body').width($('body').width());
$('body').css('overflow', 'hidden');
},
close: function() {
listableDocumentCookies.removeItem('listable_login_modal', '/');
$('body').removeClass('overlay-is-open');
$('body').removeAttr('style');
}
}
});
}
if ($('#map').length && typeof L === "object") {
// set Leaflet's default path for images
L.Icon.Default.imagePath = 'wp-content/themes/listable/assets/img/';
}
// Map module
var Map = (
function() {
// create a custom icon class that can be extended for each listing category
var map, markers, CustomHtmlIcon;
// initialization - check wether we are on the archive page or on a single listing
function init() {
if ($('.no_job_listings_found').length) {
$('' + listable_params.strings['no_job_listings_found'] + '
').prependTo('.showing_jobs, .search-query');
}
if (!$('#map').length) {
$('#main .job_listings').on('updated_results', function(e, result) {
updateCards(result.total_found);
});
return;
}
if (typeof L !== "object" || !L.hasOwnProperty('map')) {
return;
}
map = L.map('map', {
scrollWheelZoom: false
});
markers = new L.MarkerClusterGroup({
showCoverageOnHover: false
});
CustomHtmlIcon = L.HtmlIcon.extend({
options: {
html: "
",
iconSize: [48, 59], // size of the icon
iconAnchor: [24, 59], // point of the icon which will correspond to marker's location
popupAnchor: [0, -59] // point from which the popup should open relative to the iconAnchor
}
});
$window.on('pxg:refreshmap', function() {
map._onResize();
});
var tileLayer,
mapboxToken = $('body').data('mapbox-token'),
mapboxStyle = $('body').data('mapbox-style');
if (!empty(mapboxToken)) {
tileLayer = L.tileLayer('https://api.tiles.mapbox.com/v4/' + mapboxStyle + '/{z}/{x}/{y}.png?access_token=' + mapboxToken, {
maxZoom: listable_params.mapbox.maxZoom,
attribution: '© Mapbox | © OpenStreetMap ',
id: 'mapbox.streets'
})
} else {
tileLayer = L.gridLayer.googleMutant({
type: 'roadmap'
});
$('#map').addClass('map--google');
}
map.addLayer(tileLayer);
// if we are on the archive page (#map is not a single listing's map) :D
// @todo do do doom
if (!$('#map').is('.listing-map')) {
$('#main .job_listings').on('updated_results', function(e, result) {
updateCards(result.total_found);
});
//This one is for FacetWP
$(document).on('facetwp-loaded', function(e, result) {
updateCards();
});
} else {
var $item = $('.single_job_listing');
// add only one marker if we're on the single listing page
if (typeof $item.data('latitude') !== "undefined" && typeof $item.data('longitude') !== "undefined") {
var zoom = (
typeof MapWidgetZoom !== "undefined"
) ? MapWidgetZoom : 13;
addPinToMap($item);
map.addLayer(markers);
map.setActiveArea('active-area');
map.setView([$item.data('latitude'), $item.data('longitude')], zoom);
$(window).on('update:map', function() {
map.setView([$item.data('latitude'), $item.data('longitude')], zoom);
});
} else {
$('#map').hide();
$('.listing-address').css('marginTop', 0);
}
}
$('.js-find-me').on('click', function(e) {
e.preventDefault();
e.stopPropagation();
map.locate({
setView: true,
maxZoom: listable_params.mapbox.maxZoom
});
});
}
function updateCards($total_found) {
var $cards = $('#main .card');
var cardsWithLocation = 0;
if (!$cards.length) {
$('body').addClass('has-no-listings');
defaultMapView();
return;
}
//first some cleanup to avoid multiple results being shown - it happens
$('.showing_jobs .results').remove();
if (typeof $total_found !== 'undefined') {
//someone must have blessed us with higher knowledge
//let's not let it go to waste
$('' + $total_found + ' ' + listable_params.strings['results-no'] + '
').prependTo('.showing_jobs, .search-query');
} else {
$('' + $cards.length + ' ' + listable_params.strings['results-no'] + '
').prependTo('.showing_jobs, .search-query');
}
if ($('.map').length && typeof map !== "undefined") {
map.removeLayer(markers);
markers = new L.MarkerClusterGroup({
showCoverageOnHover: false,
spiderfyDistanceMultiplier: 3,
spiderLegPolylineOptions: {
weight: 0
}
});
$cards.each(function(i, obj) {
var cardHasLocation = addPinToMap($(obj), true);
if (cardHasLocation) {
cardsWithLocation += 1;
}
});
if (cardsWithLocation != 0) {
map.fitBounds(markers.getBounds(), {
padding: [50, 50]
});
map.addLayer(markers);
var mapZoom = map.getZoom();
var bounds = markers.getBounds();
var lat = (bounds._northEast.lat + bounds._southWest.lat) / 2;
var lng = (bounds._northEast.lng + bounds._southWest.lng) / 2;
bounds = [lat, lng];
Cookies.set('pxg-listable-bounds', JSON.stringify(bounds));
Cookies.set('pxg-listable-mapZoom', mapZoom);
} else {
defaultMapView();
}
}
}
function addPinToMap($item, archive) {
var categories = $item.data('categories'),
iconClass, m;
if (empty($item.data('latitude')) || empty($item.data('longitude'))) {
return false;
}
if (typeof categories !== "undefined" && !categories.length) {
iconClass = 'pin pin--empty';
} else {
iconClass = 'pin';
}
var $icon = $('.selected-icon-svg'),
$tags = $item.find('.card__tag'),
$categories = $item.find('.category-icon'),
$tag, iconHTML = "" + $('.empty-icon-svg').html() + "
";
if ($body.is('.single-job_listing')) {
// If we are on a single listing
if ($('.single-listing-map-category-icon').length) {
iconHTML = "" + $icon.html() + "
" + $('.single-listing-map-category-icon').html() + "
";
}
} else if ($tags.length) {
$tag = $tags.first();
iconHTML = "" + $icon.html() + $tag.html() + "
";
} else if ($categories.length) {
iconHTML = "" + $icon.html() + "
" + $categories.html() + "
";
}
m = L.marker([$item.data('latitude'), $item.data('longitude')], {
icon: new CustomHtmlIcon({
html: iconHTML
})
});
if (typeof archive !== "undefined") {
$item.hover(function() {
$(m._icon).find('.pin').addClass('pin--selected');
}, function() {
$(m._icon).find('.pin').removeClass('pin--selected');
});
var rating = $item.find('.js-average-rating').text(),
ratingHTML = rating.length ? "" : "",
address = $item.find('.card__address').text();
m.bindPopup(
"").openPopup();
}
markers.addLayer(m);
return true;
}
function defaultMapView() {
var bounds = Cookies.get('pxg-listable-bounds'),
zoom = Cookies.get('pxg-listable-mapZoom');
if (typeof bounds === 'undefined') {
bounds = [51.4825766, 0.0098476];
zoom = 9;
} else {
bounds = JSON.parse(bounds);
}
map.removeLayer(markers);
map.setView(bounds, zoom);
}
return {
init: init,
updateResults: updateCards
}
}
)();
function platformDetect() {
var isIE = typeof(is_ie) !== "undefined" || (!(window.ActiveXObject) && "ActiveXObject" in window),
isiele10 = ua.match(/msie (9|([1-9][0-9]))/i),
isie9 = ua.match(/msie (9)/i);
iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
if (isIE) {
$html.addClass('is--ie');
}
if (isiele10) {
$html.addClass('is--iele10');
}
if (isie9) {
$html.addClass('is--ie9');
}
if (/Edge\/12./i.test(navigator.userAgent)) {
$html.addClass('is--edge');
}
if (iOS) {
$html.addClass('is--ios');
}
}
// /* ====== ON DOCUMENT READY ====== */
$(document).ready(function() {
init();
$('.job_filters').bindFirst('click', '.reset', function() {
$('.active-tags').empty();
$('.tags-select').find(':selected').each(function(i, obj) {
$(obj).attr('selected', false);
});
$('.tags-select').trigger("chosen:updated");
$('input[name="search_keywords"]').each(function(i, obj) {
$(obj).val('').trigger('chosen:updated');
});
});
$('.wc-social-login').attr('data-string', listable_params.strings.social_login_string);
});
// [name] is the name of the event "click", "mouseover", ..
// same as you'd pass it to bind()
// [fn] is the handler function
$.fn.bindFirst = function(name, selector, fn) {
// bind as you normally would
// don't want to miss out on any jQuery magic
this.on(name, selector, fn);
// Thanks to a comment by @Martin, adding support for
// namespaced events too.
this.each(function() {
var handlers = $._data(this, 'events')[name.split('.')[0]];
// take out the handler we just inserted from the end
var handler = handlers.pop();
// move it at the beginning
handlers.splice(0, 0, handler);
});
};
function customizerOptionsPadding() {
var $updatable = $('.page-listings .js-header-height-padding-top'),
$map = $('.map'),
$jobFilters = $(' .job_filters .search_jobs div.search_location'),
$findMeButton = $('.findme'),
headerHeight = $('.site-header').outerHeight();
// set padding top to certain elements which is equal to the header height
$updatable.css('paddingTop', '');
$updatable.css('paddingTop', headerHeight);
if ($('#wpadminbar').length) {
headerHeight += $('#wpadminbar').outerHeight();
}
$map.css('top', headerHeight);
$jobFilters.css('top', headerHeight);
$findMeButton.css('top', headerHeight + 70);
}
function init() {
platformDetect();
browserSupport();
browserSize();
eventHandlers();
var headerPaddingBottom = parseInt($('.site-header').css('paddingTop')) + $('.secondary-menu').outerHeight();
$('.site-header').css('paddingBottom', headerPaddingBottom);
customizerOptionsPadding();
$('html').addClass('is--ready');
var $email = $('input#account_email'),
$target = $('.field.account-sign-in'),
$fieldset;
if ($email.length && $target.length) {
$fieldset = $email.closest('fieldset');
$email.insertAfter($target);
$fieldset.remove();
}
var $uploader = $('.wp-job-manager-file-upload');
$uploader.each(function(i, obj) {
var $input = $(obj),
id = $(obj).attr('id'),
$label = $('label[for="' + id + '"]'),
$btn = $('' + listable_params.strings['wp-job-manager-file-upload'] + '
').insertAfter($input);
$btn.on('click', function() {
$label.trigger('click');
});
});
$('#main_image').on('change', function(e) {
var self = this;
var this_logo = $('#company_logo').val();
if (this_logo === '') {
var url = self.value;
}
});
if ($('#job_preview').length) {
$body.addClass('single-job_listing single-job_listing_preview').removeClass('page-add-listing');
$('.page').removeClass('page');
$('.listing-map').css({
display: '',
height: ''
});
singleListingMapHeight();
$window.trigger('pxg:refreshmap');
$('#job_preview').css('opacity', 1);
}
$('.btn--filter').on('click', function(e) {
e.preventDefault();
e.stopPropagation();
if ($body.hasClass('show-filters')) {
$window.scrollTop(0);
}
$body.toggleClass('show-filters');
});
$('.btn--view').on('click', function(e) {
e.preventDefault();
e.stopPropagation();
$body.toggleClass('show-map');
$('html, body').scrollTop(0);
setTimeout(function() {
$window.trigger('pxg:refreshmap');
});
});
if ($('#job_package_selection').length) {
$body.addClass('page-package-selection');
var $nopackages = $('.no-packages');
if ($nopackages.length) {
var $form = $nopackages.closest('#job_package_selection');
if ($form.length) {
$nopackages.insertAfter($form);
$form.remove();
}
}
}
Map.init();
detectLongMenu();
moveListingStickySidebar();
singleListingMapHeight();
moveSingleListingReviews();
moveSingleListingClaimWidget();
if ($('.search-field-wrapper.has--menu').length) {
searchSuggestionsTrigger();
}
$reviewsParent = $('.widget_listing_comments').parent();
$('.showlogin').off('click').on('click', function() {
$('.login-container').slideToggle();
});
}
// /* ====== ON WINDOW LOAD ====== */
$window.load(function() {
$('html').addClass('is--loaded');
Carousel.init();
// if we're on the listings archive do this shit
// @todo do do doom
if ($('.tags-select').length && !$('.listing-map').length) {
var $tags = $('.tags-select').chosen(),
updateTags = function() {
$('.active-tags').empty();
$tags.find(':selected').each(function(i, obj) {
if (empty(obj.value)) {
return;
}
$('').appendTo('.active-tags').on('click', function() {
$(this).remove();
$(obj).attr('selected', false);
$tags.trigger("chosen:updated");
$('.active-tags input[value="' + obj.value + '"]').remove();
$('.job_listings').triggerHandler('update_results', [1, false]);
});
$(' ').appendTo('.active-tags');
});
$('.job_listings').triggerHandler('update_results', [1, false]);
};
$tags.on('change', updateTags);
var $categories = $('#search_categories'),
updateCategories = function() {
$('.active-categories').empty();
$categories.find(':selected').each(function(i, obj) {
$('').appendTo('.active-categories').on('click', function() {
$(obj).attr('selected', false);
$categories.trigger("chosen:updated");
$(this).remove();
$('.job_listings').triggerHandler('update_results', [1, false]);
});
});
updateTags();
};
// updateCategories();
$categories.on('change', updateCategories);
}
$('.search_jobs--frontpage .job-manager-category-dropdown').chosen();
tooltipTrigger();
keepSubmenusInViewport();
$('.js-menu-trigger').on('touchstart click', toggleMenu);
if (Modernizr.touchevents) {
if (windowWidth < 900) {
HandleSubmenusOnTouch.initSidebarMenu();
} else {
HandleSubmenusOnTouch.initHorizontalMenu();
}
}
if ($('.site-header .search-form').is(':visible')) {
handleMobileHeaderSearch();
}
//for search listings we need to make some magic to make it behave like the categories and tags archives
if ($body.is('.search') && $body.is('.post-type-archive-job_listing')) {
if ($('.job_listings #search_keywords').length) {
$('.job_listings #search_keywords').val($('input.search-field').val());
} else {
//steal the search input data and put it in among some make shift filters
$('.job_listings').append('');
}
//now trigger and update so we can receive listings
//$('.job_listings').trigger( 'update_results', [ 1, true ] );
}
frontpageVideoInit();
loginWithAjaxHandlers();
var $featuredVideo = $('.entry-featured video');
if ($featuredVideo.length) {
enableInlineVideo($featuredVideo.get(0), /* hasAudio */ false);
$body.one('touchstart', function() {
$featuredVideo.get(0).play();
})
}
$window.trigger('pxg:refreshmap');
});
// /* ====== ON RESIZE ====== */
function requestTick() {
ticking ? ticking = true : requestAnimationFrame(update);
}
function update() {
// do stuff
ticking = false;
}
function eventHandlers() {
$window.on('debouncedresize', function() {
browserSize();
detectLongMenu();
moveListingStickySidebar();
singleListingMapHeight();
moveSingleListingReviews();
customizerOptionsPadding();
setTimeout(function() {
$window.trigger('update:map');
$window.trigger('pxg:refreshmap');
});
if (Modernizr.touchevents) {
if (windowWidth < 900) {
HandleSubmenusOnTouch.initSidebarMenu();
} else {
HandleSubmenusOnTouch.initHorizontalMenu();
}
}
});
$window.on('scroll', function() {
latestKnownScrollY = $window.scrollTop();
latestKnownScrollX = $window.scrollLeft();
// requestTick();
});
$(window).on('mousemove', function(e) {
latestKnownMouseX = e.clientX;
latestKnownMouseY = e.clientY;
// requestTick();
});
$(window).on('deviceorientation', function(e) {
latestDeviceAlpha = e.originalEvent.alpha;
latestDeviceBeta = e.originalEvent.beta;
latestDeviceGamma = e.originalEvent.gamma;
// requestTick();
});
handleHiddenFacets();
handleLongSubMenus();
hideCategoryDescription();
// After FacetWP fetches new items,
// scroll listings page to top to see
// all new loaded items.
if ($body.is('.page-listings')) {
$(document).on('facetwp-loaded', function() {
TweenLite.to(window, 1, {
scrollTo: 0
});
});
}
}
/* ====== HELPER FUNCTIONS ====== */
/**
* Detect what platform are we on (browser, mobile, etc)
*/
function browserSupport() {
$.support.touch = 'ontouchend' in document;
$.support.svg = document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1");
$.support.transform = getSupportedTransform();
$html
.addClass($.support.touch ? 'touch' : 'no-touch')
.addClass($.support.svg ? 'svg' : 'no-svg')
.addClass(!!$.support.transform ? 'transform' : 'no-transform');
}
function browserSize() {
windowHeight = $window.height();
windowWidth = $window.width();
documentHeight = $document.height();
orientation = windowWidth > windowHeight ? 'portrait' : 'landscape';
}
function getSupportedTransform() {
var prefixes = ['transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform'];
for (var i = 0; i < prefixes.length; i++) {
if (document.createElement('div').style[prefixes[i]] !== undefined) {
return prefixes[i];
}
}
return false;
}
/**
* Handler for the back to top button
*/
function scrollToTop() {
$('a[href="#top"]').click(function(event) {
event.preventDefault();
event.stopPropagation();
TweenMax.to($(window), 1, {
scrollTo: {
y: 0,
autoKill: true
},
ease: Power3.easeOut
});
});
}
/**
* function similar to PHP's empty function
*/
function empty(data) {
if (typeof(data) === 'number' || typeof(data) === 'boolean') {
return false;
}
if (typeof(data) === 'undefined' || data === null) {
return true;
}
if (typeof(data.length) !== 'undefined') {
return data.length === 0;
}
var count = 0;
for (var i in data) {
// if(data.hasOwnProperty(i))
//
// This doesn't work in ie8/ie9 due the fact that hasOwnProperty works only on native objects.
// http://stackoverflow.com/questions/8157700/object-has-no-hasownproperty-method-i-e-its-undefined-ie8
//
// for hosts objects we do this
if (Object.prototype.hasOwnProperty.call(data, i)) {
count++;
}
}
return count === 0;
}
function toggleMenu(e) {
if (e) {
e.preventDefault();
e.stopPropagation();
}
$('body').toggleClass('nav-is-open');
$('body').toggleClass('overlay-is-open');
if ($('body').hasClass('overlay-is-open')) {
$('body').width($('body').width());
$('body').css('overflow', 'hidden');
} else {
$('body').removeAttr('style');
}
}
function closeMenu() {
$('body').removeClass('nav-is-open');
$('body').removeClass('overlay-is-open');
$('body').removeAttr('style');
}
// Set the height of the single listing map
function singleListingMapHeight() {
if (windowWidth > 900) {
var $listingMap = $('.listing-sidebar--top .widget_listing_sidebar_map:first-child .listing-map');
if ($('.entry-featured-image').length && $listingMap.length) {
var featuredTop = $('.entry-featured-image').offset().top;
var featuredHeight = $('.entry-featured-image').height();
var featuredBottom = featuredTop + featuredHeight;
var mapFeaturedDistance = $listingMap.offset().top - featuredBottom + 1;
var headerHeight = $('.single_job_listing .entry-header').outerHeight();
var mapComputedHeight = headerHeight - mapFeaturedDistance;
$listingMap.height(mapComputedHeight);
$window.trigger('pxg:refreshmap');
}
}
}
// Move listing sticky sidebar under header on mobile
function moveListingStickySidebar() {
var $sidebarTop = $('.listing-sidebar--top'),
$sidebarBottom = $('.listing-sidebar--bottom'),
isTop = $sidebarTop.data('isTop');
if (!$sidebarTop.length) {
return;
}
if (windowWidth < 900) {
if (isTop !== true) {
$sidebarTop.insertAfter($('.entry-header'));
isTop = true;
}
} else {
if (isTop !== false) {
$sidebarTop.insertBefore($sidebarBottom);
isTop = false;
}
}
$sidebarTop.data('isTop', isTop);
}
// When there's a long menu, prevent it from breaking on two lines
function detectLongMenu() {
if (windowWidth > 900) {
var $menuWrapper = $('.menu-wrapper');
if ($menuWrapper.find('ul:first-of-type').height() > $menuWrapper.height()) {
$menuWrapper.addClass('has--long-menu');
}
if ($menuWrapper.find('ul:first-of-type').width() < $menuWrapper.width()) {
$menuWrapper.removeClass('has--long-menu');
}
}
}
function tooltipTrigger() {
$('.js-tooltip-trigger').on('click', function(e) {
e.preventDefault();
e.stopPropagation();
$(this).parent().toggleClass('active');
});
}
function searchSuggestionsTrigger() {
$('.js-search-suggestions-field').on('focus', function(e) {
$('.js-search-form').addClass('is--active');
});
$('.js-search-suggestions-field').on('blur', function(e) {
setTimeout(function closeSearchSuggestions() {
$('.js-search-form').removeClass('is--active');
}, 150);
});
$('.js-search-form').on('click', function(e) {
if (e.target.id != 'search_keywords') {
$('.js-search-suggestions-field').blur();
$('.js-search-form').removeClass('is--active');
}
});
}
function handleMobileHeaderSearch() {
// When clicking on search icon, show the search input
$('.js-search-trigger-mobile').on('click', toggleHeaderSearch);
// When the search input loses focus, hide the input
$('.js-search-mobile-field').on('blur', function(e) {
setTimeout(function closeMobileSearch() {
$('.js-search-form').removeClass('is--active');
}, 150);
});
function toggleHeaderSearch(e) {
e.preventDefault();
e.stopPropagation();
if (!$('.js-search-form').hasClass('is--active')) {
$('.js-search-form').addClass('is--active');
$('.js-search-mobile-field').focus();
}
}
}
// Detect the submenus that exceed the viewport
// and add a class to make them open vertically
function keepSubmenusInViewport() {
if ($('.primary-menu').length) {
var headerRightmost = $('.site-header').outerWidth();
$('.sub-menu').each(function() {
var submenuRightmost = $(this).offset().left + $(this).width();
// if the sub menu exceeds primary menu's rightmost edge
if (submenuRightmost > headerRightmost) {
$(this).addClass('is--forced-placed');
$(this).find('.sub-menu').addClass('is--forced-placed');
}
});
}
}
function moveSingleListingReviews() {
// On mobile, when focusing on a review field, the keyboard appears thus
// triggering a resize. When a resize is triggered, trying to move the
// reviews causes fields to lose focus, hiding the keyboard. Prevent that.
if (Modernizr.touchevents && $('input, textarea').is(':focus')) {
return;
}
if ($('.widget_listing_comments').length) {
if (windowWidth < 900) {
if ($('.widget_listing_comments').parent().hasClass('column-sidebar')) {
return;
}
$('.widget_listing_comments').appendTo($('.column-sidebar'));
} else {
$('.widget_listing_comments').appendTo($reviewsParent);
}
}
}
function moveSingleListingClaimWidget() {
var $claimWidget = $('.listing-sidebar--bottom .widget_listing_sidebar_claim_listing');
if ($claimWidget.length) {
var $parentSidebar = $claimWidget.parent();
$claimWidget.each(function() {
if ($(this).is(':first-of-type')) {
$(this).insertBefore($parentSidebar).addClass('is--independent');
} else if ($(this).is(':last-of-type')) {
$(this).insertAfter($parentSidebar).addClass('is--independent');
}
});
}
}
var listableDocumentCookies = {
getItem: function(sKey) {
if (!sKey) {
return null;
}
return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
},
setItem: function(sKey, sValue, vEnd, sPath, sDomain, bSecure) {
if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) {
return false;
}
var sExpires = "";
if (vEnd) {
switch (vEnd.constructor) {
case Number:
sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;
break;
case String:
sExpires = "; expires=" + vEnd;
break;
case Date:
sExpires = "; expires=" + vEnd.toUTCString();
break;
}
}
document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (
sDomain ? "; domain=" + sDomain : ""
) + (
sPath ? "; path=" + sPath : ""
) + (
bSecure ? "; secure" : ""
);
return true;
},
removeItem: function(sKey, sPath, sDomain) {
if (!this.hasItem(sKey)) {
return false;
}
document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (
sDomain ? "; domain=" + sDomain : ""
) + (
sPath ? "; path=" + sPath : ""
);
return true;
},
hasItem: function(sKey) {
if (!sKey) {
return false;
}
return (
new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")
).test(document.cookie);
},
keys: function() {
var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/);
for (var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++) {
aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]);
}
return aKeys;
}
};
function frontpageVideoInit() {
// video resizing
var $wrapper = $('.page-template-front_page .entry-header .wp-video'),
$video = $('.page-template-front_page .entry-header .mejs-video'),
$header,
$featured,
videoWidth,
videoHeight,
headerWidth,
headerHeight,
newWidth,
newHeight;
function stretch() {
if ((
videoWidth / videoHeight
) > (
headerWidth / headerHeight
)) {
newHeight = headerHeight;
newWidth = newHeight * videoWidth / videoHeight;
} else {
newWidth = headerWidth;
newHeight = newWidth * videoHeight / videoWidth;
}
$wrapper.css({
width: newWidth,
height: newHeight
});
}
if ($wrapper.length) {
$header = $('.page-template-front_page .entry-header');
$featured = $('.page-template-front_page .entry-featured');
videoWidth = $video.outerWidth();
videoHeight = $video.outerHeight();
headerWidth = $header.outerWidth();
headerHeight = $header.outerHeight();
$wrapper.find('video').prop('muted', true)
stretch();
$wrapper.addClass('is--stretched').data('ar', newWidth / newHeight);
$window.on('debouncedresize', function() {
headerWidth = $header.outerWidth();
headerHeight = $header.outerHeight();
stretch();
});
}
}
// iOS Multiple Select Bug Fix
if (navigator.userAgent.match(/iPhone/i)) {
$('select[multiple]').each(function() {
var select = $(this).on({
"focusout": function() {
var values = select.val() || [];
setTimeout(function() {
select.val(values.length ? values : ['']).change();
}, 1000);
}
});
var firstOption = ' 0 ? '' : ' selected="selected"';
firstOption += '>' + select.attr('data-placeholder');
firstOption += ' ';
select.prepend(firstOption);
});
}
function loginWithAjaxHandlers() {
if ($('.lwa-modal').length) {
$('.js-lwa-open-remember-form').on('click', function(e) {
e.stopPropagation();
e.preventDefault();
$('.js-lwa-login, .js-lwa-remember').toggleClass('form-visible');
});
$('.js-lwa-close-remember-form').on('click', function() {
$('.js-lwa-login, .js-lwa-remember').toggleClass('form-visible');
});
$('.js-lwa-open-register-form').on('click', function(e) {
e.stopPropagation();
e.preventDefault();
$('.js-lwa-login, .js-lwa-register').toggleClass('form-visible');
});
$('.js-lwa-close-register-form').on('click', function() {
$('.js-lwa-login, .js-lwa-register').toggleClass('form-visible');
});
$('.lwa-login-link').on('touchstart', function() {
closeMenu();
});
}
}
var HandleSubmenusOnTouch = (
function() {
var $theUsualSuspects,
$theUsualAnchors,
initialInit = false,
isHorizontalInitiated = false,
isSidebarInitiated = false;
function init() {
if (initialInit) {
return;
}
$theUsualSuspects = $('li[class*=children]');
$theUsualAnchors = $theUsualSuspects.find('> a');
bindOuterNavClick();
initialInit = true;
}
// Sub menus will be opened with a click on the parent
// The second click on the parent will follow parent's link
function initHorizontalMenu() {
if (isHorizontalInitiated) {
return;
}
init();
unbind();
// Make sure there are no open menu items
$theUsualSuspects.removeClass('hover');
$theUsualAnchors.on('click', function(e) {
e.preventDefault();
e.stopPropagation();
if ($(this).hasClass('active')) {
window.location.href = $(this).attr('href');
}
$theUsualAnchors.removeClass('active');
$(this).addClass('active');
// When a parent menu item is activated,
// close other menu items on the same level
$(this).parent().siblings().removeClass('hover');
// Open the sub menu of this parent item
$(this).parent().addClass('hover');
});
isHorizontalInitiated = true;
}
// Sub menus will be opened on arrow click
function initSidebarMenu() {
if (isSidebarInitiated) {
return;
}
init();
unbind();
$theUsualAnchors.on('touchstart click', function(e) {
var posX = e.originalEvent.touches[0].pageX ? e.originalEvent.touches[0].pageX : e.pageX,
width = $(this).outerWidth(),
isRtl = $('body').is('.rtl'),
ltrTrigger = !isRtl && (width - posX < 60),
rtlPos = posX - (windowWidth - width),
rtlTrigger = isRtl && rtlPos < 60 && rtlPos > 0;
if (ltrTrigger || rtlTrigger) {
e.preventDefault();
e.stopPropagation();
if ($(this).parent().hasClass('hover')) {
$(this).parent().removeClass('hover');
} else {
$(this).parent().addClass('hover');
$(this).parent().siblings().removeClass('hover');
}
}
});
isSidebarInitiated = true;
}
function unbind() {
$theUsualAnchors.unbind();
isHorizontalInitiated = false;
}
// When a sub menu is open, close it by a touch on
// any other part of the viewport than navigation.
// use case: normal, horizontal menu, touch events,
// sub menus are not visible.
function bindOuterNavClick() {
$('body').on('touchstart', function(e) {
var container = $('.menu-wrapper');
if (!container.is(e.target) // if the target of the click isn't the container...
&&
container.has(e.target).length === 0) // ... nor a descendant of the container
{
$theUsualSuspects.removeClass('hover').removeClass('active');
}
});
}
return {
initHorizontalMenu: initHorizontalMenu,
initSidebarMenu: initSidebarMenu
}
}()
);
function handleHiddenFacets() {
if (!$body.hasClass('is--using-facetwp')) {
return;
}
$('.js-toggle-hidden-facets').on('click', function() {
$body.toggleClass('is--showing-hidden-facets');
$('.hidden_facets').slideToggle(300);
})
}
// Check if a sub menu's height is bigger that windows's width
function handleLongSubMenus() {
if (Modernizr.touchevents) {
return;
}
$('li[class*="children"] > a').on('hover', function() {
var $subMenu = $(this).siblings('.sub-menu');
var remainingHeight = windowHeight - this.getBoundingClientRect().top;
if (remainingHeight < $subMenu.height()) {
$subMenu.addClass('big-one');
}
});
}
// Hide the category description after a FacetWP filtering
function hideCategoryDescription() {
if ($body.hasClass('is--using-facetwp')) {
checkAndHideForFacet();
$(document).on('facetwp-refresh', function() {
setTimeout(function() {
checkAndHideForFacet();
}, 1);
});
} else {
$('.job_listings').on('update_results', function() {
$('.listing_category_description.do-hide').hide();
// An 'update_results' event is triggered on page load;
// hide it only after it gets the class do-hide;
// (only after the initial 'update_results' event is triggered)
$('.listing_category_description').addClass('do-hide');
});
}
}
function checkAndHideForFacet() {
var windowPath = window.location.href;
if (windowPath.indexOf("fwp") > -1) {
$('.listing_category_description').hide();
} else {
$('.listing_category_description').show();
}
}
})(jQuery);