﻿	var geocoder = null;
	var map = null;
	var markers = new Array();
	var del = null;
	
	var icon = new GIcon();
	icon.image = baseUrl+"imag/comun/maps_icon.png";
	icon.shadow = baseUrl+"imag/comun/maps_icon_shadow.png";
	icon.iconSize = new GSize(34, 37);
	icon.shadowSize = new GSize(34, 37);
	icon.iconAnchor = new GPoint(14, 16);
	icon.infoWindowAnchor = new GPoint(14, 0);

	function Counter() {
		this.c = 1;
		this.get = function () {
			return this.c++;	
		}	
	}

	var q = new Counter();

	function out(s) {
		$('log').innerHTML += s + "<br/>";	
	}

	function Marker() {
		this.map = map;
		this.id = q.get();
		this.info = "";
		this.name = "";
		this.marker = "";

		this.hola = function () {
			out("soy marker " + this.id);	
		}

		this.infoWin = function () {
			this.marker.openInfoWindowHtml(this.info);
		}

		this.attach = function( aPoint, principal ) {
			var aMarker = new GMarker ( aPoint, (principal ? icon : icon), false );
			this.marker = aMarker;
			GEvent.addListener(aMarker, "click", this.infoWin.bind(this) );
			map.addOverlay( aMarker );
			if (principal)
				this.infoWin();
		}

		this.setGooglePos = function( anAddress, principal ) {
			geocoder.getLatLng( anAddress, this.attach.bind(this) );
		}

		this.setInfo = function( name, info  ) {
			this.info = "<div class='delInfo'>";
			this.info += "<h6>" + name + "</h6>";
			this.info += info + "</div>";
			this.name = name;
		}

		this.setCoords = function ( aLat, aLng, principal ) {
			var aPoint = new GLatLng ( aLat, aLng );
			this.attach( aPoint, principal );
		}

	}
	
    function getDelegaciones() {
	    GDownloadUrl(baseUrl+"xml/geo.xml?nocache="+Math.round(1000*Math.random()), 
	    	function(data, responseCode) {
	    		var xml = GXml.parse(data);

	    		var delegaciones = xml.documentElement.getElementsByTagName("delegacion");

				var onmap = 0;
				active = -1;
				
				for (var i = 0; i < delegaciones.length; i++) {
	    			var id = delegaciones[i].getElementsByTagName("id");
	    			if (id.length > 0) {
							if (id[0].firstChild.nodeValue == del) {
								active = i;
								map.addControl(new GSmallMapControl()); 
								newZoom = delegaciones[i].getElementsByTagName("zoom")[0].firstChild.nodeValue;
								map.setCenter ( new GLatLng( delegaciones[i].getElementsByTagName("mapa_latitud")[0].firstChild.nodeValue, delegaciones[i].getElementsByTagName("mapa_longitud")[0].firstChild.nodeValue ), newZoom * 1  );
							}
						}
	    		}

	    		if (active < 0) {
	    			map.addControl(new GSmallMapControl()); 
						map.setCenter ( new GLatLng("41.368207", "2.068735"), 14 );
					}

	    		for (var i = 0; i < delegaciones.length; i++) {

				    	var lat = delegaciones[i].getElementsByTagName("mapa_latitud");
				    	var long= delegaciones[i].getElementsByTagName("mapa_longitud");

				  		var name = delegaciones[i].getElementsByTagName("nome")[0].firstChild.nodeValue;
				  		var infoDireccion = delegaciones[i].getElementsByTagName("info_direccion")[0].firstChild.nodeValue;

						markers.push ( new Marker() );

						markers[i].setInfo( name, infoDireccion );

						if ( lat.length * long.length > 0) {
							markers[i].setCoords ( lat[0].firstChild.nodeValue, long[0].firstChild.nodeValue, (i == active) );
						}

	    		}

	    	});
    }

    function mapaLoad( ) {
      if (GBrowserIsCompatible()) {
				del = $('delegacion').value;
		map = new GMap2( $("mapa") );
    	geocoder = new GClientGeocoder();
       getDelegaciones();  
      }

    }

    function myUnload() {
    	GUnload();
    }

Event.observe(window, 'load', function(){ mapaLoad() } );
Event.observe(window, 'unload', function(){ myUnload() });
    
    