//########## TABLEAU DES FEEDBACKS ###########
var FeedBack=new Array();

// Formulaires d'ajout/MAJ d'Annonces
FeedBack[10] = "<p><b>Félicitations !<br /><br /></b></p><p>Votre annonce est maintenant active et vient d'être publiée sur le site.</p>";
FeedBack[11] = "<p>Erreur !</p><p>L'insertion de votre annonce a échouée. Merci de réessayer...</p>";
FeedBack[12] = "<p>Les champs qui apparaissent en rouge sont obligatoires</p>";
FeedBack[13] = "<p>L'email renseigné n'est pas valide.</p>";
FeedBack[14] = "<p>Vérifiez le mot de passe et sa confirmation : ils ne sont pas identiques...</p>";
FeedBack[15] = "<p>Votre annonce a correctement été mise à jour.</p>";
FeedBack[16] = "<p>Votre annonce a bien été supprimée.</p>";
FeedBack[17] = "<p>Le mot de passe que vous avez renseigné n'est pas le bon.</p>";
FeedBack[18] = "<p>L'email ou le mot de passe n'est pas correct, veuillez réessayer ou utiliser le formulaire de gauche.</p>";


//Messages navigation du site
FeedBack[20] = "<p>Votre message a bien été transmis par email.</p>";
FeedBack[21] = "<p>Un modérateur a été alerté. Merci pour votre aide.</p>";
FeedBack[22] = "<p>Le champs \"Prix mensuel\" doit être un nombre. Tous les caractères renseignés doivent être des chiffres.</p>";
FeedBack[23] = "<p>Merci, votre requête a bien été prise en compte.<br /><br /> Nous vous répondrons dans les plus brefs délais.</p>";
FeedBack[24] = "<p>Pour que nous puissions prendre en compte votre requête, tous les champs du formulaire doivent-être renseignés.</p>";

//Messages membre
FeedBack[30] = "<p>Le mot de passe est incorrect.</p>";
FeedBack[31] = "<p>Login ou mot de passe incorrect.</p>";







//############# FONCTIONS ################

// Lit un cookie 
function getCook(nom) {
	deb = document.cookie.indexOf(nom + "=");
	if (deb >= 0) {
		deb += nom.length + 1;
		fin = document.cookie.indexOf(";",deb);
		if (fin < 0) fin = document.cookie.length;
		return unescape(document.cookie.substring(deb,fin));
		}
	else
		return "";
}

//DANS LES ID / NAME des champs : mettre devant le préfix XY_nom où 
//  X = Option : o,O ou f,F (Obligatoire ou Facultatif)
//  Y = Type   : c,C ; d,D ; n,N ; T,t ; r,R ; b,B (Combobox, Date, Numérique, Texte ( alphanumérique ), Radio, CheckBox)

function Verif_Forms(MonForm)
{

	if(MonForm==document.forms['form_info_membre']){
		var pass=document.getElementById('ot_password').value;
		var pass_conf=document.getElementById('ot_password2').value;
		
		if(pass!=pass_conf){
			alertbox.alert(FeedBack[14]);
			return false;
		}
	}
	
  var ok;
  var NbBox;
  var NbRadio;
  var NbElements = MonForm.elements.length;
  var gate_return;
  // Boucle tous les éléments du formulaire
  for (var l = 0; l < NbElements; l++)
  {
	/*alert(MonForm.elements[l].id+' ## '+MonForm.elements[l].name);
  }*/
	if(MonForm.elements[l].type!='hidden'){
		
		var Nom_Element = MonForm.elements[l].name;
		var Nom_Lowercase = Nom_Element.toLowerCase(); 
		var Champ = MonForm.elements[l];
		
		// Vérifie l'email || type = e
		if (Nom_Lowercase.substring(1,2) == "e" && Champ.value != ""){
			if(!verif_mail(Champ.value)){
				alertbox.alert(FeedBack[13]);
				return false;
			}
		}
		
		
		// Verifie que l'element ne contient que des chiffres même si ce champ n'est pas obligatoire à remplir
		if (Nom_Lowercase.substring(1,2) == "n" && Champ.value != "")
		{
		  if (isNaN(Champ.value))
		  {
			if(isNaN(parseInt(Champ.value))==false) // Si il y a un nombre dans la valeur, on garde ce nombre
				Champ.value=parseInt(Champ.value);
			else
				Champ.value='';
		  }
		}
		
		
		// Verifie que l'element n'est pas vide si il est obligatoire
		if (Nom_Lowercase.substring(0,1) == "o" && Champ.value == "")
		{
		  Champ.focus();
		  Champ.className+=" bordure_rouge";
		  gate_return=false;
		}
		// Verifie que l'element contient bien une date même si ce champ n'est pas obligatoire à remplir
		if (Nom_Lowercase.substring(1,2) == "d")
		{
		  // Appel à la fonction Control_Date
		  if (! Control_Date(Champ.value))
		  {  
			Champ.focus();
			Champ.className="bordure_rouge";
			gate_return=false;
		  }
		}
		
		
		// Verifie que l'utilisateur a fait un choix dans la combobox
		// ATTENTION :
		// Implique la déclaration d'une option dans le select avec la valeur -1 **
		if (Nom_Lowercase.substring(0,1) == "o" && Nom_Lowercase.substring(1,2) == "c" )
		{
		  if (Champ.value == -1)
		  {
			Champ.focus();
			Champ.className+="bordure_rouge";
			gate_return=false;
		  }
		}
		// Controle qu'un boutton radio a été selectionné
		if (Nom_Lowercase.substring(0,1) == "o" && Nom_Lowercase.substring(1,2) == "r")
		{
		  ok = false;
		  // getElementsByName([Nom_element]).length renvoie le nombre d'element du meme nom
		  // Merci bultez
		  NbRadio = document.getElementsByName(Nom_Element).length;
		  for (var k = 0; k < NbRadio; k++)
		  {
			if (document.getElementsByName(Nom_Element)[k].checked == true)
			{
			  ok = true
			  k = document.getElementsByName(Nom_Element).length;
			}
		  }
		  if (ok == false)
		  {
			Champ.focus();
			Champ.className="bordure_rouge";
			gate_return=false;
		  }
		}
		// Meme chose mais avec des CheckBox
		if (Nom_Lowercase.substring(0,1) == "o" && Nom_Lowercase.substring(1,2) == "b" )
		{
		  ok = false;
		  NbBox = document.getElementsByName(Nom_Element).length;
		  for (var k = 0; k < NbBox; k++)
		  {
			if (document.getElementsByName(Nom_Element)[k].checked == true)
			{
			  ok = true
			  k = document.getElementsByName(Nom_Element).length;
			}
		  }
		  if (ok == false)
		  {
			Champ.focus();
			Champ.className="bordure_rouge";
			gate_return=false;
		  }
		}
	  }
	}	
	 
	
	if(gate_return==false){
		alertbox.alert(FeedBack[12]);
	}
	else
		MonForm.submit();
}



function in_array(tab,val){
	var la_val;
	for(la_val in tab){
		if(val==la_val){return true;}
	}
	return false;
}



// Fonction qui rempli un formulaire en cas d'édition d'une fiche
function Edit_Forms(id_form,tab_donnees)
{
	//for(varr in tab_donnees){alert(varr);};
		/*récupérer un tableau YY var=>val de l'id passé en GET
	parcourir tous les champs formulaire XXX
		vérifier si il le champs in_array YY
		si oui
			en fonction du type de champs
				text : champs.value=donnée extraite
				combo : parcourir "options" existantes
							si == donnée 
								selected=selected
				checkboxes : si donnée == 1 
								checked=checked*/
								
						
  var NbElements = document.getElementById(id_form).elements.length;
	
	//alert(document.getElementById(id_form).elements[NbElements-5].name);
  // Boucle tous les éléments du formulaire
  for (var l = 0; l < NbElements; l++)
  {
	var Nom_Element = document.getElementById(id_form).elements[l].name;
	var nom_raccourci=Nom_Element.substr(3,Nom_Element.length);
	
	if(document.getElementById(id_form).elements[l].type!='hidden' && in_array(tab_donnees,nom_raccourci)){
		var Champ = document.getElementById(id_form).elements[l];
		var type=Nom_Element.substring(1,2); // t, c,b,r, d ou n  // cf Verif_Form
		switch(type){
			case 't':
				Champ.value=tab_donnees[nom_raccourci].replace(/(<br \/>)/g, "\n"); 
			break;
			case 'n':
				Champ.value=tab_donnees[nom_raccourci];
			break;
			case 'd':
				Champ.value=tab_donnees[nom_raccourci];
			break;
			case 'c':
				var select = document.getElementById(Nom_Element);
				
				for(var o=0;o<select.length;o++){
					if(select.options[o].value==tab_donnees[nom_raccourci]){
						select.options[o].selected ="selected";
					}
				}
			break;
			case 'b':
				var checkbox = document.getElementById(Nom_Element);
				if(tab_donnees[nom_raccourci]==1)
					checkbox.checked ="checked";
			break;
		
		}
		
	}
  }
  
  activ_champs_profil(document.getElementById('oc_type_membre')); // déplie la partie profil si approprié
		
}

// Récupère un paramètre $_GET dans une URL
function GetParam(name) 
{ 
 var start=location.search.indexOf("?"+name+"=" ); 
 if (start<0) start=location.search.indexOf("&"+name+"=" ); 
 if (start<0) return ''; 
 start += name.length+2; 
 var end=location.search.indexOf("&",start)-1; 
 if (end<0) end=location.search.length; 
 var result=''; 
 for(var i=start;i<=end;i++) { 
 	var c=location.search.charAt(i); 
 	result=result+(c=='+'?' ':c); 
 } 
 return unescape(result); 
} 

// Affiche le feedback sous forme d'alertebox
function feedback(){
	var fdbk=GetParam('fdbk');
	var err=GetParam('err');
	
	if(fdbk!='' && !isNaN(fdbk)){// !isNaN=> on teste si la variable est un int
		alertbox.info(FeedBack[fdbk]);
		return false;
	} 
	else if(err!='' && parseInt(err)==err){//=> on teste si la variable est un int(parseInt("35k") renverra 35, parseInt("3.14") renverra 3)
		alertbox.error(FeedBack[err]);
		return false;
	} 
}


//Vérifie la syntaxe de l'email
function verif_mail(email){
	var place = email.indexOf("@",1);
	var point = email.indexOf(".",place+1);
	if ((place > -1)&&(email.length >2)&&(point > 1))
		return true;
	else
		return false;
}

// Si l'element est nul, renvoie True ( "oui, l'element est vide" )
// Sinon, vérifie la date
function Control_Date (MaDate)
{
  var strTemporaire = MaDate;
  
  if (strTemporaire == '')
    return true;
    strTemporaire = formatDate(strTemporaire);
  if (strTemporaire == null) 
    return false;

  return true;
}

// Enleve les "XY_" devant le [Nom_de_l'element]
function Format_Nom (NomChamp)
{
  var position
  var NomTemp = NomChamp
  position = NomTemp.indexOf("_");
  NomTemp = NomTemp.substr(position,NomTemp.length)
  var reg = new RegExp("_","gi");
  NomTemp = NomTemp.replace(reg," ");
  return NomTemp;
}


// Function qui format une date et vérifie si elle n'est pas farfelue
// Cette fonction n'est pas de moi. Je sais juste qu'elle vient d'un Cédric
// Merci à lui
function formatDate(valeur)
{
  var JJ;var MM;var AAAA;      
  isMatch = false;
  var tabDate    
  // L'ordre de lecture des expressions est important
  var expReg1 =  /(\d{2})(\d{2})(\d{4}|\d{2})/;
  var expReg2 =  /(\d{2}|\d)\/(\d{2}|\d)\/(\d{4}|\d{2})/;
  // tabDate={JJMMAAAA ou JJMMAA}
  tabDate = valeur.match(expReg1);    
  if  ((tabDate != null) && (tabDate[0] == valeur))
  {          
    isMatch = true;
    JJ  = tabDate[1];
    MM  = tabDate[2]; 
    if (tabDate[3].length == 2 ) AAAA = '20' + tabDate[3] ;
    else AAAA = tabDate[3];
  } 
  // tabDate={JJ/MM/AAAA ou JJ/MM/AA}
  tabDate = valeur.match(expReg2);
  if  ((tabDate != null) && (tabDate[0] == valeur))  
  {
      isMatch = true;
      if (tabDate[1].length == 1 ) JJ  = '0' + tabDate[1];
      else JJ  = tabDate[1];
      if (tabDate[2].length == 1 ) MM  = '0' + tabDate[2]; 
      else MM  = tabDate[2]; 
      if (tabDate[3].length == 2 ) AAAA = '20' + tabDate[3] ;
      else AAAA = tabDate[3]; 
    }
    
    var objDate=new Date(AAAA, (MM - 1) ,JJ);

    if ((JJ=='32') && (MM='13') && isMatch) {
      //return JJ + '/' + MM + '/' + AAAA;
      return objDate;
    }
      
    if ( (!isMatch) || (objDate.getDate() != JJ) || ((objDate.getMonth()+1) != MM )) {       
      return null;
    }    
    //return JJ + '/' + MM + '/' + AAAA;
    return objDate;
}


function verif_form_rech(){
	if(document.getElementById('moteur_q').value!='')
		document.forms['form_moteur_recherche'].submit();
	else
		return false;
}

function activ_champs_profil(select){
	if(select.value!='colocataire'){
		if(document.getElementById('profil').style.height=='200px')
			tweenerFunction('profil','height','0px','200px');
	}
	else{
		if(document.getElementById('profil').style.height=='0px' || document.getElementById('profil').style.height=='')
			tweenerFunction('profil','height','0px','200px');
	}
}


//######  FONCTIONS AJAX PROTOTYPE ################
// Fonction qui modifie un champ par une nouvelle valeur
function modif_flag(champs_id,id,table,champs_a_modifier,new_value,reload){ // reload = (reload de la page ou pas)
	if(confirm('Vous confirmez votre action ?')){
		var url = 'ajax/ajax.php';
		var pars = 'action=modif_flag&id='+id+'&champs_id='+champs_id+'&table='+table+'&champs_a_modifier='+champs_a_modifier+'&new_value='+new_value; // variables POST
		var myAjax = new Ajax.Request(
			url, 
			{method: 'post', parameters: pars,
			//onComplete:function(rep){alert(rep.responseText);}}
			onComplete:function(){
				//alert("Modification effectuée.");
				if(reload==true)
					window.location.reload(true);return false;}}
			);
	}
}
  
  
  
//######  FONCTIONS MOOTOOLS SLIDE ################
var tweenerFunction = function(id,style_label,initial_value,after_effect_value) {
 //sélectionnez l'élement sur lequel vous allez faire un tween
 //puis appelez .tween
 //enfin déclarez la propriété de style et la valeur à changer

	if(eval("document.getElementById(id).style."+style_label)!=after_effect_value){
		$(id).tween(style_label, after_effect_value);
	}
	else{
		$(id).tween(style_label, initial_value);
	}
}
  
  
 //######  FONCTION GOOGLE MAP ################
 
 function init_map(rue)
{
    google.load("maps", "2");
    google.setOnLoadCallback(function(){initMap(atob(rue));}); //atob décode la chaine
}; // init


function initMap(rue)
{
    // CrÃ©ation de l'instance d'objet google.maps.Map2,
    // en indiquant au sein de quel Ã©lÃ©ment de la page la carte sera affichÃ©e : 
    var map = new google.maps.Map2(document.getElementById('fiche-map'));
    
	var geocoder = new google.maps.ClientGeocoder();
	geocoder.getLatLng(rue, function (coord) {
        // Et centrage de la map sur les coordonnées renvoyées par Google :
        map.setCenter(coord, 15);
		map.addOverlay(new GMarker(coord)); // Place le marker
    });
	
}; // initMap

