/**
 * ###############################             FORM STRIP 1 .3             ################################
 * 							librairie de fonction pour vérification de formulaire
 */


/**
 * ########## textlimit : enleve des caractéres speciaux pour eviter les Cross Site Scripting
 * 						   Alerte l'utilisateur lorsqu'il dépasse le nombre de caractère pour une valeur
 * 
 * @param  $ :  field --> objet du formulaire ex: this.form.field_name
 * 			  			limit -->  nombre de caractères autorisés ex : 39			
 * 			  			pos --> Nom de l'objet du formulaire pour affichage de l'alerte ex : Nom du champ
 * 			  			niveau  --> Niveau de filtrage (voir tableau reg[]) ex: 12
 * @usage : <input type="text" name="field_name" onkeyup="textlimit(this.form.field_name,39,'Nom du champ',12);" size="40" maxlength="40">
 * @Return void 
 */

function textlimit(field, limit,pos,niveau) {
	var i
	var reg = new Array()

	reg[0] = /\</;
	reg[1] = /\>/;
	reg[2] = /\?/;
	reg[3] = /\&/;
	reg[4] = /\%/;
	reg[5] = /\.\./;
	reg[6] = /\$/;
	reg[7] = /\#/;
	reg[8] = /\(/;
	reg[9] = /\)/;
	reg[10] = /\[/;
	reg[11] = /\]/;
	reg[12] = /\\/;
	reg[13] = /\s/;
	reg[14] = /\//;

	for(i = 0; i <= niveau; i++){
		field.value=field.value.replace(reg[i],"_");
	}//end for

	var newlimit = limit - 1
        if (field.value.length > limit){
			field.value = field.value.substring(0, newlimit);
			alert('Text limit dépassé dans: ' + pos + '.\n Valeur retenue: \" ' + field.value + ' \"');
		}//end if
}// end function


/**
 * ########## Parsemail : vérifie la validité syntaxique d'une adresse E-mail
 * 
 * @param  $ : frm --> Objet du formulaire du document ex : this.form.mail
 * @usage : <input type="text" name="email" onBlur = "ParseMail(this.form.email);" size="30" maxlength="40" >
 * @Return boolean 
 * 
 */
function ParseMail(Obj){
	if (Obj.value != ''){	
		var MailPattern = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[_a-z0-9-.]+\.[a-z]{2,4}$/
	
    	if (MailPattern.exec(Obj.value) == null){
				alert (Obj.value + '\nAdresse E-mail non valide.');
				Obj.focus();
				Obj.select();
				return false;
		}//end if
		else
			return true;
	}//end if
}//end function

/**
 * ########## ParsePhone : vérifie la validité syntaxique d'un numéro de téléphone
 * 
 * @param  $ : frm --> Objet du formulaire du document ex : this.form.phone
 * @usage : <input type="text" name="phone" onBlur = "ParsePhone(this.form.phone);" size="14" maxlength="14" >
 * @Return boolean 
 * 
 */
function ParsePhone(frm){

	if (frm.value != ''){
		var reg = /^([0-9]{2}\.){4}[0-9]{2}$/ //expréssion réguliere

    	if ((reg.exec(frm.value)==null)){
				alert (frm.value + '\nNuméro de téléphone invalide');
				return false;
		}//end if
		else
			return true;
	}//end if
}//end function

/**
 * ########## ParseEmptyField : vérifie que les champs dont la valeur de l'attribut name préfixé de "_" ne sont pas vide
 * 
 * @param  $ : frm --> Objet formulaire du document ex : document.forms[0] ou this
 * @usage : <form name="_formulaire" onsubmit="return(ParseEmptyField(this));"  action="une_autre_page.php" method="post">
 * @Return boolean 
 * 
 */
function ParseEmptyField(frm){
	var Obj, ObjName, i;
	for (i = 0; i<frm.length; i++){
		Obj = frm.elements[i]
		ObjName = Obj.name;
	
		if(ObjName.substr(0,1) == "_" && Obj.value == "" && (Obj.type == "text" || Obj.type == "textarea")){
			alert("Ce champ doit être renseigné !!");
			Obj.focus();
			Obj.select();
			return false;
		}//end if	
	}//end for
	
	return true;
}// end function

/**
 * ######## NoLetter : permet uniquement la saisie d'un chiffre dans un champ
 * 
 * @param  $ : null
 * @usage : <input type="text" onKeyPress="return(NoLetter());"
 * @return : boolean
 * 
 * mod sitesmavilles_immobilier autorise le point 5/09/03
 */
function NoLetter(){

	if (event.keyCode > 48 || event.keyCode < 57 || event.keyCode == 46) // 46 pour un .
		event.returnValue = true;
	else
		event.returnValue = false;

}//end function NoLetter