/* * * CONTROLES DE REMPLISSAGE DE CHAMP ET AUTRES * */ var CACHER = 'fast'; var AFFICHER = 'slow'; // Saisie de Revenu Fiscal de Référence ou Base TD du séjour function numberCheck(champ){ if(document.getElementById(champ).value.length == 0){ document.getElementById(champ).value = 0; } if(parseInt(document.getElementById(champ).value) < 0){ document.getElementById(champ).value = 0; } if(champ == 'nbPartCAES'){ if(parseFloat(document.getElementById(champ).value.replace(",","."))%0.5 != 0 || parseFloat(document.getElementById(champ).value.replace(",",".")) < 1){ document.getElementById(champ).value = 1; } } if(champ == 'nbj'){ if(parseInt(document.getElementById(champ).value) > 22){ document.getElementById(champ).value = 22; } } } // Fonction pour garder deux chiffres après la virgule pour les champs calculés function toMoney(num){ num = parseInt(Math.round(num*100)); return num/100; } /* * * XHTTP REQUEST * */ var xhr = new XMLHttpRequest(); function calculer(){ // On prend les valeurs de l'étape 1 var rfr = parseFloat(document.getElementById("rfr").value.replace(",",".")); var nbPartCAES = parseFloat(document.getElementById("nbPartCAES").value.replace(",",".")); var btd = parseFloat(document.getElementById("btd").value.replace(",",".")); var nbj = parseInt(document.getElementById("nbj").value.replace(",",".")); // Si le Revenu Fiscal de Référence ou la Base TD du séjour ne sont pas des chiffres (on fait ces tests pour les anciens navigateurs qui gèrent pas le type number) if(isNaN(rfr) || isNaN(btd)){ document.getElementById("erreur1").style.display="block"; } else { rfr = parseFloat(rfr); btd = parseFloat(btd); // Si le Revenu Fiscal de Référence ou la Base TD du séjour sont négatifs if(rfr<0 || btd<0){ document.getElementById("erreur1").style.display="block"; } else { document.getElementById("erreur1").style.display="none"; xhr.open("GET", "/calcul_td/E1TD/"+Math.ceil(rfr/nbPartCAES),true); xhr.onreadystatechange = afficher; xhr.send(null); // On cache tous le bloc de résultat $("#res").hide(CACHER); } } } /* * * FONCTION CALLBACK * */ function afficher(){ if(xhr.readyState == 4){ $("#res").show(AFFICHER); // On prend ce qui est retourné par la requête XHTTP var res = eval('(' + xhr.responseText + ')'); // On prend les valeurs de l'étape 1 var rfr = parseFloat(document.getElementById("rfr").value.replace(",",".")); var nbPartCAES = parseFloat(document.getElementById("nbPartCAES").value.replace(",",".")); var btd = parseFloat(document.getElementById("btd").value.replace(",",".")); var nbj = parseInt(document.getElementById("nbj").value); var td = 0; // On affiche le TD famille document.getElementById("tdf").innerHTML = res.td_famille + " %"; // On affiche le TD jeunes document.getElementById("tdj").innerHTML = res.td_jeunes + " %"; // On affiche le TD CESU document.getElementById("tdc").innerHTML = res.td_cesu + " %"; // On calcule le Quotient Familial document.getElementById("qf").innerHTML = Math.ceil(rfr/nbPartCAES) + " €"; // On affiche la base TD du séjour document.getElementById("tds").innerHTML = btd + " €"; // On affiche le coût du séjour famille document.getElementById("csf").innerHTML = toMoney(btd - ((btd * parseFloat(res.td_famille))/100)) + " €"; // On affiche le coût du séjour jeunes if(nbj == 0){ document.getElementById("csj").innerHTML = "-- €"; } else { var cout_jour = btd/nbj; var subv = 0; if(cout_jour > 100){ subv = parseFloat(res.td_jeunes); }else{ subv = (parseFloat(res.td_jeunes) * cout_jour)/100; } document.getElementById("csj").innerHTML = toMoney(btd - (subv * nbj)) + " €"; } } }