
var alertZoneContact = findObject('alertZoneShortContactForm');
var shortContactForm = findObject('shortContactForm');
var formbas = findObject('formbas');

function razMessageErreurContact()
{
	if(alertZoneContact.hasChildNodes())
	{
		while(alertZoneContact.hasChildNodes())
			alertZoneContact.removeChild(alertZoneContact.firstChild);
	}
	alertZoneContact.className="masquer";
}

function displayAlertMessageContact(erreurMessage)
{
	razMessageErreurContact();
	
	alertZoneContact.className="alerte";
	var p = document.createElement('p');
	p.className="erreur";
	p.appendChild(document.createTextNode(erreurMessage));
	alertZoneContact.appendChild(p);
}

function verifNomContact(inputNom)
{
	inputNom.className = "saisie";
	razMessageErreurContact();
	
	if(!isChaineVide(inputNom.value))
		return true;
	else
	{
		inputNom.className = "saisieErreur";
		displayAlertMessageContact("Merci de saisir un nom.");
		return false;
	}
}

function verifMailContact(inputMail)
{
	inputMail.className = "saisie";
	razMessageErreurContact();
	
	if(emailok(inputMail))
		return true;
	else
	{
		inputMail.className = "saisieErreur";
		displayAlertMessageContact("Erreur : l'adresse e-mail saisie n'est pas valide.");
		return false;
	}
}

function verifTelContact(inputTel,termine,phoneStrict)
{
	inputTel.className = "saisie";
	razMessageErreurContact();
	
	var nd = inputTel.value;
	var ndLength = 10;
	var erreurChampVide = "Merci de saisir un numéro de ligne à tester.";
	var erreurChampIncomplet = "Erreur : le numéro de téléphone saisi est incomplet, il doit comporter exactement 10 chiffres.";
	var erreurTypeNumLigne = "Erreur : seuls les numéros de ligne fixe à indicatif géographique (01 à 05) peuvent être testés.";
	var erreurFormatNumLigne = "Erreur : le numéro de téléphone saisi est invalide. Merci de saisir un numéro de téléphone français à 10 chiffres.";

	// cas [A] : numéro de ligne pouvant être testé / rappelé
	if (isTelephone(nd,phoneStrict))
	{
		if (nd.length == ndLength) inputTel.maxLength = ndLength;
		return true;
	}

	// cas [B] : formulaire validé mais erreur
	if (termine)
	{
		if (nd == "") displayAlertMessageContact(erreurChampVide); // champ vide
		else if (!isTelephoneComplete(nd)) displayAlertMessageContact(erreurChampIncomplet); // saisie incomplète
		else if (phoneStrict && !startsLikeTelephone(nd,true)) displayAlertMessageContact(erreurTypeNumLigne); // numéro fixe attendu
		else displayAlertMessageContact(erreurFormatNumLigne); // saisie complète mais non valide
		inputTel.className = "saisieErreur";
	}

	// cas [C] : formulaire non validé mais numéro de ligne d'ores-et-déjà invalide
	else if (!startsLikeTelephone(nd,false) || (phoneStrict && !startsLikeTelephone(nd,true)))
	{
		startsLikeTelephone(nd,false) ?	displayAlertMessageContact(erreurTypeNumLigne) : displayAlertMessageContact(erreurFormatNumLigne);
		inputTel.className = "saisieErreur";
	}

	return false;
}


function verifShortContactForm(inputNom,inputMail,inputTel)
{
	if(!verifNomContact(inputNom)) return false;
	if(!verifMailContact(inputMail)) return false;
	if(!verifTelContact(inputTel,true,false)) return false;
	
	launchAjaxEnregistrementDemandeContact(inputNom,inputMail,inputTel);
	return false; // evite la validation du formulaire car deja fait en ajax
}

function launchAjaxEnregistrementDemandeContact(inputNom,inputMail,inputTel)
{
		var xhr;
		if (window.XMLHttpRequest) xhr = new XMLHttpRequest();
		else if (window.ActiveXObject) xhr = new ActiveXObject('Microsoft.XMLHTTP');
		else {alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...');return;}
		xhr.open('POST','/scripts/demandeContact/enregistrerDemandeContact.php',true);
		xhr.onreadystatechange = function()
		{
			if(xhr.readyState == 4)
			{
				var reponse = xhr.responseXML;
				var errors = reponse.getElementsByTagName("error");
				if(errors.length > 0)
					displayAlertMessageContact("Erreur: une erreur inattendue s'est produite. Merci d'essayer à nouveau.")
				else
				{
					removeShortContactForm();
					var div = document.createElement('div');
					div.className = "messFormOk";
					var p = document.createElement('p');
					p.appendChild(document.createTextNode("Votre demande de contact a été transmise à notre équipe."));
					div.appendChild(p);
					shortContactForm.appendChild(div);
				}
			}
		}
		xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
		var data = 'nomvalue='+encodeURIComponent(inputNom.value)+'&mailvalue='+encodeURIComponent(inputMail.value)+'&telvalue='+escape(inputTel.value);
		xhr.send(data);
}

function removeShortContactForm()
{
	if(formbas.hasChildNodes())
	{
		while(formbas.hasChildNodes())
			formbas.removeChild(formbas.firstChild);
	}
	formbas.className="masquer";
}
