if (!window.twttr) { window.twttr = {} } (function() { twttr.txt = {}; twttr.txt.regexen = {}; var C = { "&": "&", ">": ">", "<": "<", '"': """, "'": "'" }; twttr.txt.htmlEscape = function(R) { return R && R.replace(/[&"'><]/g, function(S) { return C[S] }) }; function D(S, R) { R = R || ""; if (typeof S !== "string") { if (S.global && R.indexOf("g") < 0) { R += "g" } if (S.ignoreCase && R.indexOf("i") < 0) { R += "i" } if (S.multiline && R.indexOf("m") < 0) { R += "m" } S = S.source } return new RegExp(S.replace(/#\{(\w+)\}/g, function(U, T) { var V = twttr.txt.regexen[T] || ""; if (typeof V !== "string") { V = V.source } return V }), R) } function E(S, R) { return S.replace(/#\{(\w+)\}/g, function(U, T) { return R[T] || "" }) } function B(S, U, R) { var T = String.fromCharCode(U); if (R !== U) { T += "-" + String.fromCharCode(R) } S.push(T); return S } var J = String.fromCharCode; var H = [J(32), J(133), J(160), J(5760), J(6158), J(8232), J(8233), J(8239), J(8287), J(12288)]; B(H, 9, 13); B(H, 8192, 8202); twttr.txt.regexen.spaces_group = D(H.join("")); twttr.txt.regexen.spaces = D("[" + H.join("") + "]"); twttr.txt.regexen.punct = /\!'#%&'\(\)*\+,\\\-\.\/:;<=>\?@\[\]\^_{|}~/; twttr.txt.regexen.atSigns = /[@ï¼ ]/; twttr.txt.regexen.extractMentions = D(/(^|[^a-zA-Z0-9_])(#{atSigns})([a-zA-Z0-9_]{1,20})(?=(.|$))/g); twttr.txt.regexen.extractReply = D(/^(?:#{spaces})*#{atSigns}([a-zA-Z0-9_]{1,20})/); twttr.txt.regexen.listName = /[a-zA-Z][a-zA-Z0-9_\-\u0080-\u00ff]{0,24}/; twttr.txt.regexen.extractMentionsOrLists = D(/(^|[^a-zA-Z0-9_])(#{atSigns})([a-zA-Z0-9_]{1,20})(\/[a-zA-Z][a-zA-Z0-9_\-]{0,24})?(?=(.|$))/g); var N = []; B(N, 1024, 1279); B(N, 1280, 1319); B(N, 11744, 11775); B(N, 42560, 42655); B(N, 4352, 4607); B(N, 12592, 12677); B(N, 43360, 43391); B(N, 44032, 55215); B(N, 55216, 55295); B(N, 65441, 65500); B(N, 12449, 12538); B(N, 12540, 12542); B(N, 65382, 65439); B(N, 65392, 65392); B(N, 65296, 65305); B(N, 65313, 65338); B(N, 65345, 65370); B(N, 12353, 12438); B(N, 12441, 12446); B(N, 13312, 19903); B(N, 19968, 40959); B(N, 173824, 177983); B(N, 177984, 178207); B(N, 194560, 195103); B(N, 12293, 12293); B(N, 12347, 12347); twttr.txt.regexen.nonLatinHashtagChars = D(N.join("")); twttr.txt.regexen.latinAccentChars = D("ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖØÙÚÛÜÃÞßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþş\\303\\277"); twttr.txt.regexen.endScreenNameMatch = D(/^(?:#{atSigns}|[#{latinAccentChars}]|:\/\/)/); twttr.txt.regexen.hashtagBoundary = D(/(?:^|$|#{spaces}|[「ã€ã€‚ã€.,!ï¼??:;"'])/); twttr.txt.regexen.hashtagAlpha = D(/[a-z_#{latinAccentChars}#{nonLatinHashtagChars}]/i); twttr.txt.regexen.hashtagAlphaNumeric = D(/[a-z0-9_#{latinAccentChars}#{nonLatinHashtagChars}]/i); twttr.txt.regexen.autoLinkHashtags = D(/(#{hashtagBoundary})(#|#)(#{hashtagAlphaNumeric}*#{hashtagAlpha}#{hashtagAlphaNumeric}*)/gi); twttr.txt.regexen.autoLinkUsernamesOrLists = /(^|[^a-zA-Z0-9_]|RT:?)([@ï¼ ]+)([a-zA-Z0-9_]{1,20})(\/[a-zA-Z][a-zA-Z0-9_\-]{0,24})?/g; twttr.txt.regexen.autoLinkEmoticon = /(8\-\#|8\-E|\+\-\(|\`\@|\`O|\<\|:~\(|\}:o\{|:\-\[|\>o\<|X\-\/|\[:-\]\-I\-|\/\/\/\/Ö\\\\\\\\|\(\|:\|\/\)|∑:\*\)|\( \| \))/g; twttr.txt.regexen.validPrecedingChars = D(/(?:[^-\/"'!=A-Za-z0-9_@ï¼ \.]|^)/); twttr.txt.regexen.invalidDomainChars = E("\u00A0#{punct}#{spaces_group}", twttr.txt.regexen); twttr.txt.regexen.validDomainChars = D(/[^#{invalidDomainChars}]/); twttr.txt.regexen.validSubdomain = D(/(?:(?:#{validDomainChars}(?:[_-]|#{validDomainChars})*)?#{validDomainChars}\.)/); twttr.txt.regexen.validDomainName = D(/(?:(?:#{validDomainChars}(?:-|#{validDomainChars})*)?#{validDomainChars}\.)/); twttr.txt.regexen.validGTLD = D(/(?:(?:aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel)(?=[^a-zA-Z]|$))/); twttr.txt.regexen.validCCTLD = D(/(?:(?:ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)(?=[^a-zA-Z]|$))/); twttr.txt.regexen.validPunycode = D(/(?:xn--[0-9a-z]+)/); twttr.txt.regexen.validDomain = D(/(?:#{validSubdomain}*#{validDomainName}(?:#{validGTLD}|#{validCCTLD}|#{validPunycode}))/); twttr.txt.regexen.validShortDomain = D(/^#{validDomainName}#{validCCTLD}$/); twttr.txt.regexen.validPortNumber = D(/[0-9]+/); twttr.txt.regexen.validGeneralUrlPathChars = D(/[a-z0-9!\*';:=\+\$\/%#\[\]\-_,~|{latinAccentChars}]/i); twttr.txt.regexen.wikipediaDisambiguation = D(/(?:\(#{validGeneralUrlPathChars}+\))/i); twttr.txt.regexen.validUrlPathChars = D(/(?:#{wikipediaDisambiguation}|@#{validGeneralUrlPathChars}+\/|[\.,]?#{validGeneralUrlPathChars}?)/i); twttr.txt.regexen.validUrlPathEndingChars = D(/(?:[\+\-a-z0-9=_#\/#{latinAccentChars}]|#{wikipediaDisambiguation})/i); twttr.txt.regexen.validUrlQueryChars = /[a-z0-9!\*'\(\);:&=\+\$\/%#\[\]\-_\.,~|]/i; twttr.txt.regexen.validUrlQueryEndingChars = /[a-z0-9_&=#\/]/i; twttr.txt.regexen.extractUrl = D("((#{validPrecedingChars})((https?:\\/\\/)?(#{validDomain})(?::(#{validPortNumber}))?(\\/(?:#{validUrlPathChars}+#{validUrlPathEndingChars}|#{validUrlPathChars}+#{validUrlPathEndingChars}?|#{validUrlPathEndingChars})?)?(\\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?))", "gi"); twttr.txt.regexen.validateUrlUnreserved = /[a-z0-9\-._~]/i; twttr.txt.regexen.validateUrlPctEncoded = /(?:%[0-9a-f]{2})/i; twttr.txt.regexen.validateUrlSubDelims = /[!$&'()*+,;=]/i; twttr.txt.regexen.validateUrlPchar = D("(?:#{validateUrlUnreserved}|#{validateUrlPctEncoded}|#{validateUrlSubDelims}|[:|@])", "i"); twttr.txt.regexen.validateUrlScheme = /(?:[a-z][a-z0-9+\-.]*)/i; twttr.txt.regexen.validateUrlUserinfo = D("(?:#{validateUrlUnreserved}|#{validateUrlPctEncoded}|#{validateUrlSubDelims}|:)*", "i"); twttr.txt.regexen.validateUrlDecOctet = /(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9]{2})|(?:2[0-4][0-9])|(?:25[0-5]))/i; twttr.txt.regexen.validateUrlIpv4 = D(/(?:#{validateUrlDecOctet}(?:\.#{validateUrlDecOctet}){3})/i); twttr.txt.regexen.validateUrlIpv6 = /(?:\[[a-f0-9:\.]+\])/i; twttr.txt.regexen.validateUrlIp = D("(?:#{validateUrlIpv4}|#{validateUrlIpv6})", "i"); twttr.txt.regexen.validateUrlSubDomainSegment = /(?:[a-z0-9](?:[a-z0-9_\-]*[a-z0-9])?)/i; twttr.txt.regexen.validateUrlDomainSegment = /(?:[a-z0-9](?:[a-z0-9\-]*[a-z0-9])?)/i; twttr.txt.regexen.validateUrlDomainTld = /(?:[a-z](?:[a-z0-9\-]*[a-z0-9])?)/i; twttr.txt.regexen.validateUrlDomain = D(/(?:(?:#{validateUrlSubDomainSegment]}\.)*(?:#{validateUrlDomainSegment]}\.)#{validateUrlDomainTld})/i); twttr.txt.regexen.validateUrlHost = D("(?:#{validateUrlIp}|#{validateUrlDomain})", "i"); twttr.txt.regexen.validateUrlUnicodeSubDomainSegment = /(?:(?:[a-z0-9]|[^\u0000-\u007f])(?:(?:[a-z0-9_\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; twttr.txt.regexen.validateUrlUnicodeDomainSegment = /(?:(?:[a-z0-9]|[^\u0000-\u007f])(?:(?:[a-z0-9\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; twttr.txt.regexen.validateUrlUnicodeDomainTld = /(?:(?:[a-z]|[^\u0000-\u007f])(?:(?:[a-z0-9\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; twttr.txt.regexen.validateUrlUnicodeDomain = D(/(?:(?:#{validateUrlUnicodeSubDomainSegment}\.)*(?:#{validateUrlUnicodeDomainSegment}\.)#{validateUrlUnicodeDomainTld})/i); twttr.txt.regexen.validateUrlUnicodeHost = D("(?:#{validateUrlIp}|#{validateUrlUnicodeDomain})", "i"); twttr.txt.regexen.validateUrlPort = /[0-9]{1,5}/; twttr.txt.regexen.validateUrlUnicodeAuthority = D("(?:(#{validateUrlUserinfo})@)?(#{validateUrlUnicodeHost})(?::(#{validateUrlPort}))?", "i"); twttr.txt.regexen.validateUrlAuthority = D("(?:(#{validateUrlUserinfo})@)?(#{validateUrlHost})(?::(#{validateUrlPort}))?", "i"); twttr.txt.regexen.validateUrlPath = D(/(\/#{validateUrlPchar}*)*/i); twttr.txt.regexen.validateUrlQuery = D(/(#{validateUrlPchar}|\/|\?)*/i); twttr.txt.regexen.validateUrlFragment = D(/(#{validateUrlPchar}|\/|\?)*/i); twttr.txt.regexen.validateUrlUnencoded = D("^(?:([^:/?#]+):\\/\\/)?([^/?#]*)([^?#]*)(?:\\?([^#]*))?(?:#(.*))?$", "i"); var A = "tweet-url"; var G = "list-slug"; var Q = "username"; var M = "hashtag"; var O = ' rel="nofollow"'; function K(T) { var S = {}; for (var R in T) { if (T.hasOwnProperty(R)) { S[R] = T[R] } } return S } twttr.txt.autoLink = function(S, R) { R = K(R || {}); return twttr.txt.autoLinkUsernamesOrLists(twttr.txt.autoLinkUrlsCustom(twttr.txt.autoLinkHashtags(S, R), R), R) }; twttr.txt.autoLinkUsernamesOrLists = function(X, V) { V = K(V || {}); V.urlClass = V.urlClass || A; V.listClass = V.listClass || G; V.usernameClass = V.usernameClass || Q; V.usernameUrlBase = V.usernameUrlBase || "http://twitter.com/"; V.listUrlBase = V.listUrlBase || "http://twitter.com/"; if (!V.suppressNoFollow) { var R = O } var W = "", U = twttr.txt.splitTags(X); for (var T = 0; T < U.length; T++) { var S = U[T]; if (T !== 0) { W += ((T % 2 === 0) ? ">" : "<") } if (T % 4 !== 0) { W += S } else { W += S.replace(twttr.txt.regexen.autoLinkUsernamesOrLists, function(f, i, a, e, Y, c, j) { var Z = j.slice(c + f.length); var h = { before: i, at: a, user: twttr.txt.htmlEscape(e), slashListname: twttr.txt.htmlEscape(Y), extraHtml: R, preChunk: "", chunk: twttr.txt.htmlEscape(j), postChunk: "" }; for (var b in V) { if (V.hasOwnProperty(b)) { h[b] = V[b] } } if (Y && !V.suppressLists) { var g = h.chunk = E("#{user}#{slashListname}", h); h.list = twttr.txt.htmlEscape(g.toLowerCase()); return E('#{before}#{at}#{preChunk}#{chunk}#{postChunk}', h) } else { if (Z && Z.match(twttr.txt.regexen.endScreenNameMatch)) { return f } else { h.chunk = twttr.txt.htmlEscape(e); h.dataScreenName = !V.suppressDataScreenName ? E('data-screen-name="#{chunk}" ', h) : ""; return E('#{before}#{at}#{preChunk}#{chunk}#{postChunk}', h) } } }) } } return W }; twttr.txt.autoLinkHashtags = function(T, S) { S = K(S || {}); S.urlClass = S.urlClass || A; S.hashtagClass = S.hashtagClass || M; S.hashtagUrlBase = S.hashtagUrlBase || "http://twitter.com/search?q=%23"; if (!S.suppressNoFollow) { var R = O } return T.replace(twttr.txt.regexen.autoLinkHashtags, function(V, W, X, Z) { var Y = { before: W, hash: twttr.txt.htmlEscape(X), preText: "", text: twttr.txt.htmlEscape(Z), postText: "", extraHtml: R }; for (var U in S) { if (S.hasOwnProperty(U)) { Y[U] = S[U] } } return E('#{before}#{hash}#{preText}#{text}#{postText}', Y) }) }; twttr.txt.autoLinkUrlsCustom = function(U, S) { S = K(S || {}); if (!S.suppressNoFollow) { S.rel = "nofollow" } if (S.urlClass) { S["class"] = S.urlClass; delete S.urlClass } var V, T, R; if (S.urlEntities) { V = {}; for (T = 0, R = S.urlEntities.length; T < R; T++) { V[S.urlEntities[T].url] = S.urlEntities[T] } } delete S.suppressNoFollow; delete S.suppressDataScreenName; delete S.listClass; delete S.usernameClass; delete S.usernameUrlBase; delete S.listUrlBase; return U.replace(twttr.txt.regexen.extractUrl, function(e, h, g, X, i, a, c, j, W) { var Z; if (i) { var Y = ""; for (var b in S) { Y += E(' #{k}="#{v}" ', { k: b, v: S[b].toString().replace(/"/, """).replace(/, "<").replace(/>/, ">") }) } var f = { before: g, htmlAttrs: Y, url: twttr.txt.htmlEscape(X) }; if (V && V[X] && V[X].display_url) { f.displayUrl = twttr.txt.htmlEscape(V[X].display_url) } else { f.displayUrl = f.url } return E('#{before}#{displayUrl}', f) } else { return h } }) }; twttr.txt.extractMentions = function(U) { var V = [], R = twttr.txt.extractMentionsWithIndices(U); for (var T = 0; T < R.length; T++) { var S = R[T].screenName; V.push(S) } return V }; twttr.txt.extractMentionsWithIndices = function(T) { if (!T) { return [] } var S = [], R = 0; T.replace(twttr.txt.regexen.extractMentions, function(U, Y, X, V, Z) { if (!Z.match(twttr.txt.regexen.endScreenNameMatch)) { var W = T.indexOf(X + V, R); R = W + V.length + 1; S.push({ screenName: V, indices: [W, R] }) } }); return S }; twttr.txt.extractMentionsOrListsWithIndices = function(T) { if (!T) { return [] } var S = [], R = 0; T.replace(twttr.txt.regexen.extractMentionsOrLists, function(U, Y, X, V, a, Z) { if (!Z.match(twttr.txt.regexen.endScreenNameMatch)) { a = a || ""; var W = T.indexOf(X + V + a, R); R = W + V.length + a.length + 1; S.push({ screenName: V, listSlug: a, indices: [W, R] }) } }); return S }; twttr.txt.extractReplies = function(S) { if (!S) { return null } var R = S.match(twttr.txt.regexen.extractReply); if (!R) { return null } return R[1] }; twttr.txt.extractUrls = function(U) { var T = [], R = twttr.txt.extractUrlsWithIndices(U); for (var S = 0; S < R.length; S++) { T.push(R[S].url) } return T }; twttr.txt.extractUrlsWithIndices = function(T) { if (!T) { return [] } var S = [], R = 0; T.replace(twttr.txt.regexen.extractUrl, function(Z, c, b, U, d, W, V, e, a) { if (!d && !e && W.match(twttr.txt.regexen.validShortDomain)) { return } var X = T.indexOf(U, Y), Y = X + U.length; S.push({ url: U, indices: [X, Y] }) }); return S }; twttr.txt.extractHashtags = function(U) { var T = [], S = twttr.txt.extractHashtagsWithIndices(U); for (var R = 0; R < S.length; R++) { T.push(S[R].hashtag) } return T }; twttr.txt.extractHashtagsWithIndices = function(T) { if (!T) { return [] } var S = [], R = 0; T.replace(twttr.txt.regexen.autoLinkHashtags, function(U, X, Y, W) { var V = T.indexOf(Y + W, R); R = V + W.length + 1; S.push({ hashtag: W, indices: [V, R] }) }); return S }; twttr.txt.splitTags = function(X) { var R = X.split("<"), W, V = [], U; for (var T = 0; T < R.length; T += 1) { U = R[T]; if (!U) { V.push("") } else { W = U.split(">"); for (var S = 0; S < W.length; S += 1) { V.push(W[S]) } } } return V }; twttr.txt.hitHighlight = function(c, e, U) { var a = "em"; e = e || []; U = U || {}; if (e.length === 0) { return c } var T = U.tag || a, d = ["<" + T + ">", "" + T + ">"], b = twttr.txt.splitTags(c), f, k, h, X = "", R = 0, Y = b[0], Z = 0, S = 0, o = false, V = Y, g = [], W, l, p, n, m; for (k = 0; k < e.length; k += 1) { for (h = 0; h < e[k].length; h += 1) { g.push(e[k][h]) } } for (W = 0; W < g.length; W += 1) { l = g[W]; p = d[W % 2]; n = false; while (Y != null && l >= Z + Y.length) { X += V.slice(S); if (o && l === Z + V.length) { X += p; n = true } if (b[R + 1]) { X += "<" + b[R + 1] + ">" } Z += V.length; S = 0; R += 2; Y = b[R]; V = Y; o = false } if (!n && Y != null) { m = l - Z; X += V.slice(S, m) + p; S = m; if (W % 2 === 0) { o = true } else { o = false } } else { if (!n) { n = true; X += p } } } if (Y != null) { if (S < V.length) { X += V.slice(S) } for (W = R + 1; W < b.length; W += 1) { X += (W % 2 === 0 ? b[W] : "<" + b[W] + ">") } } return X }; var F = 140; var P = [J(65534), J(65279), J(65535), J(8234), J(8235), J(8236), J(8237), J(8238)]; twttr.txt.isInvalidTweet = function(S) { if (!S) { return "empty" } if (S.length > F) { return "too_long" } for (var R = 0; R < P.length; R++) { if (S.indexOf(P[R]) >= 0) { return "invalid_characters" } } return false }; twttr.txt.isValidTweetText = function(R) { return !twttr.txt.isInvalidTweet(R) }; twttr.txt.isValidUsername = function(S) { if (!S) { return false } var R = twttr.txt.extractMentions(S); return R.length === 1 && R[0] === S.slice(1) }; var L = D(/^#{autoLinkUsernamesOrLists}$/); twttr.txt.isValidList = function(S) { var R = S.match(L); return !!(R && R[1] == "" && R[4]) }; twttr.txt.isValidHashtag = function(S) { if (!S) { return false } var R = twttr.txt.extractHashtags(S); return R.length === 1 && R[0] === S.slice(1) }; twttr.txt.isValidUrl = function(R, W, Z) { if (W == null) { W = true } if (Z == null) { Z = true } if (!R) { return false } var S = R.match(twttr.txt.regexen.validateUrlUnencoded); if (!S || S[0] !== R) { return false } var T = S[1], U = S[2], Y = S[3], X = S[4], V = S[5]; if (!((!Z || (I(T, twttr.txt.regexen.validateUrlScheme) && T.match(/^https?$/i))) && I(Y, twttr.txt.regexen.validateUrlPath) && I(X, twttr.txt.regexen.validateUrlQuery, true) && I(V, twttr.txt.regexen.validateUrlFragment, true))) { return false } return (W && I(U, twttr.txt.regexen.validateUrlUnicodeAuthority)) || (!W && I(U, twttr.txt.regexen.validateUrlAuthority)) }; function I(S, T, R) { if (!R) { return ((typeof S === "string") && S.match(T) && RegExp["$&"] === S) } return (!S || (S.match(T) && RegExp["$&"] === S)) } if (typeof module != "undefined" && module.exports) { module.exports = twttr.txt } } ()); TWTR = window.TWTR || {}; (function() { if (TWTR && TWTR.Widget) { return } function H(K, N, J) { for (var M = 0, L = K.length; M < L; ++M) { N.call(J || window, K[M], M, K) } } function B(J, K, L) { (Array.prototype.filter || function(Q, R) { var P = R || window; var M = []; for (var O = 0, N = this.length; O < N; ++O) { if (!Q.call(P, this[O], O, this)) { continue } M.push(this[O]) } return M }).call(J, K, L) } function I(J, L, K) { this.el = J; this.prop = L; this.from = K.from; this.to = K.to; this.time = K.time; this.callback = K.callback; this.animDiff = this.to - this.from } I.canTransition = function() { var J = document.createElement("twitter"); J.style.cssText = "-webkit-transition: all .5s linear;"; return !!J.style.webkitTransitionProperty } (); I.prototype._setStyle = function(J) { switch (this.prop) { case "opacity": this.el.style[this.prop] = J; this.el.style.filter = "alpha(opacity=" + J * 100 + ")"; break; default: this.el.style[this.prop] = J + "px"; break } }; I.prototype._animate = function() { var J = 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) }; I.prototype.start = function() { var J = this; this.startTime = new Date(); this.timer = setInterval(function() { J._animate.call(J) }, 15) }; TWTR.Widget = function(J) { this.init(J) }; (function() { var X = window.twttr || {}; var V = location.protocol.match(/^https/); var K = function(m) { return V ? m.profile_image_url_https : m.profile_image_url }; var l = {}; var j = function(n) { var m = l[n]; if (!m) { m = new RegExp("(?:^|\\s+)" + n + "(?:\\s+|$)"); l[n] = m } return m }; var L = function(q, v, s, t) { var v = v || "*"; var s = s || document; var n = [], m = s.getElementsByTagName(v), u = j(q); for (var o = 0, p = m.length; o < p; ++o) { if (u.test(m[o].className)) { n[n.length] = m[o]; if (t) { t.call(m[o], m[o]) } } } return n }; var k = function() { var m = navigator.userAgent; return { ie: m.match(/MSIE\s([^;]*)/)} } (); var O = function(m) { if (typeof m == "string") { return document.getElementById(m) } return m }; var c = function(m) { return m.replace(/^\s+|\s+$/g, "") }; var b = function() { var m = self.innerHeight; var n = document.compatMode; if ((n || k.ie)) { m = (n == "CSS1Compat") ? document.documentElement.clientHeight : document.body.clientHeight } return m }; var i = function(o, m) { var n = o.target || o.srcElement; return m(n) }; var Z = function(n) { try { if (n && 3 == n.nodeType) { return n.parentNode } else { return n } } catch (m) { } }; var a = function(n) { var m = n.relatedTarget; if (!m) { if (n.type == "mouseout") { m = n.toElement } else { if (n.type == "mouseover") { m = n.fromElement } } } return Z(m) }; var e = function(n, m) { m.parentNode.insertBefore(n, m.nextSibling) }; var f = function(n) { try { n.parentNode.removeChild(n) } catch (m) { } }; var d = function(m) { return m.firstChild }; var J = function(o) { var n = a(o); while (n && n != this) { try { n = n.parentNode } catch (m) { n = this } } if (n != this) { return true } return false }; var N = function() { if (document.defaultView && document.defaultView.getComputedStyle) { return function(n, q) { var p = null; var o = document.defaultView.getComputedStyle(n, ""); if (o) { p = o[q] } var m = n.style[q] || p; return m } } else { if (document.documentElement.currentStyle && k.ie) { return function(m, o) { var n = m.currentStyle ? m.currentStyle[o] : null; return (m.style[o] || n) } } } } (); var h = { has: function(m, n) { return new RegExp("(^|\\s)" + n + "(\\s|$)").test(O(m).className) }, add: function(m, n) { if (!this.has(m, n)) { O(m).className = c(O(m).className) + " " + n } }, remove: function(m, n) { if (this.has(m, n)) { O(m).className = O(m).className.replace(new RegExp("(^|\\s)" + n + "(\\s|$)", "g"), "") } } }; var M = { add: function(o, n, m) { if (o.addEventListener) { o.addEventListener(n, m, false) } else { o.attachEvent("on" + n, function() { m.call(o, window.event) }) } }, remove: function(o, n, m) { if (o.removeEventListener) { o.removeEventListener(n, m, false) } else { o.detachEvent("on" + n, m) } } }; var U = function() { function n(p) { return parseInt((p).substring(0, 2), 16) } function m(p) { return parseInt((p).substring(2, 4), 16) } function o(p) { return parseInt((p).substring(4, 6), 16) } return function(p) { return [n(p), m(p), o(p)] } } (); var P = { bool: function(m) { return typeof m === "boolean" }, def: function(m) { return !(typeof m === "undefined") }, number: function(m) { return typeof m === "number" && isFinite(m) }, string: function(m) { return typeof m === "string" }, fn: function(m) { return typeof m === "function" }, array: function(m) { if (m) { return P.number(m.length) && P.fn(m.splice) } return false } }; var T = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var Y = function(p) { var u = new Date(p); if (k.ie) { u = Date.parse(p.replace(/( \+)/, " UTC$1")) } var n = ""; var m = function() { var s = u.getHours(); if (s > 0 && s < 13) { n = "am"; return s } else { if (s < 1) { n = "am"; return 12 } else { n = "pm"; return s - 12 } } } (); var o = u.getMinutes(); var t = u.getSeconds(); function q() { var s = new Date(); if (s.getDate() != u.getDate() || s.getYear() != u.getYear() || s.getMonth() != u.getMonth()) { return " - " + T[u.getMonth()] + " " + u.getDate() + ", " + u.getFullYear() } else { return "" } } return m + ":" + o + n + q() }; var R = function(t) { var v = new Date(); var q = new Date(t); if (k.ie) { q = Date.parse(t.replace(/( \+)/, " UTC$1")) } var u = v - q; var n = 1000, o = n * 60, p = o * 60, s = p * 24, m = s * 7; if (isNaN(u) || u < 0) { return "" } if (u < n * 2) { return "right now" } if (u < o) { return Math.floor(u / n) + " seconds ago" } if (u < o * 2) { return "about 1 minute ago" } if (u < p) { return Math.floor(u / o) + " minutes ago" } if (u < p * 2) { return "about 1 hour ago" } if (u < s) { return Math.floor(u / p) + " hours ago" } if (u > s && u < s * 2) { return "yesterday" } if (u < s * 365) { return Math.floor(u / s) + " days ago" } else { return "over a year ago" } }; function g(p) { var n = {}; for (var m in p) { if (p.hasOwnProperty(m)) { n[m] = p[m] } } return n } X.txt.autoLink = function(n, m) { m = options_links = m || {}; if (m.hasOwnProperty("extraHtml")) { options_links = g(m); delete options_links.extraHtml } return X.txt.autoLinkUsernamesOrLists(X.txt.autoLinkUrlsCustom(X.txt.autoLinkHashtags(n, m), options_links), m) }; TWTR.Widget.ify = { autoLink: function(m) { options = { extraHtml: "target=_blank", target: "_blank", urlEntities: [] }; if (m.needle.entities) { if (m.needle.entities.urls) { options.urlEntities = m.needle.entities.urls } if (m.needle.entities.media) { options.urlEntities = options.urlEntities.concat(m.needle.entities.media) } } if (X && X.txt) { return X.txt.autoLink(m.needle.text, options).replace(/([@ï¼ ]+)(<[^>]*>)/g, "$2$1") } else { return m.needle.text } } }; function W(n, o, m) { this.job = n; this.decayFn = o; this.interval = m; this.decayRate = 1; this.decayMultiplier = 1.25; this.maxDecayTime = 3 * 60 * 1000 } W.prototype = { start: function() { this.stop().run(); return this }, stop: function() { if (this.worker) { window.clearTimeout(this.worker) } return this }, run: function() { var m = this; this.job(function() { m.decayRate = m.decayFn() ? Math.max(1, m.decayRate / m.decayMultiplier) : m.decayRate * m.decayMultiplier; var n = m.interval * m.decayRate; n = (n >= m.maxDecayTime) ? m.maxDecayTime : n; n = Math.floor(n); m.worker = window.setTimeout(function() { m.run.call(m) }, n) }) }, destroy: function() { this.stop(); this.decayRate = 1; return this } }; function Q(n, m, o) { this.time = n || 6000; this.loop = m || false; this.repeated = 0; this.callback = o; this.haystack = [] } Q.prototype = { set: function(m) { this.haystack = m }, add: function(m) { this.haystack.unshift(m) }, start: function() { if (this.timer) { return this } this._job(); var m = this; this.timer = setInterval(function() { m._job.call(m) }, this.time); return this }, stop: function() { if (this.timer) { window.clearInterval(this.timer); this.timer = null } return this }, _next: function() { var m = this.haystack.shift(); if (m && this.loop) { this.haystack.push(m) } return m || null }, _job: function() { var m = this._next(); if (m) { this.callback(m) } return this } }; function S(n) { var m = '
' + n.user + " " + n.tweet + ' ' + n.created_at + ' · reply · retweet · favorite