<!--

// temp var for bubble sort
var aVal,aGif,bVal,bGif; 


// bubble sort; toSort[0..n]: kosten; gifA[0..n] appending text; both arrays are sorted in the same order, triggered by costs
function c_arraysort(toSort,gifA){
   var sortiert = false;  //Überprüfung, ob sortiert
   while (!sortiert){
      sortiert = true;
      for (var i=0; i<toSort.length-1; i++)
         if (toSort[i]>toSort[i+1]){
            sortiert = false;
            aVal = toSort[i];
	    aGif = gifA[i];
            toSort[i]=toSort[i+1];
	    gifA[i] = gifA[i+1];
            toSort[i+1] = aVal;
	    gifA[i+1] = aGif;
         }
   }
}  
   

//,"beschriftung/heizoelbrennwert.gif"    
// this function collects the data for the "Brennwertvergleich" diagram
// and displays the diagram by using drawDiagram(...)
/* order of pictures is determined by getFuelTypeCosts() 

 yArray[1] = sum1/8; // Hackgut
        yArray[2] = getPricePerkWh(2); // Heizwert Heizöl Brennwert

        yArray[3] = (getPricePerkWh(6) + getPricePerkWh(7))/2; // Scheitholz
        yArray[4] =  getPricePerkWh(21); // Wärmepumpe
        yArray[5] = getPricePerkWh(8); // Pellets
        yArray[6] = getPricePerkWh(17); // Koks
        yArray[7] = getPricePerkWh(4); // Erdgas Brennwert
        yArray[8] = getPricePerkWh(3); // Erdgas
        yArray[9] = getPricePerkWh(1); // Heizöl
        yArray[10] = getPricePerkWh(19); // Briketts
        yArray[11] = getPricePerkWh(20); // Nah-/Fernwärme
        yArray[12] = getPricePerkWh(5); // Flüssiggas
        yArray[13] = getPricePerkWh(22); // Nachtstrom

array starts with 0=kostenheute;
*/
function drawFuelTypeDiagram() {
        var yArray = getFuelTypeCosts();
	// label images
	var b = new Array("beschriftung/kostenheute.gif","beschriftung/hackgut.gif", "beschriftung/heizoelbrennwert.gif","beschriftung/scheitholz.gif",
        "beschriftung/waermepumpenstrom.gif", "beschriftung/pellets.gif", "beschriftung/koks.gif", "beschriftung/erdgasbrennwert.gif",
        "beschriftung/erdgas.gif", "beschriftung/heizoel.gif", "beschriftung/briketts.gif", "beschriftung/fernwaerme.gif",
        "beschriftung/fluessiggas.gif", "beschriftung/nachtstrom.gif");

	c_arraysort(yArray,b);	
	// display diagram; parameters: title, y-values, labels, unit y-values
	drawDiagram("Heizkosten pro kWh", yArray, b, "&nbsp;Cent/kWh");
}

// displays the diagram "15 Jahre" in a new window
function draw15yearsDiagram() {
	// calculate values for 1 year and multiply with 15
	var yArray = get1YearValues();
	for(var i=0; i < yArray.length; i++) {
		yArray[i] *= 15;
		yArray[i] = Math.round(yArray[i]/100)*100;
	}
	
	// label images
	var b = new Array("beschriftung/kostenheute.gif", "beschriftung/hackgut.gif","beschriftung/heizoelbrennwert.gif", "beschriftung/scheitholz.gif", 
	"beschriftung/waermepumpenstrom.gif", "beschriftung/pellets.gif", "beschriftung/koks.gif", "beschriftung/erdgasbrennwert.gif", 
	"beschriftung/erdgas.gif", "beschriftung/heizoel.gif", "beschriftung/briketts.gif", "beschriftung/fernwaerme.gif", 
	"beschriftung/fluessiggas.gif", "beschriftung/nachtstrom.gif");
	
	// display diagram; parameters: title, y-values, labels, unit y-values
	c_arraysort(yArray,b);
	drawDiagram("Brennstoffkosten in 15 Jahren", yArray, b, "&nbsp;&euro;");
}

// displays the diagram "1 Jahr" in a new window
function draw1yearDiagram() {
	// calulate values for 1 year
	var yArray = get1YearValues();
	
	// label images
	var b = new Array("beschriftung/kostenheute.gif", "beschriftung/hackgut.gif","beschriftung/heizoelbrennwert.gif", "beschriftung/scheitholz.gif", 
	"beschriftung/waermepumpenstrom.gif", "beschriftung/pellets.gif", "beschriftung/koks.gif", "beschriftung/erdgasbrennwert.gif", 
	"beschriftung/erdgas.gif", "beschriftung/heizoel.gif", "beschriftung/briketts.gif", "beschriftung/fernwaerme.gif", 
	"beschriftung/fluessiggas.gif", "beschriftung/nachtstrom.gif");
	
	// display diagram; parameters: title, y-values, labels, unit y-values
	c_arraysort(yArray,b);
	drawDiagram("Brennstoffkosten pro Jahr", yArray, b, "&nbsp;&euro;");
}

// displays the diagram "Menge Jahr" in a new window
function drawAmountYearDiagram() {
	// calulate y-values
	var yArray = getAmountYearValues();
	
	// label images
	var b = new Array("beschriftung/hackgut.gif", "beschriftung/heizoelbrennwert.gif","beschriftung/scheitholz.gif",
	"beschriftung/waermepumpenstrom.gif", "beschriftung/pellets.gif", "beschriftung/koks.gif", "beschriftung/erdgasbrennwert.gif", 
	"beschriftung/erdgas.gif", "beschriftung/heizoel.gif",  "beschriftung/briketts.gif", 
	"beschriftung/fernwaerme.gif","beschriftung/fluessiggas.gif", "beschriftung/nachtstrom.gif");

	c_arraysort(yArray,b);	
	// display diagram; parameters: title, y-values, labels, unit y-values
	drawDiagram("Netto - Platzbedarf pro Jahr", yArray, b, "&nbsp;m<sup>3</sup>");
}

// displays the diagram "Menge Jahr" in a new window
function drawCO2YearDiagram() {
	// calulate values for 1 year
	var yArray = getCO2Values();
	
	// label images
	var b = new Array("beschriftung/hackgut.gif","beschriftung/scheitholz.gif", 
	"beschriftung/waermepumpenstrom.gif", "beschriftung/pellets.gif", "beschriftung/koks.gif", "beschriftung/erdgasbrennwert.gif", 
	"beschriftung/erdgas.gif", "beschriftung/heizoel.gif", "beschriftung/briketts.gif", "beschriftung/fernwaerme.gif", 
	"beschriftung/fluessiggas.gif", "beschriftung/nachtstrom.gif","beschriftung/heizoelbrennwert.gif");
	
	c_arraysort(yArray,b);		
	// display diagram
	drawDiagram("Gesamt CO<sub>2</sub> Emissionen in 15 Jahren <font size=1>(inkl. Transport etc.)</font>", yArray, b, "&nbsp;kg");
}

// returns the costs per year of the fuel types from "kosten heute" to
// "nachtstrom"
function getFuelTypeCosts() {
	var yArray = new Array();
	var str = "";
	
	// calculate current costs per year (berechne Jahreskosten)
	var rows = getById("con1").rows;
/*
	var tableCont=": ";
	for (var jj=1; jj < rows.length; jj++)
		tableCont += rows[jj] + ", "
*/
        //alert (" length of array: " + rows.length);

	var sum1 = 0; // Kosten pro Jahr (gesamt)
	for(var i=1; i < rows.length; i++) {
		var x = getPricePerkWh(i)*getHeatingAmount(i); 
		if(!isNaN(x)) sum1 += x;
	}
	var sum2 = getConsumptionPerYear(); // Jahresenergieverbrauch (gesamt)
	yArray[0] = sum1/sum2; // Kosten heute
	
	// calculate wood chip costs (Hackgutkosten)
	sum1 = 0; // Hackgutkosten
	for(var i=9; i <= 16; i++) {
		var x = getPricePerkWh(i);
		if(!isNaN(x)) sum1 += x;
	}
	yArray[1] = sum1/8; // Hackgut
	yArray[2] = getPricePerkWh(2); // Heizwert Heizöl Brennwert

	yArray[3] = (getPricePerkWh(6) + getPricePerkWh(7))/2; // Scheitholz
	yArray[4] =  getPricePerkWh(21); // Wärmepumpe
	yArray[5] = getPricePerkWh(8); // Pellets
	yArray[6] = getPricePerkWh(17); // Koks
	yArray[7] = getPricePerkWh(4); // Erdgas Brennwert
	yArray[8] = getPricePerkWh(3); // Erdgas
	yArray[9] = getPricePerkWh(1); // Heizöl
	yArray[10] = getPricePerkWh(19); // Briketts
	yArray[11] = getPricePerkWh(20); // Nah-/Fernwärme
	yArray[12] = getPricePerkWh(5); // Flüssiggas
	yArray[13] = getPricePerkWh(22); // Nachtstrom
	
	// multiply all values by 100 because Price/kWh is in Euro 
	// and it should be displayed as Cents/kWh
	for(var i=0; i < yArray.length; i++) {
		yArray[i] *= 100; // because of %
		yArray[i] = Math.round(yArray[i]*10)/10; // round
	}
	
	return yArray;
}

// returns the amount of the fuel types from "Hackgut" to
// "Nachtstrom"
function getFuelTypeAmount() {
	var yArray = new Array();
	
	// calculate wood chip costs (Mittelwert Heizwert Hackgut)
	var sum1 = 0; // Hackgutkosten
	var count = 0; // Anzahl Heizwerte
	for(var i=9; i <= 16; i++) { // from row 9 to (incl.) 16
		var x = getHeatingValue(i);
		if(!isNaN(x)) { // if it is a valid number
			sum1 += x;
			count++;
		}
	}
	yArray[0] = sum1/count; // Mittelwert Heizwert Hackgut
	yArray[1] = getHeatingValue(2); // Heizwert Heizöl Brennwert

	yArray[2] = (getHeatingValue(6) + getHeatingValue(7))/2; // Mittelwert Heizwert Scheitholz
	yArray[3] =  getHeatingValue(21); // Heizwert Wärmepumpe
	yArray[4] = getHeatingValue(8); // Heizwert Pellets
	yArray[5] = getHeatingValue(17); // Heizwert Koks
	yArray[6] = getHeatingValue(4); // Heizwert Erdgas Brennwert
	yArray[7] = getHeatingValue(3); // Heizwert Erdgas
	yArray[8] = getHeatingValue(1); // Heizwert Heizöl
	yArray[9] = getHeatingValue(19); // Heizwert Briketts
	yArray[10] = getHeatingValue(20); // Heizwert Nah-/Fernwärme
	yArray[11] = getHeatingValue(5); // Heizwert Flüssiggas
	yArray[12] = getHeatingValue(22); // Heizwert Nachtstrom
	
	return yArray;
}

// this function returns the (y-)values of the diagram "1 Jahr"
function get1YearValues() {
	var usagePerYear = getConsumptionPerYear(); // Jahresverbrauch
	var effCoeff = getEffUse(); // Wirkungsgradverb.-NEUER Kessel
	var temp = usagePerYear/(effCoeff/100+1); // Jahresenergieverbrauch/(Wirkungsgradverbrauch/100 + 1)
	var costs = getFuelTypeCosts();
	var yArray = new Array();
	
	// calculation
	yArray[0] = Math.round(usagePerYear*costs[0]/100);
	for(var i=1; i < costs.length; i++) {
		yArray[i] = temp*costs[i]/100;
		yArray[i] = Math.round(yArray[i]);
	}
	return yArray;
}

// this function returns the (y-)values of the diagram "Menge Jahr"
function getAmountYearValues() {
	var usagePerYear = getConsumptionPerYear(); // Jahresverbrauch
	var effCoeff = getEffUse(); // Wirkungsgradverb.-NEUER Kessel
	var temp = usagePerYear/(effCoeff/100+1); // Jahresenergieverbrauch/(Wirkungsgradverbrauch/100 + 1)
	var amount = getFuelTypeAmount(); // Mittelwerte Heizwert eines Produkts
	var yArray = new Array(); // will contain the y-values
	
	// calculation
	for(var i=0; i < amount.length; i++) {
		if(heatingValueAmount[i] == 0) { // lookup for "heatingValueAmount" in properties.js
			yArray[i] = 0;
		}
		else {
			yArray[i] = Math.round((temp/amount[i])/heatingValueAmount[i]*10)/10;
		}
	}
	return yArray;
}

function getCO2Values() {
	var yArray = new Array(); // will contain the y-values
	var usagePerYear = getConsumptionPerYear(); // Jahresverbrauch
	var effCoeff = getEffUse(); // contains a textfield; Wirkungsgradverbesserung-NEUER Kessel
	var temp = usagePerYear/(effCoeff/100+1); // Jahresenergieverbrauch/(Wirkungsgradverbesserung/100 + 1)
	//var costs = get1YearValues(); // costs of a fuel type per year
	
	co2perkWh[2] = 0.71/getHeatingValue(21); // 0.71 / Wärmepumpenstrom Heizwert
	co2perkWh[5] = 0.22*getHeatingValue(3)/getHeatingValue(4); // 0.22 * Heizwert Erdgas Brennwert / Erdgas
	
	for(var i=0; i < co2perkWh.length; i++) {
		yArray[i] = Math.round(15 * temp * co2perkWh[i]/100)*100;
	}
	
	return yArray;
}

// this function draws a diagram into a new window.
// the function needs the title, an array of the values and an array
// containing the filenames of the label images
function drawDiagram(title, yArray, label, yUnit) {
	var dLeft = 120; // the left beginning of the diagram
	var dTop = 80; // the top beginning of the diagram
	var barWidth = 40; // width of the diagram bars
	var xmax = yArray.length;
	// find max y-value
	var ymax = 0;
	for(var s=0; s < yArray.length; s++) {
		if(yArray[s] > ymax) ymax = yArray[s];
	}
  
	// create new window
	var newWnd = window.open("","",
		"width=750,height=700,menubar=yes,locationbar=no,resizable=yes,status=no,scrollbars=no");
	// set new window as target for diagram painting
	_DiagramTarget=newWnd;
	// open window for write access
	newWnd.document.open();
    newWnd.document.write("<div style='position:absolute;right:0pt;'><img src='fileadmin/bilder/ETA_LOGO_4Farben.jpg' width='200'></img></div>");
	
	// paint diagram
	var fuelTypeDiagram=new Diagram();
	fuelTypeDiagram.SetFrame(dLeft, 120, dLeft+barWidth*xmax+20, 440);
	fuelTypeDiagram.SetBorder(1, xmax+1, 0, ymax+1); // 1 <= x <= xmax; 0 <= y <= ymax)
	fuelTypeDiagram.SetText(" ","", "<b>" + title + "</b>");
	fuelTypeDiagram.XScale=0;
	fuelTypeDiagram.YScale=yUnit;
	fuelTypeDiagram.Draw("", "#004080", false);
	var i, j, y, y0=fuelTypeDiagram.ScreenY(0);
	for(i=0; i < xmax; i++) {
		y=fuelTypeDiagram.ScreenY(yArray[i]); // scale y-value to diagram size
		j=fuelTypeDiagram.ScreenX(i+1.5); // scale x-value to diagram size
		new Box(j-barWidth/2, y, j+barWidth/2, y0, "#0000FF", filterValue(yArray[i]), "#FFFFFF", 1, "#000000");
		// place label image
		var pos = dLeft + 10 + i*(barWidth+1);
		if(i%2==0) pos += 4;
		newWnd.document.write("<div style='position:absolute;top:460px;left:" + pos + 
            "px;'> <img src='" + label[i] + "'>&nbsp</img></div>");
	}
	newWnd.document.close();
	newWnd.document.bgColor = "#fbb900";
}

// this function filters the text, which will be written into the diagram bars.
// the text can be manipulated for better displaying.
function filterValue(val) {
    var newVal = "";
    
    if(!isNaN(val) && val != 0) {
	newVal = "<span style='font-size:9px'>" + val + "</span>";
    }
    else {
	newVal="";
    }
    return newVal;
}
// -->

