//Form's field default border
var defaultColor = '#CDCDCD';

//Validation du form pour envoi
function validpost(form) {
	var c_name = document.getElementById('c_name');
	var c_site = document.getElementById('c_site');
	var c_mail = document.getElementById('c_mail');
	var c_content = document.getElementById('c_content');
	
	var valid = false;
	var boxId = 'prjs';
	
	var msg_1 = 'Erreurs :';
	var var_1 = new Array();
	var_1[0] = new Array('c_name','e','<b>Nom : </b>Le champ est requis','');
	if (validate(form.id,var_1,msg_1,boxId)) {
		var_1[0] = new Array('c_mail','e','<b>e-mail : </b>Le champ est requis','');
		if (validate(form.id,var_1,msg_1,boxId)) {
			var_1[0] = new Array('c_mail','m','<b>e-mail : </b>Une adresse valide est requise','');
			if (validate(form.id,var_1,msg_1,boxId)) {
				var_1[0] = new Array('c_content','e','<b>Message : </b>Le champ est requis','');
				if (validate(form.id,var_1,msg_1,boxId)) {
					valid = true;
				} else {
					colorerror(c_content);	
				}
			} else {
				colorerror(c_mail);	
			}
		} else {
			colorerror(c_mail);	
		}	
	} else {
		colorerror(c_name);	
	}
	
	return valid;
}

//Validation du form pour preview
function validpreview() {
	return false;
}

//Validation du form pour recherche
function validsearch(form) {
	var valid = false;
	var msg_1 = '&nbsp;';
	var var_1 = new Array();
	
	var_1[0] = new Array('q','e','&nbsp;','');
	var_1[1] = new Array('q','s','&nbsp;','');
	
	return validate(form.id,var_1,msg_1,null);
}

//Bordure de couleur sur field.onfocus
function showfield(el,state) {
	if (state == 'on') {
		el.style.borderColor = '#99CCFF';
	} else if (state == 'off') {
		el.style.borderColor = defaultColor;
	}
}

function showerrorfield(el,state) {
	if (state == 'on') {
		el.style.borderColor = '#FF9999';
	} else if (state == 'off') {
		el.style.borderColor = defaultColor;
	}
}

function colorfield(el){
	showfield(el,'on');	
}

function uncolorfield(el) {
	showfield(el,'off');
}

function colorerror(el){
	showerrorfield(el,'on');	
}

function uncolorerror(el) {
	showerrorfield(el,'off');
}


//Validation
function validate(sender,myarray,err_hd,boxId) {
	var errorbox = document.getElementById(boxId);
	var message_erreur = new Array();
	var error = false;
	var tabErreur=new Array();
	
	if (errorbox) {
		var infobox = document.getElementById('pr');
		if (infobox) {
			infobox.style.display='none';
		}
		errorbox.innerHTML="";
		errorbox.style.display='none';
	}
	//Boucle For
	for (i=0;i<myarray.length;i++) {
  		var errorField = false;
		field = document.forms[sender].elements[myarray[i][0]];
		
		field.value = trim(field.value);
		/* Bloc 1 vérifie les champs qui doivent être renseignés */
		  if (myarray[i][1].indexOf('e')>-1) {
			if (!field.value) {
			  error = true;
			  errorField = true;
			  message_erreur.push(myarray[i][2]);
			}
		  }

		/* Bloc 2 vérifie si l'adresse électronique est correcte dans la forme */
		  else if (myarray[i][1].indexOf('m')>-1) {
			if (field.value) {
			  var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
			  var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
			  var regex = "^"+usr+"\@"+domain+"$";
			  var myrxp = new RegExp(regex);
			  var check = (myrxp.test(field.value));
				if (check!=true) {
				  error=true;
				  errorField = true;
				  message_erreur.push(myarray[i][2]);
				}
			  }
			}

		/* Bloc 3 vérifie les champs dont la valeur doit être numérique */
		  else if (myarray[i][1].indexOf('n')>-1) {
			var num_error = false;
			if(field.value) {
			  var myvalue = field.value;
			  var num = myvalue.match(/[^0-9,\.]/gi)
			  var dot = myvalue.match(/\./g);
			  var com = myvalue.match(/,/g);
			  if (num!=null) {
				num_error = true;
			  }
			  else if ((dot!=null)&&(dot.length>1)) {
				num_error = true;
			  }
			  else if ((com!=null)&&(com.length>1)) {
				num_error = true;
			  }
			  else if ((com!=null)&&(dot!=null)) {
				num_error = true;
			  }
			}
			if (num_error==true) {
				error = true;
				errorField = true;
				message_erreur.push(myarray[i][2]);
			}
		  }

		/* Bloc 6 vérifie les champs de nom et rectifie éventuellement la casse */
		  else if (myarray[i][1].indexOf('c')>-1) {
			var noble = new Array(" d\'", "de","von","van","der","d","la","da","of");
			var newvalue='';
			var myvalue = field.value.split(/\b/);
			for (k=0;k<myvalue.length;k++) {
			  newvalue+= myvalue[k].substr(0,1).toUpperCase()+myvalue[k].substring(1);
			}
			for(k=0;k<noble.length;k++){
			  var reg = new RegExp ("\\b"+noble[k]+"\\b","gi");
			  newvalue = newvalue.replace(reg,noble[k]);
			}
			field.value = newvalue;
		  }
  		/*Bloc 7 controle validité des dates format : JJ/MM/AAAA*/
		  else if (myarray[i][1].indexOf('d')>-1) {
				var ctl = /^(\d\d?)[\/](\d\d?)[\/](\d{4,})$/;
				var ctl_date = false;
				var tab = (field.value).match(ctl);
				if (tab) {
					var unedate = new Date(tab[3], parseInt(tab[2])-1, tab[1]);
					if ((unedate.getFullYear() == tab[3]) && (unedate.getMonth() == tab[2]-1) && (unedate.getDate() == tab[1]))
						ctl_date = true;
				}
				if (! ctl_date) {
					error = true;
					errorField = true;
					message_erreur.push(myarray[i][2]);	
				}
			}
			/*Bloc 8 controle l'absence de caractères spéciaux*/
		  else if (myarray[i][1].indexOf('s')>-1) {
				var ctl = /^[0-9a-zA-Z_-]*$/;
				var ctl_code = false;
				var tab = (field.value).match(ctl);
				if (tab)
					ctl_code = true;
				
				if (! ctl_code) {
					error = true;
					errorField = true;
					message_erreur.push(myarray[i][2]);	
				}
			}
		
			/*Affichage des erreurs s'il en existe*/
			if (errorField)
			{
	  			//alert (myarray[i][0]);
	  			tabErreur.push(myarray[i][0]);
			}
	}//Fin boucle For
	
	var valid = true;

	/* En cas d'erreur, les messages d'erreur récoltés sont exploités ici puis affichés.
   Si le formulaire est correctement rempli, il est transmis */
	if (error) {
		
		if (errorbox) {
			message_erreur = message_erreur.join('<br/>\n');
			errorbox.innerHTML=message_erreur;
			errorbox.style.display='block';
		}
	
		valid = false;
	}
	return valid;
}

// Removes leading whitespaces
function LTrim( value ) {	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");	
}

// Removes ending whitespaces
function RTrim( value ) {	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
}

// Removes leading and ending whitespaces
function trim( value ) {
	return LTrim(RTrim(value));	
}
