﻿function Msearch(t, url, callback, defaultvalues, notReturn, notFocusShow) {
    var mustfocus = false;
    var div = document.createElement("div");
    var s1 = "<p>请输入拼音/简拼/名称</p>";
    $(div).attr("id", t + "div").appendTo($(document.body)).addClass("msearch_div1");

    t = "#" + t;
    var d = t + "div";
    function Locate() {
        $(d).width($(t).outerWidth() - 12);
        $(d).css("left", $(t).offset().left);
        $(d).css("top", $(t).offset().top + $(t).outerHeight());
    }
    Locate();
    $(window).resize(Locate);

    var objIframe = $("<iframe frameborder='0' scrolling='no'></iframe>"); //防止select遮挡的iframe
    objIframe.css("position", "absolute")
			 .css("width", "100%")
			 .css("z-index", "-1")
			 .css("border", "0");
    objIframe.css("left", "0px").css("top", "0px");
    var objDiv = $("<div></div>");
    objDiv.append(objIframe);
    function s1_html(heightadd) {
        var heightadd = heightadd || 10;
        objIframe.height($(d).height() + heightadd).width($(d).width() + 10);
        return objDiv.html();
    }
    $(d).html(s1_html() + s1);
    //默认值
    if (defaultvalues) {
        var s2 = defaultvalues.toString().split(',');
        for (var i = 0; i < s2.length; i++) {
            s1 += "<div val='" + s2[i].split('|')[0] + "'";
            if (i == 0) s1 += "class='div2'"
            s1 += "><span>" + s2[i].split('|')[1] + "</span>" + s2[i].split('|')[0] + "</div>";
        }
        $(d).html(s1);
        $(d).html(s1_html() + s1);
        $(d + " div").mouseover(function() {
            $(d + " div").removeClass("div2");
            $(this).addClass("div2");
        });
    }

    function text1change(val) {
        $(t).val(val);
        $(t).attr("val", val);
        $(d).hide();
        if (callback) callback();
    }

    $(t).keydown(function(event) {
        if ($(d).css("display") == "block" && event.keyCode == 13) {
            text1change($(d + " .div2").attr("val"));
            return false;
        }
        if (event.keyCode == 38) {
            if ($(d + " div:first").attr("val") == $(d + " .div2").attr("val")) {
                $(d + " .div2").removeClass("div2");
                $(d + " div:last").addClass("div2");
            }
            else
                $(d + " .div2").removeClass("div2").prev().addClass("div2");
        }
        if (event.keyCode == 40) {
            if ($(d + " div:last").attr("val") == $(d + " .div2").attr("val")) {
                $(d + " .div2").removeClass("div2");
                $(d + " div:first").addClass("div2");
            }
            else
                $(d + " .div2").removeClass("div2").next().addClass("div2");
        }
    });

    $(t).keyup(function(event) {
        if ($(this).val() != $(this).attr("val") && $(this).val().length > 0) {
            $(t).attr("val", $(this).val());
            $(d).html("");
            mustfocus = true;
            $(d).load(eval(url) + escape($(t).val()), {}, function() {
                $(d).html(s1_html(26) + "<p>查询\"" + $(t).val() + "\"结果如下：</p>" + $(d).html());
                $(d).show();
                $(d + " div").mouseover(function() {
                    $(d + " div").removeClass("div2");
                    $(this).addClass("div2");
                });
                mustfocus = false;
            });
        }
        if ($(this).val() != $(this).attr("val") && $(this).val().length == 0 && event.keyCode != 38 && event.keyCode != 40) {
            $(d).html(s1);
            $(d).html(s1_html() + s1);
            $(d + " div").mouseover(function() {
                $(d + " div").removeClass("div2");
                $(this).addClass("div2");
            });
        }
    });
    $(t).blur(function() {
        if (mustfocus) {
            this.focus();
            return false;
        }
        if (notReturn && $(t).val() == "") $(d).hide();
        else if ($(d).css("display") == "block") text1change($(d + " .div2").attr("val"));
        document.execCommand("Unselect");
    });
    $(t).focus(function() {
        if ($(this).val() != $(this).attr("val") && $(this).val().length > 0) {
            $(this).trigger("keyup");
        } else if (!notFocusShow) {
            $(d).show();
        } else {
            $(d).html(s1);
            $(d).html(s1_html() + s1);
            $(d).show();
        }
        if (!mustfocus) {
            document.execCommand("SelectAll");
        }
    });
}
