/**
* Change l'état d'un champ (passe en rouge ou l'inverse)
* et empeche le form de se valider
* param o 			: 	objet (input ou select)
		erreurinit  : 	Valeur de la variable erreur au moment de l'appel
*/
function changeEtat(o, erreurinit)
{
	if(o.type == "checkbox")
	{
		if(!o.checked)
		{
			if(o.getParent().tagName == "DIV")
				o.getParent().addClass('highlight_champ');
			else
				o.addClass('highlight_champ');
			return true;
		}
		else
		{
			if(o.getParent().tagName == "DIV")
				o.getParent().removeClass('highlight_champ');
			else
				o.removeClass('highlight_champ');
			return erreurinit;
		}
	}
	else
	{
		//Si la valeur est a nulle, bgColor devient rouge et erreur passe a true
		if(o.value=="")
		{
			o.addClass('highlight_champ');
			return true;
		}
		//Si la valeur n'est pas nulle, bgColor (re)devient normal MAIS erreur garde sa valeur
		else
		{
			o.removeClass('highlight_champ');
			return erreurinit;
		}
	}
}

function verifValidMail(erreur, mail1, mail2)
{
	if(mail1.value != mail2.value)
	{
		alert('Les adresses emails entrées sont différentes');
		mail1.addClass('highlight_champ');
		mail2.addClass('highlight_champ');
		erreur = true;
	}
	else
	{
		if(mail1.value!='' && mail2.value!='')
		{
			mail1.removeClass('highlight_champ');
			mail2.removeClass('highlight_champ');
		}
		else
		{
			mail1.addClass('highlight_champ');
			mail2.addClass('highlight_champ');
			erreur = true;
		}
	}

	return erreur;
}

/**
* Change l'état d'un champ date (passe en rouge ou l'inverse)
* et empeche le form de se valider
* param o 			: 	objet (input ou select)
		erreurinit  : 	Valeur de la variable erreur au moment de l'appel
*/
function checkDate(o, erreurinit)
{
	var itm=new RegExp(/^[0-3][0-9]{1,2}\/[0-1][0-9]{1,2}\/[0-9]{4}$/);
	if(((o.value).search(itm)) == -1)
	{
		//console.log('erreur'+o);
		o.addClass('highlight_champ');
		return true;
	}
	//Si la valeur n'est pas nulle, bgColor (re)devient normal MAIS erreur garde sa valeur
	else
	{
		//console.log('pas erreur'+o);
		o.removeClass('highlight_champ');
		return erreurinit;
	}
}



/**
*
*Permet d'effectuer un traitement particulier sur le formulaire des garants
*
*param erreurinit  : 	Valeur de la variable erreur au moment de l'appel
*/
function verifFormGarant(erreur)
{
	/*
	var proprietaire = $('sel_proprietaire');
	var date_acquisition = $('date_acquisition');
	var montant_loyer = $('loyer_cc');

	if(proprietaire.value == 0)
	{
		proprietaire.style.backgroundColor='#FF0000';
		erreur = true;
	}


	//Si le garant est locataire
	if (proprietaire.value == 1 && montant_loyer)
		erreur = changeEtat(montant_loyer, erreur);
	*/

	var exact_renseignements_garant = $('exact_renseignements_garant');

	if(exact_renseignements_garant)
	{
		if(!exact_renseignements_garant.checked)
		{
			alert('Afin de poursuivre, merci d\'attester l\'exactitude des renseignements');
			erreur = true;
		}
	}

	return erreur;
}


/**
*Fonction permettant de tester les champs d'un formulaire
*/
function checkForm(idform)
{
	//Variable d'erreur si true, on ne valide pas le form
	var erreur = false;

	//On teste d'abord tous les input
	$ES('input', $(idform)).each(
		function(o)
		{
			//Pour le type date, on check avec une regExp le format de la date
			if(o.hasClass('date'))
				erreur = checkDate(o, erreur);


			//Si c'est un champ date non obligatoire...
			if(o.hasClass('date_non_oblig'))
			{
				//...on check si la valeur du champ est vide...
				if(o.value != "")
				{
					//...Si pas vide, on check que c'est bien une date dedans
					erreur = checkDate(o, erreur);
				}
			}

			//On teste tous les input obligatoire
			if(o.hasClass('obligatoire'))
				erreur = changeEtat(o, erreur);
		}

	)

	//On teste ensuite tous les select
	$ES('select', $(idform)).each(
		function(o)
		{
			if(o.hasClass('obligatoire'))
				erreur = changeEtat(o, erreur);
		}
	)


	//Traitement spécifique pour le formulaire des locataires
	if(idform == 'locataire')
	{
		erreur = verifFormLocataire(erreur);
		erreur = checkChampsConditionnes('locataire', erreur);
	}

	//Traitement spécifique pour le formulaire des garants
	if(idform == 'fiche_garant')
	{
		erreur = verifFormGarant(erreur);
		erreur = checkChampsConditionnes('fiche_garant', erreur);
	}

	//Traitement spécifique au dossier locataire : vérif de la bonne saisie du password
	if(idform == 'dossier_locataire')
	{
		var client_email = $('client_email');
		var client_email_confirm = $('client_email_confirm');

		if(client_email)
		{
			erreur = verifValidEmail(erreur);
		}

		erreur = verifCoherenceIdentifiant(erreur);
		erreur = verifValidPassword(erreur);
		erreur = verifierVousEtes(erreur);
	}

	//Traitement spécifique au dossier locataire : vérif de la bonne saisie du password
	if(idform == 'contact_email')
	{
		erreur = verifTelephone(erreur);
	}


	//Si erreur pas de validation du formulaire
	if(erreur)
	{
		alert('Les champs marqués en rouge sont obligatoires');
		return false;
	}
	else
		return true;
}



function signaleSpan(item, obligatoire)
{
	//SPAN
	var elt_parent = item.getParent();
	var spans = elt_parent.getElements('span.txt_rouge');
	spans.each(function(span)
	{
		if(obligatoire)
			span.removeClass('masque');
		else
			span.addClass('masque');
	});
}

/*
function addEventssurChampsConditionnants(elt_englobant)
{
	var chaine = 'condition_id_';
	var chaine_condition = 'condition';
	var champs_conditionnants = retrieveChampsConditionnesByClass(elt_englobant, chaine_condition);
	champs_conditionnants.each(function(item)
	{
		//on cherche les elements qui sont lies a cet evenement conditionnant
		//pour pouvoir agir sur les elt conditionnes
		//par exemple, en signalant les champs obligatoire en fnction dun autre champ
		var champs_conditionnes = retrieveChampsConditionnesByClass(elt_englobant, chaine+item.id);
		champs_conditionnes.each(function(ch)
		{
			ch.addEvent('change', metAJourChampsObligatoires);
		}
	}
}

function metAJourChampsObligatoires(event)
{
	var event = new Event(event);
	var champ_conditionne = event.target;

	if(champ_conditionne.className == )

}
*/

//Fonction permettant d'ajouter Adele aux favoris
function addbookmark()
{
	bookmarkurl="http://www.adele.org"
	bookmarktitle="Adele - Logement étudiant"
	if (document.all)
	window.external.AddFavorite(bookmarkurl,bookmarktitle)
}

//Fonction permettant d'envoyer un mail à un ami
function EmailLink() {
	window.location = "mailto:?subject=Lien vers le site Adele" + "&body=A l\'adresse " + window.location + "%0a( " + document.title + " )"
}

function favoris()
{
	bookmarkurl="http://www.adele.org"
	bookmarktitle="Adele - Logement étudiant"

	if ( navigator.appName != 'Microsoft Internet Explorer' )
	{
		window.sidebar.addPanel(bookmarktitle, bookmarkurl,"");
	}
	else
	{
		window.external.AddFavorite(bookmarkurl, bookmarktitle);
	}
}

//Pas vraiment un timestamp mais un timestamp*1000 dd/mm/aaaa
function afficherDatePropre(timestamp)
{
	var date = new Date(timestamp);
	var dd = date.getDate()<10 ?'0'+date.getDate() : date.getDate();
	var mm = (date.getMonth()+1)<10 ?'0'+(date.getMonth()+1) : date.getMonth()+1;
	var aaaa = date.getFullYear();
	return dd+'/'+mm+'/'+aaaa;
}