function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function isdefined(variable){
    return (typeof(window[variable]) == "undefined")?  false: true;
}

String.prototype.numerique = function() {
  if (isNaN(this)) {
     var mot = this.replace(",", ".");
     if (isNaN(mot)) {
        var mot = parseFloat(mot);
        if (isNaN(mot)) return false;
        else return mot;
     }
     else return mot;
  }
  else return this;
}
String.prototype.alphanumerique = function() {
  re = /^[\s0-9A-Za-zéèêë&egrave;&ecirc;àâä&agrave;çî&iuml;ôö&ugrave;&ucirc;üÉ&Egrave;&Ecirc;Ë&Agrave;ÂÄÎ&Iuml;ÔÖ&Ugrave;&Ucirc;Ü\'-]+$/;
  if (this.search(re) != -1) return true;
  else return false;
}

function telephone_valide(sText){
   var validChars = "0123456789./et ou-()";
   var isPhone=true;
   var char;
   for (i = 0; i < sText.length && isPhone == true; i++){ 
      char = sText.charAt(i); 
      if (validChars.indexOf(char) == -1) {
         isPhone = false;
		 }
	}
	return isPhone;
}

function email_valide(adresse) {
return (adresse.search("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+([\.][a-zA-Z0-9-]+)+$") != -1);
}

//This prototype is provided by the Mozilla foundation and
//is distributed under the MIT license.
//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license

if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length >>> 0;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}

function email_typo(adresse) {	
	var emailPat = /^(.+)@(.+)$/;
	var matchArray = adresse.match(emailPat);
	var domain = matchArray[2];
	var typos = ["hotmai.com","hotmai.fr","hotamil.com","hotmail.co","htmail.com","hotmal.com","hotmal.fr","homail.com","hotmil.com","hotmil.fr","hotmi.com","otmail.com","otmail.fr","hotmial.com","hotmaill.com","hotail.com","homail.com","homail.fr","kynet.be","gmai.com","gmial.com","gmal.com","slynet.be"]
	if ( typos.indexOf(domain) != -1 ){
		return true;	
	}
	return false;
}
	
function color_and_focus(ao_field){
	ao_field.style.backgroundColor= "#FFDDDD"; //FFDDDD A3D9FF,CCFFCC,99FFCC
	ao_field.focus();
}
function fields_background_reset(ao_form){
	ln = ao_form.elements.length;
	for ( j=0; j<ln; j++){
  			ao_form.elements[j].style.backgroundColor = "#FFFFFF";
  	}
}

function transform_input_names_to_client_feedback(as_input_name){
	switch(as_input_name){
		case "message_firstname" :  return "Prénom";
		case "message_name" :  return "Nom";
		case "message_email" :  return "Email";
		case "message_title" : return "Sujet";
		case "message_phone" :  return "Téléphone";
		case "message_text" :  return "Message";
		case "comment_pseudo" :  return "Pseudo";
		case "comment_email" :  return "Email";
		case "comment_text" :  return "Message";
		break;
	}
	return as_input_name;
}

function is_empty(ao_field){
	document.is_valid_form = false;
	var field = transform_input_names_to_client_feedback(ao_field.name);
	if (ao_field.value == ""){	
  		alert("Veuillez remplir le champ '"+field+"'");
  		color_and_focus(ao_field);
  		return true;
 	}else{
		document.is_valid_form = true;
		return false;
	}
}
function is_valid_month(ao_field){
	document.is_valid_form = false;
	var field = transform_input_names_to_client_feedback(ao_field.name);
	if ( (!ao_field.value.numerique()) || (ao_field.value <1) || (ao_field.value >12) ){
		alert("Le champ '"+field+"' doit etre un nombre de 1 &agrave; 12");
  		color_and_focus(ao_field);
  		return false;
 	}else{
		document.is_valid_form = true;
		return true;
	}
}
function is_valid_year(ao_field){
	document.is_valid_form = false;
	var field = transform_input_names_to_client_feedback(ao_field.name);
	if ( (!ao_field.value.numerique()) || (ao_field.value <1990) || (ao_field.value >2100) ){
		alert("Le champ '"+field+"' doit etre un nombre de 1990 &agrave; 2100");
  		color_and_focus(ao_field);
  		return false;
 	}else{
		document.is_valid_form = true;
		return true;
	}
}
function is_valid_alphanum(ao_field){
	document.is_valid_form = false;
	var field = transform_input_names_to_client_feedback(ao_field.name);
	if (ao_field.value == ""){	
  		alert("Veuillez remplir le champ '"+field+"'");
  		color_and_focus(ao_field);
  		return false;
 	}
	if ((ao_field.value.length < 2) || (!ao_field.value.alphanumerique()) ){	
  		alert("Champ '"+field+"' non valide");
  		color_and_focus(ao_field);
  		return false;
 	}
 	document.is_valid_form = true;
	return true;
}

function is_valid_phone(ao_field){
	document.is_valid_form = false;
	var field = transform_input_names_to_client_feedback(ao_field.name);
	if (ao_field.value == ""){	
  		alert("Veuillez remplir le champ '"+field+"'");
  		color_and_focus(ao_field);
  		return false;
 	}
	if ((ao_field.value.length < 2) || (!telephone_valide(ao_field.value)) ){	
  		alert("Champ '"+field+"' non valide");
  		color_and_focus(ao_field);
  		return false;
 	}
 	document.is_valid_form = true;
	return true;
}

function is_valid_email(ao_field){
	document.is_valid_form = false;
	var field = transform_input_names_to_client_feedback(ao_field.name);
	if (ao_field.value == ""){	
  		alert("Veuillez remplir le champ '"+field+"'");
  		color_and_focus(ao_field);
  		return false;
 	}
	if ( !email_valide(ao_field.value) ){		
  		alert("Champ '"+field+"' non valide");
  		color_and_focus(ao_field);
  		return false;
 	}	
	if ( email_typo(ao_field.value) ){
		alert("Champ '"+field+"' : erreur de frappe détectée !");
  		color_and_focus(ao_field);
  		return false;
	}	
	document.is_valid_form = true;
	return true;
}

function is_checked_radio(ao_field){
	document.is_valid_form = false;
	var lb_vide= true;
	var max = ao_field.length;
	for (i=0;i<max;i++){
		rempli = eval("ao_field["+i+"].checked");
		if (rempli){
			lb_vide = false;
		}
	}
	if (lb_vide){	
		alert("Veuillez remplir le champ 'Qualité'");
		return false;
	}else{
		document.is_valid_form = true;
		return true;
	}
}
function is_checked_checkbox(ao_field){
	document.is_valid_form = false;
	if (ao_field.checked == false){
    	alert("Veuillez cocher la case prévue &agrave; cet effet");
  		return false;
 	}else{
		document.is_valid_form = true;
		return true;
	}
}
function is_valid_antispam(ao_field,as_key){
	as_key= as_key.substring(3);
	document.is_valid_form = false;
	var field = "anti-spam";
	if (ao_field.value == ""){	
  		alert("Veuillez remplir le champ '"+field+"'");
  		color_and_focus(ao_field);
  		return false;
 	}
	if ( ao_field.value != as_key ){		
  		alert("Champ '"+field+"' non valide");
  		color_and_focus(ao_field);
  		return false;
 	}
	document.is_valid_form = true;
	return true;
}

function is_valid_antispam_devinette(ao_field,as_key){
	document.is_valid_form = false;
	var field = "anti-spam";
	if (ao_field.value == ""){	
  		alert("Veuillez remplir le champ '"+field+"'");
  		color_and_focus(ao_field);
  		return false;
 	}
	if ( ao_field.value.toLowerCase() != as_key ){		
  		alert("Champ '"+field+"' non valide");
  		color_and_focus(ao_field);
  		return false;
 	}
	document.is_valid_form = true;
	return true;
}
