﻿// JScript 檔
var _GoogleMap;
var CenterLng;
var CenterLat;
var WindowHTML;
var MapLevel;

// MapMarkers["Keybuy"][0] = marker
var MapMarkers= { "Keybuy": [], "DGPhoto": [], "Forum": [], "Blog": []};
var ShowMarkers= { "Keybuy": true, "DGPhoto": true, "Forum": true, "Blog": true};

var iconBlog = new GIcon(G_DEFAULT_ICON);
iconBlog.image = "/GMAP/images/marker_34_blue.png";

var iconForum = new GIcon(G_DEFAULT_ICON);
iconForum.image = "/GMAP/images/marker_34_black.png";
//iconForum.shadow = "/GMAP/images/marker_34_yellow.png";
//iconForum.iconSize = new GSize(32, 32);
//iconForum.shadowSize = new GSize(32, 32);

var iconDGPhoto = new GIcon(G_DEFAULT_ICON);
iconDGPhoto.image = "/GMAP/images/marker_34_green.png";
//iconDGPhoto.shadow = "/GMAP/images/marker_34_green.png";
//iconDGPhoto.iconSize = new GSize(32, 32);
//iconDGPhoto.shadowSize = new GSize(32, 32);

var iconKeybuy = new GIcon(G_DEFAULT_ICON);
iconKeybuy.image = "/GMAP/images/marker_34_yellow.png";

function loadGoogleMap() {
    
    if (GBrowserIsCompatible()) {

        _GoogleMap = new GMap2(document.getElementById("mymap"));
        var geocoder = new GClientGeocoder();

        //放控制項
        _GoogleMap.addControl(new GSmallMapControl());
        _GoogleMap.addControl(new GMapTypeControl()); 

        //設定中心點
        var latlng = new GLatLng(CenterLat, CenterLng);
        _GoogleMap.setCenter(latlng, MapLevel);
        
        //建立事件
        GEvent.addListener(_GoogleMap, "moveend", function() {
            reloadMarkers();    
        });

       GEvent.addListener(_GoogleMap, "loaded", function() {
            reloadMarkers();    
        });

        //顯示 Markers
        reputMarkers();

        //放 Anchor Marker
        if(WindowHTML != ""){
            var marker = addMarker(CenterLat, CenterLng, WindowHTML, true, new GIcon(G_DEFAULT_ICON));
            marker.importance = 1; 
        }     
    }
    
    var MapInfo = document.getElementById("MapInfo");
    
    if(MapInfo){
        ShowMapInfo();
    }
}

function addMarker(lat, lng, HTML, IsOpen, icon) {

    //var GIWO = new GInfoWindowOption();
    //GIWO.maxWidth = 100;
    
    //{pixelOffset:new GSize(32,5), maxWidth:540}

	// create point
	var marker = new GMarker(new GLatLng(lat, lng), icon);
	
	_GoogleMap.addOverlay(marker);
	
	if(IsOpen){
	    marker.openInfoWindowHtml(HTML);
	}
	
	//var opts = { maxWidth : 100 };
	// create marker window
	marker.bindInfoWindowHtml(HTML);

	//改成點了才會出現, 以跑來跑去
	//GEvent.addListener(marker, "mouseover", function() {	    
	//    GEvent.trigger(marker,'click')
	//});
	
	return marker;
}

function addMarkerList(group, marker) {
    if (MapMarkers[group]){
        var idx = MapMarkers[group].length
        MapMarkers[group][idx] = marker;
    }
}

function ShowMapInfo(){
    var MapInfo = document.getElementById("MapInfo");
    
    for(var i = 0; i < 19; i++){
        _GoogleMap.setZoom(i)
        var GB = _GoogleMap.getBounds();
        var SW = GB.getSouthWest();
        var NE = GB.getNorthEast();
        
        MapInfo.innerHTML += i + ", " + (NE.lat() - SW.lat()) / 100 +", "  + (NE.lng() - SW.lng()) / 100 + ", " + NE.lng() + "," + SW.lng() + "<br>";
    }
}

function SwitchMarkers(group, checked){
    //alert(group + ":" + checked)
    ShowMarkers[group] = checked;
    toggleMarkers(group);
}

var js;
if (typeof(jsLoader) == 'undefined') var jsLoader = new Object();
function jsImport(url) {
    if (jsLoader[url] != null) return;
    
    js = document.createElement('script');
    js.type = 'text/javascript';
    js.src = url;
    
    // 使用同步處理
    //ie
    js.onreadystatechange = function () {
        if (js.readyState == 'loaded') {
            reputMarkers();
        }
    }

    //ff
    js.onload = function () {
        reputMarkers();
    }


    document.getElementsByTagName('head')[0].appendChild(js);
    jsLoader[url] = url; // or whatever value your prefer
}

function reloadMarkers(){

    var center = _GoogleMap.getCenter();  
    
    var url = document.getElementById("jsMarkers").src;
    //alert(url);    
    url = setQueryStr(url, "L=", _GoogleMap.getZoom());    
    url = setQueryStr(url, "CLA=", center.lat());
    url = setQueryStr(url, "CLN=", center.lng());

    jsImport(url);
    //alert(url);    
}

function reputMarkers()
{
   // 重新打點
    MapMarkers.clear;    
    if (window.putMarkers) {   putMarkers(); }     
    
    // 開關 markers
    toggleMarkers('Blog');
    toggleMarkers('Keybuy');
    toggleMarkers('DGPhoto');
    
    // debug
    //var txt = document.getElementById('txtCenter');
    //txt.value = putMarkers;      
}

function toggleMarkers(group){
    //alert(group + ':' + ShowMarkers[group])
    // 依 group 顯示 Markers
    for (var i = 0; i < MapMarkers[group].length; i++) {
        if (ShowMarkers[group]) 
            { MapMarkers[group][i].show(); } 
        else 
            { MapMarkers[group][i].hide(); }
    } 
}

function setQueryStr(url, name, value)
{
    url = delQueryStr(url, name);
    return url += "&" + name + value;
}
 
function delQueryStr(url, name){
    url = url.toLowerCase();
    var idxS = url.indexOf(name.toLowerCase());
    var idxE = url.indexOf("&", idxS);
    
    //if (idxS > -1) { idxS -= 1; }   
    if (idxE > -1) { idxE += 1; }
    
    //alert(url.substring(idxS, idxE));
    if (idxS > -1)
        { url = url.replace(url.substring(idxS, idxE), ""); }
        
    return url
}
