(function ($) { $.fn.facebookTrafficPop = function (options) { var defaults = { title: "Your Popup Title", message: "Your popup / call to action message!", url: "http://tyler.tc", showfaces: true, timeout: 25, deplay: 0, closeable: false, advancedClose: false, opacity: '25', wait: 0, lang: "en" }; var options = $.extend(defaults, options); defaults.delay = (defaults.delay * 1000); defaults.opacity = '0.' + defaults.opacity; var tstrings = { orwait: { en: "Or wait", fr: "Ou attendre", de: "Order warten", it: "O attendere", es: "O esperar" }, seconds: { en: "Seconds", fr: "Secondes", de: "Sekunden", it: "Secondi", es: "Segundos" }, closeable: { en: "Close", fr: "Fermer", de: "Nähe", it: "Chiudi", es: "Cerrar" } }; setTimeout(function () { getPopHTML = function () { if (defaults.url == 'current') { defaults.url == window.location } var tPop = '
' + defaults.message + '
Close
' + tstrings.orwait[defaults.lang] + ' ' + tstrings.seconds[defaults.lang] + '
'; return tPop }; var markup = getPopHTML(); $(document.body).append(markup); var cook = readCookie('fblikepop'); var waitCook = readCookie('fblikepopwait'); if (cook != 'true' && waitCook != 'true') { var windowWidth = document.documentElement.clientWidth; var windowHeight = document.documentElement.clientHeight; var popupHeight = 500; var popupWidth = $("#fblikepop").width(); $("#fblikepop").css({ "top": "180px", "left": windowWidth / 2 - popupWidth / 2 }); $("#fblikebg").css({ "height": windowHeight }); if (defaults.closeable == true) { $("#closeable").html('' + tstrings.closeable[defaults.lang] + ' x') }; $("#fblikebg").css({ "opacity": defaults.opacity }); $("#fblikebg").fadeIn("slow"); $("#fblikepop").fadeIn("slow"); if (defaults.timeout == '0') { $("#counter-display").hide() } else { $('#counter').countdown({ until: '+' + defaults.timeout + 's', format: 'S', compact: true, description: '', onExpiry: fbLikeDump }) }; if (defaults.wait != 0) { createWait('fblikepopwait', 'true', defaults.wait) }; FB.XFBML.parse() } }, defaults.delay); if (defaults.advancedClose == true) { $(document).keyup(function (e) { if (e.keyCode == 27) { fbLikeDump(false) } }); $('body').click(function () { fbLikeDump(false) }); $('#fblikepop').click(function (event) { event.stopPropagation() }) } return true } })(jQuery); FB.Event.subscribe('edge.create', function (href) { _gaq.push(['_trackSocial', 'facebook', 'like', href]); fbLikeDump(true) }); function fbLikeDump(action) { if (action == true) { createCookie('fblikepop', 'true', 30) }; $("#fblikebg").fadeOut("slow"); $("#fblikepop").fadeOut("slow") }; (function ($) { function Countdown() { 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 }; $.extend(this._defaults, this.regional['']); this._serverSyncs = [] } var w = 'countdown'; var Y = 0; var O = 1; var W = 2; var D = 3; var H = 4; var M = 5; var S = 6; $.extend(Countdown.prototype, { markerClassName: 'hasCountdown', _timer: setInterval(function () { $.countdown._updateTargets() }, 980), _timerTargets: [], setDefaults: function (a) { this._resetExtraLabels(this._defaults, a); extendRemove(this._defaults, a || {}) }, UTCDate: function (a, b, c, e, f, g, h, i) { if (typeof b == 'object' && b.constructor == Date) { i = b.getMilliseconds(); h = b.getSeconds(); g = b.getMinutes(); f = b.getHours(); e = b.getDate(); c = b.getMonth(); b = b.getFullYear() } var d = new Date(); d.setUTCFullYear(b); d.setUTCDate(1); d.setUTCMonth(c || 0); d.setUTCDate(e || 1); d.setUTCHours(f || 0); d.setUTCMinutes((g || 0) - (Math.abs(a) < 30 ? a * 60 : a)); d.setUTCSeconds(h || 0); d.setUTCMilliseconds(i || 0); return d }, periodsToSeconds: function (a) { return a[0] * 31557600 + a[1] * 2629800 + a[2] * 604800 + a[3] * 86400 + a[4] * 3600 + a[5] * 60 + a[6] }, _settingsCountdown: function (a, b) { if (!b) { return $.countdown._defaults } var c = $.data(a, w); return (b == 'all' ? c.options : c.options[b]) }, _attachCountdown: function (a, b) { var c = $(a); if (c.hasClass(this.markerClassName)) { return } c.addClass(this.markerClassName); var d = { options: $.extend({}, b), _periods: [0, 0, 0, 0, 0, 0, 0] }; $.data(a, w, d); this._changeCountdown(a) }, _addTarget: function (a) { if (!this._hasTarget(a)) { this._timerTargets.push(a) } }, _hasTarget: function (a) { return ($.inArray(a, this._timerTargets) > -1) }, _removeTarget: function (b) { this._timerTargets = $.map(this._timerTargets, function (a) { return (a == b ? null : a) }) }, _updateTargets: function () { for (var i = this._timerTargets.length - 1; i >= 0; i--) { this._updateCountdown(this._timerTargets[i]) } }, _updateCountdown: function (a, b) { var c = $(a); b = b || $.data(a, w); if (!b) { return } c.html(this._generateHTML(b)); c[(this._get(b, 'isRTL') ? 'add' : 'remove') + 'Class']('countdown_rtl'); var d = this._get(b, 'onTick'); if (d) { var e = b._hold != 'lap' ? b._periods : this._calculatePeriods(b, b._show, this._get(b, 'significant'), new Date()); var f = this._get(b, 'tickInterval'); if (f == 1 || this.periodsToSeconds(e) % f == 0) { d.apply(a, [e]) } } var g = b._hold != 'pause' && (b._since ? b._now.getTime() < b._since.getTime() : b._now.getTime() >= b._until.getTime()); if (g && !b._expiring) { b._expiring = true; if (this._hasTarget(a) || this._get(b, 'alwaysExpire')) { this._removeTarget(a); var h = this._get(b, 'onExpiry'); if (h) { h.apply(a, []) } var i = this._get(b, 'expiryText'); if (i) { var j = this._get(b, 'layout'); b.options.layout = i; this._updateCountdown(a, b); b.options.layout = j } var k = this._get(b, 'expiryUrl'); if (k) { window.location = k } } b._expiring = false } else if (b._hold == 'pause') { this._removeTarget(a) } $.data(a, w, b) }, _changeCountdown: function (a, b, c) { b = b || {}; if (typeof b == 'string') { var d = b; b = {}; b[d] = c } var e = $.data(a, w); if (e) { this._resetExtraLabels(e.options, b); extendRemove(e.options, b); this._adjustSettings(a, e); $.data(a, w, e); var f = new Date(); if ((e._since && e._since < f) || (e._until && e._until > f)) { this._addTarget(a) } this._updateCountdown(a, e) } }, _resetExtraLabels: function (a, b) { var c = false; for (var n in b) { if (n != 'whichLabels' && n.match(/[Ll]abels/)) { c = true; break } } if (c) { for (var n in a) { if (n.match(/[Ll]abels[0-9]/)) { a[n] = null } } } }, _adjustSettings: function (a, b) { var c; var d = this._get(b, 'serverSync'); var e = 0; var f = null; for (var i = 0; i < this._serverSyncs.length; i++) { if (this._serverSyncs[i][0] == d) { f = this._serverSyncs[i][1]; break } } if (f != null) { e = (d ? f : 0); c = new Date() } else { var g = (d ? d.apply(a, []) : null); c = new Date(); e = (g ? c.getTime() - g.getTime() : 0); this._serverSyncs.push([d, e]) } var h = this._get(b, 'timezone'); h = (h == null ? -c.getTimezoneOffset() : h); b._since = this._get(b, 'since'); if (b._since != null) { b._since = this.UTCDate(h, this._determineTime(b._since, null)); if (b._since && e) { b._since.setMilliseconds(b._since.getMilliseconds() + e) } } b._until = this.UTCDate(h, this._determineTime(this._get(b, 'until'), c)); if (e) { b._until.setMilliseconds(b._until.getMilliseconds() + e) } b._show = this._determineShow(b) }, _destroyCountdown: function (a) { var b = $(a); if (!b.hasClass(this.markerClassName)) { return } this._removeTarget(a); b.removeClass(this.markerClassName).empty(); $.removeData(a, w) }, _pauseCountdown: function (a) { this._hold(a, 'pause') }, _lapCountdown: function (a) { this._hold(a, 'lap') }, _resumeCountdown: function (a) { this._hold(a, null) }, _hold: function (a, b) { var c = $.data(a, w); if (c) { if (c._hold == 'pause' && !b) { c._periods = c._savePeriods; var d = (c._since ? '-' : '+'); c[c._since ? '_since' : '_until'] = this._determineTime(d + c._periods[0] + 'y' + d + c._periods[1] + 'o' + d + c._periods[2] + 'w' + d + c._periods[3] + 'd' + d + c._periods[4] + 'h' + d + c._periods[5] + 'm' + d + c._periods[6] + 's'); this._addTarget(a) } c._hold = b; c._savePeriods = (b == 'pause' ? c._periods : null); $.data(a, w, c); this._updateCountdown(a, c) } }, _getTimesCountdown: function (a) { var b = $.data(a, w); return (!b ? null : (!b._hold ? b._periods : this._calculatePeriods(b, b._show, this._get(b, 'significant'), new Date()))) }, _get: function (a, b) { return (a.options[b] != null ? a.options[b] : $.countdown._defaults[b]) }, _determineTime: function (k, l) { var m = function (a) { var b = new Date(); b.setTime(b.getTime() + a * 1000); return b }; var n = function (a) { a = a.toLowerCase(); var b = new Date(); var c = b.getFullYear(); var d = b.getMonth(); var e = b.getDate(); var f = b.getHours(); var g = b.getMinutes(); var h = b.getSeconds(); var i = /([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g; var j = i.exec(a); while (j) { switch (j[2] || 's') { case 's': h += parseInt(j[1], 10); break; case 'm': g += parseInt(j[1], 10); break; case 'h': f += parseInt(j[1], 10); break; case 'd': e += parseInt(j[1], 10); break; case 'w': e += parseInt(j[1], 10) * 7; break; case 'o': d += parseInt(j[1], 10); e = Math.min(e, $.countdown._getDaysInMonth(c, d)); break; case 'y': c += parseInt(j[1], 10); e = Math.min(e, $.countdown._getDaysInMonth(c, d)); break } j = i.exec(a) } return new Date(c, d, e, f, g, h, 0) }; var o = (k == null ? l : (typeof k == 'string' ? n(k) : (typeof k == 'number' ? m(k) : k))); if (o) o.setMilliseconds(0); return o }, _getDaysInMonth: function (a, b) { return 32 - new Date(a, b, 32).getDate() }, _normalLabels: function (a) { return a }, _generateHTML: function (c) { var d = this._get(c, 'significant'); c._periods = (c._hold ? c._periods : this._calculatePeriods(c, c._show, d, new Date())); var e = false; var f = 0; var g = d; var h = $.extend({}, c._show); for (var i = Y; i <= S; i++) { e |= (c._show[i] == '?' && c._periods[i] > 0); h[i] = (c._show[i] == '?' && !e ? null : c._show[i]); f += (h[i] ? 1 : 0); g -= (c._periods[i] > 0 ? 1 : 0) } var j = [false, false, false, false, false, false, false]; for (var i = S; i >= Y; i--) { if (c._show[i]) { if (c._periods[i]) { j[i] = true } else { j[i] = g > 0; g-- } } } var k = this._get(c, 'compact'); var l = this._get(c, 'layout'); var m = (k ? this._get(c, 'compactLabels') : this._get(c, 'labels')); var n = this._get(c, 'whichLabels') || this._normalLabels; var o = this._get(c, 'timeSeparator'); var p = this._get(c, 'description') || ''; var q = function (a) { var b = $.countdown._get(c, 'compactLabels' + n(c._periods[a])); return (h[a] ? c._periods[a] + (b ? b[a] : m[a]) + ' ' : '') }; var r = function (a) { var b = $.countdown._get(c, 'labels' + n(c._periods[a])); return ((!d && h[a]) || (d && j[a]) ? '' + c._periods[a] + '
' + (b ? b[a] : m[a]) + '
' : '') }; return (l ? this._buildLayout(c, h, l, k, d, j) : ((k ? '' + q(Y) + q(O) + q(W) + q(D) + (h[H] ? this._minDigits(c._periods[H], 2) : '') + (h[M] ? (h[H] ? o : '') + this._minDigits(c._periods[M], 2) : '') + (h[S] ? (h[H] || h[M] ? o : '') + this._minDigits(c._periods[S], 2) : '') : '' + r(Y) + r(O) + r(W) + r(D) + r(H) + r(M) + r(S)) + '' + (p ? '' + p + '' : ''))) }, _buildLayout: function (c, d, e, f, g, h) { var j = this._get(c, (f ? 'compactLabels' : 'labels')); var k = this._get(c, 'whichLabels') || this._normalLabels; var l = function (a) { return ($.countdown._get(c, (f ? 'compactLabels' : 'labels') + k(c._periods[a])) || j)[a] }; var m = function (a, b) { return Math.floor(a / b) % 10 }; var o = { desc: this._get(c, 'description'), sep: this._get(c, 'timeSeparator'), yl: l(Y), yn: c._periods[Y], ynn: this._minDigits(c._periods[Y], 2), ynnn: this._minDigits(c._periods[Y], 3), y1: m(c._periods[Y], 1), y10: m(c._periods[Y], 10), y100: m(c._periods[Y], 100), y1000: m(c._periods[Y], 1000), ol: l(O), on: c._periods[O], onn: this._minDigits(c._periods[O], 2), onnn: this._minDigits(c._periods[O], 3), o1: m(c._periods[O], 1), o10: m(c._periods[O], 10), o100: m(c._periods[O], 100), o1000: m(c._periods[O], 1000), wl: l(W), wn: c._periods[W], wnn: this._minDigits(c._periods[W], 2), wnnn: this._minDigits(c._periods[W], 3), w1: m(c._periods[W], 1), w10: m(c._periods[W], 10), w100: m(c._periods[W], 100), w1000: m(c._periods[W], 1000), dl: l(D), dn: c._periods[D], dnn: this._minDigits(c._periods[D], 2), dnnn: this._minDigits(c._periods[D], 3), d1: m(c._periods[D], 1), d10: m(c._periods[D], 10), d100: m(c._periods[D], 100), d1000: m(c._periods[D], 1000), hl: l(H), hn: c._periods[H], hnn: this._minDigits(c._periods[H], 2), hnnn: this._minDigits(c._periods[H], 3), h1: m(c._periods[H], 1), h10: m(c._periods[H], 10), h100: m(c._periods[H], 100), h1000: m(c._periods[H], 1000), ml: l(M), mn: c._periods[M], mnn: this._minDigits(c._periods[M], 2), mnnn: this._minDigits(c._periods[M], 3), m1: m(c._periods[M], 1), m10: m(c._periods[M], 10), m100: m(c._periods[M], 100), m1000: m(c._periods[M], 1000), sl: l(S), sn: c._periods[S], snn: this._minDigits(c._periods[S], 2), snnn: this._minDigits(c._periods[S], 3), s1: m(c._periods[S], 1), s10: m(c._periods[S], 10), s100: m(c._periods[S], 100), s1000: m(c._periods[S], 1000) }; var p = e; for (var i = Y; i <= S; i++) { var q = 'yowdhms'.charAt(i); var r = new RegExp('\\{' + q + '<\\}(.*)\\{' + q + '>\\}', 'g'); p = p.replace(r, ((!g && d[i]) || (g && h[i]) ? '$1' : '')) } $.each(o, function (n, v) { var a = new RegExp('\\{' + n + '\\}', 'g'); p = p.replace(a, v) }); return p }, _minDigits: function (a, b) { a = '' + a; if (a.length >= b) { return a } a = '0000000000' + a; return a.substr(a.length - b) }, _determineShow: function (a) { var b = this._get(a, 'format'); var c = []; c[Y] = (b.match('y') ? '?' : (b.match('Y') ? '!' : null)); c[O] = (b.match('o') ? '?' : (b.match('O') ? '!' : null)); c[W] = (b.match('w') ? '?' : (b.match('W') ? '!' : null)); c[D] = (b.match('d') ? '?' : (b.match('D') ? '!' : null)); c[H] = (b.match('h') ? '?' : (b.match('H') ? '!' : null)); c[M] = (b.match('m') ? '?' : (b.match('M') ? '!' : null)); c[S] = (b.match('s') ? '?' : (b.match('S') ? '!' : null)); return c }, _calculatePeriods: function (c, d, e, f) { c._now = f; c._now.setMilliseconds(0); var g = new Date(c._now.getTime()); if (c._since) { if (f.getTime() < c._since.getTime()) { c._now = f = g } else { f = c._since } } else { g.setTime(c._until.getTime()); if (f.getTime() > c._until.getTime()) { c._now = f = g } } var h = [0, 0, 0, 0, 0, 0, 0]; if (d[Y] || d[O]) { var i = $.countdown._getDaysInMonth(f.getFullYear(), f.getMonth()); var j = $.countdown._getDaysInMonth(g.getFullYear(), g.getMonth()); var k = (g.getDate() == f.getDate() || (g.getDate() >= Math.min(i, j) && f.getDate() >= Math.min(i, j))); var l = function (a) { return (a.getHours() * 60 + a.getMinutes()) * 60 + a.getSeconds() }; var m = Math.max(0, (g.getFullYear() - f.getFullYear()) * 12 + g.getMonth() - f.getMonth() + ((g.getDate() < f.getDate() && !k) || (k && l(g) < l(f)) ? -1 : 0)); h[Y] = (d[Y] ? Math.floor(m / 12) : 0); h[O] = (d[O] ? m - h[Y] * 12 : 0); f = new Date(f.getTime()); var n = (f.getDate() == i); var o = $.countdown._getDaysInMonth(f.getFullYear() + h[Y], f.getMonth() + h[O]); if (f.getDate() > o) { f.setDate(o) } f.setFullYear(f.getFullYear() + h[Y]); f.setMonth(f.getMonth() + h[O]); if (n) { f.setDate(o) } } var p = Math.floor((g.getTime() - f.getTime()) / 1000); var q = function (a, b) { h[a] = (d[a] ? Math.floor(p / b) : 0); p -= h[a] * b }; q(W, 604800); q(D, 86400); q(H, 3600); q(M, 60); q(S, 1); if (p > 0 && !c._since) { var r = [1, 12, 4.3482, 7, 24, 60, 60]; var s = S; var t = 1; for (var u = S; u >= Y; u--) { if (d[u]) { if (h[s] >= t) { h[s] = 0; p = 1 } if (p > 0) { h[u]++; p = 0; s = u; t = 1 } } t *= r[u] } } if (e) { for (var u = Y; u <= S; u++) { if (e && h[u]) { e-- } else if (!e) { h[u] = 0 } } } return h } }); function extendRemove(a, b) { $.extend(a, b); for (var c in b) { if (b[c] == null) { a[c] = null } } return a } $.fn.countdown = function (a) { var b = Array.prototype.slice.call(arguments, 1); if (a == 'getTimes' || a == 'settings') { return $.countdown['_' + a + 'Countdown'].apply($.countdown, [this[0]].concat(b)) } return this.each(function () { if (typeof a == 'string') { $.countdown['_' + a + 'Countdown'].apply($.countdown, [this].concat(b)) } else { $.countdown._attachCountdown(this, a) } }) }; $.countdown = new Countdown() })(jQuery); function createCookie(name, value, days) { if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); var expires = "; expires=" + date.toGMTString() } else var expires = ""; document.cookie = name + "=" + value + expires + "; path=/" } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length) } return null } function createWait(name, value, mins) { if (mins) { var date = new Date(); date.setTime(date.getTime() + (mins * 60 * 1000)); var expires = "; expires=" + date.toGMTString() } else var expires = ""; document.cookie = name + "=" + value + expires + "; path=/" }