var map;
var geocoder;
var baseIcon = new GIcon(G_DEFAULT_ICON);

var segundoIntento = '';
var zoomMap = 6;
var error = '';

var pointMod = false;

var capa;

function addAddressToMap(response) {
	if (!response || response.Status.code != 200) {
        if(segundoIntento !=''){
            zoomMap = 12;
            geocoder.getLocations(segundoIntento, addAddressToMap);
            segundoIntento = '';
        }else{
            zoomMap = 6;
            geocoder.getLocations("spain", addAddressToMap);
            if(error != ''){
                $('#'+error).html("No se ha podido encontrar la dirección especificada");
            }
        }
        return false;
 	} else {
 		var place = response.Placemark[0];
 		point = new GLatLng(place.Point.coordinates[1],
 		place.Point.coordinates[0]);
		map.setCenter(point, zoomMap);

 		var marker = new GMarker(point, {draggable: pointMod});
        if(pointMod){
            GEvent.addListener(marker, "dragend", function() {
                var center = marker.getPoint();
                center = center.toString();
                $("#coordenadasMapa").val(center.slice(1,-1));
            });
        }
 		map.addOverlay(marker);
        if(capa != "mapHerramientas")
            GEvent.addListener(marker, "click", function() {
                marker.openInfoWindowHtml(place.address);
            });
        
		return marker;
 	}
}

function showLocation(direccion) {
	var address = direccion;
	geocoder.getLocations(address, addAddressToMap);
}

function init(capaResultado){
    if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById(capaResultado));
        
		if(capa != "mapHerramientas") map.addControl(new GLargeMapControl());
        else  map.addControl(new GSmallZoomControl());

		geocoder = new GClientGeocoder();
	}
}

function carga(direccion, provincia, coordenadas, zoom, capaResultado, capaError, modificable) {
    zoomMap = zoom;
    error = capaError;
    pointMod = modificable;
    capa = capaResultado;

    init(capaResultado);
    
    if(coordenadas == 0){
        segundoIntento = provincia;
        showLocation(direccion);
    }else{
        showLocation(coordenadas);
    }
}
$(window).unload(function(){
	GUnload();
});