/* ECEDI - AFM Téléthon 2007 Dons
 * Librairie de fonctions javascript du formulaire de dons
 */
/* Traitement de l'évènement onchange sur les champs textes du formulaires */
function fieldTextOnChange(inputField) {
	if ('text' != inputField.type)
		return;
	if ('autreMontant' == inputField.name)
		return;
	if (-1 != inputField.name.indexOf('date')) {
		inputField.value = inputField.value.replace(/[^0-9\/]/g, '');
		return;
	}
	if (-1 != inputField.name.indexOf('email'))
	  emailField = true;
	else
	  emailField = false;
	if (!emailField)
		inputField.value = inputField.value.toLowerCase();
	inputField.value = inputField.value.replace(/[éèêë]/g, 'e');
	inputField.value = inputField.value.replace(/[àâä]/g, 'a');
	inputField.value = inputField.value.replace(/[îï]/g, 'i');
	inputField.value = inputField.value.replace(/[ôö]/g, 'o');
	inputField.value = inputField.value.replace(/[ùûü]/g, 'u');
	inputField.value = inputField.value.replace(/ç/g, 'c');
	if (emailField) {
		inputField.value = inputField.value.replace(/[ÉÈÊË]/g, 'E');
		inputField.value = inputField.value.replace(/[ÀÂÄ]/g, 'A');
		inputField.value = inputField.value.replace(/[ÎÏ]/g, 'I');
		inputField.value = inputField.value.replace(/[ÔÖ]/g, 'O');
		inputField.value = inputField.value.replace(/[ÙÛÜ]/g, 'U');
		inputField.value = inputField.value.replace(/Ç/g, 'C');
		inputField.value = inputField.value.replace(/[^a-zA-Z0-9@._\-]/g, '');
	} else {
		inputField.value = inputField.value.toUpperCase();
		inputField.value = inputField.value.replace(/[^A-Z0-9']/g, ' ');
		inputField.value = inputField.value.replace(/  */g, ' ');
	}
}
/* Affiche la déduction fiscale */
function affDeductionFiscaleFromMontantChoisi() {
	montant = document.getElementById('montantChoisi').value;
	div = document.getElementById('legalComputed');
  if (0 < montant) {
	  document.getElementById('abatement').innerHTML =
			Math.floor(100*document.getElementById('fiscaliteRatio').value*montant)/100;
		div.style.display = 'block';
	} else
		div.style.display = 'none';
}
/* Affiche la déduction fiscale */
function affDeductionFiscale(montant) {
	document.getElementById('montantChoisi').value= montant;
	affDeductionFiscaleFromMontantChoisi();
}
/* Traitement de l'évènement onchange sur les champs radio du formulaires */
function fieldRadioOnChange(inputField) {
	if ('radio' != inputField.type)
		return;
	/* Si le champ 'montantRadio' est renseigné, on vide le champ Autre */
	if ('montantRadio' == inputField.name) {
		if ('Autre' != inputField.value) {
			document.getElementById('autreMontant').value = '';
			affDeductionFiscale(inputField.value);
		}
		return;
	}
}
/* Formatage champ montant */
function montantOnKeyUp(inputField) {
	/* On n'accepte que les chiffres, le point ou la virgule, on doit commencer par 1-9 */
	var firstChar = inputField.value.charAt(0);
	if (('1' > firstChar) || ('9' < firstChar))
		inputField.value = inputField.value.substr(1);
	inputField.value = inputField.value.replace(/[^0-9.,]/g, '').replace(/^([0-9]*[.,][0-9]*)[.,]*/g, '$1');
	return(inputField.value.replace(/,/g, '.'));
}
/* Traitement de l'évènement onKeyUp sur les champs du formulaires */
function fieldOnKeyUp(inputField) {
	/* Si le champ 'autreMontant' est renseigné, on sélectionne la valeur 'Autre' du champ 'montantRadio' */
	if ('autreMontant' == inputField.name) {
		var montantSaisi = montantOnKeyUp(inputField);
		var montantField = document.getElementById('montant_Autre');
		/* Montant minimal 1 */
		if (1 > montantSaisi) {
			inputField.value = '';
			if (montantField.checked) {
			  montantField.checked =  false;
			  /* Par défaut */
			  if ((montantByDefField = document.getElementById('montant_60'))
					|| (montantByDefField = document.getElementById('montant_200'))) {
					montantByDefField.checked = true;
					affDeductionFiscale(montantByDefField.value);
				}
			}
			return;
		}
		montantField.checked = true;
		affDeductionFiscale(inputField.value);
		return;
	}
	if ('montantChoisi' == inputField.name) {
		montantOnKeyUp(inputField);
		affDeductionFiscale(inputField.value);
		return;
	}
}
/* Traitement de l'évènement onKeyUp sur le champ montant de la calculatrice */
function calculatriceMontantOnKeyUp(taux) {
	var montantField = document.getElementById('calculatrice_montant');
	var deductionField = document.getElementById('calculatrice_deduction');
	/* On n'accepte que les chiffres, le point ou la virgule, on doit commencer par 1-9 */
	var firstChar = montantField.value.charAt(0);
	if (('1' > firstChar) || ('9' < firstChar))
		montantField.value = montantField.value.substr(1);
	montantField.value = montantField.value.replace(/[^0-9.,]/g, '').replace(/^([0-9]*[.,][0-9]*)[.,]*/g, '$1');
	/* Montant minimal 1 */
	var montantSaisi = montantField.value.replace(/,/g, '.');
	if (1 > montantSaisi) {
		montantField.value = '';
		deductionField.value = '';
		return;
	}
	deductionField.value = Math.round(taux*montantSaisi)/100;
	return;
}
/* Traitement de l'évènement onload sur le body */
function bodyOnLoad() {
	/* On renseigne la valeur du javascript */
	if (inputField = document.getElementById('nav_js'))
		inputField.value = 'Javascript';
	return true;
}
/* Affichage de l'étape n */
function showDonStep(stepNum) {
	document.getElementById('donStep').value = stepNum;
	document.getElementById('core').className = 'donStep'+stepNum;
	if (stepNum < 3) {
	  document.getElementById('donateStep1').className = 'on';
	  document.getElementById('donateStep2').className =  document.getElementById('donateStep3').className = '';
	} else if (3 == stepNum) {
	  document.getElementById('donateStep2').className = 'on';
	  document.getElementById('donateStep1').className =  document.getElementById('donateStep3').className = '';
	}
	if (1 == stepNum)
		xt_med('F','15','Etape1_choix_montant');
	else if (2 == stepNum)
		xt_med('F','15','Etape1_coordonnees');
	else if (3 == stepNum)
		xt_med('F','15','Etape2_choix_paiement');
	if (1 < stepNum) {
		var field = document.getElementById('loginEmail');
		if (field && field.focus)
		  field.focus();
		var field = document.getElementById('montantChoisi');
		if (field && field.focus)
		  field.focus();
		document.getElementById('donationAmount').className = 'focused';
	}
}
/* Validation de l'étape 1 */
function valideDonStep1() {
	if (!document.getElementById('montantChoisi').value)
	  return;
	showDonStep(2);
}
/* Mise en erreur d'un champ */
function setInputFieldInError(inputField) {
	divParent = inputField.parentNode;
  if (!(className = divParent.className) || (-1 == className.indexOf(' errorImg'))) {
		divParent.className = className+' errorImg';
		children = divParent.childNodes;
		for (cI = 0; cI < children.length; cI++) {
		  if (('LABEL' == children[cI].nodeName)
				&& ((className = children[cI].className) || (-1 == className.indexOf(' error'))))
			children[cI].className = className+' error';
		}
	}
}
/* Mise en erreur d'un champ de l'étape 2 */
function setInputFieldOfStep2InError(inputField) {
	document.getElementById('errorTextStep2').className = 'error';
  setInputFieldInError(inputField);
}
/* Validation du montant choisi */
function valideDonMontantChoisi() {
	/* On enlève les messages d'erreurs */
	document.getElementById('errorTextMontantChoisi').className = 'hidden';
	var div = document.getElementById('divMontantChoisi');
  if ((className = div.className) && (-1 < className.indexOf(' errorImg'))) {
    div.className = className.replace(/ errorImg/, '');
		children = div.childNodes;
		for (cI = 0; cI < children.length; cI++) {
		  if ((className = children[cI].className) && (-1 < className.indexOf(' error')))
		    children[cI].className = className.replace(/ error/, '');
		}
	}
	/* Vérification champ obligatoire */
  inputField = document.getElementById('montantChoisi');
  montantOnKeyUp(inputField);
  if (!inputField.value) {
		document.getElementById('errorTextMontantChoisi').className = 'error';
    setInputFieldInError(inputField);
    return false;
	}
	return true;
}
function getBirthFieldValue(fieldId) {
	var field = document.getElementById(fieldId);
	return(field.options[field.selectedIndex].value);
}
function setBirthFieldsInError() {
	document.getElementById('errorTextStep2').className = 'error';
	divParent = document.getElementById('birthDate');
  if (!(className = divParent.className) || (-1 == className.indexOf(' errorImg'))) {
		divParent.className = className+' errorImg';
		children = divParent.childNodes;
		for (cI = 0; cI < children.length; cI++) {
		  if (('SPAN' == children[cI].nodeName)
				&& ((className = children[cI].className) || (-1 == className.indexOf(' error'))))
			children[cI].className = className+' error';
		}
	}
}
/* Validation de l'étape 2 */
function valideDonStep2() {
	/* On enlève les messages d'erreurs */
	document.getElementById('errorTextStep2').className = 'hidden';
	var divs = document.getElementsByTagName('div');
	for (dI = 0; dI < divs.length; dI++) {
	  if ((className = divs[dI].className) && (-1 < className.indexOf(' errorImg'))) {
	    divs[dI].className = className.replace(/ errorImg/, '');
			children = divs[dI].childNodes;
			for (cI = 0; cI < children.length; cI++) {
			  if ((className = children[cI].className) && (-1 < className.indexOf(' error')))
			    children[cI].className = className.replace(/ error/, '');
			}
		}
	}
	/* Vérification champs obligatoires */
  valideDonMontantChoisi();
	var fieldNames = new Array('nom','prenom','adresse_3','code_postal','ville','email','email_confirm');
	for (fI = 0; fI < fieldNames.length; fI++) {
	  inputField = document.getElementById(fieldNames[fI]);
	  fieldTextOnChange(inputField);
	  if (!inputField.value)
	    setInputFieldOfStep2InError(inputField);
	}
	var dd = getBirthFieldValue('birthDay');
	var mm = getBirthFieldValue('birthMonth');
	var aaaa = getBirthFieldValue('birthYear');
	if (dd || mm || aaaa) {
		if (!dd || !mm || !aaaa)
	    setBirthFieldsInError();
		else {
			ddMax = (in_array((0+mm), array(1,3,5,7,8,10,12)) ? 31 : ((2 != (0+mm)) ? 30 : ((0 == aaaa%4) ? 29 : 28)));
			if (dd > ddMax)
		    setBirthFieldsInError();
		}
	}
	var emailValue = document.getElementById('email').value;
	if (1 > (arobaseI = emailValue.lastIndexOf('@')) || (arobaseI > (pointI = emailValue.lastIndexOf('.')))
		|| (arobaseI > emailValue.length-2) || (emailValue != document.getElementById('email_confirm').value)) {
    setInputFieldOfStep2InError(document.getElementById('email'));
    setInputFieldOfStep2InError(document.getElementById('email_confirm'));
	}
	if (('error' == document.getElementById('errorTextStep2').className)
		|| ('error' == document.getElementById('errorTextMontantChoisi').className)) {
		showDonStep(2);
	  return;
	}
	var infosDonateurHtml = document.getElementById('prenom').value+' '+document.getElementById('nom').value;
	for (aI = 1; aI < 5; aI++) {
		if (data = document.getElementById('adresse_'+aI).value)
			infosDonateurHtml = infosDonateurHtml+'<br />'+data;
	}
	infosDonateurHtml = infosDonateurHtml+'<br />'+document.getElementById('code_postal').value+' '
		+document.getElementById('ville').value+'<br />'+document.getElementById('pays').value;
	document.getElementById('recallDetailsHolder').innerHTML = infosDonateurHtml;
	showDonStep(3);
}
/* Validation de l'étape 3 */
function valideDonStep3() {
	if (!valideDonMontantChoisi()) {
		showDonStep(3);
		return false;
	}
	return true;
}
