

  function createXMLHttpRequest() {
    try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
    try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
    try { return new XMLHttpRequest(); } catch(e) {}
    alert("XMLHttpRequest not supported");
    return null;
  }

var xhReq;
var sel;
var elem;
var sbox;

function setAirportList(elem, sbox) {
    tr = elem.parentNode;
  	while (tr.tagName != 'TR') {
  		tr = tr.parentNode;
	}
	nl = tr.getElementsByTagName('SELECT');
	var i=0;
	sel = null;
	while (i < nl.length) {
		if (nl.item(i).name == sbox) sel = nl.item(i);
		i++;
	}
	// delete old airport list
	len = sel.options.length;
	for (i=0; i<len; i++)
		sel.options[sel.options.length-1] = null;
	// get the Airport list using AJAX
	//alert(elem.options[elem.selectedIndex].value);
    xhReq = new createXMLHttpRequest();
    xhReq.open("get", "/admin/airport_list.php?land="+elem.options[elem.selectedIndex].value, true);
    xhReq.onreadystatechange = function fillAirportList() {
        if (xhReq.readyState == 4) {
            //alert(xhReq.status+xhReq.statusText+xhReq.responseText);
            createOptionsFromXML(sel, xhReq.responseXML);
        } //else alert('else'+xhReq.readyState);
    };
    xhReq.send(null);
}

function createOptionsFromXML(sel, xml) {
    var code, name_airport, relevanz, old_rel;
    items = xml.getElementsByTagName('item');
    //alert(items.length);
    sel.options[0] = new Option('Bitte Flughafen wählen', '');
    for (i=0; i < items.length; i++) {
        for (j=0; j < items[i].childNodes.length; j++) {
            switch (items[i].childNodes[j].nodeName) {
                case 'code':
                    code = items[i].childNodes[j].firstChild.nodeValue;
                    break;
                case 'name':
                    name_airport = items[i].childNodes[j].firstChild.nodeValue;
                    break;
                case 'relevanz':
                    relevanz = items[i].childNodes[j].firstChild.nodeValue;
                    break;
            }
        }
        //if (relevanz!=old_rel) sel.options[sel.options.length] = new Option('---', '');
        old_rel = relevanz;
        sel.options[sel.options.length] = new Option(name_airport, code);
    }
}


function doFormCheck() {
    sels = document.calc.getElementsByTagName('SELECT');
    result = true;
    for (i=0; i<sels.length; i++) {
      if (sels[i].name != "buchungsklasse" && sels[i].name != "flugzeugtyp_hf[]" && sels[i].name != "flugzeugtyp_rf") {
       if (sels[i].options[sels[i].selectedIndex].value=='') {
           sels[i].style.fontWeight = "bold";
           sels[i].parentNode.style.backgroundColor = "red";
           sels[i].parentNode.style.fontWeight = "bold";
           result = false;
       } else {
           sels[i].style.fontWeight = "normal";
           sels[i].parentNode.style.backgroundColor = "";
       }
      }
    }
    if (!result) document.getElementById('errorMsg').style.display = 'block';
    else document.getElementById('errorMsg').style.display = 'none';
    return result;
}

var decimalSep = ',';
function formatFloat(nStr) {
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? decimalSep + x[1] : decimalSep + '00';
	while (x2.length < 3) { x2 += '0'; }
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + thousandSep + '$2');
	}
	return x1 + x2;
}

function openWindow(url, w, h, win, x, y) {
	var win_name = win ? win : 'popup';
	if (! x) x = 0;
	if (! y) y = 0;
	if (! w) w = 600;
	if (! h) h = 600;
	var new_win = window.open(url, win_name, 'left='+x+',top='+y+'width='+w+',height='+h+',menubar=no,toolbar=no,location=no,scrollbars=yes,resizable=yes,status=yes');
	if (new_win) {
		new_win.moveTo(x, y);
		new_win.resizeTo(w, h);
		new_win.focus();
	}
}

function calculateEmmission() {
    if (doFormCheck()) {
        xhReq = new createXMLHttpRequest();
        qst = '';
        o = document.calc.elements;
        for (i=0; i<o.length; i++) {
            qst += (qst) ? '&' : '';
            qst += o[i].name+"="+o[i].value;
        }
        //alert(qst);
        xhReq.open("get", "/co2_calc.php?"+qst, true);
        xhReq.onreadystatechange = function showResult() {
            if (xhReq.readyState == 4) {
                //alert(xhReq.status+xhReq.statusText+xhReq.responseText);
                xml = xhReq.responseXML;
                items = xml.getElementsByTagName('item');
                html = '';
                for (i=0; i<items.length; i++) {
                    //alert(items[i].firstChild.nodeValue);
                    switch (i) {
                        case 0:
                                tCO2 = Math.round(items[i].firstChild.nodeValue/10)/100;
                                DB_km = Math.round(items[i].firstChild.nodeValue / 0.047);
                                html += "<span class=\"fatext\">Ihre Emissionsdaten</span><br><br>Die von Ihnen angegebene Flugreise produziert eine <b>CO2-Menge von ca. "+(formatFloat(tCO2))+" t.</b><br><br>";
                            break;
                        case 5:
                                //html += "Zum Vergleich:<br>Dies entspricht dem <b>Volumen von ";
                                //html += items[i].firstChild.nodeValue+" ";
                                //html += "Schwimmbädern</b> (mit 25 m Länge, 10 m Breite und 2 m Tiefe mit je ca. 500 m3 Wasser bei 15° C).<br><br>";
                                //html += "Eine <b>Bahnreise von " + DB_km + " km</b> produziert dieselbe CO2-Menge.<br><br>";
                            break;
                        case 6:
                                html += "Dieselbe Strecke mit der Bahn zurückgelegt würde nur ca. <b>" + formatFloat(Math.round((100*(items[i].firstChild.nodeValue/DB_km))*100)/100) + " %</b> der CO2-Emissionen der Flüge produzieren.<br><br>";
                            break;
                    }
                }
                html += "Durch eine Spende in Höhe von <b>&euro; "+(formatFloat(Math.round(tCO2*22*100)/100))+"</b> für ein entsprechendes <a href=\"projekte/CO2Nepal/?p=uebersicht\">Umweltprojekt</a> der Studiosus Foundation e.V. können Sie die CO2-Emissionen dieser Flüge kompensieren.<br><br>";
                html += "<b>Unser Spendenkonto:</b><br>Studiosus Foundation e.V.<br>Commerzbank München<br>Konto: 152 11 11<br>BLZ: 700 400 41<br>Stichwort \"CO2-Kompensation\"<br><br>";
                document.getElementById('calcResult').innerHTML = html;
                document.getElementById('printResult').innerHTML = "<a href=\"javascript:openWindow('printER.php')\">Drucken</a><br><br>";
                document.getElementById('calcResult').style.display = 'block';
                document.getElementById('printResult').style.display = 'block';
                //createOptionsFromXML(sel, xhReq.responseXML);
            } //else alert('else'+xhReq.readyState);
        };
        xhReq.send(null);
    }
}

