PDA

View Full Version : Coding help needed


jspe377523
03-03-2008, 11:07 AM
Hi Guys,

I am wondering if anyone can help with some code I have been asked to look at?

I am unsure how to 'use' this code in a webpage. I am guessing from a form somehow but I am not getting very far. Not much help as the comments are in french!!

/**
* @author Morey Damien - scasi.com
*/

/**
* Liste des grammages à afficher
*/
var grammages = new Array ("30", "35", "40", "45", "50", "60", "70", "80", "90", "100", "115");

/**
* Seuil du grammage sur lequel on change d'indice pate a papier, ..., vapeur
*/
var seuil = 70;

/**
* Champs textes permettant à l'utilisateur de faire ses simulations
*/
var longueur = null;
var largeur = null;
var nbPages = null;
var tirage = null;
var distance = null;

/**
* Fonction, déclenchée lorsque l'utilisateur change une des variables ci-dessus,
* qui met à jour le tableau des émissions de CO2
*/
function changementValeur() {
longueur = document.getElementsByName("longueur")[0];
largeur = document.getElementsByName("largeur")[0];
nbPages = document.getElementsByName("nbPages")[0];
tirage = document.getElementsByName("tirage")[0];
distance = document.getElementsByName("distance")[0];

// Vérification des valeurs :
var tab = new Array(new Array(longueur, "float"), new Array(largeur, "float"),
new Array(nbPages, "int"), new Array(tirage, "int"),
new Array(distance, "int"));
verifType(tab);

// Calcul de toutes les valeurs :
calSurface();
calTonnage();
calPatePapier();
calBois();
calMineraux();
calEau();
calVapeur();
calVapeur2();
calEmission();
calEmission2();
calEmissiont();
}

/**
* Fonction qui vérifie pour chaque element de tab si son type (int ou float)
* correspond bien à celui qui est demandé
* @param {Array} tab
*/
function verifType(tab) {
for (var i = 0; i < tab.length; i++) {
tab[i][0].value = tab[i][0].value.replace(',', ".");
if (tab[i][1] == "int" && !isInteger(tab[i][0].value)) {
document.getElementById("err_" + tab[i][0].name).innerHTML = "Ceci n'est pas un entier";
}
else if (tab[i][1] == "float" && !isFloat(tab[i][0].value)) {
document.getElementById("err_" + tab[i][0].name).innerHTML = "Ceci n'est pas un nombre décimal";
}
else {
document.getElementById("err_" + tab[i][0].name).innerHTML = "";
}
}
}

/**
* Teste si valeur est un entier
* @param {String} valeur
*/
function isInteger(valeur) {
for (var i = 0; i < valeur.length; i++) {
var c = valeur.charCodeAt(i);
if (c < 48 || c > 57) {
return false;
}
}
return true;
}

/**
* Teste si valeur est un float
* @param {String} valeur
*/
function isFloat(valeur) {
var pointPresent = false;
for (var i = 0; i < valeur.length; i++) {
var c = valeur.charCodeAt(i);
if ((c < 48 || c > 57) && c != 46) {
return false;
}
if (c == 46) {
if (pointPresent == true) return false;
pointPresent = true;
}
}
return true;
}

/**
* Ajoute un espace tout les 3 chiffres
* @param {String} valeur

function numberFormat(valeur) {
var pos = (valeur.indexOf(".") == -1) ? valeur.length - 1 : valeur.indexOf(".");
for (var i = pos; i >= 0; i--) {
if (pos != i && ((pos - i) % 3) == 0) {
valeur = valeur.substring(0, i + 1) + " " + valeur.substring(i + 1);
}
}
return valeur;
}
*/

/*
Author: Robert Hashemian
http://www.hashemian.com/

You can use this code in any manner so long as the author's
name, Web address and this disclaimer is kept intact.
********************************************************
Usage Sample:

<script language="JavaScript" src="http://www.hashemian.com/js/NumberFormat.js"></script>
<script language="JavaScript">
document.write(FormatNumberBy3("1234512345.12345", ".", ","));
</script>
*/

// function to format a number with separators. returns formatted number.
// num - the number to be formatted
// decpoint - the decimal point character. if skipped, "." is used
// sep - the separator character. if skipped, "," is used
function numberFormat(num, decpoint, sep) {

var decpoint = '.';
var sep = ' ';
// check for missing parameters and use defaults if so
if (arguments.length == 2) {
sep = " ";
}
if (arguments.length == 1) {
sep = " ";
decpoint = ".";
}
// need a string for operations
num = num.toString();
// separate the whole number and the fraction if possible
a = num.split(decpoint);
x = a[0]; // decimal
y = a[1]; // fraction
z = "";


if (typeof(x) != "undefined") {
// reverse the digits. regexp works from left to right.
for (i=x.length-1;i>=0;i--)
z += x.charAt(i);
// add seperators. but undo the trailing one, if there
z = z.replace(/(\d{3})/g, "$1" + sep);
if (z.slice(-sep.length) == sep)
z = z.slice(0, -sep.length);
x = "";
// reverse again to get back the number
for (i=z.length-1;i>=0;i--)
x += z.charAt(i);
// add the fraction back in, if it was there
if (typeof(y) != "undefined" && y.length > 0)
x += decpoint + y;
}
return x;
}

function calSurface() {
var surface = longueur.value * largeur.value / 10000 * nbPages.value / 2 * tirage.value;
for (var i = 0; i < grammages.length; i++) {
document.getElementById('surface_' + grammages[i]).innerHTML = numberFormat(Math.round(surface).toString());
document.getElementById('surface_f_' + grammages[i]).value = surface;
}
}

function calTonnage() {
for (var i = 0; i < grammages.length; i++) {
var tonnage = document.getElementById('surface_f_' + grammages[i]).value * grammages[i] / 1000000;
document.getElementById('tonnage_' + grammages[i]).innerHTML = numberFormat(Math.round(tonnage).toString());
document.getElementById('tonnage_f_' + grammages[i]).value = tonnage;
}
}

function calPatePapier() {
for (var i = 0; i < grammages.length; i++) {
if (grammages[i] < seuil) {
var indice = 0.65;
}
else {
var indice = 0.75;
}
var pate = document.getElementById('tonnage_f_' + grammages[i]).value * indice;
document.getElementById('pate_' + grammages[i]).innerHTML = numberFormat(Math.round(pate).toString());
document.getElementById('pate_f_' + grammages[i]).value = pate;
}
}

function calBois() {
for (var i = 0; i < grammages.length; i++) {
if (grammages[i] < seuil) {
var indice = 2.22;
}
else {
var indice = 2.22;
}
var bois = document.getElementById('pate_f_' + grammages[i]).value * indice;
document.getElementById('bois_' + grammages[i]).innerHTML = numberFormat(Math.round(bois).toString());
document.getElementById('bois_f_' + grammages[i]).value = bois;
}
}

function calMineraux() {
for (var i = 0; i < grammages.length; i++) {
if (grammages[i] < seuil) {
var indice = 0.5;
}
else {
var indice = 0.475;
}
var mineraux = document.getElementById('tonnage_f_' + grammages[i]).value * indice;
document.getElementById('mineraux_' + grammages[i]).innerHTML = numberFormat(Math.round(mineraux).toString());
document.getElementById('mineraux_f_' + grammages[i]).value = mineraux;
}
}

function calEau() {
for (var i = 0; i < grammages.length; i++) {
if (grammages[i] < seuil) {
var indice = 25;
}
else {
var indice = 25;
}
var eau = document.getElementById('tonnage_f_' + grammages[i]).value * indice;
document.getElementById('eau_' + grammages[i]).innerHTML = numberFormat(Math.round(eau).toString());
document.getElementById('eau_f_' + grammages[i]).value = eau;
}
}

function calVapeur() {
for (var i = 0; i < grammages.length; i++) {
if (grammages[i] < seuil) {
var indice = 2.87;
}
else {
var indice = 3.06;
}
var vapeur = document.getElementById('tonnage_f_' + grammages[i]).value * indice;
document.getElementById('vapeur_' + grammages[i]).innerHTML = numberFormat(Math.round(vapeur).toString());
document.getElementById('vapeur_f_' + grammages[i]).value = vapeur;
}
}

function calVapeur2() {
for (var i = 0; i < grammages.length; i++) {
if (grammages[i] < seuil) {
var indice = 2187;
}
else {
var indice = 2331.72;
}
var vapeur2 = document.getElementById('tonnage_f_' + grammages[i]).value * indice;
document.getElementById('vapeur2_' + grammages[i]).innerHTML = numberFormat(Math.round(vapeur2).toString());
document.getElementById('vapeur2_f_' + grammages[i]).value = vapeur2;
}
}

function calEmission() {
for (var i = 0; i < grammages.length; i++) {
var emission = document.getElementById('vapeur2_f_' + grammages[i]).value * 302 / 1000000;
document.getElementById('emission_' + grammages[i]).innerHTML = numberFormat(parseFloat((Math.round(emission*100)/100)).toString());
document.getElementById('emission_f_' + grammages[i]).value = parseFloat((Math.round(emission*100)/100));
}
}

function calEmission2() {
for (var i = 0; i < grammages.length; i++) {
var emission2 = 79 / 1000000 * document.getElementById('tonnage_f_' + grammages[i]).value * distance.value;
document.getElementById('emission2_' + grammages[i]).innerHTML = numberFormat(parseFloat((Math.round(emission2*100)/100)).toString());
document.getElementById('emission2_f_' + grammages[i]).value = parseFloat((Math.round(emission2*100)/100));
}
}

function calEmissiont() {
for (var i = 0; i < grammages.length; i++) {
var emissiont = parseFloat(document.getElementById('emission_f_' + grammages[i]).value) + parseFloat(document.getElementById('emission2_f_' + grammages[i]).value);
document.getElementById('emissiont_' + grammages[i]).innerHTML = numberFormat(parseFloat((Math.round(emissiont*100)/100)).toString());
document.getElementById('emissiont_f_' + grammages[i]).value = emissiont;
}
}


Thanks
James