var MTOBJ = null;
function MTypeAhead(id, cityname) {
    this.m_objInput = "";
    this.m_objList = "";
    this.m_fi = 0; //初始化样式循环长度
    this.m_fii = 0; //初始化记录当前样式的变量
    this.id = id;
    this.cityname = cityname;
    this.elementId = "";
    this.exec();
    MTOBJ = this;
}

function m_$() {
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string')
            element = document.getElementById(element);

        if (arguments.length == 1)
            return element;

        elements.push(element);
    }
    return elements;
}

MTypeAhead.prototype.exec = function() {
    var K = this;
    document.write("<div id=\"m_list\" ></div>");
    document.write("<style>#m_list{position:absolute;z-index:100; line-height:200%; color:#004a80;padding-bottom:7px;display:none;background:url(../images/shadow.png) no-repeat right bottom;font-size:12px;font-weight:normal;} "); //写入隐藏DIV，用于显示快速搜索结果列表。
    document.write(" *html #m_list{ padding-bottom:4px;background:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale ,src=../images/shadow.png); }"); //写入隐藏DIV，用于显示快速搜索结果列表。
    document.write(".icont div { width:100%;text-indent:12px;text-decoration:underline;background-image:url(../images/dot2.gif);background-repeat:no-repeat;cursor:pointer;}   .m_sel{background-color:#dbe5ff;} ");
    document.write(".icont{ position:relative;background:#fff;filter:Alpha(opacity=90);Opacity:0.9;margin-left:0;margin-top:1px;margin-right:4px;border: 1px solid #144387;}   </style>  "); //写入隐藏DIV，用于显示快速搜索结果列表。

    this.m_objInput = m_$(this.id); //设置文本框obj(textfield为初始化设置)
    this.m_objList = m_$("m_list"); //设置默认下拉框obj

    this.m_objList.style.width = (this.m_objInput.offsetWidth - 2) + "px"; //兼容页面显示，将用于显示结果列表的宽度减少2像素，可自行根据页面设置

    this.m_objInput.onkeyup = function(F) {
        K.m_getFocal(F, K); //文本框得到焦点
        hidePopup();
    }
    //this.m_objInput.onfocus = this.m_setFocal;//文本框按键抬起
    this.m_objInput.onblur = function() {//文本框失去焦点
        K.m_objList.style.display = "none"; //设置m_list隐藏
        //此处为特殊处理，周边关键字需要处理两个提示框
        if ($('around_classify'))
            $('around_classify').style.display = 'none'
    }
}

MTypeAhead.prototype.m_getFocal = function(evt, obj)//判断用户操作
{
    var K = obj;
    evt = evt || window.event;
    var keyCode = window.event ? evt.keyCode : evt.which;
    if (keyCode == 40 || keyCode == 38) {//用户操作：下&上
        if (keyCode == 40) {//下
            if (K.divType != K.m_objInput) {
                this.m_fii = 0;
                this.m_setDivstyle("40");
                K.divType = K.m_objInput;
            } else {
                this.m_setDivstyle("40");
            }

        } else {//上
            if (K.divType != K.m_objInput) {
                this.m_fii = 0;
                this.m_setDivstyle("38");
                K.divType = K.m_objInput;
            } else {
                this.m_setDivstyle("38");
            }
        }
    } else if (keyCode == 13) {//用户操作：回车
        m_mySearch(this.m_objInput.value); //执行总回调
    } else {
        K.m_setFocal(evt, K);
    }
    K.m_divPosition(evt, K); //控制DIV显示位置，默认设置跟随输入框
}
MTypeAhead.prototype.m_setFocal = function(evt, obj) {
    var K = obj;
    if (navigator.userAgent.indexOf("MSIE") > 0) {
        MTOBJ.elementId = evt.srcElement.id;
    } else if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) {
        MTOBJ.elementId = evt.target.id
    }
    var strInput = K.m_objInput.value;
    if (($("rdBusLineSearch") && $("rdBusLineSearch").checked)) {
        K.m_objList.style.display = "none";
    }
    else if (strInput == "" || strInput == null) {
        K.m_objList.style.display = "none";
    } else {
        K.m_divPosition(evt, K);
        var m_ct_temp = m_$(this.cityname).value;

        var mls = new MLocalSearch();
        var mlsp = new MLocalSearchOptions();
        mls.setCallbackFunction(K.myfunc);
        mls.typeAhead(strInput, m_ct_temp, mlsp);
    }
}
MTypeAhead.prototype.myfunc = function(data) {
    var K = MTOBJ;
    var resultstr = data.message;
    if (resultstr) {
        var mylist = resultstr.split(",");
        K.test(mylist);
    }
}

MTypeAhead.prototype.test = function(mylist) {
    var K = this;
    var textlist = "";
    this.m_fi = mylist.length - 1;
    if (mylist.length == 1) {
        this.m_objList.style.display = "none";
    } else {

        for (var i = 0; i < mylist.length - 1; i++) {
            textlist = textlist + "<div onMouseOver=\"this.className='m_sel'\"  onMouseOut=\"this.className=''\" id='textfield_" + (i + 1) + "' onmousedown=m_od('" + this.elementId + "','textfield_" + (i + 1) + "')>" + mylist[i] + "</div>"; //将结果写入DIV
        }
        this.m_objList.style.display = "block";
        this.m_objList.innerHTML = "<div class=\"icont\">" + textlist + "</div>";
    }

}
MTypeAhead.prototype.m_setDivstyle = function(t) {//设置用户选择样式
    var tempv = MTOBJ.m_objInput.value;
    for (var i = 0; i < MTOBJ.m_fi; i++) {
        m_$("textfield_" + (i + 1)).className = "";
    }
    if (t == "40") {
        if (MTOBJ.m_fii < MTOBJ.m_fi) {
            MTOBJ.m_fii = MTOBJ.m_fii + 1;
        } else {
            MTOBJ.m_fii = 1;
        }
        //alert(m_$("textfield_"+m_fii));
        m_$("textfield_" + MTOBJ.m_fii).className = "m_sel"; //m_sel为初始化定义样式
        this.m_objInput.value = m_$("textfield_" + MTOBJ.m_fii).innerHTML;
    } else {//38
        //alert(MTOBJ.m_fii);
        if (MTOBJ.m_fii <= 1) {
            MTOBJ.m_fii = MTOBJ.m_fi;
        } else {
            MTOBJ.m_fii = MTOBJ.m_fii - 1;
        }
        m_$("textfield_" + MTOBJ.m_fii).className = "m_sel";
        this.m_objInput.value = m_$("textfield_" + MTOBJ.m_fii).innerHTML;
    }
}

function m_od(elementId, id) {//用户通过鼠标直接选中结果
    m_$(elementId).value = m_$(id).innerHTML;
    m_mySearch(m_$(id).innerHTML);
}

function m_mySearch(v) {//设置一个统一的方法，用户可以在此对接自己的程序
    //alert("搜索关键字："+v);
}
MTypeAhead.prototype.m_lTrim = function(str)//ajax得到的结果有时会存在空格，该方法为删除字符串左侧空格
{
    if (str.charAt(0) == " ") {
        //如果字串左边第一个字符为空格
        str = str.slice(1); //将空格从字串中去掉
        //这一句也可改成 str = str.substring(1, str.length);
        str = this.m_lTrim(str);    //递归调用
    }
    return str;
}
MTypeAhead.prototype.m_divPosition = function(evt, obj)//定义div显示位置为跟随输入框
{
    var e = obj.m_objInput;
    var ie = (document.all) ? true : false
    //定义列表区在不同浏览器中的位置
    if (ie) {
        var top = 0;
        var left = -1;
    }
    else {
        var top = 3;
        var left = 1;
    }
    while (e.offsetParent) {
        left += e.offsetLeft + (e.currentStyle ? (parseInt(e.currentStyle.borderLeftWidth)).NaN0() : 0);
        top += e.offsetTop + (e.currentStyle ? (parseInt(e.currentStyle.borderTopWidth)).NaN0() : 0);
        e = e.offsetParent;
    }
    left += e.offsetLeft + (e.currentStyle ? (parseInt(e.currentStyle.borderLeftWidth)).NaN0() : 0);
    top += e.offsetTop + (e.currentStyle ? (parseInt(e.currentStyle.borderTopWidth)).NaN0() : 0);
    obj.m_objList.style.top = (top + obj.m_objInput.clientHeight) + "px";
    obj.m_objList.style.left = left + "px";
    obj.m_objList.style.width = obj.m_objInput.clientWidth + 6 + "px";
}
Number.prototype.NaN0 = function() {
    return isNaN(this) ? 0 : this;
}

function ff(ur, w, h, t) {//flash写入
    document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="' + w + '" height="' + h + '"> ');
    document.write('<param name="movie" value="' + ur + '">');
    document.write('<param name="quality" value="high"> ');
    document.write('<param name="wmode" value="' + t + '">');
    document.write('<embed src="' + ur + '" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="' + w + '" wmode="' + t + '" height="' + h + '"></embed> ');
    document.write('</object> ');
}

function getoffset(e) {
    var t = e.offsetTop;
    var l = e.offsetLeft;
    while (e = e.offsetParent) {
        t += e.offsetTop;
        l += e.offsetLeft;
    }
    var rec = new Array(1);
    rec[0] = t;
    rec[1] = l;
    return rec
}

var currentCityInput = "";
function show_cityselecter(inputname) {
    if ($(inputname)) {
        var input = $(inputname);
        var lt = getoffset(input);
        currentCityInput = inputname;
        $(inputname).select();
        $('citysmall').style.display = 'block';
        $('citysmall').style.left = lt[1] + "px";
        $('citysmall').style.top = (lt[0] + 24) + "px";
    }
}
function setCurrentCity(cityname) {
    $(currentCityInput).value = cityname;
    closeWindow('citylist');

    if (currentCityInput != "driveLine_citynameS" && currentCityInput != "driveLine_citynameE") {
        setCookie("esosocityname", cityname);
    }
    setOrigSearchHtml(currentSearchType);
}

function show_classifyselecter(inputname) {
    //分类选择框
    if ($(inputname)) {
        var input = $(inputname);
        var lt = getoffset(input);
        $(inputname).select();
        $('around_classify').style.display = 'block';
        $('around_classify').style.left = lt[1] + "px";
        $('around_classify').style.top = (lt[0] + 24) + "px";
    }
}
function setCurrentClassify(classifyname) {
    $("aroundsearch_key").value = classifyname;
    $('around_classify').style.display = 'none';
}
function hide_classifyselecter() {
    if ($('around_classify')) {
        $('around_classify').style.display = 'none';
    }
}

/*提示框*/
function showPopup(inputId, tipText, bTop) {
    var popupTipId = (!bTop) ? "popupTip2" : "popupTip";
    var popupTipBodyId = (!bTop) ? "popupTipBody2" : "popupTipBody";

    var inputObj = $(inputId);
    var inputwidth = parseInt(inputObj.style.width.replace("px", ""));
    var topleft = getoffset(inputObj);
    var popupObj = $(popupTipId);
    popupObj.style.display = "";
    if (!bTop) {
        popupObj.style.top = (topleft[0] + 20) + "px";
        popupObj.style.left = (topleft[1] + 20) + "px";
    }
    else {
        popupObj.style.top = (topleft[0] - 25) + "px";
        popupObj.style.left = (topleft[1] + 20) + "px";
    }
    $(popupTipBodyId).innerHTML = tipText;
}
function hidePopup() {
    if ($("popupTip")) {
        $("popupTip").style.display = "none";
        $("popupTip2").style.display = "none";
    }
}