function Tacket(a, b, c) {
function d(b, p, q) {
function K(c) {
var d = 0
, e = Gb.length;
if (yb.old = a.extend({}, yb),
wb = tb ? 0 : ub[rb.horizontal ? "width" : "height"](),
Bb = zb[rb.horizontal ? "width" : "height"](),
xb = tb ? b : vb[rb.horizontal ? "outerWidth" : "outerHeight"](),
Gb.length = 0,
yb.start = 0,
yb.end = H(xb - wb, 0),
Rb) {
d = Ib.length,
Hb = vb.children(rb.itemSelector),
Ib.length = 0;
var f, g = j(vb, rb.horizontal ? "paddingLeft" : "paddingTop"), h = j(vb, rb.horizontal ? "paddingRight" : "paddingBottom"), i = "border-box" === a(Hb).css("boxSizing"), l = "none" !== Hb.css("float"), m = 0, n = Hb.length - 1;
xb = 0,
Hb.each(function(b, c) {
var d = a(c)
, e = c.getBoundingClientRect()
, i = G(rb.horizontal ? e.width || e.right - e.left : e.height || e.bottom - e.top)
, k = j(d, rb.horizontal ? "marginLeft" : "marginTop")
, o = j(d, rb.horizontal ? "marginRight" : "marginBottom")
, p = i + k + o
, q = !k || !o
, r = {};
r.el = c,
r.size = q ? i : p,
r.half = r.size / 2,
r.start = xb + (q ? k : 0),
r.center = r.start - G(wb / 2 - r.size / 2),
r.end = r.start - wb + r.size,
b || (xb += g),
xb += p,
rb.horizontal || l || o && k && b > 0 && (xb -= I(k, o)),
b === n && (r.end += h,
xb += h,
m = q ? o : 0),
Ib.push(r),
f = r
}),
vb[0].style[rb.horizontal ? "width" : "height"] = (i ? xb : xb - g - h) + "px",
xb -= m,
Ib.length ? (yb.start = Ib[0][Pb ? "center" : "start"],
yb.end = Pb ? f.center : xb > wb ? f.end : yb.start) : yb.start = yb.end = 0
}
if (yb.center = G(yb.end / 2 + yb.start / 2),
V(),
Ab.length && Bb > 0 && (rb.dynamicHandle ? (Cb = yb.start === yb.end ? Bb : G(Bb * wb / xb),
Cb = k(Cb, rb.minHandleSize, Bb),
Ab[0].style[rb.horizontal ? "width" : "height"] = Cb + "px") : Cb = Ab[rb.horizontal ? "outerWidth" : "outerHeight"](),
Db.end = Bb - Cb,
ec || N()),
!tb && wb > 0) {
var o = yb.start
, p = "";
if (Rb)
a.each(Ib, function(a, b) {
Pb ? Gb.push(b.center) : b.start + b.size > o && o <= yb.end && (o = b.start,
Gb.push(o),
o += wb,
o > yb.end && o < yb.end + wb && Gb.push(yb.end))
});
else
for (; o - wb < yb.end; )
Gb.push(o),
o += wb;
if (Eb[0] && e !== Gb.length) {
for (var q = 0; q < Gb.length; q++)
p += rb.pageBuilder.call(sb, q);
Fb = Eb.html(p).children(),
Fb.eq(Jb.activePage).addClass(rb.activeClass)
}
}
if (Jb.slideeSize = xb,
Jb.frameSize = wb,
Jb.sbSize = Bb,
Jb.handleSize = Cb,
Rb) {
c && null != rb.startAt && (T(rb.startAt),
sb[Qb ? "toCenter" : "toStart"](rb.startAt));
var r = Ib[Jb.activeItem];
L(Qb && r ? r.center : k(yb.dest, yb.start, yb.end))
} else
c ? null != rb.startAt && L(rb.startAt, 1) : L(k(yb.dest, yb.start, yb.end));
ob("load")
}
function L(a, b, c) {
if (Rb && cc.released && !c) {
var d = U(a)
, e = a > yb.start && a < yb.end;
Qb ? (e && (a = Ib[d.centerItem].center),
Pb && rb.activateMiddle && T(d.centerItem)) : e && (a = Ib[d.firstItem].start)
}
cc.init && cc.slidee && rb.elasticBounds ? a > yb.end ? a = yb.end + (a - yb.end) / 6 : a < yb.start && (a = yb.start + (a - yb.start) / 6) : a = k(a, yb.start, yb.end),
ac.start = +new Date,
ac.time = 0,
ac.from = yb.cur,
ac.to = a,
ac.delta = a - yb.cur,
ac.tweesing = cc.tweese || cc.init && !cc.slidee,
ac.immediate = !ac.tweesing && (b || cc.init && cc.slidee || !rb.speed),
cc.tweese = 0,
a !== yb.dest && (yb.dest = a,
ob("change"),
ec || M()),
Z(),
V(),
W(),
O()
}
function M() {
if (sb.initialized) {
if (!ec)
return ec = t(M),
void (cc.released && ob("moveStart"));
ac.immediate ? yb.cur = ac.to : ac.tweesing ? (ac.tweeseDelta = ac.to - yb.cur,
D(ac.tweeseDelta) < .1 ? yb.cur = ac.to : yb.cur += ac.tweeseDelta * (cc.released ? rb.swingSpeed : rb.syncSpeed)) : (ac.time = I(+new Date - ac.start, rb.speed),
yb.cur = ac.from + ac.delta * a.easing[rb.easing](ac.time / rb.speed, ac.time, 0, 1, rb.speed)),
ac.to === yb.cur ? (yb.cur = ac.to,
cc.tweese = ec = 0) : ec = t(M),
ob("move"),
tb || (m ? vb[0].style[m] = n + (rb.horizontal ? "translateX" : "translateY") + "(" + -yb.cur + "px)" : vb[0].style[rb.horizontal ? "left" : "top"] = -G(yb.cur) + "px"),
!ec && cc.released && ob("moveEnd"),
N()
}
}
function N() {
Ab.length && (Db.cur = yb.start === yb.end ? 0 : ((cc.init && !cc.slidee ? yb.dest : yb.cur) - yb.start) / (yb.end - yb.start) * Db.end,
Db.cur = k(G(Db.cur), Db.start, Db.end),
_b.hPos !== Db.cur && (_b.hPos = Db.cur,
m ? Ab[0].style[m] = n + (rb.horizontal ? "translateX" : "translateY") + "(" + Db.cur + "px)" : Ab[0].style[rb.horizontal ? "left" : "top"] = Db.cur + "px"))
}
function O() {
Fb[0] && _b.page !== Jb.activePage && (_b.page = Jb.activePage,
Fb.removeClass(rb.activeClass).eq(Jb.activePage).addClass(rb.activeClass),
ob("activePage", _b.page))
}
function P() {
bc.speed && yb.cur !== (bc.speed > 0 ? yb.end : yb.start) || sb.stop(),
hc = cc.init ? t(P) : 0,
bc.now = +new Date,
bc.pos = yb.cur + (bc.now - bc.lastTime) / 1e3 * bc.speed,
L(cc.init ? bc.pos : G(bc.pos)),
cc.init || yb.cur !== yb.dest || ob("moveEnd"),
bc.lastTime = bc.now
}
function Q(a, b, d) {
if ("boolean" === e(b) && (d = b,
b = c),
b === c)
L(yb[a], d);
else {
if (Qb && "center" !== a)
return;
var f = sb.getPos(b);
f && L(f[a], d, !Qb)
}
}
function R(a) {
return null != a ? i(a) ? a >= 0 && a < Ib.length ? a : -1 : Hb.index(a) : -1
}
function S(a) {
return R(i(a) && 0 > a ? a + Ib.length : a)
}
function T(a, b) {
var c = R(a);
return !Rb || 0 > c ? !1 : ((_b.active !== c || b) && (Hb.eq(Jb.activeItem).removeClass(rb.activeClass),
Hb.eq(c).addClass(rb.activeClass),
_b.active = Jb.activeItem = c,
W(),
ob("active", c)),
c)
}
function U(a) {
a = k(i(a) ? a : yb.dest, yb.start, yb.end);
var b = {}
, c = Pb ? 0 : wb / 2;
if (!tb)
for (var d = 0, e = Gb.length; e > d; d++) {
if (a >= yb.end || d === Gb.length - 1) {
b.activePage = Gb.length - 1;
break
}
if (a <= Gb[d] + c) {
b.activePage = d;
break
}
}
if (Rb) {
for (var f = !1, g = !1, h = !1, j = 0, l = Ib.length; l > j; j++)
if (f === !1 && a <= Ib[j].start + Ib[j].half && (f = j),
h === !1 && a <= Ib[j].center + Ib[j].half && (h = j),
j === l - 1 || a <= Ib[j].end + Ib[j].half) {
g = j;
break
}
b.firstItem = i(f) ? f : 0,
b.centerItem = i(h) ? h : b.firstItem,
b.lastItem = i(g) ? g : b.centerItem
}
return b
}
function V(b) {
a.extend(Jb, U(b))
}
function W() {
var a = yb.dest <= yb.start
, b = yb.dest >= yb.end
, c = (a ? 1 : 0) | (b ? 2 : 0);
if (_b.slideePosState !== c && (_b.slideePosState = c,
Yb.is("button,input") && Yb.prop("disabled", a),
Zb.is("button,input") && Zb.prop("disabled", b),
Yb.add(Vb)[a ? "addClass" : "removeClass"](rb.disabledClass),
Zb.add(Ub)[b ? "addClass" : "removeClass"](rb.disabledClass)),
_b.fwdbwdState !== c && cc.released && (_b.fwdbwdState = c,
Vb.is("button,input") && Vb.prop("disabled", a),
Ub.is("button,input") && Ub.prop("disabled", b)),
Rb && null != Jb.activeItem) {
var d = 0 === Jb.activeItem
, e = Jb.activeItem >= Ib.length - 1
, f = (d ? 1 : 0) | (e ? 2 : 0);
_b.itemsButtonState !== f && (_b.itemsButtonState = f,
Wb.is("button,input") && Wb.prop("disabled", d),
Xb.is("button,input") && Xb.prop("disabled", e),
Wb[d ? "addClass" : "removeClass"](rb.disabledClass),
Xb[e ? "addClass" : "removeClass"](rb.disabledClass))
}
}
function X(a, b, c) {
if (a = S(a),
b = S(b),
a > -1 && b > -1 && a !== b && (!c || b !== a - 1) && (c || b !== a + 1)) {
Hb.eq(a)[c ? "insertAfter" : "insertBefore"](Ib[b].el);
var d = b > a ? a : c ? b : b - 1
, e = a > b ? a : c ? b + 1 : b
, f = a > b;
null != Jb.activeItem && (a === Jb.activeItem ? _b.active = Jb.activeItem = c ? f ? b + 1 : b : f ? b : b - 1 : Jb.activeItem > d && Jb.activeItem < e && (_b.active = Jb.activeItem += f ? 1 : -1)),
K()
}
}
function Y(a, b) {
for (var c = 0, d = $b[a].length; d > c; c++)
if ($b[a][c] === b)
return c;
return -1
}
function Z() {
cc.released && !sb.isPaused && sb.resume()
}
function $(a) {
return G(k(a, Db.start, Db.end) / Db.end * (yb.end - yb.start)) + yb.start
}
function _() {
cc.history[0] = cc.history[1],
cc.history[1] = cc.history[2],
cc.history[2] = cc.history[3],
cc.history[3] = cc.delta
}
function ab(a) {
cc.released = 0,
cc.source = a,
cc.slidee = "slidee" === a
}
function bb(b) {
var c = "touchstart" === b.type
, d = b.data.source
, e = "slidee" === d;
cc.init || !c && eb(b.target) || ("handle" !== d || rb.dragHandle && Db.start !== Db.end) && (!e || (c ? rb.touchDragging : rb.mouseDragging && b.which < 2)) && (c || f(b),
ab(d),
cc.init = 0,
cc.$source = a(b.target),
cc.touch = c,
cc.pointer = c ? b.originalEvent.touches[0] : b,
cc.initX = cc.pointer.pageX,
cc.initY = cc.pointer.pageY,
cc.initPos = e ? yb.cur : Db.cur,
cc.start = +new Date,
cc.time = 0,
cc.path = 0,
cc.delta = 0,
cc.locked = 0,
cc.history = [0, 0, 0, 0],
cc.pathToLock = e ? c ? 30 : 10 : 0,
u.on(c ? x : w, cb),
sb.pause(1),
(e ? vb : Ab).addClass(rb.draggedClass),
ob("moveStart"),
e && (fc = setInterval(_, 10)))
}
function cb(a) {
if (cc.released = "mouseup" === a.type || "touchend" === a.type,
cc.pointer = cc.touch ? a.originalEvent[cc.released ? "changedTouches" : "touches"][0] : a,
cc.pathX = cc.pointer.pageX - cc.initX,
cc.pathY = cc.pointer.pageY - cc.initY,
cc.path = E(F(cc.pathX, 2) + F(cc.pathY, 2)),
cc.delta = rb.horizontal ? cc.pathX : cc.pathY,
cc.released || !(cc.path < 1)) {
if (!cc.init) {
if (cc.path < rb.dragThreshold)
return cc.released ? db() : c;
if (!(rb.horizontal ? D(cc.pathX) > D(cc.pathY) : D(cc.pathX) < D(cc.pathY)))
return db();
cc.init = 1
}
f(a),
!cc.locked && cc.path > cc.pathToLock && cc.slidee && (cc.locked = 1,
cc.$source.on(z, g)),
cc.released && (db(),
rb.releaseSwing && cc.slidee && (cc.swing = (cc.delta - cc.history[0]) / 40 * 300,
cc.delta += cc.swing,
cc.tweese = D(cc.swing) > 10)),
L(cc.slidee ? G(cc.initPos - cc.delta) : $(cc.initPos + cc.delta))
}
}
function db() {
clearInterval(fc),
cc.released = !0,
u.off(cc.touch ? x : w, cb),
(cc.slidee ? vb : Ab).removeClass(rb.draggedClass),
setTimeout(function() {
cc.$source.off(z, g)
}),
yb.cur === yb.dest && cc.init && ob("moveEnd"),
sb.resume(1),
cc.init = 0
}
function eb(b) {
return ~a.inArray(b.nodeName, B) || a(b).is(rb.interactive)
}
function fb() {
sb.stop(),
u.off("mouseup", fb)
}
function gb(a) {
switch (f(a),
this) {
case Ub[0]:
case Vb[0]:
sb.moveBy(Ub.is(this) ? rb.moveBy : -rb.moveBy),
u.on("mouseup", fb);
break;
case Wb[0]:
sb.prev();
break;
case Xb[0]:
sb.next();
break;
case Yb[0]:
sb.prevPage();
break;
case Zb[0]:
sb.nextPage()
}
}
function hb(a) {
return dc.curDelta = (rb.horizontal ? a.deltaY || a.deltaX : a.deltaY) || -a.wheelDelta,
dc.curDelta /= 1 === a.deltaMode ? 3 : 100,
Rb ? (o = +new Date,
dc.last < o - dc.resetTime && (dc.delta = 0),
dc.last = o,
dc.delta += dc.curDelta,
D(dc.delta) < 1 ? dc.finalDelta = 0 : (dc.finalDelta = G(dc.delta / 1),
dc.delta %= 1),
dc.finalDelta) : dc.curDelta
}
function ib(a) {
a.originalEvent[r] = sb;
var b = +new Date;
if (J + rb.scrollHijack > b && Sb[0] !== document && Sb[0] !== window)
return void (J = b);
if (rb.scrollBy && yb.start !== yb.end) {
var c = hb(a.originalEvent);
(rb.scrollTrap || c > 0 && yb.dest < yb.end || 0 > c && yb.dest > yb.start) && f(a, 1),
sb.slideBy(rb.scrollBy * c)
}
}
function jb(a) {
rb.clickBar && a.target === zb[0] && (f(a),
L($((rb.horizontal ? a.pageX - zb.offset().left : a.pageY - zb.offset().top) - Cb / 2)))
}
function kb(a) {
if (rb.keyboardNavBy)
switch (a.which) {
case rb.horizontal ? 37 : 38:
f(a),
sb["pages" === rb.keyboardNavBy ? "prevPage" : "prev"]();
break;
case rb.horizontal ? 39 : 40:
f(a),
sb["pages" === rb.keyboardNavBy ? "nextPage" : "next"]()
}
}
function lb(a) {
return eb(this) ? void (a.originalEvent[r + "ignore"] = !0) : void (this.parentNode !== vb[0] || a.originalEvent[r + "ignore"] || sb.activate(this))
}
function mb() {
this.parentNode === Eb[0] && sb.activatePage(Fb.index(this))
}
function nb(a) {
rb.pauseOnHover && sb["mouseenter" === a.type ? "pause" : "resume"](2)
}
function ob(a, b) {
if ($b[a]) {
for (qb = $b[a].length,
C.length = 0,
pb = 0; qb > pb; pb++)
C.push($b[a][pb]);
for (pb = 0; qb > pb; pb++)
C[pb].call(sb, a, b)
}
}
if (!(this instanceof d))
return new d(b,p,q);
var pb, qb, rb = a.extend({}, d.defaults, p), sb = this, tb = i(b), ub = a(b), vb = rb.slidee ? a(rb.slidee).eq(0) : ub.children().eq(0), wb = 0, xb = 0, yb = {
start: 0,
center: 0,
end: 0,
cur: 0,
dest: 0
}, zb = a(rb.scrollBar).eq(0), Ab = zb.children().eq(0), Bb = 0, Cb = 0, Db = {
start: 0,
end: 0,
cur: 0
}, Eb = a(rb.pagesBar), Fb = 0, Gb = [], Hb = 0, Ib = [], Jb = {
firstItem: 0,
lastItem: 0,
centerItem: 0,
activeItem: null,
activePage: 0
}, Kb = new l(ub[0]), Lb = new l(vb[0]), Mb = new l(zb[0]), Nb = new l(Ab[0]), Ob = "basic" === rb.itemNav, Pb = "forceCentered" === rb.itemNav, Qb = "centered" === rb.itemNav || Pb, Rb = !tb && (Ob || Qb || Pb), Sb = rb.scrollSource ? a(rb.scrollSource) : ub, Tb = rb.dragSource ? a(rb.dragSource) : ub, Ub = a(rb.forward), Vb = a(rb.backward), Wb = a(rb.prev), Xb = a(rb.next), Yb = a(rb.prevPage), Zb = a(rb.nextPage), $b = {}, _b = {}, ac = {}, bc = {}, cc = {
released: 1
}, dc = {
last: 0,
delta: 0,
resetTime: 200
}, ec = 0, fc = 0, gc = 0, hc = 0;
tb || (b = ub[0]),
sb.initialized = 0,
sb.frame = b,
sb.slidee = vb[0],
sb.pos = yb,
sb.rel = Jb,
sb.items = Ib,
sb.pages = Gb,
sb.isPaused = 0,
sb.options = rb,
sb.dragging = cc,
sb.reload = function() {
K()
}
,
sb.getPos = function(a) {
if (Rb) {
var b = R(a);
return -1 !== b ? Ib[b] : !1
}
var c = vb.find(a).eq(0);
if (c[0]) {
var d = rb.horizontal ? c.offset().left - vb.offset().left : c.offset().top - vb.offset().top
, e = c[rb.horizontal ? "outerWidth" : "outerHeight"]();
return {
start: d,
center: d - wb / 2 + e / 2,
end: d - wb + e,
size: e
}
}
return !1
}
,
sb.moveBy = function(a) {
bc.speed = a,
!cc.init && bc.speed && yb.cur !== (bc.speed > 0 ? yb.end : yb.start) && (bc.lastTime = +new Date,
bc.startPos = yb.cur,
ab("button"),
cc.init = 1,
ob("moveStart"),
s(hc),
P())
}
,
sb.stop = function() {
"button" === cc.source && (cc.init = 0,
cc.released = 1)
}
,
sb.prev = function() {
sb.activate(null == Jb.activeItem ? 0 : Jb.activeItem - 1)
}
,
sb.next = function() {
sb.activate(null == Jb.activeItem ? 0 : Jb.activeItem + 1)
}
,
sb.prevPage = function() {
sb.activatePage(Jb.activePage - 1)
}
,
sb.nextPage = function() {
sb.activatePage(Jb.activePage + 1)
}
,
sb.slideBy = function(a, b) {
a && (Rb ? sb[Qb ? "toCenter" : "toStart"](k((Qb ? Jb.centerItem : Jb.firstItem) + rb.scrollBy * a, 0, Ib.length)) : L(yb.dest + a, b))
}
,
sb.slideTo = function(a, b) {
L(a, b)
}
,
sb.toStart = function(a, b) {
Q("start", a, b)
}
,
sb.toEnd = function(a, b) {
Q("end", a, b)
}
,
sb.toCenter = function(a, b) {
Q("center", a, b)
}
,
sb.getIndex = R,
sb.activate = function(a, b) {
var c = T(a);
rb.smart && c !== !1 && (Qb ? sb.toCenter(c, b) : c >= Jb.lastItem ? sb.toStart(c, b) : c <= Jb.firstItem ? sb.toEnd(c, b) : Z())
}
,
sb.activatePage = function(a, b) {
i(a) && L(Gb[k(a, 0, Gb.length - 1)], b)
}
,
sb.resume = function(a) {
rb.cycleBy && rb.cycleInterval && ("items" !== rb.cycleBy || Ib[0] && null != Jb.activeItem) && !(a < sb.isPaused) && (sb.isPaused = 0,
gc ? gc = clearTimeout(gc) : ob("resume"),
gc = setTimeout(function() {
switch (ob("cycle"),
rb.cycleBy) {
case "items":
sb.activate(Jb.activeItem >= Ib.length - 1 ? 0 : Jb.activeItem + 1);
break;
case "pages":
sb.activatePage(Jb.activePage >= Gb.length - 1 ? 0 : Jb.activePage + 1)
}
}, rb.cycleInterval))
}
,
sb.pause = function(a) {
a < sb.isPaused || (sb.isPaused = a || 100,
gc && (gc = clearTimeout(gc),
ob("pause")))
}
,
sb.toggle = function() {
sb[gc ? "pause" : "resume"]()
}
,
sb.set = function(b, c) {
a.isPlainObject(b) ? a.extend(rb, b) : rb.hasOwnProperty(b) && (rb[b] = c)
}
,
sb.add = function(b, c) {
var d = a(b);
Rb ? (null == c || !Ib[0] || c >= Ib.length ? d.appendTo(vb) : Ib.length && d.insertBefore(Ib[c].el),
null != Jb.activeItem && c <= Jb.activeItem && (_b.active = Jb.activeItem += d.length)) : vb.append(d),
K()
}
,
sb.remove = function(b) {
if (Rb) {
var c = S(b);
if (c > -1) {
Hb.eq(c).remove();
var d = c === Jb.activeItem;
null != Jb.activeItem && c < Jb.activeItem && (_b.active = --Jb.activeItem),
K(),
d && (_b.active = null,
sb.activate(Jb.activeItem))
}
} else
a(b).remove(),
K()
}
,
sb.moveAfter = function(a, b) {
X(a, b, 1)
}
,
sb.moveBefore = function(a, b) {
X(a, b)
}
,
sb.on = function(a, b) {
if ("object" === e(a))
for (var c in a)
a.hasOwnProperty(c) && sb.on(c, a[c]);
else if ("function" === e(b))
for (var d = a.split(" "), f = 0, g = d.length; g > f; f++)
$b[d[f]] = $b[d[f]] || [],
-1 === Y(d[f], b) && $b[d[f]].push(b);
else if ("array" === e(b))
for (var h = 0, i = b.length; i > h; h++)
sb.on(a, b[h])
}
,
sb.one = function(a, b) {
function c() {
b.apply(sb, arguments),
sb.off(a, c)
}
sb.on(a, c)
}
,
sb.off = function(a, b) {
if (b instanceof Array)
for (var c = 0, d = b.length; d > c; c++)
sb.off(a, b[c]);
else
for (var e = a.split(" "), f = 0, g = e.length; g > f; f++)
if ($b[e[f]] = $b[e[f]] || [],
null == b)
$b[e[f]].length = 0;
else {
var h = Y(e[f], b);
-1 !== h && $b[e[f]].splice(h, 1)
}
}
,
sb.destroy = function() {
return d.removeInstance(b),
Sb.add(Ab).add(zb).add(Eb).add(Ub).add(Vb).add(Wb).add(Xb).add(Yb).add(Zb).off("." + r),
u.off("keydown", kb),
Wb.add(Xb).add(Yb).add(Zb).removeClass(rb.disabledClass),
Hb && null != Jb.activeItem && Hb.eq(Jb.activeItem).removeClass(rb.activeClass),
Eb.empty(),
tb || (ub.off("." + r),
Kb.restore(),
Lb.restore(),
Mb.restore(),
Nb.restore(),
a.removeData(b, r)),
Ib.length = Gb.length = 0,
_b = {},
sb.initialized = 0,
sb
}
,
sb.init = function() {
if (!sb.initialized) {
if (d.getInstance(b))
throw new Error("There is already a Sly instance on this element");
d.storeInstance(b, sb),
sb.on(q);
var a = ["overflow", "position"]
, c = ["position", "webkitTransform", "msTransform", "transform", "left", "top", "width", "height"];
Kb.save.apply(Kb, a),
Mb.save.apply(Mb, a),
Lb.save.apply(Lb, c),
Nb.save.apply(Nb, c);
var e = Ab;
return tb || (e = e.add(vb),
ub.css("overflow", "hidden"),
m || "static" !== ub.css("position") || ub.css("position", "relative")),
m ? n && e.css(m, n) : ("static" === zb.css("position") && zb.css("position", "relative"),
e.css({
position: "absolute"
})),
rb.forward && Ub.on(A, gb),
rb.backward && Vb.on(A, gb),
rb.prev && Wb.on(z, gb),
rb.next && Xb.on(z, gb),
rb.prevPage && Yb.on(z, gb),
rb.nextPage && Zb.on(z, gb),
Sb.on(y, ib),
zb[0] && zb.on(z, jb),
Rb && rb.activateOn && ub.on(rb.activateOn + "." + r, "*", lb),
Eb[0] && rb.activatePageOn && Eb.on(rb.activatePageOn + "." + r, "*", mb),
Tb.on(v, {
source: "slidee"
}, bb),
Ab && Ab.on(v, {
source: "handle"
}, bb),
u.on("keydown", kb),
tb || (ub.on("mouseenter." + r + " mouseleave." + r, nb),
ub.on("scroll." + r, h)),
sb.initialized = 1,
K(!0),
rb.cycleBy && !tb && sb[rb.startPaused ? "pause" : "resume"](),
sb
}
}
function e(a) {
return null == a ? String(a) : "object" == typeof a || "function" == typeof a ? Object.prototype.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase() || "object" : typeof a
function f(a, b) {
a.preventDefault(),
b && a.stopPropagation()
function g(b) {
f(b, 1),
a(this).off(b.type, g)
function h() {
this.scrollLeft = 0,
this.scrollTop = 0
function i(a) {
return !isNaN(parseFloat(a)) && isFinite(a)
function j(a, b) {
return 0 | G(String(a.css(b)).replace(/[^\-0-9.]/g, ""))
function k(a, b, c) {
return b > a ? b : a > c ? c : a
function l(a) {
var b = {};
return b.style = {},
b.save = function() {
if (a && a.nodeType) {
for (var c = 0; c < arguments.length; c++)
b.style[arguments[c]] = a.style[arguments[c]];
return b
}
}
,
b.restore = function() {
if (a && a.nodeType) {
for (var c in b.style)
b.style.hasOwnProperty(c) && (a.style[c] = b.style[c]);
return b
}
}
,
b
var m, n, o, p = "sly", q = "Sly", r = p, s = b.cancelAnimationFrame || b.cancelRequestAnimationFrame, t = b.requestAnimationFrame, u = a(document), v = "touchstart." + r + " mousedown." + r, w = "mousemove." + r + " mouseup." + r, x = "touchmove." + r + " touchend." + r, y = (document.implementation.hasFeature("Event.wheel", "3.0") ? "wheel." : "mousewheel.") + r, z = "click." + r, A = "mousedown." + r, B = ["INPUT", "SELECT", "BUTTON", "TEXTAREA"], C = [], D = Math.abs, E = Math.sqrt, F = Math.pow, G = Math.round, H = Math.max, I = Math.min, J = 0;
u.on(y, function(a) {
var b = a.originalEvent[r]
, c = +new Date;
(!b || b.options.scrollHijack < c - J) && (J = c)
}),
d.getInstance = function(b) {
return a.data(b, r)
d.storeInstance = function(b, c) {
return a.data(b, r, c)
d.removeInstance = function(b) {
return a.removeData(b, r)
function(a) {
function b(a) {
var b = (new Date).getTime()
, d = Math.max(0, 16 - (b - c))
, e = setTimeout(a, d);
return c = b,
e
}
t = a.requestAnimationFrame || a.webkitRequestAnimationFrame || b;
var c = (new Date).getTime()
, d = a.cancelAnimationFrame || a.webkitCancelAnimationFrame || a.clearTimeout;
s = function(b) {
d.call(a, b)
}
}(window),
function() {
function a(a) {
for (var d = 0, e = b.length; e > d; d++) {
var f = b[d] ? b[d] + a.charAt(0).toUpperCase() + a.slice(1) : a;
if (null != c.style[f])
return f
}
}
var b = ["", "Webkit", "Moz", "ms", "O"]
, c = document.createElement("div");
m = a("transform"),
n = a("perspective") ? "translateZ(0) " : ""
}(),
b[q] = d,
a.fn[p] = function(b, c) {
var f, g;
return a.isPlainObject(b) || (("string" === e(b) || b === !1) && (f = b === !1 ? "destroy" : b,
g = Array.prototype.slice.call(arguments, 1)),
b = {}),
this.each(function(a, e) {
var h = d.getInstance(e);
h || f ? h && f && h[f] && h[f].apply(h, g) : h = new d(e,b,c).init()
})
d.defaults = {
slidee: null,
horizontal: !1,
itemNav: null,
itemSelector: null,
smart: !1,
activateOn: null,
activateMiddle: !1,
scrollSource: null,
scrollBy: 0,
scrollHijack: 300,
scrollTrap: !1,
dragSource: null,
mouseDragging: !1,
touchDragging: !1,
releaseSwing: !1,
swingSpeed: .2,
elasticBounds: !1,
dragThreshold: 3,
interactive: null,
scrollBar: null,
dragHandle: !1,
dynamicHandle: !1,
minHandleSize: 50,
clickBar: !1,
syncSpeed: .5,
pagesBar: null,
activatePageOn: null,
pageBuilder: function(a) {
return "<li>" + (a + 1) + "</li>"
},
forward: null,
backward: null,
prev: null,
next: null,
prevPage: null,
nextPage: null,
cycleBy: null,
cycleInterval: 5e3,
pauseOnHover: !1,
startPaused: !1,
moveBy: 300,
speed: 0,
easing: "swing",
startAt: null,
keyboardNavBy: null,
draggedClass: "dragged",
activeClass: "active",
disabledClass: "disabled"
function SeriolaReapprobation(e) {
function webpackJsonpCallback(c) {
for (var r, t, d = c[0], n = c[1], _ = c[2], u = 0, i = []; u < d.length; u++)
t = d[u],
f[t] && i.push(f[t][0]),
f[t] = 0;
for (r in n)
Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]);
for (o && o(c); i.length; )
i.shift()();
return a.push.apply(a, _ || []),
checkDeferredModules()
function checkDeferredModules() {
for (var e, c = 0; c < a.length; c++) {
for (var r = a[c], t = !0, d = 1; d < r.length; d++) {
var n = r[d];
0 !== f[n] && (t = !1)
}
t && (a.splice(c--, 1),
e = __webpack_require__(__webpack_require__.s = r[0]))
}
return e
var c = {}
, r = {
6: 0
, f = {
6: 0
, a = [];
function __webpack_require__(r) {
if (c[r])
return c[r].exports;
var f = c[r] = {
i: r,
l: !1,
exports: {}
};
return e[r].call(f.exports, f, f.exports, __webpack_require__),
f.l = !0,
f.exports
__webpack_require__.e = function requireEnsure(e) {
var c = [];
r[e] ? c.push(r[e]) : 0 !== r[e] && {
1: 1,
3: 1,
8: 1,
16: 1,
22: 1,
24: 1,
28: 1,
30: 1,
31: 1,
32: 1,
34: 1,
36: 1,
37: 1,
38: 1,
42: 1,
43: 1,
44: 1,
45: 1,
46: 1,
47: 1
}[e] && c.push(r[e] = new Promise(function(c, f) {
for (var a = "assets/css/" + ({}[e] || e) + "." + {
0: "31d6cfe0",
1: "573fce08",
2: "31d6cfe0",
3: "07aa08a5",
4: "31d6cfe0",
7: "31d6cfe0",
8: "b5c2854f",
10: "31d6cfe0",
11: "31d6cfe0",
12: "31d6cfe0",
13: "31d6cfe0",
14: "31d6cfe0",
15: "31d6cfe0",
16: "22abfce0",
17: "31d6cfe0",
18: "31d6cfe0",
19: "31d6cfe0",
20: "31d6cfe0",
21: "31d6cfe0",
22: "c695453b",
23: "31d6cfe0",
24: "c887d73e",
25: "31d6cfe0",
26: "31d6cfe0",
27: "31d6cfe0",
28: "9bf46b67",
29: "31d6cfe0",
30: "2150fc1e",
31: "9283df26",
32: "4e20f65c",
33: "31d6cfe0",
34: "a3318c5e",
35: "31d6cfe0",
36: "f3603045",
37: "11d2b6a7",
38: "07d5a4d2",
39: "31d6cfe0",
40: "31d6cfe0",
41: "31d6cfe0",
42: "8be6ed5b",
43: "e483d03f",
44: "7fb7decf",
45: "ec5f7adc",
46: "ec5f7adc",
47: "31c46372",
48: "31d6cfe0",
49: "31d6cfe0",
50: "31d6cfe0",
51: "31d6cfe0",
52: "31d6cfe0",
53: "31d6cfe0",
54: "31d6cfe0",
55: "31d6cfe0",
56: "31d6cfe0",
57: "31d6cfe0",
58: "31d6cfe0",
59: "31d6cfe0",
60: "31d6cfe0",
61: "31d6cfe0",
62: "31d6cfe0",
63: "31d6cfe0",
64: "31d6cfe0",
65: "31d6cfe0",
66: "31d6cfe0",
67: "31d6cfe0",
68: "31d6cfe0",
69: "31d6cfe0",
70: "31d6cfe0",
71: "31d6cfe0",
72: "31d6cfe0",
73: "31d6cfe0",
74: "31d6cfe0",
75: "31d6cfe0",
76: "31d6cfe0",
77: "31d6cfe0",
78: "31d6cfe0",
79: "31d6cfe0",
80: "31d6cfe0",
81: "31d6cfe0",
82: "31d6cfe0"
}[e] + ".chunk.css", t = __webpack_require__.p + a, d = document.getElementsByTagName("link"), n = 0; n < d.length; n++) {
var o = (u = d[n]).getAttribute("data-href") || u.getAttribute("href");
if ("stylesheet" === u.rel && (o === a || o === t))
return c()
}
var _ = document.getElementsByTagName("style");
for (n = 0; n < _.length; n++) {
var u;
if ((o = (u = _[n]).getAttribute("data-href")) === a || o === t)
return c()
}
var i = document.createElement("link");
i.rel = "stylesheet",
i.type = "text/css",
i.onload = c,
i.onerror = function(c) {
var a = c && c.target && c.target.src || t
, d = new Error("Loading CSS chunk " + e + " failed.\n(" + a + ")");
d.request = a,
delete r[e],
i.parentNode.removeChild(i),
f(d)
}
,
i.href = t,
0 !== i.href.indexOf(window.location.origin + "/") && (i.crossOrigin = "anonymous"),
document.getElementsByTagName("head")[0].appendChild(i)
}
).then(function() {
r[e] = 0
}));
var a = f[e];
if (0 !== a)
if (a)
c.push(a[2]);
else {
var t = new Promise(function(c, r) {
a = f[e] = [c, r]
}
);
c.push(a[2] = t);
var d, n = document.createElement("script");
n.charset = "utf-8",
n.timeout = 120,
__webpack_require__.nc && n.setAttribute("nonce", __webpack_require__.nc),
n.src = function jsonpScriptSrc(e) {
return __webpack_require__.p + "assets/js/" + ({}[e] || e) + "." + {
0: "0b2ebd4a",
1: "8a107c9e",
2: "aaf108d2",
3: "f50b964b",
4: "df982179",
7: "818a812f",
8: "59031137",
10: "8fd5a4f5",
11: "639238ba",
12: "67178186",
13: "27b72638",
14: "e24a6190",
15: "83e882e8",
16: "798ad688",
17: "cbb94c7f",
18: "9c1bd1fb",
19: "6f85b843",
20: "8c21ea18",
21: "b8c41db9",
22: "a0d03ba3",
23: "60057654",
24: "c5736f16",
25: "76e970f1",
26: "04e7f30b",
27: "01c2bea5",
28: "b06e405e",
29: "31d09948",
30: "f15e8a91",
31: "9f0e753c",
32: "b3746c31",
33: "bccc8385",
34: "3fee3c03",
35: "d0f1ccda",
36: "2c5177c0",
37: "298cbb69",
38: "ba6b1261",
39: "ebe4cda0",
40: "31ef8dbf",
41: "b4fc4de2",
42: "d3b74418",
43: "bd189648",
44: "2a2590e0",
45: "d230a712",
46: "55d1b106",
47: "2b92314c",
48: "7cfb2d8f",
49: "f7274268",
50: "9686931c",
51: "558be3c5",
52: "a01b535c",
53: "673f89dc",
54: "7980cc32",
55: "a1665de6",
56: "408f53d0",
57: "3fe6ce5a",
58: "5aaf0625",
59: "6549d79e",
60: "f5be7a09",
61: "4ceba892",
62: "ed9caa10",
63: "dd9b68cc",
64: "d60fe44e",
65: "0a391a23",
66: "e4a8024f",
67: "56b9f8e3",
68: "d010e0b6",
69: "c661cb20",
70: "50b9fc9f",
71: "02c66f23",
72: "22a77e65",
73: "71e614a3",
74: "037c46e0",
75: "fe2357da",
76: "dbc4fac0",
77: "34252f1b",
78: "6c8b3900",
79: "4e484943",
80: "3137724a",
81: "58965f81",
82: "bc8a7d81"
}[e] + ".chunk.js"
}(e),
0 !== n.src.indexOf(window.location.origin + "/") && (n.crossOrigin = "anonymous");
var o = new Error;
d = function(c) {
n.onerror = n.onload = null,
clearTimeout(_);
var r = f[e];
if (0 !== r) {
if (r) {
var a = c && ("load" === c.type ? "missing" : c.type)
, t = c && c.target && c.target.src;
o.message = "Loading chunk " + e + " failed.\n(" + a + ": " + t + ")",
o.name = "ChunkLoadError",
o.type = a,
o.request = t,
r[1](o)
}
f[e] = void 0
}
}
;
var _ = setTimeout(function() {
d({
type: "timeout",
target: n
})
}, 12e4);
n.onerror = n.onload = d,
document.head.appendChild(n)
}
return Promise.all(c)
__webpack_require__.m = e,
__webpack_require__.c = c,
__webpack_require__.d = function(e, c, r) {
__webpack_require__.o(e, c) || Object.defineProperty(e, c, {
enumerable: !0,
get: r
})
__webpack_require__.r = function(e) {
"undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
value: "Module"
}),
Object.defineProperty(e, "__esModule", {
value: !0
})
__webpack_require__.t = function(e, c) {
if (1 & c && (e = __webpack_require__(e)),
8 & c)
return e;
if (4 & c && "object" === typeof e && e && e.__esModule)
return e;
var r = Object.create(null);
if (__webpack_require__.r(r),
Object.defineProperty(r, "default", {
enumerable: !0,
value: e
}),
2 & c && "string" != typeof e)
for (var f in e)
__webpack_require__.d(r, f, function(c) {
return e[c]
}
.bind(null, f));
return r
__webpack_require__.n = function(e) {
return __webpack_require__.d(c, "a", c)
__webpack_require__.o = function(e, c) {
return Object.prototype.hasOwnProperty.call(e, c)
__webpack_require__.p = "/core/",
__webpack_require__.oe = function(e) {
throw console.error(e),
e
var t = window.webpackJsonp = window.webpackJsonp || []
, d = t.push.bind(t);
t.push = webpackJsonpCallback,
t = t.slice();
for (var n = 0; n < t.length; n++)
webpackJsonpCallback(t[n]);
var o = d;
checkDeferredModules()
window = {}
function blanketweed(t) {
var u = new function() {
this.optanonCookieName = "OptanonConsent",
this.optanonHtmlGroupData = [],
this.optanonHostData = [],
this.genVendorsData = [],
this.vendorsServiceData = [],
this.IABCookieValue = "",
this.oneTrustIABCookieName = "eupubconsent",
this.oneTrustIsIABCrossConsentEnableParam = "isIABGlobal",
this.isStubReady = !0,
this.geolocationCookiesParam = "geolocation",
this.EUCOUNTRIES = ["BE", "BG", "CZ", "DK", "DE", "EE", "IE", "GR", "ES", "FR", "IT", "CY", "LV", "LT", "LU", "HU", "MT", "NL", "AT", "PL", "PT", "RO", "SI", "SK", "FI", "SE", "GB", "HR", "LI", "NO", "IS"],
this.stubFileName = "otSDKStub",
this.DATAFILEATTRIBUTE = "data-domain-script",
this.bannerScriptName = "otBannerSdk.js",
this.mobileOnlineURL = [],
this.isMigratedURL = !1,
this.migratedCCTID = "[[OldCCTID]]",
this.migratedDomainId = "[[NewDomainId]]",
this.userLocation = {
country: "",
state: ""
}
(l = m = m || {})[l.Days = 1] = "Days",
l[l.Weeks = 7] = "Weeks",
l[l.Months = 30] = "Months",
l[l.Years = 365] = "Years",
(l = e = e || {}).Name = "OTGPPConsent",
l[l.ChunkSize = 4e3] = "ChunkSize",
l.ChunkCountParam = "GPPCookiesCount",
(l = {
CPRA: 8,
8: "CPRA",
CCPA: 8
})[8] = "CCPA",
l[l.CDPA = 9] = "CDPA",
l[l.USNATIONAL = 7] = "USNATIONAL",
l[l.COLORADO = 10] = "COLORADO",
l[l.UCPA = 11] = "UCPA",
l[l.CTDPA = 12] = "CTDPA";
var r, e, a = "geo", o = "otpreview", s = (e.Name,
"PRODUCTION"), n = ((l = {})[m.Days] = "PCenterVendorListLifespanDay",
l[m.Weeks] = "LfSpnWk",
l[m.Months] = "PCenterVendorListLifespanMonth",
l[m.Years] = "LfSpnYr",
i.prototype.camelize = function(t) {
return t.split("-").map(function(t, e) {
return 0 === e ? t : t[0].toUpperCase() + t.slice(1)
}).join("")
i.prototype.strToObj = function(t) {
for (var e = {}, i = t.split(";").map(function(t) {
return t.trim()
}), n = 0, a = void 0; n < i.length; ++n)
if (/:/.test(i[n])) {
if (!(a = i[n].split(/:(.+)/))[1])
return null;
e[this.camelize(a[0])] = a[1].trim()
}
return e
i);
function i() {
var t = this;
this.implementThePolyfill = function() {
var a = t
, o = Element.prototype.setAttribute;
return Element.prototype.setAttribute = function(t, e) {
if ("style" !== t.toLowerCase() && o.apply(this, [t, e]),
"style" !== t.toLowerCase() || e || this.removeAttribute("style"),
"style" === t.toLowerCase() && e) {
this.removeAttribute("style");
var i, n = a.strToObj(e);
for (i in n)
this.style[i] = n[i]
}
}
,
!0
}
function p(t, e, i) {
void 0 === i && (i = !1);
function n(t) {
return t ? (";" !== (t = t.trim()).charAt(t.length - 1) && (t += ";"),
t.trim()) : null
}
var o = n(t.getAttribute("style"))
, s = n(e)
, e = ""
, e = i && o ? function() {
for (var t = o.split(";").concat(s.split(";")).filter(function(t) {
return 0 !== t.length
}), e = "", i = "", n = t.length - 1; 0 <= n; n--) {
var a = t[n].substring(0, t[n].indexOf(":") + 1).trim();
e.indexOf(a) < 0 && (e += a,
i += t[n] + ";")
}
return i
}() : s;
t.setAttribute("style", e)
(e = r = r || {}).ping = "ping",
e.addEventListener = "addEventListener",
e.removeEventListener = "removeEventListener",
e.hasSection = "hasSection",
e.getSection = "getSection",
e.getField = "getField",
e.getGPPData = "getGPPData";
var c = new function() {
var s = this;
this.LOCATOR_NAME = "__gppLocator",
this.win = window,
this.customInit = "CUSTOMINIT",
this.init = function() {
s.win.__gpp && "function" == typeof s.win.__gpp || (s.win.__gpp = s.executeGppApi,
window.addEventListener("message", s.messageHandler, !1),
s.addFrame(s.LOCATOR_NAME))
}
,
this.removeGppApi = function() {
delete s.win.__gpp;
var t = document.querySelectorAll("iframe[name=" + s.LOCATOR_NAME + "]")[0];
t && t.parentElement.removeChild(t)
}
,
this.executeGppApi = function() {
for (var t = [], e = 0; e < arguments.length; e++)
t[e] = arguments[e];
var i = null == (i = s.win) ? void 0 : i.__gpp;
if (i.queue = i.queue || [],
i.events = i.events || [],
!t.length || 1 === t.length && "queue" === t[0])
return i.queue;
if (1 === t.length && "events" === t[0])
return i.events;
var n = t[0]
, a = 1 < t.length ? t[1] : null
, o = 2 < t.length ? t[2] : null;
switch (n) {
case r.ping:
return s.getPingRequest(a);
case r.addEventListener:
return s.addEventListener(a, o);
case r.removeEventListener:
return s.removeEventListener(o);
default:
return void s.addToQueue(n, a, o)
}
}
,
this.getPingRequest = function(t) {
var e = {
gppVersion: 1,
cmpStatus: "stub",
cmpDisplayStatus: "hidden",
apiSupport: ["uspcav1", "uspvav1"],
currentAPI: "",
cmpId: Number.parseInt("28")
};
return t && t(e, !0),
e
}
,
this.addFrame = function(t) {
var e, i = s.win.document, n = Boolean(s.win.frames[t]);
return n || (i.body ? ((e = i.createElement("iframe")).style.cssText = "display:none",
e.name = t,
e.setAttribute("title", "GPP Locator"),
i.body.appendChild(e)) : setTimeout(function() {
s.addFrame(t)
}, 5)),
!n
}
,
this.addEventListener = function(t, e) {
var i, n = s.win.__gpp;
return n.events = n.events || [],
null != (i = n) && i.lastId || (n.lastId = 0),
n.lastId++,
n.events.push({
id: n.lastId,
callback: t,
parameter: e
}),
{
eventName: "listenerRegistered",
listenerId: n.lastId,
data: !0,
pingData: s.getPingRequest()
}
}
,
this.removeEventListener = function(e) {
var i = !1
, t = s.win.__gpp;
return t.events = t.events || [],
t.events = t.events.filter(function(t) {
return t.id.toString() !== e.toString() || !(i = !0)
}),
{
eventName: "listenerRemoved",
listenerId: e,
data: i,
pingData: s.getPingRequest()
}
}
,
this.addToQueue = function(t, e, i) {
var n = s.win.__gpp;
n.queue = n.queue || [],
n.queue.push([t, e, i])
}
,
this.messageHandler = function(i) {
var e, n, a = "string" == typeof i.data;
try {
e = a ? JSON.parse(i.data) : i.data
} catch (t) {
e = null
}
e && e.__gppCall && (n = e.__gppCall,
(0,
s.win.__gpp)(n.command, function(t, e) {
t = {
__gppReturn: {
returnValue: t,
success: e,
callId: n.callId
}
};
i && i.source && i.source.postMessage && i.source.postMessage(a ? JSON.stringify(t) : t, i.origin || "*")
}, n.parameter))
}
,
this.customInit || this.init()
, l = (d.prototype.initConsentSDK = function() {
this.initCustomEventPolyfill(),
this.ensureHtmlGroupDataInitialised(),
this.setStubScriptElement(),
this.setOTDataLayer(),
this.getParam(),
this.fetchBannerSDKDependency(),
this.captureNonce()
d.prototype.captureNonce = function() {
this.nonce = u.stubScriptElement.nonce || u.stubScriptElement.getAttribute("nonce") || null
d.prototype.fetchBannerSDKDependency = function() {
this.setDomainDataFileURL(),
this.crossOrigin = u.stubScriptElement.getAttribute("crossorigin") || null,
this.previewMode = "true" === u.stubScriptElement.getAttribute("data-preview-mode"),
this.otFetch(u.bannerDataParentURL, this.getLocation.bind(this))
d.prototype.setDomainIfBulkDomainEnabled = function(t) {
var e = t && t.TenantFeatures
, i = window.location.hostname
, n = t.Domain
, a = t.BulkDomainCheckUrl;
e && e.CookieV2BulkDomainManagement && i !== n && t.ScriptType === s && ((e = window.sessionStorage) && e.getItem("bulkDomainMgmtEnabled") ? this.handleBulkDomainMgmt({
isValid: "true" === window.sessionStorage.getItem("bulkDomainMgmtEnabled")
}, t) : (n = {
location: u.storageBaseURL.replace(/^https?:\/\//, ""),
domainId: this.domainId,
url: i
},
this.otFetch(a, this.handleBulkDomainMgmt, !1, n, t)))
d.prototype.getLocation = function(t) {
if (this.setDomainIfBulkDomainEnabled(t),
(t.TenantFeatures && t.TenantFeatures.CookieV2CSP || t.CookieV2CSPEnabled) && this.nonce && (this.setAttributePolyfillIsActive = !0,
(new n).implementThePolyfill()),
!t.RuleSet[0].Type)
return this.iabTypeAdded = !1,
window.__cmp = this.executeCmpApi,
window.__tcfapi = this.executeTcfApi,
this.intializeIabStub(),
this.addBannerSDKScript(t);
var e, i = window;
i.OneTrust && i.OneTrust.geolocationResponse ? (i = i.OneTrust.geolocationResponse,
this.setGeoLocation(i.countryCode, i.stateCode),
this.addBannerSDKScript(t)) : (i = this.readCookieParam(u.optanonCookieName, u.geolocationCookiesParam)) || t.SkipGeolocation ? (e = i.split(";")[0],
i = i.split(";")[1],
this.setGeoLocation(e, i),
this.addBannerSDKScript(t)) : this.getGeoLocation(t)
d.prototype.handleBulkDomainMgmt = function(t, e) {
window.sessionStorage && window.sessionStorage.setItem("bulkDomainMgmtEnabled", JSON.stringify(t.isValid)),
t.isValid && (e.Domain = window.location.hostname)
d.prototype.getGeolocationURL = function(t) {
t.TenantFeatures;
var e = "" + u.stubScriptElement.getAttribute("src").split(u.stubFileName)[0] + t.Version;
return new RegExp("^file://","i").test(e) && t.MobileSDK ? (e = "/" + t.GeolocationUrl.replace(/^(http|https):\/\//, "").split("/").slice(1).join("/") + ".js",
u.storageBaseURL + e) : t.GeolocationUrl
d.prototype.geoLocationJsonCallback = function(t, e) {
e && this.setGeoLocation(e.country, e.state),
this.addBannerSDKScript(t)
d.prototype.getGeoLocation = function(t) {
var e = this.getGeolocationURL(t);
this.otFetch(e, this.geoLocationJsonCallback.bind(this, t), !0)
d.prototype.setOTDataLayer = function() {
var t = "data-dLayer-ignore"
, e = u.stubScriptElement.hasAttribute(t)
, t = u.stubScriptElement.getAttribute(t);
this.otDataLayer = {
ignore: e && "true" === t || e && "" === t,
name: u.stubScriptElement.getAttribute("data-dLayer-name") || "dataLayer"
}
d.prototype.setGeoLocation = function(t, e) {
u.userLocation = {
country: t,
state: e = void 0 === e ? "" : e
}
d.prototype.otFetch = function(t, i, e, n, a) {
void 0 === e && (e = !1),
void 0 === n && (n = null);
var o = window.sessionStorage && window.sessionStorage.getItem("otPreviewData");
if (new RegExp("^file://","i").test(t))
this.otFetchOfflineFile(t, i);
else if (0 <= t.indexOf("/consent/") && this.previewMode && o) {
o = JSON.parse(o).domainJson;
i(o)
} else {
u.mobileOnlineURL.push(t);
var s = new XMLHttpRequest;
if (s.onload = function(t) {
var e;
this && this.responseText ? e = this.responseText : t && t.target && (e = t.target.responseText),
a ? i(JSON.parse(e), a) : i(JSON.parse(e))
}
,
s.onerror = function() {
i()
}
,
s.open("GET", t),
s.withCredentials = !1,
e && s.setRequestHeader("accept", "application/json"),
n)
for (var r in n)
s.setRequestHeader(r, n[r]);
s.send()
}
d.prototype.otFetchOfflineFile = function(t, e) {
var i = (t = t.replace(".json", ".js")).split("/")
, n = i[i.length - 1].split(".js")[0];
this.jsonp(t, function() {
e(window[n])
})
d.prototype.jsonp = function(t, e) {
var i = document.createElement("script");
i.setAttribute("src", t),
this.nonce && i.setAttribute("nonce", this.nonce),
i.async = !0,
i.type = "text/javascript",
this.crossOrigin && i.setAttribute("crossorigin", this.crossOrigin),
document.getElementsByTagName("head")[0].appendChild(i),
new RegExp("^file://","i").test(t) || u.mobileOnlineURL.push(t),
e && (i.onload = i.onerror = function() {
e()
}
)
d.prototype.getRegionSet = function(t) {
var e, i, n, a = u.userLocation, o = t.RuleSet.filter(function(t) {
return !0 === t.Default
});
if (!a.country && !a.state)
return o && 0 < o.length ? o[0] : null;
for (var s = a.state.toLowerCase(), r = a.country.toLowerCase(), p = 0; p < t.RuleSet.length; p++)
if (!0 === t.RuleSet[p].Global)
n = t.RuleSet[p];
else {
var l = t.RuleSet[p].States;
if (l[r] && 0 <= l[r].indexOf(s)) {
i = t.RuleSet[p];
break
}
0 <= t.RuleSet[p].Countries.indexOf(r) && (e = t.RuleSet[p])
}
return i || e || n
d.prototype.ensureHtmlGroupDataInitialised = function() {
this.initializeIABData(),
this.initializeGroupData(),
this.initializeHostData(),
this.initializeGenVenData()
d.prototype.initializeGroupData = function() {
var t = this.readCookieParam(u.optanonCookieName, "groups");
t && (u.optanonHtmlGroupData = this.deserialiseStringToArray(t))
d.prototype.initializeHostData = function() {
var t = this.readCookieParam(u.optanonCookieName, "hosts");
t && (u.optanonHostData = this.deserialiseStringToArray(t))
d.prototype.initializeGenVenData = function() {
var t = this.readCookieParam(u.optanonCookieName, "genVendors");
t && (u.genVendorsData = this.deserialiseStringToArray(t))
d.prototype.initializeIABData = function() {
this.validateIABGDPRApplied(),
this.validateIABGlobalScope()
d.prototype.validateIABGlobalScope = function() {
var t = this.readCookieParam(u.optanonCookieName, u.oneTrustIsIABCrossConsentEnableParam);
t ? "true" === t ? (u.hasIABGlobalScope = !0,
u.isStubReady = !1) : (u.hasIABGlobalScope = !1,
u.IABCookieValue = this.getCookie(u.oneTrustIABCookieName)) : u.isStubReady = !1
d.prototype.validateIABGDPRApplied = function() {
var t = this.readCookieParam(u.optanonCookieName, u.geolocationCookiesParam).split(";")[0];
t ? this.isBoolean(t) ? u.oneTrustIABgdprAppliesGlobally = "true" === t : u.oneTrustIABgdprAppliesGlobally = 0 <= u.EUCOUNTRIES.indexOf(t) : u.isStubReady = !1
d.prototype.isBoolean = function(t) {
return "true" === t || "false" === t
d.prototype.readCookieParam = function(t, e) {
var i, n, a, o, t = this.getCookie(t);
if (t) {
for (n = {},
a = t.split("&"),
i = 0; i < a.length; i += 1)
o = a[i].split("="),
n[decodeURIComponent(o[0])] = decodeURIComponent(o[1]).replace(/\+/g, " ");
return e && n[e] ? n[e] : e && !n[e] ? "" : n
}
return ""
d.prototype.getCookie = function(t) {
if (this.isAmp) {
var e = JSON.parse(window.localStorage.getItem(this.domainId)) || {};
if (e)
return e[t] || null
}
for (var i, n = t + "=", a = document.cookie.split(";"), o = 0; o < a.length; o += 1) {
for (i = a[o]; " " == i.charAt(0); )
i = i.substring(1, i.length);
if (0 == i.indexOf(n))
return i.substring(n.length, i.length)
}
return null
d.prototype.updateGtmMacros = function() {
for (var t = [], e = u.optanonHtmlGroupData.length, i = 0; i < e; i++)
this.endsWith(u.optanonHtmlGroupData[i], ":1") && t.push(u.optanonHtmlGroupData[i].replace(":1", ""));
for (e = u.optanonHostData.length,
i = 0; i < e; i++)
this.endsWith(u.optanonHostData[i], ":1") && t.push(u.optanonHostData[i].replace(":1", ""));
for (e = u.genVendorsData.length,
i = 0; i < e; i++)
this.endsWith(u.genVendorsData[i], ":1") && t.push(u.genVendorsData[i].replace(":1", ""));
for (e = u.vendorsServiceData.length,
i = 0; i < e; i++)
this.endsWith(u.vendorsServiceData[i], ":1") && t.push(u.vendorsServiceData[i].replace(":1", ""));
var n, a = "," + this.serialiseArrayToString(t) + ",", o = (window.OnetrustActiveGroups = a,
window.OptanonActiveGroups = a,
window), s = (this.otDataLayer.ignore || void 0 === o[this.otDataLayer.name] ? this.otDataLayer.ignore || (o[this.otDataLayer.name] = [{
event: "OneTrustLoaded",
OnetrustActiveGroups: a
}, {
event: "OptanonLoaded",
OptanonActiveGroups: a
}]) : o[this.otDataLayer.name].constructor === Array && (o[this.otDataLayer.name].push({
OnetrustActiveGroups: a
}),
o[this.otDataLayer.name].push({
OptanonActiveGroups: a
})),
new CustomEvent("consent.onetrust",{
detail: t
}));
!this.otDataLayer.ignore && t.length && (o[this.otDataLayer.name].constructor === Array && o[this.otDataLayer.name].push({
event: "OneTrustGroupsUpdated",
OnetrustActiveGroups: a
}),
n = new CustomEvent("OneTrustGroupsUpdated",{
detail: t
})),
setTimeout(function() {
t.length && window.dispatchEvent(s),
n && window.dispatchEvent(n)
})
d.prototype.deserialiseStringToArray = function(t) {
return t ? t.split(",") : []
d.prototype.endsWith = function(t, e) {
return -1 !== t.indexOf(e, t.length - e.length)
d.prototype.serialiseArrayToString = function(t) {
return t.toString()
d.prototype.setStubScriptElement = function() {
u.stubScriptElement = document.querySelector("script[src*='" + u.stubFileName + "']");
var t = u.stubScriptElement && 0 <= u.stubScriptElement.getAttribute("src").indexOf("did=");
u.stubScriptElement && u.stubScriptElement.hasAttribute(u.DATAFILEATTRIBUTE) ? this.domainId = u.stubScriptElement.getAttribute(u.DATAFILEATTRIBUTE).trim() : t ? this.domainId = u.stubScriptElement.getAttribute("src").split("did=")[1] : u.stubScriptElement || (u.stubScriptElement = document.querySelector("script[src*='" + u.migratedCCTID + "']"),
u.stubScriptElement && (u.isMigratedURL = !0,
this.domainId = u.migratedDomainId.trim()))
d.prototype.setDomainDataFileURL = function() {
var t = u.stubScriptElement.getAttribute("src")
, e = -1 < t.indexOf("/consent");
t && (u.isMigratedURL ? u.storageBaseURL = t.split("/consent/" + u.migratedCCTID)[0] : u.storageBaseURL = (e ? t.split("/consent") : t.split("/scripttemplates/" + u.stubFileName))[0]),
this.storageBaseURL = u.storageBaseURL,
this.isPreview && -1 === this.domainId.indexOf("test") ? this.domainId = this.domainId + "-test" : this.isPreview = !1,
u.bannerBaseDataURL = u.storageBaseURL && u.storageBaseURL + "/consent/" + this.domainId,
u.bannerDataParentURL = u.bannerBaseDataURL + "/" + this.domainId + ".json"
d.prototype.initCustomEventPolyfill = function() {
if ("function" == typeof window.CustomEvent)
return !1;
function t(t, e) {
e = e || {
bubbles: !1,
cancelable: !1,
detail: void 0
};
var i = document.createEvent("CustomEvent");
return i.initCustomEvent(t, e.bubbles, e.cancelable, e.detail),
i
}
t.prototype = window.Event.prototype,
window.CustomEvent = t
d.prototype.removeTcf = function() {
delete window.__tcfapi;
var t = document.querySelectorAll("iframe[name='__tcfapiLocator']")[0];
t && t.parentElement.removeChild(t)
d.prototype.getParamForIE = function() {
return {
get: function(t) {
t = new RegExp("[?&]" + t + "=([^&#]*)").exec(window.location.search);
return null === t ? null : decodeURI(t[1]) || ""
}
}
d.prototype.getParam = function() {
window.document.documentMode || !window.URLSearchParams ? this.urlParams = this.getParamForIE() : this.urlParams = new URLSearchParams(window.location.search);
var t = "true" === this.urlParams.get("otreset")
, e = "true" === this.urlParams.get("otpreview")
, i = (this.geoFromUrl = (this.urlParams.get("otgeo") || "").toLowerCase(),
this.readCookieParam(o, "expiry"))
, n = this.readCookieParam(o, a);
this.isReset = t || i && new Date(i) < new Date,
this.isPreview = !this.isReset && (e || i && new Date(i) > new Date),
this.setGeoParam(this.geoFromUrl || n)
d.prototype.setGeoParam = function(t) {
var e;
t && ((e = window).OneTrust || (e.OneTrust = {}),
t = t.split(","),
e.OneTrust.geolocationResponse = {
countryCode: t[0],
stateCode: t[1]
})
d);
function d() {
var l = this;
this.iabType = null,
this.iabTypeAdded = !0,
this.crossOrigin = null,
this.isAmp = !1,
this.domainId = "",
this.isReset = !1,
this.isPreview = !1,
this.geoFromUrl = "",
this.nonce = "",
this.setAttributePolyfillIsActive = !1,
this.storageBaseURL = "",
this.charset = null,
this.addBannerSDKScript = function(t) {
var e = l.getRegionSet(t)
, i = (e.GCEnable || (l.updateGtmMacros(),
l.gtmUpdated = !0),
l.iabTypeAdded && ("IAB" !== e.Type && "IAB2" !== e.Type || (l.iabType = e.Type,
l.intializeIabStub()),
"IAB2" !== e.Type) && l.removeTcf(),
e.IsGPPEnabled ? c.init() : c.removeGppApi(),
u.stubScriptElement.cloneNode(!0))
, n = ""
, n = t.UseSDKRefactor ? (u.isMigratedURL && (i.src = u.storageBaseURL + "/scripttemplates/new/scripttemplates/" + u.stubFileName + ".js"),
u.storageBaseURL + "/scripttemplates/new/scripttemplates/" + t.Version + "/" + u.bannerScriptName) : "5.11.0" === t.Version ? (u.isMigratedURL && (i.src = u.storageBaseURL + "/scripttemplates/old/scripttemplates/" + u.stubFileName + ".js"),
u.storageBaseURL + "/scripttemplates/old/scripttemplates/5.11.0/" + u.bannerScriptName) : (u.isMigratedURL && (i.src = u.storageBaseURL + "/scripttemplates/" + u.stubFileName + ".js"),
u.storageBaseURL + "/scripttemplates/" + t.Version + "/" + u.bannerScriptName);
["charset", "data-language", "data-document-language", "data-domain-script", "crossorigin", "data-ignore-ga"].forEach(function(t) {
u.stubScriptElement.getAttribute(t) && i.setAttribute(t, u.stubScriptElement.getAttribute(t))
}),
l.charset = u.stubScriptElement.getAttribute("charset"),
l.isAmp = !!u.stubScriptElement.getAttribute("amp"),
window.otStubData = {
bannerBaseDataURL: u.bannerBaseDataURL,
crossOrigin: l.crossOrigin,
domainData: t,
domainId: l.domainId,
geoFromUrl: l.geoFromUrl,
isAmp: l.isAmp,
isPreview: l.isPreview,
isReset: l.isReset,
mobileOnlineURL: u.mobileOnlineURL,
nonce: l.nonce,
otDataLayer: l.otDataLayer,
regionRule: e,
setAttributePolyfillIsActive: l.setAttributePolyfillIsActive,
storageBaseURL: l.storageBaseURL,
stubElement: i,
urlParams: l.urlParams,
userLocation: u.userLocation,
gtmUpdated: l.gtmUpdated,
previewMode: l.previewMode,
charset: l.charset
},
l.jsonp(n, null)
}
,
this.intializeIabStub = function() {
var t = window;
l.iabTypeAdded ? ("IAB" === l.iabType ? void 0 === t.__cmp && (window.__cmp = l.executeCmpApi) : void 0 === t.__tcfapi && (window.__tcfapi = l.executeTcfApi),
l.addIabFrame()) : l.addBackwardIabFrame(),
t.receiveOTMessage = l.receiveIabMessage,
(t.attachEvent || window.addEventListener)("message", t.receiveOTMessage, !1)
}
,
this.addIabFrame = function() {
var t = window
, e = "IAB" === l.iabType ? "__cmpLocator" : "__tcfapiLocator";
!t.frames[e] && (t.document.body ? l.addLocator(e, "CMP") : setTimeout(l.addIabFrame, 5))
}
,
this.addBackwardIabFrame = function() {
var t = window
, e = "__cmpLocator"
, e = (!!t.frames[e] || (t.document.body ? l.addLocator(e, "CMP") : setTimeout(l.addIabFrame, 5)),
"__tcfapiLocator");
!t.frames[e] && (t.document.body ? l.addLocator(e, "TCF") : setTimeout(l.addIabFrame, 5))
}
,
this.addLocator = function(t, e) {
var i = window
, n = i.document.createElement("iframe");
p(n, "display: none;", !0),
n.name = t,
n.setAttribute("title", e + " Locator"),
i.document.body.appendChild(n)
}
,
this.receiveIabMessage = function(i) {
var n, a, o, s, t, e, r = "string" == typeof i.data, p = {};
try {
p = r ? JSON.parse(i.data) : i.data
} catch (t) {}
p.__cmpCall && "IAB" === l.iabType ? (n = p.__cmpCall.callId,
a = p.__cmpCall.command,
t = p.__cmpCall.parameter,
l.executeCmpApi(a, t, function(t, e) {
t = {
__cmpReturn: {
returnValue: t,
success: e,
callId: n,
command: a
}
};
i.source.postMessage(r ? JSON.stringify(t) : t, i.origin)
})) : p.__cmpCall && "IAB2" === l.iabType && console.log("Expecting IAB TCF v2.0 vendor iFrame call; Received IAB TCF v1.1"),
p.__tcfapiCall && "IAB2" === l.iabType ? (o = p.__tcfapiCall.callId,
s = p.__tcfapiCall.command,
t = p.__tcfapiCall.parameter,
e = p.__tcfapiCall.version,
l.executeTcfApi(s, t, function(t, e) {
t = {
__tcfapiReturn: {
returnValue: t,
success: e,
callId: o,
command: s
}
};
i && i.source && i.source.postMessage && i.source.postMessage(r ? JSON.stringify(t) : t, "*")
}, e)) : p.__tcfapiCall && "IAB" === l.iabType && console.log("Expecting IAB TCF v1.1 vendor iFrame call; Received IAB TCF v2.0")
}
,
this.executeCmpApi = function() {
for (var t = [], e = 0; e < arguments.length; e++)
t[e] = arguments[e];
l.iabType = "IAB";
var i = t[0]
, n = t[1]
, a = t[2];
if ("function" == typeof a && i)
if (u.isStubReady && u.IABCookieValue)
switch (i) {
case "ping":
l.getPingRequest(a, !0);
break;
case "getConsentData":
l.getConsentDataRequest(a);
break;
default:
l.addToQueue(i, n, a)
}
else
l.addToQueue(i, n, a)
}
,
this.executeTcfApi = function() {
for (var t = [], e = 0; e < arguments.length; e++)
t[e] = arguments[e];
if (l.iabType = "IAB2",
!t.length)
return window.__tcfapi.a || [];
var i = t[0]
, n = t[1]
, a = t[2]
, o = t[3];
"function" == typeof a && i && ("ping" === i ? l.getPingRequest(a) : l.addToQueue(i, n, a, o))
}
,
this.addToQueue = function(t, e, i, n) {
var a = window
, o = "IAB" === l.iabType ? "__cmp" : "__tcfapi";
a[o].a = a[o].a || [],
a[o].a.push([t, e, i, n])
}
,
this.getPingRequest = function(t, e) {
var i, n;
void 0 === e && (e = !1),
t && (n = !(i = {}),
"IAB" === l.iabType ? (i = {
gdprAppliesGlobally: u.oneTrustIABgdprAppliesGlobally,
cmpLoaded: e
},
n = !0) : "IAB2" === l.iabType && (i = {
gdprApplies: u.oneTrustIABgdprAppliesGlobally,
cmpLoaded: !1,
cmpStatus: "stub",
displayStatus: "stub",
apiVersion: "2.0",
cmpVersion: void 0,
cmpId: void 0,
gvlVersion: void 0,
tcfPolicyVersion: void 0
},
n = !0),
t(i, n))
}
,
this.getConsentDataRequest = function(t) {
t && u.IABCookieValue && t({
gdprApplies: u.oneTrustIABgdprAppliesGlobally,
hasGlobalScope: u.hasIABGlobalScope,
consentData: u.IABCookieValue
}, !0)
}
,
this.initConsentSDK()
var m = new l;
return t.OtSDKStub = l,
t.otSdkStub = m,
// DO NOT MODIFY THIS FILE DIRECTLY
// If you do, your changes will be overwritten and lost. Instead, make your changes to
// the appropriate files in the js folder, then run Grunt to generate this file.
// Instructions for running Grunt are in the readme file at the project root.
// GET ELEMENT BY ID
function id(el){
return document.getElementById(el);
function hasClass(el, className) {
if (el.classList){
return el.classList.contains(className);
else if (el.className) {
return !!el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)'));
return false;
function addClass(el, className) {
if (el.classList){
el.classList.add(className);
else if (!hasClass(el, className)){
el.className += " " + className;
function removeClass(el, className) {
if (el.classList){
el.classList.remove(className);
else if (hasClass(el, className)) {
var reg = new RegExp('(\\s|^)' + className + '(\\s|$)');
el.className=el.className.replace(reg, ' ');
function closest(el, className) {
while (el && !hasClass(el, className)) {
el = el.parentNode;
return el;
* Debounce
// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds. If `immediate` is passed, trigger the function on the
// leading edge, instead of the trailing.
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this,
args = arguments;
var later = function() {
timeout = null;
if (!immediate) {
func.apply(context, args);
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) {
func.apply(context, args);
//Returns the difference between two strings "a" and "b", assuming "b" contains a subsequence containing
//all of the letters in "a" in the same order
function getStringDifference(a, b) {
var i = 0;
var j = 0;
var result = "";
while (j < b.length)
if (a[i] != b[j] || i == a.length)
result += b[j];
return result;
function dropDecimal(price) {
//Drop decimal if ".00" or keep as it is
return parseFloat(price) - parseInt(price) > 0 ? parseFloat(price) : parseInt(price);
function getPriceWithCommas(price) {
var splitPrice = price.toString().split(".");
splitPrice[0] = splitPrice[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return splitPrice.join(".");
function allArrayElementsEqual(myArray) {
//Check if all the elements in the array are same
if (myArray.length) {
return !!myArray.reduce(function(a, b){ return (a === b) ? a : NaN; });
else {
return false;
function isMobileDevice() {
if (window.innerWidth < 768) {
return true;
return false;
function isLandscapeMode() {
if(window.innerWidth > window.innerHeight) {
return true;
return false;
function isIE() {
if ("navigator" in window) {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
if (msie > 0) {
// IE 10 or older => return version number
//return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
return true;
}
var trident = ua.indexOf('Trident/');
if (trident > 0) {
// IE 11 => return version number
//var rv = ua.indexOf('rv:');
//return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
return true;
}
var edge = ua.indexOf('Edge/');
if (edge > 0) {
// Edge (IE 12+) => return version number
//return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
return true;
}
// other browser
return false;
function isIE10orOlder() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
if (msie > 0) {
// IE 10 or older => return version number
//return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
return true;
//Returns the text with its special characters (
, ©, ®,
) wrapped in <sup></sup>
function superscriptSpecialSymbols(text) {
','©','®','
'].forEach(function(element) {
text = text.split(element).join( "<sup>" + element + "</sup>" );
return text;
//Eg: sectionSelector = ".content-wrap", parentSectionSelector = ".responsiveColumnControl"
// The height of the tallest .content-wrap in each .responsiveColumnControl is added to all .content-wrap sections under that ".responsiveColumnControl"
function matchSectionHeights(sectionSelector, parentSectionSelector) {
if ($(window).width() > 767) {
var selectedResponsiveColumnControls = $(parentSectionSelector).has(sectionSelector);
for (var i = 0; i < selectedResponsiveColumnControls.length; i++) {
var currentContainer = selectedResponsiveColumnControls[i];
var sections = currentContainer.querySelectorAll(sectionSelector);
if (sections.length > 1) {
var sectionHeightArray = [];
for (var j = 0; j < sections.length; j++) {
$(sections[j]).css("min-height","auto");
sectionHeightArray[j] = $(sections[j]).outerHeight();
if (!allArrayElementsEqual(sectionHeightArray)) {
var sectionMaxHeight = Math.max.apply(Math,sectionHeightArray);
//var elementWithMaxHeight = sectionHeightArray.indexOf(sectionMaxHeight);
if (sectionMaxHeight > 0) {