/**
 * Twitter - http://twitter.com
 * Copyright (C) 2010 Twitter
 * Author: Dustin Diaz (dustin@twitter.com)
 *
 * V 2.2.5 Twitter search/profile/faves/list widget
 * http://twitter.com/widgets
 * For full documented source see http://twitter.com/javascripts/widgets/widget.js
 * Hosting and modifications of the original source IS allowed.
 *
 * Example usage:
   <script src="path/to/widget.js"></script>
   <script>
     new TWTR.Widget({
       type: 'search',
       search: "your search query", // includes all advanced search queries.
       width: 250,
       height: 350,
       interval: 6000,
       subject: "What's being said about...",
       title: "San Francisco",
       rpp: 30,
       footer: "Follow me",
       theme: {
         shell: {
           background: '#1deb25',
           color: '#ffffff'
         },
         tweets: {
           background: 'silver',
           color: 'blue',
           links: 'black'
         }
       },

       features: {
         avatars: true, // defaults to false for profile widget, but true for search & faves widget
         hashtags: true,
         timestamp: true,
         fullscreen: false, // ignores width and height and just goes full screen
         scrollbar: false,
         live: true,
         loop: true,
         behavior: 'default',
         dateformat: 'absolute', // defaults to relative (eg: 3 minutes ago)
         toptweets: true // only for search widget
       }
     }).render().start();
   </script>
 *
 */
/**
 * @namespace TWTR public namespace for Twitter widget
 */
TWTR = window.TWTR || {}, Array.forEach || (Array.prototype.filter = function (a, b) {
	var c = b || window,
		d = [];
	for (var e = 0, f = this.length; e < f; ++e) {
		if (!a.call(c, this[e], e, this)) continue;
		d.push(this[e])
	}
	return d
}, Array.prototype.indexOf = function (a, b) {
	var b = b || 0;
	for (var c = 0; c < this.length; ++c) if (this[c] === a) return c;
	return -1
}), function () {
	function h(a) {
		a = a || window.event;
		var b = a.target || a.srcElement,
			h, i, j, k, l;
		while (b && b.nodeName.toLowerCase() !== "a") b = b.parentNode;
		b && b.nodeName.toLowerCase() === "a" && b.href && (h = b.href.match(c), h && (i = 550, j = h[2] in d ? 420 : 560, k = Math.round(g / 2 - i / 2), l = 0, f > j && (l = Math.round(f / 2 - j / 2)), window.open(b.href, "intent", e + ",width=" + i + ",height=" + j + ",left=" + k + ",top=" + l), a.returnValue = !1, a.preventDefault && a.preventDefault()))
	}

	function b(a, b, c) {
		this.el = a, this.prop = b, this.from = c.from, this.to = c.to, this.time = c.time, this.callback = c.callback, this.animDiff = this.to - this.from
	}

	function a(a, b, c) {
		for (var d = 0, e = a.length; d < e; ++d) b.call(c || window, a[d], d, a)
	}
	if (!TWTR || !TWTR.Widget) {
		b.canTransition = function () {
			var a = document.createElement("twitter");
			a.style.cssText = "-webkit-transition: all .5s linear;";
			return !!a.style.webkitTransitionProperty
		}(), b.prototype._setStyle = function (a) {
			switch (this.prop) {
			case "opacity":
				this.el.style[this.prop] = a, this.el.style.filter = "alpha(opacity=" + a * 100 + ")";
				break;
			default:
				this.el.style[this.prop] = a + "px"
			}
		}, b.prototype._animate = function () {
			var a = this;
			this.now = new Date, this.diff = this.now - this.startTime, this.diff > this.time ? (this._setStyle(this.to), this.callback && this.callback.call(this), clearInterval(this.timer)) : (this.percentage = Math.floor(this.diff / this.time * 100) / 100, this.val = this.animDiff * this.percentage + this.from, this._setStyle(this.val))
		}, b.prototype.start = function () {
			var a = this;
			this.startTime = new Date, this.timer = setInterval(function () {
				a._animate.call(a)
			}, 15)
		}, TWTR.Widget = function (a) {
			this.init(a)
		}, function () {
			function G(a) {
				function b() {
					return a.needle.metadata && a.needle.metadata.result_type && a.needle.metadata.result_type == "popular" ? '<span class="twtr-popular">' + a.needle.metadata.recent_retweets + "+ recent retweets</span>" : ""
				}
				var c = '<div class="twtr-tweet-wrap"> \n        <div class="twtr-avatar"> \n          <div class="twtr-img"><a target="_blank" href="http://twitter.com/intent/user?screen_name=' + a.user + '"><img alt="' + a.user + ' profile" src="' + g(a.avatar) + '"></a></div> \n        </div> \n        <div class="twtr-tweet-text"> \n          <p> \n            <a target="_blank" href="http://twitter.com/intent/user?screen_name=' + a.user + '" class="twtr-user">' + a.user + "</a> " + a.tweet + ' \n            <em>\n            <a target="_blank" class="twtr-timestamp" time="' + a.timestamp + '" href="http://twitter.com/' + a.user + "/status/" + a.id + '">' + a.created_at + '</a> &middot;\n            <a target="_blank" class="twtr-reply" href="http://twitter.com/intent/tweet?in_reply_to=' + a.id + '">reply</a> &middot; \n            <a target="_blank" class="twtr-rt" href="http://twitter.com/intent/retweet?tweet_id=' + a.id + '">retweet</a> &middot; \n            <a target="_blank" class="twtr-fav" href="http://twitter.com/intent/favorite?tweet_id=' + a.id + '">favorite</a> \n            </em> ' + b() + " \n          </p> \n        </div> \n      </div>",
					d = document.createElement("div");
				d.id = "tweet-id-" + ++G._tweetCount, d.className = "twtr-tweet", d.innerHTML = c, this.element = d
			}

			function F(a, b, c) {
				this.time = a || 6e3, this.loop = b || !1, this.repeated = 0, this.callback = c, this.haystack = []
			}

			function E(a, b, c) {
				this.job = a, this.decayFn = b, this.interval = c, this.decayRate = 1, this.decayMultiplier = 1.25, this.maxDecayTime = 18e4
			}
			var c = {},
				d = location.protocol.match(/https/),
				e = /^.+\/profile_images/,
				f = "https://s3.amazonaws.com/twitter_production/profile_images",
				g = function (a) {
					return d ? a.replace(e, f) : a
				},
				h = {},
				i = function (a) {
					var b = h[a];
					b || (b = new RegExp("(?:^|\\s+)" + a + "(?:\\s+|$)"), h[a] = b);
					return b
				},
				j = function (a, b, c, d) {
					var b = b || "*",
						c = c || document,
						e = [],
						f = c.getElementsByTagName(b),
						g = i(a);
					for (var h = 0, j = f.length; h < j; ++h) g.test(f[h].className) && (e[e.length] = f[h], d && d.call(f[h], f[h]));
					return e
				},
				k = function () {
					var a = navigator.userAgent;
					return {
						ie: a.match(/MSIE\s([^;]*)/)
					}
				}(),
				l = function (a) {
					if (typeof a == "string") return document.getElementById(a);
					return a
				},
				m = function (a) {
					return a.replace(/^\s+|\s+$/g, "")
				},
				n = function () {
					var a = self.innerHeight,
						b = document.compatMode;
					if (b || k.ie) a = b == "CSS1Compat" ? document.documentElement.clientHeight : document.body.clientHeight;
					return a
				},
				o = function (a, b) {
					var c = a.target || a.srcElement;
					return b(c)
				},
				p = function (a) {
					try {
						return a && 3 == a.nodeType ? a.parentNode : a
					} catch (b) {}
				},
				q = function (a) {
					var b = a.relatedTarget;
					b || (a.type == "mouseout" ? b = a.toElement : a.type == "mouseover" && (b = a.fromElement));
					return p(b)
				},
				r = function (a, b) {
					b.parentNode.insertBefore(a, b.nextSibling)
				},
				s = function (a) {
					try {
						a.parentNode.removeChild(a)
					} catch (b) {}
				},
				t = function (a) {
					return a.firstChild
				},
				u = function (a) {
					var b = q(a);
					while (b && b != this) try {
						b = b.parentNode
					} catch (c) {
						b = this
					}
					if (b != this) return !0;
					return !1
				},
				v = function () {
					if (document.defaultView && document.defaultView.getComputedStyle) return function (a, b) {
						var c = null,
							d = document.defaultView.getComputedStyle(a, "");
						d && (c = d[b]);
						var e = a.style[b] || c;
						return e
					};
					if (document.documentElement.currentStyle && k.ie) return function (a, b) {
						var c = a.currentStyle ? a.currentStyle[b] : null;
						return a.style[b] || c
					}
				}(),
				w = {
					has: function (a, b) {
						return (new RegExp("(^|\\s)" + b + "(\\s|$)")).test(l(a).className)
					},
					add: function (a, b) {
						this.has(a, b) || (l(a).className = m(l(a).className) + " " + b)
					},
					remove: function (a, b) {
						this.has(a, b) && (l(a).className = l(a).className.replace(new RegExp("(^|\\s)" + b + "(\\s|$)", "g"), ""))
					}
				},
				x = {
					add: function (a, b, c) {
						a.addEventListener ? a.addEventListener(b, c, !1) : a.attachEvent("on" + b, function () {
							c.call(a, window.event)
						})
					},
					remove: function (a, b, c) {
						a.removeEventListener ? a.removeEventListener(b, c, !1) : a.detachEvent("on" + b, c)
					}
				},
				y = function () {
					function c(a) {
						return parseInt(a.substring(4, 6), 16)
					}

					function b(a) {
						return parseInt(a.substring(2, 4), 16)
					}

					function a(a) {
						return parseInt(a.substring(0, 2), 16)
					}
					return function (d) {
						return [a(d), b(d), c(d)]
					}
				}(),
				z = {
					bool: function (a) {
						return typeof a == "boolean"
					},
					def: function (a) {
						return typeof a != "undefined"
					},
					number: function (a) {
						return typeof a == "number" && isFinite(a)
					},
					string: function (a) {
						return typeof a == "string"
					},
					fn: function (a) {
						return typeof a == "function"
					},
					array: function (a) {
						if (a) return z.number(a.length) && z.fn(a.splice);
						return !1
					}
				},
				A = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
				B = function (a) {
					function g() {
						var a = new Date;
						return a.getDate() != b.getDate() || a.getYear() != b.getYear() || a.getMonth() != b.getMonth() ? " - " + A[b.getMonth()] + " " + b.getDate() + ", " + b.getFullYear() : ""
					}
					var b = new Date(a);
					k.ie && (b = Date.parse(a.replace(/( \+)/, " UTC$1")));
					var c = "",
						d = function () {
							var a = b.getHours();
							if (a > 0 && a < 13) {
								c = "am";
								return a
							}
							if (a < 1) {
								c = "am";
								return 12
							}
							c = "pm";
							return a - 12
						}(),
						e = b.getMinutes(),
						f = b.getSeconds();
					return d + ":" + e + c + g()
				},
				C = function (a) {
					var b = new Date,
						c = new Date(a);
					k.ie && (c = Date.parse(a.replace(/( \+)/, " UTC$1")));
					var d = b - c,
						e = 1e3,
						f = e * 60,
						g = f * 60,
						h = g * 24,
						i = h * 7;
					if (isNaN(d) || d < 0) return "";
					if (d < e * 2) return "right now";
					if (d < f) return Math.floor(d / e) + " seconds ago";
					if (d < f * 2) return "about 1 minute ago";
					if (d < g) return Math.floor(d / f) + " minutes ago";
					if (d < g * 2) return "about 1 hour ago";
					if (d < h) return Math.floor(d / g) + " hours ago";
					if (d > h && d < h * 2) return "yesterday";
					return d < h * 365 ? Math.floor(d / h) + " days ago" : "over a year ago"
				},
				D = {
					link: function (a) {
						return a.replace(/\b(((https*\:\/\/)|www\.)[^\"\']+?)(([!?,.\)]+)?(\s|$))/g, function (a, b, c, d, e) {
							var f = c.match(/w/) ? "http://" : "";
							return '<a class="twtr-hyperlink" target="_blank" href="' + f + b + '">' + (b.length > 25 ? b.substr(0, 24) + "..." : b) + "</a>" + e
						})
					},
					at: function (a) {
						return a.replace(/\B[@＠]([a-zA-Z0-9_]{1,20})/g, function (a, b) {
							return '@<a target="_blank" class="twtr-atreply" href="http://twitter.com/intent/user?screen_name=' + b + '">' + b + "</a>"
						})
					},
					list: function (a) {
						return a.replace(/\B[@＠]([a-zA-Z0-9_]{1,20}\/\w+)/g, function (a, b) {
							return '@<a target="_blank" class="twtr-atreply" href="http://twitter.com/' + b + '">' + b + "</a>"
						})
					},
					hash: function (a) {
						return a.replace(/(^|\s+)#(\w+)/gi, function (a, b, c) {
							return b + '<a target="_blank" class="twtr-hashtag" href="http://twitter.com/search?q=%23' + c + '">#' + c + "</a>"
						})
					},
					clean: function (a) {
						return this.hash(this.at(this.list(this.link(a))))
					}
				};
			E.prototype = {
				start: function () {
					this.stop().run();
					return this
				},
				stop: function () {
					this.worker && window.clearTimeout(this.worker);
					return this
				},
				run: function () {
					var a = this;
					this.job(function () {
						a.decayRate = a.decayFn() ? Math.max(1, a.decayRate / a.decayMultiplier) : a.decayRate * a.decayMultiplier;
						var b = a.interval * a.decayRate;
						b = b >= a.maxDecayTime ? a.maxDecayTime : b, b = Math.floor(b), a.worker = window.setTimeout(function () {
							a.run.call(a)
						}, b)
					})
				},
				destroy: function () {
					this.stop(), this.decayRate = 1;
					return this
				}
			}, F.prototype = {
				set: function (a) {
					this.haystack = a
				},
				add: function (a) {
					this.haystack.unshift(a)
				},
				start: function () {
					if (this.timer) return this;
					this._job();
					var a = this;
					this.timer = setInterval(function () {
						a._job.call(a)
					}, this.time);
					return this
				},
				stop: function () {
					this.timer && (window.clearInterval(this.timer), this.timer = null);
					return this
				},
				_next: function () {
					var a = this.haystack.shift();
					a && this.loop && this.haystack.push(a);
					return a || null
				},
				_job: function () {
					var a = this._next();
					a && this.callback(a);
					return this
				}
			}, G._tweetCount = 0, c.loadStyleSheet = function (a, b) {
				if (!TWTR.Widget.loadingStyleSheet) {
					TWTR.Widget.loadingStyleSheet = !0;
					var c = document.createElement("link");
					c.href = a, c.rel = "stylesheet", c.type = "text/css", document.getElementsByTagName("head")[0].appendChild(c);
					var d = setInterval(function () {
						var a = v(b, "position");
						a == "relative" && (clearInterval(d), d = null, TWTR.Widget.hasLoadedStyleSheet = !0)
					}, 50)
				}
			}, function () {
				var a = !1;
				c.css = function (b) {
					function e() {
						document.getElementsByTagName("head")[0].appendChild(c)
					}
					var c = document.createElement("style");
					c.type = "text/css";
					if (k.ie) c.styleSheet.cssText = b;
					else {
						var d = document.createDocumentFragment();
						d.appendChild(document.createTextNode(b)), c.appendChild(d)
					}!k.ie || a ? e() : window.attachEvent("onload", function () {
						a = !0, e()
					})
				}
			}(), TWTR.Widget.isLoaded = !1, TWTR.Widget.loadingStyleSheet = !1, TWTR.Widget.hasLoadedStyleSheet = !1, 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 (a, b) {
				var c = document.createElement("script"),
					d = document.getElementsByTagName("head")[0];
				c.type = "text/javascript", c.src = a, d.insertBefore(c, d.firstChild), b(c);
				return c
			}, TWTR.Widget.prototype = function () {
				var e = d ? "https://" : "http://",
					f = window.location.hostname.match(/twitter\.com/) ? window.location.hostname + ":" + window.location.port : "twitter.com",
					h = e + "search." + f + "/search.",
					i = e + "api." + f + "/1/statuses/user_timeline.",
					m = e + f + "/favorites/",
					o = e + "api." + f + "/1/",
					p = 25e3,
					q = d ? "https://twitter-widgets.s3.amazonaws.com/j/1/default.gif" : "http://widgets.twimg.com/j/1/default.gif";
				return {
					init: function (a) {
						var b = this;
						this._widgetNumber = ++TWTR.Widget.WIDGET_NUMBER, TWTR.Widget["receiveCallback_" + this._widgetNumber] = function (a) {
							b._prePlay.call(b, a)
						}, this._cb = "TWTR.Widget.receiveCallback_" + this._widgetNumber, this.opts = a, this._base = h, this._isRunning = !1, this._hasOfficiallyStarted = !1, this._hasNewSearchResults = !1, this._rendered = !1, this._profileImage = !1, this._isCreator = !! a.creator, this._setWidgetType(a.type), this.timesRequested = 0, this.runOnce = !1, this.newResults = !1, this.results = [], this.jsonMaxRequestTimeOut = 19e3, this.showedResults = [], this.sinceId = 1, this.source = "TWITTERINC_WIDGET", this.id = a.id || "twtr-widget-" + this._widgetNumber, this.tweets = 0, this.setDimensions(a.width, a.height), this.interval = a.interval || 6e3, this.format = "json", this.rpp = a.rpp || 50, this.subject = a.subject || "", this.title = a.title || "", this.setFooterText(a.footer), this.setSearch(a.search), this._setUrl(), this.theme = a.theme ? a.theme : this._getDefaultTheme(), a.id || document.write('<div class="twtr-widget" id="' + this.id + '"></div>'), this.widgetEl = l(this.id), a.id && w.add(this.widgetEl, "twtr-widget"), a.version >= 2 && !TWTR.Widget.hasLoadedStyleSheet && c.loadStyleSheet("/css/widget.css", this.widgetEl), this.occasionalJob = new E(function (a) {
							b.decay = a, b._getResults.call(b)
						}, function () {
							return b._decayDecider.call(b)
						}, p), this._ready = z.fn(a.ready) ? a.ready : function () {}, this._isRelativeTime = !0, this._tweetFilter = !1, this._avatars = !0, this._isFullScreen = !1, this._isLive = !0, this._isScroll = !1, this._loop = !0, this._showTopTweets = this._isSearchWidget ? !0 : !1, this._behavior = "default", this.setFeatures(this.opts.features), this.intervalJob = new F(this.interval, this._loop, function (a) {
							b._normalizeTweet(a)
						});
						return this
					},
					setDimensions: function (a, b) {
						this.wh = a && b ? [a, b] : [160, 300], a == "auto" || a == "100%" ? this.wh[0] = "100%" : 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 (a) {
						var a = parseInt(a);
						this.rpp = z.number(a) && a > 0 && a <= 100 ? a : 30;
						return this
					},
					_setWidgetType: function (a) {
						this._isSearchWidget = !1, this._isProfileWidget = !1, this._isFavsWidget = !1, this._isListWidget = !1;
						switch (a) {
						case "profile":
							this._isProfileWidget = !0;
							break;
						case "search":
							this._isSearchWidget = !0, this.search = this.opts.search;
							break;
						case "faves":
						case "favs":
							this._isFavsWidget = !0;
							break;
						case "list":
						case "lists":
							this._isListWidget = !0
						}
						return this
					},
					setFeatures: function (a) {
						if (a) {
							z.def(a.filters) && (this._tweetFilter = a.filters), z.def(a.dateformat) && (this._isRelativeTime = a.dateformat !== "absolute");
							if (z.def(a.fullscreen) && z.bool(a.fullscreen) && a.fullscreen) {
								this._isFullScreen = !0, this.wh[0] = "100%", this.wh[1] = n() - 90 + "px";
								var b = this;
								x.add(window, "resize", function (a) {
									b.wh[1] = n(), b._fullScreenResize()
								})
							}
							z.def(a.loop) && z.bool(a.loop) && (this._loop = a.loop);
							if (z.def(a.behavior) && z.string(a.behavior)) switch (a.behavior) {
							case "all":
								this._behavior = "all";
								break;
							case "preloaded":
								this._behavior = "preloaded";
								break;
							default:
								this._behavior = "default"
							}
							if (z.def(a.toptweets) && z.bool(a.toptweets)) {
								this._showTopTweets = a.toptweets;
								var d = this._showTopTweets ? "inline-block" : "none";
								c.css("#" + this.id + " .twtr-popular { display: " + d + "; }")
							}
							if (!z.def(a.toptweets)) {
								this._showTopTweets = !0;
								var d = this._showTopTweets ? "inline-block" : "none";
								c.css("#" + this.id + " .twtr-popular { display: " + d + "; }")
							}
							if (z.def(a.avatars) && z.bool(a.avatars)) if (!a.avatars) c.css("#" + this.id + " .twtr-avatar, #" + this.id + " .twtr-user { display: none; } " + "#" + this.id + " .twtr-tweet-text { margin-left: 0; }"), this._avatars = !1;
							else {
								var e = this._isFullScreen ? "90px" : "40px";
								c.css("#" + this.id + " .twtr-avatar { display: block; } #" + this.id + " .twtr-user { display: inline; } " + "#" + this.id + " .twtr-tweet-text { margin-left: " + e + "; }"), this._avatars = !0
							} else this._isProfileWidget ? (this.setFeatures({
								avatars: !1
							}), this._avatars = !1) : (this.setFeatures({
								avatars: !0
							}), this._avatars = !0);
							z.def(a.hashtags) && z.bool(a.hashtags) && (a.hashtags ? "" : c.css("#" + this.id + " a.twtr-hashtag { display: none; }"));
							if (z.def(a.timestamp) && z.bool(a.timestamp)) {
								var f = a.timestamp ? "block" : "none";
								c.css("#" + this.id + " em { display: " + f + "; }")
							}
							z.def(a.live) && z.bool(a.live) && (this._isLive = a.live), z.def(a.scrollbar) && z.bool(a.scrollbar) && (this._isScroll = a.scrollbar)
						} else this._isProfileWidget && (this.setFeatures({
							avatars: !1
						}), this._avatars = !1), (this._isProfileWidget || this._isFavsWidget) && this.setFeatures({
							behavior: "all"
						});
						return this
					},
					_fullScreenResize: function () {
						var a = j("twtr-timeline", "div", document.body, function (a) {
							a.style.height = n() - 90 + "px"
						})
					},
					setTweetInterval: function (a) {
						this.interval = a;
						return this
					},
					setBase: function (a) {
						this._base = a;
						return this
					},
					setUser: function (a, b) {
						this.username = a, this.realname = b || " ", this._isFavsWidget ? this.setBase(m + a + ".") : this._isProfileWidget && this.setBase(i + this.format + "?screen_name=" + a), this.setSearch(" ");
						return this
					},
					setList: function (a, b) {
						this.listslug = b.replace(/ /g, "-").toLowerCase(), this.username = a, this.setBase(o + a + "/lists/" + this.listslug + "/statuses."), this.setSearch(" ");
						return this
					},
					setProfileImage: function (a) {
						this._profileImage = a, this.byClass("twtr-profile-img", "img").src = g(a), this.byClass("twtr-profile-img-anchor", "a").href = "http://twitter.com/intent/user?screen_name=" + this.username;
						return this
					},
					setTitle: function (a) {
						this.title = a, this.widgetEl.getElementsByTagName("h3")[0].innerHTML = this.title;
						return this
					},
					setCaption: function (a) {
						this.subject = a, this.widgetEl.getElementsByTagName("h4")[0].innerHTML = this.subject;
						return this
					},
					setFooterText: function (a) {
						this.footerText = z.def(a) && z.string(a) ? a : "&raquo; もっと読む", this._rendered && (this.byClass("twtr-join-conv", "a").innerHTML = this.footerText);
						return this
					},
					setSearch: function (a) {
						this.searchString = a || "", this.search = encodeURIComponent(this.searchString), this._setUrl();
						if (this._rendered) {
							var b = this.byClass("twtr-join-conv", "a");
							b.href = "http://twitter.com/" + this._getWidgetPath()
						}
						return this
					},
					_getWidgetPath: function () {
						return this._isProfileWidget ? this.username : this._isFavsWidget ? this.username + "/favorites" : this._isListWidget ? this.username + "/lists/" + this.listslug : "#search?q=" + this.search
					},
					_setUrl: function () {
						function c() {
							return a.sinceId == 1 ? "" : "&since_id=" + a.sinceId + "&refresh=true"
						}

						function b() {
							return "&" + +(new Date) + "=cachebust"
						}
						var a = this;
						this._isProfileWidget ? this.url = this._base + "&callback=" + this._cb + "&include_rts=true" + "&count=" + this.rpp + c() + "&clientsource=" + this.source : this._isFavsWidget || this._isListWidget ? this.url = this._base + this.format + "?callback=" + this._cb + c() + "&include_rts=true" + "&clientsource=" + this.source : (this.url = this._base + this.format + "?q=" + this.search + "&include_rts=true" + "&callback=" + this._cb + "&rpp=" + this.rpp + c() + "&clientsource=" + this.source, this.runOnce || (this.url += "&result_type=mixed")), this.url += b();
						return this
					},
					_getRGB: function (a) {
						return y(a.substring(1, 7))
					},
					setTheme: function (a, b) {
						var d = this,
							e = " !important",
							f = window.location.hostname.match(/twitter\.com/) && window.location.pathname.match(/goodies/);
						if (b || f) e = "";
						this.theme = {
							shell: {
								background: function () {
									return a.shell.background || d._getDefaultTheme().shell.background
								}(),
								color: function () {
									return a.shell.color || d._getDefaultTheme().shell.color
								}()
							},
							tweets: {
								background: function () {
									return a.tweets.background || d._getDefaultTheme().tweets.background
								}(),
								color: function () {
									return a.tweets.color || d._getDefaultTheme().tweets.color
								}(),
								links: function () {
									return a.tweets.links || d._getDefaultTheme().tweets.links
								}()
							}
						};
						var g = "#" + this.id + " .twtr-doc, \n                     #" + this.id + " .twtr-hd a, \n                     #" + this.id + " h3, \n                     #" + this.id + " h4, \n                     #" + this.id + " .twtr-popular {\n            background-color: " + this.theme.shell.background + e + ";\n            color: " + this.theme.shell.color + e + ";\n          }\n          #" + this.id + " .twtr-popular {\n            color: " + this.theme.tweets.color + e + ";\n            background-color: rgba(" + this._getRGB(this.theme.shell.background) + ", .3)" + e + ";\n          }\n          #" + this.id + " .twtr-tweet a {\n            color: " + this.theme.tweets.links + e + ";\n          }\n          #" + this.id + " .twtr-bd, #" + this.id + " .twtr-timeline i a, \n          #" + this.id + " .twtr-bd p {\n            color: " + this.theme.tweets.color + e + ";\n          }\n          #" + this.id + " .twtr-new-results, \n          #" + this.id + " .twtr-results-inner, \n          #" + this.id + " .twtr-timeline {\n            background: " + this.theme.tweets.background + e + ";\n          }";
						k.ie && (g += "#" + this.id + " .twtr-tweet { background: " + this.theme.tweets.background + e + "; }"), c.css(g);
						return this
					},
					byClass: function (a, b, c) {
						var d = j(a, b, l(this.id));
						return c ? d : d[0]
					},
					render: function () {
						var a = this;
						if (!TWTR.Widget.hasLoadedStyleSheet) {
							window.setTimeout(function () {
								a.render.call(a)
							}, 50);
							return this
						}
						this._isProfileWidget && w.add(this.widgetEl, "twtr-widget-profile"), this._isScroll && w.add(this.widgetEl, "twtr-scroll"), !this._isLive && !this._isScroll && (this.wh[1] = "auto"), this._isSearchWidget && this._isFullScreen && (document.title = "Twitter search: " + escape(this.searchString)), this.widgetEl.innerHTML = this._getWidgetHtml();
						var b = this.byClass("twtr-timeline", "div");
						if (this._isLive && !this._isFullScreen) {
							var c = function (b) {
									a._behavior !== "all" && u.call(this, b) && a.pause.call(a)
								},
								d = function (b) {
									a._behavior !== "all" && u.call(this, b) && a.resume.call(a)
								};
							this.removeEvents = function () {
								x.remove(b, "mouseover", c), x.remove(b, "mouseout", d)
							}, x.add(b, "mouseover", c), x.add(b, "mouseout", d)
						}
						this._rendered = !0, this._ready();
						return this
					},
					removeEvents: function () {},
					_getDefaultTheme: function () {
						return {
							shell: {
								background: "#8ec1da",
								color: "#ffffff"
							},
							tweets: {
								background: "#ffffff",
								color: "#444444",
								links: "#1985b5"
							}
						}
					},
					_getWidgetHtml: function () {
						function c() {
							return a._isFullScreen ? " twtr-fullscreen" : ""
						}

						function b() {
							return a._isProfileWidget ? '<a target="_blank" href="http://twitter.com/" class="twtr-profile-img-anchor"><img alt="profile" class="twtr-profile-img" src="' + q + '"></a>\n                      <h3></h3>\n                      <h4></h4>' : "<h3>" + a.title + "</h3><h4>" + a.subject + "</h4>"
						}
						var a = this,
							e = "/images/sidenav/twitter_twlogo.gif";
						this._isFullScreen && (e = "https://twitter-widgets.s3.amazonaws.com/i/widget-logo-fullscreen.png");
						var f = '<div class="twtr-doc' + c() + '" style="width: ' + this.wh[0] + ';">\n            <div class="twtr-hd">' + b() + ' \n            </div>\n            <div class="twtr-bd">\n              <div class="twtr-timeline" style="height: ' + this.wh[1] + ';">\n                <div class="twtr-tweets">\n                  <div class="twtr-reference-tweet"></div>\n                  <!-- tweets show here -->\n                </div>\n              </div>\n            </div>\n            <div class="twtr-ft">\n              <div><a target="_blank" href="http://twitter.com"><img alt="" src="' + e + '"></a>\n                <span><a target="_blank" class="twtr-join-conv" style="color:' + this.theme.shell.color + '" href="http://twitter.com/' + this._getWidgetPath() + '">' + this.footerText + "</a></span>\n              </div>\n            </div>\n          </div>";
						return f
					},
					_appendTweet: function (a) {
						this._insertNewResultsNumber(), r(a, this.byClass("twtr-reference-tweet", "div"));
						return this
					},
					_slide: function (a) {
						var c = this,
							d = t(a).offsetHeight;
						this.runOnce && (new b(a, "height", {
							from: 0,
							to: d,
							time: 500,
							callback: function () {
								c._fade.call(c, a)
							}
						})).start();
						return this
					},
					_fade: function (a) {
						var c = this;
						if (b.canTransition) {
							a.style.webkitTransition = "opacity 0.5s ease-out", a.style.opacity = 1;
							return this
						}(new b(a, "opacity", {
							from: 0,
							to: 1,
							time: 500
						})).start();
						return this
					},
					_chop: function () {
						if (this._isScroll) return this;
						var a = this.byClass("twtr-tweet", "div", !0),
							b = this.byClass("twtr-new-results", "div", !0);
						if (a.length) {
							for (var c = a.length - 1; c >= 0; c--) {
								var d = a[c],
									e = parseInt(d.offsetTop);
								if (e > parseInt(this.wh[1])) s(d);
								else break
							}
							if (b.length > 0) {
								var f = b[b.length - 1],
									g = parseInt(f.offsetTop);
								g > parseInt(this.wh[1]) && s(f)
							}
						}
						return this
					},
					_appendSlideFade: function (a) {
						var b = a || this.tweet.element;
						this._chop()._appendTweet(b)._slide(b);
						return this
					},
					_createTweet: function (a) {
						a.timestamp = a.created_at, a.created_at = this._isRelativeTime ? C(a.created_at) : B(a.created_at), this.tweet = new G(a), 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 a = this;
						this.timesRequested++, this.jsonRequestRunning = !0, this.jsonRequestTimer = window.setTimeout(function () {
							a.jsonRequestRunning && (clearTimeout(a.jsonRequestTimer), a.jsonRequestTimer = null), a.jsonRequestRunning = !1, s(a.scriptElement), a.newResults = !1, a.decay()
						}, this.jsonMaxRequestTimeOut), TWTR.Widget.jsonP(a.url, function (b) {
							a.scriptElement = b
						})
					},
					clear: function () {
						var b = this.byClass("twtr-tweet", "div", !0),
							c = this.byClass("twtr-new-results", "div", !0);
						b = b.concat(c), a(b, function (a) {
							s(a)
						});
						return this
					},
					_sortByMagic: function (a) {
						var b = this;
						this._tweetFilter && (this._tweetFilter.negatives && (a = a.filter(function (a) {
							if (!b._tweetFilter.negatives.test(a.text)) return a
						})), this._tweetFilter.positives && (a = a.filter(function (a) {
							if (b._tweetFilter.positives.test(a.text)) return a
						})));
						switch (this._behavior) {
						case "all":
							this._sortByLatest(a);
							break;
						case "preloaded":
						default:
							this._sortByDefault(a)
						}
						this._isLive && this._behavior !== "all" && (this.intervalJob.set(this.results), this.intervalJob.start());
						return this
					},
					_loadTopTweetsAtTop: function (b) {
						var c = [],
							d = [],
							e = [];
						a(b, function (a) {
							a.metadata && a.metadata.result_type && a.metadata.result_type == "popular" ? d.push(a) : c.push(a)
						});
						var f = d.concat(c);
						return f
					},
					_sortByLatest: function (a) {
						this.results = a, this.results = this.results.slice(0, this.rpp), this.results = this._loadTopTweetsAtTop(this.results), this.results.reverse();
						return this
					},
					_sortByDefault: function (b) {
						var c = this,
							d = function (a) {
								return (new Date(a)).getTime()
							};
						this.results.unshift.apply(this.results, b), a(this.results, function (a) {
							a.views || (a.views = 0)
						}), this.results.sort(function (a, b) {
							return d(a.created_at) > d(b.created_at) ? -1 : d(a.created_at) < d(b.created_at) ? 1 : 0
						}), this.results = this.results.slice(0, this.rpp), this.results = this._loadTopTweetsAtTop(this.results);
						var e = this.results;
						this.results = this.results.sort(function (a, b) {
							if (a.views < b.views) return -1;
							if (a.views > b.views) return 1;
							return 0
						}), this._isLive || this.results.reverse()
					},
					_prePlay: function (a) {
						this.jsonRequestTimer && (clearTimeout(this.jsonRequestTimer), this.jsonRequestTimer = null), k.ie || s(this.scriptElement);
						if (a.error) this.newResults = !1;
						else if (a.results && a.results.length > 0) this.response = a, this.newResults = !0, this.sinceId = a.max_id_str, this._sortByMagic(a.results), this.isRunning() && this._play();
						else if ((this._isProfileWidget || this._isFavsWidget || this._isListWidget) && z.array(a) && a.length) {
							this.newResults = !0;
							if (!this._profileImage && this._isProfileWidget) {
								var b = a[0].user.screen_name;
								this.setProfileImage('/images/sidenav/twitter_ubilogo.gif');
							}
							this.sinceId = a[0].id_str, this._sortByMagic(a), this.isRunning() && this._play()
						} else this.newResults = !1;
						this._setUrl(), this._isLive && this.decay()
					},
					_play: function () {
						var b = this;
						this.runOnce && (this._hasNewSearchResults = !0), this._avatars && this._preloadImages(this.results), this._isRelativeTime && (this._behavior == "all" || this._behavior == "preloaded") && a(this.byClass("twtr-timestamp", "a", !0), function (a) {
							a.innerHTML = C(a.getAttribute("time"))
						});
						if (!this._isLive || this._behavior == "all" || this._behavior == "preloaded") {
							a(this.results, function (a) {
								a.retweeted_status && (a = a.retweeted_status), b._isProfileWidget && (a.from_user = a.user.screen_name, a.profile_image_url = a.user.profile_image_url);
								if (b._isFavsWidget || b._isListWidget) a.from_user = a.user.screen_name, a.profile_image_url = a.user.profile_image_url;
								a.id = a.id_str, b._createTweet({
									id: a.id,
									user: a.from_user,
									tweet: D.clean(a.text),
									avatar: a.profile_image_url,
									created_at: a.created_at,
									needle: a
								});
								var c = b.tweet.element;
								b._behavior == "all" ? b._appendSlideFade(c) : b._appendTweet(c)
							});
							if (this._behavior != "preloaded") return this
						}
						return this
					},
					_normalizeTweet: function (a) {
						var b = this;
						a.views++, this._isProfileWidget && (a.from_user = b.username, a.profile_image_url = a.user.profile_image_url);
						if (this._isFavsWidget || this._isListWidget) a.from_user = a.user.screen_name, a.profile_image_url = a.user.profile_image_url;
						this._isFullScreen && (a.profile_image_url = a.profile_image_url.replace(/_normal\./, "_bigger.")), a.id = a.id_str, this._createTweet({
							id: a.id,
							user: a.from_user,
							tweet: D.clean(a.text),
							avatar: a.profile_image_url,
							created_at: a.created_at,
							needle: a
						})._appendSlideFade()
					},
					_insertNewResultsNumber: function () {
						if (!this._hasNewSearchResults) this._hasNewSearchResults = !1;
						else if (this.runOnce && this._isSearchWidget) {
							var a = this.response.total > this.rpp ? this.response.total : this.response.results.length,
								b = a > 1 ? "s" : "",
								c = this.response.warning && this.response.warning.match(/adjusted since_id/) ? "more than" : "",
								d = document.createElement("div");
							w.add(d, "twtr-new-results"), d.innerHTML = '<div class="twtr-results-inner"> &nbsp; </div><div class="twtr-results-hr"> &nbsp; </div><span>' + c + " <strong>" + a + "</strong> new tweet" + b + "</span>", r(d, this.byClass("twtr-reference-tweet", "div")), this._hasNewSearchResults = !1
						}
					},
					_preloadImages: function (b) {
						this._isProfileWidget || this._isFavsWidget || this._isListWidget ? a(b, function (a) {
							var b = new Image;
							b.src = g(a.user.profile_image_url)
						}) : a(b, function (a) {
							(new Image).src = g(a.profile_image_url)
						})
					},
					_decayDecider: function () {
						var a = !1;
						this.runOnce ? this.newResults && (a = !0) : (this.runOnce = !0, a = !0);
						return a
					},
					start: function () {
						var a = this;
						if (!this._rendered) {
							setTimeout(function () {
								a.start.call(a)
							}, 50);
							return this
						}
						this._isLive ? this.occasionalJob.start() : this._getResults(), this._isRunning = !0, this._hasOfficiallyStarted = !0;
						return this
					},
					stop: function () {
						this.occasionalJob.stop(), this.intervalJob && this.intervalJob.stop(), this._isRunning = !1;
						return this
					},
					pause: function () {
						this.isRunning() && this.intervalJob && (this.intervalJob.stop(), w.add(this.widgetEl, "twtr-paused"), this._isRunning = !1), this._resumeTimer && (clearTimeout(this._resumeTimer), this._resumeTimer = null);
						return this
					},
					resume: function () {
						var a = this;
						!this.isRunning() && this._hasOfficiallyStarted && this.intervalJob && (this._resumeTimer = window.setTimeout(function () {
							a.intervalJob.start(), a._isRunning = !0, w.remove(a.widgetEl, "twtr-paused")
						}, 2e3));
						return this
					},
					isRunning: function () {
						return this._isRunning
					},
					destroy: function () {
						this.stop(), this.clear(), this.runOnce = !1, this._hasOfficiallyStarted = !1, this._profileImage = !1, this._isLive = !0, this._tweetFilter = !1, this._isScroll = !1, this.newResults = !1, this._isRunning = !1, this.sinceId = 1, this.results = [], this.showedResults = [], this.occasionalJob.destroy(), this.jsonRequestRunning && clearTimeout(this.jsonRequestTimer), w.remove(this.widgetEl, "twtr-scroll"), this.removeEvents();
						return this
					}
				}
			}()
		}();
		if (window.__twitterIntentHandler) return;
		var c = /twitter\.com(\:\d{2,4})?\/intent\/(\w+)/,
			d = {
				tweet: !0,
				retweet: !0,
				favorite: !0
			},
			e = "scrollbars=yes,resizable=yes,toolbar=no,location=yes",
			f = screen.height,
			g = screen.width;
		document.addEventListener ? document.addEventListener("click", h, !1) : document.attachEvent && document.attachEvent("onclick", h), window.__twitterIntentHandler = !0
	}
}()
