///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//FONCTIONS RECHERCHES///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
* Remet les données du formulaire de recherche à zéro lors de la saisie d'une référence.
*/
function reset_frm_recherche(){

	document.getElementById('bien_type').selectedIndex=0;
	document.getElementById('mandat_prix_min').value='';	
	document.getElementById('mandat_prix_max').value='';		
	document.getElementById('ville_nom').value='';
	document.getElementById('ville_nom').value='';
	document.getElementById('rayon').selectedIndex=0;	
	
}
/*
* Affiche une liste de communes en dessous du champ de saisie du nom de la commune.
* 1 paramètre :
* - e : évenement (click, keyup...)
*/
function recherche_ville(e){

 var couleurTexteSelection="#990000";//Couleur du texte selectionné dans la liste
 var couleurFondSelection="#ece3a7";//Couleur de fond de l'élément selectionné dans la liste
 var couleurTexte="#990000";//Couleur du texte non-selectionné dans la liste
 var couleurFond="#FFFFFF";//Couleur du fond de l'élément non-selectionné dans la liste

//Si l'utilisateur appuie sur la flèche supérieure (38) ou inférieure (40), on selectionnera l'option suivante dans la liste.
//S'il appuie sur entrée (13) on affiche le nom de la commune selectionnée dans la liste.
if(e.keyCode==40 || e.keyCode==38 || e.keyCode==13){
	
		var ligneActive=new Number(document.getElementById("hid_ville_nom").value);//Récupère le numéro de la ligne active.
		//Compte le nombre de lignes dans le tableau.
		var TabTr = document.getElementById("liste_villes").getElementsByTagName('tr');
		var NbLigne=new Number(TabTr.length);

 		//Si la ligne active est la première et que l'on appuie sur la flèche supérieure, on met en surbrillance la dernière ligne.
        if(ligneActive==0 && e.keyCode==38){

					document.getElementById(0).style.backgroundColor=couleurFond;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById(0).style.color=couleurTexte;//Met la couleur de surbrillance sur l'élément selectionné.
		
					document.getElementById(NbLigne-1).style.backgroundColor=couleurFondSelection;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById(NbLigne-1).style.color=couleurTexteSelection;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById("hid_ville_nom").value=NbLigne-1;//Enregistre le numéro de la ligne selectionné.

		//Si la ligne active est la dernière et que l'on appuie sur la flèche inférieure, on met en surbrillance la première ligne.
        }else if(ligneActive==(NbLigne-1) && e.keyCode==40){

					document.getElementById(NbLigne-1).style.backgroundColor=couleurFond;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById(NbLigne-1).style.color=couleurTexte;//Met la couleur de surbrillance sur l'élément selectionné.
		
					document.getElementById(0).style.backgroundColor=couleurFondSelection;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById(0).style.color=couleurTexteSelection;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById("hid_ville_nom").value=0;//Enregistre le numéro de la ligne selectionné.

        //Si l'utilisateur clique sur entrée alors on affiche le nom de la commune selectionnée dans le champ de saisie.
        }else if(e.keyCode==13){

			selectCommune(document.getElementById(ligneActive).text,document.getElementById(ligneActive).cx,document.getElementById(ligneActive).cy);
		    debugIE(1);		

		}else{

					document.getElementById(ligneActive).style.backgroundColor=couleurFond;//Remet la couleur blanc pour l'élement selectionné auparavent.
					document.getElementById(ligneActive).style.color=couleurTexte;//Remet la couleur noir pour l'élement selectionné auparavent.
		
					if(e.keyCode==40){
						 ligneActive+=1; //Incrémente le numéro de la ligne selectionnée.
					}else if(e.keyCode==38){
						 ligneActive-=1; //Décrémente le numéro de la ligne selectionnée.
					}
			
					document.getElementById(ligneActive).style.backgroundColor=couleurFondSelection;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById(ligneActive).style.color=couleurTexteSelection;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById("hid_ville_nom").value=ligneActive;//Enregistre le numéro de la ligne selectionné.

		}


}else{
	
  //Si le texte saisie est en minuscule, on le passe en majuscule.
  document.getElementById('ville_nom').value=strtoupper(document.getElementById('ville_nom').value);
 
  var texte=new String(document.getElementById('ville_nom').value);//Texte saisie
  var flag=0;//Variable qui indique si au moins une commune a été trouvée.

  //Réinitialise le tableau.
  viderTableau();

  //Vérifie la longueur du texte saisie.
  if(texte.length>0){

		var texte_st=new String(texte);
		texte_st=texte_st.replace('ST ','ST-');
		texte_st=texte_st.replace('SAINT-','ST-');
		texte_st=texte_st.replace('SAINT ','ST-');
		texte_st=texte_st.replace('SAINTE-','STE-');		
		texte_st=texte_st.replace('SAINTE ','STE-');
		texte_avec_tiret=texte_st.replace(/\s/g,'-');		
		texte_sans_tiret=texte_st.replace(/-/g,' ');

		texte_le_tiret=texte_st.replace('LE-','LE ');
		texte_le_tiret2=texte_st.replace('LE ','LE-');
		texte_la_tiret=texte_st.replace('LA-','LA ');
		texte_la_tiret2=texte_st.replace('LA ','LA-');
		texte_les_tiret=texte_st.replace('LES-','LES ');
		texte_les_tiret2=texte_st.replace('LES ','LES-');
 		 		 
	
		var reg   = new RegExp('^'+texte+'|LE '+texte+'|LA '+texte+'|L([\'])'+texte+'|LES '+texte+'|^'+texte_st+'|^'+texte_avec_tiret+'|^'+texte_sans_tiret+'|^'+texte_le_tiret+'|^'+texte_le_tiret2+'|^'+texte_la_tiret+'^'+texte_la_tiret2+'|^'+texte_les_tiret+'|^'+texte_les_tiret2, 'i');//Texte minuscule ou majuscule commençant par la chaîne saisie.		

		//Si le texte commence par st ou saint alors on modifie l'expression régulière pour
		//que la recherche porte sur les communes commençant par st ou saint.	
		if(strtoupper(texte)=="ST-" || strtoupper(texte)=="SA" || strtoupper(texte)=="SAI" || strtoupper(texte)=="SAIN" || strtoupper(texte)=="SAINT" || strtoupper(texte)=="SAINT " || strtoupper(texte)=="SAINTE" || strtoupper(texte)=="SAINTE " || strtoupper(texte)=="SAINTE-" || strtoupper(texte)=="ST "){
		  var reg   = new RegExp('^ST-|^SAINT', 'i');  
		}

	    /*var reg   = new RegExp('^'+texte+'|LE '+texte+'|LA '+texte+'|L([\'])'+texte+'|LES '+texte, 'i');//Texte minuscule ou majuscule commençant par la chaîne saisie.		

		//Si le texte commence par st ou saint alors on modifie l'expression régulière pour
		//que la recherche porte sur les communes commençant par st ou saint.	
		if(strtoupper(texte)=="ST-" || strtoupper(texte)=="SAINT"){
		  var reg   = new RegExp('^ST-|^SAINT', 'i');  
		}*/

		//Affichage des communes correspondant au texte saisie.
        var j=0;
		for(i=0;i<tabCommunes.length;i++){
	
				if(reg.exec(tabCommunes[i][0])){	
	
					  var tr = document.createElement("TR");//Créer une ligne.
					  var td = document.createElement("TD");//Créer une colonne.
					  var dvTxt = document.createElement("DIV");//Créer un calque qui reçoit les noms de communes.
			
					  tr.id="tr"+i;//Création de l'identifiant de la ligne;
					  td.appendChild(dvTxt);//Ajout du calque dans la colonne.
					  tr.appendChild(td);//Ajout du contenu de la ligne.
					  dvTxt.innerHTML=tabCommunes[i][0];//Création du contenu du calque.
					  dvTxt.text=tabCommunes[i][0];//Création d'une propriété avec le nom de la commune.
					  dvTxt.id=j;//Création de l'identifiant du calque.
					  dvTxt.name="dvTxt"+j;//Création de l'identifiant du calque.
					  dvTxt.cx=tabCommunes[i][1];
					  dvTxt.cy=tabCommunes[i][2];
					  /*Fonctions pour le calque*/
			   
					  //Au survaol, donne une surbrillance au calque. 
					  dvTxt.onmouseover=function surbrillance(){
							var ligneActive=new Number(document.getElementById("hid_ville_nom").value);//Récupère le numéro de la ligne active.
							document.getElementById(ligneActive).style.backgroundColor=couleurFond;//Met la couleur de surbrillance sur l'élément selectionné.
							document.getElementById(ligneActive).style.color=couleurTexte;//Met la couleur de surbrillance sur l'élément selectionné.
							this.style.backgroundColor=couleurFondSelection;
							this.style.color=couleurTexteSelection;
							document.getElementById("hid_ville_nom").value=this.id;
					  };
			
					  //Sur sortie, redonne un aspect normal au calque.
					  dvTxt.onmouseout=function finsurbrillance(){
							this.style.backgroundColor=couleurFond;
							this.style.color=couleurTexte;
					  };
			
					  //Sur click, affiche le nom de la commune dans le champ.
					  dvTxt.onmouseup=function selection(){
							if(this.cx<=0) this.cx=0;
							if(this.cy<=0) this.cy=0;
							selectCommune(this.text,this.cx,this.cy);
					  };
			
					  //Finalise l'afichage des éléments.
					  document.getElementById("liste_villes").getElementsByTagName('tbody')[0].appendChild(tr);
                      document.getElementById("hid_ville_nom").value=0;

					  j++;	
			          flag=1;

				} //end if(reg.exec(tabCommunes[i])){	   
	
		}//	end for(i=0;i<tabCommunes.length;i++){

  }//end if(texte.length>0){

  if(flag==1 && texte.length>0){
   document.getElementById("div_liste_villes").style.display="block";
   document.getElementById(0).style.backgroundColor=couleurFondSelection;
   document.getElementById(0).style.color=couleurTexteSelection;
   debugIE(0);
  }else{
   document.getElementById("div_liste_villes").style.display="none";
   debugIE(1);
   viderTableau();
  }

}

}

/*Permet de cacher les listes select pour quelles ne s'affichent pas au-dessus de la liste des communes.*/
function debugIE(bool){

	if(bool==0){
	   document.getElementById("rayon").style.visibility="hidden";//On cache la liste rayon.   
	}else{
	   document.getElementById("rayon").style.visibility="visible";//On affiche la liste rayon. 
	}

}

/*
* Supprime toutes les lignes du tableau.
*/
function viderTableau(){

  var TabTr = document.getElementById("liste_villes").getElementsByTagName('tr');//Récupère tous les objets 'lignes' du tableau.

	//Supprime toutes les lignes existantes.
	for (i=TabTr.length-1;i>=0;i--){	 
		TabTr[i].parentNode.removeChild(TabTr[i]);		
	}
}

/* 
* Affiche le nom de la commune selectionnée dans la liste.
*/
function selectCommune(val,cx,cy){
  document.getElementById("div_liste_villes").style.display="none";//On cache le calque.
  document.getElementById("ville_nom").value=val;//On affiche le nom de la commune dans le champ.
  debugIE(1);
}

/*
* Empêche la saisie des caractères autres que numérique.
* - e : évènement clavier.
* - elm : objet à controler.
* - nombre : valeur à controler.
*/
function filtre_champ_numerique(e,elm,nombre){
	if(e.keyCode!=37 && e.keyCode!=39){
		var nombre = new String(nombre);
		var regex = new RegExp(/[0-9\.,]+/);
		if(nombre.match(regex)!=null){
			elm.value=nombre.match(regex);
		}
	}
}
/*
* Vérifie la saisie des données avant le lancement de la recherche.
* - root : root_url;
*/
function valid_frm_recherche(root){

	var ville_nom=new String(document.getElementById('ville_nom').value);
	
	var tabville=ville_nom.split('(');
	ville_nom=trim(tabville[0]);
	var dep=new String(tabville[1]);
	
	if(dep.length>2){
    	dep=dep.replace(',','');
		dep=dep.replace(')','');
	}
	
	var bien_type=new String(document.getElementById('bien_type').value);
	var bien_id=new String(document.getElementById('bien_id').value);
	var rayon=new String(document.getElementById('rayon').value);		
	var mandat_prix_min=new String(document.getElementById('mandat_prix_min').value);	
	var mandat_prix_max=new String(document.getElementById('mandat_prix_max').value);		
	var url="recherche";
	var prix_min=new Number(mandat_prix_min);
	var prix_max=new Number(mandat_prix_max);
	
	if(prix_min>prix_max){
		alert('Vous devez saisir un prix mini inférieur au prix maxi.');	
		return;
	}

	if(bien_id!=''){
		url=url+'-'+bien_id+'.html';
	}else{

		url=url+'-'+bien_type;
		
		if(ville_nom.length>0){			
			ville_nom=ville_nom.replace(' ','+');
			url=url+'-'+ville_nom.replace(' ','+');
		}
		
		if(dep.length!=2){
			url=url+'.html?&rayon='+rayon+'&mandat_prix_min='+mandat_prix_min+'&mandat_prix_max='+mandat_prix_max+'&recherche=1&num_page=1';			
		}else{
			url=url+'-'+dep+'.html?&rayon='+rayon+'&mandat_prix_min='+mandat_prix_min+'&mandat_prix_max='+mandat_prix_max+'&recherche=1&num_page=1';
		}
		
	}
	document.frm_recherche.action=root+url;
	document.frm_recherche.submit();	
}

/* 
* Efface le champ référence du moteur de recherche. 
*/
function reset_champ_reference(){	
	document.getElementById('bien_id').value="";
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//FONCTIONS FICHES///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
function affichage_zoom_fiche(url_image){	
	document.getElementById('image_zoom').src=url_image;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//FONCTIONS COMMUNES///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*Control la validité d'une date.
* 1 paramètre :
* - date : date au format jj/mm/aaaa (fr)
* Retourne true ou false
*/
function controlDate(date){


  var reg = /^[0-9]{2}[\/-][0-9]{2}[\/-][0-9]{4}/;


	if(date.length>0 && date!='0'){
	
		  if(reg.exec(date)){
		
			date=date.split("/");
			jour=date[0];
			mois=date[1];
			annee=Math.round(date[2])+1900;		
		
				/*- les années divisibles par 4 mais non divisibles par 100,
				- les années divisibles par 400*/
		
				  if( ((annee%4)==0&&(annee%100)!=0) || (annee%400)==0){
				   nbJourFevrier="29";
				  }else{
				   nbJourFevrier="28";
				  }
		
				  tabMois=["0","31",nbJourFevrier,"31","30","31","30","31","31","30","31","30","31"];
		
				  //Vérifie si le jour est supérieur au nombre de jour dans le mois.
				  if(tabMois[Math.round(mois)]<jour || jour==0){			
					return false;
				  }
				  //Vérifie si le mois est supérieur au nombre de mois total : 12.
				  if(mois>12 || mois==0){
					return false;
				  }
		
		  }else{
			return false;
		  }
		
	}else{
	
	 	return false;
	
	}	

   return true;

}

//Mets un texte en minuscules.
function strtolower(str){
	var str = trim(str);
	return str.toLowerCase();
}
//Mets un texte en majuscules.
function strtoupper(str){
	//var str = trim(str);
	return str.toUpperCase();
}
//Supprime les espaces de début et de fin dans un chaîne de caractères
function trim(str){
	var str = new String(str);
	return str.replace(/(^\s*)|(\s*$)/g,"");
}

//Retourne vrai si la chaîne de caractères est une adresse mail
function is_mail(str){
	var regex = /^([a-z0-9_\.\-])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+$/;
	var str = new String(str);
	return regex.exec(str);
}

//Retourne vrai si la valeur est une valeur numérique
function is_numeric(str){
	var regex = /[0-9\.,]+/;
	var str = new String(str);
	return regex.exec(str);
}

//Retourne la longueur d'un chaîne de caractères
function strlen(str){
	var str = trim(str);
	return str.length;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//FONCTIONS MENUS///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
* Permet d'afficher un sous-menu.
* - nom_sous_menu : nom du sous-menu à afficher.
*/
function afficher_sous_menu(nom_sous_menu){	
	if(nom_sous_menu=='vente'){
		document.getElementById('sous_menu_vente').style.display='block';
		document.getElementById('sous_menu_location').style.display='none';
	}else{
		document.getElementById('sous_menu_vente').style.display='none';
		document.getElementById('sous_menu_location').style.display='block';	
	}	
}


///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//FONCTIONS FICHES///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
* Appel la page qui permet d'ajouter une fiche à la selection de la personne connectée.
*/
function ajouterFicheSelection(url,reference,mail){
    		var url = url;

            if(mail!=''){
  				var parametres = 'ajout_selection='+reference+'&mail='+mail;
			}else{
  				var parametres = 'ajout_selection='+reference;
			}

			var myAjax = new Ajax.Request(
				url,
				{
					method: 'get',
					parameters: parametres,
					async: false,
					onComplete: afficheReponse,
					onFailure: afficheErreur
				}
			);

			function afficheReponse(requete){

				function setInnerHTML(divContent, HTML) {
				  divContent.innerHTML=HTML;
				  var AllScripts=divContent.getElementsByTagName("script")
				  for (var i=0; i<AllScripts.length; i++) {
					 var s=AllScripts[i];
						eval(s.innerHTML)
				  }				
				}
				positionPopup(document.getElementById('popup_selection'));
				document.getElementById('popup_selection').style.display="block";	
			  //Charge la page dans une balise div invisible sur la page fiche.php.	
			  setInnerHTML(document.getElementById("contenu_popup_selection"),requete.responseText);			  
			}
			function afficheErreur(){
			  alert("Erreur : veuillez contacter l'administrateur.");
			}
}
/*
* Positionne la popup de connexion.
*/
function positionPopup(elm){

  largPost=elm.style.width;
  
  if(largPost.lastIndexOf("px")){
   largPost=largPost.substring(0,largPost.length-2);
  }
  
  elm.style.left=(screen.availWidth/2)-(largPost/2)-150+"px"; 	
  elm.style.top=document.documentElement.scrollTop+250+"px";

}
/*
* Change l'état de la popup de connexion en affichant un message pour confirmer l'ajout de la selection.
*/
function afficheFinAjoutSelection(reference){
   document.getElementById("msg_popup_selection").innerHTML="La référence n°"+reference+" a été ajouté à votre selection";
}
/*
* Vérifie la validité de l'adresse e-mail saisie et enregistre la saisie dans la table.
*/
function validMailSelection(url,mail,reference){

  var mail=new String(document.getElementById("mail").value);
  var regmail =/[_a-zA-Z\d\-\.]+@[_a-zA-Z\d\-\.]+(\.[_a-zA-Z\d\-])/;//Masque pour les mails
  var test=new String(regmail.exec(mail));//Test la correspondantce entre le masque et la valeur saisie.

	if(test=='null'){
	   alert("Merci de saisir une adresse e-mail valide");
	   return;
	}

   //Si une référence est passée en argument, on doit lancer le script qui ajoute la référence dans la selection du client.
   if(reference!=''){
	//Enregistre l'email de l'utilisateur dans la table.
	ajouterFicheSelection(url,reference,mail);
   }else{
	//Enregistre l'email de l'utilisateur dans la table.
	enregUtilisateur(url,mail);
   }


}
/*
* Appel le formulaire de connexion à la rubrique selection.
*/
function enregUtilisateur(url,mail,news){
  			var url = url;
  			var parametres = 'mail='+mail+'&news='+news;

			var myAjax = new Ajax.Request(
				url,
				{
					method: 'get',
					parameters: parametres,
					async: false,
					onComplete: afficheReponse,
					onFailure: afficheErreur
				}
			)
			function afficheReponse(requete){
  	          document.location="../modeles/modele.php?selection=1";
			  //document.getElementById("conteneur").innerHTML=requete.responseText;
			}
			function afficheErreur(){
			  alert("Erreur : veuillez contacter l'administrateur.");
			}
}
/*
* Affiche un message de confirmation avant la suppression d'une selection.
*/
function supprimerFicheSelection(reference){

	 if(confirm("Etes-vous sur de vouloir supprimer la référence n° "+reference+" de votre selection ?")){
		document.getElementById('suppr').value=reference;
		document.frm_suppression.submit();
	 }

}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//FONCTIONS CONCTACT///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
* Validation du formulaire de contact.
*/
function valid_form_contact(){
 	var nom=new String(document.getElementById('contact_nom').value);
 	var prenom=new String(document.getElementById('contact_prenom').value);
 	var mail=new String(document.getElementById('contact_mail').value);
 	//var sujet=new String(document.getElementById('sujet').value);
 	var message=new String(document.getElementById('contact_message').innetHTML);
	var regmail =/[_a-zA-Z\d\-\.]+@[_a-zA-Z\d\-\.]+(\.[_a-zA-Z\d\-])/;//Masque pour les mails
	var test=new String(regmail.exec(mail));//Test la correspondantce entre le masque et la valeur saisie.
						
 	if(nom.length==''){
		alert('Vous devez saisir un nom');
		return;
	}
 	if(prenom.length==''){
		alert('Vous devez saisir un prénom');
 	    return;		
	}
	if(test=='null'){
	   alert("Merci de saisir une adresse e-mail valide");
	   return;
	}
 	/*if(sujet.length==''){
		alert('Vous devez saisir un sujet');
	    return;		
	}*/
 	if(message.length==''){
		alert('Vous devez saisir un message');
 	    return;
	}	
	
	document.frm_contact.submit();
 	
}

/*
* Appel la page contact sur le clique de 'contactez-nous'.
* bien_reference : numéro de référence du bien (ex:L6065).
*/
function appelContact(bien_reference){	

	document.getElementById('bien_reference').value=bien_reference;
	document.frm_appel_contact.submit();
}
