
/*
    WX-Functions.js : librairie de fonction poue les dashboards.
    FVE - 23/2/2003.

    Liste des fonctions :

    - WXarrow(rate, threshold) : renvoit le code HTML d'une image de tendance.
    - WXmoyperf(values) : calcule la moyenne d'une perf (arrondi).
    - WXmoydispo(values) : calcule la moyenne d'une dispo (arrondi à 2 décimales).
    - WXmoy(values) : calcule la moyenne.
    - WXsum(values) : calcule la somme.
    - WXmin(values) : calcule la valeur minimale.
    - WXmax(values) : calcule la valeur maximale.
    - WXmoyred(values, coef) : calcule la moyenne réduite.
    - WXmoyred2(values, coef1, coef2) : calcule la moyenne en excluant les coef1 meilleures valeurs et les coef2 pires valeurs.
    - WXminred(values, coef) : calcule le min en excluant les coef plus petites valeurs.
    - WXmaxred(values, coef) : calcule le max en excluant les coef plus grandes valeurs.
    - WXconvseuil(value, seuils) : renvoi un indice compris entre 1 et n en fonction d'une valeur et d'un liste de n-1 seuils.

*/

function WXarrow(rate, threshold) {

    if (rate > threshold) 
	return "<img src='images/arrow-up.gif' width=10 height=10>";
    else if (rate < -threshold) 
	return "<img src='images/arrow-down.gif' width=10 height=10>";
    else 
	return "<img src='images/arrow-side.gif' width=10 height=10>";
}

function WXmoyperf(values) {
	return Math.round(WXmoy(values));
}
	
function WXmoydispo(values) {
	return Math.round(WXmoy(values) * 100) / 100;
}
	
function WXmoy(values) {

    var valueArray = values.split(",");
    var total = 0;
    var count = 0;
    for (var i = 0; i < valueArray.length; i++) {
	if (valueArray[i] != "") {
	    total += 1*valueArray[i];
	    count++;
	}
    }
    return total / count;
}

function WXsum(values) {

    var valueArray = values.split(",");
    var total = 0;
    for (var i = 0; i < valueArray.length; i++) {
	if (valueArray[i] != "") {
	    total += 1*valueArray[i];
	}
    }
    return total;
}

function WXmin(values) {

    var valueArray = values.split(",");
    var min = 499999999;
    for (var i = 0; i < valueArray.length; i++) {
	if (valueArray[i] != "") {
	    if (min > 1*valueArray[i]) min = 1*valueArray[i];
	}
    }
    if (min == 499999999) min = 0;
    return min;
}

function WXmax(values) {

    var valueArray = values.split(",");
    var max = 0;
    for (var i = 0; i < valueArray.length; i++) {
	if (valueArray[i] != "") {
	    if (max < 1*valueArray[i]) max = 1*valueArray[i];
	}
    }
    return max;
}

function WXmoyred(values, coef) {

    return WXmoyred2(values, coef, coef);
}

function WXcompareNumbers(a, b) {
   return a - b
}

function WXmoyred2(values, coef1, coef2) {

    var valueArray = values.split(",");
    valueArray.sort(WXcompareNumbers);
    var total = 0;
    var count = 0;
    var len = valueArray.length;
    for (var i = Math.round(coef1*len); i < Math.round(len*(1 - coef2)); i++) {
	if (valueArray[i] != "") {
	    total += 1*valueArray[i];
	    count++;
	}
    }
    return total / count;
}

function WXminred(values, coef) {

    var valueArray = values.split(",");
    valueArray.sort(WXcompareNumbers);
    var min = 0;
    var len = valueArray.length;
    for (var i = Math.round(coef*len); i < valueArray.length; i++) {
	if (valueArray[i] != "") {
	    min = 1*valueArray[i];
	    break;
	}
    }
    return min;
}

function WXmaxred(values, coef) {

    var valueArray = values.split(",");
    valueArray.sort(WXcompareNumbers);
    var max = 0;
    var len = valueArray.length;
    for (var i = Math.round(len*(1 - coef)) - 1; i >= 0; i--) {
	if (valueArray[i] != "") {
	    max = 1*valueArray[i];
	    break;
	}
    }
    return max;
}

function WXconvseuil(value, seuils) {
    var i = 0;
    for (i=0; i < seuils.length; i++) {
	if (value < seuils[i]) break;
    }
    return i + 1;
}


