function sprintf () {
        var i = 0, a, f = arguments[i++], o = [], m, p, c, x;
        while (f) {
                if (m = /^[^\x25]+/.exec(f)) o.push(m[0]);
                else if (m = /^\x25{2}/.exec(f)) o.push('%');
                else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) {
                        if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) { throw("Too few arguments."); }
                        if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) { throw("Expecting number but found " + typeof(a)); }
                        
                        switch (m[7]) {
                                case 'b': a = a.toString(2); break;
                                case 'c': a = String.fromCharCode(a); break;
                                case 'd': a = parseInt(a); break;
                                case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break;
                                case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break;
                                case 'o': a = a.toString(8); break;
                                case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break;
                                case 'u': a = Math.abs(a); break;
                                case 'x': a = a.toString(16); break;
                                case 'X': a = a.toString(16).toUpperCase(); break;
                        }
                        
                        a = (/[def]/.test(m[7]) && m[2] && a > 0 ? '+' + a : a);
                        c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' ';
                        x = m[5] - String(a).length;
                        p = m[5] ? str_repeat(c, x) : '';
                        o.push(m[4] ? a + p : p + a);
                }
                else throw ("Huh ?!");
                f = f.substring(m[0].length);
        }
        
        return o.join('');
}
 
function str_repeat(i,m) {
        for (var o = []; m > 0; o[--m] = i); return(o.join(''));
}

function Control_SignUp_Client(frm,mode)
{
	//var frm = document.frm2;

	if( frm.elements['type_compte'][0].checked == false && frm.elements['type_compte'][1].checked == false){

		//alert("Vous devez préciser le type de compte : Particulier ou Professionnel.");
		alert(TYPE_REQUIRED);
		return false;
	}

	
	var NbElements = frm.elements.length;
	
	for (var l = 0; l < NbElements; l++)
	{
		var Nom_Element = frm.elements[l].name;
		var Champ = frm.elements[l];
		var val = frm.elements[l].value;
		
		// Verifie que si il est obligatoire
		if( Champ.className =='input_required'){
		
				// PARTICULIER
				if( frm.elements['type_compte'][0].checked == true  && (Nom_Element !="prefixe_tva" && Nom_Element !="tva_intra" && Nom_Element !="societe") ){
					//alert("Le champ "+Champ.title+" est obligatoire");		
					alert(sprintf(REQUIRED_FIELD,Champ.title));
					Champ.focus();
					return false;
				
				}
				// PROFESSIONNEL
				if( frm.elements['type_compte'][1].checked == true  ){
							
					//alert("Le champ "+Champ.title+" est obligatoire");
					alert(sprintf(REQUIRED_FIELD,Champ.title));
					Champ.focus();
					return false;
				
				}

		}

	} // END FOR
	
	
	if(mode =='AJOUT'){
			
		// Controle de coherence des mot de passe
		 if( frm.elements['password_1'].value != frm.elements['password_2'].value){
		
			//alert("Les 2 mots de passe sont differents, veuillez les ressaisir");
			alert(PWD_MISMATCH);
			frm.elements['password_1'].value = "";
			frm.elements['password_2'].value = "";
			frm.elements['password_1'].classname = "input_required";
			frm.elements['password_2'].classname = "input_required";
			frm.elements['password_1'].focus();
			return false;
		}
		// Controle de coherence des mot de passe
		 if( frm.elements['email'].value != frm.elements['confirm_email'].value){
		
			//alert("Les 2 emails sont differents, veuillez les ressaisir");
			alert(EMAIL_MISMATCH);
			frm.elements['confirm_email'].focus();
			return false;
		}
		if( isNotPassword(frm.elements['password_1'].value)  ){
		
			//alert("Le mot de passe ne peut pas commencer par un chiffre, doit être constitué uniquement de chiffres et de lettres de 4 caractères mini à 20 caractères maxi.");
			alert(PWD_SYNTAX);
			frm.elements['password_1'].focus();
			return false;
		}
		
	}
	/////////////////////////////////////////////////
	////////
	// Control sur les TVA
	var myArray = frm.elements['pays'].value.split('_');
	var zone = myArray[1];
	var pays = myArray[2];
	
	// Compte PRO
	if( frm.elements['type_compte'][1].checked == true && (zone == 1 || zone == 2 || zone == 3)){
		
		// Control du type de regime en fonction du pays.
		
		// Regime HT avec tva intra
		if( frm.elements['regime_tva'][1].checked == true &&  (zone  != 3)  ){
		
			//alert("Ce régime de TVA n'est applicable qu'aux pays de l'UE (hors France)");
			alert(TVA_ONLY_UE);
			return false;
		}

		// Si Assujetti est coche mais lea tva vide
		if( frm.elements['regime_tva'][1].checked == true && frm.elements['tva_intra'].value == "" && zone==3){
		
			//alert("Vous devez saisir votre numéro de TVA Intracommunautaire");
			alert(TVA_REQUIRED);
			frm.elements['tva_intra'].focus();
			return false;
		}
		// Si Assujetti est coche mais lea tva vide
		if( frm.elements['regime_tva'][1].checked == true && frm.elements['tva_intra'].value != "" && zone==3 && ( pays != frm.elements['prefixe_tva'].value) ){
		
			//alert("Ce numéro de TVA Intracommunautaire ne correspond pas à votre pays");
			alert(TVA_PAYS);
			frm.elements['prefixe_tva'].focus();
			return false;
		}
	}
	
	// Control case a cocher
	if( frm.elements['agree_cgv'].checked == false){
	
		//alert("Vous devez accepter les Conditions Générales Revendeur en cochant la case.");
		alert(AGREE_CGV);
			
			return false;
	}	
}

function Control_Agree_Cgv(frm){

	if( frm.elements['agree_cgv'].checked == false){

	
	//alert("Le champ "+Champ.title+" est obligatoire");
		alert(AGREE_CGV);
		frm.elements['agree_cgv'].focus();
		return false;
	}



}

function Control_SignUp_Revendeur(frm)
{
	
	var NbElements = frm.elements.length;
	
	for (var l = 0; l < NbElements; l++)
	{
		var Nom_Element = frm.elements[l].name;
		var Champ = frm.elements[l];
		var val = frm.elements[l].value;
		
		// Verifie que si il est obligatoire
		if( Champ.className =='input_required'){
		
					//alert("Le champ "+Champ.title+" est obligatoire");
					alert(sprintf(REQUIRED_FIELD,Champ.title));
					Champ.focus();
					return false;
		}
	} // END FOR
	
	
	// Controle de coherence des mot de passe
	 if( frm.elements['password_1'].value != frm.elements['password_2'].value){
	
		//alert("Les 2 mots de passe sont differents, veuillez les ressaisir");
		alert(PWD_MISMATCH);
		frm.elements['password_1'].value = "";
		frm.elements['password_2'].value = "";
		frm.elements['password_1'].classname = "input_required";
		frm.elements['password_2'].classname = "input_required";
		frm.elements['password_1'].focus();
		return false;
	}
	// Controle de coherence des mot de passe
	 if( frm.elements['email'].value != frm.elements['confirm_email'].value){
	
		//alert("Les 2 emails sont differents, veuillez les ressaisir");
		alert(EMAIL_MISMATCH);
		frm.elements['confirm_email'].focus();
		return false;
	}
	if( isNotPassword(frm.elements['password_1'].value)  ){
	
		//alert("Le mot de passe ne peut pas commencer par un chiffre, doit être constitué uniquement de chiffres et de lettres de 4 caractères mini à 20 caractères maxi.");
		alert(PWD_SYNTAX);
		frm.elements['password_1'].focus();
		return false;
	}
	/////////////////////////////////////////////////
	////////
	// Control sur les TVA
	var myArray = frm.elements['pays'].value.split('_');
	var zone = myArray[1];
	var pays = myArray[2];
	
	// Compte PRO
	if( zone == 1 || zone == 2 || zone == 3 ){
		
		// Control du type de regime en fonction du pays.
		
		// Regime HT avec tva intra
		if(frm.elements['regime_tva'][1].checked == true && zone  != 3  ){
		
			//alert("Ce régime de TVA n'est applicable qu'aux pays de l'UE (hors France)");
			alert(TVA_ONLY_UE);
			return false;
		}
		
		// Si Assujetti est coche mais lea tva vide
		if( frm.elements['regime_tva'][1].checked == true && frm.elements['tva_intra'].value == "" && zone==3){
		
			//alert("Vous devez saisir votre numéro de TVA Intracommunautaire");
			alert(TVA_REQUIRED);
			frm.elements['tva_intra'].focus();
			return false;
		}
		// Si Assujetti est coche mais lea tva vide
		if( frm.elements['regime_tva'][1].checked == true && frm.elements['tva_intra'].value != "" && zone==3 && ( pays != frm.elements['prefixe_tva'].value) ){
		
			//alert("Ce numéro de TVA Intracommunautaire ne correspond pas à votre pays");
			alert(TVA_PAYS);
			frm.elements['prefixe_tva'].focus();
			return false;
		}
		
	}
	
	// Control case a cocher
	if( frm.elements['agree_cgr'].checked == false){
	
		//alert("Vous devez accepter les Conditions Générales Revendeur en cochant la case.");
		alert(AGREE_CGR);
			
			return false;
	}
		
}

////
// Modification info PARTICULIER
function Control_Modif_Particulier(frm)
{
	var NbElements = frm.elements.length;
	
	for (var l = 0; l < NbElements; l++)
	{
		var Nom_Element = frm.elements[l].name;
		var Champ = frm.elements[l];
		var val = frm.elements[l].value;
		
		// Verifie que si il est obligatoire
		if( Champ.className =='input_required'){
			
				if( Nom_Element !="tva_intra" && Nom_Element !="societe" ){ // On exclu le champ societe et tva
							
					//alert("Le champ "+Champ.title+" est obligatoire");
					alert(sprintf(REQUIRED_FIELD,Champ.title));
					Champ.focus();
					return false;
				}
		}
	}
}
////ROFESSIONNELARTICULIER
function Control_Modif_Professionnel(frm)
{
	
	var NbElements = frm.elements.length;
	for (var l = 0; l < NbElements; l++)
	{
		var Nom_Element = frm.elements[l].name;
		var Champ = frm.elements[l];
		var val = frm.elements[l].value;
		
		// Verifie que si il est obligatoire
		if( Champ.className =='input_required'){
	
				//alert("Le champ "+Champ.title+" est obligatoire");
				alert(sprintf(REQUIRED_FIELD,Champ.title));
				Champ.focus();
				return false;
			
		}
	}

	//alert(frm.elements['regime_tva'].value);
	// Si Assujetti est coche mais lea tva vide
		if( frm.elements['regime_tva'].value == 1 && ( frm.elements['tva_intra'].value == "" ||frm.elements['prefixe_tva'].value == "" ) ){
		
			//alert("Vous devez saisir votre numéro de TVA Intracommunautaire");
			alert(TVA_REQUIRED);
			frm.elements['tva_intra'].focus();
			return false;
		}
		// Si Assujetti est coche mais lea tva vide
		var myArray = frm.elements['pays'].value.split('_');
		var code_iso = myArray[2];
		
		if( frm.elements['regime_tva'].value == 1 && frm.elements['tva_intra'].value != "" && ( code_iso != frm.elements['prefixe_tva'].value) ){
		
			//alert("Ce numéro de TVA Intracommunautaire ne correspond pas à votre pays");
			alert(TVA_PAYS);
			frm.elements['prefixe_tva'].focus();
			return false;
		}
	
	
}
// Fonction pour demander confirmation sur submit d'un formulaire
function CtrlChangePwd(frm)
{

		
	if( frm.elements['password_1'].value != frm.elements['password_2'].value){
	
		//alert("Les 2 mots de passe sont differents, veuillez les ressaisir");
		alert(PWD_MISMATCH);
		frm.elements['password_1'].focus();
		return false;
	}
	
	if( isNotPassword(frm.elements['password_1'].value)  ){
	
		//alert("Le mot de passe ne peut pas commencer par un chiffre, doit être constitué uniquement de chiffres et de lettres de 4 caractères mini à 20 caractères maxi.");
		alert(PWD_SYNTAX);
		frm.elements['password_1'].focus();
		return false;
	}

  
}

// Fonction pour demander confirmation sur submit d'un formulaire
function ConfirmChoice(formulaire,msg)
{
  if(confirm(msg)){
    formulaire.submit();
	return(true);
	}
   else{
  return false;}
}

function Control_Login(formulaire)
{
	if( document.forms['frm_connx'].elements['email_connx'].value == ""){
		//alert("Vous devez saisir votre adresse email");
		alert(EMAIL_REQUIRED);
		return false;
	}
	if( document.forms['frm_connx'].elements['pwd_connx'].value == ""){
		//alert("Vous devez saisir votre mot de passe");
		alert(PWD_REQUIRED);
		return false;
	}
	
}

function Control_agree(formulaire)
{
	if( document.forms['frm_quittance'].elements['agree'].checked == false){
		//alert("Vous devez cocher la case conditions");
		alert(AGREE_CONDITIONS);
		return false;
	}
	
}

function IsRequiredOk(st){

	if(st.value != "" && st.value != 0){
	
	var val = st.value;
	var Champ = st;
		var type = st.alt;
		//alert(type);
		// Modif pour bug  focus FF
		if(st.value != "")
		{		
			if(type == "email"){
				if (isNotEmailAdress(val))	{
					//alert('Cette adresse email n\'est pas valide !');
					alert(EMAIL_NOT_VALID);
					Champ.select();
					Champ.focus();
					return false;}
			}
			if(type == "cp"){
				if (isNotCodePostal(val))	{
					//alert('Ce code postal n\'est pas valide !');
					alert(CP_NOT_VALID);
					Champ.select();
					Champ.focus();
					return false;}
			}
			if(type == "telephone"){
				if (isNotTelephone(val,"fixe"))	{
					//alert('Ce telephone n\'est pas valide !');
					alert(TEL_NOT_VALID);
					Champ.select();
					Champ.focus();
					return false;}
			}
			// if(type == "portable"){
				// if (isNotTelephone(val,"port"))	{
					// alert('Ce telephone n\'est pas valide !');
					// Champ.select();
					// Champ.focus();
					// return false;}
			// }
			if(type == "num"){
				if (isNotInt(val))	{
					
					//alert('Vous devez saisir une valeur numérique pour le champs '+Champ.title);
					alert(sprintf(NUM_NOT_VALID,Champ.title));
					Champ.select();
					Champ.focus() ;
					return false;}
			}
			if(type == "float"){
				if (isNotDouble(val))	{
					//alert('Ce n\'est pas une valeur decimale, le séparateur doit etre un . (point)');
					alert(FLOAT_NOT_VALID);
					Champ.select();
					Champ.focus();
					return false;
					}
			}
		}
	
	st.className='input_ok';
	}else{
	st.className='input_required'; 
	}

}
// Affiche la boite TVA dans le formulaire
function ChangePays(frm,type){
	
	
	IsRequiredOk(frm.elements['pays']);
	
	var v = document.getElementById("boxtva");
	var id_pays = frm.elements['pays'].value;
	
	if(type == 'REVENDEUR'){
		VarRecup = 'PRO';
	}
	else{
	
		for(i=0;i<=1;i++)
		{
			  if(frm.type_compte[i].checked){
			      VarRecup=frm.type_compte[i].value;
			  }
		}
	}
	//alert(VarRecup);
	if(VarRecup == 'PRO'){	
		 // On extrait la zone
		var myArray = id_pays.split('_');
		var zone = myArray[1];
		 
		if(zone == 1 || zone == 2 || zone == 3){

			v.style.display = "block";
			if(zone == 3){
				//if(frm.elements['tva_intra'].value == "")
				//frm.elements['tva_intra'].className = 'input_required';
			}
			if(zone == 1 || zone == 2){
				//frm.elements['tva_intra'].className = 'input_ok';
			}
		}
		else{
			v.style.display = "none";
		}
	}
 
}
// Affiche le champs DEnomination sociale dans le formulaire client d'un revendeur
function CheckCompteClientRevendeur(frm,type_compte){
	
	var b = document.getElementById("boxsociete");
	
	if(type_compte == 'PRO'){
	
		// On rend le champ societe obligatoire
		b.style.display = "block"; // Champs SOCIETE
		
		if(frm.elements['societe'].value == ""){
		frm.elements['societe'].className = 'input_required';
		}
	}
	else{
		b.style.display = "none"; // Champs SOCIETE
	}

}

// Affiche la boite TVA dans le formulaire
function CheckCompte(frm,type_compte){

	var v = document.getElementById("boxtva");
	var b = document.getElementById("boxsociete");
	var r = document.getElementById("box_remise_statut");
	
	if(type_compte == 'PRO'){
	
		// On rend le champ societe obligatoire
		b.style.display = "block"; // Champs SOCIETE
		r.style.display = "block"; // Boite Remise Statut
		
		if(frm.elements['societe'].value == ""){
		frm.elements['societe'].className = 'input_required';
		}
		// Si un pays est electionne, on affiche ou non le bloc TVA
		var myArray = frm.elements['pays'].value.split('_');
		var zone = myArray[1];
		
		if(zone == 1 || zone == 2 || zone == 3){ // SI zone  = FR, DOM TOM ou CEE

			v.style.display = "block"; // Affichage boite TVA
			
			if(zone == 3){ // ZONE CEE : TVA Obligatoire
				frm.elements['tva_intra'].className = 'input_required';
			}
			
			if(zone == 1 || zone == 2){ // ZONE FR et DOM TOM : TVA Facultative
				frm.elements['tva_intra'].className = 'input_ok';
			}
		}
		else{
			v.style.display = "none"; // Boite TVA
		}
				
	}
	else{
		//frm.elements['societe'].className = 'input_ok';
		//frm.elements['societe'].value = '';
		frm.elements['tva_intra'].className = 'input_ok';
		frm.elements['tva_intra'].value = '';
		
		v.style.display = "none"; // Boite TVA
		b.style.display = "none"; // Champs SOCIETE
		r.style.display = "none"; // Boite Remise Statut
		
	}
	
	 
}

// Rend obmligatoire tva intra si HT est coché
function CheckTvaRequired(frm,action){

	if(action == 1){
		frm.elements['tva_intra'].className = 'input_required';
		frm.elements['prefixe_tva'].className = 'input_required';
		
	}
	else if(action == 0){
		frm.elements['tva_intra'].className = 'input_ok';
		frm.elements['prefixe_tva'].className = 'input_ok';
		frm.elements['tva_intra'].value = '';
		frm.elements['prefixe_tva'].value = '';
	}
}

function openWin(URL)
{
	var top=(screen.height-500)/2;
	var left=(screen.width-660)/2;
	window.open(URL,"AvastEdition","top="+top+",left="+left+",toolbar=no,width=660,height=500,status=no,scrollbars=yes,resize=no,menubars=no");
}

function Go(frm_name)
{
	window.document.forms[frm_name].submit();
}

function Control_Contact(frm)
{
	var NbElements = frm.elements.length;
	
	for (var l = 0; l < NbElements; l++)
	{
		var Nom_Element = frm.elements[l].name;
		var Champ = frm.elements[l];
		var val = frm.elements[l].value;
		
		// Verifie que si il est obligatoire
		if( Champ.className =='input_required'){
	
					//alert("Le champ "+Champ.title+" est obligatoire");
					alert(sprintf(REQUIRED_FIELD,Champ.title));
					Champ.focus();
					return false;
		}

	} // END FOR
			
}

function ShowReponse(div_id){

	 var v = document.getElementById("R"+div_id);
	 
	if(v.style.display == "none"){
	v.style.display = "block";
	}
	else{
	v.style.display = "none";
	}
	 
}
function goToPack(dest){

/*alert(dest);*/
window.location.href = dest + '.php';
}