/*  $Id: carte.js 3 2008-09-03 12:48:08Z jfhaas $  */



//	Variables globales
var carte;					// Objet GMap2
var marques;				// Table des marques (objets GMarker)
var zone;					// Zone rectangulaire englobant les marque
var icone;					// Image des markers


// Quelques url d'images pour icônes de marques
//var urlIcones = "http://www.google.com/intl/en_us/mapfiles/ms/micons/";
//var urlIcones = "http://www.google.com/mapfiles/";		// markerA.png" et shadow50.png 
//var urlIcones = "maps.google.com/mapfiles/klm/pal2/";		// icon0.png" et icon0s.png 





//------------------------------  AFFICHAGE DE LA CARTE --------------------------------
// Fonction de cgargement : onload de body
function start() {
	//initForm();        // Pour la liste des departement/Villes
	initialisation();	// Pour le GoogleMap
}


// 	Initialisation de la carte et des marques
//	Appel de :	balise 'body' au chargement ('onload')
function initialisation() {

	var i, id, ligne, picture, cat, zoom, centre, res, nbr_ops;
	
	zone = new GLatLngBounds();

	if (!GBrowserIsCompatible()) {return;}
	carte = new GMap2(document.getElementById("carte"));
	carte.addControl(new GLargeMapControl());

	// S'il n'y a aucune opération
	if(operations.length==0)
	{
		// Affichage de la carte centré sur la France
		france = new GLatLng (46.2276, 2.21375);
		carte.setCenter(france, 5);
	}
	
	// S'il y a des opérations
	else
	{
		// Création des marques pour tous les enregistrements de la table 'operations'
		nbr_ops = 0;
		marques = new Array();

		for (id in operations)
		{
			ligne = operations[id];
			picture = image[id];
			res = creeMarque(id, ligne, picture);
			
			if(res)
				nbr_ops ++;
		}

		// Affichage de la carte
		if (nbr_ops>0)
		{			
			centre = zone.getCenter();			
			zoom = carte.getBoundsZoomLevel(zone); 	
			
			// nbr plus grand == plus zoomer  2 	75 	78 	ECQUEVILLY
			if(nbr_ops==1)
				zoom = 15;
				
			carte.setCenter(centre, zoom);		
		}
		else
		{
			france = new GLatLng (46.2276, 2.21375);
			carte.setCenter(france, 5);
		}


		
		
		// Affichage des marques
		for(i=0; i<marques.length;i++)
			carte.addOverlay(marques[i]);
	}	
}



//----------------------------  CRÉATION D'UNE MARQUE  -----------------------------

// 	Création d'une marque de détail, c'est-à-dire représentant un enregistrement de la table 'operations'
//		Appel de 'initialisation'
// 		ligne :	l'opération
function creeMarque(id, ligne, picture)
{	

	var id, nom, adresse, lat, lng, point, marque, html, nbr, types, type, debut, icone;
	var myIcons = ["./media/images/Picto_A.png", "./media/images/Picto_B.png", "./media/images/Picto_C.png", "./media/images/Picto_D.png"];
	

	lat = hab_profils[id]["Lat"];
	lng = hab_profils[id]["Lon"];
	
	//alert("lat : "+lat);
	//alert("long : "+lng);	

	if(lat == 0 && lng == 0)
		return false;
	id_op = ligne["id"];

	if (id_op == undefined)
		return false;
	
	nom = ligne["nom"];
	adresse = ligne["adresse_loc"];
	point = new GLatLng(lat, lng);
	zone.extend(point);
	
	icone = new GIcon(G_DEFAULT_ICON, myIcons[id]);
	icone.iconSize = new GSize(30,30);


	// Création de la marque
	marque = new GMarker(point, icone);
	
	// Affectation à la marque de la liste des hab_profils de l'opération concernée
	marque.hab_profils = hab_profils[id_op];

	// Contenu de l'affichage automatique lors d'un clic sur la marque.
	html = htmlInfo(ligne, picture);
	marque.bindInfoWindowHtml(html);
	
	// Stockage de la marque dans la lite totale des marques
	marques.push(marque);
	
	return true;
}




// 	Contenu html de la fenêtre d'information d'une marque de détail
// 		Appel de :	'creeMarqueDetail'
// 		ligne :		l'enregistrement de la table 'operations' représenté par la marque
// 		Retourne : 	la chaîne littérale html du contenu de la fenêtre
function htmlInfo(ligne, picture){
	var html;
	// Div global
	html = "<table cellpadding='3'>";
		
		// Image
		html +="<tr><td>";
			var destination = "programme_"+ligne["id"]+"_"+page;  
			html += "<a href='"+destination+"'><img src='./media/images_218/" + picture["adresse"]+"'   border='0' width='80' height='80' /></a>";
	
		// Texte
		html +="</td><td>";	
			html += "<div class='texte_map' style='width:150px;'>";
			html += "<a href='"+destination+"'><span class='style_h3'>" + ligne["ville"].toUpperCase() + "("+ligne["dept"]+")</span><br />";
			html += "<span class='style_h4_marron_normal' >"+ ligne["nom"] + "</span><br />";
			html += "<span class='texte_justif'>"+ ligne["meta"] +"</span>";
		html += "</td></tr></table>";
	
	return html;
}



//----------------------------  ACTIONS DE L'UTILISATEUR  -----------------------------


		
// 	Affichage ou non des marques en fonction des critères :
//			type d'habitat (maison ou appart), nombre de pièces, prix max
function select_marques(nom, valeur, coche){
	var  c, m, p, cases_pieces, case_, marque, profils, nb_pieces, profils_temp, visible;

	if(typeof(crits)=="undefined")
	{
		crits= new Array();
		crits['type_hab'] = 0;
		crits['nb_pieces'] = new Array();
		crits['prixMax'] = 0;
	}
	
	// Mise à jour de la liste des critères
	if(nom=="type")
		crits['type_hab'] = valeur;
	if(nom=="nb_pieces[]")
	{
		cases_pieces = document.getElementsByName("nb_pieces[]");
		crits['nb_pieces'] = new Array();
		for(c=0; c<cases_pieces.length; c++)
		{
			case_ = cases_pieces[c];
			if(case_.checked)
				crits['nb_pieces'].push(case_.value); 
		}
	}
	if(nom=="prixMax")
		crits['prixMax'] = valeur;
	
	for(m in marques)
	{
		marque = marques[m];
		
		// Tri sur le type d'habitation (appartement ou maison)
		profils = marque.hab_profils;
		profils_temp = new Array();
		if(crits['type_hab']!=0)
		{
			for(p in profils)
			{
				profil = profils[p];
				if(profil['type_hab']==crits['type_hab'])
					profils_temp.push(profil);
			}
		profils = profils_temp;
		}


		// Tri sur le nombre de pièces 
		profils_temp = new Array();
		if(crits['nb_pieces'].length!=0)
		{
			for(p in profils)
			{
				profil = profils[p];
				nb_pieces = profil['nb_pieces'];
				if(nb_pieces>5)
					nb_pieces = 5;
				if(estDans(nb_pieces, crits['nb_pieces']))
					profils_temp.push(profil);
			}
		profils = profils_temp;
		}
		
		
		// Tri sur le prix
		profils_temp = new Array();
		if(crits['prixMax']!=0)
		{
			for(p in profils)
			{
				profil = profils[p];
				if(profil['prix']<=crits['prixMax'])
					profils_temp.push(profil);
			}
		profils = profils_temp;
		}
		
		
		// Affichage ou non
		if (profils.length>0){marque.show();}
		else{marque.hide();}
		
	}	
	
}

		
function updateVille(idDept, selectVille)
{
    var ChoixVille = document.getElementById('ville');
    
	//alert(selectVille);
	
	// vide de la liste des villes
	while(ChoixVille.options.length > 0)
	{
		ChoixVille.options[0] = null;
	}	
	
    /* remplir la liste des ville en fonction de idDept */
    for(i in listeVillles[idDept].Ville)
    {

        if (listeVillles[idDept].Ville[i].length == 0)
             ChoixVille.options[ChoixVille.options.length] = new Option("Ville","");
         else
		 {
			ChoixVille.options[ChoixVille.options.length] = new Option(listeVillles[idDept].Ville[i],listeVillles[idDept].Ville[i]);
			if(listeVillles[idDept].Ville[i].toLowerCase() == selectVille.toLowerCase()){
				ChoixVille.value = selectVille;
			}
				
		}
            
    }
}

function loadDept(idRegion, selectDept)
{
    var ChoixDept = document.getElementById('dept');
	var valeur;

	// vide la liste des depts
	while(ChoixDept.options.length > 0)
	{
		ChoixDept.options[0] = null;
	}	
	
    // remplir la liste des depts en fonction de idRegion 
    for(i in listeRegionDepts [idRegion].Dept)
    {
        if (listeRegionDepts[idRegion].Dept[i].length == 0)
             ChoixDept.options[ChoixDept.options.length] = new Option("Département","");
         else
		 {
			valeur = listeRegionDepts[idRegion].Dept[i];
			ChoixDept.options[ChoixDept.options.length] = new Option(valeur, i);
			if(valeur.toLowerCase() == selectDept.toLowerCase()){
				ChoixDept.value = selectDept;
			}				
		}            
    }
}


function loadVille(idDept, selectVille)
{
    var ChoixVille = document.getElementById('ville');
	var valeur;

	// vide la liste des villes
	while(ChoixVille.options!=null && ChoixVille.options.length > 0)
	{
		ChoixVille.options[0] = null;
	}	
	
	
    // remplir la liste des villes en fonction de idDept 
	if(listeDeptVilles [idDept] != null)
	{
		for(i in listeDeptVilles [idDept].Ville)
		{
			if (listeDeptVilles [idDept].Ville[i].length == 0)
				 ChoixVille.options[ChoixVille.options.length] = new Option("Ville","");
			 else
			 {
				valeur = listeDeptVilles[idDept].Ville[i];
				ChoixVille.options[ChoixVille.options.length] = new Option(valeur, i);
				if(valeur.toLowerCase() == selectVille.toLowerCase()){
					ChoixVille.value = selectVille;
				}				
			}            
		}
	}
	
	if(idDept == '0')
		ChoixVille.options[ChoixVille.options.length] = new Option("Ville","");
		
	//loadRegion(idDept, "Dept");
		
}

function loadRegion(idDept, type)
{
    var ChoixRegion = document.getElementById('region');
	
	for(id in listeRegionDepts)
	{
		for(i in listeRegionDepts[id].Dept)
		{
			if(i==idDept)
			{
				alert(listeRegionDepts[id].libelle);
				ChoixRegion.value = listeRegionDepts[id].libelle;
				ChoixRegion.text = listeRegionDepts[id].libelle;
				alert(ChoixRegion.value);
			}
		}	
	}
}

function initForm()
{
    var ChoixDepartement = document.getElementById('departement');
    var ChoixVille = document.getElementById('ville');
    if (ChoixVille.options.length == 0)
        updateVille(ChoixDepartement.value, "Ville");
}

// Pour la validation des formulaires 
// Département / Ville
function validationForm(nameForm)
{
    var ChoixVille = nameForm.ville.value;
    
	//alert(ChoixVille);
	if(ChoixVille == "Ville" || ChoixVille == "")
	{
		alert("Vous devez sélectionner au moins une ville.");
		return false;
	}
	else
	{
		//document.recherche.Submit();
		nameForm.action = '/search_ville_'+ChoixVille;
		return true;
	}
}


// Pour le changement des images 
// Opérations
function changePhoto(idImage, currentImg)
{
	document.getElementById(idImage).src = currentImg;
}
    

function openPopup(url, width , height)
{
	width = width == undefined ? 640 : width;
	height = height == undefined ? 700 : height;
	window.open(url, 'Alerte', 'height='+height+', width='+width+', toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=no, directories=no, status=no');
}
	

