if (!Array.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.map = function(E, F) { var D = F || window; var A = []; for (var C = 0, B = this.length; C < B; ++C) { A.push(E.call(D, this[C], C, this)) } return A }; 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.every = function(D, E) { var C = E || window; for (var B = 0, A = this.length; B < A; ++B) { if (!D.call(C, this[B], B, this)) { return false } } return true }; 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 } } Array.prototype.contains = function(A) { if (Array.contains) { return this.contains(A) } return this.indexOf(A) > -1 }; Array.prototype.insert = function(A) { if (!this.contains(A)) { this.push(A) } }; if (!Array.remove) { Array.remove = function(D, C, B) { var A = D.slice((B || C) + 1 || D.length); D.length = C < 0 ? D.length + C: C; return D.push.apply(D, A) } } Function.prototype.method = function(A, B) { this.prototype[A] = B; return this }; Function.prototype.augmentProto = function(A) { for (key in A) { this.prototype[key] = A[key] } return this }; Function.prototype.pBind = function(B) { var A = this; return function() { return A.apply(B, arguments) } }; Function.prototype.widget = function() { this.prototype.bind = function(B, A) { this.$root.bind(B, A); return this }; this.prototype.trigger = function(A, B) { this.$root.trigger(A, B) }; this.prototype.find = function(A) { return this.$root.find(A) }; return this }; String.prototype.toCamel = function() { return this.replace(/[-_\s]\D/gi, function(A) { return A.charAt(A.length - 1).toUpperCase() }) }; String.prototype.escapeHTML = function() { return this.replace(/&/g, "&").replace(/>/g, ">").replace(/").replace(/</g, "<").replace(/"/g, '"') }; String.prototype.stripTags = function() { return this.replace(/<\/?[^>]+>/gi, "").replace(/<|>/g, "") }; String.prototype.trim = function() { return this.replace(/^\s\s*/, "").replace(/\s\s*$/, "") }; window.twttr = window.twttr || {}; twttr.actionsTillReady = new Array("canTweet", "sidebarTab", "inPageLink"); twttr.augmentObject = function(B, C) { for (var A in C) { B[A] = C[A] } return B }; twttr.augmentObject(twttr, { namespaceOf: function(A) { return twttr.is.object(A) ? A: window }, merge: function() { var D = arguments; var E = D[0]; var H = arguments[arguments.length - 1]; var C = false; if (twttr.is.nil(E) || !twttr.is.def(E)) { if (D.length < 2) { return {} } [].shift.call(D); return this.merge.apply(this, D) } if (twttr.is.bool(H)) { C = H; [].pop.call(D) } for (var G = 1, B = D.length; G < B; G++) { var A = D[G]; for (var F in A) { if (C && A[F] && typeof A[F] === "object") { if (!E[F]) { E[F] = (A[F] instanceof Array) ? [] : {} } else { if (typeof E[F] !== "object") { E[F] = A[F] } } this.merge(E[F], A[F], true) } else { E[F] = A[F] } } } return E }, extend: function(B, C) { var A = function() {}; A.prototype = C.prototype; B.prototype = new A(); B.prototype.constructor = B; B.uber = C.prototype; if (C.prototype.constructor == Object.prototype.constructor) { C.prototype.constructor = C } }, klass: function(A, B) { return twttr.magic(A, B) }, augmentAndExtend: function(B, C, D) { var A = twttr.namespaceOf(B); A[C] = function() { A[C].uber.constructor.apply(this, arguments) }; twttr.extend(A[C], D); return A[C] }, auxo: function(C, D, B) { var A = twttr.is.object(B) ? B: twttr; return twttr.augmentAndExtend(A, C, D) }, augmentString: function(C, A) { var B = window; C.split(".").forEach(function(F, E, D) { B = B[F] = B[F] || (twttr.is.def(D[E + 1]) ? {}: A) }); return B }, magic: function(B, A) { if (twttr.is.string(B)) { return twttr.augmentString(B, A) } else { return twttr.augmentObject(B, A) } }, inspect: function(B) { console.clear(); var C = $(B); var H = C.data("events"); var A = 0; var G = 0; var E = []; var D = []; for (key in H) { E.push(key); A++; D.push("\n*******************\n"); D.push("Events for " + key + "\n\n"); for (fn in H[key]) { var F = H[key][fn]; G++; D.push(F.toString() + "\n") } } console.log("************* Summary *************"); console.log("for target", C); console.log(A + " types of events", E); console.log(G, "Total Event Listeners"); console.log("Event listeners assigned to target"); console.log(D.join(" ")) }, is: { bool: function(A) { return typeof A === "boolean" }, nil: function(A) { return A === null }, def: function(A) { return ! (typeof A === "undefined") }, number: function(A) { return typeof A === "number" && isFinite(A) }, fn: function(A) { return typeof A === "function" }, array: function(A) { return A ? this.number(A.length) && this.fn(A.splice) : false }, string: function(A) { return typeof A === "string" }, blank: function(A) { return A === "" }, falsy: function(A) { return A === false || A === null || A === undefined }, object: function(A) { return (A && (typeof A === "object" || this.fn(A))) || false } }, widget: function(A) { A.prototype.bind = function(C, B) { this.$element.bind(C, B) } } }); if (!window.console) { var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; window.console = {}; for (var i = 0; i < names.length; ++i) { window.console[names[i]] = function() {} } } function setupTranslationCallback() { if (!twttr.i18n_missing_interval) { twttr.i18n_missing_interval = window.setInterval(function() { if (twttr.i18n_missing && twttr.i18n_missing.length > 0) { $.ajax({ type: "POST", data: $.param({ authenticity_token: twttr.form_authenticity_token, location: window.location.href, "strings[]": twttr.i18n_missing }), url: "/translate/untranslated_javascript" }); twttr.i18n_missing = new Array() } }, 10000) } } function recordUntranslatedString(A) { if (!twttr.i18n_missing) { twttr.i18n_missing = new Array() } if (!twttr.i18n_missing_reported) { twttr.i18n_missing_reported = {} } if (!twttr.i18n_missing_reported[A]) { twttr.i18n_missing.push(encodeURIComponent(A)); twttr.i18n_missing_reported[A] = true } } function _(C, A) { if (twttr.i18n) { var B = twttr.i18n[C]; if (B) { C = B } else { recordUntranslatedString(C) } } return replaceParams(C, A) } function replaceParams(B, A) { if (A) { for (var C in A) { B = B.replace(new RegExp("\\%\\{" + C + "\\}", "gi"), A[C]) } } return B } var h = function() { var A = $("
"); return function(B) { return B ? A.text(B).html().replace(/\"/gi, """) : B } } (); function unh(A) { return A ? A.replace(/&(amp;)+/g, "&").replace(/&[a-z]+;/gi, function(B) { if (unh.HTML_ESCAPE_TOKENS[B]) { return unh.HTML_ESCAPE_TOKENS[B] } return B }) : A } window.unh.HTML_ESCAPE_TOKENS = { "<": "<", ">": ">", """: '"' }; function addSlashes(A) { return A.replace(/\'/g, "\\'").replace(/\"/g, '\\"') } var reverseString = function(A) { return A ? A.split("").reverse().join("") : A }; var numberWithDelimiter = function(B, A) { A = A ? A: ","; return B.toString().replace(/(.)(?=(.{3})+$)/g, "$1" + A) }; var timeAgo = function(C) { if (!C) { return false } var H = new Date(); var G = new Date(C); if (document.all) { G = Date.parse(C.replace(/( \+)/, " UTC$1")) } var D = H - G; var B = 1000, F = B * 60, A = F * 60; if (isNaN(D) || D < 0) { return false } var E = -1; $.each([5, 10, 20], function() { if (D < this * B) { E = this; return false } }); if (E != -1) { return _("less than %{time} seconds ago", { time: E }) } if (D < B * 40) { return _("half a minute ago") } if (D < F) { return _("less than a minute ago") } if (D < B * 90) { return _("1 minute ago") } if (D < F * 45) { return _("%{time} minutes ago", { time: Math.round(D / F) }) } if (D < F * 90) { return _("about 1 hour ago") } if (D < A * 24) { return _("about %{time} hours ago", { time: Math.round(D / A) }) } return G.toLocaleString().replace(/ GMT[+-][0-9]+:?[0-9]+/, "") }; var updateTimeAgo = function() { $(".timestamp").each(function() { var B = $(this); var A = timeAgo(B.meta().time); if (A && B.find("*").length == 0) { B.html(A) } }); $(".timestamp-title").each(function() { var B = $(this); var A = timeAgo(B.meta().time); if (A) { B.attr("title", A) } }) }; var DEBUG = false; $.extend({ log: function(A) { if (window.console) { console.log(A) } }, debug: function(A) { if (DEBUG) { console.log(A) } }, inspect: function(B) { var A = "{\n"; for (var C in B) { A += "\t" + C + ": " + B[C] + "\n" } A += "}"; console.log(A); return A }, getStackTrace: function() { var I = []; var C = false; try { D.dont.exist += 0 } catch(F) { if (F.stack) { var J = F.stack.split("\n"); for (var D = 0, E = J.length; D < E; D++) { I.push(J[D]) } I.shift(); C = true } else { if (window.opera && F.message) { var J = F.message.split("\n"); for (var D = 0, E = J.length; D < E; D++) { if (J[D].match(/^\s*[A-Za-z0-9\-_\$]+\(/)) { var H = J[D]; if (J[D + 1]) { H += " at " + J[D + 1]; D++ } I.push(H) } } I.shift(); C = true } } } if (!C) { var B = arguments.callee.caller; while (B) { var G = B.toString(); var A = G.substring(G.indexOf("function") + 8, G.indexOf("")) || "anonymous"; I.push(A); B = B.caller } } return I } }); (function() { if (document.all) { if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { var A = new Number(RegExp.$1); if (A >= 8) { $.browser.msie8 = true } else { if (A >= 7) { $.browser.msie7 = true } else { $.browser.msie6 = true } } } } })(); var _tmp = {}; twttr.augmentObject(twttr, { templates: {}, timeouts: {}, wait: function() { var A = {}; twttr.clearWait = function(B) { if (twttr.is.def(A[B])) { clearTimeout(B); delete A[B] } }; return function(E, C) { var B = "TIMER_" + (new Date()).getTime(); var D = setTimeout(function() { if (!twttr.is.def(A[B])) { return } E() }, C); A[B] = D; return B } } (), processJson: function(json) { if (typeof(json) == "object") { var evals = []; $.each(json, function(selector, content) { var c = selector.charAt(0); if (c == "$") { evals.push(content) } else { if (c == "!") { var notification = window[selector.substring(1) + "Notification"]; if (notification) { (new notification()).setMessage(content).show() } } else { var $contentPadded = $("
").html(content); var $content = $(selector, $contentPadded); if ($content.length == 1) { $(selector).replaceWith($content) } else { $(selector).html(content) } $(selector).show() } } }); $.each(evals, function(index, js) { if (js) { eval(js) } }) } }, googleAnalytics: function(A) { if (window.pageTracker) { window.pageTracker._trackEvent("Ajax", "refresh", A, null) } }, trackPageView: function(C, B, D) { if (window.pageTracker) { var A; if (C) { A = C.toString(); if (B) { A = "/search/tweets/" + encodeURIComponent(h(page.query)) } if (D) { A = A + D } window.pageTracker._trackPageview(A) } else { window.pageTracker._trackPageview() } } }, fadeAndReplace: function(A, B) { $(A).fadeOut("medium", function() { $(A).html(B) }); $(A).fadeIn("medium") }, error: function(A) { alert(A ? A: _("Whoops! Something went wrong. Please refresh the page and try again!")) }, loading: function() { $("#loader").fadeIn(200) }, loaded: function() { $("#loader").fadeOut(200) }, updateLocation: function(A, E) { if (!E) { E = document } if (A) { var D = A.replace(/^https?:\/\/.+?\//, "").replace(/#/gi, "%23").replace(/\s/gi, "+"); var C = D.replace(/[^\w\d_-].*$/, ""); var B = (C.length > 0) ? $(E).find("#" + C) : []; if (B.length > 0) { B.get(0).id = C + "_tmp_for_update_location" } E.location.hash = D; if (B.length > 0) { B.get(0).id = C } } }, NON_CHAR_KEY_CODES: [8, 9, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 91, 92, 93], isNonCharKeyCode: function(A) { return $.inArray(A.keyCode, twttr.NON_CHAR_KEY_CODES) != -1 || ((A.ctrlKey || A.metaKey) && $.inArray(A.keyCode, [67, 88]) != -1) } }); $.extend($.expr[":"], { onthepage: "($(elem).is(':visible') && $(elem).parents(':hidden').length == 0)" }); jQuery.fn.move = function(A) { var B = $(this).html(); $(this).remove(); $(A).html(B) }; jQuery.fn.meta = function() { var B = { type: "attr", name: "data" }; var C = $(this); if (C.length == 1) { return C.metadata(B) } else { var A = []; C.each(function() { A.push($(this).metadata(B)) }); return A } }; jQuery.fn.visible = function(A) { $(this).each(function() { $(this).css("visibility", A ? "visible": "hidden") }) }; jQuery.fn.isLoading = function() { $(this).addClass("loading") }; $.fn.isLoaded = function() { $(this).removeClass("loading") }; $.fn.replace_text = function(C, B) { var A = $(this).html(); if (A) { $(this).html(A.replace(C, B)) } }; var pluralize = function(C, B, A) { return C == 1 ? B: A }; var setDocumentTitle = function(A) { document.title = unh(A.stripTags()) || "" }; var addCountToDocumentTitle = function(A) { document.title = (A ? "(" + numberWithDelimiter(A) + ") ": "") + document.title.replace(/\([^)]*[0-9]\)\s+/gi, "") }; var getSessionUserScreenName = function() { var A; if (page.user_screenname) { A = page.user_screenname } else { if ($('meta[name="session-user-screen_name"]:first').get(0)) { A = $('meta[name="session-user-screen_name"]:first').get(0).content } else { A = $('meta[name="session-user-screen_name"]').get(0).content } } return A }; var sessionUserIsPageUser = function() { try { return $('meta[name="session-user-screen_name"]:first').get(0).content == $('meta[name="page-user-screen_name"]:first').get(0).content } catch(A) { return false } }; $.fn.focusEnd = function() { return this.each(function() { var A = this; if (A.style.display != "none") { if ($.browser.msie) { A.focus(); var B = A.createTextRange(); B.collapse(false); B.select() } else { A.setSelectionRange(A.value.length, A.value.length); A.focus() } } }) }; $.fn.focusFirstTextField = function() { return this.find("input[type=text]:visible:enabled:first").focus().length > 0 }, $.fn.focusFirstTextArea = function() { return this.find("textarea:visible:enabled:first").focus().length > 0 }; $.fn.focusFirstTexttarget = function() { return this.focusFirstTextField() || this.focusFirstTextArea() }; $.fn.maxLength = function(A) { return this.each(function() { $(this).keydown(function(B) { return this.value.length <= A || twttr.isNonCharKeyCode(B) }) }) }; $.fn.replaceClass = function(B, A) { return this.each(function() { var C = $(this); if (C.hasClass(B)) { C.removeClass(B).addClass(A) } else { if (C.hasClass(A)) { C.removeClass(A).addClass(B) } } }) }; $.fn.isSelectAll = function(A) { return this.each(function() { var B = $(this); if (typeof(A) == "string") { var D = $(A).find("input[type=checkbox]") } else { var D = A } function C() { var E = true; D.each(function() { if (!this.checked) { E = false; return false } }); B.get(0).checked = E } B.click(function() { var E = B.get(0).checked; D.each(function() { this.checked = E }); $(this).trigger("select-all-changed", E) }); D.click(function() { C(); $(this).trigger("checkbox-changed", this.checked) }) }) }; function bodytarget() { return $("body") } twttr.klass("twttr.Observer", function() { this.fns = [] }).method("listen", function(A) { this.fns.push(A) }).method("unlisten", function(A) { this.fns = this.fns.filter(function(B) { if (B !== A) { return B } }) }).method("trigger", function(C, B) { var A = B || window; this.fns.forEach(function(D) { D.call(A, C) }) }); twttr.klass("twttr.User", function(A) { this.screen_name = A }).method("update", function(B, A) { twttr.tweeters[this.screen_name][B] = A; return this }).method("updateAll", function(B) { for (var A in B) { twttr.tweeters[this.screen_name][A] = B[A] } return this }).method("data", function(B) { var A = twttr.tweeters[this.screen_name]; return B ? A[B] : A }); twttr.augmentObject(twttr.User, { UserFetchTimeout: 5000, UserFetchUrl: "/users/show", _bail: false, _requesting: false, bail: function() { this._bail = true }, isRequesting: function() { return this._requesting }, getCurrentUser: function(A) { return this.findById(page.sessionUserId, A) }, find: function(F, C, G) { var B, A; var D = this; if (twttr.is.fn(C)) { B = window; A = C } else { B = C; A = G } var E = twttr.is.def(F.screen_name) ? F.screen_name.toLowerCase() : null; if (E && twttr.tweeters[E]) { A.call(B, new twttr.User(E), true); return true } else { $.ajax({ url: this.UserFetchUrl, type: "GET", data: F, dataType: "json", timeout: this.UserFetchTimeout, beforeSend: function() { D._requesting = true }, success: function(K) { D._requesting = false; var H = K.user; if (H) { var I = {}; var J = H.screen_name.toLowerCase(); I[J] = H; twttr.User.merge(I, true); if (D._bail) { D._bail = false; return false } A.call(B, new twttr.User(J), false) } else { if (D._bail) { D._bail = false; return false } A.call(B, null, false) } }, error: function(H) { D._requesting = false; if (D._bail) { D._bail = false; return false } A.call(B, null, false) } }); return false } }, findByScreenName: function(B, A, C) { return this.find({ screen_name: B, hovercard: true }, A, C) }, findById: function(D, A, C) { var B = twttr._birdtags[D]; if (twttr.is.def(B)) { this.findByScreenName(B, A, C) } else { this.find({ user_id: D, hovercard: true }, A, C) } }, merge: function() { twttr.tweeters = {}; twttr._birdtags = {}; return function(D, A) { var D = D || {}; if (A) { twttr.merge(twttr.tweeters, D, true) } else { var C = twttr.merge(D, twttr.tweeters, true); twttr.merge(twttr.tweeters, C, true) } for (var B in twttr.tweeters) { twttr._birdtags[twttr.tweeters[B].user_id] = B } } } () }); twttr.loadTemplate = function(A, B) { if (twttr.templates[A]) { return twttr.templates[A] } B = B || function() {}; $.get("/mustaches/" + A + ".html", null, function(D) { var C = { templates: {} }; C.templates[A] = D; twttr.merge(twttr, C, true); B(twttr.templates) }, "html") }; twttr.loadTemplates = function(A, B) { B = B || function() {}; A.forEach(function(D, C) { twttr.loadTemplate(D, function(E) { var F = A.every(function(G) { return twttr.is.def(E[G]) }); if (F) { B(twttr.templates) } }) }) }; twttr.SimplePositioner = { setPosition: function(H, I, J) { var D = { inline: false, direction: null, offsets: { inline: { top: 0, left: 0 }, below: { top: 0, left: 0 }, above: { top: 0, left: 0 } }, hasContainer: false }; var A = twttr.merge({}, D, J, true); var F = F instanceof jQuery ? H: $(H); var C = I instanceof jQuery ? I: $(I); var E = A.hasContainer ? C.position() : C.offset(); if (!A.inline) { var G = this; function B(K) { G.clearPosition(); switch (K) { case "above": G._positionAbove(F, C, E, A.offsets.above, A.hasContainer); break; case "below": G._positionBelow(F, C, E, A.offsets.below); break; case "prefer below": B("below"); if ((F.offset().top - $(document).scrollTop()) + (A.itemHeight || F.height()) > $(window).height()) { B("prefer above") } break; default: B("above"); if ((F.offset().top - $(document).scrollTop()) < 0) { B("below") } break } } B(A.direction) } else { this._positionInline(F, C, E, A.offsets.inline); F.css("left", E.left + A.offsets.inline.left) } }, clearPosition: function() { $("body").removeClass("loading-hoverer-above") }, _positionAbove: function(E, F, C, A, B) { E.addClass("position_above").removeClass("position_below").removeClass("position_inline"); var G = Math.round(C.top + A.top); var H; if (B) { H = F.parents().filter(function() { return $(this).css("position") == "relative" }).outerHeight() } else { var D = $("body"); D.addClass("loading-hoverer-above"); var I = parseInt(D.css("padding-top")); G += I > 0 ? 12: 0; H = D.outerHeight() } E.css({ bottom: H - G, left: this._getLeftPosition(E, F, C) + A.left }) }, _positionBelow: function(A, C, D, E) { var B = Math.round(D.top + C.height() + E.top); A.addClass("position_below").removeClass("position_above").removeClass("position_inline"); A.css({ top: B, left: this._getLeftPosition(A, C, D) + E.left }) }, _positionInline: function(A, B, D, C) { A.css("top", D.top + C.top).addClass("position_inline").removeClass("position_below").removeClass("position_above") }, _getLeftPosition: function(A, B, C) { return Math.round(C.left + (B.width() / 2)) } }; twttr.unparam = function(F) { var E = {}; var C = F.split("&"); for (var B = 0, A = C.length; B < A; B++) { var D = C[B].split("=", 2); E[decodeURIComponent(D[0])] = (D.length == 2 ? decodeURIComponent(D[1].replace(/\+/g, " ")) : null) } return E }; twttr.klass("twttr.Validator", function(A, C, B) { this.$field = $(A); this.value = this.$field.val(); if (twttr.is.string(this.value)) { this.value = jQuery.trim(this.value) } this.fieldName = ""; if (twttr.is.object(C)) { B = C } else { this.fieldName = C } this.valid = B.valid; this.invalid = B.invalid }); twttr.Validator.augmentProto({ is: function() { var A = null; var B = this; $.each(arguments, function(D, C) { if (!C._decorated) { C = C() } if (!C(B.value)) { A = C; return false } }); if (A) { this.invalid(this.$field, this.fieldName, A.errorMessage) } else { this.valid(this.$field, this.fieldName) } } }); twttr.validate = function(B, A) { function C(D, F, E) { return new twttr.Validator(D, F, E) } twttr.augmentObject(C, B); return A(C) }; $.fn.helpText = function() { this.each(function() { var B = $(this); var A = B.hasClass("help-focusable"); if (A) { B.mouseup(function(C) { if (!B.helpVal() == "") { B.select(); C.preventDefault() } }) } B.focus(function(C) { B.setHelpState(false, A) }).blur(function() { if (document.selection) { document.selection.empty() } else { getSelection().removeAllRanges() } B.setHelpState(true) }); B.setHelpState(true) }); return this }; $.fn.helpVal = function() { var A = $.trim(this.val()); return A == this.attr("title") ? "": A }; $.fn.setHelpState = function(A, B) { this.each(function() { var D = $(this); var C = "help-text"; if (A) { if (!D.helpVal()) { D.val(D.attr("title")); D.addClass(C); if (this.hasFocus && D.hasClass("help-focusable")) { D.select() } } else { D.removeClass(C) } } else { D.removeClass(C); if (!D.helpVal()) { if (B) { D.select() } else { D.val("") } } } }) }; $.fn.selectOnClick = function() { this.each(function() { var B = $(this); var A = true; B.click(function() { if (A) { A = false; this.select() } }).blur(function() { A = true }) }); return this }; twttr.klass("twttr.autocomplete", function(A) { var B = this; B.opts = twttr.merge({ getInputVal: function() { return B.opts.$input.val() }, hoverClass: "hover", delay: 350 }, A); B.cache = {}; B._clearFakeFocus(); B.opts.$input.keydown(function(C) { switch (C.keyCode) { case 38: B.arrowUp(); break; case 40: B.arrowDown(); break; case 13: if (!B.hasFakeFocus) { return } B.$fakeFocus.click(); break; case 27: if (B.opts.$dropdown.is(":visible")) { B.hide() } else { return } break; case 9: if (B.opts.$dropdown.is(":visible")) { B.hide() } return; default: B._onInputChange(); return } B.keyDownEvent = true; C.stopPropagation(); C.preventDefault() }).keypress(function(C) { if (C.charCode == 0 && (C.keyCode == 38 || C.keyCode == 40)) { if (!B.keyDownEvent) { if (C.keyCode == 38) { B.arrowUp() } else { B.arrowDown() } } B.keyDownEvent = false; C.preventDefault() } }).change(function() { B._onInputChange() }).blur(function() { if (!B.hovering) { B.hide() } }) }).method("arrowDown", function() { if (this.hasFakeFocus) { this._setFakeFocus(this.$fakeFocus.next()) } else { this._show() } }).method("arrowUp", function() { this._setFakeFocus(this.$fakeFocus.prev()) }).method("hide", function() { this._clearFakeFocus(); this.opts.$dropdown.hide(); this.displayedInputVal = this.opts.getInputVal() }).method("_show", function() { this.displayedInputVal = ""; this._display(); this._setFakeFocus(this.opts.$dropdown.children(":first")) }).method("_clearFakeFocus", function() { this.$fakeFocus = $([]); this.hasFakeFocus = false; this.opts.$dropdown.children().removeClass(this.opts.HoverClass) }).method("_setFakeFocus", function(A) { if (A.length > 0) { this.hasFakeFocus = true; this.$fakeFocus = A; this.$fakeFocus.addClass(this.opts.hoverClass).siblings().removeClass(this.opts.hoverClass) } }).method("_onInputChange", function() { var A = this; setTimeout(function() { A._display() }, 0) }).method("_display", function() { var B = this; var A = B.opts.getInputVal(); if (B.displayedInputVal != A) { B._clearFakeFocus(); var D = B.opts.$dropdown.hide().empty(); B.displayedInputVal = ""; var C = B.cache[A]; if (C) { C.forEach(function(G, F) { D.append(B.opts.renderMatch(G, F, C)) }); D.children().hover(function() { if (B.hasFakeFocus) { B._setFakeFocus($(this)) } else { $(this).addClass(B.opts.hoverClass) } B.hovering = true }, function() { if (!B.hasFakeFocus) { $(this).removeClass(B.opts.hoverClass) } B.hovering = false }); var E = B.opts.$input.position(); D.css({ left: E.left, top: E.top + B.opts.$input.outerHeight() - 1 }).show(); B.displayedInputVal = A } else { if (A && C === undefined) { B._fetch(A) } } } }).method("_fetch", function(A) { var B = this; clearTimeout(B.timerId); B.timerId = setTimeout(function() { B.cache[A] = false; B.opts.fetchMatches(A, function(C) { if (C && C.length > 0) { B.cache[A] = C; B._display() } }, function() { B.cache[A] = undefined }) }, B.opts.delay) });