var validator ;

function initCSFCORE_RAC01()
{
  initValidator();
  initListeners();
  iniChampsCalculTotalE1("salaireE1","pensionRetraiteE1","allocationMensuelE1","aplE1","pensionAlimentaireE1","autresRevenusE1");
  iniChampsCalculTotalE2("salaireE2","pensionRetraiteE2","allocationMensuelE2","aplE2","pensionAlimentaireE2","autresRevenusE2");
}

function initValidator(){
    //initValidationRules();
    validator = $("#editForm").validate({
      validClass:"valid",
      errorClass: "error",
      errorContainer: ".mbox",
      errorLabelContainer: ".mbox .mboxMsg.js",
      wrapper: "p",
      debug:true,
      onkeyup: false,
      showErrors: function(errorMap, errorList) {
           this.defaultShowErrors();
      },
      invalidHandler:function(form, validator){
        $(".mbox .mboxMsg.js").html("");
        validator.valid();
      },
      highlight: function(element, errorClass) {
        $(element.form).find("label[for*=" + element.id + "]").each(
              function(){
                  $(this).addClass(errorClass);
              });
      },
      unhighlight: function(element, errorClass) {
         $(element.form).find("label[for*=" + element.id + "]").removeClass(errorClass);
      },
      submitHandler: function(form) { 
        form.submit();
       },
      rules: {
        nbEmprunteur: {
          required: true
        },
        salaireE1: {
          digits:true
        },
        pensionRetraiteE1: {
          digits:true
        },
        allocationMensuelE1: {
          digits:true
        },
        aplE1: {
          digits:true
        },
        pensionAlimentaireE1: {
          digits:true
       },
        autresRevenusE1: {
          digits:true
       },
        salaireE2: {
          digits:function(){return (getNbreEmprunter()=='2');}
        },
        pensionRetraiteE2: {
          digits:function(){return (getNbreEmprunter() == '2');}
        },
        allocationMensuelE2: {
          digits:function(){return (getNbreEmprunter() == '2');}
        },
        aplE2: {
          digits:function(){return (getNbreEmprunter() == '2');}
        },
        pensionAlimentaireE2: {
          digits:function(){return (getNbreEmprunter() == '2');}
       },
        autresRevenusE2: {
          digits:function(){return (getNbreEmprunter() == '2');}
       }},
       messages: {
        salaireE1: {
          digits: errorMessages['salaireE1'].value
        },
        pensionRetraiteE1: {
          digits:errorMessages['pensionRetraiteE1'].value
        },
        allocationMensuelE1: {
          digits:errorMessages['allocationMensuelE1'].value
        },
        aplE1: {
          digits:errorMessages['aplE1'].value
        },
        pensionAlimentaireE1: {
          digits:errorMessages['pensionAlimentaireE1'].value
        },
        autresRevenusE1: {
          digits:errorMessages['autresRevenusE1'].value
        },
        salaireE2: {
          digits: errorMessages['salaireE2'].value
        },
        pensionRetraiteE2: {
          digits:errorMessages['pensionRetraiteE2'].value
        },
        allocationMensuelE2: {
          digits:errorMessages['allocationMensuelE2'].value
        },
        aplE2: {
          digits:errorMessages['aplE2'].value
        },
        pensionAlimentaireE2: {
          digits:errorMessages['pensionAlimentaireE2'].value
        },
        autresRevenusE2: {
          digits:errorMessages['autresRevenusE2'].value
        }

      }
    });
}

function initListeners(){
  // listener nbrEmprunteur
  var bloc = $("#emprunteur2");
  $("#nbEmprunteur").change(function(){
    manageNbrEmprunteur();
  });
  if(getNbreEmprunter() < 2 ){
    bloc.hide();
  }else{
    manageNbrEmprunteur();
  }
}

function manageNbrEmprunteur(){
  // masque ou affiche le bloc emprunteur2
  var nbrEmprunteur = getNbreEmprunter();
  var bloc = $("#emprunteur2");
  if(nbrEmprunteur < 2 ){
    resetForm();
    $("#emprunteur2 input").val("0");
    bloc.hide();
  }else{
    bloc.show();
  }
  // mettre a jour le validator??
  
}

function getNbreEmprunter(){
  var nbrESelected = $("#nbEmprunteur option:selected").val();
  return nbrESelected;
}

function resetForm(){
  validator.resetForm();
  $("label").removeClass("error");
}
/**
 * Le dernier champs doit être le champs qui reçois la somme.
 */
function calculTotal(){
  var arguments = calculTotal.arguments;
  var resultat = 0;
  var  finalPosition = (arguments.length-1);
  for (var i = 0; i < finalPosition; i++) {
                if(testInt($("#"+arguments[i]).val())){
                  resultat +=parseInt($("#"+arguments[i]).val());
                }
  }
  $("#"+arguments[finalPosition]).val(resultat); 
}

function testInt(value) {
    return value == parseInt(value);
}


function iniChampsCalculTotalE1(){
  var arguments = iniChampsCalculTotalE1.arguments;
  calculTotal("salaireE1","pensionRetraiteE1","allocationMensuelE1","aplE1","pensionAlimentaireE1","autresRevenusE1","totalRevenusE1");
  for (var i = 0; i < arguments.length; i++) {
    $("#"+arguments[i]).change(function(){
      calculTotal("salaireE1","pensionRetraiteE1","allocationMensuelE1","aplE1","pensionAlimentaireE1","autresRevenusE1","totalRevenusE1");
  });
  }
}

function iniChampsCalculTotalE2(){
  var arguments = iniChampsCalculTotalE2.arguments;
  calculTotal("salaireE2","pensionRetraiteE2","allocationMensuelE2","aplE2","pensionAlimentaireE2","autresRevenusE2","totalRevenusE2");
  for (var i = 0; i < arguments.length; i++) {
    $("#"+arguments[i]).change(function(){
      calculTotal("salaireE2","pensionRetraiteE2","allocationMensuelE2","aplE2","pensionAlimentaireE2","autresRevenusE2","totalRevenusE2");
  });
  }
}

