function IsNumeric(strString){
	var strValidChars = "0123456789-";
	var strChar;
	var blnResult = true;

	if (strString.length == 0) return false;

	//test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++){
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1){
			blnResult = false;
		}
	}
	return blnResult;
}

function CurrencyFormatted(amount){
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}

function calculFinancement(){
	if (document.getElementById){
		
		//charge les objets
		var prixbien = Trim(document.getElementById('prixbien').value);
		var fonds = Trim(document.getElementById('fonds').value);
		var hyp1 = Number(document.getElementById('hyp1').value);
		var hyp2 = Number(document.getElementById('hyp2').value);
		var prixachat = document.getElementById('prixachat');
		var fondpropre = document.getElementById('fondpropre');
		var pourcent = document.getElementById('pourcent');
		var hypo = document.getElementById('hypo');
		var hypo1 = document.getElementById('hypo1');
		var hypo2 = document.getElementById('hypo2');
		var inthypo1 = document.getElementById('inthypo1');
		var inthypo2 = document.getElementById('inthypo2');
		var ammort = document.getElementById('ammort');
		var frais = document.getElementById('frais');
		var montant = document.getElementById('montant');
		var cout = document.getElementById('cout');
		var rdtype1 = document.getElementById('rdtype1');
		var rdtype2 = document.getElementById('rdtype2');
		var rdtype3 = document.getElementById('rdtype3');
		var htype = document.getElementById('rtype');
		var htaux1 = document.getElementById('rtauxh1');
		var htaux2 = document.getElementById('rtauxh2');
		var printer = document.getElementById('printer');

		// Réinitialise les résultats
		prixachat.value = '';
		fondpropre.value = '';
		hypo.value = '';
		hypo1.value = '';
		hypo2.value = '';
		inthypo1.value = '';
		inthypo2.value = '';
		ammort.value = '';
		frais.value = '';
		montant.value = '';
		cout.value = '';
		pourcent.value = '';
		printer.style.visibility = "hidden";

		//sélection la valeur du radio
		if (rdtype1.checked==true){
			var typeobjet = rdtype1.value;
		}
		if (rdtype2.checked==true){
			var typeobjet = rdtype2.value;
		}
		if (rdtype3.checked==true){
			var typeobjet = rdtype3.value;
		}
		
		//amortissement
		var amo;
		if (typeobjet == 0.5){
			amo = 0.03;
		}else{
			amo = 0.01;
		}
		
		//contrôle des valeurs
		if (prixbien.length ==0){
			alert("Le prix du bien est obligatoire. Veuillez, svp, corriger l'information.");
			document.getElementById('prixbien').focus();
			return false;
		}
		if (!IsNumeric(prixbien)){
			alert("La valeur saisie pour le prix du bien est incorrect. Veuillez, svp, corriger l'information.\nLes chiffres à virgule, les lettres et autres signes ne sont pas autorisés.");
			document.getElementById('prixbien').focus();
			return false;
		}
		
		if (fonds.length ==0){
			alert("Les fonds propres sont obligatoires. Veuillez, svp, corriger l'information.");
			document.getElementById('fonds').focus();
			return false;
		}
		if (!IsNumeric(fonds)){
			alert("La valeur saisie pour les fonds propres est incorrect. Veuillez, svp, corriger l'information.\nLes chiffres à virgule, les lettres et autres signes ne sont pas autorisés.");
			document.getElementById('prixbien').focus();
			return false;
		}

		var fondspropres = Number(fonds);
		if (fondspropres < (Number(prixbien * typeobjet))){
			alert("Vos fonds propres doivent être au minimum de "+(typeobjet*100)+"% du prix du bien. Vous devez disposer au minium de "+CurrencyFormatted(Number(prixbien * typeobjet))+" CHF de fonds propres. Veuillez, svp, corriger l'information.");
			document.getElementById('fonds').focus();
			return false;
		}
		if (fondspropres > (Number(prixbien))){
			alert("Vous n\'avez pas besoin de financement si vos fonds propres sont suppérieurs à la valeur du bien.");
			document.getElementById('fonds').focus();
			return false;
		}
		
		//CALCUL
		
		//champs cachés
		htype.value = typeobjet;
		htaux1.value = hyp1;//hypo1.value;
		htaux2.value = hyp2;//hypo2.value;
		
		//champs affichés
		prixachat.value = CurrencyFormatted(Number(prixbien));
		
		fondpropre.value = CurrencyFormatted(fondspropres);
		
		var pourcentage = fondspropres / Number(prixbien) * 100;
		pourcent.value = CurrencyFormatted(pourcentage)+"%";
		
		var hypotheque = Number(prixbien) - fondspropres;
		hypo.value = CurrencyFormatted(hypotheque);
		
		var hypotec1 = Number(hypo.value * 0.85);
		hypo1.value = CurrencyFormatted(hypotec1);

		var hypotec2 = Number(hypo.value * 0.15);
		hypo2.value = CurrencyFormatted(hypotec2);

		var int_hypo1 = Number(hypo1.value * hyp1);
		inthypo1.value = CurrencyFormatted(int_hypo1);
		
		var int_hypo2 = Number(hypo2.value * hyp2);
		inthypo2.value = CurrencyFormatted(int_hypo2);
		
		var ammortissement = Number(prixbien * amo);
		ammort.value = CurrencyFormatted(ammortissement);
		
		var frais_entretien = Number(prixbien * 0.007);
		frais.value = CurrencyFormatted(frais_entretien);
		
		var total_annuel = Number(int_hypo1 + int_hypo2 + ammortissement + frais_entretien);
		montant.value = CurrencyFormatted(total_annuel);
		cout.value = CurrencyFormatted(Number(total_annuel / 12));
		
		//imprimante
		printer.style.visibility = "visible";
	}
}
