
/*!
 * GMap
 * Copyright (c) qvsinh@yahoo.com
 *
 */

var domain = window.location.hostname;
var inputPostMapId = 'map';
var inputMapAddressId = 'mapAddress';
var inputMapBoxSearchHtmlId = 'searchMapAddress';
var mapContainerHtmlId = 'mapContainer';
var displayAddressHtmlId = 'displayAddress';
var defaultLat = 21.03420;
var defaultLon = 105.84726;
var defaultZoom = 10;

function callBackGetAddress(response){
    place = response.Placemark[0];
    $('#onMapAddress').html(place.address);
    $('#tempMapLatLongAlert').val("<span style='color: green; font-weight:bold;'>Đã xác định:</span> "+place.address);
//$('#'+displayAddressHtmlId).html("<span style='color: green; font-weight:bold;'>Đã xác định:</span> "+place.address);
}
function getAddress(latlng) {
    $('#mapLatLong').html('Tọa độ: '+latlng);
    $('#tempMap').val(latlng);
    latlng = '('+latlng+')';
    geocoder.getLocations(latlng, callBackGetAddress);
}
function searchAddress(){

    if($('#'+inputMapBoxSearchHtmlId).val()!='' && $('#'+inputMapBoxSearchHtmlId).val()!=' '){
        showAddress($('#'+inputMapBoxSearchHtmlId).val());
    }
}

function loadMap() {
    if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById(mapContainerHtmlId));
        //map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GLargeMapControl());
        var center = new GLatLng(defaultLat,defaultLon);
        map.setCenter(center, defaultZoom);
        geocoder = new GClientGeocoder();
        var marker = new GMarker(center, {
            draggable: true
        });
        map.addOverlay(marker);
        var message = center.lat().toFixed(5) + ',' + center.lng().toFixed(5);
        
        GEvent.addListener(marker, "dragstart", function() {
            map.closeInfoWindow();
        });
        GEvent.addListener(marker, "dragend", function() {
            var point = marker.getPoint();
            map.panTo(point);
        });
        GEvent.addListener(map, "moveend", function() {
            map.clearOverlays();
            var center = map.getCenter();
            var marker = new GMarker(center, {
                draggable: true
            });
            map.addOverlay(marker);
            var message = center.lat().toFixed(5) + ',' + center.lng().toFixed(5);
            getAddress(message);
            
            GEvent.addListener(marker, "dragend", function() {
                var point =marker.getPoint();
                map.panTo(point);
            });
        });
    }
}

function showAddress(address) {
    var map = new GMap2(document.getElementById(mapContainerHtmlId));
//    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    map.addControl(new GLargeMapControl());
    if (geocoder) {
        geocoder.getLatLng(
            address,
            function(point) {
                if (!point) {
                    //alert("Xin loi, Khong biet " + address + ' o dau!');
                    var message = defaultLat + ',' + defaultLon;

                    map.clearOverlays()
                    map.setCenter(point, 14);
                    var marker = new GMarker(point, {
                        draggable: true
                    });
                    map.addOverlay(marker);

                    GEvent.addListener(marker, "dragend", function() {
                        var pt = marker.getPoint();
                        map.panTo(pt);
                    });

                    GEvent.addListener(map, "moveend", function() {
                        map.clearOverlays();
                        var center = map.getCenter();
                        var marker = new GMarker(center, {
                            draggable: true
                        });
                        map.addOverlay(marker);
                        var message = center.lat().toFixed(5) + ',' + center.lng().toFixed(5);
                        getAddress(message);
                        
                        GEvent.addListener(marker, "dragend", function() {
                            var pt = marker.getPoint();
                            map.panTo(pt);
                        });

                    });
                } else {
                    var message = point.lat().toFixed(5) + ',' + point.lng().toFixed(5);
                    getAddress(message);
                    map.clearOverlays()
                    if(address=='ha noi, Vietnam'){
                        map.setCenter(point, 14);
                    }else{
                        map.setCenter(point, 16);
                    }
                    
                    var marker = new GMarker(point, {
                        draggable: true
                    });
                    map.addOverlay(marker);

                    setTimeout('$("#infoMapWindowAddress").html($("#onMapAddress").html())',250);
                    setTimeout('$("#infoMapWindowAddress").html($("#onMapAddress").html())',800);
                    var htmlInfo = '<div style="width:200px;"><b>Địa chỉ</b>: <div id="infoMapWindowAddress" style="padding-left:5px;height:40px;">&nbsp;</div>';
                    htmlInfo = htmlInfo + '<div style="margin-top:10px;text-align:right;"><a href="#" style="float:none;padding-bottom:10px;" title="Lưu lại"><img onclick="$(\'#saveMap\').click();" src="http://'+domain+'/public/themes/rc/images/save_map_1.gif" title="Lưu lại" alt="Lưu lại"></a></div>';
                    htmlInfo = htmlInfo + '</div>';
                    marker.openInfoWindowHtml(htmlInfo);
                    map.addOverlay(marker);

                    GEvent.addListener(marker, "dragstart", function() {
                        map.closeInfoWindow();
                    });

                    GEvent.addListener(marker, "dragend", function() {
                        var pt = marker.getPoint();
                        map.panTo(pt);
                    });

                    GEvent.addListener(map, "moveend", function() {
                        map.clearOverlays();
                        var center = map.getCenter();
                        var marker = new GMarker(center, {
                            draggable: true
                        });
                        map.addOverlay(marker);
                        var message = center.lat().toFixed(5) + ',' + center.lng().toFixed(5);
                        getAddress(message);
                        setTimeout('$("#infoMapWindowAddress").html($("#onMapAddress").html())',250);
                        setTimeout('$("#infoMapWindowAddress").html($("#onMapAddress").html())',800);
                        var htmlInfo = '<div style="width:200px;"><b>Địa chỉ</b>: <div id="infoMapWindowAddress" style="padding-left:5px;height:40px;">&nbsp;</div>';
                        htmlInfo = htmlInfo + '<div style="margin-top:10px;text-align:right;"><a href="#" style="float:none;padding-bottom:10px;" title="Lưu lại"><img onclick="$(\'#saveMap\').click();" src="http://'+domain+'/public/themes/rc/images/save_map_1.gif" title="Lưu lại" alt="Lưu lại"></a></div>';
                        htmlInfo = htmlInfo + '</div>';
                        marker.openInfoWindowHtml(htmlInfo);
                        map.addOverlay(marker);

                        GEvent.addListener(marker, "dragstart", function() {
                            map.closeInfoWindow();
                        });

                        GEvent.addListener(marker, "dragend", function() {
                            var pt = marker.getPoint();
                            map.panTo(pt,function(){
                                $("#windowInfoAddress").html($("#onMapAddress").html());
                            });
                        });
                        
                    });

                }
            }
            );
    }
}
