var Mobile = /^((\(\d{3}\))|(\d{3}\-))?1\d{10}$/
var Phone = /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/
var runBus,_initPanelTimeOut,dragNew;

function getResultBodyId(objtype) {
    var objid = "";
    switch (objtype) {
        case "bus":
            objid = "result_body0"; break;
        case "busline":
            objid = "result_body1"; break;
        case "busstop":
            objid = "result_body2"; break;
        case "normal":
            objid = "result_body3"; break;
        case "around":
            objid = "result_body4"; break;
        case "road":
            objid = "result_body5"; break;
        case "arrive":
            objid = "result_body6"; break;
        case "poi":
            objid = "result_body7"; break;
        default:
            break;
    }
    return objid;
}
function getPageBodyId(objtype) {
    var pageid = "";
    switch (objtype) {
        case "bus":
            pageid = "pagedir0";break;
        case "busline":
            pageid = "pagedir1";break;
        case "busstop":
            pageid = "pagedir2";break;
        case "normal":
            pageid = "pagedir3";break;
        case "around":
            pageid = "pagedir4";break;
        case "road":
            pageid = "pagedir5";break;
        case "arrive":
            pageid = "pagedir6";break;
        case "poi":
            pageid = "pagedir7";break;
        default:
            break;
    }
    return pageid;
}

function loading(objtype, text) {
    var objid = getResultBodyId(objtype);
    var txthtml = (text == "") ? "" : "<span>" + text + "<span><br />";
    $(objid).innerHTML = "<center>" + txthtml + "<img src='images/ajax-loader.gif' width='28' height='28' /></center>";
}

function setResultText(objtype, text) {
    var objid = getResultBodyId(objtype);
    $(objid).innerHTML = text;
}

<!--===============================page view controll start===========================-->
var _initPanelTimeOut;

function ChgInit(idx) { //初始化每个页面右侧的显示设置，包括显示的是什么查询结果，是否已经查询，和哪一个结果显示区域被调用
    if (runBus) runBus.stop(); //如果有公交的模拟乘车，则停止
    window.clearTimeout(_initPanelTimeOut);
    map.clearOverlays();
    if (dragNew)//如果是从“在线标注”切换过来，则取消当前未确定标注
        GEvent.trigger(map, 'singlerightclick');
    switch (idx) {
        case 0:
            $("result_title").innerHTML = "公交换乘查询结果";
            $(getResultBodyId("bus")).innerHTML = "";
            loading("bus", "");
            initBusResult();
        //            _initPanelTimeOut = window.setTimeout(initBusResult, 200);
            break;
        case 1:
            $("result_title").innerHTML = "公交线路查询结果";
            $(getResultBodyId("busline")).innerHTML = "";
            loading("busline", "");
            initBuslineResult();
        //            _initPanelTimeOut = window.setTimeout(initBuslineResult, 200);
            break;
        case 2:
            $("result_title").innerHTML = "公交站点查询结果";
            $(getResultBodyId("busstop")).innerHTML = "";
            loading("busstop", "");
            initBusstopResult();
        //            _initPanelTimeOut = window.setTimeout(initBusstopResult, 200);
            break;
        case 3:
            $("result_title").innerHTML = "名址查询结果";
            $(getResultBodyId("normal")).innerHTML = "";
            loading("normal", "");
            initNormalResult();
        //            _initPanelTimeOut = window.setTimeout(initNormalResult, 200);
            break;
        case 4:
            $("result_title").innerHTML = "周边查询结果";
            $(getResultBodyId("around")).innerHTML = "";
            loading("around", "");
            initAroundResult();
        //            _initPanelTimeOut = window.setTimeout(initAroundResult, 200);
            break;
        case 5:
            $("result_title").innerHTML = "路况查询结果";
            $(getResultBodyId("road")).innerHTML = "";
            loading("road", "");
            initRoadResult();
        //            _initPanelTimeOut = window.setTimeout(initRoadResult, 200);
            break;
        case 6:
            $("result_title").innerHTML = "路径规划结果";
            $(getResultBodyId("arrive")).innerHTML = "";
            loading("arrive", "");
            initArriveResult();
        //            _initPanelTimeOut = window.setTimeout(initArriveResult, 200);
            break;
        case 7:
            $("result_title").innerHTML = "我的POI标点";
            break;
        default:
            break;
    }
    for (var i = 0; i < 8; i++) {
        $("result_body" + i).style.display = "none";
        $("pagedir" + i).style.display = "none";
    }
    $("result_body" + idx).style.display = "";
    $("pagedir" + idx).style.display = "";
}
<!--===============================page view controll end===========================-->
function initNormalResult() {
    if (!aryMapPosnNor || aryMapPosnNor.length == 0) {
        setResultText("normal", "尚未执行名址查询");
    } else {
        initNormalHTML(false);
        ZoomToMap(aryMapPosnNor, aryMapPropNor, false);
    }
}

function initAroundResult() {
    if (aryMapPosnArd && aryMapPosnArd.length > 0) {
        initNormalHTML(true);
        ZoomToMap(aryMapPosnArd, aryMapPropArd, false);
        drawCircle(aroundCenter.lat(), aroundCenter.lng(), aroundRange, "#000080", 1, 0.75, "#0000FF", 0.1);
    } else {
        setResultText("around", "尚未执行周边查询");
    }
}

function initRoadResult() {
    if (aryMapPosnRoad && aryMapPosnRoad.length > 0) {
        initRoadHTML();
    }
    else {
        setResultText("road", "尚未执行路况查询");
    }
}
function initBusResult() {
    if (aryMapPosnBus && aryMapPosnBus.length > 0) {
        initBusTransferHTML();
    }
    else {
        setResultText("bus", "尚未执行公交查询");
    }
}
function initBuslineResult() {
    if (aryMapPosnLine && aryMapPosnLine.length > 0) {
        initBusLineHTML();
    }
    else {
        setResultText("busline", "尚未执行公交线路查询");
    }
}
function initBusstopResult() {
    if (aryMapPosnBusStop && aryMapPosnBusStop.length > 0) {
        initBusStopHTML();
        ZoomToMap(aryMapPosnBusStop, aryMapPropBusStop, false);
    }
    else {
        setResultText("busstop", "尚未执行公交站点查询");
    }
}
function initArriveResult() {
    $("result_body4").innerHTML = "尚未执行路径规划";
}

function getWindowWidth() {
    var bodyoffsetWidth = 0;

    //获取窗口宽度
    if (window.innerWidth)
        bodyoffsetWidth = window.innerWidth;
    else if ((document.body) && (document.body.clientWidth))
        bodyoffsetWidth = document.body.clientWidth + 20;

    return bodyoffsetWidth;
}

function getWindowHeight() {
    var bodyoffsetHeight = 0;
    //获取窗口高度
    if (window.innerHeight)
        bodyoffsetHeight = window.innerHeight;
    else if (document.documentElement && document.documentElement.clientHeight)    //通过深入Document内部对body进行检测，获取窗口大小
    {
        bodyoffsetHeight = document.documentElement.clientHeight;
    }
    return bodyoffsetHeight;
}

function ZoomToMap(posns, props, bhascet) {
    var count = posns.length;

    zoomToFeatures(posns, props, bhascet);
    if (count == 1)
        zoomToFeature(posns[0], props[0]);
}

function GetSelectText(objsel) {
    for (var i = 0; i < objsel.length; i++) {
        if (objsel[i].selected) {
            return objsel[i].text;
        }
    }
}

function LocationToMap(objSel) {

    var selValue = objSel.value;
    var text = GetSelectText(objSel);

    text = (text.indexOf("[") != -1) ? text.substr(0, text.indexOf("[")) : text;
    if (objSel.id == "selAround") {
        $("txtCenter").value = text;
    }
    else if (objSel.id == "selStart") {
        $("txtStart").value = text;
    }
    else {
        $("txtEnd").value = text;
    }

    var ary = selValue.split(",");
    var latlng = new GLatLng(ary[1], ary[0]);
    map.setCenter(latlng);

    map.clearOverlays();
    var marker = new GMarker(latlng, { icon: G_DEFAULT_ICON, draggable: false, clickable: true, title: text });
    map.addOverlay(marker);
}

/*路况地图邮件发送*/
function sendMap() {
    if (!$("loginPanel")) {
        var bodyoffsetWidth = getWindowWidth();
        var bodyoffsetHeight = getWindowHeight();
        var div = document.createElement("div");
        div.id = "loginPanel";
        rsArr = [];
        rsArr.push('<div id="loginContainer" style="position:absolute; width:' + bodyoffsetWidth + 'px; height:' + bodyoffsetHeight + 'px; top:0px; left:0px; margin:auto;"></div>');
        rsArr.push('<div id=\"loginDiv\" style="top:' + (bodyoffsetHeight / 2 - 200) + 'px; left:' + (bodyoffsetWidth / 2 - 250) + 'px;" >');
        rsArr.push('<table id=\"loginTable\" cellpadding=1 cellspacing=1><tr height=15><td colspan="2"><img src="Map/lib/images/close.gif" style="width:15px;height:15px;cursor:pointer; padding-right:5px; float:right;" onclick="$(\'loginPanel\').style.display=\'none\';" alt="关闭"></td></tr><tr><td style="background:#FAF9F4;" valign="top">');
        rsArr.push('<iframe id="sendFrame" style="width:450px;height:150px;border:0px;overflow:hidden;"></iframe>');
        rsArr.push('</td></table></div>');
        div.innerHTML = rsArr.join("");
        rsArr = [];

        document.body.appendChild(div);
        document.body.insertBefore(div, document.body.lastChild);
        var center = map.getCenter();
        var level = map.getZoom();
        $("sendFrame").src = "SendItsMap.aspx?x=" + center.lng() + "&y=" + center.lat() + "&level=" + level + "&width=800&height=600";
    }
    else {
        $("loginPanel").style.display = '';

        var center = map.getCenter();
        var level = map.getZoom();
        $("sendFrame").src = "SendItsMap.aspx?x=" + center.lng() + "&y=" + center.lat() + "&level=" + level + "&width=800&height=600";
    }
}
function hideContainer() {
    if ($("loginPanel")) {
        $("loginPanel").style.display = "none";
    }
}

function FormatSelectOptions(selId, clickFun, returnFun, midresult, count, msg, bShowBtn) {
    var selhtmlary = new Array();
    selhtmlary.push("<div class=\"selTitle\">");
    selhtmlary.push(msg);
    selhtmlary.push("</div><select id=\"");
    selhtmlary.push(selId);
    selhtmlary.push("\" style=\"width:220px;\" size=\"6;\" onclick=\"LocationToMap(this)\">");
//    selhtmlary.push("\" style=\"width:220px;\" onclick=\"LocationToMap(this)\">");
    for (var i = 0; i < count; i++) {
        var optext;
        var address;

        var xyAry = esoso.decodeLine(unescape(midresult[i].selectSingleNode("坐标").text));

        var jd = xyAry[0][0];  //经度
        var wd = xyAry[0][1];  //纬度
        if (midresult[i].selectSingleNode("地址")) {
            address = midresult[i].selectSingleNode("地址").text;
        } else if (midresult[i].selectSingleNode("停靠线路")) {
            address = midresult[i].selectSingleNode("停靠线路").text;
            var re = new RegExp("\\(.*?\\)", "gim");
            address = address.replace(re, "");//去掉起止点说明
            re = new RegExp(",[0-9]+?、", "gim");
            address = address.replace(re, ",");//去掉线路ID
            re = new RegExp(",[0-9]+?$", "gim");
            address = address.replace(re, "");//去掉末尾的线路ID
            address = address.replace(")", "");
            address = (address.length > 20) ? address.substr(0, 20) : address;
        }
        optext = midresult[i].selectSingleNode("名称").text + ((!address) ? "" : ("[" + address + "]"));

        selhtmlary.push("<option");
        if (i == 0) {
            selhtmlary.push(" selected=\"selected\" ");
        }
        selhtmlary.push(" value=\"");
        selhtmlary.push(jd + "," + wd);
        selhtmlary.push("\">");
        selhtmlary.push(optext);
        selhtmlary.push("</option>");
    }
    selhtmlary.push("</select>");
    if (bShowBtn) {
        selhtmlary.push("<div><input type=\"button\" value=\"继续\" onclick=\"" + clickFun + "();\" /><input type=\"button\" value=\"返回\" onclick=\"" + returnFun + "();\" /></div>");
    }
    var html = selhtmlary.join("");
    selhtmlary = [];
    return html;
}

var srcMarker = null;
function createMarker(point, type, index, pid, fid, name, addr, tel, url, desc) {
    var letter = String.fromCharCode("A".charCodeAt(0) + index - 1);
    var icon = new EwMapIcon();
    if (index < 100) {
        icon.image = _mStaticPath + ((index == 0) ? "marker" : "marker" + index.toString().toFixed(2, "0", true)) + ".png";
    }
    else {
        icon.image = _mStaticPath + "marker" + String.fromCharCode(index - 35) + ".png";
    }
    var marker = new GMarker(point, { icon: icon, draggable: false, clickable: true, title: name });

    var html = "<div style='font-size:12px;font-family:宋体'><b>" + name + "</b><br />" + addr + "<br />" + tel + "<br />";
    if (null != url && "" != url) {
        url = url.toLowerCase();
        url = (0 != url.indexOf("http://")) ? "http://" + url : url;
        html += "<a href='" + url + "' target='_blank'>" + url.replace(/^http:\/\//i, "").replace(/\/$/, "") + "</a><br />";
    }
    if (null != desc && "" != desc) {
        html += "<i>" + desc + "</i>";
    }
    html += "</div>";

//    html += "<a class='searchLink' onclick='GotoBusTransferPanel(\"" + name + "\"," + point.lng() + "," + point.lat() + ")' href='Javascript:void(0);'>如何到达</a> ";
//    html += " <a class='searchLink' onclick='GotoArdSchPanel(\"" + name + "\"," + point.lng() + "," + point.lat() + ")' href='Javascript:void(0);'>周边查询</a>";
    html += "<a class='searchLink' href='javascript:GotoBusTransferPanel(\"" + name + "\"," + "\""+ (point.lng()* 1000000).toString(16) + "\",\"" + (point.lat()* 1000000).toString(16) + "\")'>如何到达</a> ";
    html += " <a class='searchLink' href='javascript:GotoArdSchPanel(\"" + name + "\"," + "\""+ (point.lng()* 1000000).toString(16) + "\",\"" + (point.lat()* 1000000).toString(16) + "\")'>周边查询</a>";
    var infoTabs = [new GInfoWindowTab("属性", html)];

    GEvent.addListener(marker, "click", function() {
        if (srcMarker != marker || map.getInfoWindow().isHidden()) {
            marker.openInfoWindowTabsHtml(infoTabs);
        }
        srcMarker = marker;
    });
    return marker;
}

//涉及到分页标注点，点的索引值问题，此方法是在每个功能自己的js中实现的
//function zoomToFeatures(posns, props, bArd) {
//    if ("object" == typeof (posns) && "object" == typeof (props)) {
//        var cl = esoso.getLevelAndCenter(posns);
//
//        map.clearOverlays();
//        map.setCenter(cl.center, cl.level);
//
//        for (var i = 0; i < posns.length; i++) {
//            var marker = createMarker(new GLatLng(posns[i][0], posns[i][1]), "point", (bArd) ? i : i + 1, props[i][0], props[i][1], props[i][2], props[i][3], props[i][4], props[i][5], props[i][6]);
//            map.addOverlay(marker);
//        }
//    }
//}

function zoomToFeature(posn, prop) {
    if ("object" == typeof (posn)) {
        var level = map.getZoom();

        level = (15 > level) ? 15 : level;
        var point = new GLatLng(posn[0], posn[1]);
        map.setCenter(point, level);

        point = map.fromLatLngToDivPixel(point);
        focusMaker(point, prop[2]);
    }
}

function focusMaker(point, name) {
    var div = map.getPane(G_MAP_MARKER_PANE);
    var center, title, x, y;
    for (var i = 0; i < div.childNodes.length; i++) {
        title = div.childNodes[i].attributes.getNamedItem("title").value;

        if (title == name) {
            x = parseInt(div.childNodes[i].style.left) + Math.round(parseInt(div.childNodes[i].style.width) / 2);
            y = parseInt(div.childNodes[i].style.top) + parseInt(div.childNodes[i].style.height);

            if (1 >= Math.round(point.x - x) && 1 >= Math.round(point.y - y)) {
                if (document.createEvent) {
                    var e = document.createEvent("MouseEvents");
                    e.initEvent("click", true, true);
                    div.childNodes[i].dispatchEvent(e);
                }
                else {
                    div.childNodes[i].fireEvent("onclick");
                }
                break;
            }
        }
    }
}

function getBusIcon() {
    var icon = new GIcon();
    icon.image = null; //"images/car.png";
    icon.iconAnchor = new GPoint(10, 10);
    icon.infoWindowAnchor = new GPoint(10, 0);
    icon.iconSize = new GSize(19, 19);
    icon.shadow = null;
    icon.shadowSize = new GSize(59, 19);
    return icon;
}

function zoomToFeatures2(posns, props, bArd) {
    if ("object" == typeof (posns) && "object" == typeof (props)) {
        var cl = esoso.getLevelAndCenter(posns);

        map.clearOverlays();
        map.setCenter(cl.center, cl.level);

        for (var i = 0; i < posns.length; i++) {
            //var marker = createMarker(new GLatLng(posns[i][0], posns[i][1]), "point", (bArd) ? i : i + 1, props[i][0], props[i][1], props[i][2], props[i][3], props[i][4], props[i][5], props[i][6]);
            var marker = new LabeledMarker(new GLatLng(posns[i][0], posns[i][1]), { icon: getBusIcon(), labelText: "<a href=\"javascript:void(0);\" target=\"_blank\">" + props[i][2] + "</a>", labelOffset: new GSize(-6, -10) });
            GEvent.addListener(marker, "click", function() {
                marker.openInfoWindow();
            });
            map.addOverlay(marker);
        }
    }
}

//显示地图中心十字的控件
function K_CrossControl(image, size) {
    this.size = size ? size : new GSize(20, 20);
    this.image = image ? image : "images/cross.gif";
    this.div = document.createElement("div");
    this.img = document.createElement("img");
    this.div.appendChild(this.img);
    this.div.style.position = "absolute";
    this.img.style.position = "absolute";
}
K_CrossControl.prototype = new GControl(true, false);
K_CrossControl.prototype.initialize = function(map) {
    if (this.img.src != this.image) {
        this.img.src = this.image;
    }
    this.img.width = this.size.width;
    this.img.height = this.size.height;
    this.resetSize();
    map.getContainer().appendChild(this.div);
    GEvent.bind(map, "resize", this, this.resetSize());
    return this.div;
}
K_CrossControl.prototype.resetSize = function() {
    this.img.style.left = (map.getSize().width / 2 - this.size.width / 2) + "px";
    this.img.style.top = (map.getSize().height / 2 - this.size.height / 2) + "px";
}
K_CrossControl.prototype.getDefaultPosition = function() {
    return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(0, 0));
}

/*路况自动刷新 begin*/
var g_tmGetRTI = null;
var g_iTimes = 0;
function doSetTimerGetRTI() {
    if (window.g_tmGetRTI) {
        window.clearInterval(g_tmGetRTI);
    }

    g_tmGetRTI = window.setInterval("getRTI(true);", 40000, "JavaScript");
}

function doOnMapUpdate(obj) {
    if (obj.checked) {
        getRTI(false);
        doSetTimerGetRTI();
    }
    else {
        if (window.g_tmGetRTI) {
            window.clearInterval(g_tmGetRTI);
        }
    }
}

function compareDate(dt1, dt2) {
    return Date.parse(dt1.replace(/-/g, "/")) - Date.parse(dt2.replace(/-/g, "/"));
}

function getRTI(reload) {
    var url = _mRootPath + "RtiLastPubDateTime.aspx";
    GDownloadUrl(url, function(data, responseCode) {
        //alert(data + "==" + responseCode);
        var nowyear = new Date().getFullYear();
        var dt1 = nowyear + "-" + data;

        var oldrtidt = $("hidRtiTime").value;
        if (oldrtidt && oldrtidt != "") {
            if (compareDate(dt1, oldrtidt)) {
                if (reload) {
                    reloadRtMap("");
                }
            }
        }
        else {
            if (reload) {
                reloadRtMap("");
            }
        }
        $("hidRtiTime").value = dt1;
    });
}

function reloadRtMap(fc) {
    if (undefined == fc) {
        fc = "";
    }

    var div = map.getContainer().firstChild.firstChild.childNodes[1].childNodes[1];
    var img;
    var src;
    for (var i = 0; i < div.childNodes.length; i++) {
        img = div.childNodes[i];
        src = img.src.replace(/&rnd=.+/i, "");
        //src = src.replace(/WRTMS\.aspx\?fc=fc;[0-9]+&/i, "WRTMS.aspx?&"); //去除旧的路况预测参数
        //src = src.replace(/WRTMS\.aspx\?fc=wk;[0-9];[0-9]+;[0-9]&/i, "WRTMS.aspx?&"); //去除旧的周期路况参数
        //if ("" != fc) {	//添加新的路况预测参数
        //    src = src.replace("WRTMS.aspx?&", "WRTMS.aspx?" + fc + "&");
        //}

        img.src = src + "&rnd=" + "".passwd(6, 2);
        img.onload = function() {    //载入完成时重新显示路况图片
            this.style.display = "";
        }
    }
}

/*路况自动刷新 end*/

/*切换到公交查询页面 start*/
function GotoBusTransferPanel(endstr, x, y) {
    endstr = endstr.replace(/站\[.+/, "站").replace(/\[[a-z|0-9]+\]/i, "");
    endstr = window.encodeURI(window.encodeURI(endstr));
    document.location.href = "bustraffic.html?endstr=" + endstr + '&lng=' + x + "&lat=" + y;
}
//页面取localtion(窗体url)公交查询参数
function getBusParam() {
    var endstr = getQueryStr("endstr");
    var lng = getQueryStr("lng");
    var lat = getQueryStr("lat");
    endstr = window.decodeURI(window.decodeURI(endstr));
    lat = parseInt(lat, 16) / 1000000;
    lng = parseInt(lng, 16) / 1000000;
    $("txtEnd").value = endstr;
    $("txtHideEnd").value = lng + "," + lat;
    $("txtStart").select();
    $("txtStart").focus();
}


/*切换到公交查询页面 end*/

/*切换到周边查询页面 start*/
function GotoArdSchPanel(centerstr, x, y) {
    centerstr = window.encodeURI(window.encodeURI(centerstr));
    document.location.href = "searchtraffic.html?centerstr=" + centerstr  + "&lng=" + x + '&lat=' + y;
}
//页面取localtion(窗体url)周边查询参数
function getAroundParam() {
    tagselect(1);
    var centerstr = getQueryStr("centerstr");
    var lng = getQueryStr("lng");
    var lat = getQueryStr("lat");
    centerstr = window.decodeURI(window.decodeURI(centerstr));
    lat = parseInt(lat, 16) / 1000000;
    lng = parseInt(lng, 16) / 1000000;
    $("txtCenter").value = centerstr;
    $("txtHideCenter").value = lng + "," + lat;
    $("aimKey").select();
    $("aimKey").focus();
}
/*切换到周边查询页面 end*/

/**
 * JS取得对应参数值
 * @param varname:参数名称
 */
function getQueryStr(varname) {
    var queryString = new String(self.location.search);
    queryString = queryString.substring(1, queryString.length);
    var queryArr = queryString.split("&");
    for (var i = 0; i < queryArr.length; i++)
    {
        var arrTmp = String(queryArr[i]).split("=");
        if (arrTmp.length > 1)
            if (arrTmp[0] == varname)
                return   arrTmp[1];
    }
    return   "";
}



