
//------------------------------------------------------------------------------
// Paramètres généraux
//------------------------------------------------------------------------------

var TVAMetro 	= 0.196;
var TVADOM   	= 0.085;
var TVAGuyane	= 0.0;

//------------------------------------------------------------------------------
// Prêt PAS
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// plafond de ressources applicable selon la localisation 
// et le nbre de personnes du logt
//------------------------------------------------------------------------------

function FPlafRessPAS( NPers, Localisation ) {

  try {
  
  var dTabPlafPas=new Array();
  dTabPlafPas[0]=new Array();
  dTabPlafPas[1]=new Array();
  dTabPlafPas[2]=new Array();

  // Zone A
      dTabPlafPas[0][0]=21802.0;
      dTabPlafPas[0][1]=32584.0;
      dTabPlafPas[0][2]=42715.0;
      dTabPlafPas[0][3]=50999.0;
      dTabPlafPas[0][4]=60678.0;
      dTabPlafPas[0][5]=68279.0;
      dTabPlafPas[0][6]=7607.0;
      dTabPlafPas[0][7]=0.0;

   // Zones B & C

      dTabPlafPas[1][0]=18955.0;
      dTabPlafPas[1][1]=25313.0;
      dTabPlafPas[1][2]=30441.0;
      dTabPlafPas[1][3]=36748.0;
      dTabPlafPas[1][4]=43231.0;
      dTabPlafPas[1][5]=48720.0;
      dTabPlafPas[1][6]=5435.0;
      dTabPlafPas[1][7]=0.0;

   // DOM

      dTabPlafPas[2][0]=21286.0;
      dTabPlafPas[2][1]=31131.0;
      dTabPlafPas[2][2]=37438.0;
      dTabPlafPas[2][3]=43741.0;
      dTabPlafPas[2][4]=51070.0;
      dTabPlafPas[2][5]=57550.0;
      dTabPlafPas[2][6]=63971.0;
      dTabPlafPas[2][7]=70390.0;
  
  if (Localisation=="I")
    return dTabPlafPas[0][Math.min(NPers,6)-1]+Math.max(0,NPers-6)*dTabPlafPas[0][6];
  else if (Localisation=="P")
    return dTabPlafPas[1][Math.min(NPers,6)-1]+Math.max(0,NPers-6)*dTabPlafPas[1][6];
  else if (Localisation=="G" || Localisation=="M" || Localisation=="Y" || Localisation=="R")
    return dTabPlafPas[2][Math.min(NPers,8)-1];
  else
    return undefined;
    
  }
  catch(e)
  {return undefined;}
  
}

//------------------------------------------------------------------------------
// PTZ 
//------------------------------------------------------------------------------

   // DT : Duree totale du pret en mois
   // DD : Duree du differe en mois
   // TD : Taux du differe (0<=TD<=1)
   DT = undefined;
   DD = undefined;
   TD = undefined;

//------------------------------------------------------------------------------
// Paramètres relatifs au PTZ+
//------------------------------------------------------------------------------

   var ptz = { 
   
      // coefficient familial
      coeff : [1.0,1.4,1.7,2.0,2.3,0.3],   
      
      // tranches selon nature de l'opération et zonage
      tr : {
         "Neuf" : {
            "ZoneA" :  [15000,17500,20500,23000,25500,28500,31000,36000,49500],
            "ZoneB1" : [12000,14000,16000,18000,19500,21500,23500,26000,32500],
            "ZoneB2" : [10000,11500,12500,14000,15000,16500,18000,20000,26500],
            "ZoneC" :  [8000,9500,10500,11500,13000,14000,15000,18500,26500] },
         "Ancien" : {
            "ZoneA" :  [12000,15000,17500,20500,23000,25500,28500,31000,43500],
            "ZoneB1" : [10000,12000,14000,16000,18000,19500,21500,23500,30500],
            "ZoneB2" : [9000,10000,11500,12500,14000,15000,16500,18000,26500],
            "ZoneC" :  [8000,9500,10500,11500,13000,14000,15000,16500,26500] }
      },

      // quotité selon zonage et nature de l'opération
      quot : {
         "EcoPerf" : {
            "Neuf"   : {"ZoneA":0.4, "ZoneB1":0.35, "ZoneB2":0.3, "ZoneC":0.25},
            "Ancien" : {"ZoneA":0.2, "ZoneB1":0.2, "ZoneB2":0.2, "ZoneC":0.2}
         },
         "NonEcoPerf" : {
            "Neuf"   : {"ZoneA":0.27, "ZoneB1":0.22, "ZoneB2":0.17, "ZoneC":0.15},
            "Ancien" : {"ZoneA":0.1, "ZoneB1":0.1, "ZoneB2":0.1, "ZoneC":0.1}
         },
         // cas particulier note G au diagnostic dans l'ancien
         "NonEcoPerfG" : {
            "Ancien" : {"ZoneA":0.05, "ZoneB1":0.05, "ZoneB2":0.05, "ZoneC":0.05}
         }
      },
      
      // plafonds d'opérations
      plaf : {
         "Neuf" : {
            "ZoneA" : [156000, 218000, 265000, 312000, 359000],
            "ZoneB1" : [117000, 164000, 199000, 234000, 269000],
            "ZoneB2" : [86000, 120000, 146000, 172000, 198000],
            "ZoneC" : [79000, 111000, 134000, 158000, 182000]
         },
         "Ancien" : {
            "ZoneA" : [124000, 174000, 211000, 248000, 285000],
            "ZoneB1" : [93000, 130000, 158000, 186000, 214000],
            "ZoneB2" : [86000, 120000, 146000, 172000, 198000],
            "ZoneC" : [79000, 111000, 134000, 158000, 182000]
         }
      },
      
      // profils de remboursement du ptz
      profil : {
         "TD" : [0.45,0.35,0.20,0.15,0,0,0,0,0,0],
         "DD" : [12*23,12*23,12*23,12*23,0,0,0,0,0,0],
         "DT" : [12*30,12*28,12*26,12*25,12*23,12*20,12*16,12*12,12*8,12*5]
      },
      
      // plafonds d'opération selon nombre de personnes du ménage, zonage et nature de l'opération
      get_plaf : function(NbPers,ZoneABC,Natop) {
         return ptz.plaf[Natop][ZoneABC][Math.min(NbPers,5)-1];
      },
      
      // montant max du ptz selon montant de l'opération, nombre de personnes du ménage, zonage et nature de l'opération
      get_montant_ptz : function(Montant,NbPers,ZoneABC,Natop,EcoPerf) {
         var montant=Math.min(Montant,ptz.get_plaf(NbPers,ZoneABC,Natop));
         return montant*ptz.quot[EcoPerf][Natop][ZoneABC];
      },
      
      // retourne l'indice de tranche (entre 0 et 9) selon le RNI, le nbre de personnes du ménage et la localisation  
      get_tr : function(RNI,NbPers,ZoneABC,Natop) {
         var q=RNI/(ptz.coeff[Math.min(NbPers,5)-1]+Math.max(NbPers-5,0)*ptz.coeff[5]);
         for(var i=0;i<9;++i)
            if (q<=ptz.tr[Natop][ZoneABC][i])
               return i;
         return 9;
      },

      // détermine le profil du ptz
      get_profil : function(RNI,NbPers,ZoneABC,Natop) {
         var tr=ptz.get_tr(RNI,NbPers,ZoneABC,Natop); 
         DT = ptz.profil["DT"][tr];
         DD = ptz.profil["DD"][tr];
         TD = ptz.profil["TD"][tr];
      },
      
      get_annee_revenus : function() {
         return Math.max((new Date()).getFullYear()-2,2009);
      }
   };
  
  //------------------------------------------------------------------------------
// Paramètres relatifs au PTZ 
//------------------------------------------------------------------------------

  var ptz_QuotiteMaxOperation=new Array(); 

  ptz_QuotiteMaxOperation["Neuf"]     =  0.30;    // 30 % 
  ptz_QuotiteMaxOperation["Ancien"]   =  0.20;    // 20 % 
  ptz_QuotiteMaxOperation["DOM60"]    =  0.40;    // 40 % 
  
  var ptz_QuotiteMaxEmprunt=new Array(); 

  ptz_QuotiteMaxEmprunt["Neuf"]     =  1.00;    // 100 % 
  ptz_QuotiteMaxEmprunt["Ancien"]   =  0.50;    // 50 % 
  
  var ptz_MontantMaxEmprunt=new Array(); 
  ptz_MontantMaxEmprunt["Neuf"]=48750;
  ptz_MontantMaxEmprunt["Ancien"]=32500;

   // Plafonds de ressources ---------------------------------------------------
   // modif. 09/01/2009 - Utilisation de tableaux associatifs
  
  var ptz_plafress=new Array(); 
  ptz_plafress["ZoneA"]=new Array(); 
  ptz_plafress["ZoneBC"]=new Array(); 

  // zone A
  
    ptz_plafress["ZoneA"][1]    = 31250.00;
    ptz_plafress["ZoneA"][2]    = 43750.00;
    ptz_plafress["ZoneA"][3]    = 50000.00;
    ptz_plafress["ZoneA"][4]    = 56875.00;
    ptz_plafress["ZoneA"][5]    = 64875.00;
	
    ptz_plafress["ZoneBC"][1]    = 23688.00;
    ptz_plafress["ZoneBC"][2]    = 31588.00;
    ptz_plafress["ZoneBC"][3]    = 36538.00;
    ptz_plafress["ZoneBC"][4]    = 40488.00;
    ptz_plafress["ZoneBC"][5]    = 44425.00;

// Prix maximaux d'opérations --------------------------------------------------
// modif. 09/01/2009 - Utilisation de tableaux associatifs

  var ptz_prixmax=new Array(); 
  ptz_prixmax["Neuf"]=new Array(); 
  ptz_prixmax["Neuf"]["ZoneA"]=new Array(); 
  ptz_prixmax["Neuf"]["ZoneB"]=new Array(); 
  ptz_prixmax["Neuf"]["ZoneC"]=new Array(); 
  ptz_prixmax["Ancien"]=new Array(); 
  ptz_prixmax["Ancien"]["ZoneA"]=new Array(); 
  ptz_prixmax["Ancien"]["ZoneB"]=new Array(); 
  ptz_prixmax["Ancien"]["ZoneC"]=new Array(); 
  
  // Neuf - zone A
  ptz_prixmax["Neuf"]["ZoneA"][1] = 80000.00 ;
  ptz_prixmax["Neuf"]["ZoneA"][2] = 112500.00 ;
  ptz_prixmax["Neuf"]["ZoneA"][3] = 125000.00 ;
  ptz_prixmax["Neuf"]["ZoneA"][4] = 137500.00 ;
  ptz_prixmax["Neuf"]["ZoneA"][5] = 150000.00 ;
  ptz_prixmax["Neuf"]["ZoneA"][6] = 162500.00 ;
  
  // Neuf - zone B
  ptz_prixmax["Neuf"]["ZoneB"][1] = 55000.00 ;
  ptz_prixmax["Neuf"]["ZoneB"][2] = 82500.00 ;
  ptz_prixmax["Neuf"]["ZoneB"][3] = 95000.00 ;
  ptz_prixmax["Neuf"]["ZoneB"][4] = 107500.00 ;
  ptz_prixmax["Neuf"]["ZoneB"][5] = 120000.00 ;
  ptz_prixmax["Neuf"]["ZoneB"][6] = 132500.00 ;
  
  // Neuf - zoneC
  ptz_prixmax["Neuf"]["ZoneC"][1] = 55000.00 ;
  ptz_prixmax["Neuf"]["ZoneC"][2] = 82500.00 ;
  ptz_prixmax["Neuf"]["ZoneC"][3] = 95000.00 ;
  ptz_prixmax["Neuf"]["ZoneC"][4] = 107500.00 ;
  ptz_prixmax["Neuf"]["ZoneC"][5] = 120000.00 ;
  ptz_prixmax["Neuf"]["ZoneC"][6] = 132500.00 ;

  //Ancien - zone A
  ptz_prixmax["Ancien"]["ZoneA"][1] = 72000.00 ;
  ptz_prixmax["Ancien"]["ZoneA"][2] = 101250.00 ;
  ptz_prixmax["Ancien"]["ZoneA"][3] = 112500.00 ;
  ptz_prixmax["Ancien"]["ZoneA"][4] = 123750.00 ;
  ptz_prixmax["Ancien"]["ZoneA"][5] = 135000.00 ;
  ptz_prixmax["Ancien"]["ZoneA"][6] = 146250.00 ;
  
  // Ancien - zone B
  ptz_prixmax["Ancien"]["ZoneB"][1] = 44000.00 ;
  ptz_prixmax["Ancien"]["ZoneB"][2] = 66000.00 ;
  ptz_prixmax["Ancien"]["ZoneB"][3] = 76000.00 ;
  ptz_prixmax["Ancien"]["ZoneB"][4] = 86000.00 ;
  ptz_prixmax["Ancien"]["ZoneB"][5] = 96000.00 ;
  ptz_prixmax["Ancien"]["ZoneB"][6] =106000.00 ;
  
  // Ancien - zoneC
  ptz_prixmax["Ancien"]["ZoneC"][1] = 41250.00 ;
  ptz_prixmax["Ancien"]["ZoneC"][2] = 61875.00 ;
  ptz_prixmax["Ancien"]["ZoneC"][3] = 71250.00 ;
  ptz_prixmax["Ancien"]["ZoneC"][4] = 80625.00 ;
  ptz_prixmax["Ancien"]["ZoneC"][5] = 90000.00 ;
  ptz_prixmax["Ancien"]["ZoneC"][6] = 99375.00 ;
  
// Profil PTZ ------------------------------------------------------------------

  // DT : Duree totale du pret  en mois
  // DD : Duree du differe  en mois
  // TD : Taux du differe   0<=TD<=1  
  // RNI = Revenu Net Imposable
  
  var ptz_profil=new Array(); 
  
  ptz_profil["NonMaj"]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["DOM60"]=new Array(); 
  ptz_profil["NonMaj"]["Ancien"]=new Array(); 
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"]=new Array(); 
  ptz_profil["NonMaj"]["Ancien"]["DOM60"]=new Array(); 
  
  ptz_profil["Maj"]=new Array(); 
  ptz_profil["Maj"]["ZoneA"]=new Array(); 
  ptz_profil["Maj"]["ZoneBC"]=new Array(); 
  ptz_profil["Maj"]["DOM60"]=new Array(); 
  
  // Neuf ---------------------------------------------------------------------------------

  // Zone A
  
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][0]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][0]["RNI"]=23688.00 ; 
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][0]["DT"]=312 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][0]["DD"]=216 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][0]["TD"]=1.00 ;
  
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][1]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][1]["RNI"]=43750.00 ; 
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][1]["DT"]=228 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][1]["DD"]=180 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][1]["TD"]=0.50 ;
  
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][2]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][2]["RNI"]=999999999.00 ; 
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][2]["DT"]=144 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][2]["DD"]=0 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneA"][2]["TD"]=0.00 ;
  
  // Zone BC
  
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][0]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][0]["RNI"]=15801.00 ; 
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][0]["DT"]=312 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][0]["DD"]=216 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][0]["TD"]=1.00 ;
  
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][1]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][1]["RNI"]=19750.00 ; 
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][1]["DT"]=288 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][1]["DD"]=216 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][1]["TD"]=0.75 ;
  
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][2]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][2]["RNI"]=23688.00 ; 
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][2]["DT"]=228;
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][2]["DD"]=180 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][2]["TD"]=0.50 ;
  
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][3]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][3]["RNI"]=31588.00 ; 
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][3]["DT"]=144 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][3]["DD"]=0 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][3]["TD"]=0.00 ;

  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][4]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][4]["RNI"]=999999999.00 ; 
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][4]["DT"]=108 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][4]["DD"]=0 ;
  ptz_profil["NonMaj"]["Neuf"]["ZoneBC"][4]["TD"]=0.00 ;
  
  // DOM avec ressources < 60 % plafond
  
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][0]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][0]["RNI"]=15801.00 ; 
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][0]["DT"]=348 ;
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][0]["DD"]=252 ;
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][0]["TD"]=1.00 ;
  
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][1]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][1]["RNI"]=19750.00 ; 
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][1]["DT"]=324 ;
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][1]["DD"]=252 ;
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][1]["TD"]=0.75 ;
  
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][2]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][2]["RNI"]=23688.00 ; 
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][2]["DT"]=264;
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][2]["DD"]=216 ;
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][2]["TD"]=0.50 ;

  ptz_profil["NonMaj"]["Neuf"]["DOM60"][4]=new Array(); 
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][4]["RNI"]=999999999.00 ; 
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][4]["DT"]=180 ;
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][4]["DD"]=0 ;
  ptz_profil["NonMaj"]["Neuf"]["DOM60"][4]["TD"]=0.00 ;
  
  // Ancien ------------------------------------------------------------------- 
  
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][0]=new Array(); 
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][0]["RNI"]=15801.00 ; 
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][0]["DT"]=264 ;
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][0]["DD"]=216 ;
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][0]["TD"]=1.00 ;
  
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][1]=new Array(); 
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][1]["RNI"]=19750.00 ; 
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][1]["DT"]=252 ;
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][1]["DD"]=216 ;
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][1]["TD"]=0.75 ;
  
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][2]=new Array(); 
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][2]["RNI"]=23688.00 ; 
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][2]["DT"]=204 ;
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][2]["DD"]=180 ;
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][2]["TD"]=0.50 ;
  
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][3]=new Array(); 
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][3]["RNI"]=31588.00 ; 
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][3]["DT"]=96 ;
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][3]["DD"]=0 ;
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][3]["TD"]=0.00 ;

  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][4]=new Array(); 
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][4]["RNI"]=999999999.00 ; 
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][4]["DT"]=72 ;
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][4]["DD"]=0 ;
  ptz_profil["NonMaj"]["Ancien"]["ZoneABC"][4]["TD"]=0.00 ;
  
  // DOM avec ressources < 60 % plafond
  
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][0]=new Array(); 
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][0]["RNI"]=15801.00 ; 
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][0]["DT"]=300;
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][0]["DD"]=252;
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][0]["TD"]=1.00;
  
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][1]=new Array(); 
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][1]["RNI"]=19750.00; 
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][1]["DT"]=288;
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][1]["DD"]=252;
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][1]["TD"]=0.75;
  
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][2]=new Array(); 
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][2]["RNI"]=23688.00 ; 
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][2]["DT"]=240;
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][2]["DD"]=216;
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][2]["TD"]=0.50 ;

  ptz_profil["NonMaj"]["Ancien"]["DOM60"][4]=new Array(); 
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][4]["RNI"]=999999999.00 ; 
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][4]["DT"]=132 ;
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][4]["DD"]=0 ;
  ptz_profil["NonMaj"]["Ancien"]["DOM60"][4]["TD"]=0.00 ;

  //**********************************************************************
  // Neuf - PTZ majoré
  //**********************************************************************

  // Zone A --------------------------------------------------------------
  
  ptz_profil["Maj"]["ZoneA"][0]=new Array(); 
  ptz_profil["Maj"]["ZoneA"][0]["RNI"]=23688.00 ; 
  ptz_profil["Maj"]["ZoneA"][0]["DT"]=360 ;
  ptz_profil["Maj"]["ZoneA"][0]["DD"]=216 ;
  ptz_profil["Maj"]["ZoneA"][0]["TD"]=1.00 ;
  
  ptz_profil["Maj"]["ZoneA"][1]=new Array(); 
  ptz_profil["Maj"]["ZoneA"][1]["RNI"]=43750.00 ; 
  ptz_profil["Maj"]["ZoneA"][1]["DT"]=252 ;
  ptz_profil["Maj"]["ZoneA"][1]["DD"]=180 ;
  ptz_profil["Maj"]["ZoneA"][1]["TD"]=0.50 ;
  
  ptz_profil["Maj"]["ZoneA"][2]=new Array(); 
  ptz_profil["Maj"]["ZoneA"][2]["RNI"]=999999999.00 ; 
  ptz_profil["Maj"]["ZoneA"][2]["DT"]=192 ;
  ptz_profil["Maj"]["ZoneA"][2]["DD"]=0 ;
  ptz_profil["Maj"]["ZoneA"][2]["TD"]=0.00 ;
  
  // Zone BC
  
  ptz_profil["Maj"]["ZoneBC"][0]=new Array(); 
  ptz_profil["Maj"]["ZoneBC"][0]["RNI"]=15801.00 ; 
  ptz_profil["Maj"]["ZoneBC"][0]["DT"]=360 ;
  ptz_profil["Maj"]["ZoneBC"][0]["DD"]=216 ;
  ptz_profil["Maj"]["ZoneBC"][0]["TD"]=1.00 ;
  
  ptz_profil["Maj"]["ZoneBC"][1]=new Array(); 
  ptz_profil["Maj"]["ZoneBC"][1]["RNI"]=19750.00 ; 
  ptz_profil["Maj"]["ZoneBC"][1]["DT"]=324 ;
  ptz_profil["Maj"]["ZoneBC"][1]["DD"]=216 ;
  ptz_profil["Maj"]["ZoneBC"][1]["TD"]=0.75 ;
  
  ptz_profil["Maj"]["ZoneBC"][2]=new Array(); 
  ptz_profil["Maj"]["ZoneBC"][2]["RNI"]=23688.00 ; 
  ptz_profil["Maj"]["ZoneBC"][2]["DT"]=252;
  ptz_profil["Maj"]["ZoneBC"][2]["DD"]=180 ;
  ptz_profil["Maj"]["ZoneBC"][2]["TD"]=0.50 ;
  
  ptz_profil["Maj"]["ZoneBC"][3]=new Array(); 
  ptz_profil["Maj"]["ZoneBC"][3]["RNI"]=31588.00 ; 
  ptz_profil["Maj"]["ZoneBC"][3]["DT"]=192 ;
  ptz_profil["Maj"]["ZoneBC"][3]["DD"]=0 ;
  ptz_profil["Maj"]["ZoneBC"][3]["TD"]=0.00 ;

  ptz_profil["Maj"]["ZoneBC"][4]=new Array(); 
  ptz_profil["Maj"]["ZoneBC"][4]["RNI"]=999999999.00 ; 
  ptz_profil["Maj"]["ZoneBC"][4]["DT"]=144 ;
  ptz_profil["Maj"]["ZoneBC"][4]["DD"]=0 ;
  ptz_profil["Maj"]["ZoneBC"][4]["TD"]=0.00 ;
  
  // cas cumul avec majoration spécifique DOM
  // (ménages avec ressources < 60 % plafond)
  
  ptz_profil["Maj"]["DOM60"][0]=new Array(); 
  ptz_profil["Maj"]["DOM60"][0]["RNI"]=15801.00 ; 
  ptz_profil["Maj"]["DOM60"][0]["DT"]=396 ;
  ptz_profil["Maj"]["DOM60"][0]["DD"]=252 ;
  ptz_profil["Maj"]["DOM60"][0]["TD"]=1.00 ;
  
  ptz_profil["Maj"]["DOM60"][1]=new Array(); 
  ptz_profil["Maj"]["DOM60"][1]["RNI"]=19750.00 ; 
  ptz_profil["Maj"]["DOM60"][1]["DT"]=360 ;
  ptz_profil["Maj"]["DOM60"][1]["DD"]=252 ;
  ptz_profil["Maj"]["DOM60"][1]["TD"]=0.75 ;
  
  ptz_profil["Maj"]["DOM60"][2]=new Array(); 
  ptz_profil["Maj"]["DOM60"][2]["RNI"]=23688.00 ; 
  ptz_profil["Maj"]["DOM60"][2]["DT"]=288;
  ptz_profil["Maj"]["DOM60"][2]["DD"]=216 ;
  ptz_profil["Maj"]["DOM60"][2]["TD"]=0.50 ;
  
  ptz_profil["Maj"]["DOM60"][3]=new Array(); 
  ptz_profil["Maj"]["DOM60"][3]["RNI"]=999999999.00 ; 
  ptz_profil["Maj"]["DOM60"][3]["DT"]=228 ;
  ptz_profil["Maj"]["DOM60"][3]["DD"]=0 ;
  ptz_profil["Maj"]["DOM60"][3]["TD"]=0.00 ;
  
//------------------------------------------------------------------------------
// détermination du profil du PTZ
// en fonction du revenu fiscal de référence
//------------------------------------------------------------------------------

function FProfilPTZ(RNI, NbPers, Maj, Natop, ZoneABC) {
   // DT : Duree totale du pret en mois
   // DD : Duree du differe en mois
   // TD : Taux du differe    0<=TD<=1
   var conditions;
   // neuf
   if (Maj=="Maj")
   {
		// ptz majoré
		if (ZoneABC=="ZoneA")
			conditions=ptz_profil["Maj"]["ZoneA"];
		else if (ZoneABC=="ZoneB" || ZoneABC=="ZoneC" || ZoneABC=="ZoneBC")
			conditions=ptz_profil["Maj"]["ZoneBC"];
      else if (ZoneABC=="DOM") {
         if (RNI<=0.6*FPlafRessPTZ( NbPers, ZoneABC ))
            conditions=ptz_profil["Maj"]["DOM60"];
         else
            conditions=ptz_profil["Maj"]["ZoneBC"];
      }      
		else
			throw "function FProfilPTZ : paramètre ZoneABC incorrect";
   }
   else if (Maj=="NonMaj")
   {
		// ptz non majoré
		if (Natop=="Neuf")
		{
			if (ZoneABC=="ZoneA")
				conditions=ptz_profil["NonMaj"]["Neuf"]["ZoneA"];
		   else if (ZoneABC=="ZoneB" || ZoneABC=="ZoneC" || ZoneABC=="ZoneBC")
				conditions=ptz_profil["NonMaj"]["Neuf"]["ZoneBC"];
         else if (ZoneABC=="DOM") {
            if (RNI<=0.6*FPlafRessPTZ( NbPers, ZoneABC ))
               conditions=ptz_profil["NonMaj"]["Neuf"]["DOM60"];
            else
               conditions=ptz_profil["NonMaj"]["Neuf"]["ZoneBC"];
         }      
			else
				throw "function FProfilPTZ : paramètre ZoneABC incorrect";
		}
		else if (Natop=="Ancien")
      {
			if (ZoneABC=="DOM" && RNI<=0.6*FPlafRessPTZ( NbPers, ZoneABC ))
            conditions=ptz_profil["NonMaj"]["Ancien"]["DOM60"];
         else
            conditions=ptz_profil["NonMaj"]["Ancien"]["ZoneABC"];
      }
      else
			throw "function FProfilPTZ : paramètre Natop incorrect";
   }
   else
      throw "function FProfilPTZ : paramètre Maj incorrect";
   
   for(i=0;i<conditions.length;++i)
      if (RNI <=conditions[i]["RNI"] )	
	  {
	    DT=conditions[i]["DT"];
	    DD=conditions[i]["DD"];
	    TD=conditions[i]["TD"];
		return;
	  }
   throw "function FProfilPTZ : paramètres incorrects";
}

//------------------------------------------------------------------------------
// détermination de l'année prise en compte dans la détermination des ressources
// année de référence : N-2 avant le 31 mai et N-1 après
//------------------------------------------------------------------------------

function FAnneeRevenusPTZ()
{
   var jour = new Date();
   var annee=jour.getFullYear();
   annee--;
   // Base zéro !
   var mois=jour.getMonth();
   if (mois<=4) annee--;
   return Math.max(annee,2008);
}

//------------------------------------------------------------------------------
// plafond de ressources applicable selon la zone et le nbre de personnes du logt
//------------------------------------------------------------------------------

function FPlafRessPTZ( NPers, ZoneABC )
{
   if (NPers<1)
      throw "function FPlafRessPTZ : paramètre NPers incorrect";
   if( ZoneABC == "ZoneA" )
	  return ptz_plafress["ZoneA"][Math.min(NPers,5)];
   else if( ZoneABC == "ZoneBC" || ZoneABC == "ZoneB" || ZoneABC == "ZoneC" || ZoneABC == "DOM")  
	  return ptz_plafress["ZoneBC"][Math.min(NPers,5)];
   else
      throw "function FPlafRessPTZ : paramètre ZoneABC incorrect";
}

//------------------------------------------------------------------------------
// Prix max applicable selon la zone,le nbre de personnes du logt
// et le type de logement
//------------------------------------------------------------------------------

function FMontantMaxOperationPTZ( NPers, ZoneABC, Natop )
{
	if (Natop=="Neuf" || Natop=="CNNeuf" || Natop=="AchatNeuf")
	{
		if( ZoneABC == "ZoneA" )  
			return ptz_prixmax["Neuf"]["ZoneA"][Math.min(NPers,6)];
		else if( ZoneABC == "ZoneB" || ZoneABC == "DOM")  
			return ptz_prixmax["Neuf"]["ZoneB"][Math.min(NPers,6)];
		else if ( ZoneABC == "ZoneC" )  
			return ptz_prixmax["Neuf"]["ZoneC"][Math.min(NPers,6)];
		else
			throw "function FMontantMaxOperationPTZ : paramètre ZoneABC incorrect";
   }
   else if (Natop=="Ancien")
   {
		if( ZoneABC == "ZoneA" )  
			return ptz_prixmax["Ancien"]["ZoneA"][Math.min(NPers,6)];
		else if( ZoneABC == "ZoneB" || ZoneABC == "DOM")  
			return ptz_prixmax["Ancien"]["ZoneB"][Math.min(NPers,6)];
		else if ( ZoneABC == "ZoneC" )  
			return ptz_prixmax["Ancien"]["ZoneC"][Math.min(NPers,6)];
		else
			throw "function FMontantMaxOperationPTZ : paramètre ZoneABC incorrect";
   }
   else
      throw "function FMontantMaxOperationPTZ : paramètre Natop incorrect";
}

//------------------------------------------------------------------------------
// Montant max du PTZ selon la zone,le nbre de personnes du logt
// et le type de logement
//------------------------------------------------------------------------------

function FMontantMaxPTZ( RNI, NPers, ZoneABC, Natop )
{
   var montantMaxEmprunt=(Natop=="Neuf" || Natop=="CNNeuf" || Natop=="AchatNeuf")? ptz_MontantMaxEmprunt["Neuf"]: ptz_MontantMaxEmprunt["Ancien"];
   if (ZoneABC=="DOM" && RNI<=0.6*FPlafRessPTZ( NPers, ZoneABC )) 
		return Math.min(FMontantMaxOperationPTZ(NPers, ZoneABC, Natop)*ptz_QuotiteMaxOperation["DOM60"],montantMaxEmprunt);
   else if (Natop=="Neuf" || Natop=="CNNeuf" || Natop=="AchatNeuf")
		return Math.min(FMontantMaxOperationPTZ(NPers, ZoneABC, Natop)*ptz_QuotiteMaxOperation["Neuf"], montantMaxEmprunt);
    else if (Natop=="Ancien")
		return Math.min(FMontantMaxOperationPTZ(NPers, ZoneABC, Natop)*ptz_QuotiteMaxOperation["Ancien"], montantMaxEmprunt);
   else
      throw "function FMontantMaxPTZ : paramètre Natop incorrect";
}

//------------------------------------------------------------------------------
// Calcul des frais de notaire
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Emoluments 
//------------------------------------------------------------------------------

function FEmolumentsNotaire( BaseDeCalcul , Localisation)
// maj 04/07/08
{
  
  // Bornes émoluments notaire
  // Les tarifs varient en fonction du prêt et sont dégressifs
  // tarif proportionnel degressif

  // 5% de 0 a 3050
  // 3.30% de 3050 a 6100
  // 1.65% de 61010 a 16770
  // 0.825% a partir de 16770

  var dBornesEmoluments=new Array();

  dBornesEmoluments[0]=new Array();
  dBornesEmoluments[0][0]=3050;
  dBornesEmoluments[0][1]=6100;
  dBornesEmoluments[0][2]=16770;
  dBornesEmoluments[0][3]=0;

  dBornesEmoluments[1]=new Array();
  dBornesEmoluments[1][0]=5.0/100.0;
  dBornesEmoluments[1][1]=3.30/100.0;
  dBornesEmoluments[1][2]=1.65/100.0;
  dBornesEmoluments[1][3]=0.825/100.0;

  try

  {

    // Emoluments du notaire (hors TVA)
  
    var dValue=0.0;
    dValue+=Math.min(BaseDeCalcul,dBornesEmoluments[0][0])*dBornesEmoluments[1][0];
    dValue+=Math.max(Math.min(BaseDeCalcul,dBornesEmoluments[0][1])-dBornesEmoluments[0][0],0.0)*dBornesEmoluments[1][1];
    dValue+=Math.max(Math.min(BaseDeCalcul,dBornesEmoluments[0][2])-dBornesEmoluments[0][1],0.0)*dBornesEmoluments[1][2];
    dValue+=Math.max(BaseDeCalcul-dBornesEmoluments[0][2],0.0)*dBornesEmoluments[1][3];

    if (Localisation=="R")
      dValue*=1.4;
    else if (Localisation=="G" || Localisation=="M" || Localisation=="Y")  
      dValue*=1.25;
    
	if (Localisation=="Y")
	  dValue*=(1.0+TVAGuyane);	
    else if (Localisation=="I" || Localisation=="P")
      dValue*=(1.0+TVAMetro);
    else
      dValue*=(1.0+TVADOM);
    
    if (isNaN(dValue))
      return undefined;
    else
      return dValue;

    return dValue;

  }
  catch (e) { return undefined;}
}

//------------------------------------------------------------------------------
// Droits et salaire du conservateur 
//------------------------------------------------------------------------------
// modif. 01/11/2006
function FDroitsNotaire( BaseDeCalcul , Natop)
{

  // Droits de notaire
  // Bien ancien -> 5,09 %  de la base
  //          neuf    -> 0,715 % de la base 

  // Salaire du conservateur : 0,1 % de la base 
 
  try

  {
    var dValue=0.0;
    
    if (Natop=="CNNeuf" || Natop=="AchatNeuf") 
      dValue+=BaseDeCalcul*0.00715;
    else if (Natop=="Ancien") 
      dValue+=BaseDeCalcul*0.05090;
    else
      return undefined;
    
    dValue+=BaseDeCalcul*0.001;
    
    if (isNaN(dValue))
      return undefined;
    else
      return dValue;
      
  }
  catch (e) { return undefined;}
}

//------------------------------------------------------------------------------
// Emoluments de formalités et débours
//------------------------------------------------------------------------------
// modif. 26/08/2006
function FFormalitesDeboursNotaire ( Localisation )
{
    var dValue=0.0;
	if (Localisation=="R")
      dValue+=(1150.0*0.836*1.4*1.085);
    else if (Localisation=="G" || Localisation=="M")  
      dValue+=(1150.0*0.836*1.25*1.085);
    else if (Localisation=="Y")  
      dValue+=(1150.0*0.836*1.25);
    else
      dValue+=1150.0;

	  if (isNaN(dValue))
      return undefined;
    else
      return dValue;
}

//------------------------------------------------------------------------------
// Frais de notaire 
//------------------------------------------------------------------------------
// modif. 04/07/2009
function FFraisNotaire( MontantOperation , Localisation, Natop)
{

  try

  {
    
    // Dans le cas d'une construction de maison, on suppose 
    // que la valeur du terrain représente 25 % du montant total de l'opération
    // et que le ménage n'est pas déjà propriétaire du terrain
    
    var BaseDeCalcul;
    
    if (Natop=="CNNeuf")
      BaseDeCalcul=MontantOperation*0.25; 
    else
      BaseDeCalcul=MontantOperation; 
    
    var frais=FEmolumentsNotaire( BaseDeCalcul , Localisation);
    frais+=FDroitsNotaire( BaseDeCalcul , Natop);
    frais+=FFormalitesDeboursNotaire( Localisation);
    
    if (isNaN(frais))
      return undefined;
    else
      return Math.round(frais/100.0)*100.0;
  }
  catch (e) { return undefined;}
}


//------------------------------------------------------------------------------
// Calcul des coûts de garantie
//------------------------------------------------------------------------------
// Le coût de la garantie dépend du montant et de la nature du prêt

 //*************************************************************
 function FGarantieEmolumentsNotaire( MontantPret, Localisation)                             
 // MAJ : 30/06/2006
 {
  var dValue=0.0;
  
  var dTauxGarantie=new Array();
  // Tranches
  dTauxGarantie[0]=new Array();
  dTauxGarantie[0][0]=6500.0;
  dTauxGarantie[0][1]=17000.0;
  dTauxGarantie[0][2]=30000.0;
  dTauxGarantie[0][3]=0.0;

  // Taux applicables 
  dTauxGarantie[1]=new Array();
  dTauxGarantie[1][0]=0.01330;
  dTauxGarantie[1][1]=0.00550;
  dTauxGarantie[1][2]=0.00370;
  dTauxGarantie[1][3]=0.00275;
  
  dValue+=Math.min(MontantPret,dTauxGarantie[0][0])*dTauxGarantie[1][0];
  dValue+=Math.max(Math.min(MontantPret,dTauxGarantie[0][1])-dTauxGarantie[0][0],0.0)*dTauxGarantie[1][1];
  dValue+=Math.max(Math.min(MontantPret,dTauxGarantie[0][2])-dTauxGarantie[0][1],0.0)*dTauxGarantie[1][2];
  dValue+=Math.max(MontantPret-dTauxGarantie[0][2],0.0)*dTauxGarantie[1][3];

  if (Localisation=="R")
    dValue*=1.4;
  else if (Localisation=="G" || Localisation=="M" || Localisation=="Y")  
    dValue*=1.25;

  if (Localisation=="Y")
    dValue*=(1.0+TVAGuyane);
  if (Localisation=="I" || Localisation=="P")
    dValue*=(1.0+TVAMetro);
  else
    dValue*=(1.0+TVADOM);
	
  return dValue;
 }

 //**************************************************
 function FGarantieTPF( MontantPret, TypePret, Natop)     
 // MAJ : 30/06/2006
 // cas hypothèque
 // taxe publicité foncière
 {
  var dValue=0.0;
  //if (Natop!="Ancien"
  //&& (TypePret!="PAS" && TypePret!="PC" && TypePret!="PTZ" && TypePret!="EL"))
  if (Natop=="Neuf" && TypePret=="Autre")
	dValue+=(MontantPret*1.2*0.00715);
  return dValue;
 }

 //************************************************
 function FGarantieSalaireConservateur(MontantPret)     
 // MAJ : 30/06/2006
 {
    return MontantPret*1.2*0.0005;
 }

 //***********************************************
 function FGarantieFormalitesDebours(Localisation)     
 // MAJ : 30/06/2006
 // montant forfaitaire de frais
 {
    var dValue=0.0;
    if (Localisation=="R")
      dValue+=(250.0*0.836*1.4*1.085);
    else if (Localisation=="G" || Localisation=="M")  
      dValue+=(250.0*0.836*1.25*1.085);
	else if (Localisation=="Y")
      dValue+=(250.0*0.836*1.25);
    else
      dValue+=250.0;
    return dValue;
 }

 //*****************************************************************
 function FCoutGarantie( MontantPret, TypePret, Localisation, Natop)                             
 // MAJ : 30/06/2006
 {
  var cout_garantie=0.0;
  try {
    cout_garantie+=FGarantieEmolumentsNotaire(MontantPret,Localisation);
    cout_garantie+=FGarantieTPF(MontantPret,TypePret,Natop);
    cout_garantie+=FGarantieSalaireConservateur(MontantPret);
    cout_garantie+=FGarantieFormalitesDebours(Localisation);
    if (isNaN(cout_garantie))
      return undefined;
    else
      return cout_garantie;
  }
  catch (e) { return undefined;}
 }

//------------------------------------------------------------------------------
// Calcul des intérêts intercalaires
//------------------------------------------------------------------------------
// Attention : TauxYCAss représente ici le taux mensuel yc assurances

 function FInteretsIntercalaires( MontantOperation, MontantApport, TauxYCAss, Natop)                             
 {
 
  try

  {
    
    // Intérêts intercalaires non calculés dans l'ancien avec travaux
    
      if (Natop=="Ancien")
        return 0.0;

    // Contrôle des valeurs
    
      if (MontantOperation<=0 || MontantApport<0)
        return undefined;
      
      var tx_apport=MontantApport/MontantOperation;
      if (tx_apport>=1.0) return 0.0;
    
    // Distinction construction neuve et achat promoteur
    
    var dValue=undefined;
    TauxYCAss*=12.0;
    
    if (Natop=="CNNeuf")
      dValue=(MontantOperation+12000.0)*TauxYCAss*Math.pow(1.0-tx_apport,2.5)/3.0;  
    else if (Natop=="AchatNeuf") 
      dValue=MontantOperation*TauxYCAss*Math.pow(1.0-tx_apport,2.2)/2.0;  
    else return undefined;

    if (isNaN(dValue))
      return undefined;
    else
      return Math.round(dValue/100.0)*100.0;
      
  }
  catch (e) { return undefined;}

 }

//------------------------------------------------------------------------------
// Locatif
//------------------------------------------------------------------------------

//-------------------------------------------------------------------------
// début données à actualiser
//-------------------------------------------------------------------------
// maj : 23/04/2010

	var TxCRL               	   	=  0.0;
	var LoyerMinCRL         	   	=  0.0;
	var TxGR                	   	=  0.006;
	var AbattementMicroEntreprise 	=  0.50;         
	var MinAbatMicroEntreprise    	=  305.0;
	var DefMaxImputable           	=  10700.0;     
	var TxInflation         	   	=  0.020;
	var TxCSGDeductible		      	=  0.058;
	var TxCSGNonDeductible		   	=  0.024;
	var TxCRDS			            =  0.005;
	var TxPS			          	=  0.020;
	var TaxeAddPS			        =  0.003;
	var TaxePlusValue		        =  0.16;
	var TxRSA						=  0.011;
	var TxTaxe						=  TxCSGDeductible+TxCSGNonDeductible+TxCRDS+TxPS+TaxeAddPS+TxRSA;
	var dPrixPlafondGirardin		=  2247.00; 	// €/m2 de SHAB
//-------------------------------------------------------------------------
// plafonds de loyer
//-------------------------------------------------------------------------
// maj : 23/04/2010
	
	var dLoyerGirardin				= 12.66;  
   var dPlafondMicroFoncier		= 15000.0; 
   var dPlafondMicroEntreprise	= 32100.0; 
	var dPlafondOperationScellier	= 300000.0;
	
	// paramètres spécifiques Scellier
	var dTxScellier					= 0.25;		// 25 % 
	var dTxScellierDOM				= 0.40;		// 40 % 
	var dDureeScellier            = 9;		   // ... sur 9 ans
	var dTxScellierIntermediaire	= 0.02;		// 2 % par an
	var dDureeScellierIntermediaire = 6;		// ... pendant 6 ans
	 
    var dLoyerMax=new Array();
	
    dLoyerMax[0]=new Array();  // Zone A
    dLoyerMax[0][0]=6.26;      // Borloo Ancien Social           
    dLoyerMax[0][1]=9.38;      // Borloo Ancien Social Dérogatoire 
    dLoyerMax[0][2]=17.37;     // Borloo Ancien Intermédiaire
    dLoyerMax[0][3]=21.72;     // Scellier
    dLoyerMax[0][4]=17.38;     // Scellier Intermédiaire
	        
    dLoyerMax[1]=new Array();  // Zone B1
    dLoyerMax[1][0]=5.70;      // Borloo Ancien Social 
    dLoyerMax[1][1]=7.75;      // Borloo Ancien Social Dérogatoire 
    dLoyerMax[1][2]=11.35;     // Borloo Ancien Intermédiaire
    dLoyerMax[1][3]=15.10;     // Scellier
    dLoyerMax[1][4]=12.08;     // Scellier Intermédiaire
       
    dLoyerMax[2]=new Array();  // Zone B2
    dLoyerMax[2][0]=5.70;      // Borloo Ancien Social 
    dLoyerMax[2][1]=7.75;      // Borloo Ancien Social Dérogatoire 
    dLoyerMax[2][2]=11.35;     // Borloo Ancien Intermédiaire
    dLoyerMax[2][3]=12.35;     // Scellier
    dLoyerMax[2][4]=9.88;      // Scellier Intermédiaire

	dLoyerMax[3]=new Array();  // Zone C
    dLoyerMax[3][0]=5.12;      // Borloo Ancien Social
    dLoyerMax[3][1]=6.04;      // Borloo Ancien Social Dérogatoire 
    dLoyerMax[3][2]=8.22;      // Borloo Ancien Intermédiaire    
    dLoyerMax[3][3]=0.00;      // Scellier - zone C exclue
    dLoyerMax[3][4]=0.00;      // Scellier Intermédiaire - zone C exclue

    dLoyerMax[4]=new Array();  // DOM
    dLoyerMax[4][0]=5.70;      // Borloo Ancien Social 
    dLoyerMax[4][1]=7.75;      // Borloo Ancien Social Dérogatoire 
    dLoyerMax[4][2]=11.35;     // Borloo Ancien Intermédiaire
    dLoyerMax[4][3]=12.04;     // Scellier
    dLoyerMax[4][4]=9.63;      // Scellier Intermédiaire
    
//------------------------------------------------------------------------------
// maj 21/04/2009

	var ANNEEIR                     =  2009;       // paramètres valides pour IR sur revenus 2009
	var QF=new Array(5875.0,11720.0,26030.0,69783.0);
	var R=new Array(0.055,0.140,0.300,0.400);
	var PlafondIR1			=3980.0;
	var PlafondIR2			=2301.0;  
	
//-------------------------------------------------------------------------
// fin données à actualiser
//-------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Loyer max applicable
//------------------------------------------------------------------------------
// Le loyer max dépend de la zone, de la nature de l'opération, du régime fiscal
// et de la surface
// maj : 23/04/2010

 function FLoyerMax( ZoneABC, Natop, RegimeFiscal, Surface)                             
 {
  try
  {
	 
   if (RegimeFiscal=="BorlooAncienSoc"
    || RegimeFiscal=="BorlooAncienInt"
    || RegimeFiscal=="Scellier"
    || RegimeFiscal=="ScellierIntermediaire")
   {
   
       var line;
       if (ZoneABC=="ZoneA") line=0;
       else if (ZoneABC=="ZoneB1") line=1;
	    else if (ZoneABC=="ZoneB2") line=2;
       else if (ZoneABC=="ZoneC") line=3;
       else if (ZoneABC=="DOM") line=4;
       else return undefined;
   
       var column;
	    if (RegimeFiscal=="BorlooAncienSoc") column=1;
	    else if (RegimeFiscal=="BorlooAncienInt") column=2;
	    else if (RegimeFiscal=="Scellier") column=3;
	    else if (RegimeFiscal=="ScellierIntermediaire") column=4;
       else return undefined;
	   
	   // cas particulier
	   if (ZoneABC=="ZoneC" && (RegimeFiscal=="Scellier" || RegimeFiscal=="ScellierIntermediaire"))
		return undefined;

	   return dLoyerMax[line][column]*Surface;
   }
   else if (RegimeFiscal=="GirardinLibre") return undefined;
   else if (RegimeFiscal=="GirardinInter") return dLoyerGirardin*Surface;
   else if (RegimeFiscal=="FraisReels") return undefined;
   else if (RegimeFiscal=="MicroFoncier") return dPlafondMicroFoncier/12.0;
   else if (RegimeFiscal=="MicroEntreprise") return dPlafondMicroEntreprise/12.0;
   else return undefined;
   
  }
  catch (e) { return undefined;}

}

//------------------------------------------------------------------------------
// Révision de loyers
//------------------------------------------------------------------------------
// MAJ : 10/08/2009

   indices_loyers=new Array();
   
   // année 2006
   indices_loyers[2006] = new Array();
   indices_loyers[2006][1]=111.47;
   indices_loyers[2006][2]=111.98;
   indices_loyers[2006][3]=112.43;
   indices_loyers[2006][4]=112.77;

   // année 2007
   indices_loyers[2007] = new Array();
   indices_loyers[2007][1]=113.07;
   indices_loyers[2007][2]=113.37;
   indices_loyers[2007][3]=113.68;
   indices_loyers[2007][4]=114.30;

   // année 2008
   indices_loyers[2008] = new Array();
   indices_loyers[2008][1]=115.12;
   indices_loyers[2008][2]=116.07;
   indices_loyers[2008][3]=117.03;
   indices_loyers[2008][4]=117.54;
   
   // année 2009
   indices_loyers[2009] = new Array();
   indices_loyers[2009][1]=117.70;
   indices_loyers[2009][2]=117.59;
   indices_loyers[2009][3]=117.41;
   indices_loyers[2009][4]=117.47;

   // année 2010
   indices_loyers[2010] = new Array();
   indices_loyers[2010][1]=117.81;
   indices_loyers[2010][2]=118.26;
   indices_loyers[2010][3]=118.70;
   indices_loyers[2010][4]=119.17;


   // année 2011
   indices_loyers[2011] = new Array();
   indices_loyers[2011][1]=119.69;
   
