/**
* 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)
{
	//Si la valeur est a nulle, bgColor devient rouge et erreur passe a true
	if(o.value=="") 
	{
		o.style.backgroundColor='#FF0000'; 
		return true;
	}
	//Si la valeur n'est pas nulle, bgColor (re)devient normal MAIS erreur garde sa valeur
	else
	{
		o.style.backgroundColor='#FFFFFF'; 
		return erreurinit;
	}
	
}

function verifValidMail(erreur, mail1, mail2)
{
	if(mail1.value != mail2.value)
	{
		alert('Les adresses emails entrées sont différentes');
		mail1.style.backgroundColor='#FF0000';
		mail2.style.backgroundColor='#FF0000';
		erreur = true;
	}
	else
	{
		if(mail1.value!='' && mail2.value!='')
		{
			mail1.style.backgroundColor='#FFFFFF';
			mail2.style.backgroundColor='#FFFFFF';
		}
		else
		{
			mail1.style.backgroundColor='#FF0000';
			mail2.style.backgroundColor='#FF0000';
			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)
	{
		o.style.backgroundColor='#FF0000'; 
		return true;
	}
	//Si la valeur n'est pas nulle, bgColor (re)devient normal MAIS erreur garde sa valeur
	else
	{
		o.style.backgroundColor='#FFFFFF'; 
		return erreurinit;
	}
}

/**
*
*Permet d'effectuer un traitement particulier sur le formulaire des locataires
*
*param erreurinit  : 	Valeur de la variable erreur au moment de l'appel
*/
function verifFormLocataire(erreur)
{
	//Si le locataire est salarié
	if($('salarie').value == 1)
	{
		//On teste tous les input
		$ES('input', $('situation_professionnelle')).each(
			function(o)
			{
				//Si le champ est obligatoire alors on vérifie et au besoin on change l'état de l'input
				if(o.className=='salarie_obligatoire')
					erreur = changeEtat(o, erreur);
			}		
		)
		//On teste tous les select
		$ES('select', $('situation_professionnelle')).each(
			function(o)
			{
				//Si le champ est obligatoire alors on vérifie et au besoin on change l'état du select
				if(o.className=='salarie_obligatoire')
					erreur = changeEtat(o, erreur);
			}		
		)
	}
	if ($('salarie').value == 0)
	{
		//On teste tous les input
		$ES('input', $('projet_etude')).each(
			function(o)
			{
				//Si le champ est obligatoire alors on vérifie et au besoin on change l'état de l'input
				if(o.className=='salarie_obligatoire')
					erreur = changeEtat(o, erreur);
			}		
		)
		//On teste tous les select
		$ES('select', $('projet_etude')).each(
			function(o)
			{
				//Si le champ est obligatoire alors on vérifie et au besoin on change l'état du select				
				if(o.className=='salarie_obligatoire')
					erreur = changeEtat(o, erreur);
			}		
		)	
	}
	return erreur;
}

/**
*
*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)
{
	if($('sel_proprietaire').value == 0)
	{
		$('sel_proprietaire').style.backgroundColor='#FF0000'; 
		erreur = true;
	}
	
	//Si le garant est propriétaire
	if($('sel_proprietaire').value == 2)
		erreur = checkDate($('date_acquisition'), erreur);
	
	//Si le garant est locataire
	if ($('sel_proprietaire').value == 1)
		erreur = changeEtat($('loyer_cc'), erreur);
	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, textarea', $(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);
		}
	)
	
	/****
	*** POUR ADELE MAIS PEUT SERVIR POUR PRIM APPART COMME CEST LA MM CHOSE
	*
	//Traitement spécifique pour le formulaire des locataires
	if(idform == 'locataire')
		erreur = verifFormLocataire(erreur);
		
	//Traitement spécifique pour le formulaire des garants
	if(idform == 'fiche_garant')
		erreur = verifFormGarant(erreur);
	
	
	//Traitement spécifique au dossier locataire : vérif de la bonne saisie du password
	if(idform == 'ibail_first' || idform == 'form_inscription')
	{
		erreur = verifValidPassword(erreur);
	}
				
	//Traitement spécifique au dossier locataire : vérif de la bonne saisie du password
	if(idform == 'contact_email')
	{
		erreur = verifValidMail(erreur, $('mail1'), $('mail2'));
	}
	*******************
	*************************************/
	
	//Traitement spécifique pour le formulaire de création d'une annonce
	var message = "";
	if(idform == 'form_createform'){
		var returnarray = verifFormAnnonce(erreur);
		erreur = returnarray[0];
		message = returnarray[1];
	}
	
	
	//Si erreur pas de validation du formulaire
	if(erreur)
	{
		alert('Les champs marqués en rouge sont obligatoires' + message);
		return false;
	}
	
	return true;
}

/**
*
*Permet d'effectuer un traitement particulier sur le formulaire de depot d'annonce (partie 1)
*
*param erreurinit  : 	Valeur de la variable erreur au moment de l'appel
*/
function verifFormAnnonce(erreur)
{
	var message = "";
	if($('form_mode_1') && $('form_mode_2') && !$('form_mode_1').checked && !$('form_mode_2').checked){
		message = "\nVeuillez choisir le type d'annonce";
		erreur = true;
	}

	if($('form_mode_1') && $('form_mode_1').checked)
		erreur = changeEtat($('form_loyercc'), erreur);
	
	if ($('form_mode_2') && $('form_mode_2').checked){
		erreur = changeEtat($('form_prixachat'), erreur);
		if($('form_achat_normal') && $('form_achat_investir') && !$('form_achat_normal').checked && !$('form_achat_investir').checked){
			message = "\nVeuillez choisir au moins un type d'achat";
			erreur = true;
		}		
	}
	
	return new Array(erreur,message);
	
}



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

//Fonction permettant d'ajouter Adele aux favoris
function favoris() 
{
	bookmarkurl="http://www.primappart.fr";
	bookmarktitle="Primappart - Logement";
	if ( navigator.appName != 'Microsoft Internet Explorer' )
	{
		window.sidebar.addPanel(bookmarktitle, bookmarkurl,""); 
	}
	else
	{	
		if (typeof document.body.style.maxHeight != "undefined")
			alert('Utilisez Ctrl+D pour ajouter Primappart à vos favoris');
		else
			window.external.AddFavorite(bookmarkurl, bookmarktitle); 
	} 
}


window.addEvent('load', function()
{

	/*$ES('.obligatoire').each(function(o)
	{
	    
	    var spanobligatoire = new Element('span');   
	    spanobligatoire.addClass('txt_obligatoire');
	    spanobligatoire.appendText('*');
	    spanobligatoire.injectAfter(o);
	});*/
	
	$ES('.calendrier').each(function(o)
	{
	    var imgcalendar = new Element('img');   
	    imgcalendar.src = "images/calendar/iconeCalendrier.gif";
	    imgcalendar.addEvent('click', function(){showCalendarControl(o);});
	    imgcalendar.addClass('cliquable');
	    imgcalendar.injectAfter(o);
	    o.addEvent('click', function(){showCalendarControl(o);});
	});

});

	

