var map, manager;

//Variable inicial del desplegable de municipis
var nummuni = 0;

// var centerLatitude = 40.736462, centerLongitude = -73.98777, startZoom = 12;


function createMarkerClickHandler(marker, text, link) {
        return function() {
                marker.openInfoWindowHtml(
                        '<h3>' + text + '</h3>' +
                        '<p><a href="' + link + '">Veure fitxa del polígon &raquo;</a></p>'
                );
                return false;
        };
}


function createMarker(pointData) {
        var latlng = new GLatLng(pointData.latitude, pointData.longitude);
        var icon = new GIcon();
        //Per mostrar una icona --> icon.image = 'http://uwmike.com/maps/manhattan/img/red-marker.png';
        icon.iconSize = new GSize(32, 32);
        icon.iconAnchor = new GPoint(16, 16);
        icon.infoWindowAnchor = new GPoint(25, 7);

        opts = {
                "icon": icon,
                "clickable": true,
                "labelText": pointData.abbr,
                "labelOffset": new GSize(-16, -16)
        };
        var marker = new LabeledMarker(latlng, opts);
		
		//Per fer el cartell clicable i poder mostrar la bombolla --> var handler = createMarkerClickHandler(marker, pointData.name, pointData.wp);
        //Per fer el cartell clicable i poder mostrar la bombolla --> GEvent.addListener(marker, "click", handler);

        /*var listItem = document.createElement('li');
        listItem.innerHTML = '<div class="label">'+pointData.abbr+'</div><a href="' + pointData.wp + '">' + pointData.name + '</a>';
        listItem.getElementsByTagName('a')[0].onclick = handler;*/

        //document.getElementById('sidebar-list').appendChild(listItem);
		return marker;
}

//Funció per parsejar les variables de l'URL
function agafa_parametre( nom_variable )
{
  nom_variable = nom_variable.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+nom_variable+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}


//Funció inicial Mapa general
function initialize() {
		//handleResize()
		
    	map = new GMap2(document.getElementById("mapa"));
		map.setMapType(G_NORMAL_MAP);
    	map.addControl(new GLargeMapControl3D()); // Per control de mapa (Zoom, posició, etc) gran, utilitzem --> GLargeMapControl()
		map.addControl(new GScaleControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl());
		map.setCenter(new GLatLng(41.513889, 2.039722), 11); 
    	//map.addControl(new GLargeMapControl3D());
		//map.addOverlay(geoXml_parades);
		map.addOverlay(geoXml_poligons);
		map.addOverlay(geoXml_municipis);
		map.addOverlay(geoXml_comarca);
		//map.addOverlay(geoXml_parades_bus_prova);
		//map.addOverlay(linia1);
		
		//Cridem la funció que crea les parades de tren
		//parades_tren();
	
		manager = new GMarkerManager(map);
	        
        // This is a sorting trick, don't worry too much about it.
        markers.sort(function(a, b) { return (a.abbr > b.abbr) ? +1 : -1; }); 
        
        batch = [];
        for(id in markers) {
                batch.push(createMarker(markers[id]));
        }
        manager.addMarkers(batch, 14);
        manager.refresh();
		
		//Cridem la funció que fa que el mapa i el desplegable de municipis vagin on toca (segons la variable de la URL)
		url_municipi();
}

//Funció URL directa a un municipi
function url_municipi(){
	var entrada_municipi = agafa_parametre( 'entrada' );
	
	addAddressToMapMuni(entrada_municipi);
	var poligon_actual=entrada_municipi;
	mostraInfoMuni(poligon_actual);
	
	var myselect=document.getElementById("desplegable_01");
	var opcio_sel = document.getElementById(poligon_actual);
	opcio_sel.selected = true;
}

//Funció inicial Mapa fitxa
function initialize_fitxa() {
		//handleResize()
		
    	map = new GMap2(document.getElementById("mapa_fitxa"));
		map.setMapType(G_NORMAL_MAP);
    	map.addControl(new GLargeMapControl3D()); // Per control de mapa (Zoom, posició, etc) gran, utilitzem --> GLargeMapControl()
		map.addControl(new GScaleControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl());
		
		var poli_lati = agafa_parametre( 'lati' );
		var poli_longi = agafa_parametre( 'longi' );
	
		map.setCenter(new GLatLng(poli_lati, poli_longi), 14); 
    	//map.addControl(new GLargeMapControl3D());
		map.addOverlay(geoXml_parades);
		map.addOverlay(geoXml_poligons);
		map.addOverlay(geoXml_municipis);
		map.addOverlay(geoXml_comarca);
				
		manager = new GMarkerManager(map);
        
        // This is a sorting trick, don't worry too much about it.
        markers.sort(function(a, b) { return (a.abbr > b.abbr) ? +1 : -1; }); 
        
        batch = [];
        for(id in markers) {
                batch.push(createMarker(markers[id]));
        }
        manager.addMarkers(batch, 14);
        manager.refresh();
}
 	
//Funció canvi d'adreça i mostra d'info dels municipis
function addAddressToMapMuni(responsemuni) {
    	//Si volem eliminar la sobreposició (KML i altres) al canviar d'adreça --> map.clearOverlays();
 				
		if (responsemuni==0){
			var place = municipi[responsemuni].Placemark[0];
      		var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
			map.setCenter(point, 11);
      		map.openInfoWindowHtml(point, "<b>Municipi:</b> " + place.nommunicipi
      	 	+ "<br><b>Nº de polígons:</b> " + place.numeropoligons);
			nummuni= responsemuni;
			tornanommuni= place.nommunicipi;
		}
		
		else{
			var place = municipi[responsemuni].Placemark[0];
      		var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
			map.setCenter(point, 13);
      		map.openInfoWindowHtml(point, "<b>Municipi:</b> " + place.nommunicipi
      	 	+ "<br><b>Nº de polígons:</b> " + place.numeropoligons + "<br><br>Feu clic sobre cada polígon per veure la seva informació.");
			nummuni=responsemuni;
			tornanommuni= place.nommunicipi;
		}
		
		//Amaguem el desplegable de les línies d'autobús 
		//amaga_linies_bus(); liniesfora();
}

function mostraInfoMuni(muniseleccio){
				
					
	for(i=0; i<24; i++) {
		if(i<muniseleccio || i>muniseleccio){
			amaga('canvi_info_'+i);
			amaga('titol_'+i);
		}
		else{
			mostra('canvi_info_'+muniseleccio);
			mostra('titol_'+muniseleccio);
		}
	}
		
}

//Funció canvi d'adreça i mostra d'info dels polígons
function addAddressToMapPoli(responsepoli) {
    	//Si volem eliminar la sobreposició (KML i altres) al canviar d'adreça --> map.clearOverlays();
		switch (nummuni) {
		case 0:
  			var place = poligon0[responsepoli].Placemark[0];
  			break;
		case 1:
  			var place = poligon1[responsepoli].Placemark[0];
  			break;
		case 2:
  			var place = poligon2[responsepoli].Placemark[0];
  			break;
		case 3:
  			var place = poligon3[responsepoli].Placemark[0];
  			break;
		case 4:
  			var place = poligon4[responsepoli].Placemark[0];
  			break;
		case 5:
  			var place = poligon5[responsepoli].Placemark[0];
  			break;
		case 6:
  			var place = poligon6[responsepoli].Placemark[0];
  			break;
		case 7:
  			var place = poligon7[responsepoli].Placemark[0];
  			break;
		case 8:
  			var place = poligon8[responsepoli].Placemark[0];
  			break;
		case 9:
  			var place = poligon9[responsepoli].Placemark[0];
  			break;
		case 10:
  			var place = poligon10[responsepoli].Placemark[0];
  			break;
		case 11:
  			var place = poligon11[responsepoli].Placemark[0];
  			break;
		case 12:
  			var place = poligon12[responsepoli].Placemark[0];
  			break;
		case 13:
  			var place = poligon13[responsepoli].Placemark[0];
  			break;
		case 14:
  			var place = poligon14[responsepoli].Placemark[0];
  			break;
		case 15:
  			var place = poligon15[responsepoli].Placemark[0];
  			break;
		case 16:
  			var place = poligon16[responsepoli].Placemark[0];
  			break;
		case 17:
  			var place = poligon17[responsepoli].Placemark[0];
  			break;
		case 18:
  			var place = poligon18[responsepoli].Placemark[0];
  			break;
		case 19:
  			var place = poligon19[responsepoli].Placemark[0];
  			break;
		case 20:
  			var place = poligon20[responsepoli].Placemark[0];
  			break;
		case 21:
  			var place = poligon21[responsepoli].Placemark[0];
  			break;
		case 22:
  			var place = poligon22[responsepoli].Placemark[0];
  			break;
		case 23:
  			var place = poligon23[responsepoli].Placemark[0];
  			break;
					
		}
		
		if (nummuni==0){
			if (responsepoli==0){
				var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
      			map.setCenter(point, 11);
      			map.openInfoWindowHtml(point, "Estàs veient tots els polígons " + place.nompoligon);
			}
		
			else {
				var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
      			map.setCenter(point, 15);
			}
		}
		else{
			if (responsepoli==0){
				var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
      			map.setCenter(point, 13);
      			map.openInfoWindowHtml(point, "Estàs veient tots els polígons " + place.nompoligon);
			}
		
			else {
				var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
      			map.setCenter(point, 15);
			}
		}
      	//map.openInfoWindowHtml(point, "<b>City:</b> " + place.address
       	//+ "<br><b>Population:</b> " + place.population);
}

window.onunload = GUnload;
