// EVENTOS //////////////////////////////////////////////////////////////////////////////////////////////////////////
var flSubmit = false;
window.onunload = GUnload;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function val(id) {
	var obj = document.getElementById(id);
	if (obj) {
		return obj.value;
	}
	return "";
}

var ANCHO_ICONO_MAPA = 21;

var markers = new Array();
var NOM_CENTROS = new Array();

var IDS_CENTROS = new Array();
var LAT_CENTROS = new Array();
var LNG_CENTROS = new Array();
var DIS_CENTROS = new Array();
var DIR_CENTROS = new Array();
var TLF_CENTROS = new Array();
var URL_CENTROS = new Array();

// Para cargar los logos
var IMG_LOGOS_MAPA = new Array();
var IMG_LOGOS_NORMAL = new Array();
//var IMG_LOGOS = new Array();
var RUTA_LOGOS_MAPA = "/centros/fotos/logos/mapa/";
var RUTA_LOGOS_NORMAL = "/centros/fotos/logos/normal/";

var controlZoom = null; 
var controlTipo = null; 
var map = null;

function gmapsBuscadorOfertasEmpleoIniciar() {

	// Para google suggest
	if ( get('search-servicios') ) {
		gsc_hide(get('search-nombre'));
		gsc_hide(get('search-servicios'));
		gsc_hide(get('search-sintomas'));
		gsc_hide(get('search-productos'));
	}



	controlZoom = new GLargeMapControl();
	controlTipo = new GMapTypeControl();
	
	if (get('formu')) {
		get('formu').onsubmit = function() {
			if(get('idprovincia').value=='0') {
				alert('Debe rellenar el campo obligatorio provincia');
				return false;		
			} else if (flSubmit) {
				get('formu').submit();
			} else {
				if (val("cp")=="" && val("idmunicipio")=="0" && val("idprovincia")=="0") {
					// Si no hay criterios de búsqueda para la dirección -> no buscar coordenadas
					flSubmit=true; get('formu').submit();					
				} else {
					//get("localidad").value = quitarTildes(val("localidad"));
					//get("provincia").value = quitarTildes(val("provincia"));				
				
					var jsEncontrada = "flSubmit=true; get('formu').submit();"
					var jsNoEncontrada = "alert('Dirección no encontrada. Se hará una búsqueda por nombres de campos'); " + 
										 "flSubmit=true; get('formu').submit();"
					gmapsBuscarDireccion(jsEncontrada, jsNoEncontrada, true);
				}
			}
			return false;
		}			
	}
	
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map_canvas"));
	
	var latCentroMapa = get('gmapsLat').value;
	var longCentroMapa = get('gmapsLong').value;
	if (latCentroMapa=="") latCentroMapa = 0;
	if (longCentroMapa=="") longCentroMapa = 0;
	
	var zoom;
	var radio = val("distancia");
	if (radio=="") radio = 0;
	if (val("unidadDistancia")=="m") {
		radio /= 1000;
	}	
	
	if ((latCentroMapa==0 && longCentroMapa==0) || (val("cp")=="" && val("idmunicipio")=="0" && val("idprovincia")=="0")) {
		if (latCentroMapa==0 && longCentroMapa==0) {
			zoom = 5;
		} else {
			// Obtener un zoom adecuado al radio de búsqueda		
			zoom = zoomAdecuado(radio);	
		}

		// Calle Colón de Madrid por defecto
		//latCentroMapa = 40.425224;
		//longCentroMapa = -3.690741;

		latCentroMapa = 40.42382;
		longCentroMapa = -3.700802;
		
		get('gmapsLat').value = latCentroMapa;
		get('gmapsLong').value = longCentroMapa;
	} else {
		// Obtener un zoom adecuado al radio de búsqueda
		zoom = zoomAdecuado(radio);	
	}

    map.setCenter(new GLatLng(latCentroMapa, longCentroMapa), zoom);
	// ****************************************************************

    //map.addControl(new GSmallMapControl());
	map.addControl(controlZoom);
    map.addControl(controlTipo);


	// ****************************************************************
	if (get("btnBuscar")) {
	//	return;
	}
	// ****************************************************************
	
	//map.removeControl(controlTipo);
	
	//map.setMapType(G_SATELLITE_MAP);
	 //map.setMapType(G_NORMAL_MAP),
	
    // Create a base icon for all of our markers that specifies the
    // shadow, icon dimensions, etc.

//    Para usar letras en vez de iconos, descomentar:
    var baseIcon = new GIcon();
    baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.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);
*/

    baseIcon.iconSize = new GSize(10, 17);
    baseIcon.shadowSize = new GSize(18, 17);
    baseIcon.iconAnchor = new GPoint(4, 17);
    baseIcon.infoWindowAnchor = new GPoint(4, 1);
    baseIcon.infoShadowAnchor = new GPoint(9, 12);



    // Creates a marker whose info window displays the letter corresponding
    // to the given index.
    function createMarker(point, index, idcentro) {
      // Create a lettered icon for this point using our icon class
      var letter = String.fromCharCode("A".charCodeAt(0) + index);

//    Para usar letras en vez de iconos, cambiar:
      var letteredIcon = new GIcon(baseIcon);
      
	  // Corregir ancho iconos (a veces IE no es capaz de cargarlos con el ancho correcto)
      var widthIcon = IMG_LOGOS_MAPA[index].width;
      var altoMini = get("logoMini" + IDS_CENTROS[index]).height;
      var anchoMini = get("logoMini" + IDS_CENTROS[index]).width;
	  var heightIcon = altoMini*(widthIcon/anchoMini);

//    Para usar letras en vez de iconos, cambiar:      
      letteredIcon.iconSize = new GSize(widthIcon, heightIcon);
//    Para usar letras en vez de iconos, descomentar:            
//    letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";

      letteredIcon.image = IMG_LOGOS_MAPA[index].src;
//	letteredIcon.image = "/centros/fotos/logos/mini/prueba.gif";

      // Set up our GMarkerOptions object
      markerOptions = { icon:letteredIcon };
      var marker = new GMarker(point, markerOptions);
	  marker.letter = letter;
      GEvent.addListener(marker, "click", function() {
        openInfoMarcador(marker);
      });
      return marker;
    }

    for (var i = 1; i < IDS_CENTROS.length; i++) {
      var point = new GLatLng(LAT_CENTROS[i], LNG_CENTROS[i]);

	  var marker = createMarker(point, i, IDS_CENTROS[i]);
	  marker.idCentro = IDS_CENTROS[i];	  
	  marker.nomCentro = NOM_CENTROS[i];
	  marker.tlf= TLF_CENTROS[i];
	  marker.url = URL_CENTROS[i];
	  marker.dirCentro = DIR_CENTROS[i];

	  /*
	  if (IMG_LOGOS_MAPA[i].src.indexOf("marker") != -1) {
	  	// Usa un marker de google maps
	  	marker.srcLogo = IMG_LOGOS_MAPA[i].src.replace(/\/mapa\//, "/mini/");	  
	  } else {
	  	//marker.srcLogo = RUTA_LOGOS_NORMAL + "logo" + IDS_CENTROS[i] + ".png";	  
	  	marker.srcLogo = IMG_LOGOS_NORMAL[i].src;
	  }
	  */
		
	  marker.srcLogo = IMG_LOGOS_NORMAL[i].src;	
		
	  // Guardar el marcador en un array para poder usarlo luego
	  markers[markers.length] = marker;
      map.addOverlay(marker);
    }
  }
}

function zoomAdecuado(radioKm) {

	if (radioKm==0) {
		return 5;
	} else if (radioKm<0.2) {
		return 17;
	} else if (radioKm<0.5) {
		return 16;
	} else if (radioKm<1) {
		return 15;
	} else if (radioKm<2) {
		return 14;
	} else if (radioKm<3) {
		return 13;
	} else if (radioKm<4) {
		return 12;
	} else if (radioKm<5) {
		return 11;
	} else if (radioKm<10) {
		return 10;
	} else if (radioKm<25) {
		return 9;
	} else if (radioKm<50) {
		return 8;
	} else if (radioKm<200) {
		return 7;
	} else if (radioKm<500) {
		return 6;
	}

	return 5;
}

function openInfoMarcador(marker) {
	map.setZoom(zoomAdecuado(0.3/*Km*/));
	
	var html_ini = 		'<strong class="azul">Ofertas que coinciden con tu búsqueda:</strong><br /><br />' + 
						 (marker.url == '' ? "" : '<a class="azul" href="' + marker.url + '">Visitar Web</a><br /><br />') + // <- Si no tiene url no se muestra el enlace de visitar
						'<div class="divBocadillo">' + 
							  '<span id="descOferta">';

	var html_fin = 		  	  '</span><br /><br />' +
						'</div>';

	marker.openInfoWindowHtml(html_ini + 'Consultando datos...' + html_fin); 									  

	$.get('/servlet/BuscadorOfertasEmpleo?accion=info', {idCentro:marker.idCentro, oferta:val('oferta')}, function(data) {
		marker.openInfoWindowHtml(html_ini + data + html_fin); 
	});
}

function inscribirse(idOferta) {
	if ($('#sesion a[href^=/servlet/Demandas]').size() == 0) {
		alert('Debes iniciar sesión como profesional para poder inscribirte a una oferta.');
	} else {
		if (confirm('Se envirá una comunicación al administrador del centro con tu nombre y e-mail para que se ponga en contacto contigo.\n' +
					 '¿Aceptas el envío de dichos datos?')) {

			$.get('/servlet/BuscadorOfertasEmpleo?accion=inscribirse', {idOferta:idOferta}, function(data) {
				alert(data); 
			});			
		}
	}
}

function mostrarMarcador(n) {
	var marker = markers[n];
    openInfoMarcador(marker);
}

function mostrarControlZoom(mostrar) {
	if (mostrar) {
		map.addControl(controlZoom);
	} else {
		map.removeControl(controlZoom);
	}
}
function mostrarControlTipo(mostrar) {
	if (mostrar) {
		map.addControl(controlTipo);
	} else {
		map.removeControl(controlTipo);
	}
}



