/*! Idle Timer v1.0.1 2014-03-21 | https://github.com/thorst/jquery-idletimer | (c) 2014 Paul Irish | Licensed MIT */
!function (a) { a.idleTimer = function (b, c) { var d; "object" == typeof b ? (d = b, b = null) : "number" == typeof b && (d = { timeout: b }, b = null), c = c || document, d = a.extend({ idle: !1, timeout: 3e4, events: "mousemove keydown wheel DOMMouseScroll mousewheel mousedown touchstart touchmove MSPointerDown MSPointerMove" }, d); var e = a(c), f = e.data("idleTimerObj") || {}, g = function (b) { var d = a.data(c, "idleTimerObj") || {}; d.idle = !d.idle, d.olddate = +new Date; var e = a.Event((d.idle ? "idle" : "active") + ".idleTimer"); a(c).trigger(e, [c, a.extend({}, d), b]) }, h = function (b) { var d = a.data(c, "idleTimerObj") || {}; if (null == d.remaining) { if ("mousemove" === b.type) { if (b.pageX === d.pageX && b.pageY === d.pageY) return; if ("undefined" == typeof b.pageX && "undefined" == typeof b.pageY) return; var e = +new Date - d.olddate; if (200 > e) return } clearTimeout(d.tId), d.idle && g(b), d.lastActive = +new Date, d.pageX = b.pageX, d.pageY = b.pageY, d.tId = setTimeout(g, d.timeout) } }, i = function () { var b = a.data(c, "idleTimerObj") || {}; b.idle = b.idleBackup, b.olddate = +new Date, b.lastActive = b.olddate, b.remaining = null, clearTimeout(b.tId), b.idle || (b.tId = setTimeout(g, b.timeout)) }, j = function () { var b = a.data(c, "idleTimerObj") || {}; null == b.remaining && (b.remaining = b.timeout - (+new Date - b.olddate), clearTimeout(b.tId)) }, k = function () { var b = a.data(c, "idleTimerObj") || {}; null != b.remaining && (b.idle || (b.tId = setTimeout(g, b.remaining)), b.remaining = null) }, l = function () { var b = a.data(c, "idleTimerObj") || {}; clearTimeout(b.tId), e.removeData("idleTimerObj"), e.off("._idleTimer") }, m = function () { var b = a.data(c, "idleTimerObj") || {}; if (b.idle) return 0; if (null != b.remaining) return b.remaining; var d = b.timeout - (+new Date - b.lastActive); return 0 > d && (d = 0), d }; if (null === b && "undefined" != typeof f.idle) return i(), e; if (null === b); else { if (null !== b && "undefined" == typeof f.idle) return !1; if ("destroy" === b) return l(), e; if ("pause" === b) return j(), e; if ("resume" === b) return k(), e; if ("reset" === b) return i(), e; if ("getRemainingTime" === b) return m(); if ("getElapsedTime" === b) return +new Date - f.olddate; if ("getLastActiveTime" === b) return f.lastActive; if ("isIdle" === b) return f.idle } return e.on(a.trim((d.events + " ").split(" ").join("._idleTimer ")), function (a) { h(a) }), f = a.extend({}, { olddate: +new Date, lastActive: +new Date, idle: d.idle, idleBackup: d.idle, timeout: d.timeout, remaining: null, tId: null, pageX: null, pageY: null }), f.idle || (f.tId = setTimeout(g, f.timeout)), a.data(c, "idleTimerObj", f), e }, a.fn.idleTimer = function (b) { return this[0] ? a.idleTimer(b, this[0]) : this } }(jQuery);