﻿// JScript 檔
var mintMaxMidPos = 5;
var mintMidPosCount=1, mintMidPosNumber=1;

//----------------------------------------------------------------------------------
// 目    的 : 新增用來紀錄中繼點 x,y 的 Hidden 控制項。
// 輸 入 值 : intPosNum 整數,中繼點編號
// 傳 回 值 : 
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/27    建立(Jimmy)
//----------------------------------------------------------------------------------
function addNewMidPosHidden(intPosNum) {
    var strMidHidden = "<input type=\"hidden\" name=\"hidMPoint" + intPosNum + "\" value=\"\" />";
    strMidHidden += "<input type=\"hidden\" name=\"hidMPointAddr" + intPosNum + "\" value=\"\" />";
    appendInputHidden(strMidHidden);
    
    mintMidPosCount++;
    mintMidPosNumber = intPosNum;
}

//----------------------------------------------------------------------------------
// 目    的 : 將 Hidden 控制項附加到 divHiddenObject (DIV) 中
// 輸 入 值 : strInputHtml 字串,要附加的 Hidden 控制項的 Html tag
// 傳 回 值 : 
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/27    建立(Jimmy)
//----------------------------------------------------------------------------------
function appendInputHidden(strInputHtml) {
    var divContainer = document.getElementById("divHiddenObject");
    if (divContainer) divContainer.innerHTML += strInputHtml;
    divContainer = null;
}

//-- 起訖點對調
function changeSEPosition() {
    var strSPos = getInputObjectValue("hidSPoint");
    var strEPos = getInputObjectValue("hidEPoint");
    
    setInputObjectValue("hidSPoint", strEPos);
    setInputObjectValue("hidEPoint", strSPos);
    
    refreshInsertShowObject();
}

//----------------------------------------------------------------------------------
// 目    的 : 清除所有已設定的定點資訊。
// 輸 入 值 : 
// 傳 回 值 : 
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/28    建立(Jimmy)
//----------------------------------------------------------------------------------
function clearAllPosition() {
    var i=0, objHidden;
    
    setInputObjectValue("hidSPoint", "");
    setInputObjectValue("hidEPoint", "");
    
    for(i=1; i<=mintMidPosNumber; i++) {
        objHidden = document.getElementById("hidMPoint"+i);
        if(objHidden) {
            if(i==1)
                objHidden.value = "";
            else {
                var objHidAddr = document.getElementById("hidMPointAddr"+i);
                if (objHidAddr) objHidAddr.removeNode(true);
                
                objHidden.removeNode(true);
            }
        }
        objHidden = null;
    }
    
    var objFlash = document.getElementById("myFlash");
    if (objFlash) {
        setInsertShowObject("");
        setWorkMode("insert_show_object");
    }
    objFlash = null;
}

//-- 清除路線
function clearRoute() {
    setDrawObjectXMLStr("");
    
    setInsertShowObject("");
    setWorkMode("insert_show_object");
}

//-- 取得終點座標
function getEndPosition() {
    var strPoints = getInputObjectValue("hidEPoint");
    return strPoints;
}
//-- 取得終點地址
function getEndPositionAddr() {
    var strPoints = getInputObjectValue("hidEPointAddr");
    return strPoints;
}

//----------------------------------------------------------------------------------
// 目    的 : 取得指定的中繼點的 XY 座標。
// 輸 入 值 : intPosNum 整數,要取得的中繼點編號
// 傳 回 值 : 中繼點的 XY 座標。
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/27    建立(Jimmy)
//----------------------------------------------------------------------------------
function getMiddlePosition(intPosNum) {
    var strPoints = getInputObjectValue("hidMPoint"+intPosNum);
    return strPoints;
}
//-- 取得中繼點地址
function getMiddlePositionAddr(intPosNum) {
    var strPoints = getInputObjectValue("hidMPointAddr"+intPosNum);
    return strPoints;
}

//-- 取得起點座標
function getStartPosition() {
    var strPoints = getInputObjectValue("hidSPoint");
    return strPoints;
}
//-- 取得起點地址
function getStartPositionAddr() {
    var strPoints = getInputObjectValue("hidSPointAddr");
    return strPoints;
}

//----------------------------------------------------------------------------------
// 目    的 : 建立用來儲存中繼點 XY 座標的 Hidden 控制項。
// 輸 入 值 :
// 傳 回 值 : Hidden 控制項。
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/20    建立(Jimmy)
//----------------------------------------------------------------------------------
function loadMidHidden() {
    var i=0;
    var strInputHtml="";
    
    strInputHtml += "<input type=\"hidden\" name=\"hidSPoint\" value=\"\" />";
    strInputHtml += "<input type=\"hidden\" name=\"hidEPoint\" value=\"\" />";
    strInputHtml += "<input type=\"hidden\" name=\"hidMPoint1\" value=\"\" />";
    
    strInputHtml += "<input type=\"hidden\" name=\"hidSPointAddr\" value=\"\" />";
    strInputHtml += "<input type=\"hidden\" name=\"hidEPointAddr\" value=\"\" />";
    strInputHtml += "<input type=\"hidden\" name=\"hidMPointAddr1\" value=\"\" />";
    
    appendInputHidden(strInputHtml);
}

//-- 設定起點
function makeStartPosition(dblX, dblY, blnRefresh) {
    setInputObjectValue("hidSPoint", dblX + "," + dblY);
    if (blnRefresh == true) refreshInsertShowObject();
}
//-- 設定起點地址
function makeStartPositionAddr(strAddr) {
    setInputObjectValue("hidSPointAddr", strAddr);
}

//-- 設定終點
function makeEndPosition(dblX, dblY, blnRefresh) {
    setInputObjectValue("hidEPoint", dblX + "," + dblY);
    if (blnRefresh == true) refreshInsertShowObject();
}
//-- 設定終點地址
function makeEndPositionAddr(strAddr) {
    setInputObjectValue("hidEPointAddr", strAddr);
}

//----------------------------------------------------------------------------------
// 目    的 : 設定中繼點的 XY 座標填入 Hidden 控制項中,並更新 Map 上的圖示。
// 輸 入 值 :
// 傳 回 值 : 更新 Map 上的起訖點和中繼點的圖示。
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/12    建立(Jimmy)
//----------------------------------------------------------------------------------
function makeMiddlePosition(dblX, dblY, blnRefresh, intPosNum) {
    setInputObjectValue("hidMPoint"+intPosNum, dblX + "," + dblY);
    if (blnRefresh == true) refreshInsertShowObject();
}
//-- 設定中繼點地址
function makeMiddlePositionAddr(strAddr, intPosNum) {
    setInputObjectValue("hidMPointAddr"+intPosNum, strAddr);
}

//----------------------------------------------------------------------------------
// 目    的 : 更新 Map 上的起訖點和中繼點的圖示。
// 輸 入 值 :
// 傳 回 值 : 更新 Map 上的起訖點和中繼點的圖示。
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/12    建立(Jimmy)
//----------------------------------------------------------------------------------
function refreshInsertShowObject() {
    var arySPoint, aryEPoint, aryMPoint;
    var strSPointXml="", strEPointXml="", strMPointXml="";
    var strSPoint = getInputObjectValue("hidSPoint");
    var strEPoint = getInputObjectValue("hidEPoint");
    var strMPoint="";
    var i=0;
    
    //-- 建立起點的 XML 標籤
    if (strSPoint != "") {
        arySPoint = strSPoint.split(",");
        strSPointXml = "<object id=\"s\" x=\"" + arySPoint[0] + "\" y=\"" + arySPoint[1] + "\" alt=\"起點\">";
        strSPointXml = strSPointXml + "<icon path=\"" + frmData.webpagepath.value + "icon/Start.swf\" w=\"24\" h=\"24\" align=\"center\" valign=\"middle\" />";
        //strSPointXml = strSPointXml + "<icon path=\"" + frmData.webpagepath.value + "icon/icon_s.gif\" w=\"34\" h=\"30\" />";
        strSPointXml = strSPointXml + "</object>";
    }
    //-- 建立中繼點的 XML 標籤
    var objMidHidden, intCount=0;;
    strMPointXml = "";
    for(i=1; i<=mintMidPosNumber; i++) {
        objMidHidden = document.getElementById("hidMPoint"+i);
        if(objMidHidden) {
            strMPoint = objMidHidden.value;
            if (strMPoint != "") {
                intCount++;
                aryMPoint = strMPoint.split(",");
                strMPointXml += "<object id=\"m" + i + "\" x=\"" + aryMPoint[0] + "\" y=\"" + aryMPoint[1] + "\" alt=\"中繼點" + intCount + "\">";
                strMPointXml += "<icon path=\"" + frmData.webpagepath.value + "icon/Middle.swf\" w=\"24\" h=\"24\" align=\"center\" valign=\"middle\" />";
                //strMPointXml += "<icon path=\"" + frmData.webpagepath.value + "icon/icon_s.gif\" w=\"34\" h=\"30\" />";
                strMPointXml += "</object>";
            }
        }
        objMidHidden = null;
    }
    //-- 建立終點的 XML 標籤
    if (strEPoint != "") {
        aryEPoint = strEPoint.split(",");
        strEPointXml = "<object id=\"s\" x=\"" + aryEPoint[0] + "\" y=\"" + aryEPoint[1] + "\" alt=\"終點\">";
        strEPointXml = strEPointXml + "<icon path=\"" + frmData.webpagepath.value + "icon/End.swf\" w=\"24\" h=\"24\" align=\"center\" valign=\"middle\" />";
        //strEPointXml = strEPointXml + "<icon path=\"" + frmData.webpagepath.value + "icon/icon_e.gif\" w=\"34\" h=\"30\" />";
        strEPointXml = strEPointXml + "</object>";
    }
    
    var strSymbolXml = "<objectxml>" + strSPointXml + strMPointXml + strEPointXml + "</objectxml>"
    //alert(strSymbolXml);
    setInsertShowObject(strSymbolXml);
    setWorkMode("insert_show_object");
    //refreshMapClickSymbol();
}

//-- 取得起點資訊
function setStartPosition(strAddr) {
    ShowMapProcTest("取得定位資料中, 請稍候....");
	
	var strParams = "smode=s1&if01=" + strAddr + "&if02=400&if03=s&if04=1";
	new net.ContentLoader("MJ_GetPosition.asp", parsePosition, null, "POST", strParams);
}

//-- 取得終點資訊
function setEndPosition(strAddr) {
    ShowMapProcTest("取得定位資料中, 請稍候....");
	
	var strParams = "smode=s1&if01=" + strAddr + "&if02=400&if03=e&if04=1";
	new net.ContentLoader("MJ_GetPosition.asp", parsePosition, null, "POST", strParams);
}

//----------------------------------------------------------------------------------
// 目    的 : 將中繼點的地址定位。
// 輸 入 值 :
// 傳 回 值 : 呼叫 MJ_GetPosition.asp 執行地址定位,定位結果交由 parsePosition() function 處理。
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/12    建立(Jimmy)
//----------------------------------------------------------------------------------
function setMiddlePosition(intPosNum, strAddr) {
    ShowMapProcTest("取得定位資料中, 請稍候....");
	
	var strParams = "smode=s1&if01=" + strAddr + "&if02=400&if03=m&if04="+intPosNum;
	new net.ContentLoader("MJ_GetPosition.asp", parsePosition, null, "POST", strParams);
}

//----------------------------------------------------------------------------------
// 目    的 : 處理定位結果。
// 輸 入 值 :
// 傳 回 值 : 顯示定位點位置,以及紀錄定位點資訊。
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/12    建立(Jimmy)
//----------------------------------------------------------------------------------
function parsePosition() {
	ShowMapProcTest("");
	
	var xmlDoc = this.req.responseXML;
	var elPoi = xmlDoc.getElementsByTagName("poi")[0]; //-- 取得poi節點
	var atsPoi = elPoi.attributes;
	var dblX = atsPoi.getNamedItem("x").value;
	var dblY = atsPoi.getNamedItem("y").value;
	var dblLeft = atsPoi.getNamedItem("left").value;
	var dblTop = atsPoi.getNamedItem("top").value;
	var dblRight = atsPoi.getNamedItem("right").value;
	var dblBottom = atsPoi.getNamedItem("bottom").value;
	var strMemo = atsPoi.getNamedItem("memo").value;
	var strType = atsPoi.getNamedItem("type").value;
	var intPosNum = atsPoi.getNamedItem("poscount").value;
	
	if (isNaN(dblX) == false && isNaN(dblY) == false && dblX!="" && dblY!="") {
        switch(strType) {
            case "s":
                makeStartPosition(dblX, dblY, true);;
                break;
            case "m":
                makeMiddlePosition(dblX, dblY, true, intPosNum);
                break;
            case "e":
                makeEndPosition(dblX, dblY, true);
                break;
        }
	} else {
		alert("無法定位至您所輸入的定址，請輸入完整地址(至少輸入至鄉鎮).");
		return;
	}
	
	if (isNaN(dblLeft) == false && isNaN(dblTop) == false && isNaN(dblRight) == false && isNaN(dblBottom) == false) {
		dblLeft = Number(dblLeft);
		dblTop = Number(dblTop);
		dblRight = Number(dblRight);
		dblBottom = Number(dblBottom);
		
		ShowMap(dblLeft, dblTop, dblRight, dblBottom);
	}
}

//----------------------------------------------------------------------------------
// 目    的 : 重設起點。
// 輸 入 值 :
// 傳 回 值 : 將儲存起點 XY 座標的 Hidden 的 Value 清空。
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/20    建立(Jimmy)
//----------------------------------------------------------------------------------
function resetStartPosition() {
    var objHidden = document.getElementById("hidSPoint");
    if(objHidden) {
        objHidden.value = "";
        refreshInsertShowObject();
    } else {
        alert("找不到此控制項!");
    }
    objHidden = null;
}

//----------------------------------------------------------------------------------
// 目    的 : 重設終點。
// 輸 入 值 :
// 傳 回 值 : 將儲存終點 XY 座標的 Hidden 的 Value 清空。
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/20    建立(Jimmy)
//----------------------------------------------------------------------------------
function resetEndPosition() {
    var objHidden = document.getElementById("hidEPoint");
    if(objHidden) {
        objHidden.value = "";
        refreshInsertShowObject();
    } else {
        alert("找不到此控制項!");
    }
    objHidden = null;
}

//----------------------------------------------------------------------------------
// 目    的 : 重設中繼點。
// 輸 入 值 : intPosNum 整數,中繼點編號
// 傳 回 值 : 將儲存中繼點 XY 座標的 Hidden 的 Value 清空。
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/12    建立(Jimmy)
//----------------------------------------------------------------------------------
function resetMiddlePosition(intPosNum) {
    var objHidden = document.getElementById("hidMPoint"+intPosNum);
    if(objHidden) {
        // 'true' possible value specifies removal of childNodes also
        objHidden.removeNode(true);
        var objHidAddr = document.getElementById("hidMPointAddr"+i);
        if (objHidAddr) objHidAddr.removeNode(true);
        
        mintMidPosCount--;
        
        refreshInsertShowObject();
    } else {
        alert("找不到此控制項!");
    }
    objHidden = null;
}

//----------------------------------------------------------------------------------
// 目    的 : 依據來源的 X,Y 座標取得道路名稱。
// 輸 入 值 : dblX 浮點數,來源 X 座標
//            dblY 浮點數,來源 Y 座標
//            dblTolerance 浮點數,容許值
//            strPosType 字元,定點類型,若為「s」,表示是起點;若為「m」,表示是中繼點;若為「e」,表示是終點
//            intPosNum 整數,定點編號
// 傳 回 值 : 呼叫 MJ_GetWhereIsAdm.asp 執行取得道路名稱,執行結果交由 parseWhereIsAdm() function 處理。
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/23    建立(Jimmy)
//----------------------------------------------------------------------------------
function showWhereIsAdm(dblX, dblY, dblTolerance, strPosType, intPosNum) {
    ShowMapProcTest("取得位置資料中, 請稍候....");
    
    var strParams = "smode=s1&if01=" + dblX + "&if02=" + dblY + "&if03=" + dblTolerance + "&if04=" + strPosType + "&if05=" + intPosNum;
	new net.ContentLoader("MJ_GetWhereIsAdm.asp", parseWhereIsAdm, null, "POST", strParams);
}

//----------------------------------------------------------------------------------
// 目    的 : 處理取得道路名稱的結果。
// 輸 入 值 :
// 傳 回 值 : 顯示道路名稱在指定的文字方塊。
// 日    期 :    COMMENT
// ----------    -------
// 2007/11/23    建立(Jimmy)
//----------------------------------------------------------------------------------
function parseWhereIsAdm() {
    ShowMapProcTest("");
	
	var xmlDoc = this.req.responseXML;
	var elPoi = xmlDoc.getElementsByTagName("poi")[0]; //-- 取得poi節點
	var atsPoi = elPoi.attributes;
	var dblX = atsPoi.getNamedItem("x").value;
	var dblY = atsPoi.getNamedItem("y").value;
	var strAdmName = atsPoi.getNamedItem("admname").value;
	var strRoad = atsPoi.getNamedItem("road").value;
	var strType = atsPoi.getNamedItem("type").value;
	var intPosNum = atsPoi.getNamedItem("poscount").value;
	
	if (strAdmName != "" && strRoad != "") {
        var strAddr = strAdmName + strRoad;
        var fraSearch = document.getElementById("ifrNavigate");
        var winFrame = fraSearch.contentWindow;
        switch(strType) {
            case "s":
                try {
                    if (winFrame) winFrame.showStartAddr(strAddr);
                } catch(e) {
                    //
                }
                makeStartPositionAddr(strAddr);
                break;
            case "m":
                try {
                    if (winFrame) winFrame.showMiddleAddr(strAddr, intPosNum);
                } catch(e) {
                    //
                }
                makeMiddlePositionAddr(strAddr, intPosNum);
                break;
            case "e":
                try {
                    if (winFrame) winFrame.showEndAddr(strAddr);
                } catch(e) {
                    //
                }
                makeEndPositionAddr(strAddr);
                break;
        }
        winFrame = null;
        fraSearch = null;
	} else {
		alert("您點選的位置附近找不到道路資料!");
	}
}

//-- 隱藏過場DIV
function TempDivHidden() {
    var divTemp = document.getElementById("divTemp");
    //divTemp.style.visibility = "hidden";
    divTemp.style.display = "none";
    divNavigate.style.display = "inline";
    divTemp = null;
}
//-- 顯示過場DIV
function TempDivVisible() {
    var divNavigate = document.getElementById("divNavigate");
    var divTemp = document.getElementById("divTemp");
    
    //divNavigate.style.zIndex = 1;
    //divTemp.style.zIndex = 2;
    
    //divTemp.style.visibility = "visible";
    divNavigate.style.display = "none";
    divTemp.style.display = "inline";
    
    divNavigate = null;
    divTemp = null;
}