var map;
var imageMarker = "http://maps.google.com/mapfiles/icon_green.png";
var gResponse;
var icon_green = new GIcon();
icon_green.image = imageMarker
icon_green.shadow = "http://maps.gstatic.com/intl/en_ALL/mapfiles/shadow50.png";
icon_green.iconSize = new GSize(24, 38);
icon_green.shadowSize = new GSize(37, 34);
icon_green.iconAnchor = new GPoint(9, 34);
//icon_green.infoWindowAnchor = new GPoint(5, 1);

function initialize(lat,lng,zoom,src,msgView) {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("googletab"));
        var pos = new GLatLng(lat,lng);
        map.setCenter(pos, zoom);
        map.setUIToDefault();
        map.removeMapType(G_PHYSICAL_MAP);
        map.addControl(new GOverviewMapControl());
        map.disableScrollWheelZoom();
        map.enableContinuousZoom();
    }
    //    var markerPos = new GLatLng(13.764823,100.538281);
    var markerPos = new GLatLng(lat,lng);
    var marker;
    if (src == "edit") {
        marker = new GMarker(markerPos,{draggable: true,icon: icon_green});
        GEvent.addListener(marker, "dragend", function(overlay,latlng) {
            var currPos = marker.getLatLng();
            var currentZoom = map.getZoom();
            map.setCenter(currPos,currentZoom);
            document.getElementById("lat").value = currPos.lat().toFixed(6);
            document.getElementById("lng").value = currPos.lng().toFixed(6);
        });
        document.getElementById("lat").value = marker.getLatLng().lat().toFixed(6);
        document.getElementById("lng").value = marker.getLatLng().lng().toFixed(6);
        map.addOverlay(marker);
        map.enableGoogleBar();
    } else {
        marker = new GMarker(pos,{title: ""});
        if(msgView != null &&  msgView != ""){
            marker = new GMarker(pos,{title: "คลิกเพื่อแสดงรายละเอียด"});
            GEvent.addListener(marker, "click", function() {
                map.setCenter(pos);
                map.openInfoWindowHtml(pos, msgView);
            });
        }
        map.addOverlay(marker);
    }
}

function showLatLng(){
    var lat = document.getElementById("lat").value;
    var lng = document.getElementById("lng").value;
    var lat1 = Math.abs( Math.round(lat * 1000000.));
    if(lat1 > (90 * 1000000) || lat == "") {
        alert(' Latitude must be between -90 to 90. ');  document.getElementById("lat").value='';
        return;
    }
    var lng1 = Math.abs( Math.round(lng1 * 1000000.));
    if(lng1 > (180 * 1000000) || lng == "") {
        alert(' Longitude must be between -180 to 180. ');  document.getElementById("lng").value='';
        return;
    }
    var pos = new GLatLng(lat,lng);
    map.setCenter(pos,13);
    var newMarker = new GMarker(pos,{draggable: true,icon: icon_green});
    GEvent.addListener(newMarker, "dragend", function(overlay,latlng) {
        var pt = newMarker.getPoint();
        map.panTo(pt);
        document.getElementById("lat").value = pt.lat().toFixed(6);
        document.getElementById("lng").value = pt.lng().toFixed(6);
    });
    map.clearOverlays();
    map.addOverlay(newMarker);
}

function placeMarker() {
    var marker;
    var draggingMarker = true;
    var noMore = false;
    var mouseMove = GEvent.addListener(map, "mousemove", function(cursorPoint){
        if(!noMore){
            marker = new GMarker(cursorPoint,{
                draggable:true,
                autoPan:false
            });
            map.addOverlay(marker);
            marker.setImage(imageMarker);
            noMore = true;
            GEvent.addListener(marker, "drag", function(markerPoint){
                if(!map.getBounds().containsLatLng(markerPoint)){
                    map.removeOverlay(marker);
                }
            });
        }
        if(draggingMarker){
            marker.setLatLng(cursorPoint);
        }
    });

    var listener = GEvent.addListener(map, "click", function(overlay, latlng) {
        map.clearOverlays();
        if (latlng) {
            draggingMarker = false;
            GEvent.removeListener(mouseMove);
            GEvent.removeListener(listener);
            var marker = new GMarker(latlng, {
                draggable: true,icon: icon_green
            });
            map.addOverlay(marker);
            marker.setImage(imageMarker);
            updateMarker(marker);

            GEvent.addListener(marker, "dragend", function() {
                updateMarker(marker);
            });
            GEvent.addListener(marker, "click", function() {
                updateMarker(marker);
            });
        }
    });
}

function updateMarker(marker){
    var latlng = marker.getPoint();
    document.getElementById("lat").value = latlng.lat().toFixed(6);
    document.getElementById("lng").value = latlng.lng().toFixed(6);
}

