 var t = new Array(9);	
 $(document).ready(function(){
    function init() {
      for(i=0;i<9;++i) {
	t[i] = new Array(7);
	for(j=0;j<7;++j)
	  t[i][j]=-1.01;
      }
      $("#inflation").val("2");
      $("#croissance").val("2.5");
      $("#recettes").val("51");
      $("#pdeps").val("1.5");
      $("#deps").val("53.8");
      $("#dette").val("65");
      $("#dettef").val("60");
      $("#progf").val("7.2");
    }
    function refresh() {
	$("#tbl tr:not(.head) td").each(function(n){ 
	  x=Math.floor(n/7);
	  y=Math.floor(n%7);
	  this.innerHTML=(t[x][y]>-1 ? Math.round(t[x][y]*1000)/10+"%" : "&nbsp;");
        });
   }
   function fill_from_var() {
	t[0][0] = $("#inflation").val()/100;
	t[1][0] = $("#croissance").val()/100;
	t[2][0] = $("#recettes").val()/100;
	t[3][0] = $("#pdeps").val()/100;
	t[4][0] = $("#deps").val()/100;
	t[8][0] = $("#dette").val()/100;
	t[8][6] = $("#dettef").val()/100;
	t[6][6] = $("#progf").val()/100;
   }
   function recalc(){
	for(i=0;i<7;++i) {
		if (i>0) {
			t[0][i] = t[0][0];
			t[1][i] = t[1][0];
			t[2][i] = t[2][0];
			t[3][i] = t[3][0];
			t[4][i] = t[4][i-1]*(1+t[3][i])/(1+t[1][i]);
		}
		t[5][i]=t[4][i]-t[2][i];
	}
	for(i=5;i>=0;i--)
	   t[6][i] = t[6][i+1]*i/6;
	for(i=0;i<7;++i) {
	   t[7][i] = t[6][i]+t[5][i];
	   if (i>0) t[8][i] = t[8][i-1]/(1+t[0][i]+t[1][i])+t[7][i];
	}
   }
   function optimise_crois() {
     var dettef = t[8][6];
     dw=-1;up=1;
     while (up-dw>.0001) {
	t[1][0] = (dw+up)/2;
	recalc();
	if (t[8][6]<dettef) { up=(dw+up)/2; } else { dw=(dw+up)/2; }
     }
     $("#croissance").val(Math.round(t[1][0]*10000)/100);
   }
   function optimise_poids() {
     var dettef = t[8][6];
     dw=-1; up=1;
     while (up-dw>.0001) {
	t[6][6] = (dw+up)/2;
	recalc();
	if (t[8][6]>dettef) { up=t[6][6]; } else { dw=t[6][6]; }
     }
     $("#progf").val(Math.round(t[6][6]*10000)/100);
   }
   $("#calcbtn").click(function(){
	$("#var input:radio").each(function(n){ if (this.checked) { 
		fill_from_var();
		switch(n) {
			case 0: optimise_crois(); break;
			case 2: optimise_poids(); break;
			default:  
				recalc();
				$("#dettef").val(Math.round(t[8][6]*10000)/100);
				break;
		}
	} });
	refresh();
   });
   $("#cleanbtn").click(function() { init(); refresh(); });
   init();
   refresh();
});
