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 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 - " + "invalid date format";
		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 - " + "invalid date format";
			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 - " + "You haven't the legal age yet, you are a minor";
	}
}
//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)
			{
			messageAlert = messageAlert + "\n - " + nomChamp1 + " & " + nomChamp2 + " : " + "must be the same";
			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;
		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) + " : " + "Mandatory field";
						document.getElementById(idChamp).style.border = "1px red solid" ;
					}
			else
				{
				document.getElementById(idChamp).style.border = "1px #ADB0B0 solid" ;
				}
			}
		if(submitit == false)
			{
			messageAlert = messageAlert+errmess;
			}
		}
	else //cas du controle d'un seul champ
		{
		if(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(element == "phone7")
	{
		if(document.getElementById("phone7").value == "")
		{
			document.getElementById("phone").value = "000000000000";
		}
		else
		{
			document.getElementById("phone").value = document.getElementById("phone7").value;
			num = trim(num).replace(/\s/g,'');
		}
	}
	
	if (num !="")
	{
		if (isNaN(num))
		{
			submitit = false;
			messageAlert = messageAlert + "\n- number format invalid ";
			document.getElementById(element).style.border = "1px red solid" ;
		}else
		{
		document.getElementById(element).style.border = "1px #ADB0B0 solid" ;
		return num == parseInt(num);
		}
	}
	//eviter le probleme de l'export de la commande
	
	
	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- email invalid ";
		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- string size of "+ getLabel(element) +" exceeds maximun length allowed (" + 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- string size of "+ getLabel(element) +" does not meet minimum length expected (" + size + ")";
			document.getElementById(element).style.border = "1px red solid" ;
	}else
		{
		document.getElementById(element).style.border = "1px #ADB0B0 solid" ;
	}
}



function isValidString(element)
{
	var val = document.getElementById(element).value;
	var val1 = "";
	var out = false;
	var long = val.length;
	if(val.length==0){
		out=true;
	}
	for(var i=0; ((i<val.length )&& (!out)); i++)
		{
			val1 = val.substring(parseInt(i),parseInt(i+1));
			if((val1 >= 'A' && val1 <= 'Z') || (val1 >= 'a' && val1 <= 'z')) {
				out = false ;
			}
				else{ out=true;
			}
		}

	if(out)
		{
			submitit = false;
			messageAlert = messageAlert + "\n- value of Other invalid ";
			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]{0,}/;
	var exp2 = /\d[a-zA-Z]{2}/;
	
	if(!exp.test(val)){
			submitit = false;
			messageAlert = messageAlert + "\n- zip code format invalid ";
			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- zip code format invalid ";
			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- please select an option ";
			//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 = trim(zip.substr(0,long-3));
		document.getElementById("post_code").value = trim(zip.substr(long-3,long));
		}catch(e){}
	}
}
function Country_Restriction(index){

			if(index.toUpperCase() != "UK" && index.toUpperCase() != "GB"){
					var Restriction_Error = '<b class="red" id="restriction_cntry_msg"><br />Sorry Only addresses in UK can register</b>';
						document.getElementById('address_data').getElementsByTagName('div')[0].innerHTML += Restriction_Error;
				}else{
					
					document.getElementById('address_data').getElementsByTagName('div')[0].innerHTML = Post_Restriction_Error;
				}
			
		}


function Check_Card_Type()
{

	try{
	var Card_Type = document.getElementById('type');
	var Debit_Card = new Array('024', '031');
	var Credit_Card = new Array('001', '002', '003','007','005', '042');
	var Issue_Number = document.getElementById('issue_number');
	var Block_Start_Date = document.getElementById('start-month').parentNode;
	}
	catch(e)
	{
	}
	
	if(Card_Type!=null)
	{
		Card_Type.onchange = function(){
		
		for (var i = 0; i<Debit_Card.length; i++) {
		//alert(Card_Type.value);
						if (Card_Type.value == Debit_Card[i]) {
							Issue_Number.parentNode.style.display = 'block';
							Issue_Number.disabled=false;
							if (Debit_Card[i] == '031') {
								Block_Start_Date.style.display = 'none';
								document.getElementById('start-month').disabled=true;
								document.getElementById('start-year').disabled=true;
							} else {
								document.getElementById('start-month').disabled=false;
								document.getElementById('start-year').disabled=false;
								Block_Start_Date.style.display = 'block';
								
							}
						}
					}
					for (var i = 0; i<Credit_Card.length; i++) {
						if (Card_Type.value == Credit_Card[i]) {
							Issue_Number.parentNode.style.display = 'none';
							Issue_Number.disabled=true;
							Block_Start_Date.style.display = 'none';
							document.getElementById('start-month').disabled=true;
							document.getElementById('start-year').disabled=true;
						}
					}
		}
	}
	}
			
			

addEvent(window, "load", Check_Card_Type);