/*! jQuery Mobile v1.4.5 | Copyright 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */
(function (e, t, n) {
typeof define == "function" && define.amd ? define(["jquery"], function (r) {
return n(r, e, t), r.mobile
}) : n(e.jQuery, e, t)
})(this, document, function (e, t, n, r) {
(function (e, t, n, r) {
function T(e) {
while (e && typeof e.originalEvent != "undefined")e = e.originalEvent;
return e
}
function N(t, n) {
var i = t.type, s, o, a, l, c, h, p, d, v;
t = e.Event(t), t.type = n, s = t.originalEvent, o = e.event.props, i.search(/^(mouse|click)/) > -1 && (o = f);
if (s)for (p = o.length, l; p;)l = o[--p], t[l] = s[l];
i.search(/mouse(down|up)|click/) > -1 && !t.which && (t.which = 1);
if (i.search(/^touch/) !== -1) {
a = T(s), i = a.touches, c = a.changedTouches, h = i && i.length ? i[0] : c && c.length ? c[0] : r;
if (h)for (d = 0, v = u.length; d < v; d++)l = u[d], t[l] = h[l]
}
return t
}
function C(t) {
var n = {}, r, s;
while (t) {
r = e.data(t, i);
for (s in r)r[s] && (n[s] = n.hasVirtualBinding = !0);
t = t.parentNode
}
return n
}
function k(t, n) {
var r;
while (t) {
r = e.data(t, i);
if (r && (!n || r[n]))return t;
t = t.parentNode
}
return null
}
function L() {
g = !1
}
function A() {
g = !0
}
function O() {
E = 0, v.length = 0, m = !1, A()
}
function M() {
L()
}
function _() {
D(), c = setTimeout(function () {
c = 0, O()
}, e.vmouse.resetTimerDuration)
}
function D() {
c && (clearTimeout(c), c = 0)
}
function P(t, n, r) {
var i;
if (r && r[t] || !r && k(n.target, t))i = N(n, t), e(n.target).trigger(i);
return i
}
function H(t) {
var n = e.data(t.target, s), r;
!m && (!E || E !== n) && (r = P("v" + t.type, t), r && (r.isDefaultPrevented() && t.preventDefault(), r.isPropagationStopped() && t.stopPropagation(), r.isImmediatePropagationStopped() && t.stopImmediatePropagation()))
}
function B(t) {
var n = T(t).touches, r, i, o;
n && n.length === 1 && (r = t.target, i = C(r), i.hasVirtualBinding && (E = w++, e.data(r, s, E), D(), M(), d = !1, o = T(t).touches[0], h = o.pageX, p = o.pageY, P("vmouseover", t, i), P("vmousedown", t, i)))
}
function j(e) {
if (g)return;
d || P("vmousecancel", e, C(e.target)), d = !0, _()
}
function F(t) {
if (g)return;
var n = T(t).touches[0], r = d, i = e.vmouse.moveDistanceThreshold, s = C(t.target);
d = d || Math.abs(n.pageX - h) > i || Math.abs(n.pageY - p) > i, d && !r && P("vmousecancel", t, s), P("vmousemove", t, s), _()
}
function I(e) {
if (g)return;
A();
var t = C(e.target), n, r;
P("vmouseup", e, t), d || (n = P("vclick", e, t), n && n.isDefaultPrevented() && (r = T(e).changedTouches[0], v.push({
touchID: E,
x: r.clientX,
y: r.clientY
}), m = !0)), P("vmouseout", e, t), d = !1, _()
}
function q(t) {
var n = e.data(t, i), r;
if (n)for (r in n)if (n[r])return !0;
return !1
}
function R() {
}
function U(t) {
var n = t.substr(1);
return {
setup: function () {
q(this) || e.data(this, i, {});
var r = e.data(this, i);
r[t] = !0, l[t] = (l[t] || 0) + 1, l[t] === 1 && b.bind(n, H), e(this).bind(n, R), y && (l.touchstart = (l.touchstart || 0) + 1, l.touchstart === 1 && b.bind("touchstart", B).bind("touchend", I).bind("touchmove", F).bind("scroll", j))
}, teardown: function () {
--l[t], l[t] || b.unbind(n, H), y && (--l.touchstart, l.touchstart || b.unbind("touchstart", B).unbind("touchmove", F).unbind("touchend", I).unbind("scroll", j));
var r = e(this), s = e.data(this, i);
s && (s[t] = !1), r.unbind(n, R), q(this) || r.removeData(i)
}
}
}
var i = "virtualMouseBindings", s = "virtualTouchID", o = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "), u = "clientX clientY pageX pageY screenX screenY".split(" "), a = e.event.mouseHooks ? e.event.mouseHooks.props : [], f = e.event.props.concat(a), l = {}, c = 0, h = 0, p = 0, d = !1, v = [], m = !1, g = !1, y = "addEventListener" in n, b = e(n), w = 1, E = 0, S, x;
e.vmouse = {moveDistanceThreshold: 10, clickDistanceThreshold: 10, resetTimerDuration: 1500};
for (x = 0; x < o.length; x++)e.event.special[o[x]] = U(o[x]);
y && n.addEventListener("click", function (t) {
var n = v.length, r = t.target, i, o, u, a, f, l;
if (n) {
i = t.clientX, o = t.clientY, S = e.vmouse.clickDistanceThreshold, u = r;
while (u) {
for (a = 0; a < n; a++) {
f = v[a], l = 0;
if (u === r && Math.abs(f.x - i) < S && Math.abs(f.y - o) < S || e.data(u, s) === f.touchID) {
t.preventDefault(), t.stopPropagation();
return
}
}
u = u.parentNode
}
}
}, !0)
})(e, t, n), function (e) {
e.mobile = {}
}(e), function (e, t) {
var r = {touch: "ontouchend" in n};
e.mobile.support = e.mobile.support || {}, e.extend(e.support, r), e.extend(e.mobile.support, r)
}(e), function (e, t, r) {
function l(t, n, i, s) {
var o = i.type;
i.type = n, s ? e.event.trigger(i, r, t) : e.event.dispatch.call(t, i), i.type = o
}
var i = e(n), s = e.mobile.support.touch, o = "touchmove scroll", u = s ? "touchstart" : "mousedown", a = s ? "touchend" : "mouseup", f = s ? "touchmove" : "mousemove";
e.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "), function (t, n) {
e.fn[n] = function (e) {
return e ? this.bind(n, e) : this.trigger(n)
}, e.attrFn && (e.attrFn[n] = !0)
}), e.event.special.scrollstart = {
enabled: !0, setup: function () {
function s(e, n) {
r = n, l(t, r ? "scrollstart" : "scrollstop", e)
}
var t = this, n = e(t), r, i;
n.bind(o, function (t) {
if (!e.event.special.scrollstart.enabled)return;
r || s(t, !0), clearTimeout(i), i = setTimeout(function () {
s(t, !1)
}, 50)
})
}, teardown: function () {
e(this).unbind(o)
}
}, e.event.special.tap = {
tapholdThreshold: 750, emitTapOnTaphold: !0, setup: function () {
var t = this, n = e(t), r = !1;
n.bind("vmousedown", function (s) {
function a() {
clearTimeout(u)
}
function f() {
a(), n.unbind("vclick", c).unbind("vmouseup", a), i.unbind("vmousecancel", f)
}
function c(e) {
f(), !r && o === e.target ? l(t, "tap", e) : r && e.preventDefault()
}
r = !1;
if (s.which && s.which !== 1)return !1;
var o = s.target, u;
n.bind("vmouseup", a).bind("vclick", c), i.bind("vmousecancel", f), u = setTimeout(function () {
e.event.special.tap.emitTapOnTaphold || (r = !0), l(t, "taphold", e.Event("taphold", {target: o}))
}, e.event.special.tap.tapholdThreshold)
})
}, teardown: function () {
e(this).unbind("vmousedown").unbind("vclick").unbind("vmouseup"), i.unbind("vmousecancel")
}
}, e.event.special.swipe = {
scrollSupressionThreshold: 30,
durationThreshold: 1e3,
horizontalDistanceThreshold: 30,
verticalDistanceThreshold: 30,
getLocation: function (e) {
var n = t.pageXOffset, r = t.pageYOffset, i = e.clientX, s = e.clientY;
if (e.pageY === 0 && Math.floor(s) > Math.floor(e.pageY) || e.pageX === 0 && Math.floor(i) > Math.floor(e.pageX))i -= n, s -= r; else if (s < e.pageY - r || i < e.pageX - n)i = e.pageX - n, s = e.pageY - r;
return {x: i, y: s}
},
start: function (t) {
var n = t.originalEvent.touches ? t.originalEvent.touches[0] : t, r = e.event.special.swipe.getLocation(n);
return {time: (new Date).getTime(), coords: [r.x, r.y], origin: e(t.target)}
},
stop: function (t) {
var n = t.originalEvent.touches ? t.originalEvent.touches[0] : t, r = e.event.special.swipe.getLocation(n);
return {time: (new Date).getTime(), coords: [r.x, r.y]}
},
handleSwipe: function (t, n, r, i) {
if (n.time - t.time < e.event.special.swipe.durationThreshold && Math.abs(t.coords[0] - n.coords[0]) > e.event.special.swipe.horizontalDistanceThreshold && Math.abs(t.coords[1] - n.coords[1]) < e.event.special.swipe.verticalDistanceThreshold) {
var s = t.coords[0] > n.coords[0] ? "swipeleft" : "swiperight";
return l(r, "swipe", e.Event("swipe", {
target: i,
swipestart: t,
swipestop: n
}), !0), l(r, s, e.Event(s, {target: i, swipestart: t, swipestop: n}), !0), !0
}
return !1
},
eventInProgress: !1,
setup: function () {
var t, n = this, r = e(n), s = {};
t = e.data(this, "mobile-events"), t || (t = {length: 0}, e.data(this, "mobile-events", t)), t.length++, t.swipe = s, s.start = function (t) {
if (e.event.special.swipe.eventInProgress)return;
e.event.special.swipe.eventInProgress = !0;
var r, o = e.event.special.swipe.start(t), u = t.target, l = !1;
s.move = function (t) {
if (!o || t.isDefaultPrevented())return;
r = e.event.special.swipe.stop(t), l || (l = e.event.special.swipe.handleSwipe(o, r, n, u), l && (e.event.special.swipe.eventInProgress = !1)), Math.abs(o.coords[0] - r.coords[0]) > e.event.special.swipe.scrollSupressionThreshold && t.preventDefault()
}, s.stop = function () {
l = !0, e.event.special.swipe.eventInProgress = !1, i.off(f, s.move), s.move = null
}, i.on(f, s.move).one(a, s.stop)
}, r.on(u, s.start)
},
teardown: function () {
var t, n;
t = e.data(this, "mobile-events"), t && (n = t.swipe, delete t.swipe, t.length--, t.length === 0 && e.removeData(this, "mobile-events")), n && (n.start && e(this).off(u, n.start), n.move && i.off(f, n.move), n.stop && i.off(a, n.stop))
}
}, e.each({
scrollstop: "scrollstart",
taphold: "tap",
swipeleft: "swipe.left",
swiperight: "swipe.right"
}, function (t, n) {
e.event.special[t] = {
setup: function () {
e(this).bind(n, e.noop)
}, teardown: function () {
e(this).unbind(n)
}
}
})
}(e, this)
});