
returnvalue=true;
issetreturnvalue=false;

/**
* fonction permettant de valider un champs selon son type
*/
function checkField(type,obj,obj1,obj2,obj3){

	issetreturnvalue=false;
	if(obj.value!=""){
		switch(type){
			case 'email':
				if(!isMail(obj.value)){
					returnvalue=false;
					showMessage(obj.id,'Adresse e-mail invalide');
					hideValidity(obj.id);
					issetreturnvalue=true;
				}else{
					xajax_call('checkEmail', obj.id, obj.value);
				}
				break;

			case 'emailSeul':
				if(!isMail(obj.value)){
					returnvalue=false;
					showMessage(obj.id,'Adresse e-mail invalide');
					hideValidity(obj.id);
					issetreturnvalue=true;
				}
				break;

			case 'num_gsm':
				var isOk=true;
				if( obj.value.length == 10 &&  obj.value.substring(0,2)=='06' ) {
					for(var i=0 ; i<obj.value.length && isOk==true; i++){
						var inputFieldValue = obj.value[i].value;
            			isOk= isNumeric(obj.value);
            		}
				}else{
          			isOk=false;
          		}
				if(isOk==false){
          			returnvalue=false;
					showMessage(obj.id,'Numéro invalide');
					hideValidity(obj.id);
					issetreturnvalue=true;
          		}
      			break;

			case 'password':
				if(obj.value.length<4) {
					returnvalue=false;
					showMessage(obj.id,'Le mot de passe doit contenir 4 caractères minimum');
					hideValidity(obj.id);
				}
				else{
					var r = new RegExp("['^\"&#¤$]");
					teststr = r.test(obj.value);
					if(teststr) {
						returnvalue=false;
						showMessage(obj.id,'Ne pas utiliser les caractères ^ \' " & # ¤ $');
						hideValidity(obj.id);
					}else{
						returnvalue=true;
					}
				}
				issetreturnvalue=true;
				break;

			case 'passwordConfirmation':
				if(obj.value.length<4) {
					returnvalue=false;
					showMessage(obj.id,'Le mot de passe et le mot de passe de confirmation sont différents');
					hideValidity(obj.id);
				}
				else if(obj.value!=obj1.value) {
					returnvalue=false;
					showMessage(obj.id,'Le mot de passe et le mot de passe de confirmation sont différents');
					hideValidity(obj.id);
				}
				else{
					returnvalue=true;
				}
				issetreturnvalue=true;
				break;


			case 'mailConfirmation':
				if(obj.value!=obj1.value) {
					returnvalue=false;
					showMessage(obj.id,'Merci de confirmer votre nouvelle adresse e-mail');
					hideValidity(obj.id);
				}
				else{
					returnvalue=true;
				}
				issetreturnvalue=true;
				break;


			case 'numAbonne':
				if(!(isAlphabetic(obj.value.substring(0,1)) && isNumeric(obj.value.substring(1,obj.value.length)))) {
					returnvalue=false;
					showMessage(obj.id,'Numéro invalide');
					hideValidity(obj.id);
					issetreturnvalue=true;
				}else{
					xajax_call('checkNumAbonne', obj.id, obj.value);
				}
				break;

			case 'codePostalSeul':
				if( !(isNumeric(obj.value) && obj.value.length==5) || (parseInt(obj.value, 10) < 1000) || (parseInt(obj.value, 10) > 95999) ) {
					returnvalue=false;
					if ( (isNumeric(obj.value) && obj.value.length==5) ){
						showMessage(obj.id,'Nous ne pouvons gérer que les commandes concernant la France Métropolitaine, merci de vous rendre chez nos distributeurs.');
					}else{
						showMessage(obj.id,'le code postal doit être constitué de 5 caractères numériques');
					}
					hideValidity(obj.id);
					issetreturnvalue=true;
				}
				break;

			case 'codePostal':
				if( !(isNumeric(obj.value) && obj.value.length==5) || (parseInt(obj.value, 10) < 1000) || (parseInt(obj.value, 10) > 95999) ) {
					returnvalue=false;
					if ( (isNumeric(obj.value) && obj.value.length==5) ){
						showMessage(obj.id,'Nous ne pouvons gérer que les commandes concernant la France Métropolitaine, merci de vous rendre chez nos distributeurs.');
					}else{
						showMessage(obj.id,'le code postal doit être constitué de 5 caractères numériques');
					}
					hideValidity(obj.id);
					issetreturnvalue=true;
				}else{
											xajax_call('checkCodePostal', obj.id, obj.value, obj1.value, obj2.value, obj3.value);
									}
				break;

						case 'address':
			case 'addressComp':
				var chaineAddress = obj.value;
				var regExpression = /[^A-Za-z0-9\., ]+/;
				if( regExpression.test(chaineAddress) ) {
					returnvalue=false;
					showMessage(obj.id,'Votre adresse ne peut contenir de caractères spéciaux');
					hideValidity(obj.id);
					issetreturnvalue=true;
				}
				break;
			
			case 'city':
				Expression = new RegExp("[^a-zA-Z\c \c-]","g");
				chaineCityTmp = obj.value;
				chaineCity = chaineCityTmp.replace(/ /g, '');
				if( !isAlphabetic(cleanText(chaineCity),true) ) {
					returnvalue=false;
					showMessage(obj.id,'Le nom de la ville doit être composé de lettres uniquement');
					hideValidity(obj.id);
					issetreturnvalue=true;
				}
				break;

			case 'lastName':
				returnvalue=true;
				issetreturnvalue=true;
				break;

			case 'firstName':
				returnvalue=true;
				issetreturnvalue=true;
				break;

			case 'dateNaissance':
				if (obj.value!='' && !isDate(obj.value)) {
					returnvalue = false;
					showMessage(obj.id, 'La date de naissance n\'est pas valide');
					hideValidity(obj.id);
				} else {
					returnvalue = true;
				}
				issetreturnvalue = true;
				break;

			case 'nickName':
				if(obj.value.length<4) {
					returnvalue=false;
					showMessage(obj.id,'Le pseudo doit contenir un minimum de 4 caractères');
					hideValidity(obj.id);
					issetreturnvalue = true;
				}else{
					xajax_call('checkNickName', obj.id, obj.value);
				}
				break;

			case 'bankName':
				if(isBlank(obj.value)) {
					returnvalue=false;
					showMessage(obj.id,'Le nom de la banque est incorrect');
					hideValidity(obj.id);
				}else {
					returnvalue=true;
				}
				issetreturnvalue=true;
				break;

			case 'bankCode':
				if(!(isNumeric(obj.value) && obj.value.length==5 )) {
					returnvalue=false;
					showMessage(obj.id,'Le code de l\'établissement est incorrect');
					hideValidity(obj.id);
				}else{
					returnvalue=true;
				}
				issetreturnvalue=true;
				break;

			case 'bankCounter':
				if(!(isNumeric(obj.value) && obj.value.length==5 )) {
					returnvalue=false;
					showMessage(obj.id,'Le code guichet est incorrect');
					hideValidity(obj.id);
				}else{
					returnvalue=true;
				}
				issetreturnvalue=true;
				break;

			case 'bankAccount':
				if(!(obj.value.length==11 )) {
					returnvalue=false;
					showMessage(obj.id,'Le numéro de compte est incorrect');
					hideValidity(obj.id);
				}else{
					returnvalue=true;
				}
				issetreturnvalue=true;
				break;

			case 'bankKey':
				if(!(isNumeric(obj.value) && obj.value.length==2 )) {
					returnvalue=false;
					showMessage(obj.id,'La clef RIB est incorrecte');
					hideValidity(obj.id);
				}else{
					returnvalue=true;
				}
				issetreturnvalue=true;
				break;

			case 'cardNumber':
				if(!(isNumeric(obj.value) && obj.value.length>15 && obj.value.length<20 )) {
					returnvalue=false;
					showMessage(obj.id,'Format de numéro de carte incorrect');
					hideValidity(obj.id);
					issetreturnvalue=true;
				}else{
					xajax_call('checkCardNumber', obj.id, obj.value);
				}
				break;

			case 'cardValidity':
				xajax_call('checkCardValidity', obj.id, obj.value);
				break;

			case 'cardCrypto':
				if(!(isNumeric(obj.value) && obj.value.length==3 )) {
					returnvalue=false;
					showMessage(obj.id,'Le cryptogramme visuel est incorrect');
					hideValidity(obj.id);
				}else{
					returnvalue=true;
				}
				issetreturnvalue=true;
				break;
		}
		checkissetreturnvalue(obj);

	}else{
		hideValidity(obj.id);
		clearMessage(obj.id);
		return false;
	}
}

/**
* fonction permettant d'attendre le retour des ajax pour l'affichage
*/
function checkissetreturnvalue(obj) {
	if(!issetreturnvalue) {
		window.setTimeout("checkissetreturnvalue", 50);
	}else {
		if(returnvalue==true){
			clearMessage(obj.id);
			showValidity(obj.id);
		}
		else{
			hideValidity(obj.id);
		}
		return returnvalue;
	}
}

/**
* fonction de validation global du formulaire
* se base sur les validations précédentes des champs
* param type : nom du forumaire -> permet de gérer les cas particulier
*/
function checkForm(type) {

	returnval=true;
	if(!isValid('email')) {
		returnval=false;
	}
	if(isEmpty('email')){
		hideValidity('email');
		showMessage('email','Adresse e-mail non valide');
		returnval=false;
	}
	if(!isValid('mdp')){
		returnval=false;
	}
	if(isEmpty('mdp')){
		hideValidity('mdp');
		showMessage('mdp','Le mot de passe est obligatoire');
		returnval=false;
	}
	if(!isValid('mdp2')){
		returnval=false;
	}
	if(isEmpty('mdp2')){
		hideValidity('mdp2');
		showMessage('mdp2','Le mot de passe et le mot de passe de confirmation sont différents');
		returnval=false;
	}
	if(type == 'showroom_inscription' && !isValid('nclient')){
		returnval=false;
	}
	if(type == 'showroom_inscription' && isEmpty('nclient')){
		hideValidity('nclient');
		showMessage('nclient','Merci de remplir le champ numéro client');
		returnval=false;
	}
	if(!isValid('nom')){
		returnval=false;
	}
	if(isEmpty('nom')){
		hideValidity('nom');
		showMessage('nom','Le nom est obligatoire');
		returnval=false;
	}
	if(!isValid('prenom')){
		returnval=false;
	}
	if(isEmpty('prenom')){
		hideValidity('prenom');
		showMessage('prenom','Le prénom est obligatoire');
		returnval=false;
	}
	if(!isValid('code')){
		returnval=false;
	}
	if(isEmpty('code')){
		hideValidity('code');
		showMessage('code','Merci de remplir le champ Code postal');
		returnval=false;
	}
	if(type == 'canalsat_inscription' && !isValid('pseudo')){
		returnval=false;
	}
	if(type == 'canalsat_inscription' && isEmpty('pseudo')){
		hideValidity('pseudo');
		showMessage('pseudo','Le pseudo est obligatoire');
		returnval=false;
	}
	return returnval;
}

/**
* fonction de validation du formulaire d'ajout de l'adresse
* se base sur les validations précédentes des champs
*/

function checkFormAjoutAdresse() {

	returnval = true;

	if(!isEmpty('address') && !isValid('nclient')){
		returnval=false;
	}

	if(!isValid('address')) {
		returnval=false;
	}

	if(isEmpty('address')){
		hideValidity('code');
		showMessage('address','Merci de remplir le champ adresse');
		returnval=false;
	}

	if(!isValid('code')){
		returnval=false;
	}

	if(isEmpty('code')){
		hideValidity('code');
		showMessage('code','Merci de remplir le champ Code postal');
		returnval=false;
	}


	if(!isValid('city')){
		returnval=false;
	}

	if(isEmpty('city')){
		hideValidity('code');
		showMessage('code','Merci de remplir le champ ville');
		returnval=false;
	}

	return returnval;
}


/**
* fonction qui controle si un champ est valide en fct du nom de la classe de l'element HTML parent
*/
function isValid(fieldId){
	var nomClasse = document.getElementById(fieldId+'_champs').className;
 	var resultat = nomClasse.search(/_erreur$/);
 	if(resultat != -1)
  		return false;
  	else
  		return true;
}


/**
* fonction qui controle si un champ est rempli
*/
function isEmpty(fieldId){
	return (document.getElementById(fieldId).value=='');
}


/**
* fonction
*/
function handleEnterInscriptionGenerale(mForm, event) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		checkForm(document.getElementById('fFormInscriptionGenerale'));
		return false;
	}else
		return true;
}