//array para gadar os marcadores
var marcadores = [];
//array para gardar o html contido das xanelas de cada marcador
var contidosHTML = [];
//array para gardar as URL dos sonidos que se reproduciran en cada xanela
var URLsons = [];

function getNodeText(node){
	return node.text || node.firstChild ? node.firstChild.nodeValue : "";
}

//GL recoller a id da URL do artigo
//ENG get id from the article'URL
//FR récupérer l'id de l'article dans l'URL
function extraerID(url){
	var posicion = url.indexOf("article");
	if (posicion != -1) {
		url = url.substring(posicion + 7);
		posicion = url.indexOf ("&");
		if (posicion != -1) {
			url = url.substring(0,posicion);
		}
	//se non e un artigo de spip que lle dean
	} else {
		url = url.substring(url.length - 4);
	}
	return url;
}

function creaMarcador(point, html, icon, son) {
	//creamos un obxecto GMarker e o gradamos nunha variable
	var marcador = new GMarker(point, icon);
	//engadimos un evento para que ao pulsar no marcador se abra a ventana co html indicado
	GEvent.addListener(marcador, "click", function() {
		marcador.openInfoWindowHtml(html);
		//cando se abre a ventana do marcador executamos as seguintes intsruccions
		GEvent.addListener(map,"infowindowopen", function() {
			if(son){
				//esta parte del codigo enbebe un obxecto flah na ventana creado con flashobject.js
				var fo = new FlashObject(URLbase + "plugins/gis/img_pack/musicplayer.swf?autoplay=true&song_url="+son, "player_x", "17", "17", "6", "#FFFFFF");
				fo.write("player");
			}
		});
	});		
	return marcador;
}




function agregarMarcador (xmlItem, minZoom,  maxZoom, idmanager) {
	//almacenamos en distintas variables la informacion contenida nen los chilNodes de cada item-marcador do xml
	

	var xmlLat = $("geo_lat",xmlItem);
	var xmlLng = $("geo_long",xmlItem);
	var xmlSon = $("enclosure",xmlItem);

	 
		var lat = parseFloat(xmlLat.text());
		var lng = parseFloat(xmlLng.text());
		var id = extraerID($("link",xmlItem).text());
		var html = $("description",xmlItem).text();
		var icon = $("geo_icon",xmlItem).text();
		var son;
		if (xmlSon.length != 0) son = xmlSon.attr("url");
   	

	
	
		//creamos un Gpoint para situar nel o marcador
		var point = new GPoint(lat,lng);
		
		//creamos un icono para o marcador
		var icono_categoria = new GIcon();
		icono_categoria.image = (icon != "" ? icon : URLbase + "/plugins/gis/img_pack/correxir.png");
		icono_categoria.shadow = URLbase + "/plugins/gis/img_pack/shadow.png";
		icono_categoria.iconSize = new GSize(20, 34);
		icono_categoria.shadowSize = new GSize(22, 20);	
		icono_categoria.iconAnchor = new GPoint(10, 34);
		icono_categoria.infoWindowAnchor = new GPoint(5, 1);
			
		// creamos el marcador con los datos almacenados en las variables
		var marcador = creaMarcador(point, html, icono_categoria, son);
		// recollemos a informacion que sexa necesaria en distintos arrays, usando como identificador a id do artigo
		marcadores[id] = marcador;
		contidosHTML[id] = html;
		URLsons[id] = son;
		//engadimos o marcador ao markerManager antes "map.addOverlay(marker);"
		if (maxZoom) {
			if(idmanager){
				idmanager.addMarker(marcador, minZoom,  maxZoom);
			}
			else{
				markerManager.addMarker(marcador, minZoom,  maxZoom);
			}
		} else if (idmanager){
			idmanager.addMarker(marcador, minZoom);
		}
	
}


function abrirVentana(identificador) {
	map.closeInfoWindow();
	marcadores[identificador].openInfoWindowHtml(contidosHTML[identificador]);
	//enbebemos o flash player do son
	var fo = new FlashObject( URLbase + "/plugins/gis/img_pack/musicplayer.swf?autoplay=true&song_url=" + URLsons[identificador], "player_x", "17", "17", "6", "#FFFFFF");
	fo.write("player");
}






//***********
// draw the map controls and logo 
// with different filetypes, for 
// compatibility reasons.
// also, give these controls their functions.
//***********
var images_folder = "png";
var images_extension = "png";
// Microsoft spoils everyone's fun again. Since IE doesn't support pngs,
// Things will have to look a bit different.
if(navigator.appName == "Microsoft Internet Explorer"){
	images_folder = "ie";
	images_extension = "gif";
}
		
//***********
// First Map Custom Control
//***********
function mapTypeControl() {
}
mapTypeControl.prototype = new GControl();
mapTypeControl.prototype.initialize = function(map) {
	var container = document.createElement("div");
    		
	var mapTypeMap = document.createElement("div");
	GEvent.addDomListener(mapTypeMap, "click", function() {
		map.setMapType(G_MAP_TYPE);
	});
	var typeMapImg = document.createElement("img");
	typeMapImg.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlMap." + images_extension;
	typeMapImg.style.cursor = "pointer";
	typeMapImg.style.position = "absolute";
	typeMapImg.style.left= "0px";
	mapTypeMap.appendChild(typeMapImg);
      		
	var mapTypeSat = document.createElement("div");
	GEvent.addDomListener(mapTypeSat, "click", function() {
		map.setMapType(G_SATELLITE_TYPE);
	});
	var typeSatImg = document.createElement("img");
	typeSatImg.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlSat." + images_extension;
	typeSatImg.style.cursor = "pointer";
	typeSatImg.style.position = "absolute";
	typeSatImg.style.left= "49px";
	mapTypeSat.appendChild(typeSatImg);
      		
	var mapTypeHyb = document.createElement("div");
	GEvent.addDomListener(mapTypeHyb, "click", function() {
		map.setMapType(G_HYBRID_TYPE);
	});
	var typeHybImg = document.createElement("img");
	typeHybImg.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlHyb." + images_extension;
	typeHybImg.style.cursor = "pointer";
	typeHybImg.style.position = "absolute";
	typeHybImg.style.left= "115px";
	mapTypeHyb.appendChild(typeHybImg);
      		
	container.appendChild(mapTypeMap);
	container.appendChild(mapTypeSat);
	container.appendChild(mapTypeHyb);
    		
	map.getContainer().appendChild(container);
	return container;
}
mapTypeControl.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(10, 0));
}
//***********
// Second Map Custom Control
//***********
function mapZoomControl() {
}
mapZoomControl.prototype = new GControl();
mapZoomControl.prototype.initialize = function(map) {
	var container = document.createElement("div");
	container.id = "mapZoomControl";
	var zoomIn = document.createElement("div");
	zoomIn.style.position = "absolute";
	zoomIn.style.top= "0px";
	GEvent.addDomListener(zoomIn, "click", function() {
		this.parentNode.childNodes[18 - map.getZoom()].firstChild.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlZoomNotch." + images_extension;
		map.zoomIn();
		this.parentNode.childNodes[18 - map.getZoom()].firstChild.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlZoomSel." + images_extension;
	});
	var zoomInImg = document.createElement("img");
	zoomInImg.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlZoomIn." + images_extension;
	zoomInImg.style.cursor = "pointer";
	zoomIn.appendChild(zoomInImg);
	container.appendChild(zoomIn);
      		
	var notchImg = new Array();
	var notchDiv = new Array();
	for(var i=0; i < 18; i++){
		notchDiv[i] = document.createElement("div");
		GEvent.addDomListener(notchDiv[i], "click", function() {
			this.parentNode.childNodes[18 - map.getZoom()].firstChild.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlZoomNotch." + images_extension;
			map.setZoom(17 - this.zoom);
			this.firstChild.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlZoomSel." + images_extension;
		});
		notchDiv[i].zoom = i;
		notchDiv[i].style.position = "absolute";
		notchDiv[i].style.top= 9 + (i*9) + "px";
		notchImg[i] = document.createElement("img");
		notchImg[i].src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlZoomNotch." + images_extension;
		notchImg[i].style.cursor = "pointer";
		notchDiv[i].appendChild(notchImg[i]);
		container.appendChild(notchDiv[i]);
	}
    		
	var zoomOut = document.createElement("div");
	zoomOut.style.position = "absolute";
	zoomOut.style.top= "179px";
	GEvent.addDomListener(zoomOut, "click", function() {
		this.parentNode.childNodes[18 - map.getZoom()].firstChild.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlZoomNotch." + images_extension;
		map.zoomOut();
		this.parentNode.childNodes[18 - map.getZoom()].firstChild.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlZoomSel." + images_extension;
	});
	var zoomOutImg = document.createElement("img");
	zoomOutImg.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlZoomOut." + images_extension;
	zoomOutImg.style.cursor = "pointer";
	zoomOut.appendChild(zoomOutImg);
	container.appendChild(zoomOut);
      		
	map.getContainer().appendChild(container);
	return container;
	}
mapZoomControl.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(24, 100));
}
//***********
// Third Map Custom Control
//***********
function mapMoveControl() {
}
mapMoveControl.prototype = new GControl();
mapMoveControl.prototype.initialize = function(map) {
	var container = document.createElement("div");
    		
	var mapMoveMap = document.createElement("div");
    		
	var mapMoveImgUL = document.createElement("img");
	mapMoveImgUL.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlTopLeft." + images_extension;
	mapMoveImgUL.style.position = "absolute";
	mapMoveImgUL.style.left= "7px";
	mapMoveMap.appendChild(mapMoveImgUL);
      		
	var butomUpDiv = document.createElement("div");
	butomUpDiv.style.position = "absolute";
	butomUpDiv.style.left= "24px";
	GEvent.addDomListener(butomUpDiv, "click", function() {
		pan(north);
	});
	var butomUpImg = document.createElement("img");
	butomUpImg.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlTop." + images_extension;
	butomUpImg.style.cursor = "pointer";
	butomUpDiv.appendChild(butomUpImg);
	mapMoveMap.appendChild(butomUpDiv);
      		
	var mapMoveImgUR = document.createElement("img");
	mapMoveImgUR.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlTopRight." + images_extension;
	mapMoveImgUR.style.position = "absolute";
	mapMoveImgUR.style.left= "43px";
	mapMoveMap.appendChild(mapMoveImgUR);
      		
	var butomRightDiv = document.createElement("div");
	butomRightDiv.style.position = "absolute";
	butomRightDiv.style.left= "43px";
	butomRightDiv.style.top= "17px";
	GEvent.addDomListener(butomRightDiv, "click", function() {
		pan(east);
	});
	var butomRightImg = document.createElement("img");
	butomRightImg.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlRight." + images_extension;
	butomRightImg.style.cursor = "pointer";
	butomRightDiv.appendChild(butomRightImg);
	mapMoveMap.appendChild(butomRightDiv);
      		
	var butomCenterDiv = document.createElement("div");
	butomCenterDiv.style.position = "absolute";
	butomCenterDiv.style.left= "24px";
	butomCenterDiv.style.top= "17px";
	GEvent.addDomListener(butomCenterDiv, "click", function() {
		map.panTo(center);
	});
	var butomCenterImg = document.createElement("img");
	butomCenterImg.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlCenter." + images_extension;
	butomCenterImg.style.cursor = "pointer";
	butomCenterDiv.appendChild(butomCenterImg);
	mapMoveMap.appendChild(butomCenterDiv);
      		
	var butomLeftDiv = document.createElement("div");
	butomLeftDiv.style.position = "absolute";
	butomLeftDiv.style.left= "7px";
	butomLeftDiv.style.top= "17px";
	GEvent.addDomListener(butomLeftDiv, "click", function() {
		pan(west);
	});
	var butomLeftImg = document.createElement("img");
	butomLeftImg.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlLeft." + images_extension;
	butomLeftImg.style.cursor = "pointer";
	butomLeftDiv.appendChild(butomLeftImg);
	mapMoveMap.appendChild(butomLeftDiv);
      		
	var mapMoveImgDL = document.createElement("img");
	mapMoveImgDL.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlBotLeft." + images_extension;
	mapMoveImgDL.style.position = "absolute";
	mapMoveImgDL.style.top= "36px";
	mapMoveImgDL.style.left= "7px";
	mapMoveMap.appendChild(mapMoveImgDL);
      		
	var butomDownDiv = document.createElement("div");
	butomDownDiv.style.position = "absolute";
	butomDownDiv.style.left= "24px";
	butomDownDiv.style.top= "36px";
	GEvent.addDomListener(butomDownDiv, "click", function() {
		pan(south);
	});
	var butomDownImg = document.createElement("img");
	butomDownImg.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlBot." + images_extension;
	butomDownImg.style.cursor = "pointer";
	butomDownDiv.appendChild(butomDownImg);
	mapMoveMap.appendChild(butomDownDiv);
      		
	var mapMoveImgDR = document.createElement("img");
	mapMoveImgDR.src = URLbase + "plugins/googlemap_api/img_pack/" + images_folder + "/ctlBotRight." + images_extension;
	mapMoveImgDR.style.position = "absolute";
	mapMoveImgDR.style.left= "43px";
	mapMoveImgDR.style.top= "36px";
	mapMoveMap.appendChild(mapMoveImgDR);
      		
	container.appendChild(mapMoveMap);
    		
	map.getContainer().appendChild(container);
	return container;
}
mapMoveControl.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(0, 30));
}
//	map control functions
var north="north";
var east="east";
var south="south";
var west="west";
		
function pan(dir){
	var center = map.getCenter();
	var bounds = map.getBounds();
	var northEast = bounds.getNorthEast();
	var southWest = bounds.getSouthWest();
	if(dir==north) map.panTo(new GLatLng(northEast.lat(), center.x));
	if(dir==east)  map.panTo(new GLatLng(center.y, northEast.lng()));
	if(dir==south) map.panTo(new GLatLng(southWest.lat(), center.x));
	if(dir==west)  map.panTo(new GLatLng(center.y, southWest.lng()));
}

