function calculISF(){
	document.isf.charge.value=document.isf.charge.value*1;
	zone_a_blanc();
	var choixannee=document.isf.anneeISF.selectedIndex;
  	var anneeISF = document.isf.anneeISF.value;
		calcul();

	var tablo = new Array();
	tablo[0] = '&nbsp;';
	tablo[1] = 'Veuillez remplir tous les champs pour que votre calcul puisse être effectué;.';
	tablo[2] = 'Vos champs doivent être constitués uniquement de chiffres.';
	tablo[3] = "Le montant de votre impôt de Solidarité sur la Fortune est calculé avant plafonnement et imputation de l'impôt de Solidarité sur la Fortune acquitté hors de France.";
	tablo[4] = "Vous n'êtes pas redevable de l'impôt Solidarité sur la Fortune au titre de l'année " + document.isf.anneeISF.value;
	tablo[4] = tablo[4] + ", mais si votre patrimoine taxable excède " + tranche[1].borne;
	tablo[4] = tablo[4] + " €, vous devez néanmoins déposer votre déclaration.";

    document.isfRes.res.value = montant;
	document.isfRes.anneecalculISF.value = document.isf.anneeISF.value;

	if (montant>0)
		{
	    document.isf.reponseISF.value = tablo[3]		
		}
	else
		{
	    document.isf.reponseISF.value = tablo[4]
        }
    return;
	}

//============================
function zone_a_blanc()
//============================
	{
	document.isf.reponseISF.value = "";
	document.isfRes.anneecalculISF.value = "";
	document.isfRes.res.value = "";
	}
//============================
function AchargeEgale(charge)
<!-- Modif 2004 Prise en compte de la reduction pour enfant en residence alternee -->
//============================
  {
    demipart = parseInt(charge)
    for(var k = 0; k < charge.length;k++)
      {
        var c = charge.substring(k,k+1);
        if((c == ",")||(c == "."))
          {
		    if(charge.substring(k+1,k+2)>0)
		      { 
		         demipart = demipart + 0.5
		       }
		    break
          }
      }
    return demipart;
  }
  
//============================
function MakeArray(n){
//============================
     this.lenght = n;
     for (var i=1; i<=n; i++){
        this[i]=0;}
        return this
}

//============================
function base(borne,pourcentage)
//============================
	{
    this.borne=borne;
    this.pourcentage=pourcentage;
    }

//============================
function calcul()
//============================
	{
    tranche=new MakeArray(5);
    tranche[1]= new base(770000, 0.0055)
    tranche[2]= new base(1240000, 0.0075)
    tranche[3]= new base(2450000, 0.01)
    tranche[4]= new base(3850000, 0.013)
    tranche[5]= new base(7360000, 0.0165)
    tranche[6]= new base(16020000, 0.018)
        
    var patrimoine = document.isf.patrimoine.value;
    patrimoine=parseInt(patrimoine);
    var charge = document.isf.charge.value;
	
<!-- Modif 2004 Prise en compte de la reduction pour enfant en residence alternee -->
    AchargeEgale(charge)
    charge=parseFloat(demipart);
	//	charge = parseInt(charge);
    document.isf.charge.value = charge
<!-- fin Modif 2004 -->

    montant=0;
    for ( var n=6 ;n>0; n--) {
        limite  = tranche[n].borne;
        limite = parseInt(limite);
        coeff = tranche[n].pourcentage;
        coeff = parseFloat(coeff);
		if (patrimoine > limite) {
			montant = montant + ((patrimoine - limite) * coeff);
			patrimoine=limite;
            }
		}
	montant = montant - (150 * charge);
<!-- Modif 2006 arrondi à l'euro le plus proche -->
//	montant = Math.round(montant);
<!-- fin Modif 2006 -->

<!-- Modif 2008 -->
	var pme75 = parseInt(document.isf.reduc_PME75.value,10);
	var pme50 = parseInt(document.isf.reduc_PME50.value,10);
	var dons75 = parseInt(document.isf.reduc_DONS75.value,10);
  // appel de la fonction ValeurNumérique pour vérifier la saisie
	if ( ValeurNumerique(pme75) == false )  {pme75 = 0}
	if ( ValeurNumerique(pme50) == false )  {pme50 = 0}
	if ( ValeurNumerique(dons75) == false )  {dons75 = 0}
  //Calcul des réductions
	var reduction = (75*pme75)/100;
	(0.5*pme50 > 20000) ? reduction = reduction +  20000 : reduction = reduction + (0.5*pme50);
	reduction = reduction + (0.75*dons75);
	if ( reduction > 50000 ) {reduction = 50000}
	montant = montant - reduction;
	montant = Math.round(montant);
<!-- fin Modif 2008 -->


	if (montant<0) {
        montant=0
        }
    return;
	}
//============================
//Modification 2008
function ValeurNumerique(valeurentest)
//Test si la valeur saisie est numérique
//============================
	{
	var EstValNum = new RegExp("^[0-9-.]*$","g");
	return EstValNum.test(valeurentest)
}
