(function ($) { $.fn.jqzoom = function (options) { var settings = { zoomType: "standard", zoomWidth: 200, zoomHeight: 200, xOffset: 10, yOffset: 0, position: "right", lens: true, lensReset: false, imageOpacity: 0.2, title: true, alwaysOn: false, showEffect: "show", hideEffect: "hide", fadeinSpeed: "fast", fadeoutSpeed: "slow", preloadImages: true, showPreload: true, preloadText: "Loading zoom", preloadPosition: "center" }; options = options || {}; $.extend(settings, options); return this.each(function () { var a = $(this); var aTitle = a.attr("title"); $(a).removeAttr("title"); $(a).css("outline-style", "none"); var img = $("img", this); var imageTitle = img.attr("title"); img.removeAttr("title"); var smallimage = new Smallimage(img); var smallimagedata = {}; var btop = 0; var bleft = 0; var loader = null; loader = new Loader(); var ZoomTitle = (trim(aTitle).length > 0) ? aTitle : (trim(imageTitle).length > 0) ? imageTitle : null; var ZoomTitleObj = new zoomTitle(); var largeimage = new Largeimage(a[0].href); var lens = new Lens(); var lensdata = {}; var largeimageloaded = false; var scale = {}; var stage = null; var running = false; var mousepos = {}; var firstime = 0; var preloadshow = false; var isMouseDown = false; var dragstatus = false; smallimage.loadimage(); $(this).click(function () { return false }); $(this).hover(function (e) { mousepos.x = e.pageX; mousepos.y = e.pageY; activate() }, function () { deactivate() }); if (settings.alwaysOn) { setTimeout(function () { activate() }, 150) } function activate() { if (!running) { smallimage.findborder(); running = true; imageTitle = img.attr("title"); img.removeAttr("title"); aTitle = a.attr("title"); $(a).removeAttr("title"); largeimage = new Largeimage(a[0].href); largeimage.loadimage(); a[0].blur(); return false } } function deactivate() { if (settings.zoomType == "reverse" && !settings.alwaysOn) { img.css({ opacity: 1 }) } if (!settings.alwaysOn) { running = false; largeimageloaded = false; $(lens.node).unbind("mousemove"); lens.remove(); if ($("div.jqZoomWindow").length > 0) { stage.remove() } if ($("div.jqZoomTitle").length > 0) { ZoomTitleObj.remove() } img.attr("title", imageTitle); a.attr("title", aTitle); $().unbind(); a.unbind("mousemove"); firstime = 0; if (jQuery(".zoom_ieframe").length > 0) { jQuery(".zoom_ieframe").remove() } } else { if (settings.lensReset) { switch (settings.zoomType) { case "innerzoom": largeimage.setcenter(); break; default: lens.center(); break } } } if (settings.alwaysOn) { activate() } } function Smallimage(image) { this.node = image[0]; this.loadimage = function () { this.node.src = image[0].src }; this.findborder = function () { var bordertop = ""; bordertop = $(img).css("border-top-width"); btop = ""; var borderleft = ""; borderleft = $(img).css("border-left-width"); bleft = ""; if (bordertop) { for (i = 0; i < 3; i++) { var x = []; x = bordertop.substr(i, 1); if (isNaN(x) == false) { btop = btop + "" + bordertop.substr(i, 1) } else { break } } } if (borderleft) { for (i = 0; i < 3; i++) { if (!isNaN(borderleft.substr(i, 1))) { bleft = bleft + borderleft.substr(i, 1) } else { break } } } btop = (btop.length > 0) ? eval(btop) : 0; bleft = (bleft.length > 0) ? eval(bleft) : 0 }; this.node.onload = function () { a.css({ cursor: "crosshair" }); if (a.css("position") != "absolute" && a.parent().css("position")) { a.css({ cursor: "crosshair", position: "relative" }) } if (a.parent().css("position") != "absolute") { a.parent().css("position", "relative") } else {} if ($.browser.safari || $.browser.opera) { $(img).css({ position: "absolute", top: "0px", left: "0px" }) } smallimagedata.w = $(this).width(); smallimagedata.h = $(this).height(); smallimagedata.h = $(this).height(); smallimagedata.pos = $(this).offset(); smallimagedata.pos.l = $(this).offset().left; smallimagedata.pos.t = $(this).offset().top; smallimagedata.pos.r = smallimagedata.w + smallimagedata.pos.l; smallimagedata.pos.b = smallimagedata.h + smallimagedata.pos.t; a.height(smallimagedata.h); a.width(smallimagedata.w); if (settings.preloadImages) { largeimage.loadimage() } }; return this } function Lens() { this.node = document.createElement("div"); $(this.node).addClass("jqZoomPup"); this.node.onerror = function () { $(lens.node).remove(); lens = new Lens(); lens.activate() }; this.loadlens = function () { switch (settings.zoomType) { case "reverse": this.image = new Image(); this.image.src = smallimage.node.src; this.node.appendChild(this.image); $(this.node).css({ opacity: 1 }); break; case "innerzoom": this.image = new Image(); this.image.src = largeimage.node.src; this.node.appendChild(this.image); $(this.node).css({ opacity: 1 }); break; default: break } switch (settings.zoomType) { case "innerzoom": lensdata.w = smallimagedata.w; lensdata.h = smallimagedata.h; break; default: lensdata.w = (settings.zoomWidth) / scale.x; lensdata.h = (settings.zoomHeight) / scale.y; break } $(this.node).css({ width: lensdata.w + "px", height: lensdata.h + "px", position: "absolute", display: "none", borderWidth: 1 + "px" }); a.append(this.node) }; return this } Lens.prototype.activate = function () { this.loadlens(); switch (settings.zoomType) { case "reverse": img.css({ opacity: settings.imageOpacity }); (settings.alwaysOn) ? lens.center() : lens.setposition(null); a.bind("mousemove", function (e) { mousepos.x = e.pageX; mousepos.y = e.pageY; lens.setposition(e) }); break; case "innerzoom": $(this.node).css({ top: 0, left: 0 }); if (settings.title) { ZoomTitleObj.loadtitle() } largeimage.setcenter(); a.bind("mousemove", function (e) { mousepos.x = e.pageX; mousepos.y = e.pageY; largeimage.setinner(e) }); break; default: (settings.alwaysOn) ? lens.center() : lens.setposition(null); $(a).bind("mousemove", function (e) { mousepos.x = e.pageX; mousepos.y = e.pageY; lens.setposition(e) }); break } return this }; Lens.prototype.setposition = function (e) { if (e) { mousepos.x = e.pageX; mousepos.y = e.pageY } if (firstime == 0) { var lensleft = (smallimagedata.w) / 2 - (lensdata.w) / 2; var lenstop = (smallimagedata.h) / 2 - (lensdata.h) / 2; $("div.jqZoomPup").show(); if (settings.lens) { this.node.style.visibility = "visible" } else { this.node.style.visibility = "hidden"; $("div.jqZoomPup").hide() } firstime = 1 } else { var lensleft = mousepos.x - smallimagedata.pos.l - (lensdata.w) / 2; var lenstop = mousepos.y - smallimagedata.pos.t - (lensdata.h) / 2 } if (overleft()) { lensleft = 0 + bleft } else { if (overright()) { if ($.browser.msie) { lensleft = smallimagedata.w - lensdata.w + bleft + 1 } else { lensleft = smallimagedata.w - lensdata.w + bleft - 1 } } } if (overtop()) { lenstop = 0 + btop } else { if (overbottom()) { if ($.browser.msie) { lenstop = smallimagedata.h - lensdata.h + btop + 1 } else { lenstop = smallimagedata.h - lensdata.h - 1 + btop } } } lensleft = parseInt(lensleft); lenstop = parseInt(lenstop); $("div.jqZoomPup", a).css({ top: lenstop, left: lensleft }); if (settings.zoomType == "reverse") { $("div.jqZoomPup img", a).css({ position: "absolute", top: -(lenstop - btop + 1), left: -(lensleft - bleft + 1) }) } this.node.style.left = lensleft + "px"; this.node.style.top = lenstop + "px"; largeimage.setposition(); function overleft() { return mousepos.x - (lensdata.w + 2 * 1) / 2 - bleft < smallimagedata.pos.l } function overright() { return mousepos.x + (lensdata.w + 2 * 1) / 2 > smallimagedata.pos.r + bleft } function overtop() { return mousepos.y - (lensdata.h + 2 * 1) / 2 - btop < smallimagedata.pos.t } function overbottom() { return mousepos.y + (lensdata.h + 2 * 1) / 2 > smallimagedata.pos.b + btop } return this }; Lens.prototype.center = function () { $("div.jqZoomPup", a).css("display", "none"); var lensleft = (smallimagedata.w) / 2 - (lensdata.w) / 2; var lenstop = (smallimagedata.h) / 2 - (lensdata.h) / 2; this.node.style.left = lensleft + "px"; this.node.style.top = lenstop + "px"; $("div.jqZoomPup", a).css({ top: lenstop, left: lensleft }); if (settings.zoomType == "reverse") { $("div.jqZoomPup img", a).css({ position: "absolute", top: -(lenstop - btop + 1), left: -(lensleft - bleft + 1) }) } largeimage.setposition(); if ($.browser.msie) { $("div.jqZoomPup", a).show() } else { setTimeout(function () { $("div.jqZoomPup").fadeIn("fast") }, 10) } }; Lens.prototype.getoffset = function () { var o = {}; o.left = parseInt(this.node.style.left); o.top = parseInt(this.node.style.top); return o }; Lens.prototype.remove = function () { if (settings.zoomType == "innerzoom") { $("div.jqZoomPup", a).fadeOut("fast", function () { $(this).remove() }) } else { $("div.jqZoomPup", a).remove() } }; Lens.prototype.findborder = function () { var bordertop = ""; bordertop = $("div.jqZoomPup").css("borderTop"); lensbtop = ""; var borderleft = ""; borderleft = $("div.jqZoomPup").css("borderLeft"); lensbleft = ""; if ($.browser.msie) { var temp = bordertop.split(" "); bordertop = temp[1]; var temp = borderleft.split(" "); borderleft = temp[1] } if (bordertop) { for (i = 0; i < 3; i++) { var x = []; x = bordertop.substr(i, 1); if (isNaN(x) == false) { lensbtop = lensbtop + "" + bordertop.substr(i, 1) } else { break } } } if (borderleft) { for (i = 0; i < 3; i++) { if (!isNaN(borderleft.substr(i, 1))) { lensbleft = lensbleft + borderleft.substr(i, 1) } else { break } } } lensbtop = (lensbtop.length > 0) ? eval(lensbtop) : 0; lensbleft = (lensbleft.length > 0) ? eval(lensbleft) : 0 }; function Largeimage(url) { this.url = url; this.node = new Image(); this.loadimage = function () { if (!this.node) { this.node = new Image() } this.node.style.position = "absolute"; this.node.style.display = "none"; this.node.style.left = "-5000px"; this.node.style.top = "10px"; loader = new Loader(); if (settings.showPreload && !preloadshow) { loader.show(); preloadshow = true } document.body.appendChild(this.node); this.node.src = this.url }; this.node.onload = function () { this.style.display = "block"; var w = Math.round($(this).width()); var h = Math.round($(this).height()); this.style.display = "none"; scale.x = (w / smallimagedata.w); scale.y = (h / smallimagedata.h); if ($("div.preload").length > 0) { $("div.preload").remove() } largeimageloaded = true; if (settings.zoomType != "innerzoom" && running) { stage = new Stage(); stage.activate() } if (running) { lens = new Lens(); lens.activate() } if ($("div.preload").length > 0) { $("div.preload").remove() } }; return this } Largeimage.prototype.setposition = function () { this.node.style.left = Math.ceil(-scale.x * parseInt(lens.getoffset().left) + bleft) + "px"; this.node.style.top = Math.ceil(-scale.y * parseInt(lens.getoffset().top) + btop) + "px" }; Largeimage.prototype.setinner = function (e) { this.node.style.left = Math.ceil(-scale.x * Math.abs(e.pageX - smallimagedata.pos.l)) + "px"; this.node.style.top = Math.ceil(-scale.y * Math.abs(e.pageY - smallimagedata.pos.t)) + "px"; $("div.jqZoomPup img", a).css({ position: "absolute", top: this.node.style.top, left: this.node.style.left }) }; Largeimage.prototype.setcenter = function () { this.node.style.left = Math.ceil(-scale.x * Math.abs((smallimagedata.w) / 2)) + "px"; this.node.style.top = Math.ceil(-scale.y * Math.abs((smallimagedata.h) / 2)) + "px"; $("div.jqZoomPup img", a).css({ position: "absolute", top: this.node.style.top, left: this.node.style.left }) }; function Stage() { var leftpos = smallimagedata.pos.l; var toppos = smallimagedata.pos.t; this.node = document.createElement("div"); $(this.node).addClass("jqZoomWindow"); $(this.node).css({ position: "absolute", width: Math.round(settings.zoomWidth) + "px", height: Math.round(settings.zoomHeight) + "px", display: "none", zIndex: 10000, overflow: "hidden" }); switch (settings.position) { case "right": leftpos = (smallimagedata.pos.r + Math.abs(settings.xOffset) + settings.zoomWidth < screen.width) ? (smallimagedata.pos.l + smallimagedata.w + Math.abs(settings.xOffset)) : (smallimagedata.pos.l - settings.zoomWidth - Math.abs(settings.xOffset)); topwindow = smallimagedata.pos.t + settings.yOffset + settings.zoomHeight; toppos = (topwindow < screen.height && topwindow > 0) ? smallimagedata.pos.t + settings.yOffset : smallimagedata.pos.t; break; case "left": leftpos = (smallimagedata.pos.l - Math.abs(settings.xOffset) - settings.zoomWidth > 0) ? (smallimagedata.pos.l - Math.abs(settings.xOffset) - settings.zoomWidth) : (smallimagedata.pos.l + smallimagedata.w + Math.abs(settings.xOffset)); topwindow = smallimagedata.pos.t + settings.yOffset + settings.zoomHeight; toppos = (topwindow < screen.height && topwindow > 0) ? smallimagedata.pos.t + settings.yOffset : smallimagedata.pos.t; break; case "top": toppos = (smallimagedata.pos.t - Math.abs(settings.yOffset) - settings.zoomHeight > 0) ? (smallimagedata.pos.t - Math.abs(settings.yOffset) - settings.zoomHeight) : (smallimagedata.pos.t + smallimagedata.h + Math.abs(settings.yOffset)); leftwindow = smallimagedata.pos.l + settings.xOffset + settings.zoomWidth; leftpos = (leftwindow < screen.width && leftwindow > 0) ? smallimagedata.pos.l + settings.xOffset : smallimagedata.pos.l; break; case "bottom": toppos = (smallimagedata.pos.b + Math.abs(settings.yOffset) + settings.zoomHeight < $("body").height()) ? (smallimagedata.pos.b + Math.abs(settings.yOffset)) : (smallimagedata.pos.t - settings.zoomHeight - Math.abs(settings.yOffset)); leftwindow = smallimagedata.pos.l + settings.xOffset + settings.zoomWidth; leftpos = (leftwindow < screen.width && leftwindow > 0) ? smallimagedata.pos.l + settings.xOffset : smallimagedata.pos.l; break; default: leftpos = (smallimagedata.pos.l + smallimagedata.w + settings.xOffset + settings.zoomWidth < screen.width) ? (smallimagedata.pos.l + smallimagedata.w + Math.abs(settings.xOffset)) : (smallimagedata.pos.l - settings.zoomWidth - Math.abs(settings.xOffset)); toppos = (smallimagedata.pos.b + Math.abs(settings.yOffset) + settings.zoomHeight < screen.height) ? (smallimagedata.pos.b + Math.abs(settings.yOffset)) : (smallimagedata.pos.t - settings.zoomHeight - Math.abs(settings.yOffset)); break } this.node.style.left = leftpos + "px"; this.node.style.top = toppos + "px"; return this } Stage.prototype.activate = function () { if (!this.node.firstChild) { this.node.appendChild(largeimage.node) } if (settings.title) { ZoomTitleObj.loadtitle() } document.body.appendChild(this.node); switch (settings.showEffect) { case "show": $(this.node).show(); break; case "fadein": $(this.node).fadeIn(settings.fadeinSpeed); break; default: $(this.node).show(); break } $(this.node).show(); if ($.browser.msie && $.browser.version < 7) { this.ieframe = $('').css({ position: "absolute", left: this.node.style.left, top: this.node.style.top, zIndex: 99, width: settings.zoomWidth, height: settings.zoomHeight }).insertBefore(this.node) } largeimage.node.style.display = "block" }; Stage.prototype.remove = function () { switch (settings.hideEffect) { case "hide": $(".jqZoomWindow").remove(); break; case "fadeout": $(".jqZoomWindow").fadeOut(settings.fadeoutSpeed); break; default: $(".jqZoomWindow").remove(); break } }; function zoomTitle() { this.node = jQuery("
").addClass("jqZoomTitle").html("" + ZoomTitle + ""); this.loadtitle = function () { if (settings.zoomType == "innerzoom") { $(this.node).css({ position: "absolute", top: smallimagedata.pos.b + 3, left: (smallimagedata.pos.l + 1), width: smallimagedata.w }).appendTo("body") } else { $(this.node).appendTo(stage.node) } } } zoomTitle.prototype.remove = function () { $(".jqZoomTitle").remove() }; function Loader() { this.node = document.createElement("div"); $(this.node).addClass("preload"); $(this.node).html(settings.preloadText); $(this.node).appendTo("body").css("visibility", "hidden"); this.show = function () { switch (settings.preloadPosition) { case "center": loadertop = smallimagedata.pos.t + (smallimagedata.h - $(this.node).height()) / 2; loaderleft = smallimagedata.pos.l + (smallimagedata.w - $(this.node).width()) / 2; break; default: var loaderoffset = this.getoffset(); loadertop = !isNaN(loaderoffset.top) ? smallimagedata.pos.t + loaderoffset.top : smallimagedata.pos.t + 0; loaderleft = !isNaN(loaderoffset.left) ? smallimagedata.pos.l + loaderoffset.left : smallimagedata.pos.l + 0; break } $(this.node).css({ top: loadertop, left: loaderleft, position: "absolute", visibility: "visible" }) }; return this } Loader.prototype.getoffset = function () { var o = null; o = $("div.preload").offset(); return o } }) } })(jQuery); function trim(a) { while (a.substring(0, 1) == " ") { a = a.substring(1, a.length) } while (a.substring(a.length - 1, a.length) == " ") { a = a.substring(0, a.length - 1) } return a }; (function (c) { function i() { this.regional = []; this.regional[""] = { labels: ["Years", "Months", "Weeks", "Days", "Hours", "Minutes", "Seconds"], labels1: ["Year", "Month", "Week", "Day", "Hour", "Minute", "Second"], compactLabels: ["y", "m", "w", "d"], whichLabels: null, timeSeparator: ":", isRTL: false }; this._defaults = { until: null, since: null, timezone: null, serverSync: null, format: "dHMS", layout: "", compact: false, significant: 0, description: "", expiryUrl: "", expiryText: "", alwaysExpire: false, onExpiry: null, onTick: null, tickInterval: 1 }; c.extend(this._defaults, this.regional[""]); this._serverSyncs = [] } var f = "countdown"; var j = 0; var d = 1; var k = 2; var h = 3; var g = 4; var e = 5; var b = 6; c.extend(i.prototype, { markerClassName: "hasCountdown", _timer: setInterval(function () { c.countdown._updateTargets() }, 980), _timerTargets: [], setDefaults: function (l) { this._resetExtraLabels(this._defaults, l); a(this._defaults, l || {}) }, UTCDate: function (p, t, r, l, m, o, q, n) { if (typeof t == "object" && t.constructor == Date) { n = t.getMilliseconds(); q = t.getSeconds(); o = t.getMinutes(); m = t.getHours(); l = t.getDate(); r = t.getMonth(); t = t.getFullYear() } var s = new Date(); s.setUTCFullYear(t); s.setUTCDate(1); s.setUTCMonth(r || 0); s.setUTCDate(l || 1); s.setUTCHours(m || 0); s.setUTCMinutes((o || 0) - (Math.abs(p) < 30 ? p * 60 : p)); s.setUTCSeconds(q || 0); s.setUTCMilliseconds(n || 0); return s }, periodsToSeconds: function (l) { return l[0] * 31557600 + l[1] * 2629800 + l[2] * 604800 + l[3] * 86400 + l[4] * 3600 + l[5] * 60 + l[6] }, _settingsCountdown: function (n, l) { if (!l) { return c.countdown._defaults } var m = c.data(n, f); return (l == "all" ? m.options : m.options[l]) }, _attachCountdown: function (o, m) { var l = c(o); if (l.hasClass(this.markerClassName)) { return } l.addClass(this.markerClassName); var n = { options: c.extend({}, m), _periods: [0, 0, 0, 0, 0, 0, 0] }; c.data(o, f, n); this._changeCountdown(o) }, _addTarget: function (l) { if (!this._hasTarget(l)) { this._timerTargets.push(l) } }, _hasTarget: function (l) { return (c.inArray(l, this._timerTargets) > -1) }, _removeTarget: function (l) { this._timerTargets = c.map(this._timerTargets, function (m) { return (m == l ? null : m) }) }, _updateTargets: function () { for (var l = this._timerTargets.length - 1; l >= 0; l--) { this._updateCountdown(this._timerTargets[l]) } }, _updateCountdown: function (v, t) { var r = c(v); t = t || c.data(v, f); if (!t) { return } r.html(this._generateHTML(t)); r[(this._get(t, "isRTL") ? "add" : "remove") + "Class"]("countdown_rtl"); var s = this._get(t, "onTick"); if (s) { var l = t._hold != "lap" ? t._periods : this._calculatePeriods(t, t._show, this._get(t, "significant"), new Date()); var p = this._get(t, "tickInterval"); if (p == 1 || this.periodsToSeconds(l) % p == 0) { s.apply(v, [l]) } } var m = t._hold != "pause" && (t._since ? t._now.getTime() < t._since.getTime() : t._now.getTime() >= t._until.getTime()); if (m && !t._expiring) { t._expiring = true; if (this._hasTarget(v) || this._get(t, "alwaysExpire")) { this._removeTarget(v); var q = this._get(t, "onExpiry"); if (q) { q.apply(v, []) } var o = this._get(t, "expiryText"); if (o) { var u = this._get(t, "layout"); t.options.layout = o; this._updateCountdown(v, t); t.options.layout = u } var n = this._get(t, "expiryUrl"); if (n) { window.location = n } } t._expiring = false } else { if (t._hold == "pause") { this._removeTarget(v) } } c.data(v, f, t) }, _changeCountdown: function (q, n, p) { n = n || {}; if (typeof n == "string") { var m = n; n = {}; n[m] = p } var o = c.data(q, f); if (o) { this._resetExtraLabels(o.options, n); a(o.options, n); this._adjustSettings(q, o); c.data(q, f, o); var l = new Date(); if ((o._since && o._since < l) || (o._until && o._until > l)) { this._addTarget(q) } this._updateCountdown(q, o) } }, _resetExtraLabels: function (n, l) { var m = false; for (var o in l) { if (o != "whichLabels" && o.match(/[Ll]abels/)) { m = true; break } } if (m) { for (var o in n) { if (o.match(/[Ll]abels[0-9]/)) { n[o] = null } } } }, _adjustSettings: function (t, r) { var o; var l = this._get(r, "serverSync"); var q = 0; var m = null; for (var p = 0; p < this._serverSyncs.length; p++) { if (this._serverSyncs[p][0] == l) { m = this._serverSyncs[p][1]; break } } if (m != null) { q = (l ? m : 0); o = new Date() } else { var n = (l ? l.apply(t, []) : null); o = new Date(); q = (n ? o.getTime() - n.getTime() : 0); this._serverSyncs.push([l, q]) } var s = this._get(r, "timezone"); s = (s == null ? -o.getTimezoneOffset() : s); r._since = this._get(r, "since"); if (r._since != null) { r._since = this.UTCDate(s, this._determineTime(r._since, null)); if (r._since && q) { r._since.setMilliseconds(r._since.getMilliseconds() + q) } } r._until = this.UTCDate(s, this._determineTime(this._get(r, "until"), o)); if (q) { r._until.setMilliseconds(r._until.getMilliseconds() + q) } r._show = this._determineShow(r) }, _destroyCountdown: function (m) { var l = c(m); if (!l.hasClass(this.markerClassName)) { return } this._removeTarget(m); l.removeClass(this.markerClassName).empty(); c.removeData(m, f) }, _pauseCountdown: function (l) { this._hold(l, "pause") }, _lapCountdown: function (l) { this._hold(l, "lap") }, _resumeCountdown: function (l) { this._hold(l, null) }, _hold: function (o, n) { var m = c.data(o, f); if (m) { if (m._hold == "pause" && !n) { m._periods = m._savePeriods; var l = (m._since ? "-" : "+"); m[m._since ? "_since" : "_until"] = this._determineTime(l + m._periods[0] + "y" + l + m._periods[1] + "o" + l + m._periods[2] + "w" + l + m._periods[3] + "d" + l + m._periods[4] + "h" + l + m._periods[5] + "m" + l + m._periods[6] + "s"); this._addTarget(o) } m._hold = n; m._savePeriods = (n == "pause" ? m._periods : null); c.data(o, f, m); this._updateCountdown(o, m) } }, _getTimesCountdown: function (m) { var l = c.data(m, f); return (!l ? null : (!l._hold ? l._periods : this._calculatePeriods(l, l._show, this._get(l, "significant"), new Date()))) }, _get: function (m, l) { return (m.options[l] != null ? m.options[l] : c.countdown._defaults[l]) }, _determineTime: function (o, l) { var n = function (r) { var q = new Date(); q.setTime(q.getTime() + r * 1000); return q }; var m = function (s) { s = s.toLowerCase(); var z = new Date(); var w = z.getFullYear(); var u = z.getMonth(); var x = z.getDate(); var r = z.getHours(); var q = z.getMinutes(); var y = z.getSeconds(); var v = /([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g; var t = v.exec(s); while (t) { switch (t[2] || "s") { case "s": y += parseInt(t[1], 10); break; case "m": q += parseInt(t[1], 10); break; case "h": r += parseInt(t[1], 10); break; case "d": x += parseInt(t[1], 10); break; case "w": x += parseInt(t[1], 10) * 7; break; case "o": u += parseInt(t[1], 10); x = Math.min(x, c.countdown._getDaysInMonth(w, u)); break; case "y": w += parseInt(t[1], 10); x = Math.min(x, c.countdown._getDaysInMonth(w, u)); break } t = v.exec(s) } return new Date(w, u, x, r, q, y, 0) }; var p = (o == null ? l : (typeof o == "string" ? m(o) : (typeof o == "number" ? n(o) : o))); if (p) { p.setMilliseconds(0) } return p }, _getDaysInMonth: function (l, m) { return 32 - new Date(l, m, 32).getDate() }, _normalLabels: function (l) { return l }, _generateHTML: function (w) { var u = this._get(w, "significant"); w._periods = (w._hold ? w._periods : this._calculatePeriods(w, w._show, u, new Date())); var m = false; var s = 0; var v = u; var o = c.extend({}, w._show); for (var l = j; l <= b; l++) { m |= (w._show[l] == "?" && w._periods[l] > 0); o[l] = (w._show[l] == "?" && !m ? null : w._show[l]); s += (o[l] ? 1 : 0); v -= (w._periods[l] > 0 ? 1 : 0) } var n = [false, false, false, false, false, false, false]; for (var l = b; l >= j; l--) { if (w._show[l]) { if (w._periods[l]) { n[l] = true } else { n[l] = v > 0; v-- } } } var A = this._get(w, "compact"); var y = this._get(w, "layout"); var x = (A ? this._get(w, "compactLabels") : this._get(w, "labels")); var r = this._get(w, "whichLabels") || this._normalLabels; var q = this._get(w, "timeSeparator"); var p = this._get(w, "description") || ""; var z = function (C) { var B = c.countdown._get(w, "compactLabels" + r(w._periods[C])); return (o[C] ? w._periods[C] + (B ? B[C] : x[C]) + " " : "") }; var t = function (C) { var B = c.countdown._get(w, "labels" + r(w._periods[C])); return ((!u && o[C]) || (u && n[C]) ? '' + w._periods[C] + "