﻿var key = "ABQIAAAAJRSOvwN6hpMwDQGpcGTEEBQdcf_AhGkamztjlPY_IO9Izn8F8BSGA1LSxdDcIPor0kAw_HOqk3Ax-Q";
function initLoader() {
  var script = document.createElement("script");
  script.src = "http://www.google.com/jsapi?key="+key+"&callback=loadMaps";
  script.type = "text/javascript";
  document.getElementsByTagName("head")[0].appendChild(script);
}
function loadMaps() {
	google.load("maps", "2",{"language" : locale,"callback" : mostrar_mapa});
}
var map;
var directions;
var marker;
var point;
var travel_mode = 1; //1 = DRIVING; 2 = WALKING
//div_map_container = map_container
//div_map = map
//div_directions = directions
//div_directions_main = directions_main

  function initialize(div_map,div_directions,div_directions_main,div_map_container,lat,long,nombre_hotel,direccion_hotel,poblacion_hotel) {
	jQuery('#directions_script').show();
	map = new google.maps.Map2(document.getElementById(div_map));
	//directions = new google.maps.Directions(map, document.getElementById(div_directions));
	//google.maps.Event.addListener(directions, "load", onDirectionsLoad);
	//google.maps.Event.addListener(directions, "addoverlay", onDirectionsAdd);
	//google.maps.Event.addListener(directions, "error", handleErrors);
	
	//Punto del alojamiento
	point = new google.maps.LatLng(lat, long);
	//Punto de la oficina UHC
	//var point2 = new google.maps.LatLng(41.653, 2.742462);
	map.setCenter(point, 14);
	
	var baseIcon = new google.maps.Icon();
          baseIcon.iconSize=new GSize(32,32);
          baseIcon.shadowSize=new GSize(56,32);
          baseIcon.iconAnchor=new GPoint(16,32);
          baseIcon.infoWindowAnchor=new GPoint(16,0);
    var icono = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal3/icon21.png", null, "http://maps.google.com/mapfiles/kml/pal3/icon21s.png");
	map.addOverlay(marker = new google.maps.Marker(point,{icon:icono,clickable:true}));
	google.maps.Event.addListener(marker, "click", function() {
		marker.openInfoWindowHtml('<span class="Text_gen"><b>'+nombre_hotel+'</b></span><br><span class="Text_gen">'+direccion_hotel+'</span><br><span class="Text_gen">'+poblacion_hotel+'</span>');
	  });
	//setDirections("corsega 77,Barcelona", "39.51216937573815,-0.45359373092651367 (Sidorme Paterna)", "es_ES");/
	map.enableContinuousZoom();
	map.addControl(new GSmallMapControl());
	map.addControl(new GHierarchicalMapTypeControl());
	//map.addControl(new GOverviewMapControl());
	map.addMapType(G_PHYSICAL_MAP);
  }
  function setDirections(fromAddress, toAddress, locale) {
	  if(jQuery('#'+div_directions_main).is(":visible")){
		  jQuery('#'+div_directions_main).slideUp("normal",function() {
			jQuery('#'+div_directions).empty();
			directions.load("from: " + fromAddress + " to: " + toAddress,{ locale: locale, travelMode: travel_mode });	
		  });
	  }
	  else{
		  jQuery('#'+div_directions).empty();
		  
		  directions.load("from: " + fromAddress + " to: " + toAddress,{ locale: locale, travelMode: travel_mode });	
	  }
	  locale_main = locale;
	}
	function handleErrors(){	
		var errorMessage = new Array;
	   if (directions.getStatus().code == G_GEO_UNKNOWN_ADDRESS){
		 errorMessage['en'] = errorMessage['fr'] =  "No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.<br>Error code: " + directions.getStatus().code;
		 errorMessage['es'] =  "No se puede encontrar correspondencia geográfica para la dirección especificada. Esto puede ser debido al hecho que la calle sea relativamente nueva, o puede que sea incorrecta.<br>Código de error: " + directions.getStatus().code;
		 errorMessage['ca'] =  "No es pot trobar la correspondéncia geográfica per la direcció indicada. Aixo pot ser degut al fet que el carrer sigui relativament nou, o que sigui incorrecte.<br>Còdi d'error: " + directions.getStatus().code;
	   }
	   else if (directions.getStatus().code == G_GEO_SERVER_ERROR){
		 errorMessage['en'] = errorMessage['fr'] =   "A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.<br>Error code: " + directions.getStatus().code;
		 errorMessage['es'] =  "La petición de dirección o geolocalización no pueden ser procesadas correctamente, la razón exacta de este fallo es desconocida.<br>Código de error: " + directions.getStatus().code;
		 errorMessage['ca'] =  "La petició de direcció o geolocalització no poden ser processades correctament, la raó exacta d'aquest error es desconeix.<br>Còdi d'error: " + directions.getStatus().code;
	   }
	   else if (directions.getStatus().code == G_GEO_MISSING_QUERY){
		 errorMessage['en'] = errorMessage['fr'] =  "The HTTP parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.<br>Error code: " + directions.getStatus().code;
		 errorMessage['es'] =  "El parametro HTTP falta o está vacio. Para peticiones de geolocalización, esto quiere decir que se ha introducido una dirección vacia. Para peticiones de dirección, quiere decir que no se ha especificado la consulta.<br>Código de error: " + directions.getStatus().code;
		 errorMessage['ca'] =  "El parametre HTTP falta o está vuit. Per a peticións de geolocalització vol dir que s'ha introduit una direcció vuida. Per a peticions de direcció, vol dir que no s'ha especificat la consulta.<br>Còdi d'error: " + directions.getStatus().code;
	   }
	//   else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
	//     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);
		 
	   else if (directions.getStatus().code == G_GEO_BAD_KEY){
		 errorMessage['en'] = errorMessage['fr'] =  "The given key is either invalid or does not match the domain for which it was given. <br>Error code: " + directions.getStatus().code;
		 errorMessage['es'] =  "La clave es inválida o no concuerda con el dominio actual. <br>Código de error: " + directions.getStatus().code;
		 errorMessage['ca'] =  "La clau introduida es invàlida o no concorda amb el domini actual. <br>Còdi d'error: " + directions.getStatus().code;
	   }
	   else if (directions.getStatus().code == G_GEO_BAD_REQUEST){
		 errorMessage['en'] = errorMessage['fr'] = "A directions request could not be successfully parsed.<br>Error code: " + directions.getStatus().code;
		 errorMessage['es'] =  "La pericion de dirección no puede ser parseada correctamente.<br>Código de error: " + directions.getStatus().code;
		 errorMessage['ca'] =  "La petició de direcció no pot ser processada correctament.<br>Còdi d'error: " + directions.getStatus().code;
	   }
	   else if (directions.getStatus().code == G_GEO_UNKNOWN_DIRECTIONS){
		 errorMessage['en'] = errorMessage['fr'] =   "There is no route available between the two points, or we do not have data for routing in that region.<br>Error code: " + directions.getStatus().code;
		 errorMessage['es'] =  "No hay ruta disponible entre los dos puntos, o no tenemos datos de rutas en esta región.<br>Código de error: " + directions.getStatus().code;
		 errorMessage['ca'] =  "No hi ha ruta disponible entre els dos punts, o no tenim dades de rutes en aquesta regió.<br>Còdi d'error: " + directions.getStatus().code;
	   }
	   else if (directions.getStatus().code == G_GEO_TOO_MANY_QUERIES){
		 errorMessage['en'] = errorMessage['fr'] =   "There are too many request at this time, please try later.<br>Error code: " + directions.getStatus().code;
		 errorMessage['es'] =  "Hay demasiadas peticiones en este momento, vuelve a intentarlo mas tarde.<br>Código de error: " + directions.getStatus().code;
		 errorMessage['ca'] =  "Hi han demasiades peticións en aquest moment, torna-ho a intentar mes tard.<br>Còdi d'error: " + directions.getStatus().code;
	   }
	   else{
		   errorMessage['en'] = errorMessage['fr'] =   "An unknown error occurred.";
		   errorMessage['es'] =  "Ha ocurrido un error inesperado.";
		   errorMessage['ca'] =  "Hi ha hagut un error inesperat.";
	   }
	   jQuery('#'+div_directions).html(errorMessage[locale_main]);
	   if(!marker){
			//var point2 = new google.maps.LatLng(41.653, 2.742462);
			map.setCenter(point, 13);
			map.addOverlay(marker = new google.maps.Marker(point,{clickable:true}));
			google.maps.Event.addListener(marker, "click", function() {
				marker.openInfoWindowHtml('<span class="Text_gen">'+nombre_hotel+'</b></span><br><span class="Text_gen">'+direccion_hotel+'</span><br><span class="Text_gen">'+poblacion_hotel+'</span>');
			  });
	   }
	   onDirectionsAdd();
	}
	function onDirectionsAdd(){
		jQuery('#'+div_directions_main).slideDown();
	}
	function onDirectionsLoad(){
		map.removeOverlay(marker);
		marker = false;
	  // Use this function to access information about the latest load()
	  // results.

	  // e.g.
	  // document.getElementById("getStatus").innerHTML = gdir.getStatus().code;
	  // and yada yada yada...
	}
	function mostrar_mapa(){
		var opciones = arguments[0] || {};
		/* asignamos valores a los atributos de este objeto. */
		div_map_container = opciones.div_map_container	|| 'map_container';//valor por default
		div_map = opciones.div_map	|| 'map';
		div_directions = opciones.div_directions	|| 'directions';
		div_directions_main = opciones.div_directions_main	|| 'directions_main';
		lat = opciones.lat	|| lat;
		long = opciones.long	|| long;
		nombre_hotel = opciones.nombre_hotel	|| nombre_hotel;
		direccion_hotel = opciones.direccion_hotel	|| direccion_hotel;
		poblacion_hotel = opciones.poblacion_hotel	|| poblacion_hotel;

			if(jQuery('#'+div_map_container).is(":hidden")){
				jQuery('#'+div_map_container).slideDown("normal",function() {
					initialize(div_map,div_directions,div_directions_main,div_map_container,lat,long,nombre_hotel,direccion_hotel,poblacion_hotel);
				});
			}
			else{
				initialize(div_map,div_directions,div_directions_main,div_map_container,lat,long,nombre_hotel,direccion_hotel,poblacion_hotel);
			}
		}
		/*jQuery(document).ready(function(){
			jQuery('#como_llegar').click(function() { initLoader(); return false; });
		});*/
  		jQuery(document).ready(initLoader);

