﻿//全域變數
var myMap;
var DivManager;
var LmManagerList = new Array();
var NIManager = new NaviIconManager();
var ClmManager = new CustomLandmarkManager();//自訂地標管理物件
var ShortestPathId='';
var GPSLabel;
var LandmarkChecked = new Array();
var ListGroupId = 0;
var ContentStoreIndex = 0;

//自訂地標管理物件
var ClmListManager = new CustomLandmarkListManager();
//Host地標管理物件
var HostListManager = new CustomLandmarkListManager();

var PushContentPlacardID=0;
var PushContentobj = new Array();

var RoadNameListBox;
var HLTown = new TownData();
var TownObj;

var navipath;
var MLManager;
var Ferrari;
var AjaxLabel;
var SimNaving =false;
var SimNavingID;

/*wiljoey*/
//var WebSitePath="http://localhost/mhl-tpc/";


function CustomLandmarkListManager()
{
    this.obj = new Object();
    this.IdList = new Array();
}


function CustomLandmarkManager()
{
    this.Name = new Object();
    this.Describe = new Object();
    this.X = new Object();
    this.Y = new Object();
}

//Page_Load
function OnLoad()
{

    DivManager = new DivObject();
    CreateFerrari();
    myMap = new GWMap(DivManager.Map);
    //啟用右鍵選單
    myMap.SwitchRCMenu(true);
    var MenuContent = '<div id="RCMenu"><span class="bLine" onclick="AddCustomLandMark();this.parentNode.parentNode.style.visibility=\'hidden\';">自訂地標</span><span class="bLine" onclick="SetStartPt();this.parentNode.parentNode.style.visibility=\'hidden\';">設為起點</span><span class="bLine" onclick="SetEndPt();this.parentNode.parentNode.style.visibility=\'hidden\';">設為終點</span><span class="bLine" onclick="ClearAllTempIcon();this.parentNode.parentNode.style.visibility=\'hidden\';">清除地標</span><span class="bLine" onclick="this.parentNode.parentNode.style.visibility=\'hidden\';">關閉選單</span></div>';
    //var MenuContent = CreateRCMenu(false);
    myMap.SetRCMenuContent(MenuContent); 
    myMap.SetCBFunction('RClickEvent',setTempXY);
    //顯示中心十字
    //myMap.ShowCrossPoint(true);
    myMap.MoveToRXY(121.59149089,24.01699104,4);
    //myMap.MoveToRXY(121.27371300263317,24.134069801279235,6);
    //地圖移動時,更新中心點坐標
    myMap.SetCBFunction('MapMove',myMapMoved);
    myMap.SetCBFunction('MapDragOver',myMapDragOver);
    ReSize();
    myMap.MoveToRXY(121.59149089,24.01699104,4);
    
    //NIManager.StartIconID = myMap.AddPlacard(1,NIManager.StartIcon,NIManager.ShadowIcon, 1, NIManager.StartIconX,NIManager.StartIconY,'','','');
    //NIManager.EndIconID = myMap.AddPlacard(1,NIManager.EndIcon,NIManager.ShadowIcon, 1, NIManager.EndIconX,NIManager.EndIconY,'','','');
    //myMap.ReflashPlacard();
    
     MLManager = new MenuListManage();
     
    //啟動移至鄉鎮中心
    var TownCode = getPara("town");
    if(TownCode !="")
    {
        if(!HLTown[TownCode])return;
        TownObj = HLTown[TownCode];
        
        myMap.MoveToRXY(TownObj.CenterX,TownObj.CenterY,TownObj.Zoom);
        setTimeout("ShowTownLabel()",3000);

    }
    //啟動移至商家
    var StoreCode = getPara("store");
    if(StoreCode !="")
    {
        //alert(StoreCode);
        LandMarkWS.GetStoreDataByDiRid(StoreCode, GetStoreSuccess, OnError, null, null)
    }
    
    var mq = document.getElementById("marquee");
    var mq_w = parseInt(mq.style.width);
    document.getElementById("lblPushContent").style.left = mq_w + "px";
    setTimeout("pc_tick()" ,1000);
    //setTimeout("txt_PushContent()",2000);

    //處理導航告示牌事件
    //myMap.SetCBFunction("PLMouseOut", PL_MouseOut);
    myMap.SetCBFunction("PlacardClickEvent", PL_Click)
    
}

var plto = null;

function PL_Click(PLID, status) {
    if (Ferrari.style.visibility == "visible" ) {
        clearTimeout(plto);
        plto = setTimeout("PL_TimeOut()", 10000);
        
    }
}

function PL_TimeOut() {
        myMap.ClosePlacardK3();
        clearTimeout(plto);
}
function PL_MouseOut(PLID) {
    if (Ferrari.style.visibility == "visible") {
        myMap.ClosePlacardK3();
    }
}



function CreateFerrari()
{
    //DivManager.Map
    Ferrari = document.createElement("img");
    Ferrari.src = "IMAGES/car.gif";
    Ferrari.style.position = "absolute";
    Ferrari.style.left = ((DivManager.Map.clientWidth - 30) / 2)+"px";
    Ferrari.style.top = ((DivManager.Map.clientHeight - 30) / 2) + "px";
    //將圖片移至告示牌下方
    Ferrari.style.zIndex = 85;
    Ferrari.style.cursor = "pointer";
    Ferrari.style.visibility="hidden";
    Ferrari.unselectable="on";
    //document.getElementsByTagName("body")[0].appendChild(Ferrari);

    DivManager.Map.appendChild(Ferrari);
}
function ChangeFerrariSize()
{
    
}       
    
function MenuListManage()
{
    this.Prex = "IMAGES/PLATE/"
    this.FrameObj = $get("MainFrame");
    this.ImageObj = [$get('imgLandmark'), $get('imgList'), $get('imgContent'), $get('imgCustomLandmark'), $get('imgNavigation')];
    this.Origin = ["Landmark.jpg", "List.jpg", "Content.jpg", "CustomLandmark.jpg", "Navigation.jpg"];
    this.Select = ["Landmark_s.jpg", "List_s.jpg", "Content_s.jpg", "CustomLandmark_s.jpg", "Navigation_s.jpg"];
    this.FrameSrc = ["SYS/TPC/LandMark.aspx", "SYS/TPC/DetailList.aspx?CenterXY="+document.getElementById("lblCenter").value, 'SYS/TPC/StoreContent.aspx?StoreIndex='+ContentStoreIndex, "SYS/TPC/CustomLandmark2.aspx", "SYS/TPC/Navigation.aspx"]
    
}

function GetStoreSuccess(obj)
{
    if(obj.rows.length<1) return;
    var data = obj.rows[0];
    
    var Describe = data.DiSummary;
    Describe = (Describe.length>100)?(Describe.substr(0,100)+'........'):Describe;
    var tips = '<span style="font-size:12px;"><span class="dtName">'+data.DiName +'</span>';
    
    tips+= '<div class="dtDescribe">'+Describe+'</div>';
    tips+= '電話：'+data.DiTelephone+'<br />';
    tips+= '地址：'+data.DiCity+data.DiTown+data.DiStreet+'<br />';
    tips+= '網站：<a href=http://www.m-hl.com.tw/Default.aspx?tabid=247&ItemID='+data.DiRid+' target="_blank">[商家網站]</a></span>';
    tips += '<img src="IMAGES/DialogClose.gif" class="DialogClose" onclick="myMap.ClosePlacardK3()" alt="關閉" />'
    //產生圖釘
    var gIcon = new GWMapIcon("SYS/TPC/IMAGES/store.gif", 30, 30, 15, 30);
    var gShadow = new GWMapIcon("SYS/TPC/IMAGES/blank.png", 1, 1, 1, 1);
    NIManager.StoreID = myMap.AddPlacard(3, gIcon, gShadow, "1", data.Map_X, data.Map_Y, tips,"","");
    if(data.Map_X>130 || data.Map_X<110 || data.Map_Y>30 || data.Map_Y<20)
    {
        alert("商家 ["+data.DiName+"] 尚未登錄坐標資訊!");
        return;
        }
    myMap.MoveTo(data.Map_X, data.Map_Y,false);
    myMap.ReflashPlacard();

}


function ShowTownLabel()
{
    for(var i=0;i<5;i++)
        setTimeout("BlinkTownLabel()",i*1000);
}

//閃爍鄉鎮label
function BlinkTownLabel()
{
    var TownLabelId = myMap.AddPlacard(2, NIManager.StartIcon, NIManager.EndIcon, 1, TownObj.CenterX,TownObj.CenterY, "<span style='color:blue; background-color:#ccddff' >.: "+TownObj.Name+" :.</span>", 5);
    myMap.ReflashPlacard();
    setTimeout("myMap.RemovePlacard("+TownLabelId+");myMap.ReflashPlacard();",500);
}

//地圖移動事件
function myMapMoved(scale,sx,sy,ex,ey)
{
    
    //更新中心點坐標
    var xx = ((sx + ex) / 2).toString();
    var yy = ey.toString();
    //var yy = ((sy + ey)/2).toString();
    //這裡有Bug!!!
        
    var centerXY = xx + "," + yy;
    document.getElementById("lblCenter").value = centerXY;
    if (MLManager) {
        MLManager.FrameSrc[1] = "SYS/TPC/DetailList.aspx?CenterXY=" + centerXY;
    }
    //每次地圖位置變更，觸發PushContent更新
    //txt_PushContent(); 
    CheckLastPC()
}

var PCTime = new Date();
//
function CheckLastPC()
{
    var now = new Date();
    var TimeDiff = now- PCTime;
    if (TimeDiff>2000)
    {
    //alert("pushed");
        txt_PushContent();
        PCTime= new Date();
    }
}

//拖曳地圖後事件
function myMapDragOver(scale,sx,sy,ex,ey)
{
    txt_PushContent();
}


//滑鼠右鍵點擊事件
function setTempXY(x,y)
{
    NIManager.TempIconX = x;
    NIManager.TempIconY = y;
}
//右鍵選單,設定起始點
function SetStartPt()
{
    myMap.RemovePlacard(NIManager.StartIconID);
    NIManager.StartIconX = NIManager.TempIconX;
    NIManager.StartIconY = NIManager.TempIconY;
    NIManager.StartIconID = myMap.AddPlacard(1,NIManager.StartIcon,NIManager.ShadowIcon, 1, NIManager.StartIconX,NIManager.StartIconY,'','','');
    myMap.ReflashPlacard();
}
//右鍵選單.設定終點
function SetEndPt()
{
    myMap.RemovePlacard(NIManager.EndIconID);
    NIManager.EndIconX = NIManager.TempIconX;
    NIManager.EndIconY = NIManager.TempIconY;
    NIManager.EndIconID = myMap.AddPlacard(1,NIManager.EndIcon,NIManager.ShadowIcon, 1, NIManager.EndIconX,NIManager.EndIconY,'','','');
    myMap.ReflashPlacard();
}

//地圖中心點標注
function SetMapCenterPt(x,y) {
    myMap.RemovePlacard(NIManager.MapCenterID);
    NIManager.MapCenterX = parseFloat(x);
    NIManager.MapCenterY = parseFloat(y);
    //NIManager.MapCenterID = myMap.AddPlacard(1, NIManager.MapCenterIcon, NIManager.ShadowIcon, 1, NIManager.MapCenterX, NIManager.MapCenterY, '', '', '');
    NIManager.MapCenterID =  myMap.AddPlacard(1,NIManager.MapCenterIcon, NIManager.ShadowIcon, 1, x, y,'','','');
    

    myMap.ReflashPlacard();
}

// 當 Web 服務呼叫失敗時就會執行此一失敗回呼函式，並將錯誤物件傳遞給它。
function OnError(error) 
{
return;
//    alert("錯誤訊息：" + error.get_message()
//        + "\n堆疊追蹤結果：" + error.get_stackTrace()
//        + "\n狀態碼：" + error.get_statusCode()
//        + "\n例外型態：" + error.get_exceptionType()
//        + "\n逾時狀態：" + error.get_timedOut());
}

//花蓮鄉鎮中心資料
function TownData()
{
    this.u01 = {Name:'花蓮市',CenterX:121.607283984395, CenterY:23.9969654352, Zoom:4};
    this.u02 = {Name:'光復鄉',CenterX:121.435145750448, CenterY:23.6466850592, Zoom:5};
    this.u03 = {Name:'玉里鎮',CenterX:121.317057105881, CenterY:23.3305711863, Zoom:5};
    this.u04 = {Name:'新城鄉',CenterX:121.613887407704, CenterY:24.0559998723, Zoom:5};
    this.u05 = {Name:'吉安鄉',CenterX:121.564675445489, CenterY:23.9555751376, Zoom:5};
    this.u06 = {Name:'壽豐鄉',CenterX:121.534166520189, CenterY:23.8447781652, Zoom:6};
    this.u07 = {Name:'鳳林鎮',CenterX:121.469529827630, CenterY:23.7432136053, Zoom:6};
    this.u08 = {Name:'豐濱鄉',CenterX:121.494251348028, CenterY:23.5853295987, Zoom:6};
    this.u09 = {Name:'瑞穗鄉',CenterX:121.407342303699, CenterY:23.5156748433, Zoom:6};
    this.u10 = {Name:'富里鄉',CenterX:121.298074846374, CenterY:23.1968273628, Zoom:6};
    this.u11 = {Name:'卓溪鄉',CenterX:121.180448633847, CenterY:23.3908031379, Zoom:6};
    this.u12 = {Name:'萬榮鄉',CenterX:121.318887682631, CenterY:23.7279147549, Zoom:6};
    this.u13 = {Name:'秀林鄉',CenterX:121.480831645593, CenterY:24.1239424642, Zoom:6};
}

//取得網址列參數
function getPara(name){
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec(window.location.href);
    if( results == null ){
        return "";
    }else{
        return results[1];
    }
}

//清除所有暫存地標
function ClearAllTempIcon()
{
    if(NIManager.StartIconID !== '')
        myMap.RemovePlacard(NIManager.StartIconID)
    if(NIManager.EndIconID !== '')
        myMap.RemovePlacard(NIManager.EndIconID)
    if(NIManager.ClmIconID !== '')
        myMap.RemovePlacard(NIManager.ClmIconID)
    if(NIManager.StoreID !== '')
        myMap.RemovePlacard(NIManager.StoreID)
    if(ShortestPathId!== '')
        myMap.RemovePolyLine(ShortestPathId);
    if (NIManager.MapCenterID !== '') 
        myMap.RemovePlacard(NIManager.MapCenterID);

    NIManager.StartIconX = 0;
    NIManager.StartIconY = 0;
    NIManager.EndIconX = 0;
    NIManager.EndIconY = 0;
    NIManager.ClmIconX = 0;
    NIManager.ClmIconY = 0;

    NIManager.MapCenterX = 0;
    NIManager.MapCenterY = 0;
    
    
    myMap.ReflashPolyLine();
    myMap.ReflashPlacard();
}
