/*****************************************************************************************************************

form.js : Ensemble de scripts permettant la vérification des formulaires du site
// PARTIE 1 \\ 
Liste des fonctions de v?rification
Les messages d'alertes sont g?n?r?s sur la page haut.tpl ? partir du fichier de lang 

// PARTIE 2 \\ 
Fonction ART_validForm(form_name)
    Parcours le formulaire envoy? et active les fonctions de validation si d?fini dans l'ID du champ. Envoye le formulaire si toutes les fonctions retourn true sinon active l'alert.
    form_name : nom du formulaire ? v?rifier
    

**Syntaxe des id de champ de formulaire**
              x_00_para_name

- 'x' : d?finie si le champ est obligatoire ou non 
    valeur : o ou n
- '00' : id de la fonction qui sera utilis? pour la v?rification
    valeur : 01 ? 99
- 'para' : param?tre optionnel pour la fonction de v?rification
	defaut : 0
- 'name' : name du champ de formulaire

Exemple : o_02_0_client_email
    

fonctions : 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

ART_charCount(champ, num) : (01)
    Contr?le le nombre de caract?res autoris?s dans un champ
    champ : id du champ ? v?rifier
    num : nombre de caract?re maximun
    return true ou false
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

ART_validation_champ(champ) : (02)
    V?rifie que le champ de type input text n'est pas vide
    champ : id du champ ? v?rifier
    return true ou false
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

ART_isNumber(champ) : (03)
    V?rifie que le champ est bien un chiffre
    champ : id du champ ? v?rifier
    return true ou false
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

ART_isNumber_tel(champ) : (04)
    V?rifie que le champ est uniquement rempli avec des chiffres, et accepte certains s?parateurs.
    V?rifie que le champ n'est pas vide et ne d?pase pas un certain nombre de caract?re
    champ : id du champ ? v?rifier
    return true ou false
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

ART_isNumber_cp(champ) : (05)
    V?rifie que le champ code postal est uniquement rempli des chiffres, et accepte les s?parateurs / -
    champ : id du champ ? v?rifier
    return true ou false
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

ART_validation_email(champ) : (06)
    V?rifie que le champs est rempli, qu'un arobase est pr?sent et qu'il y a un point apr?s l'arobase sans y ?tre attach? 
    champ : id du champ ? v?rifier
    return true ou false
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
ART_test_champ(id) : (07)
    PAGE PANIER : V?rifie que le champ de t?l?phone indiqu? par le select est bien rempli
    id : id du select
    return true ou false

******************************************************************************************************************/

function ART_charCount(champ, num){
    document.getElementById(champ).focus();
    var input = document.getElementById(champ);
    var txt = input.value;
    if(txt.length>num){
        alert(num+" "+validForm['carac']);
        input.value = txt.substr(0,num);
        return false;
    }
}

function ART_isString(obj, img) {
    retour = true;  
    var regex = new RegExp(/[0-9]/gi);
	if(obj.value.length < 2) {
        alert(validForm['zone']+" '"+obj.title+"'.");
        retour = false;
		ART_imgChange(img);
        return retour;
    }
	if(obj.value.match(regex)) {
        alert("'"+obj.title+"' "+validForm['valide']);
        retour = false;
		ART_imgChange(img);
        return retour;
    }
	ART_imgChange(img);
	return retour;
}    

function ART_isNumber(obj, img) {    
    retour = true;
    var regex = new RegExp(/^[0-9]+$/gi);
    if (obj.value.length < 1) {
        alert(validForm['zone']+" '"+obj.title+"'.");
        retour = false;
		ART_imgChange(img);
        return retour;
    }
    if (!obj.value.match(regex)) {
        alert("'"+obj.title+"' "+validForm['valide']);
        retour = false;
		ART_imgChange(img);
        return retour;
    }
	ART_imgChange(img);
    return retour;
}

function ART_isTel(obj, img) {    
    retour = true;
    var RegExp_fr = new RegExp(/^(01|02|03|04|05|06|08)(([\.\-\/\ ])?[0-9][0-9]){4}$/gi);
    var RegExp_be = new RegExp(/^(01|02|03|04|05|06|08|09)(([\.\-\/\ ])?[0-9][0-9][0-9]){1}(([\.\-\/\ ])?[0-9][0-9]){2}$/gi);
    if (obj.value.length < 2) {
        alert(validForm['zone']+" '"+obj.title+"'.");
        retour = false;
		ART_imgChange(img);
        return retour;
    }
	var tel_fr = 'ok';
	var tel_be = 'ok';
    if (!obj.value.match(RegExp_fr)) tel_fr = 'no';
    if (!obj.value.match(RegExp_be)) tel_be = 'no';
	if (tel_fr=='no' && tel_be=='no') {
		alert(validForm['tel']);
        retour = false;
		ART_imgChange(img);
        return retour;
    }
	
	ART_imgChange(img);
    return retour;
}

function ART_isCP(obj, img) {  
    retour = true;
    var regex = new RegExp(/^(0[1-9]{0,1}|[1-9][0-9]{0,1})[0-9]{0,3}$/gi);  
    var str = obj.value.toString();
    if (str.length < 3) {
        alert(validForm['zone']+" '"+obj.title+"'.");
        retour = false;
		ART_imgChange(img);
        return retour;
    }
    if (!str.match(regex)) {
        alert("'"+obj.title+"' "+validForm['valide']);
        retour = false;
		ART_imgChange(img);
        return retour;
    }
	ART_imgChange(img);
    return retour;
} 

function ART_isEmail(obj, img, facultatif) {
    retour = true;        
    if (obj.value.length < 2) {
            if(facultatif!=1){
           alert(validForm['zone']+" '"+obj.title+"'.");
           //alert("Erreur mail");
            retour = false;
		    ART_imgChange(img);
            return retour;
        }else{
            obj.value="";
            return retour; 
        }
    }
    var aroba = obj.value.indexOf("@");
//test si @ est pr?sent
		if (aroba == -1) { 
        alert(validForm['email']);
        //alert("Erreur mail manque @");
        retour = false;  
		ART_imgChange(img);
        return retour;
    }
//v?rifie si il y a un . apr?s @ et qu'il ne se trouve pas juste derri?re ("adresse@.com" non valide)
    var point = obj.value.indexOf(".", aroba);
    if ((point == -1) || (point == (aroba + 1))) {
        alert(validForm['email']);
        //alert("Erreur mail manque .");
        retour = false;  
		ART_imgChange(img);
        return retour;
    }
	ART_imgChange(img);
    return retour;
}

function ART_confEmail(obj, img) {
    retour = true;
    var ori = document.getElementById('o_06_imgMail');
    if (obj.value!= ori.value || obj.value.length < 2) {
        alert(validForm['conf_1']+" '"+obj.title+"' "+validForm['conf_2']);
        retour = false;
    }
	ART_imgChange(img);
	return retour;
}    

function ART_confPwd(obj, img) {
    retour = true;
    var ori = document.getElementById('o_10_imgMdp');
    if (obj.value!= ori.value || obj.value.length < 2) {
        alert(validForm['conf_1']+" '"+obj.title+"' "+validForm['conf_2']);
        retour = false;
    }
	ART_imgChange(img);
	return retour;
}    

function ART_isDate(obj, img) {
    retour = true;
	if(obj.value.length < 2) {
        alert(validForm['zone']+" '"+obj.title+"'.");
        retour = false;
		ART_imgChange(img);
        return retour;
    }
	var regex = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{4})$");
	if(!obj.value.match(regex)) {
        alert(validForm['date']);
        retour = false;
		ART_imgChange(img);
        return retour;
    }
	var dateAnni = obj.value.split("/");
	var dateJour = new Date();
	var annee = dateJour.getFullYear()-10;
	//alert(dateAnni[0]+dateAnni[1]+dateAnni[2]+annee);
	if(dateAnni[0] > 31 || dateAnni[1] > 12 || dateAnni[2] >= annee ) {
        alert("'"+obj.title+"' "+validForm['valide']);
        retour = false;
		ART_imgChange(img);
        return retour;
    }
	ART_imgChange(img);
	return retour;
} 

function ART_isMDP(obj, img) {
    retour = true;  
    var regex = new RegExp(/[0-9]/gi);
	if(obj.value.length == 0) {
        alert(validForm['zone']+" '"+obj.title+"'.");
        retour = false;
		ART_imgChange(img);
        return retour;
    }
	if(obj.value.length < 8 || obj.value.length > 15) {
        alert("'"+obj.title+"' "+validForm['valide']);
        retour = false;
		ART_imgChange(img);
        return retour;
    }
	ART_imgChange(img);
	return retour;
}    

function ART_noEmpty(obj, img) {    
    retour = true;
    if (obj.value.length < 1) {
        alert(validForm['zone']+" '"+obj.title+"'.");
        //alert('Zone non rempli')
        retour = false;
		ART_imgChange(img);
        return retour;
    }
	ART_imgChange(img);
    return retour;
}


function ART_imgChange(img){
	var imgObj = document.getElementById(img);
    if(imgObj!= null) {
		if(retour) imgObj.src=validForm['ART_image']+'tick.png'; else imgObj.src=validForm['ART_image']+'croix.png';
	}
}

function ART_panierLivraison(page){
    var retour = true;
	var checkboxValid = document.getElementById('checkbox_cgv');
    /*var livraisonValid = document.getElementById('livraisonValid');
	if(!livraisonValid || !checkboxValid){ 
		alert(validForm['livraison']); 
		return retour = false;
	}  */
	if(checkboxValid.checked===false) {
		alert(validForm['cgv']); 
		return retour = false;
	}
	if(retour === true) document.location=page;
}


ART_liste_fonction = new Array('ART_charCount','ART_isString','ART_isNumber','ART_isTel','ART_isCP','ART_isEmail','ART_confEmail','ART_confPwd','ART_isDate','ART_isMDP','ART_noEmpty');


function ART_validForm(form_name){
	var erreurValid = true;
    var form=document.forms[form_name];
    for(var n in form.elements){
        if(vFobj = form.elements[n]){
            if(vFobj.nodeName=='SELECT' || vFobj.nodeName=='INPUT' || vFobj.nodeName=='TEXTAREA'){
                tab=form[n].id.split("_");
                if(tab[0]=='o') {
                    nbF = tab[1]-1;
                    fonction = eval(ART_liste_fonction[nbF])(form[n],tab[2]);
                    if(!fonction) erreurValid = false;
                }
            }
        }
    }
    if(!erreurValid) {
        //alert("Formulaire rempli incorrectement");
        return false;
    }
     else form.submit();
}



function ART_testForm(obj){
	var tab=obj.id.split("_");
	var nbF = tab[1]-1;
	eval(ART_liste_fonction[nbF])(obj,tab[2]);
}

