(function () {
    //浏览器类型
    var L = navigator.userAgent.indexOf("MSIE") != -1 && !window.opera;
    //当前浏览器采用的渲染方式
    var S = (document.compatMode == "BackCompat");    //用来判断当前浏览器采用的渲染方式。BackCompat：标准兼容模式关闭。CSS1Compat：标准兼容模式开启。
    //获得元素
    function H(C) {
        return document.getElementById(C)
    }
    //创建元素
    function J(C) {
        return document.createElement(C)
    }
    //向元素添加事件相应函数
    function O(G, U, C) {
        if (L) {
            G.attachEvent("on" + U, (function (V) { return function () { C.call(V) } })(G))
        }
        else {
            G.addEventListener(U, C, false)
        }
    }
    //终止事件冒泡
    function M(C) {
        if (L) {
            C.returnValue = false
        }
        else {
            C.preventDefault()
        }
    }
    //向<style>标签样式表中添加样式
    function P(C, U) {
        var V = document.styleSheets;
        if (!V || V.length <= 0) {
            var G = document.createElement("STYLE"); G.type = "text/css"; var W = document.getElementsByTagName("HEAD")[0]; W.appendChild(G)
        }
        V = document.styleSheets;
        V = V[V.length - 1];
        if (L) {
            V.addRule(C, U)
        }
        else {
            V.insertRule(C + " { " + U + " }", V.cssRules.length)
        }
    }

    function F(G) {
        //var U = document.getElementById("fm");
        var U = document.getElementById("fm");
        for (var V in G) {
            if (!N(V)) {
                U.appendChild(C(V, G[V]))
            }
            else {
                N(V).value = G[V]
            }
        }
        function C(W, Y) {
            var X = J("INPUT");
            X.type = "hidden";
            X.name = W;
            X.id = "bdsug_ipt_" + W; X.value = Y;
            return X
        }
    }

    function N(V) {
        var U = document.getElementById("fm");
        var G = false;
        var C = U.getElementsByTagName("INPUT");
        for (var W = 0; W < C.length; W++) {
            if (V == C[W].getAttribute("name")) {
                G = C[W];
                return G
            }
            else {
                G = false
            }
        }
    }

    function K(G) {
        var U = document.getElementById("fm");
        for (var C in G) {
            if (C == "f") {
                if (N("f")) {
                    if (N("f").id == "bdsug_ipt_f") {
                        U.removeChild(H("bdsug_ipt_f"))
                    }
                    else {
                        N("f").value = "8"
                    }
                }
            }
            else {
                if (H("bdsug_ipt_" + C)) {
                    U.removeChild(H("bdsug_ipt_" + C))
                }
            }
        }
    }

    //mySouSuo对象
    if (typeof window.mySouSuo != "object" || window.mySouSuo == null) {
        window.mySouSuo = {}
    }
    //药吧suggestion对象
    mySouSuo.sug = {};
    //药吧suggestion监控对象
    mySouSuo.sugkeywatcher = {};

    //动作处理类模型
    var I = (function () {
        //将额外的参数压入__MSG_QS__[Y]
        function C(Y) {
            var W = this.__MSG_QS__;
            if (!W[Y]) {
                W[Y] = []
            }
            for (var X = 1, U = arguments.length, V; X < U; X++) {
                W[Y].push(arguments[X])
            }
        }

        function G(V) {
            var W = this.__MSG_QS__[V.type];
            if (W == null) { return }
            for (var X = 0, U = W.length; X < U; X++) {
                W[X].rm(V)
            }
        }

        return { ini: function (U) {
            //空对象，一个数组
            U.__MSG_QS__ = {};
            U.on = C;
            U.dm = G;
            return U
        }
        }
    })();
    //药吧suggestion管理(input部分)
    var E = (function () {
        //关键字input
        var W = H("kw");
        var C;
        //setInterval的timer id (function G)
        var g = 0;
        var e = 0;
        //关键字input 的value
        var U = "";
        var b = "";
        var f;
        var Z = false;
        var X = true;

        function h() {
            if (X) { E.dm({ type: "start" }); X = false }
        }

        function c(j) {
            if (X) {
                E.dm({ type: "start" }); X = false
            } j = j || window.event;
            if (j.keyCode == 9 || j.keyCode == 27) { E.dm({ type: "hide_div" }) }
            if (j.keyCode == 13) { M(j); E.dm({ type: "key_enter" }) }
            if (C.style.display != "none") {
                if (j.keyCode == 38) { M(j); E.dm({ type: "key_up" }) }
                if (j.keyCode == 40) {
                    E.dm({ type: "key_down" })
                }
            }
            else {
                if (j.keyCode == 38 || j.keyCode == 40) {
                    E.dm({ type: "need_data", wd: W.value })
                }
            }
        }
        function G() {
            var j = W.value;
            if (j == U && j != "" && j != b && j != f) {
                if (e == 0) {
                    e = setTimeout(function () {
                        E.dm({ type: "need_data", wd: j })
                    }, 100)
                }
            }
            else {
                clearTimeout(e);
                e = 0;
                U = j;
                if (j == "") { E.dm({ type: "hide_div" }) }
                if (b != W.value) { b = "" }
            }
        }
        //打开定时器并保存句柄
        function i() {
            g = setInterval(G, 10)
        }
        //关闭定时器
        function Y() {
            clearInterval(g)
        }
        //取消事件冒泡
        function a() {
            if (Z) { window.event.cancelBubble = true; window.event.returnValue = false; Z = false }
        }
        //关键字input 的autocomplete属性
        function V(j) {
            W.blur(); W.setAttribute("autocomplete", j); W.focus()
        }
        W.setAttribute("autocomplete", "off");
        var d = false;
        //绑定搜索input onkeydown/keydown事件绑定(键盘按下)
        mySouSuo.sugkeywatcher.on = function () {
            if (!d) {
                if (L) {
                    W.attachEvent("onkeydown", c)
                }
                else {
                    W.addEventListener("keydown", c, false)
                }
                d = true
            }
        };
        //取消绑定搜索input onkeydown/keydown事件绑定(键盘按下)
        mySouSuo.sugkeywatcher.off = function () {
            if (d) {
                if (L) { W.detachEvent("onkeydown", c) } else {
                    W.removeEventListener("keydown", c, false)
                }
                d = false
            }
        };
        mySouSuo.sugkeywatcher.on();
        //绑定搜索input onmousedown事件(鼠标按下)
        O(W, "mousedown", h);
        //绑定搜索input onbeforedeactivate事件(失去焦点，另一个元素的onfocus之前。)(onblur是在另一个元素onfocus之后)
        O(W, "beforedeactivate", a);

        return I.ini({ rm: function (j) {
            switch (j.type) {
                case "div_ready": C = j.sdiv; b = W.value; i(); break;
                case "clk_submit": Y(); W.blur(); W.value = j.wd; break;
                case "ent_submit": Y(); W.blur(); break;
                case "key_select": f = j.selected; break;
                case "close": Y(); V("on"); break;
                case "mousedown_tr": Z = true; break
            }
        }
        })
    })();
    //药吧suggestion管理(table部分)
    var T = (function () {
        var e;
        var X = H("kw");
        var i;
        var a = -1;
        var C;
        var j;
        var l;
        //设置药吧suggestion 列表tr未选中样式
        function k() {
            var m = i.rows;
            for (var U = 0; U < m.length; U++) {
                m[U].className = "ml"
            }
        }
        function b() {
            if (typeof (i) != "undefined" && i != null && e.style.display != "none") {
                var m = i.rows;
                for (var U = 0; U < m.length; U++) {
                    if (m[U].className == "mo") {
                        return [U, m[U].cells[0].innerHTML]
                    }
                }
            }
            return [-1, ""]
        }
        function f() {
            if (L) {
                l.style.display = "none"
            }
            e.style.display = "none"
        }
        //设置药吧suggestion 列表tr选中样式(鼠标经过)
        function G() {
            k(); this.className = "mo"
        }
        function Y(U) {
            T.dm({ type: "mousedown_tr" });
            if (!L) {
                U.stopPropagation(); U.preventDefault(); return false
            }
        }
        function Z(U) {
            var m = U;
            return function () {
                var n = C[m];
                f();
                T.dm({ type: "clk_submit", oq: H("kw").value, wd: n, rsp: m })
            }
        }
        function c(U) {
            U = U || window.event;
            M(U);
            T.dm({ type: "close" });
            f();
            //!!!
            (new Image()).src = "http://s.mySouSuo.com/w.gif?fm=suggestion&title=%B9%D8%B1%D5&t=" + new Date().getTime()
        }
        //药吧suggestion table 布局
        function V() {
            var U = [X.offsetWidth, X.offsetHeight];
            e.style.width = ((L && S) ? U[0] : U[0] - 2) + "px";
            e.style.top = ((L && S) ? U[1] : U[1] - 1) + "px";
            e.style.display = "block";
            if (L) {
                l.style.top = ((L && S) ? U[1] : U[1] - 1) + "px";
                l.style.width = ((L && S) ? U[0] : U[0] - 2) + "px"
            }
        }
        //绑定药吧suggestion table事件处理
        function g() {
            i = J("TABLE");
            i.id = "st";
            i.cellSpacing = 0;
            i.cellPadding = 2;
            var p = J("tbody");
            i.appendChild(p);
            for (var U = 0, m = C.length; U < m; U++) {
                var o = p.insertRow(-1);
                O(o, "mouseover", G);
                O(o, "mouseout", k);
                O(o, "mousedown", Y);
                O(o, "click", Z(U));
                var n = o.insertCell(-1);
                n.innerHTML = C[U].replace(/&/g, "&amp;")
            }
            e.innerHTML = "";
            e.appendChild(i);
            V();
            if (L) {
                l.style.display = "block";
                l.style.left = 0 + "px";
                l.style.top = X.offsetHeight + "px";
                l.style.width = X.offsetWidth + "px";
                l.style.height = e.offsetHeight - 10 + "px"
            }
        }
        //回车键按下事件处理
        function W() {
            a = b()[0];
            if (a == -1) {
                T.dm({ type: "submit" })
            }
            else {
                T.dm({ type: "ent_submit", oq: j, wd: b()[1], rsp: a })
            }
        }
        //上箭头键按下事件处理
        function h() {
            a = b()[0];
            k();
            if (a == 0) {
                T.dm({ type: "key_select", selected: "" });
                H("kw").value = j; a--;
                K({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
            }
            else {
                if (a == -1) {
                    a = C.length
                }
                a--;
                var U = i.rows[a];
                U.className = "mo";
                T.dm({ type: "key_select", selected: C[a] });
                H("kw").value = C[a];
                F({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
            }
        }
        //下箭头键按下事件处理
        function d() {
            a = b()[0];
            k();
            if (a == C.length - 1) {
                T.dm({ type: "key_select", selected: "" });
                H("kw").value = j;
                a = -1; K({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
            }
            else {
                a++; var U = i.rows[a]; U.className = "mo";
                T.dm({ type: "key_select", selected: C[a] });
                H("kw").value = C[a];
                F({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
            }
        }
        return I.ini({ rm: function (U) {
            switch (U.type) {
                case "div_ready": e = U.sdiv; l = U.frm; break;
                case "give_data": j = U.data.q; C = U.data.s; if (C.length != 0) { g() } else { f() } break;
                case "key_enter": W(); break;
                case "key_up": h(); break;
                case "key_down": d(); break;
                case "hide_div": f(); break;
                case "mousedown_other": f(); break;
                case "window_blur": f(); break;
                case "need_resize": V(); break
            }
        }
        }
         )
    })();
    //subbmit事件管理
    var R = (function () {
        var C = document.getElementById("fm");
        //form提交事件处理函数
        function G() {
            if (H("bdsug_ipt_sug")) {
                if (H("bdsug_ipt_sug").value == H("kw").value) {
                    K({ n: 1, sug: 1 })
                }
                else {
                    K({ f: 1 })
                }
            }
        }
        //form提交事件处理
        O(C, "submit", G);

        function U() {
            G();
            //C.submit()
            var key = document.getElementById("kw").value;
            subMit(key);
        }
        function V(W) {
            F(W);
            K({ sug: 1, n: 1 });
            //C.submit()
            var key = document.getElementById("kw").value;
            subMit(key);
        }


        function subMit(key) {
            window.location = "http://www.yaoba18.tv/sousuo/default1.html?key=" + key;
        }
        return I.ini({ rm: function (W) {
            switch (W.type) {
                case "clk_submit":
                case "ent_submit": V({ oq: W.oq, rsp: W.rsp, f: 3 }); break;
                case "submit": U(); break
            }
        }
        })
    })();
    function btnSubmit() {
        var key = document.getElementById("kw").value;
        subMit(key);
    }

    //药吧suggestion ajax数据管理
    var A = (function () {
        var G = {};
        function U(C) {
            if (typeof G[C] == "undefined") {
                A.dm({ type: "request_data", wd: C })
            } else {
                A.dm({ type: "give_data", data: G[C] })
            }
        }
        function V(C) {
            G[C.q] = C;
            A.dm({ type: "give_data", data: G[C.q] })
        }
        return I.ini({ rm: function (C) {
            switch (C.type) {
                case "response_data": V(C.data); break;
                case "need_data": U(C.wd); break
            }
        }
        })
    })();

    //mySouSuo suggestion查询管理
    var Q = (function () {
        var C;
        var U;
        //ajax方法，根据关键字获取mySouSuo suggestion内容，
        //一个示例：
        function G(V) {
            Q.dm({ type: "need_cookie" });
            if (C) {
                document.body.removeChild(C)
            }
            C = J("SCRIPT");
            //!!!
            C.src = "http://www.yaoba18.tv/sousuo/SearchMessage.html?key=" + V;
            C.charset = "gb2312";
            document.body.appendChild(C)
        }
        return I.ini({ rm: function (V) {
            switch (V.type) {
                case "request_data": G(V.wd); break;
                case "give_cookie": var W = V.sug; if (W > 0) { W = 3 } U = W; break
            }
        }
        })
    })();

    mySouSuo.sug = function (C) { mySouSuo.dm({ type: "response_data", data: C }) };
    mySouSuo.initSug = function () { mySouSuo.dm({ type: "init" }) };
    I.ini(mySouSuo);

    //cookie管理
    var D = (function () {
        function C() {
            if (navigator.cookieEnabled) {
                document.cookie = "su=0; domain=www.yaoba18.tv"
            }
        }
        function G() {
            var U = (navigator.cookieEnabled && /sug=(\d)/.test(document.cookie) ? RegExp.$1 : 3);
            D.dm({ type: "give_cookie", sug: U })
        }
        return I.ini({ rm: function (U) {
            switch (U.type) {
                case "close": C(); break;
                case "need_cookie": G(); break
            }
        }
        })
    })();
    //药吧suggestion 显示管理
    var B = (function () {
        //input id=kw name=wd
        var W = H("kw");
        //div id=sd_1274332392357
        var C;
        //Form
        var Z = document.getElementById("fm");
        //
        var V;
        //
        function X() {
            if (C.offsetWidth != 0 && W.offsetWidth != C.offsetWidth) {
                B.dm({ type: "need_resize" })
            }
        }
        //插入iframe
        function a() {
            C = J("DIV");
            C.id = "sd_" + new Date().getTime();
            C.style.display = "none";
            Z.appendChild(C);
            if (L) {
                V = J("IFRAME"); V.style.display = "none"; V.style.position = "absolute";
                C.parentNode.insertBefore(V, C)
            }
        }
        function Y(b) {
            b = b || window.event;
            var c = b.target || b.srcElement;
            if (c == W) { return }
            while (c = c.parentNode) {
                if (c == C) { return }
            }
            B.dm({ type: "mousedown_other" })
        }
        function U() {
            B.dm({ type: "window_blur" })
        }
        //
        function G() {
            B.dm({ type: "div_ready", sdiv: C, frm: V });
            //页面onmousedown事件处理程序
            setInterval(X, 100); O(document, "mousedown", Y);
            //窗口onblur事件处理程序
            O(window, "blur", U);
            //以下代码动态添加<style>标签的内容
            //C.id <DIV style="DISPLAY: none" id="sd_1274422507294"> 其中sd_1274422507294中的数字是new Date().getTime();
            P("#" + C.id, "border:1px solid #817F82;position:absolute;top:28px;left:0");
            P("#" + C.id + " table", "width:100%;background:#fff;cursor:default");
            P("#" + C.id + " td", "font:14px verdana");
            //
            P(".mo", "background-color:#36c;color:#fff");
            P(".ml", "background-color:#fff;color:#000;font-size:10px;")
        }
        mySouSuo.sug.initial = G;
        return I.ini({ rm: function (b) {
            switch (b.type) {
                case "start": G(); break;
                case "init": a(); break
            }
        }
        })
    })();

    E.on("need_data", A);
    E.on("close_div", T);
    E.on("key_enter", T);
    E.on("key_up", T);
    E.on("key_down", T);
    E.on("hide_div", T);
    E.on("start", B);
    A.on("request_data", Q);
    A.on("give_data", T);

    mySouSuo.on("response_data", A);
    mySouSuo.on("init", B);

    T.on("clk_submit", E, R);
    T.on("ent_submit", E, R);
    T.on("submit", R);
    T.on("key_select", E);
    T.on("close", E, D);
    T.on("mousedown_tr", E);
    B.on("mousedown_other", T);
    B.on("need_resize", T);
    B.on("div_ready", E, T);
    B.on("window_blur", T);
    Q.on("need_cookie", D);
    D.on("give_cookie", Q);
    window.mySouSuo.initSug()
})();

