var timer = "";
var messageAlert = "";
var submitit = true;
//fonction pour tester la valeur numérique d'un champ (accepte les ".")

//// New functions for UK forms
function FormatDate(reg_form)
{
		var form=document.getElementById(reg_form);
		if(form.year && form.month && form.day && form.year.value != '' && form.month.value != '' && form.day.value !=''){
				if(form.day.value<10 && form.month.value<10)
					form.demographicField5.value=form.year.value+"/0"+form.month.value+"/0"+form.day.value;	
				else if(form.day.value<10)	
					form.demographicField5.value=form.year.value+"/"+form.month.value+"/0"+form.day.value;	
				else if(form.month.value<10)	
					form.demographicField5.value=form.year.value+"/0"+form.month.value+"/"+form.day.value;	
				else 
					form.demographicField5.value=form.year.value+"/"+form.month.value+"/"+form.day.value;		
			}
}

//// Old functions for UK forms
function isNum(idChamp)
	{
	n = document.getElementById(idChamp).value;
	if (!(isNaN (n)) == false)
		{
		nomChamp = getLabel(idChamp);
		var errmess = document.getElementById("error_number").innerHTML;
		messageAlert = messageAlert + "\n - " + nomChamp + " : " + errmess;
		document.getElementById(idChamp).style.border = "1px red solid" ;
		}
	else
		{
		document.getElementById(idChamp).style.border = "1px #ADB0B0 solid" ;
		}
	}
function controlPhone(idChamp)
	{
	n = document.getElementById(idChamp).value;
	if ( n.length > 20)
		{
		nomChamp = getLabel(idChamp);
		var errmess = document.getElementById("error_number").innerHTML;
		messageAlert = messageAlert + "\n - " + nomChamp + " : " + errmess;
		document.getElementById(idChamp).style.border = "1px red solid" ;
		}
	else if ( n.length == 0)
		{
		nomChamp = getLabel(idChamp);
		var errmess = document.getElementById("error_mandatory").innerHTML;
		messageAlert = messageAlert + "\n - " + nomChamp + " : " + errmess;
		document.getElementById(idChamp).style.border = "1px red solid" ;
		}
	else	
		{
		document.getElementById(idChamp).style.border = "1px #ADB0B0 solid" ;
		}
	}
	function controlZipCode(idChamp)
	{
	n = document.getElementById(idChamp).value;
	if ( n.length < 5)
		{
		nomChamp = getLabel(idChamp);
		//var errmess = document.getElementById("error_number").innerHTML;
		messageAlert = messageAlert + "\n - " + nomChamp + " : Longitud no valida ";
		document.getElementById(idChamp).style.border = "1px red solid" ;
		}
	
	else	
		{
		if(isValidInt(idChamp))
		document.getElementById(idChamp).style.border = "1px #ADB0B0 solid" ;
		else
		document.getElementById(idChamp).style.border = "1px red solid" ;
		
		}
	}
	
function controlAddress(idChamp)
	{
	if(document.getElementById(idChamp)){
		n = document.getElementById(idChamp).value;
		//alert(idChamp);
		if (n.length > 30)
			{
			nomChamp = getLabel(idChamp);
			var errmess = document.getElementById("error_number").innerHTML;
			messageAlert = messageAlert + "\n - " + nomChamp + " : " + errmess;
			document.getElementById(idChamp).style.border = "1px red solid" ;
			}
		else if(idChamp == 'address_line_1' && n.length == 0)
		{
			nomChamp = getLabel(idChamp);
			var errmess = document.getElementById("error_mandatory").innerHTML;
			messageAlert = messageAlert + "\n - " + nomChamp + " : " + errmess;
			document.getElementById(idChamp).style.border = "1px red solid" ;
			}
		
		else	{
			document.getElementById(idChamp).style.border = "1px #ADB0B0 solid" ;
			}
		}	
	}
//fonction pour vérifier la validité de la date passée	

function validateDate(day,month,year){  
	var daySelect = document.getElementById(day).value;
	var monthSelect = document.getElementById(month).value;
	var yearSelect = document.getElementById(year).value;
	
	if(document.getElementById(day).selectedIndex == 0 || document.getElementById(month).selectedIndex == 0 || document.getElementById(year).selectedIndex == 0) {
		messageAlert = messageAlert + "\n - " + "Formato de fecha no valida";
		//document.getElementById(day).style.border = "1px #ADB0B0 solid" ;
		//document.getElementById(month).style.border = "1px #ADB0B0 solid" ;
		//document.getElementById(year).style.border = "1px #ADB0B0 solid" ;
		return;
	}	
	

	if((daySelect != "") && (monthSelect != "") && (yearSelect != "")){		
		var datTest_Date = new Date(yearSelect, monthSelect-1, daySelect);
		if ((daySelect != datTest_Date.getDate()) || (monthSelect-1 != datTest_Date.getMonth()))
		 { 	
			messageAlert = messageAlert + "\n - " + "Formato de fecha no valida";
			/*document.getElementById(day).style.border = "1px #ADB0B0 solid" ;
			document.getElementById(month).style.border = "1px #ADB0B0 solid" ;
			document.getElementById(year).style.border = "1px #ADB0B0 solid" ;*/
		 }
	}		


	var today=new Date();
	var birthdate=new Date(yearSelect, monthSelect-1, daySelect); //Month is 0-11 in JavaScript
	var age = today.getFullYear() - yearSelect;
	var annivDate = new Date(today.getFullYear(), monthSelect-1, daySelect); 
      // Si pas encore passé, retirer 1 an
    if (annivDate> today)  age--;
	if(age<18){
		messageAlert = messageAlert + "\n - " + "Usted no ha alcanzado la edad legal, usted es menor de edad";
	}
}
//fonction de controle des confirmation de valeur de champ
function controlEquivalence(idChamp1, idChamp2)
	{
	var valeur1 = document.getElementById(idChamp1).value;
	var valeur2 = document.getElementById(idChamp2).value;
	nomChamp1 = getLabel(idChamp1);
	nomChamp2 = getLabel(idChamp2);
	if(valeur1 != "" && valeur2 != "")//si les deux champs = "" on laisse faire controlMandatory
		{
		if(valeur1 != valeur2)
			{
			//var errmess = document.getElementById("error_equivalence").innerHTML;
			messageAlert = messageAlert + "\n - " + nomChamp1 + " & " + nomChamp2 + " : " + "Debe ser la misma";
			document.getElementById(idChamp1).style.border = "1px red solid" ;
			document.getElementById(idChamp2).style.border = "1px red solid" ;
			}
		else
			{
			document.getElementById(idChamp1).style.border = "1px #ADB0B0 solid" ;
			document.getElementById(idChamp2).style.border = "1px #ADB0B0 solid" ;
			}
		}
	}
//fonction de controle des champs email
function controlEmailOld(idChamp) 
	{ 
	var email = document.getElementById(idChamp).value.toLowerCase();
    if (email.search(/^[_a-z0-9-]+(.[_a-z0-9-]+)*[^._-]@[a-z0-9-]+(.[a-z0-9]{2,4})*$/) == -1)
        { 
       	nomChamp = getLabel(idChamp);
		var errmess = document.getElementById("error_email").innerHTML;
		messageAlert = messageAlert + "\n - " + nomChamp + " : " + errmess;
		document.getElementById(idChamp).style.border = "1px red solid" ;
      	} 
	else
		{
		document.getElementById(idChamp).style.border = "1px #ADB0B0 solid" ;
		}
	}
//fonction de controle des champs obligatoires
function controlMandatory(champ)
	{
	
	submitit = true;
	var errmess = "";
	if (document.getElementById("error_mandatory"))
		{
		var errmess = document.getElementById("error_mandatory").innerHTML;
		}
		else
	{
	var submitit = true;
	var errmess = "";
		}	
	if(document.getElementById("error_mandatory")!=null)
	var messBase = document.getElementById("error_mandatory").innerHTML;
	if(champ==undefined)//cas d'une liste de champ obligatoire dans un input hidden de la page
		{
		
		var listeChamps = document.getElementById("mandatory_id").value.split("//");
		var nbChamps = listeChamps.length;
		try{
			for(i=0;i<nbChamps;i++)
				{
				idChamp = listeChamps[i];
				//alert(idChamp);
				//if(document.getElementById(idChamp).value == "" ) 
				idChampCopie=idChamp;
				/*if (document.address_form)
				if (i==nbChamps-1)idChamp= idChamp+document.address_form.subject.selectedIndex;
				*/
				if(isEmpty(trim(document.getElementById(idChamp).value)))
					{
					
						submitit = false;
					errmess = errmess + "\n - " + getLabel(idChampCopie) + " : " + "Campo obligatorio";
							document.getElementById(idChamp).style.border = "1px red solid" ;
						}
				else
					{
					document.getElementById(idChamp).style.border = "1px #ADB0B0 solid" ;
					}
				}
			}catch(e){
			alert(e.description);
		}
		if(submitit == false)
			{
			messageAlert = messageAlert+errmess;
			}
		}
	else //cas du controle d'un seul champ
		{
		if(isEmpty(trim(document.getElementById(champ).value)))
			{
			submitit = false;
			messageAlert = messageAlert + "\n - " + getLabel(champ) + " : " + messBase;
			document.getElementById(champ).style.border = "1px red solid" ;
			}
		else
			{
			document.getElementById(champ).style.border = "1px #ADB0B0 solid" ;
			}
		}
	}
function validSubmit()
	{
	if(messageAlert != "")
		{
		//var message_base = document.getElementById("error_form").innerHTML;
		alert(messageAlert);
		return false;
		}
	else
		{
		return true
		}
	}
function getLabel(valeur)
	{
	var element_label = "";
	var txt_label = "";
	var liste = "";
	var nomChamp = "";
	//var formulaire = document.getElementById(nomform);
	for(var i=0; i<document.body.getElementsByTagName("label").length; i++ )
	 	{
		//determination de label a comparer
		element_label = document.body.getElementsByTagName("label")[i];
		//récupération de la valeur texte contenue dans le label
		txt_label = element_label.firstChild.nodeValue;
		//récupération de l'attribut for du label
		if(element_label.getAttribute("for"))
			{contFor = element_label.getAttribute("for");}
		else
			{contFor = element_label.getAttribute("htmlFor");}
		//liste = liste + "\n||" + valeur + "?=" + contFor + "||"; 
		//comparaison de l'attribut for a la valeur entree dans l'appel de fonction
		if(contFor == valeur) 
			{
			nomChamp = txt_label;
			break;
			}
		}
	return nomChamp;	
	}
	
	function controleDiags(formname)
	{
	var nomObjet = "";
	var nb = 0;
	var n = 0;//nombre d'élément radio !=
	var m = 0;//nombre de questions avec checkbox
	var arrObjet = new Array(); //tableau contenant les différents nom d'objet et leur nombre d'occurence
	var test = false; 
	var presence = false;
	var complete = true;//variable définissant l'état completé ou non du formulaire
	var racine = "";
	//Etape 1 : identification des différents nom de radio et insertion dans un tableau js
	if(formname == undefined)
		{
		racine = document.body.getElementsByTagName("input");
		}
	else
		{
		racine = document.getElementById(formname).getElementsByTagName("input");
		}
		
	for(var i=0; i<racine.length; i++ )
	 	{
		elementRadio = racine[i];
		nomObjet = elementRadio.name;
		typeObject = elementRadio.type;
		if(typeObject == "radio" || typeObject == "checkbox")
			{
			presence = false;
			if(typeObject == "checkbox")
				{
				arrNomQuestion = nomObjet.split("_");
				nomObjet = arrNomQuestion[0];
				}
			for(j=0;j<n;j++)//parcours des noms de radio button deja testés
				{
				if(arrObjet[j][0] == nomObjet) 
					{
					presence = true;
					nb = arrObjet[j][1] + 1;
					arrObjet[j][1] = nb;
					break;
					}
				}
			if(presence == false)
				{
				arrObjet[n] = new Array(3);
				arrObjet[n][0] = nomObjet;
				arrObjet[n][1] = 1;
				arrObjet[n][2] = typeObject;
				n = n+1;
				}
			}
		}
	//etape 2 : tests des checked
	for(i=0;i<n;i++)
		{
		nb = arrObjet[i][1];
		test = false;
		for(k=0;k<nb;k++)
			{
			nomObjet = arrObjet[i][0]+"_"+(k+1);
			//alert("objet : "+nomObjet);
			test = document.getElementById(nomObjet).checked;
			if(test == true)
				{
				break;
				}
			}
		if(test == false) complete = false;
		}
	
	if(complete == false)
		{
		messageAlert = "\n - " + document.getElementById("error_diags_mandatory").innerHTML;
		}
}
	
function controlSequence(champ1,champ2)
	{
	if(document.getElementById(champ1).value == "")
		{
		document.getElementById(champ1).value = document.getElementById(champ2).value;
		document.getElementById(champ2).value = "";
		}
}

function changeSelect(champ1, idContainer, url)
	{
	var valeurSelect = document.getElementById(champ1).value;
	affichDetail(url+valeurSelect, idContainer);
	}
	
// ---------------------------------------------------------
// Phone number formatter, created for Foodry
// For more info, visit:
// http://www.foodry.com/blog
// control de champs Téléphone pour l'us uniquement
// ---------------------------------------------------------
function formatPhone(elm, e) {
    var keychar;

    // If used in onkeypress, pass in the event and this will
    // grab the character and do the right thing. This allows
    // for a smoother user experience than if the chars are
    // being visibly deleted.
    if (e) {
        var keynum;
        if (window.event) {
            keynum = e.keyCode
        }
        else if (e.which) {
            keynum = e.which
        }

        keychar = String.fromCharCode(keynum)
    }   

    // Allow a backspace to go through, so the user
    // can correct any typos.
    if (/[\b]/.exec(keychar)) {
        return true;
    } else {
        var p = elm.value + keychar;

        // Don't allow a leading 1 or 0. We also strip out all
        // non-numeric characters here to make the formatting
        // easier later on. This could be modified to allow
        // letters if you consider them valid.
        p = p.replace(/^[01]/,"");
        p = p.replace(/\D+/g, "");

        // You can easily change the formatting of the phone
        // number by editing the conditionals below.
        if (p.length > 0 && p.length < 3) {
            p = "("+p;
        }
        else if (p.length >= 3 && p.length < 7) {
            p = "("+p.substring(0,3)+") "+p.substring(3);
        }
        else if (p.length >= 7 && p.length < 10) {
            p = "("+p.substring(0,3)+") "+p.substring(3,6)+"-"+p.substring(6);
        }
        else if (p.length) {
            p = "("+p.substring(0,3)+") "+p.substring(3,6)+"-"+p.substring(6,10);
        }
        elm.value = p;

        return false;
    }
}	




function isValidInt(element){

	var num = document.getElementById(element).value;
	
	if (num !="")
	{
	
		if (isNaN(num))
		{
			submitit = false;
			messageAlert = messageAlert + "\n- Formato incorrecto ";
			document.getElementById(element).style.border = "1px red solid" ;
			return false;
		}
		else
		{
		document.getElementById(element).style.border = "1px #ADB0B0 solid" ;
		return num == parseInt(num);
		return true;
		}
	}
	
	
}

function controlEmail(element){
	var adresse = document.getElementById(element).value;
	var filter = /^[a-zA-Z0-9\-_]+[a-zA-Z0-9\.\-_]*@[a-zA-Z0-9\-_]+\.[a-zA-Z\.\-_]{1,}[a-zA-Z\-_]+$/;
	
	
	if (!filter.test(adresse)) {
		submitit = false;
		messageAlert = messageAlert + "\n- Correo electronico no valido ";
		document.getElementById(element).style.border = "1px red solid" ;
	}else
		{
		document.getElementById(element).style.border = "1px #ADB0B0 solid" ;
	}
}

function controlMaxSize(element,size){
	var val = document.getElementById(element).value;
	if (utf8StringByteLength(trim(val)) > size){
			submitit = false;
			messageAlert = messageAlert + "\n- Tamaño de la cadena de "+ getLabel(element) +" excede la longitud maxima permitida (" + size + ")";
			document.getElementById(element).style.border = "1px red solid" ;
	}else
		{
		document.getElementById(element).style.border = "1px #ADB0B0 solid" ;
	}
}

function controlMinSize(element,size){
	var val = document.getElementById(element).value;
	if (utf8StringByteLength(trim(val)) < size){
			submitit = false;
			messageAlert = messageAlert + "\n- Tamaño de la cadena de "+ getLabel(element) +" no cumple con la longitud mínima de espera (" + size + ")";
			document.getElementById(element).style.border = "1px red solid" ;
	}else
		{
		document.getElementById(element).style.border = "1px #ADB0B0 solid" ;
	}
}


function isSpecCar(car)
{
	var tab=["\301","\311","\315","\321","\323","\332","\361","\341","\350","\351","\355","\363","\372"];
	var out=false;	
	for(i=0;i<tab.length;i++)
		if(car==tab[i])
			return out=true;	
}

function isValidString(element)
{
	var val = document.getElementById(element).value;
	var val1 = "";
	var out = false;
	var long = val.length;
	var exp=/^[a-zA-Z]*$/;	
	if(val.length==0){
		out=true;
	}		
	for(var i=0; ((i<val.length )&& (!out)); i++)
		{
			val1 = val.substring(parseInt(i),parseInt(i+1));
			if((isEmpty(val1))||(exp.test(val1))||(isSpecCar(val1))) {
				out = false ;
			}
				else{out=true;
			}	
		}

	if(out)
		{
			submitit = false;
			messageAlert = messageAlert + "\n- Valor debe ser solo letras";
			document.getElementById(element).style.border = "1px red solid" ;
		}
	else
		{
			document.getElementById(element).style.border = "1px #ADB0B0 solid" ;
		}

}



function isEmpty(id) {
	if (typeof(id) == "string") {
		return !id.match(/[^\s]/);
	}
	else {
		return (id)?(false):(true);
	}
}

function trim(inword)
{
   word = inword.toString();
   var i=0;
   var j=word.length-1;
   while(word.charAt(i) == " ") i++;
   while(word.charAt(j) == " ") j--;
   if (i > j) {
		return word.substring(i,i);
	} else {
		return word.substring(i,j+1);
	}
}

function isValidUTF8length(UTF8String, maxlength) {
    if (utf8StringByteLength(UTF8String) > maxlength) return false;
    else return true;
}

function utf8StringByteLength(UTF8String) {
  if (UTF8String === null) return 0;
  var str = String(UTF8String);
  var oneByteMax = 0x007F;
  var twoByteMax = 0x07FF;
  var byteSize = str.length;

  for (i = 0; i < str.length; i++) {
    chr = str.charCodeAt(i);
    if (chr > oneByteMax) byteSize = byteSize + 1;
    if (chr > twoByteMax) byteSize = byteSize + 1;
  }
  return byteSize;
}

function controlZipCodeForUK(element,element2){
	
	
	var val = document.getElementById(element).value;
	var val2 = document.getElementById(element2).value;
	
	var exp = /[a-zA-Z]{1}[a-zA-Z0-9]{3}/;
	var exp2 = /\d[a-zA-Z]{2}/;
	
	if(!exp.test(val)){
			submitit = false;
			messageAlert = messageAlert + "\n- Codigo postal formato no valid ";
			document.getElementById(element).style.border = "1px red solid" ;
	}
	else
		{
		document.getElementById(element).style.border = "1px #ADB0B0 solid" ;
		}
	
	if(!exp2.test(val2)){
			submitit = false;
			messageAlert = messageAlert + "\n- Codigo postal formato no valid ";
			document.getElementById(element2).style.border = "1px red solid" ;
	}
	else
		{
		document.getElementById(element2).style.border = "1px #ADB0B0 solid" ;
		}
	
}

function isEmpty(id) {
	if (typeof(id) == "string") {
		return !id.match(/[^\s]/);
	}
	else {
		return (id)?(false):(true);
	}
}

function trim(inword)
{
   word = inword.toString();
   var i=0;
   var j=word.length-1;
   while(word.charAt(i) == " ") i++;
   while(word.charAt(j) == " ") j--;
   if (i > j) {
		return word.substring(i,i);
	} else {
		return word.substring(i,j+1);
	}
}

function isValidUTF8length(UTF8String, maxlength) {
    if (utf8StringByteLength(UTF8String) > maxlength) return false;
    else return true;
}

function utf8StringByteLength(UTF8String) {
  if (UTF8String === null) return 0;
  var str = String(UTF8String);
  var oneByteMax = 0x007F;
  var twoByteMax = 0x07FF;
  var byteSize = str.length;

  for (i = 0; i < str.length; i++) {
    chr = str.charCodeAt(i);
    if (chr > oneByteMax) byteSize = byteSize + 1;
    if (chr > twoByteMax) byteSize = byteSize + 1;
  }
  return byteSize;
}

function controlValueIsSelected(element){
	

	if(document.getElementById(element).selectedIndex == 0 ){
			submitit = false;
			messageAlert = messageAlert + "\n- No Se ha Cumplimentado correctamente el formulario ";
			//document.getElementById(element).style.border = "1px red solid" ;
	}else
		{
		//document.getElementById(element).style.border = "1px #ADB0B0 solid" ;
	}
}

function getAreaCode(zip){
	if(!isEmpty(zip)){
		try{
		var long = zip.length;
		document.getElementById("area_code").value = zip.substr(0,long-3);
		document.getElementById("post_code").value = zip.substr(long-3,long);
		}catch(e){}
	}
}


