

var googleKey = 'ABQIAAAALYRDnGJbVnPGk1FJXOYGERSjAHnZl7n3uWAy1ZDWnzIjyYUxkBRvaz673AwLuT-W-YQlFW7HB_zsPQ';
var googleMap;
var mapObject;
var gdir;
var optionsLocation;
var arrayLocations = new Array(); 
var ROUTE_DIV = 'route';
var NO_RESULTS_TEXT = 'google_sin_resultados';
var RESERVATION = 'Prenotare  ';
var ROOM_FROM = 'Camera a partire da';
var HOTEL_FOUND = ' Hotel trovato';
var HOTELS_FOUND = ' Hotels trovati';
var PATH_SEARCH = '/nh/it/hotels';
var PATH_BASE_IMAGE = '/nh/img/map/pin';
var PATH_IMAGE_EXTENSION = '.gif';


<!-- 
/*****************************
**	DECLARACIÓN DE OBJETOS  **
******************************/

// Objeto con toda la informacion util de un hotel para poder ser pintado en el mapa.
function HotelData(name, address, category, phone, price, priceInfo, description, url, image, urlReservation, latitude, longitude, inSuburbs) {
	this.name = (name!=null)?name.innerHTML:"";
	this.address = (address!=null)?address.innerHTML:"";
	this.category = (category!=null && category.src!="")?category.src:BASE_URL + "/img/map/transparent.gif";
	this.phone = (phone!=null)?phone.innerHTML:"";
	this.price = (price!=null)?price.innerHTML:"";
	this.priceInfo = (priceInfo!=null)?priceInfo.innerHTML:"";
	this.description = (description!=null)?description.innerHTML:"";
	this.url = (url!=null)?url.href:"";
	this.image = (image!=null)?image.src:"";
	this.urlReservation = (urlReservation!=null)?('parent.' + urlReservation.innerHTML):"";
	this.roomFrom = ROOM_FROM;
	this.reservation = RESERVATION;
	this.latitude = (latitude!=null)?latitude.value:"";
	this.longitude = (longitude!=null)?longitude.value:"";
	this.inSuburbs = (inSuburbs!=null)?inSuburbs.value:"";
}

function CityData(name, url, hotels, latitude, longitude) {
	this.name = (name!=null)?name.innerHTML:"";
	this.url = (url!=null)?url.href:"";
	this.hotels = (hotels!=null)?hotels.value:"";
	this.latitude = (latitude!=null)?latitude.value:"";
	this.longitude = (longitude!=null)?longitude.value:"";
}

function CountryData(name, url, hotels, latitude, longitude) {
	this.name = (name!=null)?name.innerHTML:"";
	this.url = (url!=null)?url.href:"";
	this.hotels = (hotels!=null)?hotels.value:"";
	this.latitude = (latitude!=null)?latitude.value:"";
	this.longitude = (longitude!=null)?longitude.value:"";
}

function NHPoint (latitude, longitude, zoom) {
	this.latitude = (latitude!=null)?latitude.innerHTML:"";
	this.longitude = (longitude!=null)?longitude.innerHTML:"";
	this.zoom = (zoom!=null)?zoom.innerHTML:"";
}

// Objeto con las propiedades del mapa, todo lo incluido debería estar parametrizado
function NHGoogleMap (zoom){
	this.mapTypeActive = true;		// Mapa, Satélite y Relieve.
	this.scaleActive = false;		// Muestra la escala del mapa.
	this.mapOverviewActive = false;	// Muestra un mini-mapa navegable.
	this.googleSearch = false;		// Muestra el buscador de Google.
	this.zoomDefault = zoom;		// Activa el zoom por defecto.
	this.mapType = G_NORMAL_MAP;	// Indica el tipo de mapa a mostrar por defecto.
	this.mapControl = new GSmallMapControl();	// Indica el tipo de control a mostrar por defecto.
	this.scrollWheelZoom = false;	// Indica si activar el zoom con movimiento de rueda del ratón.
	this.progressZoom = true 		// Indica que al hacer zoom en un mapa se haga progresivamente y no de golpe. 	 
}

// Objeto correspondiente a una búsqueda
function NHAddressPoint (country, city, freeText){
	this.country = country;
	this.city = city;
	this.freeText = freeText;
}

// Objeto referente a un pin/POI
function NHMarker (iconPath, iconShadowPath, latitude, longitude, data, text) {
	this.iconPath = iconPath;
	this.iconShadowPath = iconShadowPath;
	this.latitude = latitude;
	this.longitude = longitude;
	this.data = data;
	this.text = (text!=null && text!='')?text:'';
}

// Objeto referente a un punto encontrado y que desglosa el XML recibido
function NHLocation (place) {
	this.latitude = place.Point.coordinates[1];
	this.longitude = place.Point.coordinates[0];
	this.street = place.address;
	this.country = place.AddressDetails.Country.CountryNameCode;
	var administrativeArea = place.AddressDetails.Country.Administrative; 
	if (administrativeArea!=null && administrativeArea.SubAdministrativeArea !=null){
		this.city = administrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;
		if (administrativeArea.SubAdministrativeArea.Locality != null) {
			this.locality = administrativeArea.SubAdministrativeArea.Locality.LocalityName;
			if (administrativeArea.SubAdministrativeArea.Locality.PostalCode!=null){
				this.zip=administrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber;		
			} else {
				this.zip = '';
			}
		} else {
			this.locality = '';
			this.zip = ''; 
		}
	}else {
		this.zip = '';
		this.locality = '';
		this.city = '';
	}
}

// Objeto referente al rectangulo que comprende x puntos en GoogleMaps
function NHRectangle (latitudeNE, longitudeNE, latitudeSW, longitudeSW) {
	this.northEast = new GLatLng(latitudeNE, longitudeNE);
	this.southWest = new GLatLng(latitudeSW, longitudeSW);
	this.rectangle = new GLatLngBounds (this.southWest, this.northEast);
}

// Objecto referente a las necesidades disponibles para geolocalizar 
function NHOptionsLocation(URL, showAllResults, htmlFormattedResults, idDivResults) {
	this.url = URL;
	this.showAll = showAllResults;
	this.htmlFormatted = (htmlFormattedResults == null || htmlFormattedResults == '')?'':htmlFormatted;
	this.idDiv = idDivResults;
}

/*****************************
**	TRATAMIENTO DE OBJETOS  **
******************************/

var HOTEL_NAME_ID_PREFIX = 'hotel_name_';
var HOTEL_ADDRESS_ID_PREFIX = 'hotel_address_';
var HOTEL_CATEGORY_ID_PREFIX = 'hotel_category_';
var HOTEL_PHONE_PREFIX = 'hotel_phone_';
var HOTEL_PRICE_ID_PREFIX = 'hotel_price_';
var HOTEL_PRICE_INFO_ID_PREFIX = 'hotel_price_info_';
var HOTEL_DESCRIPTION_ID_PREFIX = 'hotel_description_';
var HOTEL_URL_ID_PREFIX = 'hotel_url_';
var HOTEL_IMAGE_ID_PREFIX = 'hotel_image_';
var HOTEL_URL_RESERVATION_ID_PREFIX = 'hotel_url_reservation_';
var HOTEL_LATITUDE_PREFIX = 'hotel_latitude_';
var HOTEL_LONGITUDE_PREFIX = 'hotel_longitude_';
var HOTEL_INSUBURBS_PREFIX = 'hotel_insuburbs_';

function getHotelData(id) {
	var parentDocument = window.parent;
	var name = get(HOTEL_NAME_ID_PREFIX + id, parentDocument);
	var address = get(HOTEL_ADDRESS_ID_PREFIX + id, parentDocument);
	var category = get(HOTEL_CATEGORY_ID_PREFIX + id, parentDocument);
	var phone = get(HOTEL_PHONE_PREFIX + id, parentDocument);
	var price = get(HOTEL_PRICE_ID_PREFIX + id, parentDocument);
	var priceInfo = get(HOTEL_PRICE_INFO_ID_PREFIX + id, parentDocument);
	var description = get(HOTEL_DESCRIPTION_ID_PREFIX + id, parentDocument);
	var url = get(HOTEL_URL_ID_PREFIX + id, parentDocument);
	var image = get(HOTEL_IMAGE_ID_PREFIX + id, parentDocument);
	var urlReservation = get(HOTEL_URL_RESERVATION_ID_PREFIX + id, parentDocument);
	var latitude = get(HOTEL_LATITUDE_PREFIX + id, parentDocument);
	var longitude = get(HOTEL_LONGITUDE_PREFIX + id, parentDocument);
	var inSuburbs = get(HOTEL_INSUBURBS_PREFIX + id, parentDocument);
	var hotelData = new HotelData(name, address, category, phone, price, priceInfo, description, url, image, urlReservation, latitude, longitude, inSuburbs);
	return hotelData;
}

var CITY_NAME_PREFIX = 'city_name_';
var CITY_URL_PREFIX = 'city_url_';
var CITY_HOTELS_PREFIX = 'city_hotels_';
var CITY_LATITUDE_PREFIX = 'city_latitude_';
var CITY_LONGITUDE_PREFIX = 'city_longitude_';

function getCityData(id) {
	var parentDocument = window.parent;
	var name = get(CITY_NAME_PREFIX + id, parentDocument);	
	var url = get(CITY_URL_PREFIX + id, parentDocument);
	var hotels = get(CITY_HOTELS_PREFIX + id, parentDocument);
	var latitude = get(CITY_LATITUDE_PREFIX + id, parentDocument);
	var longitude = get(CITY_LONGITUDE_PREFIX + id, parentDocument);
	var cityData = new CityData(name, url, hotels, latitude, longitude);
	return cityData;
}

var COUNTRY_NAME_PREFIX = 'country_name_';
var COUNTRY_URL_PREFIX = 'country_url_';
var COUNTRY_HOTELS_PREFIX = 'country_hotels_';
var COUNTRY_LATITUDE_PREFIX = 'country_latitude_';
var COUNTRY_LONGITUDE_PREFIX = 'country_longitude_';

function getCountryData(id) {
	var parentDocument = window.parent;
	var name = get(COUNTRY_NAME_PREFIX + id, parentDocument);	
	var url = get(COUNTRY_URL_PREFIX + id, parentDocument);
	var hotels = get(COUNTRY_HOTELS_PREFIX + id, parentDocument);
	var latitude = get(COUNTRY_LATITUDE_PREFIX + id, parentDocument);
	var longitude = get(COUNTRY_LONGITUDE_PREFIX + id, parentDocument);
	var cityData = new CityData(name, url, hotels, latitude, longitude);
	return cityData;
}

var MAP_CENTER = 'map_center';

function getCenterMap() {
	var parentDocument = window.parent;
	var center = get(MAP_CENTER, parentDocument);
	var point = new NHPoint(0,0,0);
	if (center == null) return point;
	var attributes = (center != null)?center.value.split(','):'';
	if (attributes.length != 3) return point;
	
	point.latitude = attributes[0].replace(' ','');
	point.longitude = attributes[1].replace(' ','');
	point.zoom = parseInt(attributes[2].replace(' ',''));

	return point;
}

function getRectangleMap() {
	var parentDocument = window.parent;
	var rectangleMap = get(MAP_CENTER, parentDocument);
	var rectangle = new NHRectangle(0,0,0,0);
	if (rectangleMap == null) return rectangle;
	var attributes = (rectangleMap != null)?rectangleMap.value.split(','):'';
	if (attributes.length != 4) return rectangle;
	rectangle = new NHRectangle (attributes[0].replace(' ',''),attributes[1].replace(' ',''),attributes[2].replace(' ',''),attributes[3].replace(' ',''));
	return rectangle;
}

var SIZE_ELEMENTS = 'size_elements';
function getTotalElements() {
	var parentDocument = window.parent;
	var size = get(SIZE_ELEMENTS, parentDocument);
	return (size == null)?0:size.value;
}

var SEARCH_BY_TOWN = 'search_by_town';
function isSearchByTown() {
	var parentDocument = window.parent;
	var byTown = get(SEARCH_BY_TOWN, parentDocument);
	return (byTown == null)?false:byTown.value;
}

var MARKER_LOCATION = 'marker_location';
var TEXT_LOCATION = 'text_location';
function createMarkerLocation() {
	var parentDocument = window.parent;
	var markerLocation = get(MARKER_LOCATION, parentDocument);
	var textLocation = get(TEXT_LOCATION, parentDocument);
	var marker = new NHMarker(PATH_BASE_IMAGE + 'Location' + PATH_IMAGE_EXTENSION, '', '', '', '', '');
	if (markerLocation == null) return marker;	
	var coords = (markerLocation != null)?markerLocation.value.split(','):'';
	if (coords.length != 2) return marker;
	marker.latitude = coords[0];
	marker.longitude = coords[1];
	if (textLocation == null) return marker;
	marker.text = '<h2> ' + textLocation.value + '</h2>';
	return marker;
}
-->