/**
 * MapME is designed to hold mutual properties and method of MapoME and GmapME.
 * This method MUST NOT be used directly.
 */
function MapME() {
	
	/**
	 * attribut correspondant a la carte Maporama ou google ou autre...
	 */
	this.map;

	/**
	 * liste contenant les marqueurs pour affihage sur map
	 */
	this.markersList = new Array();	
	
	/**
	 * Fonction permettant d'initialiser la map
	 */
	this.mapLoad = function() {
		throw new Error("#mapLoad() has not been implemented");
	}
	
	/**
	 * focntion permettant d'initialiser la google map pour l'hotel passé en param
	 */
	this.mapHotelLoad = function(_indexHotel) {
		throw new Error("#mapHotelLoad() has not been implemented");
	}
	
	/**
	 * focntion permettant d'ajouter un marker pour l'hotel passé en param
	 */
	this.addMarkerOnMapHotel = function(lat,lng) {
		throw new Error("#addMarkerOnMapHotel() has not been implemented");
	}

	/**
	 * Fonction permettant d'ajouter un point correspondant a un Point d'Interet sur la carte
	 * on passe en parametre la longitude, la latitude ainsi que le type de POI afin de pouvoir differencier les images des marqueurs
	 * @param {Object} lat
	 * @param {Object} lgt
	 * @param {Object} typePOI
	 */
	this.addPOIOnMap = function(lat, lgt, typePOI){
		throw new Error("#addPOIOnMap() has not been implemented");
	}
	
	/**
	 * Fonction permettant d'jouter un point correspondant a un hotel sur la carte
	 * @param {Object} hotel
	 * @param {Object} index
	 */
	this.addHotelOnMap = function(hotel , index){
		throw new Error("#addHotelOnMap() has not been implemented");
	}
	
	/**
	 * Fonction permettant de recuperer les photos de l'hotel
	 * avant d'afficher une bulle d'informations
	 * 
	 * @param {Object} point
	 * @param {Object} hotel
	 * @param {Object} index
	 */
	this.getPhotos = function(map, marker, hotel) {
		throw new Error("#getPhotos() has not been implemented");
	}
	
	/**
	 * Creer la bulle d'infos lorsque les photos ont ete recues
	 */
	this.photosReceived = function (map, marker, hotel) {
		throw new Error("#photosReceived() has not been implemented");
	}
	
	/**
	 * Permet de selectionner un hotel sur la carte, de centrer la carte dessus et d'afficher l'info bulle correspondante
	 * @param {Object} idHotelEasy
	 */
	this.viewOnMap = function(idHotelEasy){
		throw new Error("#viewOnMap() has not been implemented");
	}
	
	/**
	 * Evenement mouseover sur un marqueur
	 * @param {Object} idHotelEasy
	 */
	this.viewOnMapMouseOver = function(idHotelEasy){
		throw new Error("#viewOnMapMouseOver() has not been implemented");
	}
	
	/**
	 * Evenement mouseout sur un marqueur
	 * @param {Object} idHotelEasy
	 */
	this.viewOnMapMouseOut = function(idHotelEasy){
		throw new Error("#viewOnMapMouseOut() has not been implemented");
	}
	
	/**
	 * Cette fonction permet de supprimer un marker de la carte
	 * @param {Object} marker
	 */
	this.removeMarker = function(marker){
		throw new Error("#removeMarker() has not been implemented");
	}

	/**
	 * Cette fonction calcule le centre et le zoom de la carte
	 * aprÃƒÂ¨s que tous les markers ont ÃƒÂ©tÃƒÂ© placÃƒÂ©s
	 */	
	this.zoomToFit = function(){
		throw new Error("#zoomToFit() has not been implemented");
	}
	
	/**
	 * Cette fonction met à  jour le zoom
	 * @param {Object} Lat
	 * @param {Object} Long
	 * @param {Object} zoom
	 */
	this.updateCenter = function(lat, lng, zoom){
		throw new Error("#updateCenter() has not been implemented");
	}
	
	/**
	 * Fonction permettant de cacluler la distance entre deux points 
	 * dont les corrdonnees sont passees en parametres
	 * @param {Object} lat1
	 * @param {Object} lgt1
	 * @param {Object} lat2
	 * @param {Object} lgt2
	 */
	this.calculDistance = function(lat1, lng1, lat2, lng2){
		return CalculDistance().compute(lat1, lng1, lat2, lng2);
	}
	
}

