//Validation du formulaire parrainage

function validerForm(form){
    for (var i in 0,form.elements.length()){
     alert('elements '+i+' : '+form.getElementById(i).name+' : ' + form.getElementById(i).value);
    }
}

 function validerParrainage(formParrainage){
     if(formParrainage.EMAIL1.value.length != 0 && !isEmail(formParrainage.EMAIL1.value)){
        formParrainage.EMAIL1.focus();
        alert("Le courriel indiqué n'est pas valide !");
        return false;
    }
          if(formParrainage.EMAIL2.value.length != 0 && !isEmail(formParrainage.EMAIL2.value)){
        formParrainage.EMAIL2.focus();
        alert("Le courriel indiqué n'est pas valide !");
        return false;
    }
          if(formParrainage.EMAIL3.value.length != 0 && !isEmail(formParrainage.EMAIL3.value)){
        formParrainage.EMAIL3.focus();
        alert("Le courriel indiqué n'est pas valide !");
        return false;
    }
          if(formParrainage.EMAIL4.value.length != 0 && !isEmail(formParrainage.EMAIL4.value)){
        formParrainage.EMAIL4.focus();
        alert("Le courriel indiqué n'est pas valide !");
        return false;
    }
          if(formParrainage.EMAIL5.value.length != 0 && !isEmail(formParrainage.EMAIL5.value)){
        formParrainage.EMAIL5.focus();
        alert("Le courriel indiqué n'est pas valide !");
        return false;
    }

    formParrainage.submit();
    return true;

 }


// validation des champs password et confirmation de l'inscription
function validerInscription(formInscription){

    if(formInscription.password.value.length == 0){
        formInscription.password.focus();
        alert("Veuillez entrer un mot de passe !");
        return false;
    }

    if(formInscription.password2.value.length == 0){
        formInscription.password2.focus();
        alert("Veuillez confirmer votre mot de passe !");
        return false;
    }

    if(formInscription.password2.value != formInscription.password.value){
        formInscription.password.focus();
        alert("Les mots de passe saisis ne sont pas similaires. Veuillez les saisir à nouveau.");
        return false;
    }

    if(formInscription.contrat.checked != true){
        alert("Veuillez prendre connaissance du contrat d'utilisation.");
        return false;
    }


    return validerProfil(formInscription);
}

// validation des champs password et confirmation de l'inscription
function validerModification(formModification){

    if(formModification.changePass.checked == true){
        return validerInscription(formModification);
    }

    return validerProfil(formModification);
}


// validation des champs du formulaire d'inscription et de modification de profil
function validerProfil(formProfil){

    // if(formProfil.telephone.value.length != 0 && !isPhoneNumber(formProfil.telephone.value)){
    //    formProfil.telephone.focus();
    //    alert("Le num?ro de t?l?phone indiqu? n'est pas valide !");
    //    return false;
    // }

    // if(formProfil.portable.value.length != 0 && !isMobileNumber(formProfil.portable.value)){
    //    formProfil.portable.focus();
    //    alert("Le num?ro de portable indiqu? n'est pas valide !");
    //    return false;
    // }

    if(formProfil.email.value.length != 0 && !isEmail(formProfil.email.value)){
        formProfil.email.focus();
        alert("Le courriel indiqué n'est pas valide !");
        return false;
    }

    formProfil.submit();
    return true;
}


// validation des champs du formulaire de cr?ation de producteur
function validerProducteur(formProducteur){

    // if(formProducteur.tel.value.length != 0 && !isPhoneNumber(formProducteur.tel.value)){
    //    formProducteur.tel.focus();
    //    alert("Le num?ro de t?l?phone indiqu? n'est pas valide !");
    //    return false;
    // }

    // if(formProducteur.fax.value.length != 0 && !isPhoneNumber(formProducteur.fax.value)){
    //    formProducteur.fax.focus();
    //    alert("Le num?ro de fax indiqu? n'est pas valide !");
    //    return false;
    // }

    if(formProducteur.courriel.value.length != 0 && !isEmail(formProducteur.courriel.value)){
        formProducteur.courriel.focus();
        alert("Le courriel indiqué n'est pas valide !");
        return false;
    }

    if(formProducteur.web.value.length != 0 && !isWebAdress(formProducteur.web.value)){
        formProducteur.web.focus();
        alert("L'adresse web indiquée n'est pas valide !");
        return false;
    }

    formProducteur.nouveau_producteur.value = "valide";
    formProducteur.submit();
    return true;
}

//validation des champs du formulaire de modification d'une bouteille
function validerModifierBouteille(formMettreEnCave){

     if(formMettreEnCave.millesime.value.length != 0 && !isYear(formMettreEnCave.millesime.value)){
        formMettreEnCave.millesime.focus();
        alert("L'année du millésime indiquée n'est pas valide !");
        return false;
    }
    if(formMettreEnCave.prix.value.length != 0 && !isFloat(formMettreEnCave.prix.value)){
        formMettreEnCave.prix.focus();
        alert("Le prix indiqué n'est pas valide !");
        return false;
    }
    if(formMettreEnCave.contenance.value.length != 0 && !isFloat(formMettreEnCave.contenance.value)){
         formMettreEnCave.contenance.focus();
         alert("La contenance indiquée n'est pas valide !");
         return false;
     }
    if(formMettreEnCave.dateAchat.value.length != 0 && !isDate(formMettreEnCave.dateAchat.value)){
        formMettreEnCave.dateAchat.focus();
        alert("La date d'achat indiquée n'est pas valide !");
        return false;
    }

    if(formMettreEnCave.date_min.value.length != 0 && !isYear(formMettreEnCave.date_min.value)){
        formMettreEnCave.date_min.focus();
        alert("L'année de consommation indiquée n'est pas valide !");
        return false;
    }

    if(formMettreEnCave.date_max.value.length != 0 && !isYear(formMettreEnCave.date_max.value)){
        formMettreEnCave.date_max.focus();
        alert("L'année de limite de consommation indiquée n'est pas valide !");
        return false;
    }

    formMettreEnCave.action.value = "action";
    formMettreEnCave.submit();
    return true;
}

// validation des champs du formulaire de mise en cave
function validerMettreEnCave(formMettreEnCave){

    if(formMettreEnCave.millesime.value.length != 0 && !isYear(formMettreEnCave.millesime.value)){
        formMettreEnCave.millesime.focus();
        alert("L'année du millésime indiquée n'est pas valide !");
        return false;
    }

    if( !yearIsPast(formMettreEnCave.millesime.value) ){
        formMettreEnCave.millesime.focus();
        alert("L'année du millésime indiquée n'est pas valide !");
        return false;
    }

    if(formMettreEnCave.quantite.value.length == 0){
        formMettreEnCave.quantite.focus();
        alert("Veuillez indiquer la quantité !");
        return false;
    }

    if(!isNumber(formMettreEnCave.quantite.value)){
        formMettreEnCave.quantite.focus();
        alert("La quantité indiqué n'est pas valide !");
        return false;
    }

    if(formMettreEnCave.quantite.value == 0){
        formMettreEnCave.quantite.focus();
        alert("Veuillez indiquer une quantité supérieure à 0 !");
        return false;
    }

    if(formMettreEnCave.contenance.value.length != 0 && !isFloat(formMettreEnCave.contenance.value)){
        formMettreEnCave.contenance.focus();
        alert("La contenance indiquée n'est pas valide !");
        return false;
    }

    if(formMettreEnCave.dateAchat.value.length != 0 && !isDate(formMettreEnCave.dateAchat.value)){
        formMettreEnCave.dateAchat.focus();
        alert("La date d'achat indiquée n'est pas valide !");
        return false;
    }

    if( !dateIsPast(formMettreEnCave.dateAchat.value) || !isDateValid(formMettreEnCave.dateAchat.value)){
      formMettreEnCave.dateAchat.focus();
      alert("La date indiquée n'est pas valide ! ");
      return false;
    }

    if(formMettreEnCave.prix.value.length != 0 && !isFloat(formMettreEnCave.prix.value)){
        formMettreEnCave.prix.focus();
        alert("Le prix indiqué n'est pas valide !");
        return false;
    }

    if(formMettreEnCave.date_min.value.length != 0 && !isYear(formMettreEnCave.date_min.value)){
        formMettreEnCave.date_min.focus();
        alert("L'année de consommation indiqué n'est pas valide !");
        return false;
    }

    if(formMettreEnCave.date_max.value.length != 0 && !isYear(formMettreEnCave.date_max.value)){
        formMettreEnCave.date_max.focus();
        alert("L'année de limite de consommation indiqué n'est pas valide !");
        return false;
    }

    formMettreEnCave.action.value = "mettreEnCave";
    formMettreEnCave.submit();
    return true;
}


// validation du champ millesime du formulaire de mise en cave
// independant des autres champs car générant une mise é jour
function validerMillesime(formMettreEnCave){

    if(formMettreEnCave.millesime.value.length != 0 && !isYear(formMettreEnCave.millesime.value)){
        return false;
    }

    formMettreEnCave.action.value = "";
    formMettreEnCave.submit();
    return true;
}


// validation des champs du formulaire degustation du vin
function validerDegustation(formDegustation){

    var temp=document.getElementById('action');
    temp.value="ajout_bouteille_bue";




    if(formDegustation.note.value.length != 0 && !isNote20(formDegustation.note.value)){
        formDegustation.note.focus();
        alert("La note indiquée n'est pas valide !");
        return false;
    }

    if(formDegustation.quantite_bue.value.length == 0){
        formDegustation.quantite_bue.focus();
        alert("Veuillez indiquer la quantité bue !");
        return false;
    }

    if(!isNumber(formDegustation.quantite_bue.value)){
        formDegustation.quantite_bue.focus();
        alert("La quantité bue indiqué n'est pas valide !");
        return false;
    }

    if(formDegustation.quantite_bue.value == 0){
        formDegustation.quantite_bue.focus();
        alert("Veuillez indiquer une quantité supérieure à 0 !");
        return false;
    }

    if( parseFloat(formDegustation.quantite_bue.value) > parseFloat(formDegustation.quantiteRestante.value)){
        formDegustation.quantite_bue.focus();
        alert("Il ne reste pas autant de bouteilles dans votre cave !");
        return false;
    }

    if(formDegustation.date_bue.value.length != 0 && !isDate(formDegustation.date_bue.value)){
        formDegustation.date_bue.focus();
        alert("La date indiquée n'est pas valide !");
        return false;
    }

    if( !dateIsPast(formDegustation.date_bue.value) || !isDateValid(formDegustation.date_bue.value)){
      formDegustation.date_bue.focus();
      alert("La date indiquée n'est pas valide ! ");
      return false;
    }

    formDegustation.submit();
    return true;
}

function nouveauValide(formNouveau, champNouveau, valide){

    if(champNouveau.value.length == 0){
        champNouveau.focus();
        alert("Le champ est vide !");
        return false;
    }

    valide.value = "valide";
    formNouveau.submit();
    return true;
}

function popup(file,name, w, h) {
   var top = 0;
   var left = 0;
   if (self.screen)
      left = (screen.width-(w+((screen.width*1)/100)));
   var win = window.open(file, name, 'resizable,screenX=0,screenY=0,scrollbars=yes,menubar=yes,top='+top+',left='+left +',width=' + w + ',height=' + h );
   win.focus();
}

//function popup(file,name) {
//   var win = window.open(file, name, 'resizable, screenX=0, screenY=0, scrollbars=yes, menubar=yes, directories=yes, location=yes, toolbar=yes fullsize=yes, top=0, left=0');
//   win.focus();
//}

function isEmail(email){
    // a revoir: probleme de ".", mail valide .@...com
    var reg = /^[\w.-]+@[\w.-]{2,}[.][a-zA-Z]{2,3}$/;
    return (reg.exec(email)!=null);
}

function isPhoneNumber(number){
     var reg = /(^0\d{9}$)|(^0\d{1}[-|.| ]\d{2}[-|.| ]\d{2}[-|.| ]\d{2}[-|.| ]\d{2}$)/;
     return (reg.exec(number)!=null);      
}

function isMobileNumber(number){
    var reg = /(^06\d{8}$)|(^06[-|.| ]\d{2}[-|.| ]\d{2}[-|.| ]\d{2}[-|.| ]\d{2}$)/;
    return (reg.exec(number)!=null);
}

function isDate(date){
    var reg = /^(([0]*[1-9])|(1\d)|(2\d)|(3[0-1]))[-|\/](([0]*[1-9])|(1[0-2]))[-|\/]\d{4}$/;
    return (reg.exec(date)!=null);
}

function isNumber(number){
    var reg = /^\d+$/;
    return (reg.exec(number)!=null);
}

function isYear(year){
    var reg = /^[1-2]\d{3}$/;
    return (reg.exec(year)!=null);
}

function isFloat(value){
    var reg = /(^\d+$)|(^\d+[.|,]\d+$)/;
    return (reg.exec(value)!=null);
}

function isWebAdress(webAdress){
    var reg = /^[\w.-]{2,}[.][a-zA-Z]{2,3}$/;
    return (reg.exec(webAdress)!=null);
}

// valide une note de 0 é 20
function isNote20(note){
    var reg = /(^[0]*\d$)|(^1\d$)|(^[2][0]$)/;
    return (reg.exec(note)!=null);
}


// controle d'antériorité de la date ( controle isDate() avant... )
function dateIsPast(dateValue){

    var tabDate;
    if(dateValue.split('/').length != 1){
        tabDate = dateValue.split('/');
    }
    else{
        tabDate = dateValue.split('-');
    }

    var jour = tabDate[0];
    var mois = tabDate[1];
    var annee = tabDate[2];

    var dateJour = new Date();
    var anneeDate = bug2K(dateJour.getYear());
    var moisDate = dateJour.getMonth() + 1;
    var jourDate = dateJour.getDate();

    if(   (annee > anneeDate) || ( (annee == anneeDate) && (mois > moisDate) ) ||
          ( (annee == anneeDate) && (mois == moisDate) && (jour > jourDate) ) ){
      return false;
    }

    return true;
}

// controle d'antériorité de l'année
function yearIsPast(yearValue){

    var dateJour = new Date();
    var annee = bug2K(dateJour.getYear());

    if(yearValue > annee){
      return false;
    }

    return true;
}


// utilise la validité des dates javascript
function isDateValid(dateValue) {

   if (dateValue == ""){
        return false;
   }

   var tabDate;

   if(dateValue.split('/').length != 1){
        tabDate = dateValue.split('/');
    }
    else{
        tabDate = dateValue.split('-');
    }

   if ((tabDate.length != 3) || isNaN(parseInt(tabDate[0])) || isNaN(parseInt(tabDate[1])) || isNaN(parseInt(tabDate[2]))){
        return false;
   }

   var dateJavascript = new Date(eval(tabDate[2]),eval(tabDate[1])-1,eval(tabDate[0]));

   var annee = dateJavascript.getYear();
   if ((Math.abs(annee) + "").length < 4){
    if(annee >= 20)
        annee += 1900;
    else
        annee += 2000;
   }

   return ((dateJavascript.getDate() == eval(tabDate[0])) && (dateJavascript.getMonth() == eval(tabDate[1])-1) && (annee == eval(tabDate[2])));
}

function bug2K(yearValue){

    if (yearValue < 100){
        yearValue += 2000;
    }
    else{
        if (yearValue > 100 && yearValue < 2000)
            yearValue += 1900;
    }

    return yearValue;
}

