//autor: Sergio González
//empresa: Interdigital
 function initialize(texto,ccaa) {
 //EL siguiente algoritmo define la función getElementsByClassName para el intérprete de Javascrit de IE
 if(typeof(document.getElementsByClassName) != 'function') {
  	document.getElementsByClassName = function (cn) {
		var rx = new RegExp("\\b" + cn + "\\b"), allT = document.getElementsByTagName("*"), allCN = [], i = 0, a;
			while (a = allT[i++]) {
			  if (a.className && a.className.indexOf(cn) + 1) {
				if(a.className===cn){ allCN[allCN.length] = a; continue;   }
				rx.test(a.className) ? (allCN[allCN.length] = a) : 0;
			  }
			}
		return allCN;  
	}
}
//alert(texto);
//Si no hay datos de geolocalización, eliminamos el div del mapa y mostramos un mensaje por pantalla
 if (texto==""){
	if(document.getElementsByClassName("noData")[0]==null)
	{
	var e = document.getElementById("map_canvas");
	e.parentNode.removeChild(e);
	document.getElementById("noData").innerHTML ='<p style="color:red;font-weight:bold">No existen datos de geolocalizaci&oacute;n</p>';
	}
	else if(document.getElementsByClassName("noData")[0]!=null)
	{
	var e = document.getElementsByClassName("map")[0];
	e.parentNode.removeChild(e);
	document.getElementsByClassName("noData")[0].innerHTML ='<p style="color:red;font-weight:bold">No existen datos de geolocalizaci&oacute;n</p>';
	}
	}
//Si existen datos de geolocalización
else{
//Analizamos el string texto que contiene los datos de cada unos de los puntos que vamos a marcar en el mapa
//Los datos aparecen en el siguiente formato: nombreTalle1,Latitud1,Longitud1,enlaceDetalle1,nombreTalle2,Latitud2...
var descom;
var i=0;
var j=0;
texto.toString();
descom = texto.split(',');
//Calculamos el punto central del mapa mediante la media aritmética de los diferentes puntos.
	var myLatlng = new google.maps.LatLng(calculaCentroLat(descom),calculaCentroLong(descom));
    //Si se trata de una comunidad autonoma, ccaa=True
	if(ccaa){
	//Si hay mas de un taller en la CCAA
	if ((descom.length/4)==1){
	var myOptions = {
      zoom: 8,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
	}
	else{
	var myOptions = {
      zoom: 7,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
	}
	}
	else if(!ccaa){
	if ((descom.length/4)==1){
	var myOptions = {
      zoom: 15,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
	}
	else{
	var myOptions = {
      zoom: 12,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
	}
	}
	//Cargamos el mapa con los datos inicializados
	if(document.getElementById("map_canvas")!=null)
	{var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);}
	else if(document.getElementById("map_canvas")==null)
	{var map = new google.maps.Map(document.getElementsByClassName("map")[0], myOptions);}
//Cargamos cada uno de los puntos sobre el mapa
    if((descom.length/4)>=1){
		while(i<descom.length/4){
		var myLatlng = new google.maps.LatLng(descom[j+1],descom[j+2]);
		 marker = new google.maps.Marker({
			position: myLatlng,
			map: map,
			title:descom[j] 
		});
		linkMarker(marker, descom[j+3]);
		i++;
		j=j+4
		}
	}
}
  }
 //Este procedimiento establece un evento 'click' al marker que le pasamos por referencia
function linkMarker(marker, link){
google.maps.event.addListener(marker, 'click', function() {
		window.location.href=link;
  });
}
//Las siguientes funciones, calculan el centro de Latitud y de Longitud mediante una media aritmética
function calculaCentroLat(descom) {
var i=0;
var j=0;
var sumaLat;
	sumaLat=parseFloat('0.0');
	if((descom.length/4)>=1){
	while(i<descom.length/4){
	sumaLat = sumaLat + parseFloat(descom[j+1]);
	i++;
	j=j+4
	}
	}
	var centerLat=sumaLat/(descom.length/4);
	
	return centerLat;
}

function calculaCentroLong(descom) {
var i=0;
var j=0;	
var sumaLong;
	sumaLong=parseFloat('0.0');
	if((descom.length/4)>=1){
	while(i<descom.length/4){
	sumaLong = sumaLong + parseFloat(descom[j+2]);
	i++;
	j=j+4
	}
	}
	var centerLong=sumaLong/(descom.length/4);
	
	return centerLong;
}
