﻿var e98map;
var map;
var HTMLCollection;
var LATCollection;
var LNGCollection;
var IDCollection;
if (!e98map) e98map = {};

e98map.BtnHiddenInit = function() {
    $("#BtnHiddenGroup").toggle(function() {
        $("#slider").css('bottom', '-6px');
        $("#slider").css('top', 'auto');
        $("#map1").css('height', '615px');
        $("#ListHidden").hide();
        map.checkResize();
    },
	        function() {
        $("#slider").css('top', '370px');
        $("#slider").css('bottom', 'auto');
        $("#map1").css('height', '352px');
        $("#ListHidden").show();
        map.checkResize();
    })
    $("#BtnHiddenShop").toggle(function() {
        $("#slider").css('left', '0px');
        $(".barWrap").hide();
        $("#map1").css('margin-left', '8px');
        $("#map1").css('width', '802px');
        map.checkResize();
    },
	        function() {
        $("#slider").css('left', '275px');
        $(".barWrap").show();
        $("#map1").css('margin-left', '283px');
        $("#map1").css('width', '527px');
        map.checkResize();
    })
    //轉寄
    $("#MapForward").toggle(function() {
        var strHref = window.location.href;
        if (strHref.indexOf("#") > -1)
            strHref = strHref.substring(0, strHref.indexOf("#")); //移除 fragment
        var center = map.getCenter();
        var mapBounds = map.getBounds();
        var zoom = map.getBoundsZoomLevel(mapBounds);
        $("#TextLink").val(strHref + "#" + center.lat() + "," + center.lng() + "," + zoom);
        $("#Link").show();
        $("#TextLink").select();
    },
        function() {
        $("#Link").hide();
    });
    $("#TextLink").click(function() {
        this.select();
    });
}

e98map.MapInit = function(divID, ShowLargeMapControl, ShowSmallMapControl, ShowTypeControl, LATCenter, LNGCenter, Scale) {
    map = new GMap2(document.getElementById(divID));
    map.setCenter(new GLatLng(LATCenter, LNGCenter), Scale);

    var strFragment = window.location.hash;  // lat,lng,zoom
    if (strFragment.length > 0) {
        strFragment = strFragment.substring(1, strFragment.length);
        var strCol = strFragment.split(",");
        if (strCol.length == 3) {
            var lat = parseFloat(strCol[0]);
            var lng = parseFloat(strCol[1]);
            var zoom = parseInt(strCol[2]);
            if (lat > 0 && lng > 0 && zoom > 0 && zoom <= 18) {
                map.setCenter(new GLatLng(lat, lng), zoom);
            }
        }
    }

    if (ShowLargeMapControl == true)
        map.addControl(new GLargeMapControl);
    if (ShowSmallMapControl == true)
        map.addControl(new GSmallMapControl());
    if (ShowTypeControl == true)
        map.addControl(new GMapTypeControl());
    var icon = new GIcon(G_DEFAULT_ICON);
    icon.image = "http://www.e98.org.tw/maps/images/icon-map-shadow.gif";
    icon.iconSize = new GSize(18, 25);
    markerOptions = { icon: icon };
}

e98map.CreatePoint = function(Total, LATCollection, LNGCollection) {
    for(var i = 0; i < Total; i++) {
        var latlng = new GLatLng(LATCollection[i], LNGCollection[i]);
        map.addOverlay(new GMarker(latlng, markerOptions));
    }
}

e98map.CreateMarker = function(latlng, id, html, isSetCenter) {

var marker = new GMarker(latlng, markerOptions);
    marker.value = id;
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(html);
    });
    map.addOverlay(marker);
    if (isSetCenter == true) {
        
        map.setCenter(latlng, 15);
        marker.openInfoWindow(html);
       
    }
}


e98map.CreatePointWithInfoWindow = function(Total) {
    for (var i = 0; i < Total; i++) {
        var latlng = new GLatLng(LATCollection[i], LNGCollection[i]);
        e98map.CreateMarker(latlng, IDCollection[i], $("#Div_" + IDCollection[i]).html(), false);
        $("#Link_" + IDCollection[i]).bind('click',{ LAT: LATCollection[i], LNG: LNGCollection[i], TAGID: IDCollection[i] },
            function(e)
            {
                e98map.CreateMarker(new GLatLng(e.data.LAT, e.data.LNG), e.data.TAGID, $("#Div_" + e.data.TAGID).html(), true);
                $.get('ShopHandler.ashx',{id:e.data.TAGID});
            });
    }
}

e98map.CreateLandMarkMarker = function(LandMark) {
    for (var i = 0; i < LandMark.length; i++) {
        var latlng = new GLatLng(LandMark[i].LAT, LandMark[i].LNG);
        e98map.CreateMarker(latlng, LandMark[i].ID, LandMark[i].HTML, false);
    }
}

e98map.GetLandMark = function() {
    var mapBounds = map.getBounds();
    var zoom = map.getBoundsZoomLevel(mapBounds);
    if (zoom > 14) {
        var boundSouthWest = mapBounds.getSouthWest();//mapbounds
        var boundNorthEast = mapBounds.getNorthEast();
        $.ajax({
            type: "POST",
            url: "LandMarkHandler.ashx",
            data: "nelng=" + boundNorthEast.lng() + "&nelat=" + boundNorthEast.lat() + "&swlng=" + boundSouthWest.lng() + "&swlat=" + boundSouthWest.lat(),
            dataType: "text",
            success: function(msg) {
                if (msg != "abort") {
                    var LandMark = Sys.Serialization.JavaScriptSerializer.deserialize(msg);
                    if (LandMark.length > 0)
                        e98map.CreateLandMarkMarker(LandMark);
                }
            }
        });
    }
}

e98map.RecreatePoint = function() {
    //map.clearOverlays();
    var count = $("input[name$='HdfCount']").val()
    if (count != "0") {
        LATCollection = new Array();
        LNGCollection = new Array();
        IDCollection = new Array();
        var latcol = $("input[name$='HdfLAT']").val().split(",");
        var lngcol = $("input[name$='HdfLNG']").val().split(",");
        var idcol = $("input[name$='HdfID']").val().split(",");

        for (var i = 0; i < latcol.length; i++)
            LATCollection[i] = parseFloat(latcol[i]);
        for (var i = 0; i < lngcol.length; i++)
            LNGCollection[i] = parseFloat(lngcol[i]);
        for (var i = 0; i < idcol.length; i++)
            IDCollection[i] = idcol[i];

        e98map.CreatePointWithInfoWindow(count);
    }
}

e98map.ShopMapInit = function() {
    map.addControl(new GOverviewMapControl());
    // GEvent.addListener(map, "moveend", function() {        
    //        map.clearOverlays();  //先把所有的Marker清掉
    //        e98map.RecreatePoint();   //重新顯示Marker
    //        
    e98map.GetLandMark();
    //    });
    e98map.RecreatePoint();
     
}