// Definition des constantes

/* Gain d energie */
var PhysicalServerAnnualConso = '6207.69';
var VirtualServerAnnualConso = '1116.28';

/* Reduction des couts */
var PhysicalServerCost = '5000';
var VirtualServerCost = '961.54';
var PhysicalServerCostEnergy = '807.02';
var VirtualServerCostEnergy = '145.12';

/* Impact environnemental */
var tree = '20';
var cars = '1.5';
var CO2 = '4.03';

function update_from_slide(){
    /*********************************************************************/
    //var avant : nombre de serveurs physiques avant la virtualisation
    //var virtual : nombre de serveurs virtuels apres virtualisation
    //var apres : nombre de serveurs physiques apres virtualisation
    //var percent : pourcentage de virtualisation
    /*********************************************************************/
    
    //On recupere la valeur du slider
    var percent = document.getElementById('ctl00_ctl00_Content_Content_TextBox1').value;
    
    //On met a jour le pourcentage
    document.getElementById('ctl00_ctl00_Content_Content_virtualised').innerHTML = percent;

    //On met a jour le nombre de serveur apres
    var avant = document.getElementById('ctl00_ctl00_Content_Content_avantText').value;
    if (avant != ''){
        var virtual = Math.round((avant * percent) / 100);
        var apres = avant - virtual;
        if (apres == '0'){
            apres = '1';
        }
        document.getElementById('ctl00_ctl00_Content_Content_apresText').value = apres;
        update_report(avant,apres,virtual);
    }
}

function update_from_avant(){
    //Vérification de la valeur d'entrée
    if (document.getElementById('ctl00_ctl00_Content_Content_avantText').value == "0"){
        document.getElementById('ctl00_ctl00_Content_Content_avantText').value = "1";
    }
    //On recupere la valeur du slider
    var percent = document.getElementById('ctl00_ctl00_Content_Content_TextBox1').value;

    //On met a jour le nombre de serveur apres
    var avant = document.getElementById('ctl00_ctl00_Content_Content_avantText').value;
    if (avant != ""){
        var virtual = Math.round((avant * percent) / 100);
        var apres = avant - virtual;
        if (apres == 0){
            apres = 1;
        }
        document.getElementById('ctl00_ctl00_Content_Content_apresText').value = apres;
        update_report(avant,apres,virtual);
    }
}

function format_number(valeur,decimal_nb,separateur) {
// formate un chiffre avec 'decimal_nb' chiffres après la virgule et un separateur
	var deci=Math.round( Math.pow(10,decimal_nb)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ; 
	var val=Math.floor(Math.abs(valeur));
	if ((decimal_nb==0)||(deci==Math.pow(10,decimal_nb))) {val=Math.floor(Math.abs(valeur)); deci=0;}
	var val_format=val+"";
	var nb=val_format.length;
	for (var i=1;i<4;i++) {
		if (val>=Math.pow(10,(3*i))) {
			val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
		}
	}
	if (decimal_nb>0) {
		var decim=""; 
		for (var j=0;j<(decimal_nb-deci.toString().length);j++) {decim+="0";}
		deci=decim+deci.toString();
		val_format=val_format+","+deci;
	}
	if (parseFloat(valeur)<0) {val_format="-"+val_format;}
	return val_format;
}

function update_report(avant,apres,virtual){

    /***************************************************************************************/
    //MISE A JOUR DES VALEURS DU TABLEAU
    /***************************************************************************************/

    /* Gain d energie */
    //Initialisation des champs
    physical = document.getElementById('ctl00_ctl00_Content_Content_Physical');
    virtualized = document.getElementById('ctl00_ctl00_Content_Content_Virtualized');
    savings = document.getElementById('ctl00_ctl00_Content_Content_Savings');

    //Calculs
    PhysicalResult = Math.round(avant * PhysicalServerAnnualConso * 100) / 100;
    VirtualResult = Math.round(((apres * PhysicalServerAnnualConso) + (virtual * VirtualServerAnnualConso)) * 100) / 100;
    SavingsResult = Math.round((PhysicalResult - VirtualResult) * 100) / 100;

    //Attribution des champs
    physical.innerHTML = format_number(PhysicalResult,'2','.');
    virtualized.innerHTML = format_number(VirtualResult,'2','.');
    savings.innerHTML = format_number(SavingsResult,'2','.');

    /* Reduction des couts */
    //Initialisation des champs
    CoutMaterielAvant = document.getElementById('ctl00_ctl00_Content_Content_CostPhysical');
    CoutMaterielApres = document.getElementById('ctl00_ctl00_Content_Content_CostVirtualized');
    CoutMaterielSavings = document.getElementById('ctl00_ctl00_Content_Content_CostSavings');
    CoutEnergetiqueAvant = document.getElementById('ctl00_ctl00_Content_Content_AnnualPhysical');
    CoutEnergetiqueApres = document.getElementById('ctl00_ctl00_Content_Content_AnnualVirtualized');
    CoutEnergetiqueSavings = document.getElementById('ctl00_ctl00_Content_Content_AnnualSavings');
    TotalSavings = document.getElementById('ctl00_ctl00_Content_Content_TotalSavings');

    //Calculs
    MaterielAvantResult = Math.round(avant * PhysicalServerCost * 100) / 100;
    MaterielApresResult = Math.round(((apres * PhysicalServerCost) + (virtual * VirtualServerCost)) * 100) / 100;
    MaterielSavingsResult = Math.round((MaterielAvantResult - MaterielApresResult) * 100) / 100;

    EnergetiqueAvantResult = Math.round(avant * PhysicalServerCostEnergy * 100) / 100;
    EnergetiqueApresResult = Math.round(((apres * PhysicalServerCostEnergy) + (virtual * VirtualServerCostEnergy)) * 100) / 100;
    EnergetiqueSavingsResult = Math.round((EnergetiqueAvantResult - EnergetiqueApresResult) * 100) / 100;

    TotalSavingsResult = Math.round((MaterielSavingsResult + EnergetiqueSavingsResult) * 100) / 100;

    //Attribution des champs
    CoutMaterielAvant.innerHTML = format_number(MaterielAvantResult,'2','.') + " &euro;";
    CoutMaterielApres.innerHTML = format_number(MaterielApresResult,'2','.') + " &euro;";
    CoutMaterielSavings.innerHTML = format_number(MaterielSavingsResult,'2','.') + " &euro;";

    CoutEnergetiqueAvant.innerHTML = format_number(EnergetiqueAvantResult,'2','.') + " &euro;";
    CoutEnergetiqueApres.innerHTML = format_number(EnergetiqueApresResult,'2','.') + " &euro;";
    CoutEnergetiqueSavings.innerHTML = format_number(EnergetiqueSavingsResult,'2','.') + " &euro;";

    TotalSavings.innerHTML = format_number(TotalSavingsResult,'2','.') + " &euro;";

    /* Impact environnemental */
    //Initialisation des champs
    SavedTrees = document.getElementById('ctl00_ctl00_Content_Content_PlantingTrees');
    CarsOff = document.getElementById('ctl00_ctl00_Content_Content_Cars');
    CO2Emission = document.getElementById('ctl00_ctl00_Content_Content_CO2KG');

    //Calculs
    SavedTreesResult = virtual * tree;
    CarsOffResult = Math.round(virtual * cars);
    CO2EmissionResult = Math.round(virtual * CO2 * 100) / 100;

    //Attribution des champs
    SavedTrees.innerHTML = SavedTreesResult;
    CarsOff.innerHTML = CarsOffResult;
    CO2Emission.innerHTML = format_number(CO2EmissionResult,'2','.');

    /***************************************************************************************/
}