﻿
/*
Modélisation d'un pays
*/
function SourisMini_PointsVente_Pays( nom, valeur )
{
	this.nom = nom;
	this.valeur = valeur;
}

/*
Modélisation d'une région
*/
function SourisMini_PointsVente_Region( pays, nom, centre_latitude, centre_longitude, zoom )
{
	this.pays = pays;
	this.nom = nom;
	this.centre_latitude = centre_latitude;
	this.centre_longitude = centre_longitude;
	this.zoom = zoom;
}

/*
Modélisation d'une ville
*/
function SourisMini_PointsVente_Ville( pays, region_nom, nom )
{
	this.pays = pays;
	this.region_nom = region_nom;
	this.nom = nom;
}

/*
Enum des types
*/
SourisMini_PointsVente_Type_Boutique = 'boutique';
SourisMini_PointsVente_Type_Mini = 'mini';

/*
Modélisation d'une boutique
*/
function SourisMini_PointsVente_Boutique( pays, region_nom, nom, adresse, ville, province, code_postal, telephone, type, latitude, longitude, heures )
{
	this.pays = pays;
	this.region_nom = region_nom;
	this.nom = nom;
	this.adresse = adresse;
	this.ville = ville;
	this.province = province;
	this.code_postal = code_postal;
	this.telephone = telephone;
	this.type = type;
	this.latitude = latitude;
	this.longitude = longitude;
	this.heures = heures;
	
	var refObj = this; //Utilisé pour éviter le conflit de «this» dans la fonction AjoutMarqueur
	
	this.AjoutMarqueurLatLng = function()
	{
		//image du marqueur
		var image = null;
		if( this.type == SourisMini_PointsVente_Type_Mini )
		{
			image = new google.maps.MarkerImage('../repository/site/img/google_map/icon_level_1_mini.png',
				// Largeur du marqueur
				new google.maps.Size(47, 17),
				// Offset de l'image du marqueur
				new google.maps.Point(0,0),
				// Offset du marqueur
				new google.maps.Point(23, 17)
			);
		}
		else
		{
			image = new google.maps.MarkerImage('../repository/site/img/google_map/icon_level_1.png',
				// Largeur du marqueur
				new google.maps.Size(47, 17),
				// Offset de l'image du marqueur
				new google.maps.Point(0,0),
				// Offset du marqueur
				new google.maps.Point(23, 17)
			);
		}
		
		//Ajout du marqueur à la map
		var marker = new google.maps.Marker(
		{
			position: new google.maps.LatLng(this.latitude,this.longitude),
			map: map,
			icon: image,
			zIndex: 1,
			title: refObj.nom
		});

		//Association du marqueur et de la boutique
		marker.boutique = refObj;

		//Ajout à liste des marqueurs
		listMarkers.push( marker );

		//Ajout de l'event click sur le marqueur
		google.maps.event.addListener( marker, 'click', function()
		{
			if( marker.boutique.type == SourisMini_PointsVente_Type_Mini )
			{
				infowindow.setContent( 
					BMG_Utilities_Format( 
						SourisMini_PointsVente_Boutique_Template_Mini, 
						marker.boutique.nom ,
						marker.boutique.adresse,
						marker.boutique.ville,
						marker.boutique.province,
						marker.boutique.code_postal,
						marker.boutique.telephone,
						SourisMini_PointsVente_Boutique_FormatHeures(marker.boutique.heures)
					)
				);
			}
			else
			{
				infowindow.setContent( 
					BMG_Utilities_Format( 
						SourisMini_PointsVente_Boutique_Template, 
						marker.boutique.nom ,
						marker.boutique.adresse,
						marker.boutique.ville,
						marker.boutique.province,
						marker.boutique.code_postal,
						marker.boutique.telephone,
						SourisMini_PointsVente_Boutique_FormatHeures(marker.boutique.heures)
					)
				);
			}
			infowindow.open(map,marker);
		});
	};
	
	this.AjoutMarqueurGeocoder = function( results, status)
	{
		
		
		if (status == google.maps.GeocoderStatus.OK) 
		{
			if (status != google.maps.GeocoderStatus.ZERO_RESULTS) 
			{
			
				//image du marqueur
				var image = null;
				image = new google.maps.MarkerImage('../repository/site/img/google_map/icon_level_1.png',
					// Largeur du marqueur
					new google.maps.Size(47, 17),
					// Offset de l'image du marqueur
					new google.maps.Point(0,0),
					// Offset du marqueur
					new google.maps.Point(23, 17)
				);
				
				//Ajout du marqueur à la map
				var marker = new google.maps.Marker(
				{
					position: results[0].geometry.location,
					map: map,
					icon: image,
					zIndex: 1,
					title: refObj.nom
				});

				//Association du marqueur et de la boutique
				marker.boutique = refObj;

				//Ajout à liste des marqueurs
				listMarkers.push( marker );

				//Ajout de l'event click sur le marqueur
				google.maps.event.addListener( marker, 'click', function()
				{
					infowindow.setContent( 
						BMG_Utilities_Format( 
							SourisMini_PointsVente_Boutique_Template, 
							marker.boutique.nom ,
							marker.boutique.adresse,
							marker.boutique.ville,
							marker.boutique.province,
							marker.boutique.code_postal,
							marker.boutique.telephone,
							SourisMini_PointsVente_Boutique_FormatHeures(marker.boutique.heures)
						)
					);
					infowindow.open(map,marker);
				});
			
				/*				
				var image = new google.maps.MarkerImage('../repository/site/img/google_map/icon_level_2.png',
					// Largeur du marqueur
					new google.maps.Size(93, 33),
					// Offset de l'image du marqueur
					new google.maps.Point(0,0),
					// Offset du marqueur
					new google.maps.Point(46, 33)
				);
				*/

			}
		}
/*
*/
	};
}

function SourisMini_PointsVente_Marker_Click()
{
	var marker = this;
	//map.setCenter( marker.position );

}