/*  Le Phare JavaScript library - (c) 2007
/*--------------------------------------------------------------------------*/

/** Event.handler object */
Event.handler = {
   register: function(element) {
      if($(element)) {
         switch (element) {

            case 'pageAccueil':
               var homeTab = new Fabtabs('tabs');
               homeTab.showTab('tab2');
               caseFileLoginHome();

               Event.observe('bgVideo', 'click', function() {
                  Effect.Fade('bgVideo');
                  write_flash();
               });

               break;
            
            case 'pageBilanService':
            case 'pageRDVconseiller':
            case 'pageRDVconseillerPro':
            case 'pageAccompMobilite':
               initForm();
               initCalendar();
               break;
            
            case 'pageAidesLocation':
            case 'pagePassTravaux':
            case 'pageAidesMobilite':
               caseFileLogin();
            break;
            
            case 'pageGarantieLoyer':
               BoiteGRL();
               caseFileLogin();
               break;

            case 'pageLogementsDispo':
               BoiteGRL();
               break;
            
            case 'pageVous':
            case 'pageVotreLogement':
            case 'pageRib':
            case 'pageFinaliser':
               initCalendar();
            break;
            case 'pageVousRenovation':
            case 'pageVotreLogementRenovation':
            case 'pageRibRenovation':
            case 'pageFinaliserRenovation':
               initCaseFileForm('../s23_renovation/s23p09_saisie_dossier.php');
               verifEmploi();
               initCalendar();
            break;
            case 'pageEligible':
               initEligibleForm();
            break;
            
            case 'pagePrePerso':
               inits20p07Form();
            break;
            
            case 'pagePerso':
               initPersoForm();
            break;
            
            case 'pageFaq':
               hideShowFaq();
               calculFinancement();
               BoiteGRL();               
            break;
            
            case 'pageAccessionVideos':
               write_flash1();
               write_flash2();
               write_flash3();
            case 'pageConseilFinance':
            case 'pagePrets':
            case 'pageAccession':
            case 'pagePartenaires':
               BoiteGRL();
               calculFinancement();
               caseFileLogin();
            break;
            case 'pageContactDoc':
               verifContact();
            break;
            case 'pageAboAnnonces' :
               initForm();
            break;
    
         }
      }
   } // register
}

/** window loaded observer */
Event.observe(window, 'load', function() {
      Event.handler.register(document.body.id);
});


/** registered functions */

if($('pageFaq')) {
   var oldAnswerId = '';
}

function hideShowFaq() {
   $$('.question').each(function(e) {
      Event.observe(e, 'click', function() {
         q = e.id;
         a = q.replace('q', 'r');
         if($(oldAnswerId) && a != oldAnswerId) {
            $(oldAnswerId).hide();
         }
         $(a).toggle();
         oldAnswerId = a;
      });
   });
} // hideShowFaq
/// GESTION DES TARGETS BLANK
function targetBlank(link) {
window.open(link, '_blank');
}

function initForm()
{
   var zeForm = new Validation('zeForm', {
      useTitles:true,
      stopOnFirst:true,
      onFormValidate: function() {$('todo').value = "submit_quest";}
   });

   if($('searchSubmitter')) {
      Event.observe('searchSubmitter', 'click', function() {$('searchTodo').value = "email-subscribe"; $('searchEmailForm').submit();});
   }

   if($('errMsg')) {
      if($('errMsg').innerHTML  != '') {
         Element.show('errMsg'); Effect.BlindUp('errMsg', {delay:3});
      }
   }
   if($('tip_bilan'))
   {
      new Tip('tip_bilan', 'Votre numéro d\'adhérent se trouve sur votre bordereau de versement');
   }
} // initForm


// affiche la ville
function setCity(txt, li){
   var li_id = li.id; // valeur de l'id entite de la liste sélectionnée - renvoyée par _getEntitesList.php (Ajax)
   var tab = li_id.split("-"); // cet id a pour valeur "id-raison_sociale"
   // mise à jour des champs hidden
   $('visitor_city_').value = tab[1];
}

function getMensualite(capital, tauxAnnuel, nbMensualites)
{
   var TauxInteretAnnuel  = tauxAnnuel/100;
   var TauxInteretMensuel = TauxInteretAnnuel/12;
   var Mensualite        = roundDec(((capital*TauxInteretMensuel)/(1-Math.pow((1+TauxInteretMensuel),(-1*nbMensualites)))*100)/100,2);
   return Mensualite;
   
}// calculFinancement


function calculFinancement()
{
   if($('btnCalcul')) {
      Event.observe('btnCalcul', 'click', function() {
         // init values
         var a = $F('annees');
         var c = $F('capital');
         var t = $F('taux');
         // replace , by .
         var a = a.replace(',','.');
         var c = c.replace(',','.');
         var t = t.replace(',','.');
         // check if is number;
         a = (isNaN(a) || a.length==0) ? '' : parseInt(a, 10);
         c = (isNaN(c) || c.length==0) ? '' : parseFloat(c,10);
         t = (isNaN(t) || t.length==0) ? '' : parseFloat(t,10);

         $('annees').value = a;
         $('capital').value = c;
         $('taux').value = t;

         if(a.length==0 || c.length==0 || t.length==0) return;

         NbMensualites      = a*12;
         Mensualite        = getMensualite(c, t, NbMensualites)
         $('mensualites').value = NbMensualites;
         $('montant').value    = roundDec((Mensualite*100)/100,2);
      });
   }
}// calculFinancement



function caseFileLogin()
{
   if($('caseFileFormLogin'))
   {
      var zeForm = new Validation('caseFileFormLogin', {useTitles:true,immediate: false,stopOnFirst:false});

      if($('errMsg')) {
         if($('errMsg').innerHTML  != '') { Element.show('errMsg'); Effect.BlindUp('errMsg', {delay:3});}
      }
   }
} // caseFileLogin


function caseFileLoginHome()
{
   if($('caseFileFormLoginMP'))
   {
      var zeFormMP = new Validation('caseFileFormLoginMP', {useTitles:true,immediate: false,stopOnFirst:false});
   }
   
   if($('caseFileFormLoginPL'))
   {
      var zeFormPL = new Validation('caseFileFormLoginPL', {useTitles:true,immediate: false,stopOnFirst:false});
   }


   if($('caseFileFormLoginPT'))
   {
      var zeFormPT = new Validation('caseFileFormLoginPT', {useTitles:true,immediate: false,stopOnFirst:false});
   }
   
} // caseFileLogin


function initCaseFileForm(toUrl)
{
   if($('caseFileForm')) {
      var zeForm = new Validation('caseFileForm', {
         immediate: false,
         useTitles:true,
         stopOnFirst:false,
         onFormValidate: function() {
            $('todo').value = "next";
            $('caseFileForm').action = toUrl;
         }
      });
      
      if($('btnAnnuler')) {
         Event.observe('btnAnnuler', 'click', function() {
            if(confirm('Si vous annulez la saisie de votre dossier, celui-ci sera définitivement perdu.\n\nSouhaitez-vous abandonner la saisie votre dossier ?')){
               $('todo').value = "cancel";
               $('caseFileForm').action = toUrl;
               $('caseFileForm').submit();
            }
         });
      }

      if($('btnEnregistrer')) {
         Event.observe('btnEnregistrer', 'click', function() {
            $('todo').value = "save";
            $('caseFileForm').action = toUrl;
            $('caseFileForm').submit();
         });
      }
      
      if($('btnEnregistrerComplet')) {
         Event.observe('btnEnregistrerComplet', 'click', function() {
            $('todo').value = "save";
            $('caseFileForm').action = toUrl;
            $('caseFileForm').submit();
         });
      }
      

/*      if($('btnCommencerSaisie')) {
         Event.observe('btnCommencerSaisie', 'click', function() {$('todo').value='next';$('s20p08Form').action = '../s20_location/s20p09_saisie_dossier.php'; $('s20p08Form').submit();});
      }*/

      if($('btnEtapeSuivante')) {
      
         Event.observe('btnEtapeSuivante', 'click', function() {
            $('todo').value = "next";
            $('caseFileForm').action = toUrl;
         });
         Event.observe('btnEtapeSuivante', 'click', zeForm.validate.bindAsEventListener(zeForm));
      }
      
      if($('btnFinaliser')) {
         Event.observe('btnFinaliser', 'click', function() {
            $('todo').value = "next";
            $('caseFileForm').action = toUrl;
            $('caseFileForm').submit();
         });
      }

      if($('errMsg')) {
         if($('errMsg').innerHTML  != '') {
            Element.show('errMsg'); Effect.BlindUp('errMsg', {delay:3});
         }
      }
      
      if($('data_total_revenus_')) {
         Validation.add('getTotalRevenus', '', function(v) {
               var smn = $F('data_salaire_mensuel_net_');
               var bs = $F('data_base_salaire_');
               var ar = $F('data_autres_revenus_');
               $('data_salaire_mensuel_net_').value = (!Validation.get('IsEmpty').test(smn) && (!isNaN(smn) && !/^\s+$/.test(smn))) ? smn : 0 ;
               $('data_base_salaire_').value = (!Validation.get('IsEmpty').test(bs) && (!isNaN(bs) && !/^\s+$/.test(bs))) ? bs : 12;
               $('data_autres_revenus_').value = (!Validation.get('IsEmpty').test(ar) && (!isNaN(ar) && !/^\s+$/.test(ar))) ? ar : 0;
               $('data_total_revenus_').value = (parseInt($F('data_salaire_mensuel_net_'),10) * parseInt($F('data_base_salaire_'),10)) + parseInt($F('data_autres_revenus_'),10);
               return true;
			});
      }

      if($('data_co_total_revenus_')) {
         Validation.add('getCoTotalRevenus', '', function(v) {
               var smn = $F('data_co_salaire_mensuel_net_');
               var bs = $F('data_co_base_salaire_');
               var ar = $F('data_co_autres_revenus_');
               $('data_co_salaire_mensuel_net_').value = (!Validation.get('IsEmpty').test(smn) && (!isNaN(smn) && !/^\s+$/.test(smn))) ? smn : 0 ;
               $('data_co_base_salaire_').value = (!Validation.get('IsEmpty').test(bs) && (!isNaN(bs) && !/^\s+$/.test(bs))) ? bs : 12;
               $('data_co_autres_revenus_').value = (!Validation.get('IsEmpty').test(ar) && (!isNaN(ar) && !/^\s+$/.test(ar))) ? ar : 0;
               $('data_co_total_revenus_').value = (parseInt($F('data_co_salaire_mensuel_net_'),10) * parseInt($F('data_co_base_salaire_'),10)) + parseInt($F('data_co_autres_revenus_'),10);
               return true;
			});
      }

   }
} // initCaseFileForm


function initCalendar() {
   if($('data_date_naissance_')) {
      var calDateNaissance =  Calendar.setup({inputField:"data_date_naissance_", displayArea : "data_date_naissance_trigger", button:"data_date_naissance_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate, align: "Bl", singleClick: true});}
      //calDateNaissance.showAtElement($('data_date_naissance_trigger'), "Bl");
   if($('data_co_date_naissance_')) {
      var calDateCoNaissance =  Calendar.setup({inputField:"data_co_date_naissance_", displayArea : "data_co_date_naissance_trigger", button:"data_co_date_naissance_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}
   if($('data_date_embauche_')) {
      var calDateEmbauche =  Calendar.setup({inputField:"data_date_embauche_", displayArea : "data_date_embauche_trigger", button:"data_date_embauche_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}
   if($('data_co_date_embauche_')) {
      var calDateCoEmbauche =  Calendar.setup({inputField:"data_co_date_embauche_", displayArea : "data_co_date_embauche_trigger", button:"data_co_date_embauche_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}
   if($('data_L_date_entree_')) {
      var calLDateEntree =  Calendar.setup({inputField:"data_L_date_entree_", displayArea : "data_L_date_entree_trigger", button:"data_L_date_entree_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}
   if($('data_L_date_sign_bail_')) {
      var calLDateSignBail =  Calendar.setup({inputField:"data_L_date_sign_bail_", displayArea : "data_L_date_sign_bail_trigger", button:"data_L_date_sign_bail_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}
   if($('dem_info_date_prevue_mobilite_trigger')) {
      var calDatePrevueMobilite =  Calendar.setup({inputField:"dem_info_date_prevue_mobilite_", displayArea : "dem_info_date_prevue_mobilite_trigger", button:"dem_info_date_prevue_mobilite_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}
} // initCalendar


function initEligibleForm()
{

   // MOBILI-PASS
   if($('s22p06Form')) {
      var zeForm = new Validation('s22p06Form', {
         useTitles:true,
         stopOnFirst:true,
         onFormValidate: function() {
            $('todo').value = "testEligibilite";
            $('s22p06Form').action = '../s22_demenagement/s22p06_eligibilite.php';
         }
      });

      if($('data_date_embauche_')) {
         var calDateEmbauche =  Calendar.setup({inputField:"data_date_embauche_", displayArea : "data_date_embauche_trigger", button:"data_date_embauche_trigger", ifFormat:"dd/mm/y", mondayFirst:true, onSelect:setDate});}

   }

   // Eligible
   if($('s22p06FormE')) {
      Event.observe('lienEligible', 'click', function() {$('todo').value='begin';$('s22p06FormE').action = '../s22_demenagement/s22p08_personnalisation.php'; $('s22p06FormE').submit();});
   }


   // PASS-TRAVAUX
   if($('s23p06Form')) {
      var zeForm = new Validation('s23p06Form', {
         useTitles:true,
         stopOnFirst:true,
         onFormValidate: function() {
            $('todo').value = "testEligibilite";
            $('s23p06Form').action = '../s23_renovation/s23p06_eligibilite.php';
         }
      });
   }

   // Eligible
   if($('s23p06FormE')) {
      Event.observe('lienEligible', 'click', function() {$('todo').value='begin';$('s23p06FormE').action = '../s23_renovation/s23p08_personnalisation.php'; $('s23p06FormE').submit();});
   }
      

} // initS20p06Form


function inits20p07Form()
{


 
} // inits20p07Form


function initPersoForm()
{
   // creation LOCA-PASS
   if($('s20p08Form')) {
      var zeForm = new Validation('s20p08Form', {
         useTitles:true,
         stopOnFirst:true,
         onFormValidate: function() {
            $('todo').value = "create";
            $('s20p08Form').action = '../s20_location/s20p08_personnalisation.php';
         }
      });

      Validation.addAllThese([
         ['validate-conf-email', 'Incohérence entre votre mot de passe et sa confirmation',
         function(v,elt) {
            var ret = (v == $F('data_email_'));
            if(!ret) {
               $('data_email_').value='';
               $('confEmail').value='';
            }
            return (ret);
         }]
      ]);
   }
   if($('s20p08Form'))
   {
      Event.observe('confEmail','keypress',function(event){
         
         if(event.charCode=='V'.charCodeAt(0) && event.ctrlKey)
         {
             Event.stop(event);
         }
      });
      Event.observe('confEmail','change', function(event){
         if(event.charCode=='V'.charCodeAt(0) && event.ctrlKey)
         {
             Event.stop(event);
         }
      });
   }
      // creation MOBILI-PASS
   if($('s22p08Form')) {
      var zeForm = new Validation('s22p08Form', {
         useTitles:true,
         stopOnFirst:true,
         onFormValidate: function() {
            $('todo').value = "create";
            $('s22p08Form').action = '../s22_demenagement/s22p08_personnalisation.php';
         }
      });

      Validation.addAllThese([
         ['validate-conf-email', 'Incohérence entre votre mot de passe et sa confirmation',
         function(v,elt) {
            var ret = (v == $F('data_email_'));
            if(!ret) {
               $('data_email_').value='';
               $('confEmail').value='';
            }
            return (ret);
         }]
      ]);
   }
   if($('s22p08Form'))
   {
      Event.observe('confEmail','keypress',function(event){
         
         if(event.charCode==118 && event.ctrlKey)
         {
             Event.stop(event);
         }
      });
      Event.observe('confEmail','change', function(event){
         if(event.charCode==118 && event.ctrlKey)
         {
             Event.stop(event);
         }
      });
   }
   // creation PASSTRAVAUX
   if($('s23p08Form')) {
      var zeForm = new Validation('s23p08Form', {
         useTitles:true,
         stopOnFirst:true,
         onFormValidate: function() {
            $('todo').value = "create";
            $('s23p08Form').action = '../s23_renovation/s23p08_personnalisation.php';
         }
      });

      Validation.addAllThese([
         ['validate-conf-email', 'Incohérence entre votre mot de passe et sa confirmation',
         function(v,elt) {
            var ret = (v == $F('data_email_'));
            if(!ret) {
               $('data_email_').value='';
               $('confEmail').value='';
            }
            return (ret);
         }]
      ]);
   }
   if($('s23p08Form'))
   {
      Event.observe('confEmail','keypress',function(event){
         
         if(event.charCode==118 && event.ctrlKey)
         {
             Event.stop(event);
         }
      });
      Event.observe('confEmail','change', function(event){
         if(event.charCode==118 && event.ctrlKey)
         {
             Event.stop(event);
         }
      });
   }

   // etape init
   if($('caseFileForm')) {
      var zeForm = new Validation('caseFileForm', {
         useTitles:true,
         stopOnFirst:true,
         onFormValidate: function() {
            $('todo').value = "create";
            $('caseFileForm').action = '../s20_location/s20p09_saisie_dossier.php';
         }
      });

      
      if($('btnEnregistrerComplet')) {
         Event.observe('btnEnregistrerComplet', 'click', function() {
            $('todo').value = "save";
            $('caseFileForm').action = '../s20_location/s20p09_saisie_dossier.php';
            $('caseFileForm').submit();
         });
      }


/*      if($('btnCommencerSaisie')) {
         Event.observe('btnCommencerSaisie', 'click', function() {$('todo').value='next';$('caseFileForm').action = '../s20_location/s20p09_saisie_dossier.php'; $('caseFileForm').submit();});
      }
*/
   }
   // etape 1_1
      if($('caseFileForm2')) {
         var zeForm = new Validation('caseFileForm2', {
         useTitles:true,
         stopOnFirst:true,
         onFormValidate: function() {
            $('todo').value = "1_1";
            $('caseFileForm2').action = '../s22_demenagement/s22p09_saisie_dossier.php';
         }
      });
      
      if($('btnEnregistrerComplet')) {
            Event.observe('btnEnregistrerComplet', 'click', function() {
            $('todo').value = "save";
            $('caseFileForm2').action = '../s22_demenagement/s22p09_saisie_dossier.php';
            $('caseFileForm2').submit();
         });
      }

/*      if($('btnCommencerSaisie')) {
         Event.observe('btnCommencerSaisie', 'click', function() {$('todo').value='next';$('caseFileForm2').action = '../s22_demenagement/s22p09_saisie_dossier.php'; $('caseFileForm2').submit();});
      }
*/
   }
   // etape 1_1
      if($('caseFileForm3')) {
         var zeForm = new Validation('caseFileForm3', {
         useTitles:true,
         stopOnFirst:true,
         onFormValidate: function() {
            $('todo').value = "1_1";
            $('caseFileForm3').action = '../s23_renovation/s23p09_saisie_dossier.php';
         }
      });
      
      if($('btnEnregistrerComplet')) {
            Event.observe('btnEnregistrerComplet', 'click', function() {
            $('todo').value = "save";
            $('caseFileForm3').action = '../s23_renovation/s23p09_saisie_dossier.php';
            $('caseFileForm3').submit();
         });
      }
/*
      if($('btnCommencerSaisie')) {
         Event.observe('btnCommencerSaisie', 'click', function() {$('todo').value='next';$('caseFileForm3').action = '../s23_renovation/s23p09_saisie_dossier.php'; $('caseFileForm2').submit();});
      }
*/
   }
} // inits20p08Form


//function affiche ou cache la boite de dialogue PASS-GRL
function BoiteGRL()
{
   if($('passportGRL'))
   {
      Event.observe('passportGRL', 'click', function() {
         $('boiteGRL').toggle();
         $('submitGRL').show();
      });
      
      
      var zeForm2 = new Validation('boiteFormGRL', {
            immediate : false,
            useTitles:true,
            stopOnFirst:false,
            onSubmit: false
      });

      Event.observe('submitGRL', 'click', function() {
         if(zeForm2.validate()) {
            AjaxGRL();
         }
         return false;
      });
   }
}

function AjaxGRL()
{
   var pars = $('boiteFormGRL').serialize(); 
   var uri = '../s20_location/_mail_grl.php';
 
   $('submitGRL').hide();
   $('wait_caract').show();
   
   var myAjax = new Ajax.Request( uri, 
                                 {
                                    method: 'post'
                                    , parameters: pars
                                    , onFailure: reportError
                                    , onComplete: hideWaitCarac
                                 }
                                );
}

 function reportError() {$('lnkGrl').show();}
 function hideWaitCarac() 
 {
   $('wait_caract').hide();
   window.open("http://www.passgrl.fr",'_blank');
   $('lnkGrl').show();
}

function verifEmploi()
{
   Event.observe($('data_prec_situation_pro_'),'change', function(){
      if($('data_prec_situation_pro_').value==8) //si sans emploi
      {
            $$('span.requis').each(function(obj){
               obj.hide();
            });
            $$('input.requis').each(function (obj){
               obj.removeClassName('required')
            });
      }
      else
      {
            $$('span.requis').each(function(obj){
               obj.show();
            });
            $$('input.requis').each(function (obj){
               obj.addClassName('required')
            });
      }
   });
   Event.observe($('data_prec_co_situation_pro_'),'change', function(){
      if($('data_prec_co_situation_pro_').value==8) //si sans emploi
      {
            $$('input.corequis').each(function (obj){
               obj.removeClassName('required')
            });
      }
      else
      {
            $$('input.corequis').each(function (obj){
               obj.addClassName('required')
            });
      }
   });
   
   Event.observe($('data_situation_pro_'),'change', function(){
      if($('data_situation_pro_').value==8) //si sans emploi
      {
            $$('input.corequis').each(function (obj){
               obj.removeClassName('required')
            });
      }
      else
      {
            $$('input.corequis').each(function (obj){
               obj.addClassName('required')
            });
      }
   });
   
   Event.observe($('data_co_situation_pro_'),'change', function(){
      if($('data_prec_co_situation_pro_').value==8) //si sans emploi
      {
            $$('input.corequis').each(function (obj){
               obj.removeClassName('required')
            });
      }
      else
      {
            $$('input.corequis').each(function (obj){
               obj.addClassName('required')
            });
      }
   });
}

function verifContact()
{
   var zeForm = new Validation('zeForm', {
   useTitles:true,
   stopOnFirst:false,
   immediate: false,
   onFormValidate: function() {
      $('todo').value='submit_quest';
      $('zeForm').action = '../s04_contact/s04p06_documents.php';
   }});
   if($('searchSubmitter')) {
      Event.observe('searchSubmitter', 'click', function() {$('searchTodo').value = "email-subscribe"; $('searchEmailForm').submit();});
   }

   if($('errMsg')) {
      if($('errMsg').innerHTML  != '') {
         Element.show('errMsg'); Effect.BlindUp('errMsg', {delay:3});
      }
   }
   Event.observe('depliSalaries', 'click', function(obj){
      $('depliSalaries_quantite').toggle();               
   });  
   Event.observe('affiches', 'click', function(obj){
      $('affiches_quantite').toggle();               
   });           
   Event.observe('depliMobilite', 'click', function(obj){
      $('depliMobilite_quantite').toggle();               
   });
   Event.observe('depliAssist', 'click', function(obj){
      $('depliAssist_quantite').toggle();
   });
   Event.observe('dossLoca', 'click', function(obj){
      $('dossLoca_quantite').toggle();               
   }); 
   Event.observe('dossMobi', 'click', function(obj){
      $('dossMobi_quantite').toggle();               
   }); 
   Event.observe('dossTrav', 'click', function(obj){
      $('dossTrav_quantite').toggle();               
   }); 
} //end verifContact()


   // controle int ou float
   function isValidNumber(text, intsOnly) {
      text = text.replace(",",".");
      text = text.replace(/^\s+|\s+$/g, '');
      var value = intsOnly ? parseInt(text, 10) : parseFloat(text);
      //return (String(value) === text;
      return ((String(value) === text) || (String(parseFloat(value))) === (String(parseInt(value))));
   }

   // arrondissement avec décimales -> Round
   function roundDec(val, nbDec){
      var fact = Math.pow(10,nbDec);
      return Math.round(val*fact)/fact;
   }