var _tn=0;
var _ttn=0;

function GetNum(champ, fmt, flag) { 
	_ttn=TestNum(champ,fmt, flag); return(_tn);
}

function TestNum(champ, fmt, flag) {
	var ret=0;
	var s=""+champ;
	var i1,i2,c;
	
	_tn=0;
	i1=0;
	i2=s.length;
//for(; i1<i2; i1++) { c=s.charAt(i1); if(c!=' ' && c!='\t') { break; } }
//for(; i2>i1; i2--) { c=s.charAt(i2-1); if(c!=' ' && c!='\t') { break; } }

	if(i1<i2) {
		var MaxEntier,MaxDeci,NegOK=0,NbEntier=0,NbDeci=0,iVirg=0,i,s2="";

		if(fmt<0) {
			NegOK=1;
			fmt=-fmt;
		}
		MaxEntier=fmt/10;
		MaxDeci  =fmt%10;

		for(i=i1; i<i2; i++) {
			c=s.charAt(i);
			if(c==' ' && flag!=null && (flag & 0x0001)) { 
				continue;
			}
			if(c>='0' && c<='9') { 
				if(iVirg) { 
					NbDeci++; 
					if(NbDeci>MaxDeci) {
						ret=-3; break; 
					} 
				} else { 
					NbEntier++; if(NbEntier>MaxEntier) { ret=-2; break; } 
				}
			} else if(c=='.' || c==',') { 
				if(iVirg) { ret=-1; break; 
			}
			iVirg=i+1;
			c='.';
		} else if(c=='-') { 
			if(!NegOK || i>i1) { ret=-4; break; }
		} else { 
			ret=-1;
			break;
		}
		s2+=c;
		}
    if(!ret)
	{ _tn=(iVirg) ? parseFloat(s2) : parseInt(s2);
	  ret=1;
	}
  }
return(ret);
}
				
				
function FormateVal(val, NbDeci, flag) {
	var s="";

	if(!isNaN(val)) {
		var l,i,tmp,signe;

		var separe=" ";
		if(flag!=null) {
			if(flag & 0x0001) separe="&nbsp;"; else
			if(flag & 0x0002) separe="."; else
			if(flag & 0x0004) separe="";
		}

		if(NbDeci==2) { val=val*100.0; } else
		if(NbDeci>0) { for(i=0; i<NbDeci; i++) { val=val*10; } }
		else{ NbDeci=0; }

		val=Math.round(val);

		if(val<0) { val=-val; signe=1; } else{ signe=0; }
		s=val.toString();

		l=s.length;
		for(i=NbDeci+1-l; i>0; i--) s="0"+s;

		tmp=l-NbDeci;
		if(tmp>3 && separe.length>0) {
			for(i=0; i<5; i++) {
				if (tmp<4) break;
				tmp-=3;
				s=s.substring(0, tmp)+separe+s.substring(tmp, l);
				l+=separe.length;
			}
		}
		if(NbDeci>0) {
			l=s.length;
			s=s.substring(0, l-NbDeci)+","+s.substring(l-NbDeci, l);
		}
		if(signe) s="-"+s;
	}

	return(s);
}
				
				
var gIsChange1=0;

function changevaleur() {
	if(document.forms["fff1"].NbAn.value==15) { 
		document.forms["fff1"].taux.value=3.4;
	}
	if(document.forms["fff1"].NbAn.value==20) { 
		document.forms["fff1"].taux.value=3.5;
	}
	if(document.forms["fff1"].NbAn.value==25) { 
		document.forms["fff1"].taux.value=3.7;
	}
}

function ffff_OC(r) {
	gIsChange1=1;
}

function BeforeSubmit(f,TypeCalc) {
	var err=0;
	var ers="";
	var erc=null;

	var tc=TypeCalc;
	var v_pret=GetNum(f.pret.value,80);
	var v_NbAn=GetNum(f.NbAn.value,20);
	var v_taux=GetNum(f.taux.value,22);
	var v_mens=GetNum(f.mensual.value,52);

	if(v_pret<=0 && (tc==1 || tc==3)) {
		err=2;
		erc=f.pret;
		ers="Précisez le montant que vous souhaitez emprunter !";
	} else if((v_NbAn<=0 || v_NbAn>25) && (tc==1 || tc==2)) {
		err=3;
		erc=f.NbAn;
		ers="Précisez la durée de remboursement souhaitée (25 ans maximum) !";
	} else if(v_mens<=0 && (tc==2 || tc==3)) {
		err=4;
		erc=f.mensual;
		ers="Précisez le montant de la mensualité souhaitée !";
	} else if(v_taux<=0 || v_taux>20) {
		err=1;
		erc=f.taux;
		ers="Saisissez le taux du prêt !";
	} else if(!gIsChange1) {
		err=100;
		ers="Résultats déjà calculés !";
	}

	if(ers!="") {
		self.alert(ers);
		if(erc!=null) {
			erc.focus();
			erc.select();
		}
		tc=0;
	}

	if(tc==1 || tc==2) {
		var t;
		var n=v_NbAn*12;

		if(v_taux!=0) {
			t=v_taux/1200;
			t=(t/(1-Math.pow(1+t, -n)));
		} else{
			t=1/n;
		}
		if(tc==1) {
			v_mens=Math.round((v_pret*t)*100)/100;
			f.mensual.value=v_mens;
			$('mensuale').innerHTML= v_mens + ' &euro;';
		} else {
			v_pret=Math.round(v_mens/t);
			f.pret.value=v_pret;
			$('prete').innerHTML=v_pret + ' &euro;';
		}
	} else if(tc==3) {
		var n;
		var t=v_taux/1200;
		var nMax=300;

		if(t==0) {
			t=v_mens/v_pret;
			n=Math.floor(t);
			if(t-n>0.001) n++;
		} else if(v_mens<=(v_pret*t)) {
			n=nMax+1;
		} else {
			for(crd=v_pret, n=1; n<=nMax; n++) {
				crd-=v_mens-(crd*t);
				if(crd<v_mens/1000) break;
			}
		}
		if(n>nMax) {
			var s;
			s="la durée de remboursement excède 25 ans !\n(votre mensualité est trop faible).";
			self.alert(s);

			f.NbAn.value="";
			f.NbMois.value="";
			f.mensual.focus();
			f.mensual.select();
		} else {
			f.NbAn.value  =Math.floor(n/12);
			f.NbMois.value=n-(12*f.NbAn.value);
			$('NbMoise').innerHTML= f.NbAn.value + ' ans + ' + f.NbMois.value + ' mois';
			 
		}
	}

	return(false);
}

function OnBtnSubmit(f,TypeCalc) {
	BeforeSubmit(f,TypeCalc);
}
