
	var map;
    var geoXml; 
    var toggleState = 1;
	var gdir;
/*-------------------------------------*/
var actual;
 var gmarkers = [];


 var igrexa = new GIcon();
 igrexa.image= "iconosroteiros/g_igrexa.gif";
 addIcon(igrexa);
 var fonte = new GIcon();
 fonte.image= "iconosroteiros/g_fonte.gif";
 addIcon(fonte);
 var horreo = new GIcon();
 horreo.image= "iconosroteiros/g_horreo.gif";
 addIcon(horreo);
  var petroglifo = new GIcon();
 petroglifo.image= "iconosroteiros/g_petroglifo.gif";
 addIcon(petroglifo);
  var castros = new GIcon();
 castros.image= "iconosroteiros/g_mirador.gif"; 
 addIcon(castros);
  var casamuseo = new GIcon();
 casamuseo.image= "iconosroteiros/g_museo.gif";
 addIcon(casamuseo);
  var museo = new GIcon();
 museo.image= "iconosroteiros/g_museo.gif";
 addIcon(museo);
  var feitohist = new GIcon();
 feitohist.image= "iconosroteiros/g_feitohistorico.gif";
 addIcon(feitohist);
 var bosque = new GIcon();
 bosque.image= "iconosroteiros/g_espazonatural.gif";
 addIcon(bosque);
 var montana = new GIcon();
 montana.image= "iconosroteiros/g_espazonatural.gif";
 addIcon(montana);
  var rio = new GIcon();
 rio.image= "iconosroteiros/g_ponte.gif";
 addIcon(rio);
  var praia = new GIcon();
 praia.image= "iconosroteiros/g_praias.gif";
 addIcon(praia);
  var espazolit = new GIcon();
 espazolit.image= "iconosroteiros/g_tipo.gif";
 addIcon(espazolit);
  var espazobio = new GIcon();
 espazobio.image= "iconosroteiros/g_tipo.gif";
 addIcon(espazobio);
  var espazoarq = new GIcon();
 espazoarq.image= "iconosroteiros/g_patrimonioromano.gif";
 addIcon(espazoarq);
  var espazoet = new GIcon();
 espazoet.image= "iconosroteiros/g_etnografia.gif";
 addIcon(espazoet);
  var castelo = new GIcon();
 castelo.image= "iconosroteiros/g_castelo.gif";
 addIcon(castelo);
  var centroint = new GIcon();
 centroint.image= "iconosroteiros/g_museo.gif";
 addIcon(centroint);
  var calendario = new GIcon();
 calendario.image= "iconosroteiros/g_etnografia.gif";
 addIcon(calendario);
  var pazo = new GIcon();
 pazo.image= "iconosroteiros/g_pazo.gif";
 addIcon(pazo);
  var mosteiro = new GIcon();
 mosteiro.image= "iconosroteiros/g_mosteiro.gif";
 addIcon(mosteiro);
   var capela = new GIcon();
 capela.image= "iconosroteiros/g_mirador.gif"; 
 addIcon(capela);
  var mamoa = new GIcon();
 mamoa.image= "iconosroteiros/g_mirador.gif"; 
 addIcon(mamoa);
  var ruinas = new GIcon();
 ruinas.image= "iconosroteiros/g_patrimonioromano.gif";
 addIcon(ruinas);
  var mirador = new GIcon();
 mirador.image= "iconosroteiros/g_mirador.gif";
 addIcon(mirador);
  var lagoa = new GIcon();
 lagoa.image= "iconosroteiros/g_lagoa.gif";
 addIcon(lagoa);
  var parque = new GIcon();
 parque.image= "iconosroteiros/g_parque.gif";
 addIcon(parque);
   var cruceiro = new GIcon();
 cruceiro.image= "iconosroteiros/g_cruceiro.gif";
 addIcon(cruceiro);
  var arbore = new GIcon();
 arbore.image= "iconosroteiros/g_arbore.gif";
 addIcon(arbore);
  var penedo = new GIcon();
  penedo.image= "iconosroteiros/g_penedo.gif";
 addIcon(penedo);
  var ponte = new GIcon();
 ponte.image= "iconosroteiros/g_ponte.gif";
 addIcon(ponte);
  var faro = new GIcon();
 faro.image= "iconosroteiros/g_faro.gif";
 addIcon(faro);
  var ermida = new GIcon();
  ermida.image= "iconosroteiros/g_mirador.gif"; 
 addIcon(ermida);
  var catedral = new GIcon();
 catedral.image= "iconosroteiros/g_catedral.gif";
 addIcon(catedral);
 
 var icons = { "Igrexa": igrexa, "Fonte": fonte, "Horreo": horreo, "Petroglifos": petroglifo, "Castros": castros, "Casa Museo": casamuseo, "Museo": museo,
	"Feito Historico": feitohist, "Bosque": bosque, "Montana": montana, "Rio": rio, "Praia": praia, "Espazo Literario":espazolit, "Espazo biografico":espazobio,
	"Espazo arqueoloxico":espazoarq, "Espazo etnografico":espazoet, "Castelo":castelo, "Centro de interpretacion":centroint, "Calendario de eventos":calendario,
    "Pazo":pazo, "Mosteiro":mosteiro, "Capela": capela, "Mamoa": mamoa, "Ruinas romanas": ruinas, "Mirador": mirador, "Lagoa": lagoa, "Parque": parque, 
	"Cruceiro":cruceiro, "Arbore Singular":arbore, "Penedo Singular":penedo, "Ponte":ponte, "Faro": faro, "Ermida":ermida, "Catedral":catedral};

function addIcon(icon) { // Ańadirle los atributos a los iconos

 icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
 icon.iconSize = new GSize(32, 32);
 icon.shadowSize = new GSize(37, 34);
 icon.iconAnchor = new GPoint(0, 0);
 icon.infoWindowAnchor = new GPoint(7, 2);
 icon.infoShadowAnchor = new GPoint(18, 25);

 //icon.infoShadowAnchor = new GPoint(18, 25);

}

 // Crear  o marcador e configurar a venta dos eventos
 function createMarker(point, name, html, category, id) {
 var marker = new GMarker(point, icons[category]);
 // Gardar categoria, nombre, id e icono como propiedades de un marcador
 marker.category = category;
 marker.name = name;
 marker.id = id;
 marker.icon = icons[category];
 GEvent.addListener(marker, "click", function(){
	map.closeInfoWindow();
	marker.openInfoWindowHtml(html);//,{maxWidth:150,pixelOffset:new GSize(5,5)};
 });
//hovering por riba dos marcadores
 GEvent.addListener(marker, "mouseover", function() {
 marker.setImage("white-dot.png");
 var hovered = document.getElementById(id);
 if(hovered) {
 hovered.className = "focus";
 actual = hovered; // Gardar este elemento
 }
 });

 GEvent.addListener(marker, "mouseout", function() {
 marker.setImage(icons[category].image);
 if(actual) { actual.className= "normal"; }
 });

 gmarkers.push(marker);
 return marker;
 }


var hover = { 
 over: function(id) {
 // Outra cor para o link
 var hovered = document.getElementById(id);
 hovered.className = "focus";

 // Pońer outro icono de marcador
 for(var i =0; i < gmarkers.length; i++) {
 if(gmarkers[i].id == id) {
 gmarkers[i].setImage("white-dot.png");
 }
 }
 },

 out: function(id) {
// Pońer o link por defecto
 var hovered = document.getElementById(id);
 hovered.className = "normal";

 // Pońer o icono por defecto
 for(var i =0; i < gmarkers.length; i++) {
 if(gmarkers[i].id == id) {
 gmarkers[i].setImage(gmarkers[i].icon.image);
 }
 }
 }
}

var visible= { // Facer unha categoria  (in)visible
 show: function(category) {
 // Amosar todos os marcadores de 1categoria
 for(var i= 0; i < gmarkers.length; i++) {
 if(gmarkers[i].category == category) {
 gmarkers[i].show();
 }
 }
 // Pońer o checkbox a true
 if(document.getElementById(category) != null)
 {
	document.getElementById(category).checked = true;
 }
 },

 hide: function(category) {
 // ocultar todos os marcadores dunha categoria
 for(var i= 0; i < gmarkers.length; i++) {
 if(gmarkers[i].category == category) {
 gmarkers[i].hide();
 }
 }
 // Limpar o checkbox
 document.getElementById(category).checked = false;
 map.closeInfoWindow();
 }
}

 function boxclick(box, category) {

 // Amosar ou ocultar a categoria
 if(box.checked) { visible.show(category); }
 else { visible.hide(category); }
 }

 // Coller os clicks para abrir a correspondente infowindow
 function Info(i) {
 GEvent.trigger(gmarkers[i],"click");
 }
/*-------------------------------------*/
var timerID;
function empezar(id,cod_rtro,cod_obx){ 

      if (GBrowserIsCompatible()) {
		inicio();
		call('lineas_matriz.php?id='+id+'&cod_rtro='+cod_rtro+'&cod_obx='+cod_obx,this,melon);
		 timerID = setTimeout("readData("+id+","+cod_rtro+")", 1500);
		 //readData(id,cod_rtro);//para chamar aos obxectos de contido e situalos no mapa....
	  }
}
/*-----------------------------------------------*/
function inicio(){

	map = new GMap2(document.getElementById("mapa")); 
	//map.setCenter(new GLatLng(42.7767, -7.855835), 8);
    //map.addControl(new GLargeMapControl());
	map.addControl(new GSmallMapControl());
	map.addControl(new GMenuMapTypeControl());
	map.addControl(new GScaleControl(200));
	map.enableContinuousZoom();
	//map.enableScrollWheelZoom();
	//O seguinte e para cambiar o nome por defecto.
	G_SATELLITE_3D_MAP.getName=function($short){
	if($short){
		return '3D';
	} else {
		return '3D';
	}
	};
	G_SATELLITE_MAP.getName=function($short){
	if($short){
		return 'Satelite';
	} else {
		return 'Satelite';
	}
	};
	G_HYBRID_MAP.getName=function($short){
	if($short){
		return 'Hibrido';
	} else {
		return 'Hibrido';
	}
	};
	G_PHYSICAL_MAP.getName=function($short){
	if($short){
		return 'Relevo';
	} else {
		return 'Relevo';
	}
	};
	map.addMapType(G_SATELLITE_MAP);
	map.addMapType(G_HYBRID_MAP);
	map.addMapType(G_PHYSICAL_MAP);
	map.addMapType(G_SATELLITE_3D_MAP);	
	
	//map.enableGoogleBar(); //Para o de edición

		  map.hideControls();

		//'mouseover' listener shows controls

		GEvent.addListener(map, "mouseover", function(){
		map.showControls();
		});

		//'mouseout' listener hides controls

		GEvent.addListener(map, "mouseout", function(){
		map.hideControls(); 
		});
		GEvent.addListener(map, "click", function() {
		map.getInfoWindow().hide();
		});
}

function melon(html)
{

var xeral = html.split('###');
	
var lineas = xeral[0].split('@@@');

for( var i=0; i < lineas.length-1; i++)
{
	var lin = lineas[i].split(',');
	var arr = new Array();
	for (var j=0; j < lin.length; j++)
	{
		var pun = lin[j];
		var xx = pun.split(' ')[0];
		var yy = pun.split(' ')[1];
		var gpun = new GLatLng( parseFloat(xx), parseFloat(yy));
		arr.push(gpun);	
	}	
	map.addOverlay( new GPolyline( arr, '#ff0000', 5, 0.9));
}

var xmymxmym = xeral[1].split('@@@');

var xmin = xmymxmym[0];
var ymin = xmymxmym[1];
var xmax = xmymxmym[2];
var ymax = xmymxmym[3];

var sw = new GLatLng(xmin, ymin, true);
var ne = new GLatLng(xmax, ymax, true);
var nw = new GLatLng(xmin, ymax, true);
var se = new GLatLng(xmax, ymin, true);

var poligono = new GPolygon([ne, se, sw, nw, ne]);
map.addOverlay(poligono);
var bounds = poligono.getBounds(); 
map.setCenter(bounds.getCenter());
map.setZoom(map.getBoundsZoomLevel(bounds));
map.removeOverlay(poligono);
}
/*-------------------------------------------------------------------------------------------------------------*/
function readData(id,cod) {
 clearTimeout(timerID);
 var request = GXmlHttp.create();
 request.open("GET", "obxectos_xml.php?id="+id+"&cod_rtro="+cod, true);
 request.onreadystatechange = function() {
 if(request.readyState == 4) {
 
 // Use the browsers XML parser
 // var xml = request.responseXML;

 // Use Googles XML parser
 var xml = GXml.parse(request.responseText);

 var markers = xml.documentElement.getElementsByTagName("marcador");
 for(var i = 0; i < markers.length; i++){
 
 // OBTER OS ATRIBUTOS DE CADA OBXECTO
 var lat = parseFloat(markers[i].getAttribute("lat"));
 lat=lat.toFixed(5);
 var lng = parseFloat(markers[i].getAttribute("lng"));
 lng=lng.toFixed(5);
 var point = new GLatLng(lat,lng);
 var address = markers[i].getAttribute("address");
 address = address.replace("extras", "tn");
 address = "<div style=\"height:40px\"><img src=\"" + address;
 address += "\"></div>" +"<br\><br\><h6 style=\"width:110px\">Lat: "+lat+"<br>Lonx: "+lng+"</h6>";  
 //var address = markers[i].getAttribute("address")+"<h6>Lat: "+lat+"<br>Lonx: "+lng+"</h6>";
 var id = markers[i].getAttribute("nr");
 var link = "<a href=\"";
 link = link + markers[i].getAttribute("url");
 link = link + "\">M&aacute;is Informaci&oacute;n</a>";
 var name = utf8_decode(markers[i].getAttribute("name"));
 var html = "<b>"+name+"</b><br/><br/>"+ address + link;
 var category = markers[i].getAttribute("category");
 // Crear os obxectos
	var aux = createMarker(point, name, html, category, id);
	map.addOverlay(aux);
}

if(gmarkers) {

// ordear os obxectos
 
 gmarkers.sort(compareCats);

}
 visible.show("Igrexa");
 visible.show("Fonte");
 visible.show("Horreo");
 visible.show("Petroglifos");
 visible.show("Castros");
 visible.show("Casa Museo");visible.show("Edificio Historico");
 visible.show("Museo");
 visible.show("Feito Historico");
 visible.show("Bosque");
 visible.show("Montana");
 visible.show("Rio");
 visible.show("Praia");
 visible.show("Espazo Literario");
 visible.show("Espazo biografico");
 visible.show("Espazo arqueoloxico");
 visible.show("Espazo etnografico");
 visible.show("Castelo");
 visible.show("Centro de interpretacion");
 visible.show("Calendario de eventos"); 
 visible.show("Pazo");
 visible.show("Mosteiro");
 visible.show("Capela");
 visible.show("Mamoa");
 visible.show("Ruinas Romanas");
 visible.show("Mirador");
 visible.show("Lagoa");
 visible.show("Parque");
 visible.show("Cruceiro");
 visible.show("Arbore Singular");
 visible.show("Penedo Singular");
 visible.show("Ponte");
 visible.show("Faro");
 visible.show("Ermida");
 visible.show("Catedral");
 }
 }; request.send(null);
}
var compareCats = function(a, b) {

 var n1 = a.name;
 // Treat German umlauts like non-umlauts
 n1 = n1.toLowerCase();
 n1 = n1.replace(/ä/g,"a");
 n1 = n1.replace(/ö/g,"o");
 n1 = n1.replace(/ü/g,"u");
 n1 = n1.replace(/ß/g,"s");

 var n2 = b.name;

 n2 = n2.toLowerCase();
 n2 = n2.replace(/ä/g,"a");
 n2 = n2.replace(/ö/g,"o");
 n2 = n2.replace(/ü/g,"u");
 n2 = n2.replace(/ß/g,"s");

 var c1 = a.category;
 var c2 = b.category;

 // Ordear categorias e nomes
if(a.category == b.category){
 if(a.name == b.name){
 return 0;
 }
 return (a.name < b.name) ? -1 : 1;
 }

 return (a.category < b.category) ? -1 : 1;
}
/*----------------------------------------------------------*/
