////////gmap_file////////
var maCarte;
var geocodeur;
var iconeChateau;
//var sem_1_decembre = 4;
var sem_1_decembre = 15;
var sem_2_decembre = 11;
var sem_3_decembre = 18;
var sem_4_decembre = 25;
var date = new Date();

// Initialisation de la premiere carte google map
function initialize() {
	
	if (GBrowserIsCompatible()) {
		geocodeur = new GClientGeocoder();
		maCarte = new GMap2(document.getElementById('google_map_1'));
		maCarte.setCenter(new GLatLng(47.9, 1.9), 5);
		maCarte.setUIToDefault();
		
		// On va rechercher tous les magasins
		rechercheProximite();
		
	}
	else{
		alert('Désolé, mais votre navigateur n\'est pas compatible avec Google Maps');
	}
	
}

// Fonction utilisee quand l'utilisateur indique un lieu
function geocodeAdresse() {
	
	var adresse = document.getElementById('search_cp').value;
	
	// Cas special pour nancy il nous envoie aux US!!!
	if( adresse == 'nancy' || adresse == 'bayonne' || adresse == 'macon' || adresse == 'le cres' )
		adresse += ' france';
	
	geocodeur.getLatLng(adresse, function(latlng) {
		
		// Si l'utilisateur ne saisit rien on se remet à la position initiale ( on remet la premiere carte et tous les magasins )
		if( adresse == 'Adresse, code postal, ville, département, région,...' ) {
			
			document.getElementById('google_map_2_bloc').style.display = 'none';
			document.getElementById('google_map_1').style.display = 'block';
			
			maCarte = new GMap2(document.getElementById('google_map_1'));
			maCarte.setCenter(new GLatLng(47.9, 1.9), 5);
			maCarte.setUIToDefault();
			
			rechercheProximite();
		
		}
		else if (!latlng) {
			
			alert(adresse + ' introuvable');
		}
		else {
			
			rechercheProximite(latlng);
		}
	});
}

// Recherche des differents magasins selon les criteres selectionnes
function rechercheProximite(latlng) {
	
	// On va tout d'abord regarde si l'utilisateur a coche ou non les differents criteres
	var confection = ( document.getElementById('confection').checked )? 'true':'false';
	var chaussure = ( document.getElementById('chaussure').checked )? 'true':'false';
	var bazar = ( document.getElementById('bazar').checked )? 'true':'false';
	var hygiene = ( document.getElementById('hygiene').checked )? 'true':'false';
	var mariage = ( document.getElementById('mariage').checked )? 'true':'false';
	var or = ( document.getElementById('or').checked )? 'true':'false';
	//var dimanche = ( document.getElementById('dimanche').checked )? 'true':'false';
	var nouveau = ( document.getElementById('nouveau').checked )? 'true':'false';
	
	//var param_sup = 'confection='+confection+'&chaussure='+chaussure+'&bazar='+bazar+'&hygiene='+hygiene+'&mariage='+mariage+'&or='+or+'&dimanche='+dimanche+'&nouveau='+nouveau;
	var param_sup = 'confection='+confection+'&chaussure='+chaussure+'&bazar='+bazar+'&hygiene='+hygiene+'&mariage='+mariage+'&or='+or+'&nouveau='+nouveau;
	
	var rayon = document.getElementById('search_km').value;
	if( rayon > 100 )
		rayon = 100;
	
	// Si on se trouve dans la deuxieme carte, et que l'on clique sur les filtres on y reste!!!
	if( document.getElementById('google_map_2_bloc').style.display == 'block' && typeof(latlng) == 'undefined' ) {
	
		var adresse = document.getElementById('search_cp').value;
		
		// On va chercher la geolocalisation a partir de l'adresse saisie
		geocodeur.getLatLng(adresse, function(latlng) {
			
			var requeteRecherche = 'ajax_generate_xml_map.php?lat=' + latlng.lat() + '&lng=' + latlng.lng() + '&rayon=' + rayon + '&' + param_sup;
			
			// On effectue la requete suivant les filtres indiques
			GDownloadUrl(requeteRecherche, function(data) {
				var xml = GXml.parse(data);
				var marqueurs = xml.documentElement.getElementsByTagName('marqueur');
				maCarte.clearOverlays();
				
				var listeLaterale = document.getElementById('resultats_recherche');
				listeLaterale.innerHTML = '';
				
				var marqueurs_length = marqueurs.length;
				if( marqueurs_length > 40 )
					marqueurs_length = 40;
				
				// S'il la recherche n'aboutit a aucun resultat on met la carte sur la position initiale et on affiche qu'aucun resultat n'a ete trouve
				if (marqueurs_length == 0) {
					listeLaterale.innerHTML = '<span style="font-family:EssaiRegular;color:#E9568E;font-size:18px;">Aucun résultat trouvé</span><span></span>';
					maCarte.setCenter(new GLatLng(47.9, 1.9), 5);
					return;
				}
				else {
				
					listeLaterale.innerHTML += '<span style="font-family:EssaiRegular;color:#E9568E;font-size:18px;">Résultats :</span><span></span>';
					listeLaterale.innerHTML += '<div class="bloc"><p>(' + marqueurs_length + ' magasins trouv&eacute;s)</p></div>';
				
				}
				
				// On va creer les marqueurs puis la liste laterale qui est une correspondance des marqueurs suivant la proximite de l'adresse saisie
				var rectangleMarqueurs = new GLatLngBounds();
				for (var i = 0; i < marqueurs_length; i++) {
					var nom = marqueurs[i].getAttribute('nom');
					var adresse = marqueurs[i].getAttribute('adresse');
					var ville = marqueurs[i].getAttribute('ville');
					var tel = marqueurs[i].getAttribute('tel');
					var ouverture = marqueurs[i].getAttribute('ouverture');
					if( marqueurs[i].getAttribute('distance') ) var distance = parseFloat(marqueurs[i].getAttribute('distance'));
					var point = new GLatLng(parseFloat(marqueurs[i].getAttribute('lat')), parseFloat(marqueurs[i].getAttribute('lng')));
					
					var marqueur = creerMarqueur(point, nom, adresse, ville, tel, ouverture, (i+1));
					
					var nouvelleLigneListe = creerLigneListe((i+1), ouverture, nom, adresse, ville, tel, distance, marqueur);
					listeLaterale.appendChild(nouvelleLigneListe);
					
					maCarte.addOverlay(marqueur);
					
					rectangleMarqueurs.extend(point);
				}
				
				// On centre la carte suivant les marqueurs trouves
				maCarte.setCenter(rectangleMarqueurs.getCenter(), maCarte.getBoundsZoomLevel(rectangleMarqueurs));
				
			});
			
		});
		
	}
	else {
		
		if( typeof(latlng) != 'undefined' ) var requeteRecherche = 'ajax_generate_xml_map.php?lat=' + latlng.lat() + '&lng=' + latlng.lng() + '&rayon=' + rayon + '&' + param_sup;
		else var requeteRecherche = 'ajax_generate_xml_map.php?'+param_sup;
		
		// On effectue la requete suivant les filtres indiques
		GDownloadUrl(requeteRecherche, function(data) {
			
			var xml = GXml.parse(data);
			var marqueurs = xml.documentElement.getElementsByTagName('marqueur');
			maCarte.clearOverlays();
			
			if( typeof(latlng) != 'undefined' || document.getElementById('google_map_2_bloc').style.display == 'block' ) {
				
				if( document.getElementById('google_map_2_bloc').style.display != 'block' ) {
					
					document.getElementById('google_map_2_bloc').style.display = 'block';
					document.getElementById('google_map_1').style.display = 'none';
					
					maCarte = new GMap2(document.getElementById('google_map_2'));
					maCarte.setCenter(new GLatLng(47.9, 1.9), 5);
					maCarte.setUIToDefault();
					
				}
				
				var marqueurs_length = marqueurs.length;
				if( marqueurs_length > 40 )
					marqueurs_length = 40;
				
				var listeLaterale = document.getElementById('resultats_recherche');
				listeLaterale.innerHTML = '';
				// S'il la recherche n'aboutit a aucun resultat on met la carte sur la position initiale et on affiche qu'aucun resultat n'a ete trouve
				if (marqueurs_length == 0) {
					listeLaterale.innerHTML = '<span style="font-family:EssaiRegular;color:#E9568E;font-size:18px;">Aucun résultat trouvé</span><span></span>';
					maCarte.setCenter(new GLatLng(47.9, 1.9), 5);
					return;
				}
				else {
				
					listeLaterale.innerHTML += '<span style="font-family:EssaiRegular;color:#E9568E;font-size:18px;">Résultats :</span><span></span>';
					listeLaterale.innerHTML += '<div class="bloc"><p>(' + marqueurs_length + ' magasins trouv&eacute;s)</p></div>';
				
				}
				
			}
			else 
				var marqueurs_length = marqueurs.length;
				
			
			if( typeof(latlng) == 'undefined' && marqueurs.length == 0 ) {
			
				maCarte.setCenter(new GLatLng(47.9, 1.9), 5);
			
			}
			else {
				
				// On va creer les marqueurs puis la liste laterale qui est une correspondance des marqueurs suivant la proximite de l'adresse saisie
				var rectangleMarqueurs = new GLatLngBounds();
				for (var i = 0; i < marqueurs_length ; i++) {
					var nom = marqueurs[i].getAttribute('nom');
					var adresse = marqueurs[i].getAttribute('adresse');
					var ville = marqueurs[i].getAttribute('ville');
					var tel = marqueurs[i].getAttribute('tel');
					var ouvert_sem_1_decembre = marqueurs[i].getAttribute('ouvert_sem_1_decembre');
					var ouvert_sem_2_decembre = marqueurs[i].getAttribute('ouvert_sem_2_decembre');
					var ouvert_sem_3_decembre = marqueurs[i].getAttribute('ouvert_sem_3_decembre');
					var ouvert_sem_4_decembre = marqueurs[i].getAttribute('ouvert_sem_4_decembre');
					var ouverture = marqueurs[i].getAttribute('ouverture');
					if( marqueurs[i].getAttribute('distance') ) var distance = parseFloat(marqueurs[i].getAttribute('distance'));
					var point = new GLatLng(parseFloat(marqueurs[i].getAttribute('lat')), parseFloat(marqueurs[i].getAttribute('lng')));
					
					if( typeof(latlng) != 'undefined' || document.getElementById('google_map_2_bloc').style.display == 'block' ) var marqueur = creerMarqueur(point, nom, adresse, ville, tel, ouverture, (i+1));
					else var marqueur = creerMarqueur(point, nom, adresse, ville, tel, ouverture);
					
					if( typeof(latlng) != 'undefined' || document.getElementById('google_map_2_bloc').style.display == 'block' ) {
					
						var nouvelleLigneListe = creerLigneListe((i+1), ouverture, nom, adresse, ville, tel, distance, marqueur, marqueurs.length, ouvert_sem_1_decembre, ouvert_sem_2_decembre, ouvert_sem_3_decembre, ouvert_sem_4_decembre);
						listeLaterale.appendChild(nouvelleLigneListe);
						
					}
					
					maCarte.addOverlay(marqueur);
					
					rectangleMarqueurs.extend(point);
				}
				
				// On centre la carte suivant les marqueurs trouves
				maCarte.setCenter(rectangleMarqueurs.getCenter(), maCarte.getBoundsZoomLevel(rectangleMarqueurs));
				
			}
		});
		
	}
	
}

// Creation de l'icone du marqueur
function createIcone(cpt) {

	var myIcon = new GIcon();
	myIcon.image = ( typeof(cpt) != 'undefined' )? "img/indic" + cpt + ".png":"img/indic_carte.png";
	myIcon.shadow = "img/indic_carte_ombre.png";
	myIcon.iconSize = new GSize(21, 26);
	myIcon.shadowSize = new GSize(22, 40);
	myIcon.iconAnchor = new GPoint(10, 26);
	myIcon.infoWindowAnchor = new GPoint(10, 1);
	var markerOptions = {
		icon: myIcon
	};
	
	return markerOptions

}

// Creation d'un marqueur et de son infobulle
function creerMarqueur(point, nom, adresse, ville, tel, ouverture, cpt) {

	icone_option = createIcone(cpt);

	var marqueur = new GMarker(point, icone_option);
	
	var cpt_recherche = ( typeof(cpt) != 'undefined' )? '('+cpt+') - ':'';
	
	var ligneListe = '<p style="color:#E9568E;font-family:arial;font-size:12px;font-weight:bold;padding-left:34px;">' + cpt_recherche + nom + '</p>';
	ligneListe += '<p style="color:#666666;font-family:arial;font-size:11px;font-weight:bold;padding-left:34px;margin-top:10px;">Adresse</p><p style="color:#666666;font-family:arial;font-size:11px;padding-left:34px;">' + adresse + '<br />' + ville + '<br />Tél : ' + tel + '</p>';
	
	ligneListe += '<p style="color:#666666;font-family:arial;font-size:11px;font-weight:bold;padding-left:34px;margin-top:10px;">Horaires d\'ouverture</p>';
	ligneListe += '<p style="color:#666666;font-family:arial;font-size:11px;padding-left:34px;">' + ouverture + '</p>';
	
	GEvent.addListener(marqueur, 'click', function() {
		marqueur.openInfoWindowHtml(ligneListe);
	});
	return marqueur;
	
}

// Creation d'un bloc correspondant a un marqueur sur la liste laterale
function creerLigneListe(cpt, ouverture, nom, adresse, ville, tel, distance, marqueur, nb, ouvert_sem_1_decembre, ouvert_sem_2_decembre, ouvert_sem_3_decembre, ouvert_sem_4_decembre) {
	
	var div = document.createElement('div');
	div.className = 'bloc';
	if( cpt == nb ) div.style.borderBottomWidth = '0';
	
	var ligneListe = '<p class="title_magasin">(' + cpt + ') - ' + nom + '</p>';
	ligneListe += '<p class="adresse_horaires">Adresse</p>';
	ligneListe += '<p>' + adresse + '<br />' + ville +'<br />Tél : ' + tel + '</p>';
	
	ligneListe += '<p class="adresse_horaires">Horaires d\'ouverture</p>';
	ligneListe += '<p>' + ouverture + '</p>';
	
	if( ouvert_sem_1_decembre != '0' || ouvert_sem_2_decembre != '0' || ouvert_sem_3_decembre != '0' || ouvert_sem_4_decembre != '0' ) {
		
		var tab_excep = new Array(ouvert_sem_1_decembre,ouvert_sem_2_decembre,ouvert_sem_3_decembre,ouvert_sem_4_decembre);
		var cnt_excep = tab_excep.length;
		ligneListe += '<p style="color: #E9568E;font-weight: bold;margin-top: 10px;">Ouverture exceptionnelle</p><p>';
		for( var i=0 ; i<cnt_excep ; i++ ) {
			
			if( eval('ouvert_sem_'+(i+1)+'_decembre') != '0' ) {
			
				//ligneListe += 'Le dimanche '+eval('sem_'+(i+1)+'_decembre')+' Décembre '+date.getFullYear();
				ligneListe += 'Le dimanche '+eval('sem_'+(i+1)+'_decembre')+' Janvier '+date.getFullYear();
				ligneListe += '<br />';
				
			}
			
		}
		ligneListe += '</p>';
		
	}
	
	div.innerHTML = ligneListe;
	div.style.cursor = 'pointer';
	GEvent.addDomListener(div, 'click', function() {
		GEvent.trigger(marqueur, 'click');
	});
	GEvent.addDomListener(div, 'mouseover', function() {
		div.style.backgroundColor = '#F3F3EB';
	});
	GEvent.addDomListener(div, 'mouseout', function() {
		div.style.backgroundColor = 'white';
	});
	return div;
////////
}
