﻿var pageSize = 10;
var pg;

function Trim(s) {
    s = s.replace(/(^\s+)|(\s+$)/ig, "");
    s = s.replace(/\u3000+/g, " ");
    s = s.replace(/\s+/g, " ");
    return s;
}

function openTip(param) {
    var n = param.overlayId;
    var nn = n.split("around");
    try {
        for (var i = 0; i < pageSize; ++i) {
            var id = "sr_" + i;
            $(id).className = "result_item";
        }
    } catch (e) { }
    try {
        var id = "sr_" + nn[0];
        $(id).className = "result_itemsel";
        $(id).focus();
    } catch (e) { }
}

//本地搜索
var poiS = new PoiSearch();
function PoiSearch() {
    this.city_code;
    this.search_key;
    this.page_index;
}

function searchPoi() {
    closeAlertDiv();
    showOperate();
    var citycode = Trim($('search_citycode').value);
    var key = Trim($('search_key').value);
    poiS.city_code = citycode;
    poiS.search_key = key;

    var i = 1;
    var che = "";
    if (citycode == "") {
        che += i + "．请您输入城市号\n";
        i = i + 1;
    }
    if (key == "") {
        che += i + "．请您输入关键字";
        i = i + 1;
    }
    if (i == 1) {
        if (useAjaxAll) {
            local_searchPoi(1);
        }
        else {
            HashHandler.updateState("1,local," + citycode + ",," + key);
        }
    } else {
        fis_alert(1, che);
    }
    return false;
}
function local_searchPoi(pageindex) {
    if (typeof MLocalSearch == "undefined") {
        fis_alert(1, "数据查询服务连接异常，请重试!");
        return;
    }
    poiS.page_index = pageindex;

    showwait();
    $('btnPoiSearch').disabled = true;

    var mls = new MLocalSearch();
    var mlsp = new MLocalSearchOptions();
    mlsp.recordsPerPage = pageSize;
    mlsp.pageNum = pageindex;
    mls.setCallbackFunction(localSearch_CallBack);
    mls.poiSearchByKeywords(poiS.search_key, poiS.city_code, mlsp);
}
function localSearch_CallBack(data) {
    switch (data.message) {
        case 'ok':
            var Mmarker = new Array();
            var content = [];
            if (data.poilist.length == 0) {
                if ($('operate_panel').innerHTML == "") {
                    $("operate_title").innerHTML = "在 <span>" + poiS.city_code + "</span> 找 <span>" + poiS.search_key + "</span>";
                    $('operate_panel').innerHTML = "<div style=\"padding:20px;font-size:14px;\">未查找到任何结果！</div>";
                }
                fis_alert(1, "<span class='alert_title'>在 " + poiS.city_code + " 找 " + poiS.search_key + " <br/> 未查找到任何结果!</span><br/>建议：<br/>1.请确保所有字词拼写正确。<br/>2.尝试不同的关键字。<br/>3.尝试更宽泛的关键字。");
            } else {
                removeAllOverlays();
                $("operate_title").innerHTML = "在 <span>" + poiS.city_code + "</span> 找 <span>" + poiS.search_key + "</span>";
                content.push("<div style=\"padding:10px;\">共" + data.total + "条结果，耗时" + data.searchtime / 1000 + "秒。</div>");
                content.push('<div style="border:#FF1E00 1px solid; background:#FFFFC1; padding:3px; margin-left:10px; margin-right:10px;">点击图片 <img width="13" height="11" src="../images/more.gif" /> 获取更多功能。如查找周边，驾车线路等。</div>');
                for (var i = 0; i < data.poilist.length; i++) {
                    content.push('<div class="result_item" ');
                    content.push("><div class=\"" + ((i < 9) ? "sr_left" : "sr_left2") + "\">");
                    content.push(i + 1);
                    content.push("</div><div class=\"sr_right\"><a class=\"result_item_title\" href=\"javascript:void(0);\" onclick=\"");
                    content.push("var s=mapObj.setCenter(new MLngLat('");
                    content.push(data.poilist[i].x + "','" + data.poilist[i].y);
                    content.push("'));try{var t = mapObj.openOverlayTip('poi" + (i) + "');}catch(e){}\" ");
                    content.push(' id="sr_');
                    content.push(i);
                    content.push("\">" + data.poilist[i].name + "</a>");
                    content.push('&nbsp;&nbsp;&nbsp;<img src="../images/more.gif" width="13" height="11" alt="更多操作" style="cursor:pointer;" title="更多操作" onclick="showToolMenu(this,' + i + ',\'' + poiS.city_code + '\',\'' + data.poilist[i].name + '\',\'' + data.poilist[i].x + '\',\'' + data.poilist[i].y + '\');" />');
                    if (typeof data.poilist[i].address != "undefined") {
                        content.push("<div>地址：" + data.poilist[i].address + "</div>");
                    }
                    if (typeof data.poilist[i].tel != "undefined") {
                        content.push("<div>电话：" + data.poilist[i].tel + "</div>");
                    }
                    content.push("<div>类型：" + data.poilist[i].type + "</div>");
                    content.push("</div><div style=\"clear:both;\"></div></div>");

                    var markerOption = new MMarkerOptions();
                    markerOption.imageUrl = "http://code.mapabc.com/images/apin/lan_" + (i + 1) + ".png";
                    markerOption.picAgent = false;
                    markerOption.isDraggable = false; //是否可以拖动

                    var tipOption = new MTipOptions();
                    tipOption.tipType = HTML_BUBBLE_TIP;
                    tipOption.title = (i + 1) + ". " + data.poilist[i].name;
                    var tipC = TipContents(data.poilist[i].type, data.poilist[i].address, data.poilist[i].tel)
                    var morelink = MoreLink(poiS.city_code, data.poilist[i].name, data.poilist[i].x + "," + data.poilist[i].y);
                    tipC += morelink;
                    tipOption.content = tipC; //tip内容
                    tipOption.hasShadow = true;
                    tipOption.borderStyle.thickness = 2;
                    tipOption.borderStyle.color = 0x005cb5;
                    tipOption.borderStyle.alpha = 1;
                    tipOption.titleFontStyle.name = "Arial";
                    tipOption.titleFontStyle.size = 12;
                    tipOption.titleFontStyle.color = 0xffffff;
                    tipOption.titleFontStyle.bold = true;
                    tipOption.contentFontStyle.name = "Arial";
                    tipOption.contentFontStyle.size = 13;
                    tipOption.contentFontStyle.color = 0x000000;
                    tipOption.contentFontStyle.bold = false;
                    tipOption.fillStyle.color = 0xFFFFFF; //填充色
                    tipOption.fillStyle.alpha = 1;
                    tipOption.titleFillStyle.color = 0x005cb5;
                    tipOption.titleFillStyle.alpha = 1;

                    markerOption.tipOption = tipOption;
                    markerOption.canShowTip = true;
                    markerOption.hasShadow = true;
                    var ll = new MLngLat(data.poilist[i].x, data.poilist[i].y);
                    Mmarker[i] = new MMarker(ll, markerOption);
                    Mmarker[i].id = "poi" + (i);
                }

                pg = new showPages('pg');
                pg.page = poiS.page_index;  // 定义总页数
                pg.pageCount = (data.count % pageSize == 0) ? data.count / pageSize : (Math.floor(data.count / pageSize) + 1);
                pg.clickFun = "local_searchChangePage";

                content.push(pg.createHtml());
                $('operate_panel').innerHTML = content.join("");

                mapObj.addOverlays(Mmarker, true);
                mapObj.addEventListener(mapObj, TIP_OPEN, openTip);
            }
            break;
        case 'error':
            fis_alert(1, "<span class='alert_title'>网络忙！请重新尝试！</span><br /><strong>建议：</strong><br />如果您重试后仍无法显示结果，请过几分钟后再次尝试或者与我们的服务人员联系。<br />Email：service@realtimetraffic.cn");
            break;
        default:
            fis_alert(1, "<span class='alert_title'>对不起！网络忙！请重新尝试！</span><br /><strong>建议：</strong><br />如果您重试后仍无法显示结果，请过几分钟后再次尝试或者与我们的服务人员联系。<br />Email：service@realtimetraffic.cn");
            break;
    }
    hidewait();
    $('btnPoiSearch').disabled = false;
}
function local_searchChangePage(pageindex) {
    HashHandler.updateState(pageindex + ",local," + poiS.city_code + ",," + poiS.search_key);
}

//周边搜索
var aroundS;
function AroundSearch() {
    this.city_code = "全国";
    this.search_center = "";
    this.search_key = "";
    this.page_index = 1;
    this.srctype = "";
    this.search_center_x = "";
    this.search_center_y = "";
    this.range = 3000;
    this.refresh = true;
    this.center_data;
}
function mouseAroundSearch() {
    loadSearchPanel(1);
    $('aroundsearch_centerkey').value = "鼠标选择点";
    $('aroundsearch_xy').value = $("lnglatXY").value;
    $('aroundsearch_key').focus();

    var xyary = $("lnglatXY").value.split(',');
    var lnglat = new MLngLat(xyary[0], xyary[1]);

    if (marker_center) mapObj.removeOverlayById(around_pid);
    biaozhutype = 0;
    setMakerOption2(0, "中心点", "中心点", "鼠标选择点");

    var marker = new MMarker(lnglat);
    marker.id = "marker_center_pid";
    around_pid = marker.id;
    mapObj.addOverlay(marker);
    marker_center = marker;
}

function mouseAroundSearch2() {
    closeAlertDiv();
    showOperate();
    var xyary = $("lnglatXY").value.split(',');
    var oldcity = "";
    if (aroundS && aroundS != "undefined") {
        aroundS.city_code;
    }
    if ($("aroundsearch_citycode")) {
        oldcity = $("aroundsearch_citycode").value;
    }
    oldcity = (oldcity == "") ? "全国" : oldcity;
    HashHandler.updateState("1,around," + oldcity + ",,鼠标选择点,," + xyary + ",300,0");
}

function aroundSearchPoi() {

    aroundS = new AroundSearch();

    closeAlertDiv();
    showOperate();

    var i = 1; var che = "";
    var citycode = Trim($('aroundsearch_citycode').value); ;
    var centerkey = Trim($('aroundsearch_centerkey').value);

    var sxy = $('aroundsearch_xy').value;
    if (sxy != "") {

        aroundS.search_center_x = (sxy.split(',')[0]);
        aroundS.search_center_y = (sxy.split(',')[1]);

        aroundS.city_code = (citycode == "") ? "全国" : citycode;
        aroundS.search_center = (centerkey == "") ? ("鼠标选择点") : centerkey;
    }
    else {
        if (citycode == "") {
            che += i + "．请您输入城市号<br />";
            i = i + 1;
        }
        if (centerkey == "") {
            che += i + "．请您输入中心点关键字<br />";
            i = i + 1;
        }
        aroundS.city_code = citycode;
        aroundS.search_center = centerkey;
    }

    var key = Trim($('aroundsearch_key').value);
    if (key == "") {
        che += i + "．请您输入查询关键字";
        i = i + 1;
    }

    if (i == 1) {
        aroundS.search_key = key;

        if (aroundS.search_center_x != "" && aroundS.search_center_y != "") {
            HashHandler.updateState("1,around," + aroundS.city_code + ",," + aroundS.search_center + "," + key + "," + aroundS.search_center_x + "," + aroundS.search_center_y + "," + aroundS.range + "," + ((aroundS.refresh) ? "0" : "1"));
        }
        else {
            HashHandler.updateState("1,around," + aroundS.city_code + ",," + aroundS.search_center + "," + key + ",,," + aroundS.range + "," + ((aroundS.refresh) ? "0" : "1"));
        }

    } else {
        fis_alert(1, che);
    }
}

function around_searchChangePage(pageindex) {
    if (aroundS.search_center_x != "" && aroundS.search_center_y != "") {
        HashHandler.updateState(pageindex + ",around," + aroundS.city_code + ",," + aroundS.search_center + "," + aroundS.search_key + "," + aroundS.search_center_x + "," + aroundS.search_center_y + ",,," + aroundS.range + "," + ((aroundS.refresh) ? "0" : "1"));
    }
    else {
        HashHandler.updateState(pageindex + ",around," + aroundS.city_code + ",," + aroundS.search_center + "," + aroundS.search_key + ",,," + aroundS.range + "," + ((aroundS.refresh) ? "0" : "1"));
    }
}

function around_searchPoi(pageindex) {
    if (typeof MLocalSearch == "undefined") {
        fis_alert(1, "数据查询服务连接异常，请重试！");
        return;
    }
    var bAroundBusStationSearch = false;
    if (aroundS.search_key == "公交站点" || aroundS.search_key == "公交站" || aroundS.search_key == "公交车站") {
        aroundS.srctype = "BUS:20"; //BUS:1%2BPOI
        bAroundBusStationSearch = true;
    }

    $('btnAroundSearch').disabled = true;
    showwait();

    aroundS.page_index = pageindex;
    var mls = new MLocalSearch();
    var mlsp = new MLocalSearchOptions();
    mlsp.recordsPerPage = pageSize;
    mlsp.pageNum = pageindex;
    mlsp.range = aroundS.range;
    mlsp.naviFlag = 1;
    mlsp.srcType = aroundS.srctype;

    mls.setCallbackFunction(aroundSearch_CallBack);

    if (aroundS.search_center_x != "" && aroundS.search_center_y != "") {
        mls.poiSearchByCenterXY(new MLngLat(aroundS.search_center_x, aroundS.search_center_y), (bAroundBusStationSearch) ? "" : aroundS.search_key, aroundS.city_code, mlsp);
    }
    else {
        mls.poiSearchByCenterKeywords(aroundS.search_center, (bAroundBusStationSearch) ? "" : aroundS.search_key, aroundS.city_code, mlsp);
    }
}

function around_searchByKey() {
    var mls = new MLocalSearch();
    var mlsp = new MLocalSearchOptions();
    mlsp.recordsPerPage = 20;
    mls.setCallbackFunction(aroundCenterSearch_CallBack);
    mls.poiSearchByKeywords(aroundS.search_center, aroundS.city_code, mlsp);
}
function aroundCenterSearch_CallBack(data) {
    if (typeof data == "undefined" || typeof data.poilist == "undefined") {
        fis_alert(1, "查询出错，请重试。")
        return;
    }
    if (data.poilist.length == 0) {
        fis_alert(1, "中心点不存在，请重新输入。");
        return;
    }
    if (data.poilist.length == 1) {

        setCenterValue(data.poilist[0]);

        //搜索
        around_searchPoi(1);
    }
    else {
        aroundS.center_data = data;
        //弹出待确定框
        showConfirmPanel(4, data, null);
    }
}

function setCenterValue(data) {
    aroundS.search_center = data.name;
    aroundS.search_center_x = data.x;
    aroundS.search_center_y = data.y;
}

function aroundSearch_CallBack(data) {
    switch (data.message) {
        case 'ok':
            var Mmarker1 = new Array();
            var content = [];
            if (data.poilist.length == 0) {
                fis_alert(1, "<span class='alert_title'>在 " + aroundS.search_center + " 周边找 " + aroundS.search_key + "<br/>未查找到任何结果!</span><br/>建议：<br/>1.请确保所有字词拼写正确。<br/>2.尝试不同的关键字。<br/>3.尝试更宽泛的关键字。");
            } else {
                removeAllOverlays();
                if (aroundS.search_key == "") {
                    $("operate_title").innerHTML = "在 <span>" + aroundS.search_center + "</span> 附近的地标点";
                }
                else {
                    $("operate_title").innerHTML = "在 <span>" + aroundS.search_center + "</span> 周边找 <span>" + aroundS.search_key + "</span>";
                }
                content.push("<div style=\"padding:10px;\">共" + data.total + "条结果，耗时" + data.searchtime / 1000 + "秒。</div>");
                content.push('<div style="border:#FF1E00 1px solid; background:#FFFFC1; padding:3px; margin-left:10px; margin-right:10px;">点击图片 <img width="13" height="11" src="../images/more.gif" /> 获取更多功能。如查找周边，驾车线路等。</div>');
                for (var i = 0; i < data.poilist.length; i++) {

                    content.push('<div class="result_item" ');
                    content.push("><div class=\"" + ((i < 9) ? "sr_left" : "sr_left2") + "\">");
                    content.push(i + 1);
                    content.push("</div><div class=\"sr_right\"><a class=\"result_item_title\" href=\"javascript:void(0);\" onclick=\"");
                    content.push("var s=mapObj.setCenter(new MLngLat('");
                    content.push(data.poilist[i].x + "','" + data.poilist[i].y);
                    content.push("'));try{var t = mapObj.openOverlayTip('" + (i) + "around');}catch(e){}\" ");
                    content.push(' id="sr_');
                    content.push(i);
                    content.push("\">" + data.poilist[i].name + "</a>");
                    content.push('&nbsp;&nbsp;&nbsp;<img src="../images/more.gif" width="13" height="11" alt="更多操作" style="cursor:pointer;" title="更多操作" onclick="showToolMenu(this,' + i + ',\'' + aroundS.city_code + '\',\'' + data.poilist[i].name + '\',\'' + data.poilist[i].x + '\',\'' + data.poilist[i].y + '\');" />');

                    var tipC = TipContents(data.poilist[i].type, data.poilist[i].address, data.poilist[i].tel)
                    //                    if (typeof data.poilist[i].address != "undefined") {
                    //                        content.push("<div>地址：" + data.poilist[i].address + "</div>");
                    //                    }
                    //                    if (typeof data.poilist[i].tel != "undefined") {
                    //                        content.push("<div>电话：" + data.poilist[i].tel + "</div>");
                    //                    }
                    //                    content.push("<div>类型：" + data.poilist[i].type + "</div>");
                    content.push(tipC);

                    var lineLinks = "";
                    if (data.poilist[i].srctype == "bus") {
                        xmlArray[i] = new Array();
                        var pass = parsePassLineXml(data.poilist[i].xml);

                        xmlArray[i]['line'] = parseClusterSta(pass);
                        var length = xmlArray[i]['line'].length
                        xmlArray[i]['xy'] = parseClusterXY(pass);
                        xmlArray[i]['name'] = data.poilist[i].name;
                        xmlArray[i]['pid'] = data.poilist[i].pguid;
                        xmlArray[i]['time'] = data.poilist[i].timestamp;
                        lineLinks += "<div class=\"busstation_lines\">停靠线路：<br />" + getPassLineStr(xmlArray[i]['line'], c_b) + "</div>"
                        content.push(lineLinks);
                    }

                    var morelink = MoreLink(aroundS.city_code, data.poilist[i].name, data.poilist[i].x + "," + data.poilist[i].y);
                    content.push("</div><div style=\"clear:both;\"></div></div>");

                    var markerOption = new MMarkerOptions();
                    markerOption.imageUrl = "http://code.mapabc.com/images/apin/lan_" + (i + 1) + ".png";
                    markerOption.picAgent = false;
                    markerOption.isDraggable = false; //是否可以拖动

                    var tipOption = new MTipOptions();
                    tipOption.tipType = HTML_BUBBLE_TIP;
                    tipOption.title = (i + 1) + ". " + data.poilist[i].name;

                    if (data.poilist[i].srctype == "bus") {
                        tipC = "<br />" + lineLinks;
                    }

                    tipC += morelink;
                    tipOption.content = tipC; //tip内容
                    tipOption.borderStyle.thickness = 2;
                    tipOption.borderStyle.color = 0x005cb5;
                    tipOption.borderStyle.alpha = 1;
                    tipOption.titleFontStyle.name = "Arial";
                    tipOption.titleFontStyle.size = 12;
                    tipOption.titleFontStyle.color = 0xffffff;
                    tipOption.titleFontStyle.bold = true;
                    tipOption.contentFontStyle.name = "Arial";
                    tipOption.contentFontStyle.size = 13;
                    tipOption.contentFontStyle.color = 0x000000;
                    tipOption.contentFontStyle.bold = false;
                    tipOption.fillStyle.color = 0xFFFFFF; //填充色
                    tipOption.fillStyle.alpha = 1;
                    tipOption.titleFillStyle.color = 0x005cb5;
                    tipOption.titleFillStyle.alpha = 1;

                    markerOption.tipOption = tipOption;
                    markerOption.canShowTip = true;
                    var ll = new MLngLat(data.poilist[i].x, data.poilist[i].y);
                    Mmarker1[i] = new MMarker(ll, markerOption);
                    Mmarker1[i].id = (i + "around");
                }

                pg = new showPages('pg');
                pg.page = aroundS.page_index;  // 定义总页数
                pg.pageCount = (data.count % pageSize == 0) ? data.count / pageSize : (Math.floor(data.count / pageSize) + 1);
                pg.clickFun = "around_searchChangePage";

                content.push(pg.createHtml());
                $('operate_panel').innerHTML = content.join("");

                mapObj.addOverlays(Mmarker1, aroundS.refresh);
                mapObj.addEventListener(mapObj, TIP_OPEN, openTip)

                if (data.cenpoi) {
                    //关键字周边查询中心点tip
                    var cpoi = data.cenpoi;
                    centX = cpoi.x;
                    centY = cpoi.y;

                    var markerOption = new MMarkerOptions();
                    var labelOptions = new MLabelOptions();
                    var fontstyle = new MFontStyle();  //定义字体风格对象   
                    fontstyle.name = "Arial";
                    fontstyle.size = 13;
                    fontstyle.color = 0xffffff;
                    fontstyle.bold = true;
                    labelOptions.fontStyle = fontstyle;
                    labelOptions.borderColor = 0x000000;
                    labelOptions.content = "中心点";
                    labelOptions.hasBorder = true;
                    labelOptions.hasBackground = true;
                    labelOptions.backgroundColor = 0xff230b;
                    markerOption.labelOption = labelOptions;

                    markerOption.canShowTip = true;
                    markerOption.imageUrl = "http://www.mapabc.com/images/center.swf";
                    markerOption.labelPosition = new MPoint(5, 0);
                    var tipOption = new MTipOptions();
                    tipOption.tipType = HTML_BUBBLE_TIP;
                    tipOption.borderStyle.color = 0xEA2907;
                    tipOption.titleFillStyle.color = 0xEA2907;
                    tipOption.title = "<font color='#000000'><b>中心点</b></font>";
                    tipOption.content = "&nbsp;&nbsp;<b>" + ((!cpoi.name) ? "鼠标选择点" : cpoi.name) + "</b><br>" + TipContents(cpoi.type, cpoi.address, cpoi.tel); //tip内容
                    markerOption.tipOption = tipOption;
                    var ll = new MLngLat(centX, centY);
                    var Mmarker = new MMarker(ll, markerOption);
                    mapObj.addOverlay(Mmarker, false);
                }
            }
            break;
        case 'error':
            fis_alert(1, "<span class='alert_title'>网络忙！请重新尝试！</span><br /><strong>建议：</strong><br />如果您重试后仍无法显示结果，请过几分钟后再次尝试或者与我们的服务人员联系。<br />Email：service@realtimetraffic.cn");
            break;
        default:
            fis_alert(1, "<span class='alert_title'>对不起！网络忙！请重新尝试！</span><br /><strong>建议：</strong><br />如果您重试后仍无法显示结果，请过几分钟后再次尝试或者与我们的服务人员联系。<br />Email：service@realtimetraffic.cn");
            break;
    }
    hidewait();
    $('btnAroundSearch').disabled = false;
}

//function parsePassLineXml2(xml) {
//    var pass = {};
//    pass['lineKeys'] = parsePassLine(xml, "BUSINFO_LINE_KEYS", 28);
//    pass['lineIds'] = parsePassLine(xml, "BUSINFO_LINEIDS", 26);
//    pass['lineNames'] = parsePassLine(xml, "BUSINFO_LINE_NAMES", 29);
//    return pass;
//}

function parsePassLine(xml, nameTag, preLength) {
    var pos = xml.search(nameTag);
    var str = xml.substring(pos + preLength, xml.indexOf("]]>", pos + preLength));
    return str;
}

function parseClusterSta(line) {
    var lines = new Array();
    var keys = line['lineKeys'].split("|");
    var ids = line['lineIds'].split("|");
    var names = line['lineNames'].split("|");
    for (var i = 0; i < ids.length; i++) {
        if (i >= keys.length || i >= names.length) break;

        lines[i] = new Array();
        var keyss = keys[i].split(";");
        var idss = ids[i].split(";");
        var namess = names[i].split(";");
        for (var j = 0; j < idss.length; j++) {
            lines[i][j] = new Array();
            lines[i][j]['lineKey'] = keyss[j];
            lines[i][j]['lineId'] = idss[j];
            lines[i][j]['lineName'] = namess[j];
        }
        if (lines[i].length > 1)
            lines[i].sort(sortfunction);
    }

    return lines;
}
function sortfunction(x, y) {
    return (x['lineNames'] > y['lineNames'] ? 1 : -1);
}
function containValue(ary, svalue) {
    for (linekey in ary) {
        if (ary[linekey] == svalue) {
            return true;
        }
    }
    return false;
}

//驾车/公交 查询
var driveS;
function DriveSearch() {
    this.search_type = MRoutSearch.DriveSearch;
    this.start_data; this.end_data;    //存储起点和终点的搜索结果
    this.route_way = "0";
    this.point_id = "";
    this.start_x = ""; this.start_y = ""; this.start_name = ""; this.start_address = ""; this.start_tel = ""; this.start_pid = ""; this.start_citycode = ""; this.start_type = "";
    this.start_cityname = ""; this.start_detailLink = "";
    this.end_x = ""; this.end_y = ""; this.end_name = ""; this.end_address = ""; this.end_tel = ""; this.end_pid = ""; this.end_citycode = "";
    this.end_cityname = ""; this.end_detailLink = ""; this.end_type = "";
    this.passby_name = ""; this.passby_xy = ""; this.passby_data;
    this.route_segment;
    this.format_type = 0; //0 or 1
    this.from_panel = 0;   //
    this.maptitle = ""; this.mapname = ""; this.mapsummary = ""; this.mapId = 0;
    this.allJsonStr;
}
function mouseRoutStart() {
    if (prePanelIndex != 2) {
        loadSearchPanel(2);
    }
    
    $('driveLine_startname').value = "鼠标选择点";
    $('driveLine_startxy').value = $("lnglatXY").value;
    $('driveLine_endname').focus();
    showPopup("driveLine_endname", "请输入或者用鼠标设置目的地点，然后点击『地图搜索』");

    var xyary = $("lnglatXY").value.split(',');
    var lnglat = new MLngLat(xyary[0], xyary[1]);

    if (marker_start) mapObj.removeOverlayById(start_pid);
    biaozhutype = 1;
    setMakerOption2(1, "起点", "起点", " 鼠标选择点");

    var marker = new MMarker(lnglat);
    marker.id = "marker_start_pid";
    start_pid = marker.id;
    mapObj.addOverlay(marker);
    marker_start = marker;
}
function mouseRoutEnd() {
    if (prePanelIndex != 2) { loadSearchPanel(2); }
    
    $('driveLine_endname').value = "鼠标选择点";
    $('driveLine_endxy').value = $("lnglatXY").value;
    $('btnRoutSearch').focus();
    showPopup("btnRoutSearch", "点击『地图搜索』，获取驾车线路");
    
    var xyary = $("lnglatXY").value.split(',');
    var lnglat = new MLngLat(xyary[0], xyary[1]);

    if (marker_end) mapObj.removeOverlayById(end_pid);
    biaozhutype = 2;
    setMakerOption2(2, "终点", "终点", " 鼠标选择点");

    var marker = new MMarker(lnglat);
    marker.id = "marker_end_pid";
    end_pid = marker.id;
    mapObj.addOverlay(marker);
    marker_end = marker;
}
function mouseBusStart() {
    if (prePanelIndex != 3) {
        loadSearchPanel(3);
    }
    changeBusPanel(0);
    $('bus_startname').value = "鼠标选择点";
    $('bus_startxy').value = $("lnglatXY").value;
    $('bus_endname').focus();
    showPopup("bus_endname", "请输入或者用鼠标设置目的地点，然后点击『搜公交』");

    var xyary = $("lnglatXY").value.split(',');
    var lnglat = new MLngLat(xyary[0], xyary[1]);

    if (marker_start) mapObj.removeOverlayById(start_pid);
    biaozhutype = 1;
    setMakerOption2(1, "起点", "起点", " 鼠标选择点");

    var marker = new MMarker(lnglat);
    marker.id = "marker_start_pid";
    start_pid = marker.id;
    mapObj.addOverlay(marker);
    marker_start = marker;
}
function mouseBusEnd() {
    if (prePanelIndex != 3) { loadSearchPanel(3); }
    changeBusPanel(0);
    $('bus_endname').value = "鼠标选择点";
    $('bus_endxy').value = $("lnglatXY").value;
    $('btnBusSearch').focus();
    showPopup("btnBusSearch", "点击『搜公交』，获取公交乘车线路");

    var xyary = $("lnglatXY").value.split(',');
    var lnglat = new MLngLat(xyary[0], xyary[1]);

    if (marker_end) mapObj.removeOverlayById(end_pid);
    biaozhutype = 2;
    setMakerOption2(2, "终点", "终点", " 鼠标选择点");

    var marker = new MMarker(lnglat);
    marker.id = "marker_end_pid";
    end_pid = marker.id;
    mapObj.addOverlay(marker);
    marker_end = marker;
}

function driveLineSearch() {
    closeAlertDiv();
    showOperate();
    driveS = new DriveSearch();
    driveS.format_type = 0;
    driveS.from_panel = 0;
    driveS.maptitle = "搜索结果";

    driveS.start_cityname = $('driveLine_citynameS').value;
    driveS.end_cityname = $('driveLine_citynameE').value;
    driveS.start_name = $('driveLine_startname').value;
    driveS.end_name = $('driveLine_endname').value;

    var sxy = $('driveLine_startxy').value;
    if (sxy != "") {
        driveS.start_x = sxy.split(',')[0];
        driveS.start_y = sxy.split(',')[1];
    }

    var exy = $('driveLine_endxy').value;
    if (exy != "") {
        driveS.end_x = exy.split(',')[0];
        driveS.end_y = exy.split(',')[1];
    }

    var selvalue = getRadioSelValue("routType");
    if (selvalue != "") {
        driveS.route_way = selvalue;
    }

    if (driveS.start_x != "" && driveS.start_y != "" && driveS.end_x != "" && driveS.end_y != "") {
        HashHandler.updateState("1,rout," + driveS.start_cityname + "," + driveS.end_cityname + "," + driveS.start_name + "," + driveS.end_name + "," + driveS.start_x + "," + driveS.start_y + "," + driveS.end_x + "," + driveS.end_y);
        return;
    }

    var che = ""; var che = "";
    var i = 1;
    if (driveS.start_name == "请输入起点" || driveS.start_name == "") {
        che += i + "．请输入起点<br />";
        i = i + 1;
    }
    if (driveS.end_name == "" || driveS.end_name == "请输入终点") {
        che += i + "．请输入终点<br />";
        i = i + 1;
    }
    if (driveS.start_cityname == "") {
        che += i + "．请选择起点城市<br />";
        i = i + 1;
    }
    if (driveS.end_cityname == "") {
        che += i + "．请选择终点城市<br />";
        i = i + 1;
    }
    if (i == 1) {
        //$('btnRoutSearch').disabled = true;
        showwait();
        HashHandler.updateState("1,rout," + driveS.start_cityname + "," + driveS.end_cityname + "," + driveS.start_name + "," + driveS.end_name + "," + driveS.start_x + "," + driveS.start_y + "," + driveS.end_x + "," + driveS.end_y);
    } else {
        fis_alert(1, che);
    }
}

//搜索起点
function driveLine_Startsearch(c, s) {
    if (driveS.start_x != "" && driveS.start_y != "") {
        driveLine_Endsearch();
        return;
    }

    if (typeof MLocalSearch == "undefined") {
        fis_alert(1, "数据查询服务连接异常，请重试！");
        $('btnRoutSearch').disabled = false;
        return;
    }
    showwait();
    var mls = new MLocalSearch();
    var mlsp = new MLocalSearchOptions();
    mlsp.recordsPerPage = 20;
    mlsp.srcType = "BUS:5%2BPOI";
    mls.setCallbackFunction(driveLineStartsearch_CallBack);
    mls.poiSearchByKeywords(driveS.start_name, driveS.start_cityname, mlsp);
}
function driveLineStartsearch_CallBack(data) {
    if (typeof data == "undefined" || typeof data.poilist == "undefined") {
        hidewait();
        fis_alert(1, "查询出错，请重试。");
        $('btnRoutSearch').disabled = false;
        return;
    }
    if (data.poilist.length == 0) {
        hidewait();
        fis_alert(1, "<span class='alert_title'>起点不存在，请重新输入。</span><br/>建议：<br/>1.请确保所有字词拼写正确。<br/>2.尝试不同的关键字。<br/>3.尝试更宽泛的关键字。<br/>4.使用鼠标设置起点。");
        $('btnRoutSearch').disabled = false;
        return;
    }
    if (data.poilist.length == 1) {
        setStartValue(data.poilist[0]);
    }
    else {
        driveS.start_data = data;
    }
    driveLine_Endsearch();
}

//搜索终点
function driveLine_Endsearch() {
    if (driveS.end_x != "" && driveS.end_y != "") {
        if (driveS.start_x == "" || driveS.start_y == "") {
            if (driveS.start_data.poilist.length == 1) {
                setStartValue(driveS.start_data.poilist[0]);
            }
            else {
                showConfirmPanel(0, driveS.start_data, null);
                return;
            }
        }
        driveLine_search();
        return;
    }

    if (typeof MLocalSearch == "undefined") {
        hidewait();
        fis_alert(1, "数据查询服务连接异常，请重试！");
        $('btnRoutSearch').disabled = false;
        return;
    }
    showwait();
    var mls = new MLocalSearch();
    var mlsp = new MLocalSearchOptions();
    mlsp.recordsPerPage = 20;
    mlsp.srcType = "BUS:5%2BPOI";
    mls.setCallbackFunction(driveLineEndsearch_CallBack);
    mls.poiSearchByKeywords(driveS.end_name, driveS.end_cityname, mlsp);
}
function driveLineEndsearch_CallBack(data) {
    hidewait();
    if (typeof data == "undefined" || typeof data.poilist == "undefined") {
        $('btnRoutSearch').disabled = false;
        fis_alert(1, "查询出错，请重试。")
        return;
    }
    if (data.poilist.length == 0) {
        fis_alert(1, "<span class='alert_title'>终点不存在，请重新输入。</span><br/>建议：<br/>1.请确保所有字词拼写正确。<br/>2.尝试不同的关键字。<br/>3.尝试更宽泛的关键字。<br/>4.使用鼠标设置终点。");
        $('btnRoutSearch').disabled = false;
        return;
    }

    if (data.poilist.length == 1) {
        setEndValue(data.poilist[0]);
    }
    else {
        driveS.end_data = data;
    }

    if (driveS.start_x == "" && driveS.end_x == "" && driveS.start_data.poilist.length > 1 && data.poilist.length > 1) {
        showConfirmPanel(2, driveS.start_data, data);
        return;
    }

    if (driveS.start_x == "") {
        showConfirmPanel(0, driveS.start_data, null);
        return;
    }

    if (driveS.end_x == "") {
        showConfirmPanel(1, data, null);
        return;
    }

    driveLine_search();
}

function return_search() {
    closeAlertDiv();
    if (driveS.start_x == "" || driveS.start_y == "" || driveS.end_x == "" || driveS.end_y == "") {
        fis_alert(1, "起点和终点坐标不能为空！");
    } else {

        showwait();

        var tmp_x = driveS.start_x;
        var tmp_y = driveS.start_y;
        var tmp_name = driveS.start_name;
        var tmp_address = driveS.start_address;
        var tmp_tel = driveS.start_tel;
        var tmp_pid = driveS.start_pid;
        var tmp_citycode = driveS.start_citycode;
        var tmp_type = driveS.start_type;
        var tmp_cityname = driveS.start_cityname;
        var tmp_detailLink = driveS.start_detailLink;

        driveS.start_x = driveS.end_x;
        driveS.start_y = driveS.end_y;
        driveS.start_name = driveS.end_name;
        driveS.start_address = driveS.end_address;
        driveS.start_tel = driveS.end_tel;
        driveS.start_pid = driveS.end_pid;
        driveS.start_citycode = driveS.end_citycode;
        driveS.start_cityname = driveS.end_cityname;
        driveS.start_detailLink = driveS.end_detailLink;
        driveS.start_type = driveS.end_type;

        driveS.end_x = tmp_x;
        driveS.end_y = tmp_y;
        driveS.end_name = tmp_name;
        driveS.end_address = tmp_address;
        driveS.end_tel = tmp_tel;
        driveS.end_pid = tmp_pid;
        driveS.end_citycode = tmp_citycode;
        driveS.end_cityname = tmp_cityname
        driveS.end_detailLink = tmp_detailLink;
        driveS.end_type = tmp_type;


        var startXY = new MLngLat(driveS.start_x, driveS.start_y);
        var endXY = new MLngLat(driveS.end_x, driveS.end_y);
        var mrs = new MRoutSearch();
        var option = new MRoutSearchOptions();
        option.routeType = parseInt(driveS.route_way);

        //经由点颠倒
        if (driveS.passby_xy) {
            //坐标颠倒
            var newarr = new Array();
            var arr = new Array();
            var poi_xy_r = driveS.passby_xy.split(",");
            var poi_xy_rl = poi_xy_r.length - 1;
            for (var j = 0; j < poi_xy_rl; j = j + 2) {
                arr.push(new MLngLat(poi_xy_r[j], poi_xy_r[j + 1]));
                newarr.unshift(poi_xy_r[j] + "," + poi_xy_r[j + 1]);
            }
            arr.reverse();
            driveS.passby_xy = newarr.join(",");

            var lnglats = new MLngLats(arr);
            option.passByXY = lnglats;

            //名称颠倒
            var nameary = driveS.passby_name.split(",");
            nameary.reverse();
            driveS.passby_name = nameary.join(",");
        }

        mrs.setCallbackFunction(driveLineSearch_CallBack);
        mrs.routSearchByStartXYAndEndXY(driveS.search_type, startXY, endXY, driveS.start_name, option);
    }
}

function driveLine_search() {
    if (driveS.start_x == "" || driveS.start_y == "" || driveS.end_x == "" || driveS.end_y == "") {
        fis_alert(1, "起点和终点坐标不能为空!");
    } else {
        var startXY = new MLngLat(driveS.start_x, driveS.start_y);
        var endXY = new MLngLat(driveS.end_x, driveS.end_y);
        var mrs = new MRoutSearch();
        var option = new MRoutSearchOptions();
        option.routeType = parseInt(driveS.route_way);

        if (driveS.passby_xy) {
            var arr = new Array();
            var poi_xy_r = driveS.passby_xy.split(",");
            var poi_xy_rl = poi_xy_r.length - 1;
            for (var j = 0; j < poi_xy_rl; j = j + 2) {
                arr.push(new MLngLat(poi_xy_r[j], poi_xy_r[j + 1]));
            }
            var lnglats = new MLngLats(arr);
            option.passByXY = lnglats;
        }
        showwait();
        mrs.setCallbackFunction(driveLineSearch_CallBack);

        if (driveS.search_type == MRoutSearch.DriveSearch) {
            mrs.routSearchByStartXYAndEndXY(driveS.search_type, startXY, endXY, "all", option);
        }
        else {
            mrs.routSearchByStartXYAndEndXY(driveS.search_type, startXY, endXY, driveS.start_cityname, option);
        }
    }
}
function driveLineSearch_CallBack(data) {
    driveS.allJsonStr = (ToJSON(data));

    switch (data.message) {
        case 'ok':
            var route_count = data.count;
            if (route_count == 0) {
                fis_alert(1, "<span class='alert_title'>未查找到任何结果！</span><br/>建议：<br/>1.输入比较大的地名。<br/>2.选择靠近道路的起终点。");
            } else {
                if (driveS.search_type == MRoutSearch.DriveSearch) {
                    $("operate_title").innerHTML = "搜索结果";
                    formatRoutResult(data);
                    getRoutTime(data);
                }
                else {
                    myfuncbusnew(data);
                }
            }
            break;
        case 'error':
            fis_alert(1, "<span class='alert_title'>对不起，未查找到任何结果！</span><br /><strong>建议：</strong><br />1.可能是网络忙，请重新尝试！<br/>2.输入比较大的地名。<br/>3.选择靠近道路的起终点。");
            break;
        default:
            fis_alert(1, "<span class='alert_title'>对不起！网络忙！请重新尝试！</span><br /><strong>建议：</strong><br />如果您重试后仍无法显示结果，请过几分钟后再次尝试或者与我们的服务人员联系。<br />Email：service@realtimetraffic.cn");
            break;
    }
    hidewait();
    $('btnRoutSearch').disabled = false;
}

function getRoutTime(data) {
    var time = 0;
    for (var i = 0; i < data.count; i++) {
        time += formatTime(data.segmengList[i].driveTime); //每一条路线的XY
    }
    $("routTime").innerHTML = "约" + formatTime2(time);
}

//格式化时间，××小时××分钟
function formatTime(driveTime) {
    if (driveTime.indexOf("小时") != -1) {
        var ary = driveTime.split("小时");
        return parseInt(ary[0]) * 60 + parseInt(ary[1].replace("分钟", ""), 0);
    }
    else {
        return parseInt(driveTime.replace("分钟", ""), 0);
    }
}
function formatTime2(driveTime) {
    if (driveTime < 60) {
        return driveTime + "分钟";
    }
    else if (driveTime % 60 == 0) {
        return driveTime / 60 + "小时";
    }
    else {
        return Math.floor(driveTime / 60) + "小时" + driveTime % 60 + "分钟";
    }
}

function formatRoutResult(data) {
    var route_text = ""; var road_length = 0;
    var route_count = data.count;
    var route_content = new Array();

    route_content.push('<div class="operatebody"><table width="100%" class="myMapTab" cellspacing="0">');

    if (driveS.format_type == 0) {
        //route_content.push('<tr><td width="20%"><b>出行方式</b>：</td><td>驾车</td><td align="right"></td></tr>');
        route_content.push('<tr><td width="20%"></td><td></td></tr>');
        driveS.maptitle = "驾车从 <span>" + driveS.start_name + "</span> 到 <span>" + driveS.end_name + "</span>";
    }
    else if (driveS.format_type == 1) {
        route_content.push('<tr height="25"><td width="20%"><b>线路名称</b></td><td> <input type="text" id="txtMapName" value="' + driveS.mapname + '" style="width:250px;" /></td></tr>');
        route_content.push('<tr height="25"><td><b>备注</b></td><td> <textarea type="text" id="txtMapSummary"  style="width:250px;height:40px;font-size:12px;">' + driveS.mapsummary + '</textarea></td></tr>');
    }
    else {
        route_content.push('<tr height="25"><td width="20%"><b>线路名称</b></td><td> ' + driveS.mapname + '<div style="float:right"><a href="javascript:editMyMap(' + driveS.mapId + ');">编辑此线路</a></div></td></tr>');
        route_content.push('<tr height="25"><td><b>备注</b></td><td> ' + driveS.mapsummary + '</td></tr>');
    }

    if (driveS.format_type == 0 || driveS.format_type == 1) {
        route_content.push('<tr height="25"><td><b>起 点</b></td><td><div id="startName1"></div></td></tr>');
        //route_content.push('<tr height="25"><td><b>经由点</b></td><td><div id="passByPoints"></div><div id="passByBody"><a href="javascript:amendPassBy();">添加经由点</a></div></td></tr>');
        route_content.push('<tr height="25"><td><b>终 点</b></td><td><div id="endName1"></div></td></tr>');
    }
    else {
        route_content.push('<tr height="20"><td><b>起 点</b></td><td>' + driveS.start_name + '</td></tr>');
        if (driveS.passby_name) {
            route_content.push('<tr height="25"><td><b>经由点</b></td><td>');
            var nameary = driveS.passby_name.split(",");
            route_content.push('<table width="100%" cellpadding="0" cellspacing="0" class="myMapPassTab"><tr><td></td><td width="10%"></td></tr>');
            for (var i = 0; i < nameary.length; i++) {
                route_content.push('<tr><td style="padding-top:2px;">' + nameary[i] + '</td></tr>');
            }
            route_content.push('</table>');
            route_content.push('</td></tr>');
        }
        route_content.push('<tr height="20"><td><b>终 点</b></td><td>' + driveS.end_name + '</td></tr>');
    }

    driveS.route_segment = new Array();
    for (var i = 0; i < route_count; i++) {
        driveS.route_segment[i] = data.segmengList[i].coor; //每一条路线的XY
        road_length += parseInt(data.segmengList[i].roadLength); //每一条路线的里程
        if (i == 0) {
            route_text += "<tr class=\"td_style\" id=\"tr_" + i + "\" onMouseover=\"className='td_style1'\" onMouseout=\"className='td_style'\" onclick=\"driveLineDrawFoldline('" + i + "','" + route_count + "')\"><td align=\"center\">" + (i + 1) + ".</td><td>沿<strong>" + data.segmengList[i].roadName + "</strong>向<strong>" + data.segmengList[i].direction + "</strong><span class=\"gray\">行驶</span></td><td align=\"right\">" + Getdistance(data.segmengList[i].roadLength) + "</td></tr>";
        } else {
            route_text += "<tr class=\"td_style\" id=\"tr_" + i + "\" onMouseover=\"className='td_style1'\" onMouseout=\"className='td_style'\" onclick=\"driveLineDrawFoldline('" + i + "','" + route_count + "')\"><td align=\"center\">" + (i + 1) + ".</td><td>" + data.segmengList[i - 1].action + "<span class=\"gray\">进入</span><strong>" + data.segmengList[i].roadName + "</strong>向<strong>" + data.segmengList[i].direction + "</strong><span class=\"gray\">行驶</span></td><td align=\"right\">" + Getdistance(data.segmengList[i].roadLength) + "</td></tr>";
        }
    }
    //todo 若要显示 查询旅行时间 功能，则修改此处代码
    route_content.push("<tr><td><b>旅行时间</b></td><td><span id=\"routTime\"></span>&nbsp;&nbsp;<a href=\"javascript:showSetTimeDialog()\" style=\"color:red;display:none;\">查询旅行时间</a></td></tr>");

    if (driveS.format_type == 0 || driveS.format_type == 1) {
        route_content.push('<tr><td></td><td>');
        route_content.push('<input id="rdoRoutType0" type="radio" checked="checked" name="routType" value="0" checked="checked" onclick="selectMode_drive(0);" /><label for="rdoRoutType0">速度优先</label>');
        route_content.push('<input id="rdoRoutType1" type="radio"  name="routType" value="1" onclick="selectMode_drive(1);" /><label for="rdoRoutType1">费用优先</label>');
        route_content.push('<input id="rdoRoutType2" type="radio"  name="routType" value="2" onclick="selectMode_drive(2);" /><label for="rdoRoutType2">距离优先</label>');
        route_content.push('</td></tr>');
    }
    else {
        route_content.push('<tr height="20"><td><b>线路类型</b></td><td>' + ((driveS.route_way == 0) ? "速度优先" : ((driveS.route_way == 1) ? "费用优先" : "距离优先")) + '</td></tr>');
    }

    route_content.push('</table>');

    //需要判断类型
    if (driveS.format_type == 0)
        route_content.push('<div align="right"><a href="javascript:return_search();">查看返程线路</a></div>');

    route_content.push("<table width=\"100%\" cellspacing=\"0\" cellpadding=\"6\"><tr><td colspan=\"2\" style=\"background:#e1e1e1;\">　　路线详述</td><td width=\"20%\" style=\" border-left:1px solid #fff; background:#e1e1e1;\" align=\"right\">里程</td></tr><tr><td width=\"5%\" align=\"center\"><img src=\"../images/start.gif\" /></td><td colspan=\"2\">起点：" + driveS.start_name + "<div style=\"float:right;\"><b>全程</b> " + Getdistance(road_length) + "</div></td></tr>" + route_text + "<tr><td align=\"center\"><img src=\"../images/end.gif\" /></td><td colspan=\"2\">终点：" + driveS.end_name + "<div style=\"float:right;\"><b>全程</b> " + Getdistance(road_length) + "</div></td></tr>");
    route_content.push('</table>');
    route_content.push('<div style="color:gray;">此线路仅为您的出行提供参考。 您可能会发现实际情况会因道路施工、交通状况、天气或其他事件，而与地图结果不同，您应该根据实际情况相应调整计划路线。</div>');
    route_content.push('</div>');
    $('operate_panel').innerHTML = route_content.join("");

    //todo 我的地图功能可能启用
    //    var titlehtml = '<div style="float:left;font-weight:bold; font-size:14px;">' + driveS.maptitle + '</div>';
    //    if (driveS.format_type == 1) {
    //        //route_content.push('<tr><td></td><td colspan="2" align="right"><input type="button" onclick="saveMyMap(' + driveS.mapId + ');"  value="保 存" class="btn">&nbsp;&nbsp;<input type="button" class="btn" value="取 消" onclick="calcelEditMap();"></td></tr>');
    //        titlehtml += ('<div style="float:right;line-height:20px;padding-right:3px;padding-top:1px;"><input type="button" onclick="saveMyMap(' + driveS.mapId + ');"  value="保存" class="btn" />&nbsp;&nbsp;<input type="button" class="btn" value="取消" onclick="calcelEditMap();" /></div>');
    //    }
    //    else if (driveS.format_type != 0) {
    //        //route_content.push('<tr><td></td><td colspan="2" align="right"><input type="button" class="btn" value="取 消" onclick="calcelEditMap();"></td></tr>');
    //        titlehtml += ('<div style="float:right;padding-right:3px;line-height:20px;padding-top:1px;"><input type="button" class="btn" value="返回" onclick="calcelEditMap();" /></div>');
    //    }
    //    else {
    //        titlehtml += ('<div style="float:right;padding-right:3px;line-height:20px;padding-top:1px; display:none;"><input type="button" class="btn" onclick="saveMyMapPanel();" value="保存到我的地图" /></div>');
    //    }

    $("operate_title").innerHTML = driveS.maptitle;

    if (driveS.format_type == 0 || driveS.format_type == 1) {
        loadPassByHtml();
    }

    if (driveS.format_type == 0 || driveS.format_type == 1) {
        $('startName1').innerHTML = " " + driveS.start_name + "　<a href=\"javascript:amendStart();\"  class=\"gray\">修改</a>";
        $('endName1').innerHTML = " " + driveS.end_name + "　<a href=\"javascript:amendEnd();\"  class=\"gray\">修改</a>";
        $("rdoRoutType" + driveS.route_way).checked = true;
    }
    drawRoutLines(data.coors);
}

function selectMode_drive(mode) {
    HashHandler.updateState("1,rout," + driveS.start_cityname + "," + driveS.end_cityname + "," + driveS.start_name + "," + driveS.end_name + "," + driveS.start_x + "," + driveS.start_y + "," + driveS.end_x + "," + driveS.end_y + ",,,,,,,,," + mode);
}

function amendStart() {
    $('startName1').innerHTML = "<input style=\"width:120px;\" id=\"amendS\" name=\"amendS\" value=\"" + driveS.start_name + "\" tabindex=\"11\" type=\"text\">　<a href=\"javascript:subS()\" class=\"gray\">确定</a>　<a href=\"javascript:cancel_s()\"  class=\"gray\">取消</a>";
}
function amendEnd() {
    $('endName1').innerHTML = "<input style=\"width:120px;\" id=\"amendE\" name=\"amendE\" value=\"" + driveS.end_name + "\" tabindex=\"11\" type=\"text\">　<a href=\"javascript:subE()\" class=\"gray\">确定</a>　<a href=\"javascript:cancel_e()\"  class=\"gray\">取消</a>";
}
function cancel_s() {
    $('startName1').innerHTML = " " + driveS.start_name + "　<a href=\"javascript:amendStart();\"  class=\"gray\">修改</a>";
}
function cancel_e() {
    $('endName1').innerHTML = " " + driveS.end_name + "　<a href=\"javascript:amendEnd();\"  class=\"gray\">修改</a>";
}
function amendPassBy() {
    $('passByBody').innerHTML = "<input style=\"width:120px;\" id=\"amendPass\" name=\"amendPass\" value=\"\" tabindex=\"11\" type=\"text\">　<a href=\"javascript:subPass()\" class=\"gray\">确定</a>　<a href=\"javascript:setOc(3,0)\"  class=\"gray\" title=\"点击此链接，然后在地图上单击经由点位置\">图选</a>　<a href=\"javascript:cancel_pass()\"  class=\"gray\">取消</a>";
}
function cancel_pass() {
    $('passByBody').innerHTML = "<a href=\"javascript:amendPassBy();\">添加经由点</a>";
}
function subPass() {
    closeAlertDiv();
    var pass_name = $('amendPass').value;
    if (pass_name == "" || pass_name == "鼠标选择点" || pass_name == "请输入经由点") {
        fis_alert(1, "请输入经由点");
        return;
    }

    var mls = new MLocalSearch();
    var mlsp = new MLocalSearchOptions();
    mlsp.recordsPerPage = 20;
    mls.setCallbackFunction(driveLinePasssearch_CallBack);
    mls.poiSearchByKeywords(pass_name, driveS.start_cityname, mlsp);
}
function driveLinePasssearch_CallBack(data) {
    if (typeof data == "undefined" || typeof data.poilist == "undefined") {
        fis_alert(1, "查询出错，请重试。")
        return;
    }
    if (data.poilist.length == 0) {
        fis_alert(1, "经由点不存在，请重新输入。");
        return;
    }
    if (data.poilist.length == 1) {
        setPassValue(data.poilist[0]);
        //搜索
        driveLine_search();
    }
    else {
        driveS.pass_data = data;
        //弹出待确定框
        showConfirmPanel(3, data, null);
    }
}
function loadPassByHtml() {
    if (!driveS.passby_xy) return;

    var xyary = driveS.passby_xy.split(",");
    var nameary = driveS.passby_name.split(",");

    var html = [];
    html.push('<table width="100%" cellpadding="0" cellspacing="0" class="myMapPassTab"><tr><td></td><td width="10%"></td></tr>');
    for (var i = 0; i < nameary.length; i++) {
        html.push('<tr onmouseover="this.style.background=\'#EAEAEA\';"  onmouseout="this.style.background=\'#ffffff\';"><td style="padding-top:2px;">' + nameary[i] + '</td><td><img src="../images/close.gif" width="14" height="13" title="删除该经由点" style="cursor:pointer;" onclick="removePassByPoint(' + i + ');" /></td></tr>');
    }
    html.push('</table>');
    $("passByPoints").innerHTML = html.join("");
    if (nameary.length < 5) { //最多添加5个经由点
        $('passByBody').innerHTML = "<a href=\"javascript:amendPassBy();\">添加经由点</a>";
    }
    else {
        $('passByBody').innerHTML = "";
    }
}
function removePassByPoint(index) {
    var xyary = driveS.passby_xy.split(",");
    var nameary = driveS.passby_name.split(",");
    var newnameary = new Array();
    var newxyary = new Array();
    for (var i = 0; i < nameary.length; i++) {
        if (i != index) {
            newnameary.push(nameary[i]);
            newxyary.push(xyary[i * 2] + "," + xyary[i * 2 + 1]);
        }
    }
    driveS.passby_xy = newxyary.join(",");
    driveS.passby_name = newnameary.join(",");

    driveLine_search();
}

function subS() {
    closeAlertDiv();
    var start_name = $('amendS').value;
    if (start_name == "" || start_name == "鼠标选择点" || start_name == "请输入起点") {
        fis_alert(1, "请输入起点");
        return;
    }
    driveS.start_name = start_name;
    driveS.start_x = "";
    driveS.from_panel = 2;

    var mls = new MLocalSearch();
    var mlsp = new MLocalSearchOptions();
    mlsp.recordsPerPage = 20;
    mls.setCallbackFunction(driveLineStartsearch_CallBack2);
    mls.poiSearchByKeywords(driveS.start_name, driveS.start_cityname, mlsp);
}
function driveLineStartsearch_CallBack2(data) {
    if (typeof data == "undefined" || typeof data.poilist == "undefined") {
        fis_alert(1, "查询出错，请重试。")
        return;
    }
    if (data.poilist.length == 0) {
        fis_alert(1, "起点不存在，请重新输入。");
        return;
    }
    if (data.poilist.length == 1) {
        setStartValue(data.poilist[0]);
    }
    else {
        driveS.start_data = data;
    }
    driveLine_Endsearch(driveS.end_cityname, driveS.end_name);
}

function subE() {
    closeAlertDiv();
    var end_name = $('amendE').value;
    if (end_name == "" || end_name == "鼠标选择点" || end_name == "请输入终点") {
        fis_alert(1, "请输入终点");
        return;
    }
    driveS.end_name = end_name;
    driveS.end_x = "";
    driveS.from_panel = 2;
    driveLine_Endsearch(driveS.end_cityname, driveS.end_name);
}

//若添加onchange，使用键盘移动项时会出现标点bug
function showConfirmPanel(tp, data, data2) {
    var html = new Array();
    if (tp == 0 || tp == 1) {
        $("operate_title").innerHTML = '您输入的<span>' + ((tp == 0) ? "起点" : "终点") + "</span>有多个，请确定：";
        html.push('<div class="operatebody">');
        html.push('<div class="subtitle">从下面列表选择一个，或者');
        html.push((tp == 0) ? '<A title="点击该链接，然后在地图上点击起点位置" href="javascript:setOc(1)"><B style="COLOR: #ff0000;">使用鼠标设置起点</B></A>' : '<A title="点击该链接，然后在地图上点击终点位置" href="javascript:setOc(2)"><B style="COLOR: #ff0000;">使用鼠标设置终点</B></A>');
        html.push('<select id="selConfirm" style="height:163px;width:100%;" onclick="locationMap(this,' + tp + ');" multiple="multiple">');
        for (var i = 0; i < data.poilist.length; i++) {
            html.push('<option  value="' + data.poilist[i].x + ';' + data.poilist[i].y + '" ' + ((i == 0) ? "selected" : "") + '>' + data.poilist[i].name + ((data.poilist[i].srctype == "bus") ? "（公交站）" : "") + '</option>');
        }
        html.push('</select><input type="hidden" value="0" id="confirmSelValue' + ((tp == 0) ? "1" : "2") + '" />');
    }
    else if (tp == 2) {
        $("operate_title").innerHTML = "您输入的<span>起点</span>和<span>终点</span>均有多个，请确定：";
        html.push('<div class="operatebody"><div class="subtitle">从下面列表选择起点，或者<A title="点击该链接，然后在地图上点击起点位置" href="javascript:setOc(1)"><B style="COLOR: #ff0000;">使用鼠标设置起点</B></A></div>');
        html.push('<select id="selConfirm" style="height:100px;width:100%;" onclick="locationMap(this,' + tp + ',0);" multiple="multiple">');
        for (var i = 0; i < data.poilist.length; i++) {
            html.push('<option value="' + data.poilist[i].x + ';' + data.poilist[i].y + '" ' + ((i == 0) ? "selected" : "") + '>' + data.poilist[i].name + ((data.poilist[i].srctype == "bus") ? "（公交站）" : "") + '</option>');
        }
        html.push('</select><input type="hidden" value="0" id="confirmSelValue1" />');

        html.push('<div class="subtitle">从下面列表选择终点，或者<A title="点击该链接，然后在地图上点击终点位置" href="javascript:setOc(2)"><B style="COLOR: #ff0000;">使用鼠标设置终点</B></A></div>');
        html.push('<select id="selConfirm2" style="height:100px;width:100%;" onclick="locationMap(this,' + tp + ',1);" multiple="multiple">');
        for (var i = 0; i < data2.poilist.length; i++) {
            html.push('<option value="' + data2.poilist[i].x + ';' + data2.poilist[i].y + '" ' + ((i == 0) ? "selected" : "") + '>' + data2.poilist[i].name + ((data2.poilist[i].srctype == "bus") ? "（公交站）" : "") + '</option>');
        }
        html.push('</select><input type="hidden" value="0" id="confirmSelValue2" />');
    }
    else if (tp == 3) {
    $("operate_title").innerHTML = "您输入的<span>经由点</span>有多个，请确定：";
        html.push('<div class="operatebody">');
        html.push('<div class="subtitle">从下面列表选择经由点，或者');
        html.push('<A title="点击该链接，然后在地图上点击经由点位置" href="javascript:setOc(1)"><B style="COLOR: #ff0000;">使用鼠标设置经由点</B></A>');
        html.push('<select id="selConfirm" style="height:163px;width:100%;" onclick="locationMap(this,3);" multiple="multiple">');
        for (var i = 0; i < data.poilist.length; i++) {
            html.push('<option  value="' + data.poilist[i].x + ';' + data.poilist[i].y + '" ' + ((i == 0) ? "selected" : "") + '>' + data.poilist[i].name + ((data.poilist[i].srctype == "bus") ? "（公交站）" : "") + '</option>');
        }
        html.push('</select><input type="hidden" value="0" id="confirmSelValue" />');
    }
    else {//周边中心点
        $("operate_title").innerHTML = "您输入的<span>中心点</span>有多个，请确定：";
        html.push('<div class="operatebody">');
        html.push('<div class="subtitle">从下面列表选择中心点，或者');
        html.push('<A title="点击该链接，然后在地图上点击中心点位置" href="javascript:setOc(0)"><B style="COLOR: #ff0000;">使用鼠标设置中心点</B></A>');
        html.push('<select id="selConfirm" style="height:163px;width:100%;" onclick="locationMap(this,4);" multiple="multiple">');
        for (var i = 0; i < data.poilist.length; i++) {
            html.push('<option  value="' + data.poilist[i].x + ';' + data.poilist[i].y + '" ' + ((i == 0) ? "selected" : "") + '>' + data.poilist[i].name + ((data.poilist[i].srctype == "bus") ? "（公交站）" : "") + '</option>');
        }
        html.push('</select><input type="hidden" value="0" id="confirmSelValue" />');
    }
    html.push('<div><input id="btnConfirm" type="button" onclick="setSearchAgain(' + tp + ');" value="确定" /><input type="button" onclick="' + ((tp == 4) ? "cancelConfirmForAround" : "cancelConfirm") + '();" value="取消" /></div>');
    $('operate_panel').innerHTML = html.join("");
    locationMap($("selConfirm"), tp, 0);
    hidewait();
    showPopup("btnConfirm", "请选择合适的目标，然后点击『确定』");
}

//from表示来源，0返回到路径规划输入，1返回到修改我的地图，2返回到路径规划结果
function cancelConfirm() {
    hidePopup();
    closeAlertDiv();
    if (driveS.from_panel == 0) {
        $('operate_title').innerHTML = "";
        $('operate_panel').innerHTML = "";
    }
    else if (driveS.from_panel == 1) {
        loadCreateMyMap(driveS.start_cityname, driveS.start_name, driveS.end_cityname, driveS.end_name, driveS.route_way);
    }
    else {
        eval("var data=" + driveS.allJsonStr);
        formatRoutResult(data);
        getRoutTime(data);
    }
    $('btnRoutSearch').disabled = false;
}
function cancelConfirmForAround() {
    closeAlertDiv();
    setOrigSearchHtml("around");
}

function calcelEditMap() {
    removeAllOverlays();
    loadMyMapList();
}

function setSearchAgain(tp) {
    hidePopup();
    closeAlertDiv();
    //收集用户确定信息
    if (tp == 0) {
        var selvalue = $("confirmSelValue1").value;
        if (selvalue.indexOf(",") == -1) {
            var selindex = ($('selConfirm').selectedIndex);
            setStartValue(driveS.start_data.poilist[selindex]);
        }
        else {
            driveS.start_x = selvalue.split(',')[0];
            driveS.start_y = selvalue.split(',')[1];
            driveS.start_name = "鼠标选择点";
            driveS.start_address = "";
            driveS.start_tel = "";
            driveS.start_type = "";
            driveS.start_pid = "";
            driveS.start_citycode = "";
        }
        if (driveS.search_type == MRoutSearch.DriveSearch) {
            $("driveLine_startname").value = driveS.start_name; //先name后xy
            $("driveLine_startxy").value = driveS.start_x + "," + driveS.start_y;
            HashHandler.updateState("1,rout," + driveS.start_cityname + "," + driveS.end_cityname + "," + driveS.start_name + "," + driveS.end_name + "," + driveS.start_x + "," + driveS.start_y + "," + driveS.end_x + "," + driveS.end_y);
        }
        else {
            $("bus_startname").value = driveS.start_name; //先name后xy
            $("bus_startxy").value = driveS.start_x + "," + driveS.start_y;
            HashHandler.updateState("1,transfer," + driveS.start_cityname + "," + driveS.end_cityname + "," + driveS.start_name + "," + driveS.end_name + "," + driveS.start_x + "," + driveS.start_y + "," + driveS.end_x + "," + driveS.end_y);
        }
    }
    else if (tp == 1) {
        var selvalue = $("confirmSelValue2").value;
        if (selvalue.indexOf(",") == -1) {
            var selindex = ($('selConfirm').selectedIndex);
            setEndValue(driveS.end_data.poilist[selindex]);
        }
        else {
            driveS.end_x = selvalue.split(',')[0];
            driveS.end_y = selvalue.split(',')[1];
            driveS.end_name = "鼠标选择点";
            driveS.end_address = "";
            driveS.end_tel = "";
            driveS.end_type = "";
            driveS.end_pid = "";
            driveS.end_citycode = "";
        }

        if (driveS.search_type == MRoutSearch.DriveSearch) {
            $("driveLine_endname").value = driveS.end_name;
            $("driveLine_endxy").value = driveS.end_x + "," + driveS.end_y;
            HashHandler.updateState("1,rout," + driveS.start_cityname + "," + driveS.end_cityname + "," + driveS.start_name + "," + driveS.end_name + "," + driveS.start_x + "," + driveS.start_y + "," + driveS.end_x + "," + driveS.end_y);
        }
        else {
            $("bus_endname").value = driveS.end_name;
            $("bus_endxy").value = driveS.end_x + "," + driveS.end_y;
            HashHandler.updateState("1,transfer," + driveS.start_cityname + "," + driveS.end_cityname + "," + driveS.start_name + "," + driveS.end_name + "," + driveS.start_x + "," + driveS.start_y + "," + driveS.end_x + "," + driveS.end_y);
        }
    }
    else if (tp == 2) {
        var selindex;
        var selvalue = $("confirmSelValue1").value;
        if (selvalue.indexOf(",") == -1) {
            selindex = $('selConfirm').selectedIndex;
            setStartValue(driveS.start_data.poilist[selindex]);
        }
        else {
            driveS.start_x = selvalue.split(',')[0];
            driveS.start_y = selvalue.split(',')[1];
            driveS.start_name = "鼠标选择点";
            driveS.start_address = "";
            driveS.start_tel = "";
            driveS.start_type = "";
            driveS.start_pid = "";
            driveS.start_citycode = "";
        }
        selvalue = $("confirmSelValue2").value;
        if (selvalue.indexOf(",") == -1) {
            selindex = $('selConfirm2').selectedIndex;
            setEndValue(driveS.end_data.poilist[selindex]);
        }
        else {
            driveS.end_x = selvalue.split(',')[0];
            driveS.end_y = selvalue.split(',')[1];
            driveS.end_name = "鼠标选择点";
            driveS.end_address = "";
            driveS.end_tel = "";
            driveS.end_type = "";
            driveS.end_pid = "";
            driveS.end_citycode = "";
        }
        if (driveS.search_type == MRoutSearch.DriveSearch) {
            $("driveLine_startname").value = driveS.start_name;
            $("driveLine_endname").value = driveS.end_name;
            $("driveLine_startxy").value = driveS.start_x + "," + driveS.start_y;
            $("driveLine_endxy").value = driveS.end_x + "," + driveS.end_y;
            HashHandler.updateState("1,rout," + driveS.start_cityname + "," + driveS.end_cityname + "," + driveS.start_name + "," + driveS.end_name + "," + driveS.start_x + "," + driveS.start_y + "," + driveS.end_x + "," + driveS.end_y);
        }
        else {
            $("bus_startname").value = driveS.start_name;
            $("bus_endname").value = driveS.end_name;
            $("bus_startxy").value = driveS.start_x + "," + driveS.start_y;
            $("bus_endxy").value = driveS.end_x + "," + driveS.end_y;
            HashHandler.updateState("1,transfer," + driveS.start_cityname + "," + driveS.end_cityname + "," + driveS.start_name + "," + driveS.end_name + "," + driveS.start_x + "," + driveS.start_y + "," + driveS.end_x + "," + driveS.end_y);
        }
    }
    else if (tp == 3) {
        var selvalue = $("confirmSelValue").value;
        if (selvalue.indexOf(",") == -1) {
            var selindex = ($('selConfirm').selectedIndex);
            setPassValue(driveS.pass_data.poilist[selindex]);
        }
        else {
            driveS.passby_xy += (driveS.passby_xy) ? "," : "";
            driveS.passby_xy += selvalue;
            driveS.passby_name += (driveS.passby_name) ? "," : "";
            driveS.passby_name += "鼠标选择点";
        }
        driveLine_search();
    }
    else {
        var selvalue = $("confirmSelValue").value;
        if (selvalue.indexOf(",") == -1) {
            var selindex = ($('selConfirm').selectedIndex);
            setCenterValue(aroundS.center_data.poilist[selindex]);
        }
        else {
            aroundS.search_center_x = selvalue.split(",")[0];
            aroundS.search_center_y = selvalue.split(",")[1];
            aroundS.search_center = "鼠标选择点"; ;
        }
        HashHandler.updateState("1,around," + aroundS.city_code + ",," + aroundS.search_center + "," + aroundS.search_key + "," + aroundS.search_center_x + "," + aroundS.search_center_y);
    }
    if (tp == 4) {
        cancelConfirmForAround();
    }
    else {
        cancelConfirm();
    }
}

function setStartValue(poi) {
    driveS.start_x = poi.x;
    driveS.start_y = poi.y;
    driveS.start_name = poi.name;
    driveS.start_address = poi.address;
    driveS.start_tel = poi.tel;
    driveS.start_type = poi.type;
    driveS.start_pid = poi.pguid;
    driveS.start_citycode = poi.citycode;
}
function setEndValue(poi) {
    driveS.end_x = poi.x;
    driveS.end_y = poi.y;
    driveS.end_name = poi.name;
    driveS.end_address = poi.address;
    driveS.end_tel = poi.tel;
    driveS.end_type = poi.type;
    driveS.end_pid = poi.pguid;
    driveS.end_citycode = poi.citycode;
}
function setPassValue(poi) {
    driveS.passby_xy += (driveS.passby_xy) ? "," : "";
    driveS.passby_xy += poi.x + "," + poi.y;
    driveS.passby_name += (driveS.passby_name) ? "," : "";
    driveS.passby_name += poi.name;
}

function drawRoutLines(coors) {
    removeAllOverlays();
    var allover = new Array();
    var arr = new Array();
    var poi_xy_r = coors.split(",");
    var poi_xy_rl = poi_xy_r.length - 2
    for (var j = 0; j < poi_xy_rl; j = j + 2) {
        arr.push(new MLngLat(poi_xy_r[j], poi_xy_r[j + 1]));
    }
    //alert(arr[0].lngX+";"+ arr[1].latY);
    var lineopt = new MLineOptions();
    lineopt.lineStyle.thickness = 6;
    lineopt.lineStyle.color = 0x005cb5;
    lineopt.lineStyle.alpha = 0.8;
    var line = new MPolyline(arr, lineopt);
    lineopt.canShowTip = false;
    allover.push(line);
    /*起点终点*/
    var lineStyle = new MLineStyle();
    lineStyle.thickness = 2;
    lineStyle.alpha = 1;
    var fontStyle = new MFontStyle();
    fontStyle.name = "Arial";
    fontStyle.size = 12;
    fontStyle.color = 0xffffff;
    fontStyle.bold = true;
    var fontStyle1 = new MFontStyle();
    fontStyle1.name = "Arial";
    fontStyle1.size = 13;
    fontStyle1.color = 0x000000;
    fontStyle1.bold = false;
    var fillStyle = new MFillStyle();
    fillStyle.color = 0xFFFFFF; //填充色
    fillStyle.alpha = 1;
    var fillStyle1 = new MFillStyle();
    fillStyle1.color = 0x005cb5; //填充色
    fillStyle1.alpha = 1;
    var startmarkerOption = new MMarkerOptions();
    startmarkerOption.imageUrl = "http://code.mapabc.com/images/qd.png";
    startmarkerOption.picAgent = false;
    startmarkerOption.isDraggable = false; //是否可以拖动
    var tipOption = new MTipOptions();
    tipOption.tipType = HTML_BUBBLE_TIP;
    tipOption.title = "起点";
    var tipC = TipContents(driveS.start_type, driveS.start_address, driveS.start_tel)
    tipOption.content = "<br>&nbsp;&nbsp;<b>" + driveS.start_name + "</b>" + tipC; //tip内容
    tipOption.hasShadow = true;
    tipOption.borderStyle = lineStyle;
    tipOption.titleFontStyle = fontStyle;
    tipOption.contentFontStyle = fontStyle1;
    tipOption.fillStyle = fillStyle;
    tipOption.titleFillStyle = fillStyle1;
    startmarkerOption.tipOption = tipOption;
    var start = new MLngLat(driveS.start_x, driveS.start_y);
    var startmarker = new MMarker(start, startmarkerOption);
    startmarker.id = driveS.start_pid;
    allover.push(startmarker);

    var endmarkerOption = new MMarkerOptions();
    endmarkerOption.imageUrl = "http://code.mapabc.com/images/zd.png";
    endmarkerOption.picAgent = false;
    endmarkerOption.isDraggable = false; //是否可以拖动
    tipOption = new MTipOptions();
    tipOption.tipType = HTML_BUBBLE_TIP;
    tipOption.title = "终点";
    tipC = TipContents(driveS.end_type, driveS.end_address, driveS.end_tel)
    tipOption.content = "<br>&nbsp;&nbsp;<b>" + driveS.end_name + "</b>" + tipC; //tip内容
    tipOption.hasShadow = true;
    tipOption.borderStyle = lineStyle;
    tipOption.titleFontStyle = fontStyle;
    tipOption.contentFontStyle = fontStyle1;
    tipOption.fillStyle = fillStyle;
    tipOption.titleFillStyle = fillStyle1;
    endmarkerOption.tipOption = tipOption;
    var end = new MLngLat(driveS.end_x, driveS.end_y);
    var endmarker = new MMarker(end, endmarkerOption);
    endmarker.id = driveS.end_pid;
    allover.push(endmarker);
    /**/
    mapObj.addOverlays(allover, true);
    /*添加小车*/
    var lnglat = new MLngLat(poi_xy_r[0], poi_xy_r[1]);
    var busmarkerOption = new MMarkerOptions();
    busmarkerOption.imageUrl = "http://code.mapabc.com/images/car_03.png";
    busmarkerOption.picAgent = false;
    busmarkerOption.imageAlign = 5;
    var busmarker = new MMarker(lnglat, busmarkerOption);
    busmarker.id = "route1";
    mapObj.addOverlay(busmarker);

    //mapObj.setGPSFocus("route1", 0); //设置标注为焦点模式

    //使图标在第一段路线移动
    mapObj.markerMoveAlong("route1", arr);
    mapObj.startMoveAlong('route1', true);
}
function driveLineDrawFoldline(num, count) {//画线路并控制左边列表.num为第几条线路,count全部线路数.
    try {
        var tr_id = "tr_" + num;
        for (var i = 0; i < count; i++) {
            var id = "tr_" + i;
            $(id).style.backgroundColor = '#ffffff';
            $(id).onmouseout = function() { this.style.backgroundColor = '#ffffff'; };
        }
        $(tr_id).style.backgroundColor = '#cccccc';
        $(tr_id).onmouseout = function() { this.style.backgroundColor = '#cccccc'; };

        var lineopt = new MLineOptions();
        lineopt.lineStyle.thickness = 6;
        lineopt.lineStyle.color = 0x33CC00;
        lineopt.lineStyle.alpha = 0.8;

        var arr = new Array();
        var poi_xy = driveS.route_segment[num].split(",");
        var l = poi_xy.length - 1;
        for (var e = 0; e < l; e = e + 2) {
            arr.push(new MLngLat(poi_xy[e], poi_xy[e + 1]));
        }
        var line = new MPolyline(arr, lineopt);
        line.id = "driveline";
        mapObj.addOverlay(line, true);
    } catch (e) { }
}

function RegMatch(inputStr) {
    var patrn = /^[A-Za-z0-9]|[._]+$/;
    if (!patrn.exec(inputStr)) return false
    return true
}
function RegMatch1(inputStr) {
    var patrn = /^[0-9]+$/;
    if (!patrn.exec(inputStr)) return false
    return true
}

function TipContents(type, address, tel) {
    var content = "";
    if (address == "" || address == "undefined" || address == null || address == " undefined" || typeof address == "undefined") {
    }
    else {
        content += "地址：" + address + "<br>";
    }
    if (tel == "" || tel == "undefined" || tel == null || tel == " undefined" || typeof address == "tel") {
    }
    else {
        content += "电话：" + tel + "<br>";
    }
    if (type == "" || type == "undefined" || type == null || type == " undefined" || typeof type == "undefined") {
    }
    else {
        content += "类型：" + type;
    }
    var str = "<div style=\"line-height:20px;width:260px;\">" + content + "</div>";
    return str;
}

function myZoom(lng, lat) {
    var level = mapObj.getZoomLevel();
    level = (level < 16) ? 16 : 17;

    mapObj.setZoomAndCenter(level, new MLngLat(lng, lat));
}

function Getdistance(le) {
    if (le <= 1000) {
        var s = le;
        return s + "米";
    } else {
        var s = Math.round(le / 1000);
        return "约" + s + "公里";
    }
}

// 以下为鼠标设置起终点的方法：
var points = new Array();
var start_pid = "", end_pid = "", around_pid = "", pass_pid = "";
var biaozhutype, biaozhu_place; //用于表示标注类型和使用此工具的位置
function setOc(i, tp) {
    closeAlertDiv();
    biaozhutype = i;
    biaozhu_place = tp;
    switch (i) {
        case 0:
            mapObj.removeOverlayById(around_pid);
            break;
        case 1:
            mapObj.removeOverlayById(start_pid);
            break;
        case 2:
            mapObj.removeOverlayById(end_pid);
            break;
        case 3:
            mapObj.removeOverlayById(pass_pid);
            break;
        default:
            break;
    }
    onMapClick(i);
}

//鼠标单击事件
function onMapClick(i) {
    mapObj.addEventListener(mapObj, ADD_OVERLAY, mouseSetPoint);
    setMakerOption(i);
    var ss = mapObj.setCurrentMouseTool(ADD_MARKER);
}

function mouseSetPoint(event) {
    var s = event;
    mapObj.setCurrentMouseTool(PAN_WHEELZOOM);
    var poi = mapObj.getOverlayById(event.overlayId);
    var x = poi.lnglat.lngX;
    var y = poi.lnglat.latY;

    switch (biaozhutype) {
        case 0:
            around_pid = event.overlayId;
            $("confirmSelValue").value = x + "," + y;
            break;
        case 1:
            start_pid = event.overlayId;
            if (biaozhu_place == 0) {

            }
            else {
                $("confirmSelValue1").value = x + "," + y;
            }
            break;
        case 2:
            end_pid = event.overlayId;
            if (biaozhu_place == 0) {

            }
            else {
                $("confirmSelValue2").value = x + "," + y;
            }
            break;
        case 3:
            pass_pid = event.overlayId;
            if (biaozhu_place == 0) {
                $("amendPass").value = "鼠标选择点";
                driveS.passby_xy += (driveS.passby_xy) ? "," : "";
                driveS.passby_xy += x + "," + y;
                driveS.passby_name += (driveS.passby_name) ? "," : "";
                driveS.passby_name += "鼠标选择点";

                loadPassByHtml();
                driveLine_search();
            }
            else {
                $("confirmSelValue").value = x + "," + y;
            }
            break;
        default: break;
    }

    mapObj.removeEventListener(mapObj, ADD_OVERLAY, mouseSetPoint);
}

var marker_start, marker_end, marker_center, marker_passby;
function locationMap(obj, tp, tp2) {
    closeAlertDiv();
    var xy = obj.value;
    if (xy) {
        var xyary = xy.split(';');
        var lnglat = new MLngLat(xyary[0], xyary[1]);

        var marker;
        var dataobj;
        if (tp == 0 || (tp == 2 && tp2 == 0)) {
            if (marker_start) mapObj.removeOverlayById(start_pid);
            biaozhutype = 1;

            if (driveS.start_data != null && driveS.start_data.poilist.length > obj.selectedIndex) {
                dataobj = driveS.start_data.poilist[obj.selectedIndex];
                setMakerOption2(1, "", "起点", "&nbsp;&nbsp;<b>" + dataobj.name + "</b>" + TipContents(dataobj.type, dataobj.address, dataobj.tel));

                marker = new MMarker(lnglat);
                marker.id = "marker_start_pid";
                start_pid = marker.id;
                mapObj.addOverlay(marker);
                marker_start = marker;
                $("confirmSelValue1").value = obj.selectIndex;
            }
            else {
                fis_alert(0, "页面已过期，请重新执行查询。");
            }
        }
        else if (tp == 1 || (tp == 2 && tp2 == 1)) {
            if (marker_end) mapObj.removeOverlayById(end_pid);
            biaozhutype = 2;
            if (driveS.end_data != null && driveS.end_data.poilist.length > obj.selectedIndex) {
                dataobj = driveS.end_data.poilist[obj.selectedIndex];
                setMakerOption2(2, "", "终点", "&nbsp;&nbsp;<b>" + dataobj.name + "</b>" + TipContents(dataobj.type, dataobj.address, dataobj.tel));

                marker = new MMarker(lnglat);
                marker.id = "marker_end_pid";
                end_pid = marker.id;
                mapObj.addOverlay(marker);
                marker_end = marker;
                $("confirmSelValue2").value = obj.selectIndex;
            }
            else {
                fis_alert(0, "页面已过期，请重新执行查询。");
            }
        }
        else if (tp == 3) {
            if (marker_passby) mapObj.removeOverlayById(pass_pid);
            biaozhutype = 3;
            if (driveS.pass_data != null && driveS.pass_data.poilist.length > obj.selectedIndex) {
                dataobj = driveS.pass_data.poilist[obj.selectedIndex];
                setMakerOption2(3, "", "经由点", "&nbsp;&nbsp;<b>" + dataobj.name + "</b>" + TipContents(dataobj.type, dataobj.address, dataobj.tel));

                marker = new MMarker(lnglat);
                marker.id = "marker_pass_pid";
                pass_pid = marker.id;
                mapObj.addOverlay(marker);
                marker_passby = marker;
                $("confirmSelValue").value = obj.selectIndex;
            }
            else {
                fis_alert(0, "页面已过期，请重新执行查询。");
            }
        }
        else {
            if (marker_center) mapObj.removeOverlayById(around_pid);
            biaozhutype = 0;

            if (aroundS.center_data != null && aroundS.center_data.poilist.length > obj.selectedIndex) {
                dataobj = aroundS.center_data.poilist[obj.selectedIndex];
                setMakerOption2(0, "", "中心点", "&nbsp;&nbsp;<b>" + dataobj.name + "</b>" + TipContents(dataobj.type, dataobj.address, dataobj.tel));

                marker = new MMarker(lnglat);
                marker.id = "marker_center_pid";
                around_pid = marker.id;
                mapObj.addOverlay(marker);
                marker_center = marker;
                $("confirmSelValue").value = obj.selectIndex;
            }
            else {
                fis_alert(0, "页面已过期，请重新执行查询。");
            }
        }

        if (dataobj) {
            if (mapObj.getZoomLevel() < 16) {
                mapObj.setZoomAndCenter(16, lnglat);
            } else {
                mapObj.panTo(lnglat);
            }

            window.setTimeout("mapObj.openOverlayTip(\'" + marker.id + "\')", 100);

        }
    }
}

function setMakerOption(type) {
    var typestr = "";
    switch (type) {
        case 0:
            typestr = "中心点"
            break;
        case 1:
            typestr = "起点"
            break;
        case 2:
            typestr = "终点"
            break;
        case 3:
            typestr = "经由点"
            break;
        default:
            break;
    }
    setMakerOption2(type, typestr, "<font color='#000000'><b>" + typestr + "</b>", "鼠标标注点");
}

function setMakerOption2(type, labelContent, tipTitle, tipContent) {
    if (type == 0) {
        setDefaultMarkerOption("http://code.mapabc.com/images/lan_1.png",
        labelContent, 0xff230b, 0xff230b, tipTitle, tipContent);
    }
    else if (type == 1) {
        setDefaultMarkerOption("http://code.mapabc.com/images/qd.png",
        labelContent, 0x89200, 0x89200, tipTitle, tipContent);
    }
    else if (type == 2) {
        setDefaultMarkerOption("http://code.mapabc.com/images/zd.png",
        labelContent, 0xff230b, 0xff230b, tipTitle, tipContent);
    }
    else if (type == 3) {
        setDefaultMarkerOption("http://code.mapabc.com/images/qd.png",
        labelContent, 0x89200, 0x89200, tipTitle, tipContent);
    }
    else {
        setDefaultMarkerOption("http://code.mapabc.com/images/lan_1.png",
        labelContent, 0xff230b, 0xff230b, tipTitle, tipContent);
    }
}

function setDefaultMarkerOption(imageUrl, labelContent, labelBgColor, tipColor, tipTitle, tipContent) {
    var markerOptions;
    markerOptions = new MMarkerOptions();
    markerOptions.isDraggable = false; //是否可以拖动
    var tipOption = new MTipOptions();
    tipOption.tipType = HTML_BUBBLE_TIP;
    var labelOptions = new MLabelOptions();
    var fontstyle = new MFontStyle();  //定义字体风格对象

    markerOptions.imageUrl = imageUrl;
    tipOption.title = tipTitle;
    labelOptions.backgroundColor = labelBgColor;
    tipOption.titleFillStyle.color = tipOption.borderStyle.color = tipColor;

    markerOptions.picAgent = false;
    tipOption.content = tipContent;
    markerOptions.tipOption = tipOption;

    fontstyle.size = 13;
    fontstyle.color = 0xffffff;
    labelOptions.fontStyle = fontstyle;
    labelOptions.borderColor = 0xffffff;
    labelOptions.content = labelContent;
    labelOptions.hasBorder = true;
    labelOptions.hasBackground = true;

    markerOptions.labelOption = labelOptions;
    markerOptions.labelPosition = new MPoint(0, 15);
    mapObj.setDefaultMarkerOption(markerOptions);
}


/*用于我的地图显示与隐藏，可能同时显示多条线路，拟采用不同颜色以区分*/
var colorAry = [0x926429, 0x602F78, 0x28A7, 0x6800, 0xA78700, 0xB41263];
var routLineArray = new Array();
function viewMyMap(mapid, ckbed) {
    if (ckbed) {
        ajaxargs = {
            method: 'get',
            onComplete: function(reg) {
                eval("var data=" + reg.responseText);
                driveS = new DriveSearch();
                driveS.start_name = data.StartName.split(';')[1];
                driveS.start_cityname = data.StartName.split(';')[0];
                driveS.end_name = data.EndName.split(';')[1];
                driveS.end_cityname = data.EndName.split(';')[0];
                driveS.start_x = data.StartXY.split(';')[0];
                driveS.start_y = data.StartXY.split(';')[1];
                driveS.end_x = data.EndXY.split(';')[0];
                driveS.end_y = data.EndXY.split(';')[1];

                driveS.mapId = data.Id;
                driveS.mapname = data.MapName;
                driveS.mapsummary = data.MapSummary;

                eval("data=" + data.AlongStr);
                drawRoutLines2(mapid, data.coors, mapid);
            }
        };
        new Ajax(
        "MyMap.aspx?type=getmap&mid=" + mapid, //想要访问的url
        ajaxargs //参数
    );
    }
    else {
        var removeidx = 0;
        for (var i = 0; i < routLineArray.length; i++) {
            if (routLineArray[i][0] == mapid) {
                removeidx = i;
                var rest = mapObj.removeOverlays(routLineArray[i][1]);
                break;
            }
        }
        routLineArray.splice(removeidx, 1);
    }
}

function drawRoutLines2(mapid, coors, colorindex) {
    var routLineObj = [mapid, null];

    if (colorindex >= colorAry.length) {
        colorindex = colorindex % colorAry.length;
    }

    var allover = new Array();
    var arr = new Array();
    var poi_xy_r = coors.split(",");
    var poi_xy_rl = poi_xy_r.length - 2
    for (var j = 0; j < poi_xy_rl; j = j + 2) {
        arr.push(new MLngLat(poi_xy_r[j], poi_xy_r[j + 1]));
    }
    var lineopt = new MLineOptions();
    lineopt.lineStyle.thickness = 6;
    lineopt.lineStyle.color = colorAry[colorindex];
    lineopt.lineStyle.alpha = 0.9;
    /* //todo 若需要显示TIP则修改此处代码，当前版本TIP遇竖线显示位置错误
    var tipOption = new MTipOptions();
    tipOption.title = "线路名称";
    tipOption.content = driveS.mapname;
    lineopt.tipOption = tipOption;
    */
    lineopt.canShowTip = false;

    var line = new MPolyline(arr, lineopt);
    allover.push(line);

    /*起点终点*/
    var lineStyle = new MLineStyle();
    lineStyle.thickness = 2;
    lineStyle.alpha = 1;
    var fontStyle = new MFontStyle();
    fontStyle.name = "Arial";
    fontStyle.size = 12;
    fontStyle.color = 0xffffff;
    fontStyle.bold = true;
    var fontStyle1 = new MFontStyle();
    fontStyle1.name = "Arial";
    fontStyle1.size = 13;
    fontStyle1.color = 0x000000;
    fontStyle1.bold = false;
    var fillStyle = new MFillStyle();
    fillStyle.color = 0xFFFFFF; //填充色
    fillStyle.alpha = 1;
    var fillStyle1 = new MFillStyle();
    fillStyle1.color = 0x005cb5; //填充色
    fillStyle1.alpha = 1;

    var startmarkerOption = new MMarkerOptions();
    startmarkerOption.imageUrl = "http://code.mapabc.com/images/qd.png";
    startmarkerOption.picAgent = false;
    startmarkerOption.isDraggable = false; //是否可以拖动
    tipOption = new MTipOptions();

    //tipOption.title = driveS.start_name;
    //var tipC = TipContents(driveS.start_type, driveS.start_address, driveS.start_tel)
    //tipOption.content = tipC; //tip内容
    tipOption.title = "起点";
    tipOption.content = driveS.start_name;

    tipOption.hasShadow = true;
    tipOption.borderStyle = lineStyle;
    tipOption.titleFontStyle = fontStyle;
    tipOption.contentFontStyle = fontStyle1;
    tipOption.fillStyle = fillStyle;
    tipOption.titleFillStyle = fillStyle1;
    startmarkerOption.tipOption = tipOption;
    var start = new MLngLat(driveS.start_x, driveS.start_y);
    var startmarker = new MMarker(start, startmarkerOption);
    allover.push(startmarker);

    var endmarkerOption = new MMarkerOptions();
    endmarkerOption.imageUrl = "http://code.mapabc.com/images/zd.png";
    endmarkerOption.picAgent = false;
    endmarkerOption.isDraggable = false; //是否可以拖动
    tipOption = new MTipOptions();

    //tipOption.title = driveS.end_name;
    //tipC = TipContents(driveS.end_type, driveS.end_address, driveS.end_tel)
    //tipOption.content = tipC; //tip内容
    tipOption.title = "终点";
    tipOption.content = driveS.end_name;

    tipOption.hasShadow = true;
    tipOption.borderStyle = lineStyle;
    tipOption.titleFontStyle = fontStyle;
    tipOption.contentFontStyle = fontStyle1;
    tipOption.fillStyle = fillStyle;
    tipOption.titleFillStyle = fillStyle1;
    endmarkerOption.tipOption = tipOption;
    var end = new MLngLat(driveS.end_x, driveS.end_y);
    var endmarker = new MMarker(end, endmarkerOption);
    allover.push(endmarker);

    routLineObj[1] = allover;
    routLineArray.push(routLineObj);

    /*Add to map*/
    mapObj.addOverlays(allover, true);
}

/*二次查询*/
function MoreLink(city, name, xy) {
    return '<div class="split"></div><a href="javascript:void(0);" onclick="myZoom(\'' + xy.replace(",", "','") + '\');hideMenuTool2();">定位放大</a>&nbsp;&nbsp;' +
    '<a href="javascript:void(0);" onclick="moreLinkForAround(\'' + city + '\',\'' + xy + '\',\'' + name + '\');hideMenuTool2();">在周边搜索</a>' +
    '&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="showToolMenu2(this,0,\'' + city + '\',\'' + name + '\',\'' + xy + '\');" >更多<img src="../images/more.gif" border="0" width="13" height="11" alt="更多操作" style="cursor:pointer;" title="更多操作" />';
}

function moreLinkForAround(city, xy, name) {
    var property = searchParam.init();
    property.u0 = "around";
    property.u1 = city;
    property.u3 = name;
    property.u4 = "none";
    property.u5 = xy.split(',')[0];
    property.u6 = xy.split(',')[1];
    var url = searchParam.toUrl(property);
    HashHandler.updateState(url);
}
function moreLinkForArriveStart(city, xy, name) {
    var property = searchParam.init();
    property.u0 = "rout";
    property.u1 = city;
    property.u2 = city;
    property.u3 = name;
    property.u5 = xy.split(',')[0];
    property.u6 = xy.split(',')[1];
    var url = searchParam.toUrl(property);
    HashHandler.updateState(url);
}
function moreLinkForArriveEnd(city, xy, name) {
    var property = searchParam.init();
    property.u0 = "rout";
    property.u1 = city;
    property.u4 = name;
    property.u7 = xy.split(',')[0];
    property.u8 = xy.split(',')[1];
    var url = searchParam.toUrl(property);
    HashHandler.updateState(url);
}
function moreLinkForBusStart(city, xy, name) {
    var property = searchParam.init();
    property.u0 = "transfer";
    property.u1 = city;
    property.u3 = name;
    property.u5 = xy.split(',')[0];
    property.u6 = xy.split(',')[1];
    var url = searchParam.toUrl(property);
    HashHandler.updateState(url);
}
function moreLinkForBusEnd(city, xy, name) {
    var property = searchParam.init();
    property.u0 = "transfer";
    property.u1 = city;
    property.u4 = name;
    property.u7 = xy.split(',')[0];
    property.u8 = xy.split(',')[1];
    var url = searchParam.toUrl(property);
    HashHandler.updateState(url);
}