/**
* Twitter - http://www.twitter.com
* Copyright (C) 2009 Twitter
* Author: Dustin Diaz (dustin@twitter.com)
*
* V 2.1.1 Twitter search/profile/faves/list widget
* http://twitter.com/widgets
*/
if (!"console" in window) { window.console = { log: function() { } } } TWTR = window.TWTR || {}; if (!Array.prototype.forEach) { Array.prototype.forEach = function(D, E) { var C = E || window; for (var B = 0, A = this.length; B < A; ++B) { D.call(C, this[B], B, this) } }; Array.prototype.filter = function(E, F) { var D = F || window; var A = []; for (var C = 0, B = this.length; C < B; ++C) { if (!E.call(D, this[C], C, this)) { continue } A.push(this[C]) } return A }; Array.prototype.indexOf = function(B, C) { var C = C || 0; for (var A = 0; A < this.length; ++A) { if (this[A] === B) { return A } } return -1 } } (function() { if (TWTR && TWTR.Widget) { return } function A(B, D, C) { this.el = B; this.prop = D; this.from = C.from; this.to = C.to; this.time = C.time; this.callback = C.callback; this.animDiff = this.to - this.from } A.canTransition = function() { var B = document.createElement("twitter"); B.style.cssText = "-webkit-transition: all .5s linear;"; return !!B.style.webkitTransitionProperty } (); A.prototype._setStyle = function(B) { switch (this.prop) { case "opacity": this.el.style[this.prop] = B; this.el.style.filter = "alpha(opacity=" + B * 100 + ")"; break; default: this.el.style[this.prop] = B + "px"; break } }; A.prototype._animate = function() { var B = this; this.now = new Date(); this.diff = this.now - this.startTime; if (this.diff > this.time) { this._setStyle(this.to); if (this.callback) { this.callback.call(this) } clearInterval(this.timer); return } this.percentage = (Math.floor((this.diff / this.time) * 100) / 100); this.val = (this.animDiff * this.percentage) + this.from; this._setStyle(this.val) }; A.prototype.start = function() { var B = this; this.startTime = new Date(); this.timer = setInterval(function() { B._animate.call(B) }, 15) }; TWTR.Widget = function(B) { this.init(B) }; (function() { var N = {}; var a = {}; var Y = function(d) { var b = a[d]; if (!b) { b = new RegExp("(?:^|\\s+)" + d + "(?:\\s+|$)"); a[d] = b } return b }; var C = function(g, l, h, j) { var l = l || "*"; var h = h || document; var d = [], b = h.getElementsByTagName(l), k = Y(g); for (var e = 0, f = b.length; e < f; ++e) { if (k.test(b[e].className)) { d[d.length] = b[e]; if (j) { j.call(b[e], b[e]) } } } return d }; var Z = function() { var b = navigator.userAgent; return { ie: b.match(/MSIE\s([^;]*)/)} } (); var G = function(b) { if (typeof b == "string") { return document.getElementById(b) } return b }; var S = function(b) { return b.replace(/^\s+|\s+$/g, "") }; var R = function() { var b = self.innerHeight; var c = document.compatMode; if ((c || Z.ie)) { b = (c == "CSS1Compat") ? document.documentElement.clientHeight : document.body.clientHeight } return b }; var X = function(d, b) { var c = d.target || d.srcElement; return b(c) }; var P = function(c) { try { if (c && 3 == c.nodeType) { return c.parentNode } else { return c } } catch (b) { } }; var Q = function(c) { var b = c.relatedTarget; if (!b) { if (c.type == "mouseout") { b = c.toElement } else { if (c.type == "mouseover") { b = c.fromElement } } } return P(b) }; var U = function(c, b) { b.parentNode.insertBefore(c, b.nextSibling) }; var V = function(c) { try { c.parentNode.removeChild(c) } catch (b) { } }; var T = function(b) { return b.firstChild }; var B = function(d) { var c = Q(d); while (c && c != this) { try { c = c.parentNode } catch (b) { c = this } } if (c != this) { return true } return false }; var F = function() { if (document.defaultView && document.defaultView.getComputedStyle) { return function(c, f) { var e = null; var d = document.defaultView.getComputedStyle(c, ""); if (d) { e = d[f] } var b = c.style[f] || e; return b } } else { if (document.documentElement.currentStyle && Z.ie) { return function(b, d) { var c = b.currentStyle ? b.currentStyle[d] : null; return (b.style[d] || c) } } } } (); var W = { has: function(b, d) { return new RegExp("(^|\\s)" + d + "(\\s|$)").test(G(b).className) }, add: function(b, d) { if (!this.has(b, d)) { G(b).className = S(G(b).className) + " " + d } }, remove: function(b, d) { if (this.has(b, d)) { G(b).className = G(b).className.replace(new RegExp("(^|\\s)" + d + "(\\s|$)", "g"), "") } } }; var D = { add: function(d, c, b) { if (d.addEventListener) { d.addEventListener(c, b, false) } else { d.attachEvent("on" + c, function() { b.call(d, window.event) }) } }, remove: function(d, c, b) { if (d.removeEventListener) { d.removeEventListener(c, b, false) } else { d.detachEvent("on" + c, b) } } }; var H = { bool: function(c) { return typeof c === "boolean" }, def: function(b) { return !(typeof b === "undefined") }, number: function(b) { return typeof b === "number" && isFinite(b) }, string: function(b) { return typeof b === "string" }, fn: function(b) { return typeof b === "function" }, array: function(b) { if (b) { return H.number(b.length) && H.fn(b.splice) } return false } }; var L = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var O = function(f) { var i = new Date(f); if (Z.ie) { i = Date.parse(f.replace(/( \+)/, " UTC$1")) } var c = ""; var b = function() { var d = i.getHours(); if (d > 0 && d < 13) { c = "am"; return d } else { if (d < 1) { c = "am"; return 12 } else { c = "pm"; return d - 12 } } } (); var e = i.getMinutes(); var h = i.getSeconds(); function g() { var d = new Date(); if (d.getDate() != i.getDate() || d.getYear() != i.getYear() || d.getMonth() != i.getMonth()) { return " - " + L[i.getMonth()] + " " + i.getDate() + ", " + i.getFullYear() } else { return "" } } return b + ":" + e + c + g() }; var J = function(h) { var j = new Date(); var f = new Date(h); if (Z.ie) { f = Date.parse(h.replace(/( \+)/, " UTC$1")) } var i = j - f; var c = 1000, d = c * 60, e = d * 60, g = e * 24, b = g * 7; if (isNaN(i) || i < 0) { return "" } if (i < c * 7) { return "right now" } if (i < d) { return Math.floor(i / c) + " seconds ago" } if (i < d * 2) { return "about 1 minute ago" } if (i < e) { return Math.floor(i / d) + " minutes ago" } if (i < e * 2) { return "about 1 hour ago" } if (i < g) { return Math.floor(i / e) + " hours ago" } if (i > g && i < g * 2) { return "yesterday" } if (i < g * 365) { return Math.floor(i / g) + " days ago" } else { return "over a year ago" } }; var E = { link: function(b) { return b.replace(/\b(((https*\:\/\/)|www\.).+?)(([!?,.\)]+)?(\s|$))/g, function(h, g, e, d, c) { var f = e.match(/w/) ? "http://" : ""; return '<a class="twtr-hyperlink" target="_blank" href="' + f + g + '">' + ((g.length > 25) ? g.substr(0, 24) + "..." : g) + "</a>" + c }) }, at: function(b) { return b.replace(/\B\@([a-zA-Z0-9_]{1,20})/g, function(c, d) { return '@<a target="_blank" class="twtr-atreply" href="http://twitter.com/' + d + '">' + d + "</a>" }) }, list: function(b) { return b.replace(/\B\@([a-zA-Z0-9_]{1,20}\/\w+)/g, function(c, d) { return '@<a target="_blank" class="twtr-atreply" href="http://twitter.com/' + d + '">' + d + "</a>" }) }, hash: function(b) { return b.replace(/\B\#(\w+)/gi, function(c, d) { return '<a target="_blank" class="twtr-hashtag" href="http://twitter.com/search?q=%23' + d + '">#' + d + "</a>" }) }, clean: function(b) { return this.hash(this.at(this.list(this.link(b)))) } }; function M(c, d, b) { this.job = c; this.decayFn = d; this.interval = b; this.decayRate = 1; this.decayMultiplier = 1.25; this.maxDecayTime = 3 * 60 * 1000 } M.prototype = { start: function() { this.stop().run(); return this }, stop: function() { if (this.worker) { window.clearTimeout(this.worker) } return this }, run: function() { var b = this; this.job(function() { b.decayRate = b.decayFn() ? Math.max(1, b.decayRate / b.decayMultiplier) : b.decayRate * b.decayMultiplier; var c = b.interval * b.decayRate; c = (c >= b.maxDecayTime) ? b.maxDecayTime : c; c = Math.floor(c); b.worker = window.setTimeout(function() { b.run.call(b) }, c) }) }, destroy: function() { this.stop(); this.decayRate = 1; return this } }; function I(c, d, b, e) { this.time = d || 6000; this.loop = b || false; this.repeated = 0; this.total = c.length; this.callback = e; this.haystack = c } I.prototype = { start: function(b) { var c = this; if (b) { this.repeated = 0 } this.stop()._job(); this.timer = window.setInterval(function() { c._job.call(c) }, this.time); return this }, stop: function() { if (this.timer) { window.clearInterval(this.timer) } return this }, _job: function() { if (this.repeated === this.total) { if (this.loop) { this.repeated = 0 } else { this.stop(); return } } this.callback(this.haystack[this.repeated]); this.repeated++; return this } }; function K(c) { var b = '<div class="twtr-tweet-wrap">         <div class="twtr-avatar">           <div class="twtr-img"><a target="_blank" href="http://twitter.com/' + c.user + '"><img alt="' + c.user + ' profile" src="' + c.avatar + '"></a></div>         </div>         <div class="twtr-tweet-text">           <p>             <a target="_blank" href="http://twitter.com/' + c.user + '" class="twtr-user">' + c.user + "</a> " + c.tweet + '             <i>            <a target="_blank" class="twtr-timestamp" time="' + c.timestamp + '" href="http://twitter.com/' + c.user + "/status/" + c.id + '">' + c.created_at + '</a>             <a target="_blank" class="twtr-reply" href="http://twitter.com/?status=@' + c.user + "%20&in_reply_to_status_id=" + c.id + "&in_reply_to=" + c.user + '">reply</a>             </i>           </p>         </div>       </div>'; var d = document.createElement("div"); d.id = "tweet-id-" + ++K._tweetCount; d.className = "twtr-tweet"; d.innerHTML = b; this.element = d } K._tweetCount = 0; N.loadStyleSheet = function(d, c) { if (!TWTR.Widget.loadingStyleSheet) { TWTR.Widget.loadingStyleSheet = true; var b = document.createElement("link"); b.href = d; b.rel = "stylesheet"; b.type = "text/css"; document.getElementsByTagName("head")[0].appendChild(b); var e = setInterval(function() { var f = F(c, "position"); if (f == "relative") { clearInterval(e); TWTR.Widget.hasLoadedStyleSheet = true } }, 50) } }; (function() { var b = false; N.css = function(e) { var d = document.createElement("style"); d.type = "text/css"; if (Z.ie) { d.styleSheet.cssText = e } else { var f = document.createDocumentFragment(); f.appendChild(document.createTextNode(e)); d.appendChild(f) } function c() { document.getElementsByTagName("head")[0].appendChild(d) } if (!Z.ie || b) { c() } else { window.attachEvent("onload", function() { b = true; c() }) } } })(); TWTR.Widget.isLoaded = false; TWTR.Widget.loadingStyleSheet = false; TWTR.Widget.hasLoadedStyleSheet = false; TWTR.Widget.WIDGET_NUMBER = 0; TWTR.Widget.matches = { mentions: /^@[a-zA-Z0-9_]{1,20}\b/, any_mentions: /\b@[a-zA-Z0-9_]{1,20}\b/ }; TWTR.Widget.jsonP = function(c, d) { var b = document.createElement("script"); b.type = "text/javascript"; b.src = c; document.getElementsByTagName("head")[0].appendChild(b); d(b); return b }; TWTR.Widget.prototype = function() { var f = "http://search.twitter.com/search."; var g = "http://twitter.com/statuses/user_timeline."; var d = "http://twitter.com/favorites/"; var e = "http://twitter.com/"; var c = 20000; var b = "http://widgets.twimg.com/j/1/default.gif"; return { init: function(i) { var h = this; this._widgetNumber = ++TWTR.Widget.WIDGET_NUMBER; TWTR.Widget["receiveCallback_" + this._widgetNumber] = function(j) { h._prePlay.call(h, j) }; this._cb = "TWTR.Widget.receiveCallback_" + this._widgetNumber; this.opts = i; this._base = f; this._isRunning = false; this._hasOfficiallyStarted = false; this._rendered = false; this._profileImage = false; this._isCreator = !!i.creator; this._setWidgetType(i.type); this.timesRequested = 0; this.runOnce = false; this.newResults = false; this.results = []; this.jsonMaxRequestTimeOut = 19000; this.showedResults = []; this.sinceId = 1; this.source = "TWITTERINC_WIDGET"; this.id = i.id || "twtr-widget-" + this._widgetNumber; this.tweets = 0; this.setDimensions(i.width, i.height); this.interval = i.interval || 6000; this.format = "json"; this.rpp = i.rpp || 50; this.subject = i.subject || ""; this.title = i.title || ""; this.setFooterText(i.footer); this.setSearch(i.search); this._setUrl(); this.theme = i.theme ? i.theme : this._getDefaultTheme(); if (!i.id) { document.write('<div class="twtr-widget" id="' + this.id + '"></div>') } this.widgetEl = G(this.id); if (i.id) { W.add(this.widgetEl, "twtr-widget") } if (i.version >= 2 && !TWTR.Widget.hasLoadedStyleSheet) { N.loadStyleSheet("http://widgets.twimg.com/j/2/widget.css", this.widgetEl) } this.occasionalJob = new M(function(j) { h.decay = j; h._getResults.call(h) }, function() { return h._decayDecider.call(h) }, c); this._ready = H.fn(i.ready) ? i.ready : function() { }; this._isRelativeTime = true; this._tweetFilter = false; this._avatars = true; this._isFullScreen = false; this._isLive = true; this._isScroll = false; this._loop = true; this._behavior = "default"; this.setFeatures(this.opts.features); return this }, setDimensions: function(i, j) { this.wh = (i && j) ? [i, j] : [250, 300]; if (i == "auto" || i == "100%") { this.wh[0] = "100%" } else { this.wh[0] = ((this.wh[0] < 150) ? 150 : this.wh[0]) + "px" } this.wh[1] = ((this.wh[1] < 100) ? 100 : this.wh[1]) + "px"; return this }, setRpp: function(h) { var h = parseInt(h); this.rpp = (H.number(h) && (h > 0 && h <= 100)) ? h : 30; return this }, _setWidgetType: function(h) { this._isSearchWidget = false, this._isProfileWidget = false, this._isFavsWidget = false, this._isListWidget = false; switch (h) { case "profile": this._isProfileWidget = true; break; case "search": this._isSearchWidget = true, this.search = this.opts.search; break; case "faves": case "favs": this._isFavsWidget = true; break; case "list": case "lists": this._isListWidget = true; break } return this }, setFeatures: function(h) { if (h) { if (H.def(h.filters)) { this._tweetFilter = h.filters } if (H.def(h.dateformat)) { this._isRelativeTime = !!(h.dateformat !== "absolute") } if (H.def(h.fullscreen) && H.bool(h.fullscreen)) { if (h.fullscreen) { this._isFullScreen = true; this.wh[0] = "100%"; this.wh[1] = (R() - 90) + "px"; var i = this; D.add(window, "resize", function(l) { i.wh[1] = R(); i._fullScreenResize() }) } } if (H.def(h.loop) && H.bool(h.loop)) { this._loop = h.loop } if (H.def(h.behavior) && H.string(h.behavior)) { switch (h.behavior) { case "all": this._behavior = "all"; break; default: this._behavior = "default"; break } } if (H.def(h.avatars) && H.bool(h.avatars)) { if (!h.avatars) { N.css("#" + this.id + " .twtr-avatar, #" + this.id + " .twtr-user { display: none; } #" + this.id + " .twtr-tweet-text { margin-left: 0; }"); this._avatars = false } else { var j = (this._isFullScreen) ? "90px" : "40px"; N.css("#" + this.id + " .twtr-avatar { display: block; } #" + this.id + " .twtr-user { display: inline; } #" + this.id + " .twtr-tweet-text { margin-left: " + j + "; }"); this._avatars = true } } else { if (this._isProfileWidget) { this.setFeatures({ avatars: false }); this._avatars = false } else { this.setFeatures({ avatars: true }); this._avatars = true } } if (H.def(h.hashtags) && H.bool(h.hashtags)) { (!h.hashtags) ? N.css("#" + this.id + " a.twtr-hashtag { display: none; }") : "" } if (H.def(h.timestamp) && H.bool(h.timestamp)) { var k = h.timestamp ? "block" : "none"; N.css("#" + this.id + " i { display: " + k + "; }") } if (H.def(h.live) && H.bool(h.live)) { this._isLive = h.live } if (H.def(h.scrollbar) && H.bool(h.scrollbar)) { this._isScroll = h.scrollbar } } else { if (this._isProfileWidget) { this.setFeatures({ avatars: false }); this._avatars = false } if (this._isProfileWidget || this._isFavsWidget) { this.setFeatures({ behavior: "all" }) } } return this }, _fullScreenResize: function() { var h = C("twtr-timeline", "div", document.body, function(i) { i.style.height = (R() - 90) + "px" }) }, setTweetInterval: function(h) { this.interval = h; return this }, setBase: function(h) { this._base = h; return this }, setUser: function(i, h) { this.username = i; this.realname = h || " "; if (this._isFavsWidget) { this.setBase(d + i + ".") } else { if (this._isProfileWidget) { this.setBase(g + this.format + "?screen_name=" + i) } } this.setSearch(" "); return this }, setList: function(i, h) { this.listslug = h.replace(/ /g, "-").toLowerCase(); this.username = i; this.setBase(e + i + "/lists/" + this.listslug + "/statuses."); this.setSearch(" "); return this }, setProfileImage: function(h) { this._profileImage = h; this.byClass("twtr-profile-img", "img").src = h; this.byClass("twtr-profile-img-anchor", "a").href = "http://twitter.com/" + this.username; return this }, setTitle: function(h) { this.title = h; this.widgetEl.getElementsByTagName("h3")[0].innerHTML = this.title; return this }, setCaption: function(h) { this.subject = h; this.widgetEl.getElementsByTagName("h4")[0].innerHTML = this.subject; return this }, setFooterText: function(h) { this.footerText = (H.def(h) && H.string(h)) ? h : "Join the conversation"; if (this._rendered) { this.byClass("twtr-join-conv", "a").innerHTML = this.footerText } return this }, setSearch: function(i) { this.searchString = i || ""; this.s = this.searchString.replace(" ", "+"); this.search = escape("-RT " + this.s); this._setUrl(); if (this._rendered) { var h = this.byClass("twtr-join-conv", "a"); h.href = "http://twitter.com/" + this._getWidgetPath() } return this }, _getWidgetPath: function() { if (this._isProfileWidget) { return this.username } else { if (this._isFavsWidget) { return this.username + "/favorites" } else { if (this._isListWidget) { return this.username + "/lists/" + this.listslug } else { return "#search?q=" + this.search } } } }, _setUrl: function() { var h = this; function i() { return (h.sinceId == 1) ? "" : "&since_id=" + h.sinceId + "&refresh=true" } if (this._isProfileWidget) { this.url = this._base + "&callback=" + this._cb + "&count=" + this.rpp + i() + "&clientsource=" + this.source } else { if (this._isFavsWidget || this._isListWidget) { this.url = this._base + this.format + "?callback=" + this._cb + i() + "&clientsource=" + this.source } else { this.url = this._base + this.format + "?q=" + this.search + "&callback=" + this._cb + "&rpp=" + this.rpp + i() + "&clientsource=" + this.source } } return this }, setTheme: function(m, h) { var k = this; var i = " !important"; var l = ((window.location.hostname.match(/twitter\.com/)) && (window.location.pathname.match(/goodies/))); if (h || l) { i = "" } this.theme = { shell: { background: function() { return m.shell.background || k._getDefaultTheme().shell.background } (), color: function() { return m.shell.color || k._getDefaultTheme().shell.color } () }, tweets: { background: function() { return m.tweets.background || k._getDefaultTheme().tweets.background } (), color: function() { return m.tweets.color || k._getDefaultTheme().tweets.color } (), links: function() { return m.tweets.links || k._getDefaultTheme().tweets.links } ()} }; var j = "#" + this.id + " .twtr-doc,                      #" + this.id + " .twtr-hd a,                      #" + this.id + " h3,                      #" + this.id + " h4 {            background: " + this.theme.shell.background + i + ";            color: " + this.theme.shell.color + i + ";          }          #" + this.id + " .twtr-tweet a {            color: " + this.theme.tweets.links + i + ";          }          #" + this.id + " .twtr-bd, #" + this.id + " .twtr-timeline i a,           #" + this.id + " .twtr-bd p {            color: " + this.theme.tweets.color + i + ";          }          #" + this.id + " .twtr-new-results,           #" + this.id + " .twtr-results-inner,           #" + this.id + " .twtr-timeline {            background: " + this.theme.tweets.background + i + ";          }"; if (Z.ie) { j += "#" + this.id + " .twtr-tweet { background: " + this.theme.tweets.background + i + "; }" } N.css(j); return this }, byClass: function(k, h, i) { var j = C(k, h, G(this.id)); return (i) ? j : j[0] }, render: function() { var j = this; if (!TWTR.Widget.hasLoadedStyleSheet) { window.setTimeout(function() { j.render.call(j) }, 50); return this } this.setTheme(this.theme, this._isCreator); if (this._isProfileWidget) { W.add(this.widgetEl, "twtr-widget-profile") } if (this._isScroll) { W.add(this.widgetEl, "twtr-scroll") } if (!this._isLive && !this._isScroll) { this.wh[1] = "auto" } if (this._isSearchWidget && this._isFullScreen) { document.title = "Twitter search: " + escape(this.searchString) } this.widgetEl.innerHTML = this._getWidgetHtml(); this.spinner = this.byClass("twtr-spinner", "div"); var i = this.byClass("twtr-timeline", "div"); if (this._isLive && !this._isFullScreen) { var k = function(l) { if (B.call(this, l)) { j.pause.call(j) } }; var h = function(l) { if (B.call(this, l)) { j.resume.call(j) } }; this.removeEvents = function() { D.remove(i, "mouseover", k); D.remove(i, "mouseout", h) }; D.add(i, "mouseover", k); D.add(i, "mouseout", h) } this._rendered = true; this._ready(); return this }, removeEvents: function() { }, _getDefaultTheme: function() { return { shell: { background: "#8ec1da", color: "#ffffff" }, tweets: { background: "#ffffff", color: "#444444", links: "#1985b5"}} }, _getWidgetHtml: function() { var k = this; function l() { if (k._isProfileWidget) { return '<a target="_blank" href="http://twitter.com/" class="twtr-profile-img-anchor"><img alt="profile" class="twtr-profile-img" src="' + b + '"></a>                      <h3></h3>                      <h4></h4>' } else { return "<h3>" + k.title + "</h3><h4>" + k.subject + "</h4>" } } function j() { if (!k._isFullScreen) { return ' height="15"' } return "" } function i() { return k._isFullScreen ? " twtr-fullscreen" : "" } var h = '<div class="twtr-doc' + i() + '" style="width: ' + this.wh[0] + ';">            <div class="twtr-hd">' + l() + '               <div class="twtr-spinner twtr-inactive"></div>            </div>            <div class="twtr-bd">              <div class="twtr-timeline" style="height: ' + this.wh[1] + ';">                <div class="twtr-tweets">                  <div class="twtr-reference-tweet"></div>                  <!-- tweets show here -->                </div>              </div>            </div>            <div class="twtr-ft">              <div><a target="_blank" href="http://twitter.com"><img alt="" src="http://widgets.twimg.com/j/1/twitter_logo_s.' + (Z.ie ? "gif" : "png") + '"' + j() + '></a>                <span><a target="_blank" class="twtr-join-conv" style="color:' + this.theme.shell.color + '" href="http://twitter.com/' + this._getWidgetPath() + '">' + this.footerText + "</a></span>              </div>            </div>          </div>"; return h }, _appendTweet: function(h) { U(h, this.byClass("twtr-reference-tweet", "div")); return this }, _slide: function(i) { var j = this; var h = T(i).offsetHeight; if (this.runOnce) { new A(i, "height", { from: 0, to: h, time: 500, callback: function() { j._fade.call(j, i) } }).start() } return this }, _fade: function(h) { var i = this; if (A.canTransition) { h.style.webkitTransition = "opacity 0.5s ease-out"; h.style.opacity = 1; return this } new A(h, "opacity", { from: 0, to: 1, time: 500 }).start(); return this }, _chop: function() { if (this._isScroll) { return this } var n = this.byClass("twtr-tweet", "div", true); var o = this.byClass("twtr-new-results", "div", true); if (n.length) { for (var k = n.length - 1; k >= 0; k--) { var m = n[k]; var l = parseInt(m.offsetTop); if (l > parseInt(this.wh[1])) { V(m) } else { break } } if (o.length > 0) { var h = o[o.length - 1]; var j = parseInt(h.offsetTop); if (j > parseInt(this.wh[1])) { V(h) } } } return this }, _appendSlideFade: function(i) { var h = i || this.tweet.element; this._chop()._appendTweet(h)._slide(h); return this }, _createTweet: function(h) { h.timestamp = h.created_at; h.created_at = this._isRelativeTime ? J(h.created_at) : O(h.created_at); this.tweet = new K(h); if (this._isLive && this.runOnce) { this.tweet.element.style.opacity = 0; this.tweet.element.style.filter = "alpha(opacity:0)"; this.tweet.element.style.height = "0" } return this }, _getResults: function() { var h = this; this.timesRequested++; this.jsonRequestRunning = true; this.jsonRequestTimer = window.setTimeout(function() { if (h.jsonRequestRunning) { clearTimeout(h.jsonRequestTimer); W.add(h.spinner, "twtr-inactive") } h.jsonRequestRunning = false; V(h.scriptElement); h.newResults = false; h.decay() }, this.jsonMaxRequestTimeOut); W.remove(this.spinner, "twtr-inactive"); TWTR.Widget.jsonP(h.url, function(i) { h.scriptElement = i }) }, clear: function() { var i = this.byClass("twtr-tweet", "div", true); var h = this.byClass("twtr-new-results", "div", true); i = i.concat(h); i.forEach(function(j) { V(j) }); return this }, _sortByLatest: function(h) { this.results = h; this.results = this.results.slice(0, this.rpp); this.results.reverse(); return this }, _sortByMagic: function(h) { var h = h; var i = this; if (this._tweetFilter) { if (this._tweetFilter.negatives) { h = h.filter(function(j) { if (!i._tweetFilter.negatives.test(j.text)) { return j } }) } if (this._tweetFilter.positives) { h = h.filter(function(j) { if (i._tweetFilter.positives.test(j.text)) { return j } }) } } switch (this._behavior) { case "all": this._sortByLatest(h); break; default: this._sortByDefault(h); break } return this }, _sortByDefault: function(i) { var j = this; var h = function() { if (Z.ie) { return function(k) { return Date.parse(k.replace(/( \+)/, " UTC$1")) } } else { return function(k) { return new Date(k) } } } (); this.results.unshift.apply(this.results, i); this.results.forEach(function(k) { if (!k.views) { k.views = 0 } }); this.results.sort(function(l, k) { if (h(l.created_at) < h(k.created_at)) { return 1 } else { if (h(l.created_at) > h(k.created_at)) { return -1 } else { return 0 } } }); this.results = this.results.slice(0, this.rpp); if (!this._isLive) { this.results.reverse() } this.results.sort(function(l, k) { if (l.views > k.views) { return 1 } else { if (l.views < k.views) { return -1 } } return 0 }) }, _prePlay: function(i) { if (this.jsonRequestTimer) { clearTimeout(this.jsonRequestTimer) } if (!Z.ie) { V(this.scriptElement) } if (i.error) { this.newResults = false } else { if (i.results && i.results.length > 0) { this.response = i; if (this.intervalJob) { this.intervalJob.stop() } this.newResults = true; this.sinceId = i.max_id; this._sortByMagic(i.results); if (this.isRunning()) { this._play() } } else { if ((this._isProfileWidget || this._isFavsWidget || this._isListWidget) && H.array(i) && i.length > 0) { if (this.intervalJob) { this.intervalJob.stop() } this.newResults = true; if (!this._profileImage && this._isProfileWidget) { var h = i[0].user.screen_name; this.setProfileImage(i[0].user.profile_image_url); this.setTitle(i[0].user.name); this.setCaption('<a target="_blank" href="http://twitter.com/' + h + '">' + h + "</a>") } this.sinceId = i[0].id; this._sortByMagic(i); if (this.isRunning()) { this._play() } } else { this.newResults = false } } } this._setUrl(); if (this._isLive) { this.decay() } W.add(this.spinner, "twtr-inactive") }, _play: function() { var h = this; if (this._avatars) { this._preloadImages(this.results) } if (this._isRelativeTime && this._behavior == "all") { this.byClass("twtr-timestamp", "a", true).forEach(function(i) { i.innerHTML = J(i.getAttribute("time")) }) } if (!this._isLive || this._behavior == "all") { this.results.forEach(function(j) { if (h._isProfileWidget) { j.from_user = h.username; j.profile_image_url = j.user.profile_image_url } if (h._isFavsWidget || h._isListWidget) { j.from_user = j.user.screen_name; j.profile_image_url = j.user.profile_image_url } h._createTweet({ id: j.id, user: j.from_user, tweet: E.clean(j.text), avatar: j.profile_image_url, created_at: j.created_at }); var i = h.tweet.element; (h._behavior == "all") ? h._appendSlideFade(i) : h._appendTweet(i) }); return this } this._insertNewResultsNumber(); this.intervalJob = new I(this.results, this.interval, this._loop, function(i) { i.views++; if (h._isProfileWidget) { i.from_user = h.username; i.profile_image_url = i.user.profile_image_url } if (h._isFavsWidget || h._isListWidget) { i.from_user = i.user.screen_name; i.profile_image_url = i.user.profile_image_url } if (h._isFullScreen) { i.profile_image_url = i.profile_image_url.replace(/_normal\./, "_bigger.") } h._createTweet({ id: i.id, user: i.from_user, tweet: E.clean(i.text), avatar: i.profile_image_url, created_at: i.created_at })._appendSlideFade() }).start(true); return this }, _insertNewResultsNumber: function() { if (this.runOnce && this._isSearchWidget) { var k = this.response.total > this.rpp ? this.response.total : this.response.results.length; var h = k > 1 ? "s" : ""; var j = (this.response.warning && this.response.warning.match(/adjusted since_id/)) ? "more than" : ""; var i = document.createElement("div"); W.add(i, "twtr-new-results"); i.innerHTML = '<div class="twtr-results-inner"> &nbsp; </div><div class="twtr-results-hr"> &nbsp; </div><span>' + j + " <strong>" + k + "</strong> new tweet" + h + "</span>"; U(i, this.byClass("twtr-reference-tweet", "div")) } }, _preloadImages: function(h) { if (this._isProfileWidget || this._isFavsWidget || this._isListWidget) { h.forEach(function(j) { var i = new Image(); i.src = j.user.profile_image_url }) } else { h.forEach(function(i) { (new Image()).src = i.profile_image_url }) } }, _decayDecider: function() { var h = false; if (!this.runOnce) { this.runOnce = true; h = true } else { if (this.newResults) { h = true } } return h }, start: function() { var h = this; if (!this._rendered) { setTimeout(function() { h.start.call(h) }, 50); return this } if (!this._isLive) { this._getResults() } else { this.occasionalJob.start() } this._isRunning = true; this._hasOfficiallyStarted = true; return this }, stop: function() { this.occasionalJob.stop(); if (this.intervalJob) { this.intervalJob.stop() } this._isRunning = false; return this }, pause: function() { if (this.isRunning() && this.intervalJob) { this.intervalJob.stop(); W.add(this.widgetEl, "twtr-paused"); this._isRunning = false } if (this._resumeTimer) { clearTimeout(this._resumeTimer) } return this }, resume: function() { var h = this; if (!this.isRunning() && this._hasOfficiallyStarted && this.intervalJob) { this._resumeTimer = window.setTimeout(function() { h.intervalJob.start(); h._isRunning = true; W.remove(h.widgetEl, "twtr-paused") }, 2000) } return this }, isRunning: function() { return this._isRunning }, destroy: function() { this.stop(); this.clear(); this.runOnce = false; this._hasOfficiallyStarted = false; this.intervalJob = false; this._profileImage = false; this._isLive = true; this._tweetFilter = false; this._isScroll = false; this.newResults = false; this._isRunning = false; this.sinceId = 1; this.results = []; this.showedResults = []; this.occasionalJob.destroy(); if (this.jsonRequestRunning) { clearTimeout(this.jsonRequestTimer); W.add(this.spinner, "twtr-inactive") } W.remove(this.widgetEl, "twtr-scroll"); this.removeEvents(); return this } } } () })() })();