﻿var worldInfo = null,
	IM_URL = TE_URL + "/img/",
	routeS = {
        name: "start",
        x: null,
        y: null
    },
    routeE = {
        name: "end",
        x: null,
        y: null
    },
	routeDrawArr = [],
	route = null,
	searchPath = null,
	routePath = "STRoute",
	line = [];
	line2 = [];
var sizeOfRoute = 0;
var mkr = null;
var switchTo3DFirstTime = true;
var planObjArr = [];
var planType = null;
var passbyBusstop = [];
var passbyBusstopPart2 = [];
//處理 2D/3D 右鍵選單：設為起點、終點動作
//3D右鍵選單註冊並取得XY
function routeInit() {
    globe.attachEvent("OnRButtonDown", OnRButtonDown);
    createRouteGroup();
}
function createRouteGroup() {
    route = globe.creator.createGroup(routePath);
    globe.root.appendChild(route);
    searchPath = globe.root.getName() + "\\" + routePath + "\\";
}
function OnRButtonDown() {
		var a = new SGCoord2D;
		globe.window.getMouseInfo(a);
		worldInfo = globe.window.pixelToWorld(a.x, a.y);
}

function setRoutePointS(x_st, y_st, new_addr) {
	if(map_type=="2d")
	{
	   if(x_st && y_st){
		   routeS.x = x_st;
		   routeS.y = y_st;
	   }else{
		   routeS.x = rMenuX;
		   routeS.y = rMenuY;
	   }
	   map.removeOverlay(routeDrawArr[routeS.name]);
	   createRouteFlag("img/flag_g.gif", routeS.x, routeS.y, routeS.name, true);
	}
	else if(map_type=="3d")
	{		
		if(x_st && y_st){
		   routeS.x = x_st;
		   routeS.y = y_st;
	    }else{
		   routeS.x = worldInfo.coord.x.toFixed(6);
		   routeS.y = worldInfo.coord.y.toFixed(6);
	    }
		var b = globe.teCore.IInformationTree.FindItem(searchPath + routeS.name);
		b > 0 && globe.teCore.IInformationTree.DeleteItem(b);
		createRouteLabel(routeS.name, routeS.x, routeS.y, IM_URL + "s.gif");	
	}
	$("#txS").val(routeS.x + "," + routeS.y);
	switch_input_to_addr('S',new_addr );
	tx_to_addr('S');
}
function setRoutePointE(x_end, y_end, new_addr) {
    if(map_type=="2d")
   {		
		if(x_end && y_end){
		   routeE.x = x_end;
	       routeE.y = y_end;
	   }else{
		   routeE.x = rMenuX;
	       routeE.y = rMenuY;
	   }
		map.removeOverlay(routeDrawArr[routeE.name]);
		createRouteFlag("img/flag_r.gif", routeE.x, routeE.y, routeE.name, true);
   }
   else if(map_type=="3d")
   {
		if(x_end && y_end){
		   routeE.x = x_end;
	       routeE.y = y_end;
	   }else{
		   routeE.x = worldInfo.coord.x.toFixed(6);
		   routeE.y = worldInfo.coord.y.toFixed(6);
	   }		
		var b = globe.teCore.IInformationTree.FindItem(searchPath + routeE.name);
		b > 0 && globe.teCore.IInformationTree.DeleteItem(b);
		createRouteLabel(routeE.name, routeE.x, routeE.y, IM_URL + "g.gif");
   }
   $("#txE").val(routeE.x + "," + routeE.y);
   switch_input_to_addr('E',new_addr);
   tx_to_addr('E');
}

function setRoutePointS_2(x_st, y_st, new_addr) {
	if(map_type=="2d")
	{
	   if(x_st && y_st){
		   routeS.x = x_st;
		   routeS.y = y_st;
	   }else{
		   routeS.x = rMenuX;
		   routeS.y = rMenuY;
	   }
	   map.removeOverlay(routeDrawArr[routeS.name]);
	   createRouteFlag("img/flag_g.gif", routeS.x, routeS.y, routeS.name, true);
	}
	else if(map_type=="3d")
	{		
		if(x_st && y_st){
		   routeS.x = x_st;
		   routeS.y = y_st;
	    }else{
		   routeS.x = worldInfo.coord.x.toFixed(6);
		   routeS.y = worldInfo.coord.y.toFixed(6);
	    }
		var b = globe.teCore.IInformationTree.FindItem(searchPath + routeS.name);
		b > 0 && globe.teCore.IInformationTree.DeleteItem(b);
		createRouteLabel(routeS.name, routeS.x, routeS.y, IM_URL + "s.gif");	
	}
	$("#txS").val(routeS.x + "," + routeS.y);
//	switch_input_to_addr('S',new_addr );
//	tx_to_addr('S');
  $('#addrS').val(new_addr);
  $('#inputS').val(new_addr);
  $('#txS').val(x_st + ',' + y_st);
  $('#txS').attr('curfrom','addrS');
  func_open_maptools('route_content');
}
function setRoutePointE_2(x_end, y_end, new_addr) {
    if(map_type=="2d")
   {		
		if(x_end && y_end){
		   routeE.x = x_end;
	       routeE.y = y_end;
	   }else{
		   routeE.x = rMenuX;
	       routeE.y = rMenuY;
	   }
		map.removeOverlay(routeDrawArr[routeE.name]);
		createRouteFlag("img/flag_r.gif", routeE.x, routeE.y, routeE.name, true);
   }
   else if(map_type=="3d")
   {
		if(x_end && y_end){
		   routeE.x = x_end;
	       routeE.y = y_end;
	   }else{
		   routeE.x = worldInfo.coord.x.toFixed(6);
		   routeE.y = worldInfo.coord.y.toFixed(6);
	   }		
		var b = globe.teCore.IInformationTree.FindItem(searchPath + routeE.name);
		b > 0 && globe.teCore.IInformationTree.DeleteItem(b);
		createRouteLabel(routeE.name, routeE.x, routeE.y, IM_URL + "g.gif");
   }
   $("#txE").val(routeE.x + "," + routeE.y);
//   switch_input_to_addr('E',new_addr);
//   tx_to_addr('E');
  $('#addrE').val(new_addr);
  $('#inputE').val(new_addr);
  $('#txE').val(x_end + ',' + y_end);
  $('#txE').attr('curfrom','addrE');
  func_open_maptools('route_content');
}

function switch_input_to_addr(to_obj, new_addr){ //當操作到 設為起點或終點時，遮蔽輸入框，打開「變更」按鈕及轉變座標到地址文字
//	$("#input"+to_obj).hide();
	if(!new_addr) new_addr = '請稍候...';
	$("#addr"+to_obj).val(new_addr);
//	$(".addr"+to_obj).show();
	$("#tx"+to_obj).attr('curfrom','addr'+to_obj);
	func_open_maptools('route_content');
}

function tx_to_addr(to_obj){
	listen_travel_map = false; //重設「旅遊」中，加入行程時設定的指標
	var pos= $("#tx" + to_obj).val();
	$("#sidebar_route").block({message:'請稍候，正在計算座標地址...'});
	underSetting = true;
	//畫面移到「規劃」
	$.ajax({
		type:"POST",
		url:"api/geo_api.php?cmd=get_road", //get_road
		data:{pos:pos},
		datatype:"html",
		error:function(){
			alert("系統忙碌中，請稍候再試！\n(錯誤代碼：t2a)");
			$("#sidebar_route").unblock();
		},
		success:function(ret){
			var res = ret.split(":");
			msg = res[0];
			underSetting = false;
			if(msg.length > 1){
				$("#addr" + to_obj).val(msg);
				$("#input" + to_obj).val(msg);
				var npos = res[1]+','+res[2];
				$("#tx" + to_obj).val(npos);
			}else{
				$("#tx" + to_obj).val(''); 
				$("#addr" + to_obj).val('');
				$("#input" + to_obj).val('');
				if(map_type == '2d'){
					if(to_obj == 'S'){
						routeDrawArr[routeS.name] != null && map.removeOverlay(routeDrawArr[routeS.name]);	
					}else{
						routeDrawArr[routeE.name] != null && map.removeOverlay(routeDrawArr[routeE.name]);	
					}
				}else{ //3D 地圖清除(起終點)大頭圖釘的圖示
					if(to_obj == 'S'){
						//
					}else{
					    //
					}
				}
				alert('很抱歉，您所輸入的起點、終點資料無法規劃出適當的路徑，請變更起點、終點位置後再試一次，謝謝。');
			}
			$("#sidebar_route").unblock();
			return;
		}
	});
}

function switch_addr_to_input(to_obj){ //當按下「變更」按鈕時的狀態
	$("#tx"+to_obj).attr('curfrom','input'+to_obj);
	$("#addr"+to_obj).val(''); //清空 addr 的內容
	$(".addr"+to_obj).hide();
	$("#input"+to_obj).val('').show();
}

function init_routePlan(plantype){
  if ($('#addrS').val() == $('#inputS').val())
  {
    $('#txS').attr('curfrom', 'addrS');
  }
  else
  {
    $('#txS').attr('curfrom', 'inputS');
  }
  if ($('#addrE').val() == $('#inputE').val())
  {
    $('#txE').attr('curfrom', 'addrE');
  }
  else
  {
    $('#txE').attr('curfrom', 'inputE');
  }

	if($("#txS").attr('curfrom') == 'inputS'){ //若起點來自於輸入的文字:轉換座標並賦予文字 addrS
		if($("#inputS").val().length > 0 ){
			input_to_tx('S',plantype);
		}else{
			alert('請輸入起點地址');
		}
		return false;
	}else if($("#txE").attr('curfrom') == 'inputE'){ 
		if($("#inputE").val().length > 0 ){
			input_to_tx('E',plantype);
		}else{
			alert('請輸入終點地址');
		}
		return false;
	}else if($("#txS").val() == "" || $("#txE").val() == "") {
        alert('請先選擇起訖點');
        $("#divRoute").html("");
		return false;
	}
	return true;
}

function input_to_tx(to_obj,plantype){
	listen_travel_map = false; //重設「旅遊」中，加入行程時設定的指標
	var old_address= $("#input" + to_obj).val();
	$("#sidebar_route").block({message:'請稍候，正在計算地址座標...',fadeIn:0});
	underSetting = true;
	//畫面移到「規劃」
	$.ajax({
		type:"POST",
		url:"api/geo_api.php?cmd=get_nearest_location", //get_location + get_road傳回最近有路點座標
		data:{addr:old_address},
		datatype:"html",
		async:false,
		error:function(){
			alert("系統忙碌中，請稍候再試！\n(錯誤代碼：i2t)");
			$("#sidebar_route").unblock();
		},
		success:function(ret){
			if(ret.length > 0){
				$("#tx" + to_obj).val(ret).attr('curfrom','japi');
        $("#addr" + to_obj).val(old_address);
				var res = ret.split(",");
				if(to_obj == 'S'){
					routeS.x = res[0];
					routeS.y = res[1];
				}else{
					routeE.x = res[0];
					routeE.y = res[1];
				}
				underSetting = false;
				if(plantype == 'walkTravelPlan'){
					walkTravelPlan();
				}else if(plantype == 'busTravelPlan'){
					busTravelPlan();
				}else if(plantype == 'carTravelPlan'){
					carTravelPlan();
				}
			}
			else
		 {
        $("#tx" + to_obj).val('');
        alert(((to_obj == 'S') ? '起點' : '終點') + '資料無法解析，請重新輸入');
     }
			$("#sidebar_route").unblock();

		}
	});
}

//2D圖釘
function createRouteFlag(a, c, d, b, e) {
    c = typeof e == "undefined" ? map.fromDocPixelToLatLng(new CPoint(c, d)) : new CLatLng(d, c);
    a = new CIcon(null, a);
    a.iconSize = new CSize(17, 28);
    a.iconAnchor = new CPoint(0, 28);
    a.infoWindowAnchor = new CPoint(0, 0);
    a = new CMarker(c, {
        icon: a,
        title: b,
        clickable: false,
        draggable: false
    });
    routeDrawArr[b] = a;
    map.addOverlay(a);
    return c
}
//3D圖釘
function createRouteLabel(a, c, d, b) {
    c = new SGCoord3D(c, d, 100);
    d = new SGLabelStyle;
    a = typeof b == "undefined" || b == "" || b == null ? globe.creator.createTextLabel(c, a, d, a) : globe.creator.createLabel(c, a, b, d, a);
    route != null && route.appendChild(a);
    b = a.innerObj;
    b.BgColor = 16777215;
    b.FgColor = 0;
    b.FontStyle = 1;
    b.FontSize = 10;
    b.AlignTextHorizontal = 2;
    b.AlignTextVertical = 0;
    b.AlignLabelHorizontal = 2;
    b.AlignLabelVertical = 1;
    b.LineToGroundType = 1;
    b.LimitGrowth = true;
    b.ScaleFactor = 1;
    b.MinimumSize = 1;
    return a
}
function createBusLabel(txt, x1, y1, height, dir, imgUrl) {
    //txt 顯示文字
    //x1,經度
    //y1,緯度
    //height,高度
    //imgUrl,圖片路徑
    //Remove 可省略，true就會移掉目錄
    if (dir == null) {
        dir = "temp";
    }
    var full_dir = "\\" + dir;
    var itemID = globe.teCore.IInformationTree.FindItem(full_dir);
    //alert (itemID);
    if (itemID == 0) {
        globe.teCore.IInformationTree.CreateGroup(dir, 0);
        itemID = globe.teCore.IInformationTree.FindItem(full_dir);
    }
    //alert("create"+nId);
    //alert(nId); //皆相同 
    var ZoomToInfo = new Object();
    ZoomToInfo.Text = txt;
    ZoomToInfo.Scale = 1;
    ZoomToInfo.LimitGrowth = true;
    ZoomToInfo.AlignTextHorizontal = 2;
    ZoomToInfo.AlignTextVertical = 0;
    ZoomToInfo.AlignLabelHorizontal = 2;
    ZoomToInfo.AlignLabelVertical = 1;
    ZoomToInfo.LineToGroundType = 1;
    //ZoomToInfo.AlignLabelHorizontal=1;
    ZoomToInfo.ImageFileName = imgUrl;
    globe.teCore.IObjectManager.CreateLabel(ZoomToInfo, x1, y1, height, 0, itemID, txt);
    //globe.teCore.IPlane.FlyTo(x1,y1 - 0.0012,height,2*height,0,-30,"flyToLocation")
}

/////////////////////////////////////////////////Plan Result Start////////////////////////////////////////////////////
function walkTravelPlan(){
  $('#getCarTravelPlan').removeClass('on');
  $('#getBusTravelPlan').removeClass('on');
  $('#getWalkTravelPlan').removeClass('on');
	planType = "walk";
	clearRoutePlanKeepStartEndPoint(); 
	if(!init_routePlan('walkTravelPlan')) return;
	var s = $("#txS").val().split(",");
    var e = $("#txE").val().split(",");
	$("#sidebar_route").block({message:'請稍候，路徑規劃中...', css:{width:'50%'}});
	var service_url = TE_URL + "bus/getWalkTravelPlan.aspx?sx=" + s[0] + "&sy=" + s[1] + "&ex=" + e[0] + "&ey=" + e[1];
	$.ajax({
        url: service_url,
        type: 'GET',
        dataType: 'json',
        error: function (xhr, textStatus) {
            alert('系統忙碌中，請稍候再試！\n(錯誤代碼：walk)');
				    $("#sidebar_route").unblock();
        },
        success: function (data) {
            if (data == null) {
                alert('目前設定無法進行規劃，請重新設定起點或終點。');
            } else {
				var exitCode = false;
                if (data.status != "OK") {
                    alert("目前設定無法進行規劃，請重新設定起點或終點。");
					exitCode = true;
                }
				if(exitCode==true){$("#divRoute").html("");return;}
                var addr_start = $("#addrS").val();
				if(addr_start.length <= 0) addr_start = $("#inputS").val();
				var addr_end = $("#addrE").val();
				if(addr_end.length <= 0) addr_end = $("#inputE").val();
				var str = "<div align='right' style='background-color:white;'>";
				str += "<div>規劃方式:" + "人行" + "</div>";
                str += "<div>路程距離:" + data.routes[0].legs[0].distance.text + "</div>";
				str += "<div>預估時間:" + data.routes[0].legs[0].duration.text + "</div>";
				str += "<input type=button class=clear3DRoutePlanClass value=清除路徑 onclick=clearRoutePlan(); />";		
                str += "</div>";
				str += "<div>規畫起點:" + addr_start+ "</div><br/>";
				var htmlStr = "<table width='95%' border='0' cellpadding='0' cellspacing='0'>";
                sizeOfRoute = data.routes[0].legs[0].steps.length - 1;
				
				if(map_type=="2d")
				{				
					//check 起迄點flag存在否, 每次規劃都刪掉重加
					createRouteFlag("img/flag_g.gif", routeS.x, routeS.y, routeS.name, true);
					createRouteFlag("img/flag_r.gif", routeE.x, routeE.y, routeE.name, true);
					
					var points = new Array();
					var xPoints = new Array();
					var yPoints = new Array();
					var xMax=0,yMax=0,xMin=0,yMin=0;
					for (var i = 0; i < data.routes[0].legs[0].steps.length; i++) {
						
						 var html_inst = data.routes[0].legs[0].steps[i].html_instructions;
						 var sX = data.routes[0].legs[0].steps[i].start_location.lng;
						 var sY = data.routes[0].legs[0].steps[i].start_location.lat;
						 var eX = data.routes[0].legs[0].steps[i].end_location.lng;
						 var eY = data.routes[0].legs[0].steps[i].end_location.lat;
						 var distance = data.routes[0].legs[0].steps[i].distance.value;
						
						var p1 = new CLatLng(sY, sX); 	
						var p2 = new CLatLng(eY, eX);
						points.push(p1);
						points.push(p2);
						xPoints.push(sX);
						xPoints.push(eX);
						yPoints.push(sY);
						yPoints.push(eY);						 
						
						htmlStr += "<tr onmouseover=this.style.backgroundColor='#C6E2FF' onmouseout=this.style.backgroundColor='white' style='cursor:pointer;line-height:20px;' onclick='javascript:this.flag=true;setCenter(" + sX + "," + sY + ",12);' flag=false ><th align=left valign=top>"+(i+1)+". </th><td align=left style='color:#666;'><div>"+ html_inst +"</div><div align=right style='font-size:8pt;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#999;'>"+distance+"公尺</div></td></tr>";						 

					 }
					xPoints.sort();
					yPoints.sort();
					xMin = xPoints[0];
					yMin = yPoints[0];
					xMax = xPoints[xPoints.length-1];
					yMax = yPoints[yPoints.length-1];
					
					line = new CPolyline(points,"#0000FF",4,0.6,true,true);
					var bound = new CLatLngBounds(new CLatLng(yMin,xMin),new CLatLng(yMax,xMax));
					//取得比例尺
					map.setCenter(bound.getCenter(),map.getBoundsZoomLevel(bound));				
					map.addOverlay(line);
				}
				else if(map_type=="3d")
				{
					//check 起迄點圖釘存在否, 若否 則加上
					var b = globe.teCore.IInformationTree.FindItem(searchPath + routeS.name);
					if(b==0)createRouteLabel(routeS.name, routeS.x, routeS.y, IM_URL + "s.gif");	
					b = globe.teCore.IInformationTree.FindItem(searchPath + routeE.name);
					if(b==0)createRouteLabel(routeE.name, routeE.x, routeE.y, IM_URL + "g.gif");
	
					for (var i = 0; i < data.routes[0].legs[0].steps.length; i++) {
						 var html_inst = data.routes[0].legs[0].steps[i].html_instructions;
						 var sX = data.routes[0].legs[0].steps[i].start_location.lng;
						 var sY = data.routes[0].legs[0].steps[i].start_location.lat;
						 var eX = data.routes[0].legs[0].steps[i].end_location.lng;
						 var eY = data.routes[0].legs[0].steps[i].end_location.lat;
						 var distance = data.routes[0].legs[0].steps[i].distance.value;
						 var points = new Array();
						 var p1 = new SGCoord2D(sX, sY);
						 var p2 = new SGCoord2D(eX, eY);
						 points.push(p1);
						 points.push(p2);
						 htmlStr += "<tr onmouseover=this.style.backgroundColor='#C6E2FF' onmouseout=this.style.backgroundColor='white' style='cursor:pointer;line-height:20px;' onclick='javascript:this.flag=true;flyTo(" + sX + "," + sY + ",100);' flag=false ><th align=left valign=top>"+(i+1)+". </th><td align=left style='color:#666;'><div>"+ html_inst +"</div><div align=right style='font-size:8pt;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#999;'>"+distance+"公尺</div></td></tr>";						 

						 createRouteByPoints(points,1500,0,5,50,"walkrouteplan_a" + i);
						 createRouteByPoints(points,6500,500,50,50,"walkrouteplan_b" + i);
						 createRouteByPoints(points,30000,3500,200,70,"walkrouteplan_c" + i);
						 createRouteByPoints(points,50000,15000,500,70,"walkrouteplan_d" + i);
						 createRouteByPoints(points,5000000,35000,1500,90,"walkrouteplan_e" + i);
					}
					 flyToRoute(s[0], s[1], e[0], e[1]);
				}
                $("#divRoute").html(str  + htmlStr +"</table>"+"<br/><div>規畫終點:" + addr_end+ "</div>" + "<div style=\"width:280px;\>&nbsp;<br />路徑規劃結果僅供參考，實際路況可能因道路施工、交通狀況、天氣或其他活動，而與地圖結果有出入，請您依實際路況規劃您的路線並遵守路線上所有的指示或標誌。</div>");
				$("#sidebar_route").unblock();
        $('#getWalkTravelPlan').addClass('on');
            }
        }
    });
}

function busTravelPlan(){
  $('#getCarTravelPlan').removeClass('on');
  $('#getBusTravelPlan').removeClass('on');
  $('#getWalkTravelPlan').removeClass('on');
	planType = "bus";
	clearRoutePlanKeepStartEndPoint(); 
	if(!init_routePlan('busTravelPlan')) return;
	var s = $("#txS").val().split(",");
    var e = $("#txE").val().split(",");
	$("#sidebar_route").block({message:'請稍候，路徑規劃中...', css:{width:'50%'}});
	var service_url = TE_URL + "bus/getBusTravelPlan2.aspx?sx=" + s[0] + "&sy=" + s[1] + "&ex=" + e[0] + "&ey=" + e[1];
	$.ajax({
        url: service_url,
        type: 'GET',
        dataType: 'xml',
        error: function (xhr, textStatus) {
            alert('系統忙碌中，請稍候再試！\n(錯誤代碼：bus)');
	    			$("#sidebar_route").unblock();
        },
        success: function (data) {
			 if (data == null) {
                alert('目前設定無法進行規劃，請重新設定起點或終點。');
            }else{
				var str = "<div align='right' style='background-color:white;'>";
				var addr_start = $("#addrS").val();
				if(addr_start.length <= 0) addr_start = $("#inputS").val();
				var addr_end = $("#addrE").val();
				if(addr_end.length <= 0) addr_end = $("#inputE").val();
				str += "<div>規劃方式:" + "大眾運輸" + "</div>";
				str += "<input type=button class=clear3DRoutePlanClass value=清除規劃 onclick=clearRoutePlan(); />";		
				str += "</div>";
				str += "<div>規畫起點:" + addr_start+ "</div><br/>";
				var htmlStr = "<table width='95%' border='0' cellpadding='0' cellspacing='0'>";
				var planCounter = 0;
                var strNoPlan = "";
							
				$(data).find('Plan').each(function () {
					//alert($(this).text());
					if($(this).text()=="查無方案"){strNoPlan = "目前不提供該地區大眾運輸規劃結果，請重新選擇起訖點。";return 0;}
                    planCounter++;
					//<img src=img/bus.gif /> + C6 
					planObjArr[planCounter] = new Object();
					planObjArr[planCounter].C0 = $(this).find('C0').text();planObjArr[planCounter].C1 = $(this).find('C1').text();planObjArr[planCounter].C2 = $(this).find('C2').text();
					planObjArr[planCounter].C3 = $(this).find('C3').text();planObjArr[planCounter].C4 = $(this).find('C4').text();planObjArr[planCounter].C5 = $(this).find('C5').text();
					planObjArr[planCounter].C6 = $(this).find('C6').text();planObjArr[planCounter].C7 = $(this).find('C7').text();planObjArr[planCounter].C8 = $(this).find('C8').text();
					planObjArr[planCounter].C9 = $(this).find('C9').text();planObjArr[planCounter].C10 = $(this).find('C10').text();planObjArr[planCounter].C11 = $(this).find('C11').text();
					planObjArr[planCounter].C12 = $(this).find('C12').text();planObjArr[planCounter].C13 = $(this).find('C13').text();planObjArr[planCounter].C14 = $(this).find('C14').text();
					planObjArr[planCounter].C15 = $(this).find('C15').text();planObjArr[planCounter].C16 = $(this).find('C16').text();planObjArr[planCounter].C17 = $(this).find('C17').text();
					planObjArr[planCounter].C18 = $(this).find('C18').text();planObjArr[planCounter].C19 = $(this).find('C19').text();planObjArr[planCounter].C20 = $(this).find('C20').text();
					planObjArr[planCounter].C21 = $(this).find('C21').text();planObjArr[planCounter].C22 = $(this).find('C22').text();planObjArr[planCounter].C23 = $(this).find('C23').text();
					planObjArr[planCounter].C24 = $(this).find('C24').text();planObjArr[planCounter].C25 = $(this).find('C25').text();planObjArr[planCounter].C26 = $(this).find('C26').text();
					planObjArr[planCounter].C27 = $(this).find('C27').text();planObjArr[planCounter].C28 = $(this).find('C28').text();planObjArr[planCounter].C29 = $(this).find('C29').text();
					planObjArr[planCounter].C30 = $(this).find('C30').text();planObjArr[planCounter].C31 = $(this).find('C31').text();planObjArr[planCounter].C32 = $(this).find('C32').text();
					planObjArr[planCounter].C33 = $(this).find('C33').text();planObjArr[planCounter].C34 = $(this).find('C34').text();planObjArr[planCounter].C35 = $(this).find('C35').text();
					planObjArr[planCounter].C36 = $(this).find('C36').text();planObjArr[planCounter].C37 = $(this).find('C37').text();planObjArr[planCounter].C38 = $(this).find('C38').text();
					
					switch(planObjArr[planCounter].C0){
						case "1":
							htmlStr += "<tr onmouseover=this.style.backgroundColor='#C6E2FF' onmouseout=this.style.backgroundColor='white' style='cursor:pointer;line-height:30px;' onclick='javascript:this.flag=true;onPlanClick(" + 'planObjArr['+planCounter+']' + ");' flag=false ><th align=left valign=top>"+(planCounter)+". </th><td align=left style='color:#666;'><div>"+ "<img src=img/bus.gif />[" + planObjArr[planCounter].C6 + "] </div></td></tr>";						 
							break;
						case "2":
							htmlStr += "<tr onmouseover=this.style.backgroundColor='#C6E2FF' onmouseout=this.style.backgroundColor='white' style='cursor:pointer;line-height:30px;' onclick='javascript:this.flag=true;onPlanClick(" + 'planObjArr['+planCounter+']' + ");' flag=false ><th align=left valign=top>"+(planCounter)+". </th><td align=left style='color:#666;'><div>"+ "<img src=img/bus.gif />[" + planObjArr[planCounter].C6 + "]<img src=img/bus.gif />[" + planObjArr[planCounter].C26 + "] </div></td></tr>";						 
							break;
						case "3":
							//公車轉捷運
							htmlStr += "<tr onmouseover=this.style.backgroundColor='#C6E2FF' onmouseout=this.style.backgroundColor='white' style='cursor:pointer;line-height:30px;' onclick='javascript:this.flag=true;onPlanClick(" + 'planObjArr['+planCounter+']' + ");' flag=false ><th align=left valign=top>"+(planCounter)+". </th><td align=left style='color:#666;'><div>"+ "<img src=img/bus.gif />[" + planObjArr[planCounter].C6 + "]<img src=img/metro.gif />[" + planObjArr[planCounter].C13 + "]  </div></td></tr>";						 
							break;
						case "5":
							//捷運直達
							htmlStr += "<tr onmouseover=this.style.backgroundColor='#C6E2FF' onmouseout=this.style.backgroundColor='white' style='cursor:pointer;line-height:30px;' onclick='javascript:this.flag=true;onPlanClick(" + 'planObjArr['+planCounter+']' + ");' flag=false ><th align=left valign=top>"+(planCounter)+". </th><td align=left style='color:#666;'><div>"+ "<img src=img/metro.gif />[" + planObjArr[planCounter].C22 + "] 捷運</div></td></tr>";						 
							break;	
						case "6":
							htmlStr += "<tr onmouseover=this.style.backgroundColor='#C6E2FF' onmouseout=this.style.backgroundColor='white' style='cursor:pointer;line-height:30px;' onclick='javascript:this.flag=true;onPlanClick(" + 'planObjArr['+planCounter+']' + ");' flag=false ><th align=left valign=top>"+(planCounter)+". </th><td align=left style='color:#666;'><div>"+ "<img src=img/metro.gif />[" + planObjArr[planCounter].C13 + "] <img src=img/bus.gif />[" + planObjArr[planCounter].C26 + "]</div></td></tr>";						 

							break;
					}
				});
				if(map_type=="2d")
				{			
					createRouteFlag("img/flag_g.gif", routeS.x, routeS.y, routeS.name, true);
					createRouteFlag("img/flag_r.gif", routeE.x, routeE.y, routeE.name, true);
					var xMax=0,yMax=0,xMin=0,yMin=0;
					var xPoints = new Array();
					var yPoints = new Array();
					xPoints.push(routeS.x);
					xPoints.push(routeE.x);
					yPoints.push(routeS.y);
					yPoints.push(routeE.y);
					xPoints.sort();
					yPoints.sort();
					xMin = xPoints[0];
					yMin = yPoints[0];
					xMax = xPoints[xPoints.length-1];
					yMax = yPoints[yPoints.length-1];
					

					var bound = new CLatLngBounds(new CLatLng(yMin,xMin),new CLatLng(yMax,xMax));
					//取得比例尺
					map.setCenter(bound.getCenter(),map.getBoundsZoomLevel(bound));				
					
				}else if(map_type=="3d")
				{
					flyToRoute(s[0], s[1], e[0], e[1]);
				}
				$("#divRoute").html(str  + htmlStr +"</table>"+"<br/><div>規畫終點:" + addr_end+ "</div>"+ strNoPlan + "<div style=\"width:280px;\>&nbsp;<br />路徑規劃結果僅供參考，實際路況可能因道路施工、交通狀況、天氣或其他活動，而與地圖結果有出入，請您依實際路況規劃您的路線並遵守路線上所有的指示或標誌。</div>");
				$("#divRoute").append("<div id='busPlanDetail'></div>");
				if(strNoPlan!="")$("#divRoute").html(strNoPlan);
				$("#sidebar_route").unblock();
        $('#getBusTravelPlan').addClass('on');
			
			}
				
		}
	});
}


function carTravelPlan(){
  $('#getCarTravelPlan').removeClass('on');
  $('#getBusTravelPlan').removeClass('on');
  $('#getWalkTravelPlan').removeClass('on');
	planType = "car";
	clearRoutePlanKeepStartEndPoint(); 
	if(!init_routePlan('carTravelPlan')) return;	
	var s = $("#txS").val().split(",");
    var e = $("#txE").val().split(",");
	$("#sidebar_route").block({message:'請稍候，路徑規劃中...', css:{width:'50%'}});
	var service_url = TE_URL + "bus/getCarTravelPlan.aspx?sx=" + s[0] + "&sy=" + s[1] + "&ex=" + e[0] + "&ey=" + e[1];
	$.ajax({
        url: service_url,
        type: 'GET',
        dataType: 'xml',
        error: function (xhr, textStatus) {
            alert('系統忙碌中，請稍候再試！\n(錯誤代碼：car)');
		    		$("#sidebar_route").unblock();
        },
        success: function (data) {
			if (data == null) {
                alert('目前設定無法進行規劃，請重新設定起點或終點。');
            } else {
				var time;
                var distance;
				var exitCode = false;
                $(data).find('Information').each(function () {
                    var code = $(this).find('Code').text();
                    if (code != "1") {
                        alert($(this).find('Message').text());
                        exitCode = true;
						return ;
                    }
                });
				if(exitCode==true){return;}
			
				var addr_start = $("#addrS").val();
				if(addr_start.length <= 0) addr_start = $("#inputS").val();
				var addr_end = $("#addrE").val();
				if(addr_end.length <= 0) addr_end = $("#inputE").val();
				var str = "<div align='right' style='background-color:white'>";
                $(data).find('Journey > Summary').each(function () {
                    distance = $(this).find('Distance').text();
                    time = $(this).find('Time').text();
					str += "<div>規劃方式:" + "車行" + "</div>";
                    str += "<div>路程距離:" + (Math.round(distance/100))/10 + "公里</div>";
					str += "<div>預估時間:" + time + "</div>";
					str += "<input type=button class=clear3DRoutePlanClass value=清除路徑 onclick=clearRoutePlan(); />";		
					str += "</div>";
					str += "<div>規畫起點:" + addr_start+ "</div><br/>";
                });
							
				var htmlStr = "<table width='90%' border='0' cellpadding='0' cellspacing='0'>";
				
				var points = new Array();
				var xPoints = new Array();
				var yPoints = new Array();		
				
				if(map_type=="2d")
				{				
					//check 起迄點flag存在否, 每次規劃都刪掉重加
					createRouteFlag("img/flag_g.gif", routeS.x, routeS.y, routeS.name, true);
					createRouteFlag("img/flag_r.gif", routeE.x, routeE.y, routeE.name, true);
					
					var xMax=0,yMax=0,xMin=0,yMin=0;
					var i = 0;
					$(data).find('Journey > Route > RoadList > Road').each(function () {
						
						xPoints.push($(this).find('SysX').text());
						yPoints.push($(this).find('SysY').text());						
						htmlStr += "<tr onmouseover=this.style.backgroundColor='#C6E2FF' onmouseout=this.style.backgroundColor='white' style='cursor:pointer;line-height:20px;' onclick='javascript:this.flag=true;setCenter(" + $(this).find('SysX').text() + "," + $(this).find('SysY').text() + ",12);' flag=false ><th align=left valign=top>"+(i+1)+". </th><td align=left style='color:#666;'><div>"+ $(this).find('SysName').text() + $(this).find('Direction').text() +"</div><div align=right style='font-size:8pt;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#999;'>"+ $(this).find('Distance').text()+"公尺</div></td></tr>";						 
						i++;
					});
					
					$(data).find('PointList > Points').each(function () {
						var pts = $(this).text().split(";");
						for(var i=0;i<pts.length;i++){
							var xy = pts[i].split(",");
							var p = new CLatLng(xy[1], xy[0]); 	
							points.push(p);
						}
						
					});
					xPoints.sort();
					yPoints.sort();
					xMin = xPoints[0];
					yMin = yPoints[0];
					xMax = xPoints[xPoints.length-1];
					yMax = yPoints[yPoints.length-1];
					
					line = new CPolyline(points,"#0000FF",4,0.6,true,true);
					var bound = new CLatLngBounds(new CLatLng(yMin,xMin),new CLatLng(yMax,xMax));
					//取得比例尺
					map.setCenter(bound.getCenter(),map.getBoundsZoomLevel(bound));				
					map.addOverlay(line);
					
				}
				else if(map_type=="3d")
				{
					//check 起迄點圖釘存在否, 若否 則加上
					var b = globe.teCore.IInformationTree.FindItem(searchPath + routeS.name);
					if(b==0)createRouteLabel(routeS.name, routeS.x, routeS.y, IM_URL + "s.gif");	
					b = globe.teCore.IInformationTree.FindItem(searchPath + routeE.name);
					if(b==0)createRouteLabel(routeE.name, routeE.x, routeE.y, IM_URL + "g.gif");
					
			        var pre_x;
					var pre_y;
					var pre_dir;
					
					var i = 0;
					$(data).find('Journey > Route > RoadList > Road').each(function () {
						//htmlStr += "<tr onmouseover=this.style.backgroundColor='#C6E2FF' onmouseout=this.style.backgroundColor='white' style='cursor:pointer;line-height:25px;' onclick='javascript:this.flag=true;flyTo(" + $(this).find('SysX').text() + "," + $(this).find('SysY').text() + ",100);' flag=false ><th align=left valign=top>"+(i+1)+". </th><td style='color:#666;' align=left>"+ $(this).find('SysName').text() + $(this).find('Direction').text() +"</td><td></td></tr>";						 
						htmlStr += "<tr onmouseover=this.style.backgroundColor='#C6E2FF' onmouseout=this.style.backgroundColor='white' style='cursor:pointer;line-height:20px;' onclick='javascript:this.flag=true;flyTo(" + $(this).find('SysX').text() + "," + $(this).find('SysY').text() + ",100);' flag=false ><th align=left valign=top>"+(i+1)+". </th><td align=left style='color:#666;'><div>"+ $(this).find('SysName').text() + $(this).find('Direction').text() +"</div><div align=right style='font-size:8pt;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#999;'>"+ $(this).find('Distance').text()+"公尺</div></td></tr>";						 
						i++;
					});
					
					$(data).find('PointList > Points').each(function () {
						var pts = $(this).text().split(";");
						for(var i=0;i<pts.length;i++){
							var xy = pts[i].split(",");
							var p = new SGCoord2D(xy[0], xy[1]); 	
							points.push(p);
						}	
					});
							
					createRouteByPoints(points,1500,0,5,50,"routeplan");
					createRouteByPoints(points,6500,500,50,50,"routeplan2");
					createRouteByPoints(points,30000,3500,200,70,"routeplan3");
					createRouteByPoints(points,50000,15000,500,70,"routeplan4");
					createRouteByPoints(points,5000000,35000,1500,90,"routeplan5"); 
					flyToRoute(s[0], s[1], e[0], e[1]);
				
				}
				$("#divRoute").html(str  + htmlStr +"</table>"+"<br/><div>規畫終點:" +addr_end+ "</div>" + "<div style=\"width:280px;\">&nbsp;<br />路徑規劃結果僅供參考，實際路況可能因道路施工、交通狀況、天氣或其他活動，而與地圖結果有出入，請您依實際路況規劃您的路線並遵守路線上所有的指示或標誌。</div>");
				$("#sidebar_route").unblock();
				$('#getCarTravelPlan').addClass('on');
            }
        }
    });
}
function createRouteByPoints(points, maxVisibilityDistance, minVisibilityDistance, lineWidth, lineOpacity, routePlanName){	
	var poly = globe.creator.createPolyline(points, sgGreen, routePlanName);
	poly.innerObj.LineWidth = lineWidth;
	poly.innerObj.FgAlpha = lineOpacity;
	poly.innerObj.MinVisibilityDistance = minVisibilityDistance;
	poly.innerObj.MaxVisibilityDistance = maxVisibilityDistance;
	globe.root.appendChild(poly);
}

function flyTo(x1, y1, h1) {
	 if(planType!="bus")routeMenu();
    globe.teCore.IPlane.FlyTo(x1, y1 - 0.0012, h1, 2 * h1, 0, -30, "FlyToLocation");
}
function flyToRoute(x0, y0, x1, y1) {
    var A = new SGCoord2D(x0, y0);
    var B = new SGCoord2D(x1, y1);
    globe.navigate.flyTo([A, B]);
}
function onPlanClick(obj){
	//clear previous plan detail info.
	$("#busPlanDetail").html("");
	clearRouteDraw();
	map.removeOverlay(routeDrawArr["busstop1"]);
	map.removeOverlay(routeDrawArr["busstop2"]);
	
	if(map_type=="2d")
	{
		var xMax=0,yMax=0,xMin=0,yMin=0;
		var xPoints = new Array();
		var yPoints = new Array();
		xPoints.push(routeS.x);
		xPoints.push(routeE.x);
		yPoints.push(routeS.y);
		yPoints.push(routeE.y);
		xPoints.sort();
		yPoints.sort();
		xMin = xPoints[0];
		yMin = yPoints[0];
		xMax = xPoints[xPoints.length-1];
		yMax = yPoints[yPoints.length-1];
		var bound = new CLatLngBounds(new CLatLng(yMin,xMin),new CLatLng(yMax,xMax));
		//取得比例尺
		map.setCenter(bound.getCenter(),map.getBoundsZoomLevel(bound));	
	}
	
	var strType = "";
	var strStart = "";
	var strEnd = "";	
	var strLineSeg1 = "";
	var strLineSeg2 = "";
	var strLineSeg3 = ""; //轉乘用
	var strLineSeg4 = "";
	routeMenu();
	var s = $("#txS").val().split(",");
    var e = $("#txE").val().split(",");
	
	//alert(obj.C6);
	switch(obj.C0){
		case "1":
			strType = "<hr/><strong>方案：[公車直達]</strong>";	
			//ajax to load passby busstop and create label
			var service_url = TE_URL + "bus/getBusTravelSequence_json.aspx?pathname=" + encodeURI(obj.C6) + "&startstop=" + obj.C35 + "&endstop=" + obj.C36;
			//console.log(service_url);
			$.ajax({
					url: service_url,
					type: 'GET',
					dataType: 'json',
					error: function (xhr, textStatus) {
						alert('系統忙碌中，請稍候再試！\n(錯誤代碼：plan1)');
//						alert('Ajax request error');
					},
					success: function (data) {
						var points = new Array();
						if(data==null || data==''||data.dataset==null||data.dataset==''){	
							return;
						}
						for (i = 0; i < data.dataset.length; i++) {
							//createBusLabel(data.dataset[i].NameCht, data.dataset[i].Longitude, data.dataset[i].Latitude, 0, "busstoplabel", TE_URL+'img/busstop.png');
							var latlng = new CLatLng(data.dataset[i].Latitude, data.dataset[i].Longitude);
							points.push(latlng);
							//passby busstop
							// var myIcon = new CIcon();
							// myIcon.image = "img/yellow_bus.png";
							// myIcon.iconSize = new CSize(32, 32);
							// myIcon.iconAnchor = new CPoint(16, 32);
							// var ll = new CLatLng(data.dataset[i].Latitude, data.dataset[i].Longitude);
							// passbyBusstop[i] = new CMarker(ll, {icon: myIcon, title: data.dataset[i].NameCht, clickable: true, draggable: false});
							// map.addOverlay(passbyBusstop[i]);
							//if(map_type=="3d")createBusLabel(data.dataset[i].NameCht, data.dataset[i].Longitude, data.dataset[i].Latitude, 0, "busstoplabel", TE_URL+'img/yellow_bus.png');

						}
						var CDir = new CDirections();
						CDir.loadFromWayPoints(points);
						CEvent.addListener(CDir, "load", function () {
							if (this.getStatus().code == 0) {
								//$("#busPlanDetail").append(this.getStatus().message);
							}							
							//var str = "<div align='center' style='background-color:#FFF1A8;'>";
							//str += "<div>路程距離:" + this.getDistance().html + "</div>";
							//str += "<div>預估時間:" + this.getDuration().html + "</div>";
							//str += "</div>";					
							if(map_type=="2d")
							{
								map.removeOverlay(line); // clear previous line before draw a new line
								line = this.getPolyline("#0000FF",4,0.6);
								map.addOverlay(line);	
							}
							else if(map_type=="3d")
							{
								var points = new Array();
								var v = this.getPolyline().getVertexCount();				
								for (i = 0; i < v; i++) {
									var x = this.getPolyline().getVertex(i).lng();
									var y = this.getPolyline().getVertex(i).lat();
									var p = new SGCoord2D(x, y);
									points.push(p);
								}
								createRouteByPoints(points,1500,0,5,50,"routeplan");
								createRouteByPoints(points,6500,500,50,50,"routeplan2");
								createRouteByPoints(points,30000,3500,200,70,"routeplan3");
								createRouteByPoints(points,50000,15000,500,70,"routeplan4");
								createRouteByPoints(points,5000000,35000,1500,90,"routeplan5"); 
							}
						});
					}
			});
			if(map_type=="2d")
			{
				//check 起迄點flag存在否, 每次規劃都刪掉重加
				createRouteFlag("img/flag_g.gif", routeS.x, routeS.y, routeS.name, true);
				createRouteFlag("img/flag_r.gif", routeE.x, routeE.y, routeE.name, true);

				strStart = "由<a href=javascript:setCenter("+routeS.x+","+routeS.y+",12)>起點</a>步行["+obj.C1+"]公尺</a>";				
				strLineSeg1 = "公車站牌<a href=javascript:setCenter("+obj.C4+","+obj.C5+",12)>["+obj.C2+"]</a>搭乘公車["+obj.C6+"]";
				strLineSeg2 = "經過["+obj.C7+"]站在公車站牌 <a href=javascript:setCenter("+obj.C30+","+obj.C31+",12)>["+obj.C28+"]</a> 下車";
				// 2d flag
				var myIcon = new CIcon();
				myIcon.image = "img/yellow_bus.png";
				myIcon.iconSize = new CSize(32, 32);
				myIcon.iconAnchor = new CPoint(16, 16);
				myIcon.infoWindowAnchor = new CPoint(0, 0);
	
				routeDrawArr["busstop1"] = new CMarker(new CLatLng(obj.C5, obj.C4),{icon: myIcon, title: obj.C2, clickable: true, draggable: false});
				routeDrawArr["busstop2"] = new CMarker(new CLatLng(obj.C31, obj.C30),{icon: myIcon, title: obj.C28, clickable: true, draggable: false});
				infoBusstop1 = "站牌["+obj.C2 +"]<br/>"+ "搭乘" +"["+obj.C6+"]";
				infoBusstop2 = "站牌["+obj.C28+"]";
				CEvent.addListener(routeDrawArr["busstop1"], "click", function() {this.openInfoWindow(infoBusstop1); });
				CEvent.addListener(routeDrawArr["busstop2"], "click", function() {this.openInfoWindow(infoBusstop2); });
				map.openInfoWindow(new CLatLng(obj.C5, obj.C4), infoBusstop1);
				map.addOverlay(routeDrawArr["busstop1"]);
				map.addOverlay(routeDrawArr["busstop2"]);
				strEnd = "步行["+obj.C32+"]公尺到達<a href=javascript:setCenter("+routeE.x+","+routeE.y+",12)>迄點</a>";

			}
			else if(map_type=="3d")
			{
				//check 起迄點圖釘存在否, 若否 則加上
				var b = globe.teCore.IInformationTree.FindItem(searchPath + routeS.name);
				if(b==0)createRouteLabel(routeS.name, routeS.x, routeS.y, IM_URL + "s.gif");	
				b = globe.teCore.IInformationTree.FindItem(searchPath + routeE.name);
				if(b==0)createRouteLabel(routeE.name, routeE.x, routeE.y, IM_URL + "g.gif");
					
				strStart = "由<a href=javascript:flyTo("+routeS.x+","+ routeS.y+",100)>起點</a>步行["+obj.C1+"]公尺</a>";
				strLineSeg1 = "公車站牌<a href=javascript:flyTo("+obj.C4+","+obj.C5+",100)>["+obj.C2+"]</a> 搭乘公車["+obj.C6+"]";
				strLineSeg2 = "經過["+obj.C7+"]站在公車站牌 <a href=javascript:flyTo("+obj.C30+","+obj.C31+",100)>["+obj.C28+"]</a> 下車";
				
				createBusLabel(obj.C2, obj.C4, obj.C5, 0, "busstoplabel", TE_URL+'img/yellow_bus.png');
				createBusLabel(obj.C28, obj.C30, obj.C31, 0, "busstoplabel", TE_URL+'img/yellow_bus.png');
				strEnd = "步行["+obj.C32+"]公尺到達<a href=javascript:flyTo("+routeE.x+","+routeE.y+",100)>迄點</a>";
				flyToRoute(s[0], s[1], e[0], e[1]);
			}

			break;
		case "2":
			strType = "<hr/><strong>方案：[公車轉公車]</strong>";
			//站序....API文件中未提供
			var service_url = TE_URL + "bus/getBusTravelSequence_json.aspx?pathname=" + encodeURI(obj.C6) + "&startstop=" + obj.C35 + "&endstop=" + obj.C36;
			$.ajax({
					url: service_url,
					type: 'GET',
					dataType: 'json',
					error: function (xhr, textStatus) {
						alert('系統忙碌中，請稍候再試！\n(錯誤代碼：plan2)');
					},
					success: function (data) {
						var points = new Array();
						if(data==null || data==''||data.dataset==null||data.dataset==''){	
							return;
						}
						for (i = 0; i < data.dataset.length; i++) {
							var latlng = new CLatLng(data.dataset[i].Latitude, data.dataset[i].Longitude);
							points.push(latlng);
						}
						var CDir = new CDirections();
						CDir.loadFromWayPoints(points);
						CEvent.addListener(CDir, "load", function () {
							if (this.getStatus().code == 0) {
								//$("#busPlanDetail").append(this.getStatus().message);
							}							
							
							if(map_type=="2d")
							{
								map.removeOverlay(line); // clear previous line before draw a new line
								line = this.getPolyline("#0000FF",4,0.6);
								map.addOverlay(line);	
							}
							else if(map_type=="3d")
							{
								var points = new Array();
								var v = this.getPolyline().getVertexCount();				
								for (i = 0; i < v; i++) {
									var x = this.getPolyline().getVertex(i).lng();
									var y = this.getPolyline().getVertex(i).lat();
									var p = new SGCoord2D(x, y);
									points.push(p);
								}
								createRouteByPoints(points,1500,0,5,50,"routeplan");
								createRouteByPoints(points,6500,500,50,50,"routeplan2");
								createRouteByPoints(points,30000,3500,200,70,"routeplan3");
								createRouteByPoints(points,50000,15000,500,70,"routeplan4");
								createRouteByPoints(points,5000000,35000,1500,90,"routeplan5"); 
							}
						});
						
					},
					complete:function(){
						b2bAjax2();
					}
			});
			function b2bAjax2(){
				service_url = TE_URL + "bus/getBusTravelSequence_json.aspx?pathname=" + encodeURI(obj.C26) + "&startstop=" + obj.C37 + "&endstop=" + obj.C38;
				$.ajax({
						url: service_url,
						type: 'GET',
						dataType: 'json',
						error: function (xhr, textStatus) {
							alert('系統忙碌中，請稍候再試！\n(錯誤代碼：b2b)');
						},
						success: function (data) {
							var points = new Array();
							if(data==null || data==''||data.dataset==null||data.dataset==''){	
								return;
							}
							for (i = 0; i < data.dataset.length; i++) {
								var latlng = new CLatLng(data.dataset[i].Latitude, data.dataset[i].Longitude);
								points.push(latlng);
								
							}
							 var CDir = new CDirections();
							 CDir.loadFromWayPoints(points);
							 CEvent.addListener(CDir, "load", function () {
								 if (this.getStatus().code == 0) {
									// $("#busPlanDetail").append(this.getStatus().message);
								 }							
								
								if(map_type=="2d")
								{
									map.removeOverlay(line2); // clear previous line before draw a new line
									line2 = this.getPolyline("#0000FF",4,0.6);
									map.addOverlay(line2);	
								}
								else if(map_type=="3d")
								{
									var points = new Array();
									var v = this.getPolyline().getVertexCount();				
									for (i = 0; i < v; i++) {
										var x = this.getPolyline().getVertex(i).lng();
										var y = this.getPolyline().getVertex(i).lat();
										var p = new SGCoord2D(x, y);
										points.push(p);
									}
									createRouteByPoints(points,1500,0,5,50,"routeplan6");
									createRouteByPoints(points,6500,500,50,50,"routeplan7");
									createRouteByPoints(points,30000,3500,200,70,"routeplan8");
									createRouteByPoints(points,50000,15000,500,70,"routeplan9");
									createRouteByPoints(points,5000000,35000,1500,90,"routeplan10"); 
								}
							 });
							
						}
				});
			}
			
			if(map_type=="2d")
			{
			
				//check 起迄點flag存在否, 每次規劃都刪掉重加
				createRouteFlag("img/flag_g.gif", routeS.x, routeS.y, routeS.name, true);
				createRouteFlag("img/flag_r.gif", routeE.x, routeE.y, routeE.name, true);

				strStart = "由<a href=javascript:setCenter("+routeS.x+","+routeS.y+",12)>起點</a>步行["+obj.C1+"]公尺</a>";				
				strLineSeg1 = "公車站牌<a href=javascript:setCenter("+obj.C4+","+obj.C5+",12)>["+obj.C2+"]</a>搭乘公車["+obj.C6+"]";
				strLineSeg2 = "經過["+obj.C7+"]站在公車站牌 <a href=javascript:setCenter("+obj.C10+","+obj.C11+",12)>["+obj.C8+"]</a> 下車";
				strLineSeg3 = "步行"+obj.C12+"公尺，公車站牌<a href=javascript:setCenter("+obj.C24+","+obj.C25+",12)>["+obj.C22+"]</a>搭乘公車["+obj.C26+"]";
				strLineSeg4 = "經過["+obj.C27+"]站在公車站牌 <a href=javascript:setCenter("+obj.C30+","+obj.C31+",12)>["+obj.C28+"]</a> 下車";
				
				// 2d flag
				var myIcon = new CIcon();
				myIcon.image = "img/yellow_bus.png";
				myIcon.iconSize = new CSize(32, 32);
				myIcon.iconAnchor = new CPoint(16, 16);
				myIcon.infoWindowAnchor = new CPoint(0, 0);
				
				var infoBusstop1 = "["+obj.C2 +"]<br/>"+ "搭乘" +"["+obj.C6+"]";
				var infoBusstop2 = "["+obj.C8 +"]下車";
				var infoBusstop3 = "["+obj.C22 +"]<br/>"+ "搭乘" +"["+obj.C26+"]";
				var infoBusstop4 = "["+obj.C28 +"]下車";
				routeDrawArr["busstop1"] = new CMarker(new CLatLng(obj.C5, obj.C4),{icon: myIcon, title: obj.C2, clickable: true, draggable: false});
				routeDrawArr["busstop2"] = new CMarker(new CLatLng(obj.C11, obj.C10),{icon: myIcon, title: obj.C8, clickable: true, draggable: false});
				routeDrawArr["busstop3"] = new CMarker(new CLatLng(obj.C25, obj.C24),{icon: myIcon, title: obj.C22, clickable: true, draggable: false});
				routeDrawArr["busstop4"] = new CMarker(new CLatLng(obj.C31, obj.C30),{icon: myIcon, title: obj.C28, clickable: true, draggable: false});
				CEvent.addListener(routeDrawArr["busstop1"], "click", function () { this.openInfoWindow(infoBusstop1); });
				CEvent.addListener(routeDrawArr["busstop2"], "click", function () { this.openInfoWindow(infoBusstop2); });
				CEvent.addListener(routeDrawArr["busstop3"], "click", function () { this.openInfoWindow(infoBusstop3); });
				CEvent.addListener(routeDrawArr["busstop4"], "click", function () { this.openInfoWindow(infoBusstop4); });
				map.openInfoWindow(new CLatLng(obj.C5, obj.C4), infoBusstop1);
				
				map.addOverlay(routeDrawArr["busstop1"]);
				map.addOverlay(routeDrawArr["busstop2"]);
				map.addOverlay(routeDrawArr["busstop3"]);
				map.addOverlay(routeDrawArr["busstop4"]);
				strEnd = "步行["+obj.C32+"]公尺到達<a href=javascript:setCenter("+routeE.x+","+routeE.y+",12)>迄點</a>";

			}
			else if(map_type=="3d")
			{
				//check 起迄點圖釘存在否, 若否 則加上
				var b = globe.teCore.IInformationTree.FindItem(searchPath + routeS.name);
				if(b==0)createRouteLabel(routeS.name, routeS.x, routeS.y, IM_URL + "s.gif");	
				b = globe.teCore.IInformationTree.FindItem(searchPath + routeE.name);
				if(b==0)createRouteLabel(routeE.name, routeE.x, routeE.y, IM_URL + "g.gif");
					
				strStart = "由<a href=javascript:flyTo("+routeS.x+","+ routeS.y+",100)>起點</a>步行["+obj.C1+"]公尺</a>";
				strLineSeg1 = "公車站牌<a href=javascript:flyTo("+obj.C4+","+obj.C5+",100)>["+obj.C2+"]</a> 搭乘公車["+obj.C6+"]";
				strLineSeg2 = "經過["+obj.C7+"]站在公車站牌 <a href=javascript:flyTo("+obj.C10+","+obj.C11+",100)>["+obj.C8+"]</a> 下車";
				strLineSeg3 = "步行"+obj.C12+"公尺，公車站牌<a href=javascript:flyTo("+obj.C24+","+obj.C25+",100)>["+obj.C22+"]</a>搭乘公車["+obj.C26+"]";
				strLineSeg4 = "經過["+obj.C27+"]站在公車站牌 <a href=javascript:flyTo("+obj.C30+","+obj.C31+",100)>["+obj.C28+"]</a> 下車";
				
				createBusLabel(obj.C2, obj.C4, obj.C5, 0, "busstoplabel", TE_URL+'img/yellow_bus.png');
				createBusLabel(obj.C8, obj.C10, obj.C11, 0, "busstoplabel", TE_URL+'img/yellow_bus.png');
				createBusLabel(obj.C22, obj.C24, obj.C25, 0, "busstoplabel", TE_URL+'img/yellow_bus.png');
				createBusLabel(obj.C28, obj.C30, obj.C31, 0, "busstoplabel", TE_URL+'img/yellow_bus.png');
				
				strEnd = "步行["+obj.C32+"]公尺到達<a href=javascript:flyTo("+routeE.x+","+routeE.y+",100)>迄點</a>";
				flyToRoute(s[0], s[1], e[0], e[1]);
			}
			break;
		case "3":
			strType = "<hr/><strong>方案：[公車轉捷運]</strong>";	
			var service_url = TE_URL + "bus/getBusTravelSequence_json.aspx?pathname=" + encodeURI(obj.C6) + "&startstop=" + obj.C35 + "&endstop=" + obj.C36;
			$.ajax({
					url: service_url,
					type: 'GET',
					dataType: 'json',
					error: function (xhr, textStatus) {
						alert('系統忙碌中，請稍候再試！\n(錯誤代碼：plan3)');
//						alert('Ajax request error');
					},
					success: function (data) {
						var points = new Array();
						if(data==null || data==''||data.dataset==null||data.dataset==''){	
							return;
						}
						for (i = 0; i < data.dataset.length; i++) {
							var latlng = new CLatLng(data.dataset[i].Latitude, data.dataset[i].Longitude);
							points.push(latlng);
							
						}
						var CDir = new CDirections();
						CDir.loadFromWayPoints(points);
						CEvent.addListener(CDir, "load", function () {
							if (this.getStatus().code == 0) {
								//$("#busPlanDetail").append(this.getStatus().message);
							}							
							if(map_type=="2d")
							{
								map.removeOverlay(line); // clear previous line before draw a new line
								line = this.getPolyline("#0000FF",4,0.6);
								map.addOverlay(line);	
							}
							else if(map_type=="3d")
							{
								var points = new Array();
								var v = this.getPolyline().getVertexCount();				
								for (i = 0; i < v; i++) {
									var x = this.getPolyline().getVertex(i).lng();
									var y = this.getPolyline().getVertex(i).lat();
									var p = new SGCoord2D(x, y);
									points.push(p);
								}
								createRouteByPoints(points,1500,0,5,50,"routeplan");
								createRouteByPoints(points,6500,500,50,50,"routeplan2");
								createRouteByPoints(points,30000,3500,200,70,"routeplan3");
								createRouteByPoints(points,50000,15000,500,70,"routeplan4");
								createRouteByPoints(points,5000000,35000,1500,90,"routeplan5"); 
							}
						});
					}
			});
			if(map_type=="2d")
			{
				//check 起迄點flag存在否, 每次規劃都刪掉重加
				createRouteFlag("img/flag_g.gif", routeS.x, routeS.y, routeS.name, true);
				createRouteFlag("img/flag_r.gif", routeE.x, routeE.y, routeE.name, true);

				strStart = "由<a href=javascript:setCenter("+routeS.x+","+routeS.y+",12)>起點</a>步行["+obj.C1+"]公尺</a>";				
				strLineSeg1 = "公車站牌<a href=javascript:setCenter("+obj.C4+","+obj.C5+",12)>["+obj.C2+"]</a>搭乘公車["+obj.C6+"]";
				strLineSeg2 = "經過["+obj.C7+"]站在公車站牌 <a href=javascript:setCenter("+obj.C10+","+obj.C11+",12)>["+obj.C8+"]</a> 下車";
				strLineSeg3 = "步行["+obj.C12+"]公尺於<a href=javascript:setCenter("+obj.C14+","+obj.C15+",12)>["+obj.C13+"]</a>上車";
				strLineSeg4 = "經過["+obj.C16+"]站於<a href=javascript:setCenter("+obj.C18+","+obj.C19+",12)>["+obj.C17+"]</a>下車";
				// 2d flag
				var myIcon = new CIcon();
				myIcon.image = "img/yellow_bus.png";
				myIcon.iconSize = new CSize(32, 32);
				myIcon.iconAnchor = new CPoint(16, 16);
				myIcon.infoWindowAnchor = new CPoint(0, 0);
				var myIcon2 = new CIcon();
				myIcon2.image = "img/Bus-green-32.png";
				myIcon2.iconSize = new CSize(32, 32);
				myIcon2.iconAnchor = new CPoint(16, 16);
				myIcon2.infoWindowAnchor = new CPoint(0, 0);
	
				routeDrawArr["busstop1"] = new CMarker(new CLatLng(obj.C5, obj.C4),{icon: myIcon, title: obj.C2, clickable: true, draggable: false});
				routeDrawArr["busstop2"] = new CMarker(new CLatLng(obj.C11, obj.C10),{icon: myIcon, title: obj.C8, clickable: true, draggable: false});
				routeDrawArr["busstop3"] = new CMarker(new CLatLng(obj.C15, obj.C14),{icon: myIcon2, title: obj.C13, clickable: true, draggable: false});
				routeDrawArr["busstop4"] = new CMarker(new CLatLng(obj.C19, obj.C18),{icon: myIcon2, title: obj.C17, clickable: true, draggable: false});

				
				infoBusstop1 = "站牌["+obj.C2 +"]<br/>"+ "搭乘" +"["+obj.C6+"]";
				infoBusstop2 = "站牌["+obj.C8+"]";
				infoBusstop3 = "捷運站["+obj.C13+"]";
				infoBusstop4 = "捷運站["+obj.C17+"]";
				CEvent.addListener(routeDrawArr["busstop1"], "click", function() {this.openInfoWindow(infoBusstop1); });
				CEvent.addListener(routeDrawArr["busstop2"], "click", function() {this.openInfoWindow(infoBusstop2); });
				CEvent.addListener(routeDrawArr["busstop3"], "click", function() {this.openInfoWindow(infoBusstop3); });
				CEvent.addListener(routeDrawArr["busstop4"], "click", function() {this.openInfoWindow(infoBusstop4); });
				
				map.openInfoWindow(new CLatLng(obj.C5, obj.C4), infoBusstop1);
				map.addOverlay(routeDrawArr["busstop1"]);
				map.addOverlay(routeDrawArr["busstop2"]);
				map.addOverlay(routeDrawArr["busstop3"]);
				map.addOverlay(routeDrawArr["busstop4"]);
				strEnd = "步行["+obj.C20+"]公尺到達<a href=javascript:setCenter("+routeE.x+","+routeE.y+",12)>迄點</a>";

			}
			else if(map_type=="3d")
			{
				//check 起迄點圖釘存在否, 若否 則加上
				var b = globe.teCore.IInformationTree.FindItem(searchPath + routeS.name);
				if(b==0)createRouteLabel(routeS.name, routeS.x, routeS.y, IM_URL + "s.gif");	
				b = globe.teCore.IInformationTree.FindItem(searchPath + routeE.name);
				if(b==0)createRouteLabel(routeE.name, routeE.x, routeE.y, IM_URL + "g.gif");
					
				strStart = "由<a href=javascript:flyTo("+routeS.x+","+ routeS.y+",100)>起點</a>步行["+obj.C1+"]公尺</a>";
				strLineSeg1 = "公車站牌<a href=javascript:flyTo("+obj.C4+","+obj.C5+",100)>["+obj.C2+"]</a> 搭乘公車["+obj.C6+"]";
				strLineSeg2 = "經過["+obj.C7+"]站在公車站牌 <a href=javascript:flyTo("+obj.C10+","+obj.C11+",100)>["+obj.C8+"]</a> 下車";
				strLineSeg3 = "步行["+obj.C12+"]公尺於<a href=javascript:flyTo("+obj.C14+","+obj.C15+",100)>["+obj.C13+"]</a>上車";
				strLineSeg4 = "經過["+obj.C16+"]站於<a href=javascript:flyTo("+obj.C18+","+obj.C19+",100)>["+obj.C17+"]</a>下車";
				
				createBusLabel(obj.C2, obj.C4, obj.C5, 0, "busstoplabel", TE_URL+'img/yellow_bus.png');
				createBusLabel(obj.C8, obj.C10, obj.C11, 0, "busstoplabel", TE_URL+'img/yellow_bus.png');
				createBusLabel(obj.C13, obj.C14, obj.C15, 0, "busstoplabel", TE_URL+'img/Bus-green-32.png');
				createBusLabel(obj.C17, obj.C18, obj.C19, 0, "busstoplabel", TE_URL+'img/Bus-green-32.png');
				
				strEnd = "步行["+obj.C20+"]公尺到達<a href=javascript:flyTo("+routeE.x+","+routeE.y+",100)>迄點</a>";
				flyToRoute(s[0], s[1], e[0], e[1]);
			}
			break;
		case "5":
			strType = "<hr/><strong>方案：[捷運直達]</strong>";
			if(map_type=="2d")
			{
				//check 起迄點flag存在否, 每次規劃都刪掉重加
				createRouteFlag("img/flag_g.gif", routeS.x, routeS.y, routeS.name, true);
				createRouteFlag("img/flag_r.gif", routeE.x, routeE.y, routeE.name, true);

				strStart = "由<a href=javascript:setCenter("+routeS.x+","+routeS.y+",12)>起點</a>步行["+obj.C21+"]公尺</a>";				
				strLineSeg1 = "<a href=javascript:setCenter("+obj.C24+","+obj.C25+",12)>["+obj.C22+"]</a>搭乘捷運";
				strLineSeg2 = "經過["+obj.C27+"]站在<a href=javascript:setCenter("+obj.C30+","+obj.C31+",12)>["+obj.C28+"]</a> 下車";
				
				// 2d flag
				var myIcon = new CIcon();
				myIcon.image = "img/Bus-green-32.png";
				myIcon.iconSize = new CSize(32, 32);
				myIcon.iconAnchor = new CPoint(16, 16);
				myIcon.infoWindowAnchor = new CPoint(0, 0);
				routeDrawArr["busstop1"] = new CMarker(new CLatLng(obj.C25, obj.C24),{icon: myIcon, title: obj.C22, clickable: true, draggable: false});
				routeDrawArr["busstop2"] = new CMarker(new CLatLng(obj.C31, obj.C30),{icon: myIcon, title: obj.C28, clickable: true, draggable: false});
				infoBusstop1 = "捷運站["+obj.C22 +"]";
				infoBusstop2 = "捷運站["+obj.C28+"]";
				CEvent.addListener(routeDrawArr["busstop1"], "click", function() {this.openInfoWindow(infoBusstop1); });
				CEvent.addListener(routeDrawArr["busstop2"], "click", function() {this.openInfoWindow(infoBusstop2); });
				map.openInfoWindow(new CLatLng(obj.C25, obj.C24), infoBusstop1);
				map.addOverlay(routeDrawArr["busstop1"]);
				map.addOverlay(routeDrawArr["busstop2"]);
				strEnd = "步行["+obj.C32+"]公尺到達<a href=javascript:setCenter("+routeE.x+","+routeE.y+",12)>迄點</a>";

			}
			else if(map_type=="3d")
			{
				//check 起迄點圖釘存在否, 若否 則加上
				var b = globe.teCore.IInformationTree.FindItem(searchPath + routeS.name);
				if(b==0)createRouteLabel(routeS.name, routeS.x, routeS.y, IM_URL + "s.gif");	
				b = globe.teCore.IInformationTree.FindItem(searchPath + routeE.name);
				if(b==0)createRouteLabel(routeE.name, routeE.x, routeE.y, IM_URL + "g.gif");
					
				strStart = "由<a href=javascript:flyTo("+routeS.x+","+ routeS.y+",100)>起點</a>步行["+obj.C21+"]公尺</a>";
				strLineSeg1 = "<a href=javascript:flyTo("+obj.C24+","+obj.C25+",100)>["+obj.C22+"]</a>搭乘捷運";
				strLineSeg2 = "經過["+obj.C27+"]站在<a href=javascript:flyTo("+obj.C30+","+obj.C31+",100)>["+obj.C28+"]</a> 下車";
				
	
				createBusLabel(obj.C22, obj.C24, obj.C25, 0, "busstoplabel", TE_URL+'img/Bus-green-32.png');
				createBusLabel(obj.C28, obj.C30, obj.C31, 0, "busstoplabel", TE_URL+'img/Bus-green-32.png');
				
				strEnd = "步行["+obj.C32+"]公尺到達<a href=javascript:flyTo("+routeE.x+","+routeE.y+",100)>迄點</a>";
				flyToRoute(s[0], s[1], e[0], e[1]);
			}
			break;	
		case "6":
			strType = "<hr/><strong>方案：[捷運轉公車]</strong>";
			var service_url = TE_URL + "bus/getBusTravelSequence_json.aspx?pathname=" + encodeURI(obj.C26) + "&startstop=" + obj.C37 + "&endstop=" + obj.C38;
			$.ajax({
					url: service_url,
					type: 'GET',
					dataType: 'json',
					error: function (xhr, textStatus) {
						alert('系統忙碌中，請稍候再試！\n(錯誤代碼：plan6)');
					},
					success: function (data) {
						var points = new Array();
						if(data==null || data==''||data.dataset==null||data.dataset==''){	
							return;
						}
						for (i = 0; i < data.dataset.length; i++) {
							var latlng = new CLatLng(data.dataset[i].Latitude, data.dataset[i].Longitude);
							points.push(latlng);
							
						}
						var CDir = new CDirections();
						CDir.loadFromWayPoints(points);
						CEvent.addListener(CDir, "load", function () {
							if (this.getStatus().code == 0) {
								//$("#busPlanDetail").append(this.getStatus().message);
							}								
							if(map_type=="2d")
							{
								map.removeOverlay(line); // clear previous line before draw a new line
								line = this.getPolyline("#0000FF",4,0.6);
								map.addOverlay(line);	
							}
							else if(map_type=="3d")
							{
								var points = new Array();
								var v = this.getPolyline().getVertexCount();				
								for (i = 0; i < v; i++) {
									var x = this.getPolyline().getVertex(i).lng();
									var y = this.getPolyline().getVertex(i).lat();
									var p = new SGCoord2D(x, y);
									points.push(p);
								}
								createRouteByPoints(points,1500,0,5,50,"routeplan");
								createRouteByPoints(points,6500,500,50,50,"routeplan2");
								createRouteByPoints(points,30000,3500,200,70,"routeplan3");
								createRouteByPoints(points,50000,15000,500,70,"routeplan4");
								createRouteByPoints(points,5000000,35000,1500,90,"routeplan5"); 
							}
						});
					}
			});
			if(map_type=="2d")
			{
				//check 起迄點flag存在否, 每次規劃都刪掉重加
				createRouteFlag("img/flag_g.gif", routeS.x, routeS.y, routeS.name, true);
				createRouteFlag("img/flag_r.gif", routeE.x, routeE.y, routeE.name, true);

				strStart = "由<a href=javascript:setCenter("+routeS.x+","+routeS.y+",12)>起點</a>步行["+obj.C12+"]公尺</a>";				
				strLineSeg1 = "<a href=javascript:setCenter("+obj.C14+","+obj.C15+",12)>["+obj.C13+"]</a>搭乘捷運";
				strLineSeg2 = "經過["+obj.C16+"]站在<a href=javascript:setCenter("+obj.C18+","+obj.C19+",12)>["+obj.C17+"]</a> 下車";
				strLineSeg3 = "步行["+obj.C20+"]公尺於<a href=javascript:setCenter("+obj.C24+","+obj.C25+",12)>["+obj.C22+"]</a>上車";
				strLineSeg4 = "經過["+obj.C27+"]站於<a href=javascript:setCenter("+obj.C30+","+obj.C31+",12)>["+obj.C28+"]</a>下車";
				// 2d flag
				var myIcon = new CIcon();
				myIcon.image = "img/Bus-green-32.png";
				myIcon.iconSize = new CSize(32, 32);
				myIcon.iconAnchor = new CPoint(16, 16);
				myIcon.infoWindowAnchor = new CPoint(0, 0);
				var myIcon2 = new CIcon();
				myIcon2.image = "img/yellow_bus.png";
				myIcon2.iconSize = new CSize(32, 32);
				myIcon2.iconAnchor = new CPoint(16, 16);
				myIcon2.infoWindowAnchor = new CPoint(0, 0);
				
				routeDrawArr["busstop1"] = new CMarker(new CLatLng(obj.C15, obj.C14),{icon: myIcon, title: obj.C13, clickable: true, draggable: false});
				routeDrawArr["busstop2"] = new CMarker(new CLatLng(obj.C19, obj.C18),{icon: myIcon, title: obj.C17, clickable: true, draggable: false});
				routeDrawArr["busstop3"] = new CMarker(new CLatLng(obj.C25, obj.C24),{icon: myIcon2, title: obj.C22, clickable: true, draggable: false});
				routeDrawArr["busstop4"] = new CMarker(new CLatLng(obj.C31, obj.C30),{icon: myIcon2, title: obj.C28, clickable: true, draggable: false});
			
				infoBusstop1 = "捷運站["+obj.C13 +"]<br/>"+ "搭乘捷運";
				infoBusstop2 = "捷運站["+obj.C17+"]";
				infoBusstop3 = "站牌["+obj.C22+"]";
				infoBusstop4 = "站牌["+obj.C28+"]";
				CEvent.addListener(routeDrawArr["busstop1"], "click", function() {this.openInfoWindow(infoBusstop1); });
				CEvent.addListener(routeDrawArr["busstop2"], "click", function() {this.openInfoWindow(infoBusstop2); });
				CEvent.addListener(routeDrawArr["busstop3"], "click", function() {this.openInfoWindow(infoBusstop3); });
				CEvent.addListener(routeDrawArr["busstop4"], "click", function() {this.openInfoWindow(infoBusstop4); });
				
				map.openInfoWindow(new CLatLng(obj.C5, obj.C4), infoBusstop1);
				map.addOverlay(routeDrawArr["busstop1"]);
				map.addOverlay(routeDrawArr["busstop2"]);
				map.addOverlay(routeDrawArr["busstop3"]);
				map.addOverlay(routeDrawArr["busstop4"]);
				strEnd = "步行["+obj.C32+"]公尺到達<a href=javascript:setCenter("+routeE.x+","+routeE.y+",12)>迄點</a>";

			}
			else if(map_type=="3d")
			{
				//check 起迄點圖釘存在否, 若否 則加上
				var b = globe.teCore.IInformationTree.FindItem(searchPath + routeS.name);
				if(b==0)createRouteLabel(routeS.name, routeS.x, routeS.y, IM_URL + "s.gif");	
				b = globe.teCore.IInformationTree.FindItem(searchPath + routeE.name);
				if(b==0)createRouteLabel(routeE.name, routeE.x, routeE.y, IM_URL + "g.gif");
					
				strStart = "由<a href=javascript:flyTo("+routeS.x+","+ routeS.y+",100)>起點</a>步行["+obj.C12+"]公尺</a>";
				strLineSeg1 = "<a href=javascript:flyTo("+obj.C14+","+obj.C15+",100)>["+obj.C13+"]</a>搭乘捷運";
				strLineSeg2 = "經過["+obj.C16+"]站在<a href=javascript:flyTo("+obj.C18+","+obj.C19+",100)>["+obj.C17+"]</a> 下車";
				strLineSeg3 = "步行["+obj.C20+"]公尺於<a href=javascript:flyTo("+obj.C24+","+obj.C25+",100)>["+obj.C22+"]</a>上車";
				strLineSeg4 = "經過["+obj.C27+"]站於<a href=javascript:flyTo("+obj.C30+","+obj.C31+",100)>["+obj.C28+"]</a>下車";
				
				createBusLabel(obj.C13, obj.C14, obj.C15, 0, "busstoplabel", TE_URL+'img/Bus-green-32.png');
				createBusLabel(obj.C17, obj.C18, obj.C19, 0, "busstoplabel", TE_URL+'img/Bus-green-32.png');
				createBusLabel(obj.C22, obj.C24, obj.C25, 0, "busstoplabel", TE_URL+'img/yellow_bus.png');
				createBusLabel(obj.C28, obj.C30, obj.C31, 0, "busstoplabel", TE_URL+'img/yellow_bus.png');
				
				strEnd = "步行["+obj.C32+"]公尺到達<a href=javascript:flyTo("+routeE.x+","+routeE.y+",100)>迄點</a>";
				flyToRoute(s[0], s[1], e[0], e[1]);
			}
			break;
	}
	$("#busPlanDetail").append("<br/>"+strType);
	var htmlOutput = "<ol style='line-height:30px'>";
	if(strStart!="") htmlOutput += "<li>"+strStart+"</li>";
	if(strLineSeg1!="") htmlOutput += "<li>"+strLineSeg1+"</li>";
	if(strLineSeg2!="") htmlOutput += "<li>"+strLineSeg2+"</li>";
	if(strLineSeg3!="") htmlOutput += "<li>"+strLineSeg3+"</li>";
	if(strLineSeg4!="") htmlOutput += "<li>"+strLineSeg4+"</li>";
	if(strEnd!="") htmlOutput += "<li>"+strEnd+"</li>";
	htmlOutput += "</ol>";
	htmlOutput += "<br/><font color=gray>路線僅供參考，行經路線請依實際行駛路線為主。</font>";
	$("#busPlanDetail").append(htmlOutput);

}
//handle mouse over, out, click 
function routeMenu(){
	//routing menu control selected, mouseover, mouseout 
	$("#divRoute tr").each(function(i, val) {
		$(this).css("backgroundColor","white");
		if($(this).attr("flag")==true){			
			$(this).css("backgroundColor","#C6E2FF");
			$(this).mouseout(function(){
				 $(this).css("backgroundColor","#C6E2FF");
			 }).mouseover(function(){
				 $(this).css("backgroundColor","#C6E2FF");
			 });
		}else{
					
			 $(this).mouseout(function(){
				 $(this).css("backgroundColor","white");
			 }).mouseover(function(){
				 $(this).css("backgroundColor","#C6E2FF");
			 });
		}
		$(this).attr("flag",false);

	})
}


function setCenter(x,y,scale)
{	
 if(planType!="bus")routeMenu();
 map.removeOverlay(mkr);
 if(scale==null)scale=11;
 var myIcon = new CIcon();
 myIcon.image = "img/arrow_down.png";
 myIcon.iconSize = new CSize(32, 32);
 myIcon.iconAnchor = new CPoint(16, 32);
 var ll = new CLatLng(y, x);
 mkr = new CMarker(ll, {icon: myIcon, title: '自建地標圖示', clickable: true, draggable: false});
 if(planType!="bus")map.addOverlay(mkr);
 map.setCenter(ll, scale);
}

function clearRoutePlanKeepStartEndPoint(){
	$("#divRoute").html("");
	clearRouteDraw();
}
function clearRoutePlan(){
  $('#getCarTravelPlan').removeClass('on');
  $('#getBusTravelPlan').removeClass('on');
  $('#getWalkTravelPlan').removeClass('on');
	$(".addrE").hide();
	$(".addrS").hide();
	$("#inputS").show();
	$("#inputE").show();
	$("#divRoute").html("");
	$("#txS").val("");
	$("#txE").val("");
	$("#addrS").val("");
	$("#addrE").val("");
	clearRouteDraw();
}

function clearRouteDraw(){

	if(map_type=="2d")
	{	
	    map.closeInfoWindow();
		map.removeOverlay(line);
		map.removeOverlay(line2);
		map.removeOverlay(mkr);
		map.removeOverlay(routeDrawArr[routeS.name]);
		map.removeOverlay(routeDrawArr[routeE.name]);
		map.removeOverlay(routeDrawArr["busstop1"]);
		map.removeOverlay(routeDrawArr["busstop2"]);
		map.removeOverlay(routeDrawArr["busstop3"]);
		map.removeOverlay(routeDrawArr["busstop4"]);
		for(var key in passbyBusstop){
			map.removeOverlay(passbyBusstop[key]);
		}
		passbyBusstop = [];
		for(var key in passbyBusstopPart2){
			map.removeOverlay(passbyBusstopPart2[key]);
		}
		passbyBusstopPart2 = [];
	}
	else if(map_type=="3d")
	{
		var b = globe.teCore.IInformationTree.FindItem(searchPath + routeS.name);
		b > 0 && globe.teCore.IInformationTree.DeleteItem(b);
		
		//delete start and end pin
		var b = globe.teCore.IInformationTree.FindItem(searchPath + routeS.name);
		b > 0 && globe.teCore.IInformationTree.DeleteItem(b);
		b = globe.teCore.IInformationTree.FindItem(searchPath + routeE.name);
		b > 0 && globe.teCore.IInformationTree.DeleteItem(b);
		
		var full_dir = "\\busstoplabel";
		var itemID = globe.teCore.IInformationTree.FindItem(full_dir);
		if (itemID != 0) globe.teCore.IInformationTree.DeleteItem(itemID);
		
		//clear Walk Travel Plan
		if (sizeOfRoute != 0) {
			for (var i = 0; i <= sizeOfRoute; i++) {
				var node = globe.root.selectSingleNode("walkrouteplan_a" + i);
				if (node != null) globe.root.removeChild(node);
				node = globe.root.selectSingleNode("walkrouteplan_b" + i);
				if (node != null) globe.root.removeChild(node);
				node = globe.root.selectSingleNode("walkrouteplan_c" + i);
				if (node != null) globe.root.removeChild(node);
				node = globe.root.selectSingleNode("walkrouteplan_d" + i);
				if (node != null) globe.root.removeChild(node);
				node = globe.root.selectSingleNode("walkrouteplan_e" + i);
				if (node != null) globe.root.removeChild(node);

			}
		}
		//clear Car Travel Plan
		node = globe.root.selectSingleNode("routeplan");
		if (node != null) globe.root.removeChild(node);
		node = globe.root.selectSingleNode("routeplan2");
		if (node != null) globe.root.removeChild(node);
		node = globe.root.selectSingleNode("routeplan3");
		if (node != null) globe.root.removeChild(node);
		node = globe.root.selectSingleNode("routeplan4");
		if (node != null) globe.root.removeChild(node);
		node = globe.root.selectSingleNode("routeplan5");
		if (node != null) globe.root.removeChild(node);
		node = globe.root.selectSingleNode("routeplan6");
		if (node != null) globe.root.removeChild(node);
		node = globe.root.selectSingleNode("routeplan7");
		if (node != null) globe.root.removeChild(node);
		node = globe.root.selectSingleNode("routeplan8");
		if (node != null) globe.root.removeChild(node);
		node = globe.root.selectSingleNode("routeplan9");
		if (node != null) globe.root.removeChild(node);
		node = globe.root.selectSingleNode("routeplan10");
		if (node != null) globe.root.removeChild(node);
		
		

	}

}
function clearNode(dir) {
    var full_dir = "\\" + dir;
    var itemID = globe.teCore.IInformationTree.FindItem(full_dir);
    if (itemID != 0) globe.teCore.IInformationTree.DeleteItem(itemID);
}
function getBusLocation(pathname, goback, x, y) {
    //goback,0:去 1:回
    var dir = "bus";
    clearNode(dir);
    //ajax to load bus location dynamicly
    var service_url = TE_URL + "bus/getBusLocation.aspx?routename=" + encodeURI(pathname);
	//alert(service_url);
    $.ajax({
        url: service_url,
        type: 'GET',
        dataType: 'json',
        error: function (xhr, textStatus) {
            //alert("暫時無法提供該公車動態資訊!!");
        },
        success: function (jdata) {
            if (jdata == null) {
                //alert("暫時無法提供該公車動態資訊!!");
            } else {

                if (jdata.dataset.length != null) {

                    $("#menu").html("");
                    $("#menu").append("公車動態<br>");
                    try {
                        RouteListWindow = globe.teCore.IScriptEngine.GetGlobalName("++RouteListWindow");

                    } catch (e) {
                        alert(e.description);
                    }
                    //txt for popup to show
                    //var bustxt = "<div><center><font size=1.5em >"+pathname+" 行進中公車<br/>" ;
                    var bustxt2 = "<select onchange=\"flyToBusLocation(this.options[this.selectedIndex].value)\">";
                    bustxt2 += "<option value=\"即時公車動態位置\">即時公車動態位置</option>";
                    for (i = 0; i < jdata.dataset.length; i++) {

                        $("#menu").append("<a href=javascript:flyTo(" + jdata.dataset[i].B_lnt + "," + jdata.dataset[i].B_lat + ",100" + ")>" + jdata.dataset[i].B_Id + "</a><br>"); //return object 
                        //計算距離
                        //經緯度換算公尺, 1公尺約0.00000900900901度
                        //1​度​約​為​1​1​1​公​里 約​為​1​1​1​0​0​0​公​尺
                        var distance = (Math.sqrt((x - jdata.dataset[i].B_lnt) * (x - jdata.dataset[i].B_lnt) + (y - jdata.dataset[i].B_lat) * (y - jdata.dataset[i].B_lat)) * 111).toFixed(1);

                        //1. 去程 2.回程
                        if (jdata.dataset[i].B_Goback == "1" && goback == "0") {
                            //bustxt+="<font size=1.5em ><a href=javascript:parent.flyTo("+jdata.dataset[i].B_lnt+","+jdata.dataset[i].B_lat+",100"+")>"+jdata.dataset[i].B_Id+"</a></font><br>"
                            createBusLabel(pathname + '公車(去程)' + "[" + jdata.dataset[i].B_Id + "]", jdata.dataset[i].B_lnt, jdata.dataset[i].B_lat, 5, 'bus', TE_URL + 'img/bus.png');
                            bustxt2 += "<option value=\"" + jdata.dataset[i].B_lnt + "," + jdata.dataset[i].B_lat + "," + distance + "\">(車牌號碼)" + jdata.dataset[i].B_Id + "</option>";
                            //RouteListWindow.$("#buslocation").append("<a href=javascript:flyTo("+jdata.dataset[i].B_lnt+","+jdata.dataset[i].B_lat+",100"+")>"+jdata.dataset[i].B_Id+"</a><br>");
                        } else if (jdata.dataset[i].B_Goback == "2" && goback == "1") {
                            //bustxt+="<font size=1.5em ><a href=javascript:parent.flyTo("+jdata.dataset[i].B_lnt+","+jdata.dataset[i].B_lat+",100"+")>"+jdata.dataset[i].B_Id+"</a></font><br>"
                            createBusLabel(pathname + '公車(回程)' + "[" + jdata.dataset[i].B_Id + "]", jdata.dataset[i].B_lnt, jdata.dataset[i].B_lat, 5, 'bus', TE_URL + 'img/bus.png');
                            bustxt2 += "<option value=\"" + jdata.dataset[i].B_lnt + "," + jdata.dataset[i].B_lat + "," + distance + "\">(車牌號碼)" + jdata.dataset[i].B_Id + "</option>";
                            //RouteListWindow.$("#buslocation").append("<a href=javascript:flyTo("+jdata.dataset[i].B_lnt+","+jdata.dataset[i].B_lat+",100"+")>"+jdata.dataset[i].B_Id+"</a><br>");
                        }
                    }
                    bustxt2 += "</select>";
                    RouteListWindow.$("#busselect").html(bustxt2);
                
                }

            }
        }
    });

}



