﻿$.fn.suggestShow = function (G) {
    var D = {
        inputName: "",                //提交的表单input名称
        inputText: "",            //表单input[inputName]的显示值
        inputValue: "",           //表单input[inputName]的提交值
        inputlength: 1,           //当表单input[inputName]值的长度大于inputlength时开始执行搜索
        url: "",                  //远程执行搜索的动态页面
        zindex: 1,                //当前的提示框的z-index值
        isScroll: 0,              //是否支持提示框出现滚动条 0 不支持，1 支持
        arrow: 0,                 //下拉框是否出现提示箭头按钮
        arrowUrl: "",             //当使用提示箭头按钮时，默认的下拉框的所显示内容获取的页面
        suggestWidth: "",
        fns: function () { }                     //返回值执行的函数
    };
    $.extend(D, G);
    if (D.inputValue == "") D.inputValue = D.inputText;
    var temp = "";
    var objdiv, objInput, objSuggest, objtemp, objInputValue, objInputDiv, objIframe, InputValue, InputValueZZ, date, dzz;
    var objform;
    var obj, inputWidth, sugesstDivWidth;
    var zz = -1; //此为指针 
    var itemLength = 0;
    var t;
    InputValueZZ = "";
    if (typeof (D.inputlength) == "undefined") { D.inputlength = 1 }
    /*初始化对象*/
    var _d = new Date();
    var _tem = _d.getTime();
    objdiv = $("<div></div>"); //最外层的定位div
    objdiv.attr("id", "ffsuggest" + _tem);
    objInputDiv = $("<div></div>"); //表单input的div
    objInput = $("<input class=\"input1\" style=\"width:190px; height:15px; float:right; color:#666; font-size:12px; font-family:宋体; border:#bcbec0 0px solid; margin-top:5px; margin-right:0px;\" maxlength=\"50\" id=\"" + D.inputName + "\" type=\"text\" />"); //显示搜索内容input
    objInputValue = $("<input name=\"" + D.inputName + "\" type = \"hidden\" />"); //隐藏域 提交表单项目
    objButton = $("<input type = \"button\" />"); //下拉箭头按钮
    objSuggest = $("<div></div>"); //模拟下拉框div
    objIframe = $("<iframe frameborder=0></iframe>"); //防止select遮挡的iframe
    /*初始化对象结束*/
    /*对象添加整合*/
    objInputDiv.append(objInput);
    objInputDiv.append(objInputValue);
    objdiv.append(objInputDiv);
    objdiv.append(objSuggest);
    objdiv.appendTo(this);
    /*对象添加整合完毕*/
    objform = objInput.parents("form");

    inputWidth = objInput.css("width");
    if (inputWidth == "auto") inputWidth = "300px";
    if (objInput.css("margin-left") == "auto") objInput.css("margin-left", "0");
    if (D.suggestWidth == "")
        sugesstDivWidth = parseInt(inputWidth) + 3 + "px";
    else
        sugesstDivWidth = parseInt(D.suggestWidth) + 3 + "px";

    if (D.isScroll) {
        objSuggest.css("overflow-y", "scroll");
        objSuggest.css("overflow-x", "hidden");
        objSuggest.css("height", "100px");
        objSuggest.css("padding-right", "16px");
        sugesstDivWidth = (parseInt(sugesstDivWidth) - 16) + "px";
    };
    //objSuggest.css("margin-left", objInput.css("margin-left"));
    objInputDiv.css("position", "relative")
               .css("width", "200px"); //inputWidth
    objInputValue.val(D.inputValue);
    objInput.val(D.inputText)
		    .attr("class", "key_normal")
		    .keyup(function (e) { beKeyUp(e); })
			.keydown(function (e) { beKeyDown(e); })
			.mousedown(function (e) { beKeyDown(e); })
    //.mouseout(function (e) { beKeyUp(e); })
            .focus(function (e) { if (this.value == D.inputText) this.value = ""; else this.value == this.value; })
			.blur(function (e) {
			    if ($.trim(objInput.val()) == "" || $.trim(objInput.val()).length == 0) {
			        objInputValue.val(""); objInput.val(D.inputText);
			    }
			    //objInput.attr("class","key_normal");
			    //objSuggest.attr("class","suggest_hidden");
			    zz = -1;
			})
		    .css("width", inputWidth);
    objSuggest.attr("class", "suggest_hidden")
		      .css("width", sugesstDivWidth)
              .css("margin-left","5px");
    /*下拉箭头按钮处理*/
    if (D.arrow) {//eval(-42-parseInt(objInput.css("margin-left")))
        objInputDiv.append(objButton);
        objButton.attr("class", "suggest_button")
				 .css("right", eval(-42 - parseInt(objInput.css("margin-left"))) + "px")
				 .mouseover(function () { $(this).css("clip", "rect(0px,36px,22px,18px)"); $(this).css("right", eval(-24 - parseInt(objInput.css("margin-left"))) + "px") })
				 .mouseout(function () { $(this).css("clip", "rect(0px,18px,22px,0px)"); $(this).css("right", eval(-42 - parseInt(objInput.css("margin-left"))) + "px") })
				 .click(function (e) {
				     if (objSuggest.attr("class") == "suggest_hidden") {
				         if ((D.arrowUrl == "") || (typeof (D.arrowUrl) == "undefined")) getdata(D.inputName, D.url); else getdata(D.inputName, D.arrowUrl);
				     }
				     else {
				         objSuggest.attr("class", "suggest_hidden");
				         objInput.attr("class", "key_normal");
				     };
				 });
    }
    if (!isNaN(D.zindex)) {
        objdiv.css("z-index", D.zindex);
        objdiv.css("position", "relative");
        objdiv.css("padding-left", "0px");
        objdiv.css("float", "right");
        objdiv.css("margin-right", "35px");
        objdiv.css("width", "200px");
    }
    objIframe.css("position", "absolute")
			 .css("width", "100%")
			 .css("z-index", "-1")
			 .css("border", "0");
    //beKeyUp事件。与服务器通信 
    function beKeyUp(e) {
        if (e.keyCode != 13 & e.keyCode != 9 & e.keyCode != 38 & e.keyCode != 40) {
            objInputValue.val(objInput.val());
            zz = -1;
            if ($.trim(objInput.val()).length < D.inputlength) objSuggest.attr("class", "suggest_hidden");
            if ($.trim(objInput.val()).length >= D.inputlength) {
                InputValue = objInput.val();
                if (InputValueZZ == "") {
                    InputValueZZ = InputValue;
                    t = setTimeout(function () { sdd() }, 400);
                    objInput.blur();
                }
                else {
                    clearTimeout(t);
                    if (InputValueZZ == InputValue) return; else t = setTimeout(function () { sdd() }, 400);
                }
            }
        }
    }
    function sdd() {
        if (InputValueZZ == InputValue) {
            if ($.trim(objInput.val()).length >= D.inputlength) getdata(D.inputName, D.url);
        }
        else {
            InputValueZZ = InputValue;
            sdd();
        }
    }
    //远程获取数据
    function getdata(inputName, url) {
        var temp = ""; var result = "";
        var objleft, objright; var objload;
        objload = $("<div style='width:249px;height:30px'>正在获取数据。。。</div>")
        objInput.focus();
        objSuggest.html(objIframe);
        objSuggest.append(objload);
        objload.attr("class", "loaddata");
        objIframe.css("height", objSuggest.height());
        objInput.attr("class", "key_normal");
        objSuggest.attr("class", "search_suggest");
        $.ajax({
            type: "post",
            url: D.url + "&searchType=scenery",
            dataType: "xml",
            data: D.inputName + "=" + $.trim(objInput.val()),
            success: function (Back) {
                itemLength = $("response", Back).size();
                if (itemLength == 0) {
                    objIframe.css("height", objSuggest.height());
                    objInput.attr("class", "key_normal");
                    objSuggest.attr("class", "suggest_hidden");
                    return;
                }
                objSuggest.html(objIframe);
                $("response", Back).each(function (i) {
                    result = $(this).attr("result");
                    if (typeof (result) == "undefined") result = "";
                    objleft = $("<span></span>");
                    objright = $("<span></span>")
                    objtemp = $("<div></div>");
                    objtemp.append(objleft);
                    objtemp.append(objright);
                    objtemp.appendTo(objSuggest);
                    objleft.text($(this).text());
                    objright.text(result);
                    objleft.attr("class", "suggest_left");
                    objright.attr("class", "suggest_right");
                    objtemp.attr("value", $(this, Back).attr("value"))
					   .attr("valuetext", $(this, Back).text())
					   .attr("class", "item_normal")
					   .mouseover(function () { beMouseOver(i) })
					   .css("width", sugesstDivWidth)
					   .css("overflow", "hidden")
					   .click(function () { beClick(i) });
                })
                $("<div>取消</div>").click(function () { beClick2() })
									.attr("class", "cancel")
									.appendTo(objSuggest);
                objIframe.css("height", objSuggest.get(0).scrollHeight);
                objInput.attr("class", "key_abnormal");
                objSuggest.attr("class", "search_suggest");
                objIframe.css("height", objSuggest.get(0).scrollHeight);
                objIframe.css("height", objSuggest.get(0).scrollHeight);
                return;
            },
            error: function () {
                objInput.attr("class", "key_normal");
                objSuggest.attr("class", "suggest_hidden");
                return false;
            }
        })
    }
    //函数鼠标经过效果 
    function beMouseOverEFF(i) {
        $("div", objSuggest).eq(i).attr("class", "item_high");
    }
    //函数鼠标移开效果 
    function beMouseOutEFF(i) { if (i >= 0) $("div", objSuggest).eq(i).attr("class", "item_normal"); }
    function beMouseOver(i) {
        objInput.focus();
        beMouseOutEFF(zz);
        zz = i;
        beMouseOverEFF(zz);
    }

    //函数单击 
    function beClick(i) {
        objform.keydown(function (e) { return unbindSubmit(e) });
        objInput.val($("div", objSuggest).eq(i).attr("valuetext"));
        objInputValue.val($("div", objSuggest).eq(i).attr("value"));
        if ($("div", objSuggest).eq(i).attr("value") == "undefined") { objInputValue.val($("div", objSuggest).eq(i).text()) };
        objInput.attr("class", "key_normal");
        objSuggest.attr("class", "suggest_hidden");
        objInput.focus();
        zz = -1;
        D.fns();
        var url = $("div", objSuggest).eq(i).attr("value");
        if (url == "0")
            objInput.val('');
        else window.open(url)
    }
    function unbindSubmit(e) {
        if (e.keyCode == 13) return false;
    }
    //函数单击 
    function beClick2() {
        if ($.trim(objInput.val()).length < D.inputlength) { objInputValue.val(""); }
        objInput.attr("class", "key_normal");
        objSuggest.attr("class", "suggest_hidden");
        objInput.val(D.inputText);
        zz = -1;
    }
    //方向键接收函数 
    function beKeyDown(e) {
        //往下按 
        if (e.keyCode == 40) {
            if (zz == itemLength - 1) { beMouseOutEFF(zz); zz = -1; };
            if (zz < itemLength - 1) { beMouseOutEFF(zz++); };
            if (zz < itemLength) { beMouseOverEFF(zz); };
        }
        //往上按 
        if (e.keyCode == 38) {
            if (zz > 0) { beMouseOutEFF(zz--); }
            if (zz >= 0) { beMouseOverEFF(zz); }
        }
        //按回车或者TAB 
        if (e.keyCode == 13) { if (zz != -1) beClick(zz); }
    }
    //当鼠标在该插件其他区域点击时，隐藏该插件提示框
    var _sobj = objdiv.get(0);
    $(document).click(function (e) {
        e = e ? e : window.event;
        var tag = e.srcElement || e.target;
        if (_sobj.id == tag.id) { return; }
        var _temObj = tag;
        while (_temObj) {
            if (_temObj.id == "ffsuggest" + _tem) return;
            _temObj = _temObj.parentNode;
        }
        objInput.attr("class", "key_normal");
        objSuggest.attr("class", "suggest_hidden");
    });
}
var isover = 0;
function selmouseover() {
    isover = 1;
}
function selmouseout() {
    isover = 0;
}
function showmenu() {
    $("#selmenu").css("display", "block");
}
document.onclick = function () {
    if (isover == 0) {
        $("#selmenu").css("display", "none");
    }
};
function change(id) {
    $("#selmenu").css("display", "none");
    $('#searchtype').text($('#' + id).text());
    if (id == "sel0") {
        $('#stype').val('0');

        var option1 = {
            suggestWidth: 249,
            inputName: "keyScenery",
            inputText: "",
            inputValue: "",
            inputlength: 1,
            url: "/newsearch/search.ashx?type=0",
            zindex: 18,
            fns: function () {
            }
        }
        $("#AgenciesNameScenery").empty();
        $("#AgenciesNameScenery").suggestShow(option1);
    }
    else if (id == "sel1") {
        $('#stype').val('1');
        var option1 = {
            suggestWidth: 249,
            inputName: "keyScenery",
            inputText: "",
            inputValue: "",
            inputlength: 1,
            url: "/newsearch/search.ashx?type=1",
            zindex: 18,
            fns: function () {
            }
        }
        $("#AgenciesNameScenery").empty();
        $("#AgenciesNameScenery").suggestShow(option1);
    }
    else {
        $('#stype').val('2');
        var option1 = {
            suggestWidth: 249,
            inputName: "keyScenery",
            inputText: "",
            inputValue: "",
            inputlength: 1,
            url: "/newsearch/search.ashx?type=2",
            zindex: 18,
            fns: function () {
            }
        }
        $("#AgenciesNameScenery").empty();
        $("#AgenciesNameScenery").suggestShow(option1);
    }
}
var searchTypeScenery = "scenery";
var txtKeyTextScenery = "可输入景点名称";
//function SetSearchType(sender) {
//    var txtKey = document.getElementById("keyScenery");
    //searchType = sender == null ? "school" : sender.value;
    //txtKey.value = sender.value == "scenery" ? "可输入景点名称" : "可输入院校名称";
    //txtKeyText = txtKey.value;
//}
