/*-------------------------------------------------------------------------------------*/
/*GOOGLE MAPS UTILES V2															  	   */
/*-------------------------------------------------------------------------------------*/
function getLatitudPointerX(pointer){
	var latitud="ND";
	var pointer_array=pointer.split(",");
	if (pointer_array.length==2){
		var latitud_array=pointer_array[0].split("(");
			if(latitud_array.length==2){
				latitud=latitud_array[1];
			}
	}
	return latitud;
}
function getLongitudPointerY(pointer){
	var longitud="ND";
	var pointer_array=pointer.split(",");
	if (pointer_array.length==2){
		var longitud_array=pointer_array[1].split(")");
			if(longitud_array.length==2){
				longitud=longitud_array[0];
			}
	}
	return longitud;
}

function coordenadaMin(array_coords){
	var valor=0;		
	for(i=0;i<array_coords.length;i++){
		if(valor!=""){
			if (valor > array_coords[i]){
				valor = array_coords[i];
			}
		}else{
			valor = array_coords[i];
		}
	}
	return valor;
}

function coordenadaMax(array_coords){
	var valor='';
	for(i=0;i<array_coords.length;i++){
		if(valor!=""){
			if (valor < array_coords[i]){
				valor = array_coords[i];
			}
		}else{
			valor = array_coords[i];
		}
	}
	return valor;
}

function coordenadaMedio(array_coords, valorDefault){
	var resultado = valorDefault;
	if(array_coords.length>0){	
		var valormin = validarFloat(coordenadaMin(array_coords));
		var valormax = validarFloat(coordenadaMax(array_coords));

		if(valormin!='' && valormax!=''){
			if(valormax<0 && valormin<0){
				resultado = Redondear((valormin - valormax),4)/(-2) + valormin;
			}else{
				resultado = Redondear((valormax - valormin),4)/2 + valormin;
			}
			resultado = validarFloat(Redondear(resultado,7));
		}
	}
	return resultado;
}

function createMarker_v2(point, label, addstar) {
	var iconOptions = {};
	
	iconOptions.primaryColor = "#FFFFFF";
	iconOptions.strokeColor = "#000000";
	iconOptions.label = '*';
	iconOptions.labelColor = "#000000";
	iconOptions.addStar = addstar;
	iconOptions.starPrimaryColor = "#FFFF00";
	iconOptions.starStrokeColor = "#0000FF";		
	iconOptions.primaryColor = "#FF0000";
	iconOptions.strokeColor = "#000000";
	iconOptions.label = label.toString();
	iconOptions.labelColor = "#000000";
	iconOptions.addStar = addstar;
	iconOptions.starPrimaryColor = "#FFFF00";
	iconOptions.starStrokeColor = "#0000FF";
	
	var letteredIcon = MapIconMaker.createLabeledMarkerIcon(iconOptions);	
	
	// Set up our GMarkerOptions object
	markerOptions = { icon:letteredIcon };
	var marker = new GMarker(point, markerOptions);
						
	return marker;
}

// Create the encoded polyline and level strings. If moveMap is true
// move the map to the location of the first point in the polyline.
function createEncodings(points_x,points_y,level) {
  var i = 0;

  var plat = 0;
  var plng = 0;

  var encoded_points = "";
  var encoded_levels = "";
  
  for(i = 0; i < points_x.length; ++i) {
	  
    var lat = points_x[i];
    var lng = points_y[i];

    var late5 = Math.round(lat * 1e5);
    var lnge5 = Math.round(lng * 1e5);

    dlat = late5 - plat;
    dlng = lnge5 - plng;

    plat = late5;
    plng = lnge5;

    encoded_points += encodeSignedNumber(dlat) + encodeSignedNumber(dlng);
    encoded_levels += encodeNumber(level);
  }
  
  if (points_x.length > 1) {
	var encodedPolyline =  new GPolyline.fromEncoded({color: "#0000FF",
                                              weight: 6,
                                              points: encoded_points,
                                              zoomFactor: 32,
                                              levels: encoded_levels,
                                              numLevels: 4
                                             });
    return encodedPolyline;
  }
}

// Encode a signed number in the encode format.
function encodeSignedNumber(num) {
  var sgn_num = num << 1;

  if (num < 0) {
    sgn_num = ~(sgn_num);
  }

  return(encodeNumber(sgn_num));
}

// Encode an unsigned number in the encode format.
function encodeNumber(num) {
  var encodeString = "";

  while (num >= 0x20) {
    encodeString += (String.fromCharCode((0x20 | (num & 0x1f)) + 63));
    num >>= 5;
  }

  encodeString += (String.fromCharCode(num + 63));
  return encodeString;
}
/*-------------------------------------------------------------------------------------*/
/*GOOGLE MAPS UTILES V1															  	   */
/*-------------------------------------------------------------------------------------*/
/*
function coordenadaMin(arrayCoordenadas){
	var valor=0;		
	for(i=0;i<arrayCoordenadas.length;i++){
		if(valor!=""){
			if (valor > arrayCoordenadas[i]){
				valor = arrayCoordenadas[i];
			}
		}else{
			valor = arrayCoordenadas[i];
		}
	}
	return valor;
}
function coordenadaMax(arrayCoordenadas){
	var valor=0;
	for(i=0;i<arrayCoordenadas.length;i++){
		if(valor!=""){
			if (valor < arrayCoordenadas[i]){
				valor = arrayCoordenadas[i];
			}
		}else{
			valor = arrayCoordenadas[i];
		}
	}
	return valor;
}
function coordenadaMedio(arrayCoordenadas, valorDefault){
	var valormin=coordenadaMin(arrayCoordenadas);
	var valormax=coordenadaMax(arrayCoordenadas);
	var resultado = valorDefault;
	if(valormin!="" || valormax!=""){
		if(valormax<0 && valormin<0){
			resultado = (valormin - valormax)/(-2) + valormin;
		}else{
			resultado = (valormax - valormin)/2 + valormin;
		}
	}
	return resultado;
}
*/
function zoomOptimo(arrayX,arrayY,Constante){
	var Xmin= coordenadaMin(arrayX);
	var Xmax= coordenadaMax(arrayX);
	var Ymin= coordenadaMin(arrayY);
	var Ymax= coordenadaMax(arrayY);
	var aux1= Math.pow((Xmax -Xmin),2);
	var aux2= Math.pow((Ymax -Ymin),2);
	var distanciaXY = Math.sqrt(aux1+aux2);
	var	resultZoom = 17;
	
	if(distanciaXY==0){
		resultZoom = 14;
	}else{
		for(i=0;i<17-1;i++){
			if (distanciaXY > Constante * Math.pow(2,i)){
				resultZoom = 17 - 1 - i;
			}
		}
	}

	//Comprobemos resultado
	if (resultZoom < 0){
		resultZoom = 0;
	}
	return resultZoom;
}
function createMarker(point, index, tipoimg) {
	var baseIcon = new GIcon();
	baseIcon.shadow = "http://www.redextremadura.com/img/iconos/markerShadow.png";
	baseIcon.iconSize = new GSize(20, 34);
	baseIcon.shadowSize = new GSize(37, 34);
	baseIcon.iconAnchor = new GPoint(9, 34);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
	baseIcon.infoShadowAnchor = new GPoint(18, 25);
	
	var letteredIcon = new GIcon(baseIcon);
	switch(tipoimg){
		case "conciertos":
			letteredIcon.image = "http://www.redextremadura.com/img/iconos/marker_conciertos.png";
		  break;  
		case "teatros":
			letteredIcon.image = "http://www.redextremadura.com/img/iconos/marker_teatro.png";
		  break;    
		case "expo":
			letteredIcon.image = "http://www.redextremadura.com/img/iconos/marker_exposiciones.png";
		  break;    
		case "sub"://Para puntos cercanos
			letteredIcon.image = "http://www.redextremadura.com/img/iconos/submarker.png";
		  	break;
		default: //Para busquedas
			letteredIcon.image = "http://www.redextremadura.com/img/iconos/marker" + index + ".png";
	} 

	
	// Set up our GMarkerOptions object
	markerOptions = { icon:letteredIcon };
	var marker = new GMarker(point, markerOptions);
						
	return marker;
}
