// Vérification formulaire ouverture compte

function isformok_ouvrecompte(){
if(document.formouvrecompte.Societe.value.length == 0)
	{alert("Le nom de la société doit être saisi, merci"); 
    return false;} 

if(document.formouvrecompte.Nom.value.length == 0)
	{alert("Votre nom doit être saisi, merci"); 
    return false;} 

if(document.formouvrecompte.Prenom.value.length == 0)
	{alert("Votre prénom doit être saisi, merci"); 
    return false;} 

if(document.formouvrecompte.Adresse.value.length == 0)
	{alert("L'adresse de la société doit être saisie, merci"); 
    return false;}

if(document.formouvrecompte.Cp.value.length == 0)
	{alert("Le code postal de la société doit être saisi, merci"); 
    return false;}

if(document.formouvrecompte.Ville.value.length == 0)
	{alert("La ville doit être saisie, merci"); 
    return false;}

if(document.formouvrecompte.Tel.value.length == 0)
	{alert("Le numéro de téléphone doit être saisi, merci"); 
    return false;}
	
if(document.formouvrecompte.Fax.value.length == 0)
	{alert("Le numéro de Fax doit être saisi, merci"); 
    return false;}

if(document.formouvrecompte.Siret.value.length == 0)
	{alert("Le numéro de Siret (14 chiffres) doit être saisi, merci"); 
    return false;}

if(document.formouvrecompte.APE.value.length == 0)
	{alert("Le code APE ou NAF doit être saisi, merci"); 
    return false;}

if(document.formouvrecompte.email.value.length == 0)
	{alert("Votre adresse email doit être saisie, merci"); 
    return false;}

return true;
}

/***************************************************************************************/
/* 20070430 GB : Fonctions de validations */
/* ex d'utilisation :
 * <input type="text" name="monChampTexte" value=""
 *     xxrequired="Ce champ est obligatoire !"
 *     xxregex="\d{1,5}" xxregexmsg="Ce champ est un entier (1 à 5 chiffre)"
 *     xxcustomvalidate="maFonctionDeValidationCustomisee"
 *     onblur="javascript:return xxValidateField(this);" />
 *
 * L'utilisation de 'onblur="javascript:return xxValidateField(this);"' est obligatoire.
 * Il est possible de passer une fonction en 2eme parametre pour permettre des traitements (affichages ?)
 * particuliers dans le cas de champs obligatoires
 * ex :
 * <script language="javascript>
 * function traitementVisuel()
 * {
 *     alert('exemple');
 * }
 * </script>
 * <input type="text" name="monChampTexte" value=""
 *     xxrequired="Ce champ est obligatoire !"
 *     xxregex="\d{1,5}" xxregexmsg="Ce champ est un entier (1 à 5 chiffre)"
 *     xxcustomvalidate="maFonctionDeValidationCustomisee"
 *     onblur="javascript:return xxValidateField(this, traitementVisuel);" />
 *
 * pour l'utilisation de 'xxcustomvalidate', voir la fonction 'xxValidateField'
 *
 * Pour indiquer qu'un bouton doit valider le formulaire, ex :
 * <input type="image" name="Envoyer" value="Envoyer" src="images/envoyer.gif" onclick=""
 *     onclick="if (typeof(xxValidateForm) == 'function') return xxValidateForm(this);" language="javascript" />
 */

/* fonction de controle d'un champ de type 'text' requis */
function xxRequiredText()
{
	var field = arguments[0];
	var xxrequired = arguments[1];
	var value = field.value.replace('\n', '').replace('\r', '');
	var func = null;
	if (arguments.length != 2)
		func = arguments[2];
	if (value.replace( /\s+/, '') == '') {
		if (func == null)
			//VG :: enlever les textes
			//alert(xxrequired);
		return false;
	}
	return true;
}

/* fonction de controle d'un champ de type 'radio' ou 'checkbox' requis */
function xxRequiredRadioCheck()
{
	var field = arguments[0];
	var xxrequired = arguments[1];
	var oform = xxGetFormFromField(field);
	var fieldName = (field.id != null) ? field.id : field.name;
	var radiocheck = null;
	var func = null;
	var valid = false;
	var index = 0;
	if (arguments.length != 2)
		func = arguments[2];
	
	eval('radiocheck = oform.' + fieldName + ';');
	if (radiocheck != null) {
		if (radiocheck.type == 'checkbox' || radiocheck.type == 'radio')
			valid = radiocheck.checked;
		else
			for(index = 0; !valid && index<radiocheck.length; index++)
				valid |= radiocheck[index].checked;
	}
	if (!valid && func == null)
		//VG :: enlever les textes
			//alert(xxrequired);
	return valid;
}

/* fonction de controle d'un champ de type 'select-one' requis */
function xxRequiredSelectOne()
{
	var field = arguments[0];
	var xxrequired = arguments[1];
	var valid = (field.selectedIndex != 0);
	var func = null;
	if (arguments.length != 2)
		func = arguments[2];
	if (!valid && func == null)
		//VG :: enlever les textes
			//alert(xxrequired);
	return valid;
}

/* fonction de controle d'un champ de type 'select-multipe' requis */
function xxRequiredSelectMulti()
{
	var field = arguments[0];
	var xxrequired = arguments[1];
	var func = null;
	var valid = false;
	var index = 0;
	if (arguments.length != 2)
		func = arguments[2];
	for (index = 0; !valid && index<field.options.length; index++)
		valid |= field.options[index].selected;
	if (!valid && func == null)
		//VG :: enlever les textes
			//alert(xxrequired);
	return valid;
}

/* récupère le forum parent du champ */
function xxGetFormFromField()
{
	var field = arguments[0];
	while (field != null && field.tagName != 'FORM')
		field = field.parentNode;
	return field;
}

/* récupère l'objet 'règle' associé au type du champ */
function xxGetFieldTypeRule()
{
	var result = null;
	var index;
	for(index = 0; index<xxFieldTypeRules.length; index++) {
		if (xxFieldTypeRules[index].type == arguments[0]) {
			result = xxFieldTypeRules[index];
			break;
		}
	}
	return result;
}

/* fonction de validation d'un champ */
function xxValidateField()
{
	var valid = true;
	if (arguments.length != 0) {
		var field = arguments[0];
		var func = null;
		if (arguments.length != 1)
		    func = arguments[1];
		var fieldRule = xxGetFieldTypeRule(field.type);
		if (fieldRule != null) {
			if (fieldRule.canRequired) {
			    /* Est-ce un champs requis ? */
				var xxrequired = field.getAttribute('xxrequired');
				if (xxrequired != null) {
				    if (func == null)
					    valid = fieldRule.requiredFunc(field, xxrequired);
					else
					    valid = fieldRule.requiredFunc(field, xxrequired, func);
				}
			}
			if (fieldRule.canRegular) {
				var value = field.value.replace('\n', '').replace('\r', '');
				if (value.replace( /\s+/, '') != '') {
			        /* Expression régulière de formatage */
					var xxregex = field.getAttribute('xxregex');
			        /* Message dans le cas où l'expression régulière de formatage n'est pas bonne */
					var xxregexmsg = field.getAttribute('xxregexmsg');
					if (xxregex != null && xxregex.replace( /\s+/, '') != '') {
						var rregex = '/' + xxregex + '/g';
						var matched = null;
						eval('matched = value.match(' + rregex + ');');
						if (matched == null || matched.join(',').replace(',', '') != value) {
           			        /* Message par défaut */
							if (xxregexmsg == null || xxregexmsg.replace( /\s+/, '') == '')
								xxregexmsg = 'format invalide';
							//VG :: enlever les textes
							//alert(xxregexmsg);
												
							
							valid = false;
						}
					}
				}
			}
		    /* on regarde si une fonction de validation customisée est configuré */
			var xxcustomvalidate = field.getAttribute('xxcustomvalidate');
			if (xxcustomvalidate != null && xxcustomvalidate.length != 0) {
			    /* La fonction customisée doit etre du format 'function maFonction(champ, args) { ... }' */
			    /* args est un objet avec 2 propriétés : value = la valeur du champ, isValid = validité du champ */
			    /* La fonction customisée peut modifier la valeur de isValid pour indiquer aux fonctions de validations la validité du champ */
			    /* ex :
			     * function maFonction(champ, args)
			     * {
			     *     args.isValid = (args.value != '');
			     * }
			     */
				var args = { 'value':'', 'isValid':true };
				args.value = field.value;
				args.isValid = valid;
				eval('' + xxcustomvalidate + '(field, args);');
				valid = args.isValid;
			}
		}
	}
	
	return valid;
}

/* fonction de validation d'un formulaire */
/* on passe le champ qui permet de valider le formulaire en paramètre */
function xxValidateForm(field)
{
    /* on désactive le bouton le temps de la vérification */
	field.disabled = true;
	/* on récupère le formulaire parent */
	var oform = xxGetFormFromField(field);
	/* var valid = true; */
	var valid;
	var index = 0;
	var xxerror;
	

	for (index = 0; index<oform.elements.length; index++) {
	    /* on lance la validation sur chacun des champs */
		if (oform.elements[index].onblur != null) {
			tmp = oform.elements[index].onblur();
		 	xxerror = oform.elements[index].getAttribute('xxerror');
			
			if (xxerror==1) {
				valid = false;
			}
		}	
	}
	
	if(document.getElementById("strBirthdayDAY"))
	{
		if(document.getElementById("strBirthdayDAY").value!='' ||
		document.getElementById("strBirthdayMONTH").value!=''||
		document.getElementById("strBirthdayYYYY").value!=''		)
		{
			if(document.getElementById("strBirthdayDAY").value=='' ||
			document.getElementById("strBirthdayMONTH").value==''||
			document.getElementById("strBirthdayYYYY").value=='')
			{
				alert('Veuillez vérifier votre date de naissance');
				valid = false;
			}
		}
		
	}
	
	
	/* si le formulaire est valide, on envoie */
	if (valid)	
		oform.submit();
	else
		if(valid==false)
			alert("Veuillez bien remplir les champs marqués par des croix rouges.");		
		
	
	
	
    /* on réactive le bouton une fois que c'est ok */
	field.disabled = false;
	return valid;
}

/* NE PAS MODIFIER CE TABLEAU */
/* Tableau d'objets de type règles d'utilisation des champs d'un formulaire */
/* canRequired = indique que le champ peut etre un champ requis, utilisation de xxrequired */
/* canRegular = indique que le champ peut utiliser une expression reguliere pour etre valider, utilisation de xxregex et xxregexmsg */
/* requiredFunc = fonction qui controle lorsque le champ est requis */
var xxFieldTypeRules = [
	{'type':'text', 'canRequired':true, 'canRegular':true, 'requiredFunc':xxRequiredText},
	{'type':'password', 'canRequired':true, 'canRegular':true, 'requiredFunc':xxRequiredText},
	{'type':'textarea', 'canRequired':true, 'canRegular':true, 'requiredFunc':xxRequiredText},
	{'type':'radio', 'canRequired':false, 'canRegular':false, 'requiredFunc':xxRequiredRadioCheck},
	{'type':'checkbox', 'canRequired':true, 'canRegular':false, 'requiredFunc':xxRequiredRadioCheck},
	{'type':'file', 'canRequired':true, 'canRegular':false, 'requiredFunc':xxRequiredText},
	{'type':'select-one', 'canRequired':true, 'canRegular':false, 'requiredFunc':xxRequiredSelectOne},
	{'type':'select-multiple', 'canRequired':true, 'canRegular':false, 'requiredFunc':xxRequiredSelectMulti}
];

/* Affichage du picto d'erreur a cote de l'input */
function AffError(name,field,Err)
{
	if (Err==1) {
		document.getElementById(name).src = '/images/erreur_form.gif';
		document.getElementById(field.name).setAttribute('xxerror','1');
	} else {
		document.getElementById(name).src = '/images/spacer.gif';
		document.getElementById(field.name).setAttribute('xxerror','0');
	}	
}

/* Affichage du picto d'erreur a cote de l'input */
function AffError2(name,field,Err)
{
	if (Err==1) {
		document.getElementById(name).src = '/images/erreur_form2.gif';
		document.getElementById(field.name).setAttribute('xxerror','1');
	} else {
		document.getElementById(name).src = '/images/spacer.gif';
		document.getElementById(field.name).setAttribute('xxerror','0');
	}	
}




//============vane::infobulle vérification formulaire création de compte 
function GetId(id)
{
	return document.getElementById(id);
}
var i=false; // La variable i nous dit si la bulle est visible ou non

function montre(text, element) {
  if(i==false) {
 var a = getPosition(element)
   
  GetId("curseur").style.left=a[0] + 150+"px";
  GetId("curseur").style.top=a[1] +"px";
 
  GetId("curseur").style.visibility="visible"; // Si il est cacher (la verif n'est qu'une securité) on le rend visible.
  GetId("curseur").innerHTML = text; // on copie notre texte dans l'élément html
  i=true;
  }
}
function montre_contact(text, element) {
  if(i==false) {
 var a = getPosition(element)
   
  GetId("curseur").style.left=a[0] + 200+"px";
  GetId("curseur").style.top=a[1] +"px";
 
  GetId("curseur").style.visibility="visible"; // Si il est cacher (la verif n'est qu'une securité) on le rend visible.
  GetId("curseur").innerHTML = text; // on copie notre texte dans l'élément html
  i=true;
  }
}

function cache() {
if(i==true) {
GetId("curseur").style.visibility="hidden"; // Si la bulle est visible on la cache
i=false;
}
}

function getPosition(element)
{
	var left = 0;
	var top = 0;
	/*On récupère l'élément*/
	var e = document.getElementById(element);
	/*Tant que l'on a un élément parent*/
	while (e.offsetParent != undefined && e.offsetParent != null)
	{
		/*On ajoute la position de l'élément parent*/
		left += e.offsetLeft + (e.clientLeft != null ? e.clientLeft : 0);
		top += e.offsetTop + (e.clientTop != null ? e.clientTop : 0);
		e = e.offsetParent;
	}
	//return new Array(left,top);
	var pos = [];
    pos[0] = left;
    pos[1] = top;
   return pos;
  
}

function showbulle(field)
{
	
	if(field.value!='' && xxValidateField(field)==false)
	{
	
		if (field.getAttribute('xxregexmsg'))
			montre(field.getAttribute('xxregexmsg'),field.getAttribute('id'));
	
	} 
	/*
	else
	{
		if (field.getAttribute('xxrequired'))
		montre(field.getAttribute('xxrequired'),field.getAttribute('id'));
	}
	*/
	
}

function controleTVA(pays)
{
	var champ = document.getElementById('strCodeTVA');   	
	switch(pays)
	{
		case 'FR':
			champ.setAttribute('xxregex','^(FR)[0-9]{11}$');
			champ.setAttribute('xxregexmsg','FR + 11 chiffres(ex : FR 96 408 337 533)');			
		break;	
		case 'BE':
			champ.setAttribute('xxregex','^BE0[0-9]{9,10}');
			champ.setAttribute('xxregexmsg','BE 0 + 9 ou 10 chiffres (ex : BE0123456789)');			
		break;
		case 'DE':
			champ.setAttribute('xxregex','^DE[0-9]{9}');
			champ.setAttribute('xxregexmsg','DE + 9 chiffres(ex : DE123456789)');			
		break;
		case 'LU':
			champ.setAttribute('xxregex','^LU[0-9]{8}');
			champ.setAttribute('xxregexmsg','LU + 8 chiffres(ex : LU12345678)');			
		break;
		
		case 'NL':
			champ.setAttribute('xxregex','^(NL)[0-9a-zA-Z]{12}$');
			champ.setAttribute('xxregexmsg','NL + 12 caractères(ex : NL123456789012)');			
		break;	
		default:
			champ.setAttribute('xxregex','^(FR)[0-9]{11}$');
			champ.setAttribute('xxregexmsg','FR + 11 chiffres(ex : FR 96 408 337 533)');			
		break;		
	}
	
}

function controleCP(pays, name)
{
	formatCP(pays, document.getElementById(name));
	//formatCP(pays, document.getElementById('strshipzip'));
	//formatCP(pays, document.getElementById('strPostCode'));	
}

function formatCP(pays,champ)
{
		
	switch(pays)
	{
		case 'FR':
			champ.setAttribute('xxregex','(0[1-9]\\d{3})|([1-8]\\d{4})|(9[0-8]\\d{3})');
			champ.setAttribute('xxregexmsg','5 chiffres entre 01000 et 98999(ex : 78200)');			
		break;	
		case 'BE':
			champ.setAttribute('xxregex','[1-9]\\d{3}');
			champ.setAttribute('xxregexmsg','4 chiffres entre 1000 et 9999 (ex : 1299)');			
		break;
		case 'DE':
			champ.setAttribute('xxregex','(0[1-9]\\d{3})|([1-9]\\d{4})');
			champ.setAttribute('xxregexmsg','5 chiffres entre 01000 et 99999(ex : 10155)');			
		break;
		case 'LU':
			champ.setAttribute('xxregex','[1-9]\\d{3}');
			champ.setAttribute('xxregexmsg','4 chiffres entre 1000 et 9999(ex : 1200)');			
		break;
		case 'NL':
			champ.setAttribute('xxregex','[1-9]\\d{3}[a-zA-Z]{2}');
			champ.setAttribute('xxregexmsg','4 chiffres entre 1000 et 9999 + 2 lettres(ex : 1200AA))');			
		break;	
		default:
			champ.setAttribute('xxregex','(0[1-9]\\d{3})|([1-8]\\d{4})|(9[0-8]\\d{3})');
			champ.setAttribute('xxregexmsg','5 chiffres entre 01000 et 98999(ex : 78200)');			
		break;		
	}
	
}





function validcodepostal(field)
{
	result = true
	var lepays = document.getElementById('StrCountry').value;
	var lecp = field.value;
	if ( lepays!="CA") 
	{		
			if (IsNumeric(lecp))
			{
				if (lepays=="FR" || lepays=="FRDT") 
				{
					if (lecp.length!=5)
					{
						result=false
					}
					else
					{
						if (lecp < "01000" || lecp > "98999")  
						{
							result=false
						}
					}			
				}
			}
			else
			{
				result=false
			}			
				
	}
	return result
}



function IsNumeric(sText)

{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }



