// Módulo para la descarga de plantillas desde el servidor y su
// posterior manipulación.

// Función que realiza la petición al servidor.

function plt_RealizarPeticion(marca, url) {
  // Añadimos el Session ID a la URL.
  var url_con_sid = url + "&sid=" + getCookie("sesion_phpbb");
  
	// Generamos el texto del "cargando".
	var capa = 
		"<div class=\"plt_icono_img\"><img style=\"border: 0;\" src=\"" + 
			GEOK_DIR_BASE + "/" + GEOK_PATH_IMAGENES + "/" + GEOK_ICONO_CARGANDO + "\" /></div>" + 
		"<div class=\"plt_icono_txt\">Cargando...</div>";

	// Abrimos la nube con el "cargando".
	marca.openInfoWindowHtml(capa, "");
	
	// Lanzamos la petición usando las funciones de Google Maps.
	GDownloadUrl(url_con_sid, function(data, responseCode) {
		var xml = GXml.parse(data);
		var nodo_plantilla = xml.getElementsByTagName("plantilla");		
		var nodo_estado = xml.getElementsByTagName("estado");
		var plantilla;
		
		// Obtenemos la plantilla y el estado de la marca.
		plantilla = (typeof(nodo_plantilla[0]) == "undefined" ? 
				"" : nodo_plantilla[0].firstChild.data);
		
		// Cerramos la nube y la volvemos a abrir
		// con el nuevo contenido, para que la nube
		// tenga el tamaño correcto.
		marca.closeInfoWindow();
		marca.openInfoWindowHtml(plantilla, "");

        //Solo se llamará a geocoder si la plantilla es para crear una marca
        if (nodo_plantilla[0].getAttribute("id") == 0) {
            geocoder.getLocations(marca.getLatLng(), function(response) {
                var place = response.Placemark[0];
                document.form_alta_marca.name.value = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName;
            });
        }

		// Si se retorna el estado de la marca,
		// es una plantilla de admin. de una marca existente,
		// con lo que inicializaremos los botones de las
		// acciones. 
		// La comprobación con el typeof falla en IE...
		if (typeof(nodo_estado[0]) != "undefined") {
			var estado = parseInt(nodo_estado[0].firstChild.data);
			if (estado >= 0) nube_inicializar_botones_admin(estado);		
		}
	});		
}

// Función para obtener una plantilla del servidor.

function plt_ObtenerFormAltaMarca(marca, id_forum) {
	var pagina = GEOK_DIR_BASE + "/" + GEOK_PATH_PLANTILLAS + "/";
	var params = "id=1&lon=" + marca.getLatLng().lng() + 
		"&lat=" + marca.getLatLng().lat() + "&cat=" + id_forum;
	plt_RealizarPeticion(marca, pagina + "?" + params);	
}

// Función para obtener el contenido de la nube de una marca existente. 

function plt_ObtenerContenidoMarca(marca, id_forum, id_topic) {
	var pagina = GEOK_DIR_BASE + "/" + GEOK_PATH_PLANTILLAS + "/";
	var params = "id=3&t=" + id_topic + "&f=" + id_forum;
	plt_RealizarPeticion(marca, pagina + "?" + params);	
}


