// JavaScript Document

// vérifier les infos du formulaire avant envoi.
// tabElt:obj
// tabELt.nom = 'texte'
// tabElt.tel = 'num'
// tabElt.email = 'email'



function checkForm(form,tabElt) {
	var tmprep = '';
	var mess = '';
	var texteConfirm = '';
	var nbElt = tabElt.length;
	var atLeastOneTel= false;
	for (var elt=0; elt<nbElt; elt++) {
		if (tabElt[elt].oblig) {
			var chp = form.elements[tabElt[elt].nom];
			var typ = new Array();
			typ = String(tabElt[elt].typ).split(",");
			var letype = typ[0];
		//	alert(tabElt[elt].nom);
			switch(letype) {
				case 'texte' :
					if (chp.value == '') {
						mess += '\nLe champ '+tabElt[elt].err+' ne peut être vide';
					}
					break;
					
				case 'textemin' :
					if (chp.value == '') {
						mess += '\nLe champ '+tabElt[elt].err+' ne peut être vide';
					} else if (String(chp.value).length < parseInt(typ[1])) {
						mess += '\nLe champ '+tabElt[elt].err+' doit faire '+parseInt(typ[1])+' caractères minimum';
					}
					break;
					
				case 'url' :
					
					if (String(chp.value).indexOf('http://') < 0) {
						mess += '\nLe champ '+tabElt[elt].err+' doit commencer par http';
					}
					break;	
					
					
				case 'num' :
					if (chp.value == '') {
						mess += '\nLe champ '+tabElt[elt].err+' ne peut être vide';
					} else if (isNaN(parseInt(String(chp.value),10))) {
						mess += '\nLe champ '+tabElt[elt].err+' doit être un nombre';
					}
					break;	
					
				/*case 'date' :
					
					if (	String(chp.value).substr(4,1) != '-'
						||  String(chp.value).substr(7,1) != '-') {
						mess += '\nLe champ '+elt+' doit être de la forme AAAA-MM-JJ';
					}
					break;	*/
					
				case 'radio' :
					
					if ( !test_radio(chp)) 
						mess += '\nChoisir une réponse à la question "'+tabElt[elt].err+'"';;
					break;	
					
				case 'check' :
					var ch;
					var tmp = "";
					var lgpref = String(tabElt[elt].nom).length;
					var nbcheck = 0;
					
					for (ch in form.elements) {
						//tmp += "\n"+form.elements['contact_mail'].name;
						if (form.elements[ch]) {
							var nomElt = String(form.elements[String(ch)].name);
							if (nomElt.substr(0,lgpref) == tabElt[elt].nom) {
								var t = form.elements[ch];
								
								if ( form.elements[ch].checked ) {
									nbcheck++
								}
							}
						}
					}
				//	alert(tmp);
					if (nbcheck == 0) {
						mess += '\nVous devez choisir au moins une option à la question "'+tabElt[elt].err+'"';
					}
					
					break;
					
					
				case 'email' :
					if ( (chp.value == '') || (verifMail(chp.value) == false) ){
						mess += '\nLe champ '+tabElt[elt].err+' n\'est pas valide';
					}
					break;
					
				case 'fic' :
					var ext = String(chp.value).substr(chp.value.lastIndexOf(".")+1);
					//alert(ext);
					if (chp.value == '') {
						mess += '\nLe champ '+tabElt[elt].err+' doit être renseigné';
					} else if ( !checkBadCarForFic(chp.value) ){
						mess += '\nLe champ '+tabElt[elt].err+' n\'est pas valide';
					} else if (ext != typ[1]) {
						mess += '\nL\'extension du fichier doit être '+typ[1];
					}
					break;	
					
					
				case 'emailChkOnly' :
					if (chp.value != '') {
						if ((verifMail(chp.value) == false) ){
							mess += '\nLe champ '+tabElt[elt].err+' n\'est pas valide';
						}
					}
					break;	
				
					
				case 'emailconf' :
					var emailToCheck = form.elements['email'].value;
					if ( (chp.value == '') || (verifMail(chp.value) == false) ){
						mess += '\nLe champ '+tabElt[elt].err+' n\'est pas valide';
					} else {
						var emailToCheck = form.elements['email'].value;
						if (chp.value != emailToCheck) {
							mess += '\nL\'email et l\'email de confirmation doivent être identiques';
						}
					}
						
					break;	
				
					
				case 'tel' :
					if (chp.value == '') {
						if (form.elements['telp'].value == '') {
							mess += '\nVous devez saisir au moins 1 n° de téléphone (fixe ou mobile)';
						} 
					} else if ((chp.value.length) != 10) {
						mess += '\n'+tabElt[elt].err+' doit contenir 10 chiffres';
					} 
					break;	
					
				case 'mob' :
					//alert(chp.len);
					if (chp.value == '') {
						mess += '\n'+tabElt[elt].err+' n\'est pas un numéro valide';
					} else if ((chp.value.length) != 10) {
						mess += '\n'+tabElt[elt].err+' doit contenir 10 chiffres';
					} else if (chp.value.substr(0,2) != '06') {
						mess += '\n'+tabElt[elt].err+' doit commencer par 06';
					}
					atLeastOneTel = true;
					break;
					
				default : 
					//mess += '\n champ '+elt+' ok';
					break;
					
					
					
			}
		}
				
	}
	if (mess != '') {
		alert('Attention : '+mess);
	} /*else if (atLeastOneTel) {
		alert('VOus devez saisir au mins 1 numéro de tel');
	} */else {
		form.submit();
	}
	
}

// vérifier un mail
function verifMail(a) {
	testm = false ;
	if ( (a.length > 5) && (a.length < 255) ) {
		for (var j=1 ; j<(a.length) ; j++) {
			if (a.charAt(j)=='@') {
				if (j<(a.length-4)){
					for (var k=j ; k<(a.length-2) ; k++) {
						if (a.charAt(k)=='.') testm = true;
					}
				}
			}
		}
	}
	return testm ;
}


function test_radio(btradio) {
	var tmp = false;
	for (i=0; i<btradio.length; i++) {
		if (btradio[i].checked == true)
			tmp = true;
	}
	return tmp;
}

function value_radio(btradio) {
	var tmp = false;
	for (i=0; i<btradio.length; i++) {
		if (btradio[i].checked == true)
			tmp = btradio[i].value;
	}
	return tmp;
}

function makeOblig(chp, oblig) {
	var nbe = tabElt.length;
	
	for (var i=0; i<nbe; i++) {
		if (tabElt[i].nom == chp) {
			//alert('le champ '+chp+' oblig = '+oblig);
			tabElt[i].oblig = oblig;
			break;
		}
	}
}

function checkBadCarForFic(chaine) {
	var caracteresNonValides="<>&;\"'^#£$µ;,?§²ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ";
	var isGood = true;
	for (ck=0; ck<chaine.length; ck++) {
		//alert(ck);
		if (caracteresNonValides.indexOf(chaine.charAt(ck)) != -1) {
			alert(chaine.charAt(ck));
			isGood = false
		}
	}
	return isGood;
}