﻿
var httpProtocol = ("https:" == document.location.protocol) ? "https://" : "http://";
var httpProtocolAndHost = httpProtocol + location.host;

function addCommas(nStr) {
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

function formatEuro(num, digits) {
    return formatNumber(num, digits) + ' &euro;';
}
function formatNumber(num, digits) {
    try {
        if (!digits && digits != 0) digits = 2;
        num = parseFloat(num.toString()).toFixed(digits)

        nStr = addCommas(num).replace(/\./, '##');
        nStr = nStr.replace(/,/, '.');
        nStr = nStr.replace(/##/, ',');
        return nStr;
    } catch (e) {
        return num
    }
}
function getClassName(val) { if (val < 0) { return 'fontGrey' } }
function textErsparnisTable(val1, name) {
    var ex = val1.split(';');
    var val2 = val1.replace(/\./g, '');
    val2 = val2.replace(/,/g, '.');

    var ex2 = val2.split(';');
    var I = 0;
    for (I = 0; I < 10; I++) { ex2[I] = parseFloat(ex2[I]); }
    I = 0; var gv = new Array(ex2[I], ex2[I + 1], ex2[I + 2], ex2[I + 3], ex2[I + 4]);
    var gvSum = new Array(ex2[I], ex2[I + 1], ex2[I + 2], ex2[I + 3], ex2[I + 4]);
    for (I = 1; I < 5; I++) { gvSum[I] = gvSum[I] + gvSum[I - 1] }
    I = 5; var tt = new Array(ex2[I], ex2[I + 1], ex2[I + 2], ex2[I + 3], ex2[I + 4])
    var ttSum = new Array(ex2[I], ex2[I + 1], ex2[I + 2], ex2[I + 3], ex2[I + 4])
    for (I = 1; I < 5; I++) { ttSum[I] = ttSum[I] + ttSum[I - 1] }

    var jahr = 0; for (I = 0; I < 5; I++) { if (ttSum[I] - gvSum[I] >= 0 && jahr == 0) { jahr = I + 1; } }
    var summary = ''; if (ttSum[4] < gvSum[4]) { summary = 'Ersparnis nach <br>5 Jahren: <b>' + formatEuro(gvSum[4] - ttSum[4]) + '</b>'; } else { summary = '<b>Keine Ersparnis<br>ab dem ' + jahr + ' Jahr.</b> ' }

    var ret = ''
    ret = '<table class="ersparnisTable" cellspacing="0" cellpadding="4"><tr class="firstLine">'
    ret = ret + '<th style="border-left-width: 0px;border-top-width: 0px">&nbsp;</th><th colspan="2">Gesamtkosten</th><th colspan="2">Ersparnis</th> </tr>'
    ret = ret + '<tr><th style="border-width: 0px">Jahr</th><th>dieser<br>Tarif</th><th>Vergleichs-<br>tarif</th><th>pro Jahr<br></th><th>kummuliert<br></th></tr><tr><td class="left">1</td><td>'
    ret = ret + ex[5] + ' &euro;</td><td>' + ex[0] + ' &euro;</td><td class="' + getClassName(gv[0] - tt[0]) + '">' + formatEuro(gv[0] - tt[0]) + '</td><td class="' + getClassName(gvSum[0] - ttSum[0]) + '">' + formatEuro(gvSum[0] - ttSum[0]) + '</td></tr><tr><td  class="left">2</td><td>'
    ret = ret + ex[6] + ' &euro;</td><td>' + ex[1] + ' &euro;</td><td class="' + getClassName(gv[1] - tt[1]) + '">' + formatEuro(gv[1] - tt[1]) + '</td><td class="' + getClassName(gvSum[1] - ttSum[1]) + '">' + formatEuro(gvSum[1] - ttSum[1]) + '</td></tr><tr><td  class="left">3</td><td>'
    ret = ret + ex[7] + ' &euro;</td><td>' + ex[2] + ' &euro;</td><td class="' + getClassName(gv[2] - tt[2]) + '">' + formatEuro(gv[2] - tt[2]) + '</td><td class="' + getClassName(gvSum[2] - ttSum[2]) + '">' + formatEuro(gvSum[2] - ttSum[2]) + '</td></tr><tr><td  class="left">4</td><td>'
    ret = ret + ex[8] + ' &euro;</td><td>' + ex[3] + ' &euro;</td><td class="' + getClassName(gv[3] - tt[3]) + '">' + formatEuro(gv[3] - tt[3]) + '</td><td class="' + getClassName(gvSum[3] - ttSum[3]) + '">' + formatEuro(gvSum[3] - ttSum[3]) + '</td></tr><tr><td  class="left">5</td><td>'
    ret = ret + ex[9] + ' &euro;</td><td>' + ex[4] + ' &euro;</td><td class="' + getClassName(gv[4] - tt[4]) + '">' + formatEuro(gv[4] - tt[4]) + '</td><td class="' + getClassName(gvSum[4] - ttSum[4]) + '">' + formatEuro(gvSum[4] - ttSum[4]) + '</td></tr><tr><td  class="left"><b>Summe</b></td><td class="nowrap"><b>'
    ret = ret + formatEuro(ttSum[4]) + ' </b></td><td class="nowrap"><b>' + formatEuro(gvSum[4]) + '</b></td><td colspan="2" style="text-align:left;">' + summary + '</td></tr></table><br>'
    if (name && name.length) { ret = ret + '<b>Ihr Vergleichstarif:</b><br> ' + name + '<br><br>' }
    ret = ret + '<b>Berechnung der Ersparnis:</b><br>Die errechnete Ersparnis ist die Differenz der Gesamtkosten des angezeigten Tarifs und des vom Nutzer ausgewählten Vergleichstarifs inkl. aller Boni und Rabatte. Die tatsächliche Ersparnis kann hiervon abweichen, z.B. wenn der Anbieter die Preise nach Ablauf der zugesicherten Preisgarantie ändert.'
    ret = ret + '<br><br><b>Bitte beachten Sie: </b><br>Sofern ein Energieanbieter im ersten Jahr hohe Neukundenrabatte gewährt, ist eine Ersparnis evtl. nur im ersten Jahr gegeben.<br><br>'

    return ret
}


var txtOnlineTarif = 'Dies ist ein Online-Tarif. Der Kundenservice wird komplett online abgewickelt. Hierfür wird eine EMail-Adresse benötigt.'
var txtGrundversorgerICO = 'Dieses Icon gibt an, ob es sich um den Grundversorger im angegeben PLZ-Bereich handelt.';

var infoPaketpreis = new Array('Mindestbetrag:', 'Bei diesen Tarifen kauft der Kunde eine zuvor festgelegte Menge an Strom pro Jahr. Darüber hinaus verbrauchte Kilowattstunden werden gesondert in Rechnung gestellt. Diese Tarife sind i.d.R. dann eine günstigere Alternative, wenn das gekaufte Paket (also die geschätze Jahresverbrauchsmenge) weitestgehend dem tatsächlichen Verbrauch entspricht. Verbraucht der Kunde weniger als im Paket enthalten, ist dennoch der Preis für die überschüssige Menge zu zahlen. Steigt dagegen der Verbrauch über die Paketmenge, ist i.d.R. ein vergleichsweise hoher Arbeitspreis für den Mehrverbrauch zu zahlen.')
var infoVorauskasse = new Array('Vorauskasse:', 'Bei Vorauskasse-Tarifen zahlen Sie Ihre gesamte jährliche Stromrechnung zu Beginn des Vertrages. Oft sind diese Tarife mit Strompaketen verbunden, was den Verwaltungsaufwand für den Versorger reduziert. Daher sind diese Tarife meist sehr günstig.')
var infoZahlungsweise = new Array('Zahlungsweise:', 'Angabe zum Zahlungsrhythmus die anzeigt, wie häufig sie zahlen müssen. (zumeist monatlich bei Standardtarifen, häufig auch jährlich bei Vorauskasse-Tarifen)')
//var infoPreisgarantie = new Array('Preisgarantie:', 'Einen zeitlich befristeten Schutz vor Preissteigerungen bietet die Preisgarantie. Wenn Sie nur Tarife berücksichtigen möchten, bei denen der Stromversorger eine Preisgarantie gewährt, aktivieren Sie diese Option. Die Dauer der Preisgarantie wird in der Ergebnisliste in der Spalte „Details“ angezeigt.')
var infoPreisgarantie = new Array('Preisgarantie:', 'Einen zeitlich befristeten Schutz vor Tariferhöhungen bietet die Preisgarantie. Wenn Sie nur Tarife mit Preisgarantie berücksichtigen möchten, aktivieren Sie diese Option und wählen Sie die gewünschte Dauer der Garantie. <br/><b>Wichtiger Hinweis:</b> Die Energieversorger bieten unterschiedliche Formen der Preisgarantie. Teilweise umfasst die Preisgarantie alle Preisbestandteile inkl. gesetzlicher Abgaben und Steuern, teilweise umfasst die Preisgarantie jedoch nur den Energieanteil. Bei Aktivierung dieser Option werden alle Tarife unabhängig von der Form der Preisgarantie berücksichtigt.')


var txtGrundversorger = 'Dies ist der Grundversorger im angegeben PLZ-Bereich.'
var txtBiotarif = 'Dies ist ein Biogastarif.'
var textErsparnis1Jahr = 'Die errechnete Ersparnis ist die Differenz der Gesamtkosten des angezeigten Tarifs und des vom Nutzer ausgewählten Vergleichstarifs inkl. aller Boni und Rabatte. Die tatsächliche Ersparnis kann hiervon abweichen, z.B. wenn der Anbieter die Preise nach Ablauf der zugesicherten Preisgarantie ändert.<br><br><b>Warum ist die Ersparnis nach 5 Jahren teilweise niedriger als nach 1 oder 2 Jahren?</b><br><br>Dies kann vorkommen, wenn die Gesamtkosten eines<br>Tarifs (B) im 1. Jahr niedriger und ab dem 2. Jahr<br>höher als die des Vergleichstarifs (A) sind.<br>Beispiel:<table class="ersparnisTable" border=0 cellspacing="0" cellpadding="4"><tr class="firstLine"><th style="border-left:0px"></th><th colspan="2">Gesamtkosten       </th><th>Ersparnis   </th><th>kumulierte</th></tr><tr><th style="border-width:0px">Jahr       </th><th>Tarif A  </th><th>Tarif B   </th><th>im Jahr x   </th><th>Ersparnis</th></tr><tr><td style="text-align:center;border-left:0px">1          </td><td>950,-    </td><td>450,-    </td><td> 500,-       </td><td>500,- €</td></tr><tr><td style="text-align:center;border-left:0px">2          </td><td>950,-    </td><td>975,-     </td><td>-25,-       </td><td>475,- €</td></tr><tr><td style="text-align:center;border-left:0px">3          </td><td>950,-    </td><td>975,-     </td><td>-25,-       </td><td>450,- €</td></tr><tr><td style="text-align:center;border-left:0px">4          </td><td>950,-    </td><td>975,-     </td><td>-25,-       </td><td>425,- €</td></tr><tr><td style="text-align:center;border-left:0px">5          </td><td>950,-    </td><td>975,-     </td><td>-25,-       </td><td>400,- €</td></tr><tr><td style="text-align:center;border-left:0px"><b>Summe</b>      </td><td><b>4.750,- </b> </td><td><b>4.350,-</b></td><td></td><td></td></tr></table><br>'
var textErsparnis2Jahr = textErsparnis1Jahr;
var textErsparnis5Jahr = textErsparnis1Jahr;

var txtInfoICO = 'Dieses Icon zeigt Ihnen weitere Informationen zum Tarif an.';
var txtOekoICO = 'Dieses Icon gibt an, ob es sich um einen Biogastarif handelt.'
var txtOnlineICO = 'Dieses Icon zeigt Onlinetarife an, für die eine EMail-Adresse benötigt wird.'


var infoPaketpreis = new Array('Mindestbetrag:', 'Dieser Tarif beinhaltet einen jährlichen Mindestverbrauch. Liegt der tatsächliche jährliche Verbrauch unter dem Mindestverbrauch, so ist der angegebene Mindestbetrag zu zahlen.')
var infoVorauskasse = new Array('Vorauskasse:', 'Bei Vorauskasse-Tarifen zahlen Sie Ihre gesamte jährliche Gasrechnung zu Beginn des Vertrages. Oft sind diese Tarife mit Gaspaketen verbunden, was den Verwaltungsaufwand für den Versorger reduziert. Daher sind diese Tarife meist sehr günstig.')
var infoZahlungsweise = new Array('Zahlungsweise:', 'Angabe zum Zahlungsrhythmus die anzeigt, wie häufig sie zahlen müssen. (zumeist monatlich bei Standardtarifen, häufig auch jährlich bei Vorauskasse-Tarifen)')
//var infoPreisgarantie = new Array('Preisgarantie:', 'Einen zeitlich befristeten Schutz vor Preissteigerungen bietet die Preisgarantie. Wenn Sie nur Tarife berücksichtigen möchten, bei denen der Gasversorger eine Preisgarantie gewährt, aktivieren Sie diese Option. Die Dauer der Preisgarantie wird in der Ergebnisliste in der Spalte „Details“ angezeigt.')
var infoPreisgarantie = new Array('Preisgarantie:', 'Einen zeitlich befristeten Schutz vor Tariferhöhungen bietet die Preisgarantie. Wenn Sie nur Tarife mit Preisgarantie berücksichtigen möchten, aktivieren Sie diese Option und wählen Sie die gewünschte Dauer der Garantie. <br/><b>Wichtiger Hinweis:</b> Die Energieversorger bieten unterschiedliche Formen der Preisgarantie. Teilweise umfasst die Preisgarantie alle Preisbestandteile inkl. gesetzlicher Abgaben und Steuern, teilweise umfasst die Preisgarantie jedoch nur den Energieanteil. Bei Aktivierung dieser Option werden alle Tarife unabhängig von der Form der Preisgarantie berücksichtigt.')

var infoMindestlaufzeit = new Array('Mindestlaufzeit:', 'Innerhalb der Mindestlaufzeit kann der Gastarif nicht gewechselt werden.')
var infoKuendigungsfrist = new Array('Kündigungsfrist:', 'Angabe, mit welchem zeitlichen Vorlauf ein Gastarifvertrag gekündigt werden kann.')
var infoKaution = new Array('Kaution:', 'Bei Tarifen mit Kaution ist bei Lieferbeginn ein Sonderabschlag zu leisten, der i.d.R. nicht verzinst wird. Erst nach Beendigung des Vertragsverhältnisses wird die Kaution erstattet oder verrechnet. Setzen Sie bei dieser Option ein Häkchen, so werden nur Tarife ohne Kaution angezeigt.')


var infoFossile_Prozent = new Array('Fossile Energieträger:', 'Fossile Energie wird aus fossilen Brennstoffen gewonnen, die wie Braunkohle, Steinkohle, Torf, Erdgas und Erdöl in geologischer Vorzeit aus Abbauprodukten von toten Pflanzen und Tieren entstanden sind.')
var infoKWK_Prozent = new Array('Kraft-Wärme-Kopplung:', 'Wird in einer Anlage gleichzeitig Wärme und Gas erzeugt, so spricht man von Kraft-Wärme-Kopplung (KWK). In Kraftwerken, die über Verbrennungshitze und Dampfturbinen Gas erzeugen, wird die Abwärme aufgefangen und entweder zu Heizzwecken in Rohrsystemen den Verbrauchern zugeführt oder direkt als Prozeßdampf in Industriebetrieben genutzt.')
var infoKernkraft_Prozent = new Array('Kernkraft', 'Ein Kernkraftwerk (KKW), auch Atomkraftwerk (AKW), ist ein Wärmekraftwerk zur Gewinnung elektrischer Energie durch kontrollierte Kernspaltung.')
var infoErneuerbare_Prozent = new Array('Kraft-Wärme-Kopplung:', 'Als Erneuerbare Energien, auch regenerative Energien oder Alternativenergien, bezeichnet man nachhaltige Energiequellen. Sie bleiben − nach menschlichen Zeiträumen gemessen − kontinuierlich verfügbar und stehen hiermit im Gegensatz zu fossilen Energieträgern und konventionellen Kernbrennstoffen, deren Vorkommen bei kontinuierlicher Entnahme stetig abnimmt. Folgende Arten von erneuerbaren Energien werden unterschieden: Solarenergie, Erdwärme (Geothermie), Wasserkraft, Biomasse und Windkraft.')
var infoWasserkraft_Prozent = new Array('Wasserkraft:', 'Wasserkraft bezeichnet die Strömungsenergie von fließendem Wasser, welche über geeignete Maschinen in mechanische Energie umgesetzt wird. In früheren Zeiten wurde diese mechanische Energie in Mühlen direkt genutzt, heute überwiegt die weitere Umwandlung zu elektrischer Energie in Wasserkraftwerken. Die Wasserkraft zählt zu den regenerativen Energiequellen.')
var infoWindkraft_Prozent = new Array('Windkraft:', 'Als Erneuerbare Energien, auch regenerative Energien oder Alternativenergien, bezeichnet man nachhaltige Energiequellen. Sie bleiben − nach menschlichen Zeiträumen gemessen − kontinuierlich verfügbar und stehen hiermit im Gegensatz zu fossilen Energieträgern und konventionellen Kernbrennstoffen, deren Vorkommen bei kontinuierlicher Entnahme stetig abnimmt. Folgende Arten von erneuerbaren Energien werden unterschieden: Solarenergie, Erdwärme (Geothermie), Wasserkraft, Biomasse und Windkraft.')
var infoSolarenergie_Prozent = new Array('Solarenergie:', 'Als Sonnenenergie oder Solarenergie bezeichnet man die von der Sonne durch Kernfusion erzeugte Energie, die in Teilen als elektromagnetische Strahlung zur Erde gelangt. Die Solarenergie zählt zu den regenerativen Energiequellen.')
var infoBiomasse_Prozent = new Array('Biomasse:', 'Die Energiegewinnung aus Biomasse erfolgt aus pflanzlichen oder tierischen Produkten oder Rückständen. Dabei kann es sich um Mist, Holz, Stroh, Pflanzen, Klärschlamm oder auch Hausmüll handeln, die bei der Zersetzung Wärme freisetzen, die in Energie umgewandelt wird.')
var infoGeothermie_Prozent = new Array('Erdwärme:', 'Die Geothermie oder Erdwärme ist die im zugänglichen Teil der Erdkruste gespeicherte Wärme. Sie umfasst die in der Erde gespeicherte Energie, soweit sie entzogen und genutzt werden kann, und zählt zu den regenerativen Energien. Sie kann sowohl direkt genutzt werden, etwa zum Heizen und Kühlen im Wärmemarkt (Wärmepumpenheizung), als auch zur Erzeugung von elektrischem Gas oder in einer Kraft-Wärme-Kopplung.')
var infoSonstige_Prozent = new Array('Ökoauszeichnungen:', '')
var infoCO2_Ausstoss = new Array('CO2-Emissionen:', 'CO2 (Kohlenstoffdioxid) ist ein farb- und geruchloses Gas. Es ist mit einer Konzentration von ca. 0,04 % ein natürlicher Bestandteil der Luft. Es entsteht sowohl bei der vollständigen Verbrennung von kohlenstoffhaltigen Substanzen unter ausreichendem Sauerstoff als auch im Organismus von Lebewesen als Kuppelprodukt der Zellatmung. Heute schätzt man, dass 50% des Treibhausgaseffektes durch CO2-Emission verursacht wird. ')
var infoAtommuell = new Array('Radioaktiver Abfall:', 'Unter radioaktiven Abfällen, die umgangssprachlich mit dem politischen Schlagwort Atommüll belegt werden, versteht man alle beim Umgang mit radioaktiven Stoffen in Kerntechnik, Medizin und Industrie anfallenden radioaktiven Stoffe, die nicht mehr oder einstweilen nicht genutzt werden können. Ob eine sichere Entsorgung oder ein sicherer Wiederverwertungszugriff zu gewährleisten ist, hängt von der Art des Abfalls ab.')


var infoErstjahresrabatt = new Array('Einmaliger Bonus:', 'Bei einigen Tarifanbietern erhalten Sie einen einmaligen Erstjahresbonus bzw. Erstjahresrabatt. Durch Aktivierung dieser Option wird dieser ggf. bei der Kostenberechnung berücksichtigt.')

var infoBiogastarife = new Array('Biogastarife:', 'Biogas ist ein brennbares Gas, das durch Vergärung von Biomasse in Biogasanlagen hergestellt und zur Erzeugung von Bioenergie verwendet wird. Biogastarife weisen einen wesentlichen Anteil an Biogas auf.')
var infoVorauskasse = new Array('Vorauskasse:', 'Einige Gasanbieter bieten besonders günstige Gastarife mit „Vorauskasse“ an. Diese werden dadurch ermöglicht, dass der Kunde zur Vertragserfüllung in Vorleistung gehen muss. Das bedeutet, er bezahlt einen festgelegten Teil seines Gasverbrauchs im Voraus für einen zuvor bestimmten Zeitraum (in der Regel 1 Jahr).')

var infoAnmeldung = '<nobr>Klicken Sie hier, um sich für diesen Tarif anzumelden <br />oder um sich den Vertrag unverbindlich herunter-<br/>zuladen.<br /><br />● keine Wechselgebühren<br />● Kündigung übernimmt der neue Versorger<br />● kein Zählerwechsel nötig<br />● garantiert kein Stromausfall während des Wechsels<br /></nobr>'



var _y; var _x; var isIE = document.all ? true : false;


function getxxSplitValue(val, name) {

    var t = val.split('##' + name + '##')

    if (t.length == 2) {
        //   alert(val +'\nt0:'+t[0] +'\nt1:' +t[1])
        return t[1].split('##/' + name + '##')[0]
    }
}
var chkClick = false;
function toggleVids(PIDX) {
    if (chkClick) { chkClick = false; return false }

    var v = document.getElementById('vids_' + PIDX);
    if (v) {
        v.checked = !v.checked;
        return false
    }
    return true
}
function reSizeBG() {

    vergleichsrechnerBG.style.width = '130%';
    vergleichsrechnerBG.style.height = '10000px';
    vergleichsrechnerBG.style.top = '-20px';
    vergleichsrechnerBG.style.left = '-20px';


    var left = parseInt((getWindowWidth() - vergleichsrechnerContent.offsetWidth) / 2) - parseInt(getWindowWidth() * 9.2 / 100);
    if (left < -10) left = -10;

    vergleichsrechner.style.left = left + 'px'
    vergleichsrechner.style.top = getScrollPosVertical() - 30 + 'px'
    vergleichsrechnerContent.style.maxHeight = getWindowHeight() - 60 + 'px';
    vergleichsrechnerContentBox.style.maxWidth = getWindowWidth() - 100 + 'px';
}


function closeVTLayer() {
    document.body.style.overflow = 'auto';
    vergleichsrechnerBG.style.display = 'none';
    vergleichsrechner.style.display = 'none';
}

function initVTLayer() {
    // vergleichsrechnerBG.onclick = closeVTLayer;
    //vergleichsrechner.onclick = closeVTLayer;
    vergleichsrechnerBG.style.display = 'block';
    vergleichsrechner.style.position = 'absolute';
    window.onresize = function () { reSizeBG() }
    reSizeBG();
}

function tarifeVergleichen(ob, obx) {
    var vids = '';
    var vPIDX = ''; try { vPIDX = getSelectedValue(document.targetSlider.vPIDX); } catch (e22) { } if (vPIDX == '') vPIDX = getRequest('vPIDX');

    var v = document.getElementById("rechnerContent")
    var tags = v.getElementsByTagName("input");
    vtCount = 0;
    for (i = 0; i < tags.length; i++) {
        var ele = tags[i];
        if (ele.getAttribute("name") == 'vids' && ele.checked) {
            if (vids.length > 0) vids += ',';
            vids += ele.value;
            vtCount += 1
        }
    }


    if (vtCount > 0) {
        var query1 = query_vt;
        if (obx && ob) query1 = query + '&obx=' + obx + '&ob=' + ob;
        var url = httpProtocolAndHost + rawUrl + '?sm=1&infID=' + infoLayerTexte.length + '&vPIDX=' + vPIDX + '&vids=' + vids + '&' + query1;

        initVTLayer();
        showWaitLayerVT(null,url);
        
    } else {
        alert("Wählen Sie mindestens einen Tarif für den Vergleich.")
    }
}
function showWaitLayerVT(val,url) {
    vergleichsrechner.style.width = '250px'
    if (val) val = '<center>'+ val + '<br><br><img alt="" style=" margin-top: 10px" src="/images/ajax-loader.gif"></center>'
    if (!val) val = document.getElementById('showWaitLayerVT1').innerHTML

    showInfoLayer(document.getElementById("rechnerContent"),val , 150, 300);
    if (navigator.userAgent.indexOf("Firefox") != -1) {
       if (url) loadInfoTexteVT(url, "rechnerContentVT");
    } else {
        if (url) setTimeout('loadInfoTexteVT("' + url + '", "rechnerContentVT");', 12)
    }
    //vergleichsrechnerContent.innerHTML = '<center>Einen Moment bitte...<br> die erforderlichen Daten werden abgerufen.<br><br><img alt="" style="margin-left: 30px; margin-top: 0px" src="/images/ajax-loader.gif"></center>'
    //    vergleichsrechner.style.display = 'block';
    //    vergleichsrechnerContentBox.style.display = 'block';
    //    vergleichsrechner.style.top = y-100 + 'px'//= parseInt(getScrollPosVertical() + ((getWindowHeight()-h/2) / 2))+ 'px';
    //    vergleichsrechner.style.left = x-100 + 'px'//parseInt(getScrollPosHorizontal() + ((getWindowWidth()-w/2) / 2)) + 'px';
}

function loadInfoTexteVT(url, layerID) {

    document.getElementById("vergleichsrechnerContent").innerHTML = getFromUrl(url);
   
    try { _gaq.push(['_trackPageview', url])  } catch (e) {  }
    vergleichsrechner.style.display = 'block';
    document.body.style.overflow = 'hidden';

    if (document.getElementById("vergleichsRechnerTable")) {
        vergleichsrechnerContentBox.style.width = document.getElementById("vergleichsRechnerTable").offsetWidth + 55 + 'px';
    } else {
        vergleichsrechnerContentBox.style.width = document.getElementById("vergleichsrechnerContent").offsetWidth + 85 + 'px';
    }
    reSizeBG();
    hideInfoLayer();


    var t = document.getElementById('vtLayerTexte').innerHTML.split('##INF##');
    for (var i in t) {
        try {
            //IE6 macht probleme deswegen nicht mit getElementsByTagName // Lag an HTML-Fehele im Layertext jetzt bleibts so.
            var iHTML = t[i].split('##/INF##')[0];
            var infID = getxxSplitValue(iHTML, 'INFID');
            var txt = getxxSplitValue(iHTML, 'TXT');
            var values = getxxSplitValue(iHTML, 'VALUES').split(',');
            infoLayerTexte[infID] = new Array(txt, parseInt(values[0]), parseInt(values[1]), parseInt(values[2]), parseInt(values[3]));
        } catch (e) {
        }
    }

    initInfoLayerTexte(layerID);
}
function loadInfoTexte(url, layerID) {
    try { _gaq.push(['_trackPageview', url]) } catch (e) { }
    document.getElementById(layerID).innerHTML = getFromUrl(url);
    vergleichsrechner.style.display = 'none';
    vergleichsrechnerBG.style.display = 'none';
    closeVTLayer();
    hideInfoLayer();

    //    if (document.getElementById("vergleichsRechnerTable")) {
    //        vergleichsrechnerContentBox.style.width = document.getElementById("vergleichsRechnerTable").offsetWidth + 55 + 'px';
    //    } else {
    //        vergleichsrechnerContentBox.style.width = document.getElementById("vergleichsrechnerContent").offsetWidth + 85 + 'px';
    //    }
    //    reSizeBG();


    var t = document.getElementById('vtLayerTexte2').innerHTML.split('##INF##');
    for (var i in t) {
        try {
            //IE6 macht probleme deswegen nicht mit getElementsByTagName // Lag an HTML-Fehele im Layertext jetzt bleibts so.
            var iHTML = t[i].split('##/INF##')[0];
            var infID = getxxSplitValue(iHTML, 'INFID');
            var txt = getxxSplitValue(iHTML, 'TXT');
            var values = getxxSplitValue(iHTML, 'VALUES').split(',');
            infoLayerTexte[infID] = new Array(txt, parseInt(values[0]), parseInt(values[1]), parseInt(values[2]), parseInt(values[3]));
        } catch (e) {
        }
    }
    initInfoLayerTexte(layerID);
}

function initInfoLayerTexte(layerID) {
    var rechnerContent = document.getElementById(layerID);
    var tagNames = new Array('img', 'div', 'span')

    for (var j in tagNames) {
        var eles = rechnerContent.getElementsByTagName(tagNames[j]);
        for (var i in eles) {
            var ele = eles[i]

            var id = getInfId(ele);

            if (id > 0) {
                if (tagNames[j] == 'span' && ele.className.length > 0) { ele.className += ' gestrichelt' } else if (tagNames[j] == 'span') { ele.className = 'gestrichelt' }
                ele.onmouseout = hideInfoLayer;

                ele.onmouseover = function () {
                    // this.style.position = 'relative';
                    this.style.cursor = 'help';

                    var id = getInfId(this);
                    var strg = infoLayerTexte[id][0];
                    var type = infoLayerTexte[id][1];
                    var isEval = infoLayerTexte[id][2];
                    var width = infoLayerTexte[id][3];
                    var moveLeft = infoLayerTexte[id][4];


                    if (type == 1) { if (isEval) { strg = eval(strg) }; a_sil(this, strg, width, moveLeft); }
                    else if (type == 2) { a_silExt(this, eval(strg)); }
                    else if (type == 3) {
                        var arr = strg.split(',');
                        showInfoLayerUmweltArr(this, arr);
                    }
                }
            }
        }
    }
}
function getInfId(ele) {
    if (ele.infID) {
        if (ele.infID) { return ele.infID; }
    } else if (ele.attributes) {
        if (ele.attributes['infID']) { return ele.attributes['infID'].value; }
    }
    return -1;
}
function getAttribute(ele, name) {
    if (ele[name]) {
        if (ele.infID) { return ele.infID; }
    } else if (ele.attributes) {
        if (ele.attributes['infID']) { return ele.attributes['infID'].value; }
    }
    return -1;
}


function getWindowHeight() { if (self.innerHeight) { return self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { return document.documentElement.clientHeight; } else if (document.body) { return document.body.clientHeight; } return 0; }
function getWindowWidth() { var x = 0; if (self.innerHeight) { return self.innerWidth; } else if (document.documentElement && document.documentElement.clientHeight) { return document.documentElement.clientWidth; } else if (document.body) { return document.body.clientWidth; } return 0; }
function getScrollPosVertical() { if (typeof window.pageYOffset != 'undefined') { return window.pageYOffset; } else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') { return document.documentElement.scrollTop; } else if (typeof document.body != 'undefined') { return document.body.scrollTop; } return 0; }
function getScrollPosHorizontal() { if (typeof window.pageYOffset != 'undefined') { return window.pageXOffset; } else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') { return document.documentElement.scrollLeft; } else if (typeof document.body != 'undefined') { return document.body.scrollLeft; } return 0; }


if (document.attachEvent) {
    document.attachEvent('onmousemove', setXY);
} else {
    document.addEventListener('mousemove', setXY, false);
}

function setXY(e) { var scrollPosY; var scrollPosX; if (typeof window.pageYOffset != 'undefined') { scrollPosY = window.pageYOffset; scrollPosX = window.pageXOffset; } else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') { scrollPosY = document.documentElement.scrollTop; scrollPosX = document.documentElement.scrollLeft; } else if (typeof document.body != 'undefined') { scrollPosY = document.body.scrollTop; scrollPosX = document.body.scrollLeft; } if (!isIE) { _x = e.pageX; _y = e.pageY; } else { _x = event.clientX; _y = event.clientY + scrollPosY; } }
var moveLeft = 130

function showInfoLayer(obj, txt, xMoveLeft, xWidth) {
    if (!xWidth || xWidth < 1) xWidth = 310; xWidth += 28;
    if (!xMoveLeft && xMoveLeft != 0) xMoveLeft = 0;
    var box = document.getElementById('mInfoBox');
    var boxContent = document.getElementById('mInfoBoxContent');
    if (txt != '') {
        var xx = _x - xMoveLeft + 8;
        if (xx + xWidth > getWindowWidth()) xx = getWindowWidth() - xWidth - 28;
        if (xx - getScrollPosHorizontal() < 0) xx = 1 + getScrollPosHorizontal();
        box.style.left = xx + 'px';

        box.style.top = _y + 8 + 'px'; box.style.width = xWidth + 'px';
        boxContent.innerHTML = txt;
        box.style.display = 'block';
    }
}
function hideInfoLayer() { var box = document.getElementById('mInfoBox'); var boxContent = document.getElementById('mInfoBoxContent'); box.style.width = '330px'; box.style.display = 'none'; } //
function a_sil(obj, txt, xWidth, xMoveLeft) { if (!xMoveLeft) xMoveLeft = moveLeft; showInfoLayer(obj, txt, xMoveLeft, xWidth); }
//function a_silExt(obj, arr, moveLeftx) { if (!moveLeftx && moveLeftx != 0) moveLeftx = moveLeft; var box = document.getElementById('mInfoBox'); var boxContent = document.getElementById('mInfoBoxContent'); box.style.left = _x + 8 - moveLeftx + 'px'; box.style.top = _y + 8 + 'px'; box.style.display = 'block'; boxContent.innerHTML = '<b>' + arr[0] + '</b><br>' + arr[1]; }
function a_silExt(obj, arr, moveLeftx) { if (!moveLeftx && moveLeftx != 0) moveLeftx = moveLeft; a_sil(obj, '<b>' + arr[0] + '</b><br>' + arr[1], 310, moveLeftx); }


function showInfoLayerUmweltArr(obj, arr) {

    showInfoLayerUmwelt(obj, arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13])
}



function showInfoLayerUmwelt(obj, Fossile_Prozent, KWK_Prozent, Windkraft_Prozent, Solarenergie_Prozent, Kernkraft_Prozent, Wasserkraft_Prozent, Geothermie_Prozent, Biomasse_Prozent, Sonstige_Prozent, Erneuerbare_Prozent, CO2_Ausstoss, Atommuell, mehrCo2VT, mehrAbfallVT) {
    // alert(Fossile_Prozent +' ' + KWK_Prozent+'  - ' + Windkraft_Prozent+'  - ' + Solarenergie_Prozent+'  - ' + Kernkraft_Prozent+'  - ' + Wasserkraft_Prozent+'  - ' + Geothermie_Prozent+'  - ' + Biomasse_Prozent+'  - ' + Sonstige_Prozent+'  - ' + Erneuerbare_Prozent+'  - ' + CO2_Ausstoss+'  - ' + Atommuell)

    var str = '<table>'
    if (Fossile_Prozent != '0') str += '<tr><td align="right">' + formatNumber(Fossile_Prozent, 0) + '%     </td><td>Anteil  Kohle                 </td></tr>'
    if (Kernkraft_Prozent != '0') str += '<tr><td align="right">' + formatNumber(Kernkraft_Prozent, 0) + '%   </td><td>Anteil  Atomkraft             </td></tr>'
    if (Erneuerbare_Prozent != '0') str += '<tr><td align="right">' + formatNumber(Erneuerbare_Prozent, 0) + '% </td><td>Anteil  erneuerbare Energien  </td></tr>'
    if (KWK_Prozent != '0') str += '<tr><td align="right">' + formatNumber(KWK_Prozent, 0) + '%         </td><td>Anteil  Kraft-Wärme-Kopplung  </td></tr>'
    if (Windkraft_Prozent != '0') str += '<tr><td align="right">' + formatNumber(Windkraft_Prozent, 0) + '%   </td><td>Anteil  Windkraft             </td></tr>'
    if (Solarenergie_Prozent != '0') str += '<tr><td align="right">' + formatNumber(Solarenergie_Prozent, 0) + '%</td><td>Anteil  Solarenergie          </td></tr>'
    if (Wasserkraft_Prozent != '0') str += '<tr><td align="right">' + formatNumber(Wasserkraft_Prozent, 0) + '% </td><td>Anteil  Wasserkraft           </td></tr>'
    if (Geothermie_Prozent != '0') str += '<tr><td align="right">' + formatNumber(Geothermie_Prozent, 0) + '%  </td><td>Anteil  Geothermie            </td></tr>'
    if (Biomasse_Prozent != '0') str += '<tr><td align="right">' + formatNumber(Biomasse_Prozent, 0) + '%    </td><td>Anteil  Biomasse              </td></tr>'
    if (Sonstige_Prozent != '0') str += '<tr><td align="right">' + formatNumber(Sonstige_Prozent, 0) + '%    </td><td>Anteil  Sonstige              </td></tr>'
    str += "</table>"
    str += '<br />Es entstehen CO2-Emissionen von ' + CO2_Ausstoss + ' g/kWh  <br />'
    str += 'und ein radioaktiver Abfall von ' + ((Atommuell.replace(',', '.'))) + ' g/kWh <br />'

    var strg1 = '<br>Gegenüber Ihrem Vergleichstarif:<br>'
    if (mehrAbfallVT) { str += strg1 + formatNumber(mehrAbfallVT, 4) + ' g weniger radioaktiver Abfall pro Jahr<br>'; strg1 = '' }
    if (mehrCo2VT) { str += strg1 + formatNumber(mehrCo2VT, 0) + ' kg weniger CO2-Ausstoß pro Jahr<br>'; strg1 = '' }


    a_sil(obj, '<div style="white-space:nowrap">' + str + '</div>', 310, 130)
}


function showInfoLayer2(obj, txt, Headline, moveLeftx) { if (!moveLeftx && moveLeftx != 0) moveLeftx = 0; var box = document.getElementById('mInfoBox'); var boxContent = document.getElementById('mInfoBoxContent'); if (txt != '') { boxContent.innerHTML = '<b>' + Headline + '</b><br>' + txt; box.style.left = _x + 8 + 'px'; box.style.top = _y + 8 + 'px'; box.style.display = 'block'; } }
function showWaitBox() {var obj = document.getElementById('waitLayer'); obj.style.display = 'block'; if (document.getElementById("objBody")) { var newLeft = (document.getElementById("objBody").offsetWidth - 770) / 2 + obj.offsetLeft; obj.style.left = newLeft + 'px'; }}

function resetEvu() {
    var selEvu = document.getElementById("evu")
    if (selEvu) {
        var objSelectPid = document.targetSlider.pidx;
        var l = objSelectPid.options.length;
        for (i = 0; i <= l; i++) {
            objSelectPid.options[0] = null;
        }
        selEvu.selectedIndex = 0;

    }
}
function resetGVU() {
    var selGVU = document.getElementById("GVU")
    if (selGVU) {
        var objSelectPid = document.targetSlider.pidx;
        var l = objSelectPid.options.length;
        for (i = 0; i <= l; i++) {
            objSelectPid.options[0] = null;
        }
        selGVU.selectedIndex = 0;

    }
}

function CheckValue(nameE) {
    switch (nameE) {
        case 'Individuell':
            document.target.KWH.value = '0';
            break;
    }
    switch (nameE) {
        case 'KWH':
            document.target.KWHTag.value = '0';
            break;
    }
}
//-->
//"var sel1=document.getElementsByName('Region');alert(document.getElementsByName('Region').selectedIndex)
function checkKWH(obj) {

    if (isNaN(obj.value)) {
        alert("Bitte geben Sie einen gültigen Wert für den Verbrauch ein.")
        return false;
    }
    var kwhInt = obj.value
    if (kwhInt > 499999) {
        // alert("Bei sehr hohen Stromverbräuchen empfehlen wir neben der \nAuswertung der Rechnerergebnisse auch den direkten Kontakt \nzu den Energieanbietern. \nOft lassen sich so günstigere Verbrauchspreise erzielen.")

    }
}

function selectGVPID() {
    try {
        var pidx = document.getElementById('pidx'); var min = 0; var max = 0; var val = 0; val = KWHTag1.value; min = pidx.options[pidx.selectedIndex].attributes['vMin'].value; max = pidx.options[pidx.selectedIndex].attributes['vMax'].value;
        if ((val - min - 1 < 0 || max - val - 1 < 0)) {
            for (i = 0; i < pidx.options.length; i++) {
                if (pidx.options[i].attributes['vMin']) {
                    min = pidx.options[i].attributes['vMin'].value - 0
                    max = pidx.options[i].attributes['vMax'].value - 0

                    var t = min - val - 1
                    var s = max - val + 1


                    if (t < 0 && s > 0) {
                        pidx.options[i].selected = true;
                        return i
                    }
                }
            }
        }

    } catch (e) {
        // alert('e.Description:' + e.Description)
    }

}

function calcHeizleistung() {
    try {
        var pidx = document.getElementById('pidx')
        var min = 0;
        var max = 0;
        var val = 0;
        val = KWHTag1.value;
        if (pidx.selectedIndex < 0) {
            selectGVPID();
        } else {
            if (pidx.options[pidx.selectedIndex].attributes['vMin']) {
                selectGVPID()
            }
        }
    } catch (e) {

    }
    if (isNaN(KWHTag1.value)) {
        return false;
    } else {
        var tt = KWHTag1.value / 1600;
        objGasLeistung.value = tt.toFixed(1).replace(/\./g, ',');
    }
}
function checkPLZ() {
    var PLZ = document.targetSlider.PLZ;
    var KWHTag1
    if (isKurzeVersion) { KWHTag1 = document.getElementById("KWHTag1"); } else { KWHTag1 = document.getElementById("KWHTag2"); }
    if (isNaN(KWHTag1.value)) {alert("Bitte geben Sie einen gültigen Wert für den Verbrauch ein."); return false;} else {calcHeizleistung()}
    if (Number(PLZ.value)) { } else { alert('Bitte geben Sie eine 5-stellige Postleitzahl an'); PLZ.focus(); return false }
    if (PLZ.value.length != 5) { alert('Bitte geben Sie eine 5-stellige Postleitzahl an'); PLZ.focus(); return false } else { setCityName(); return true }
}



function getCityList() {
    var myPLZ = document.targetSlider.PLZ.value
    if (myPLZ == PLZALT) { return }

    PLZALT = myPLZ
    var objSelectPid = document.targetSlider.PID;

    var l = objSelectPid.options.length;
    for (i = 0; i <= l; i++) {
        objSelectPid.options[0] = null;
    }
    setTimeout("DoPLZCallback('" + httpProtocolAndHost + "/getPIDsByPLZ.aspx?plz2=" + myPLZ + "').responseText.toString();", 1)
    var resp = DoPLZCallback(httpProtocolAndHost + '/getPIDsByPLZ.aspx?plz=' + myPLZ).responseText.toString();

    if (resp.length > 0) {
        var Cit = cityname

        var ss = resp.split(";")
        for (i = 0; i < ss.length - 1; i = i + 2) {

            var objOption = document.createElement("option");
            objOption.text = ss[i];
            objOption.value = ss[i + 1];
            if (Cit == objOption.text) {
                objOption.selected = true;
            }
            if (document.all && !window.opera)
            { objSelectPid.add(objOption); }
            else
            { objSelectPid.add(objOption, null); };
        }

        document.getElementById("CityList").style.display = "block"
        if (!isFirstHit) { alert("Bitte wählen Sie einen Ort.") }
    } else {

        document.getElementById("CityList").style.display = "none"
    }
}

function getPIDxOptionList(obj) {
    var GVUNr = obj[obj.selectedIndex].value
    var objSelectPidx = document.targetSlider.pidx;
    var l = objSelectPidx.options.length;
    for (i = 0; i <= l; i++) {
        objSelectPidx.options[0] = null;
    }

    var resp = getFromUrl(httpProtocolAndHost + '/getPIDsByPLZ.aspx?GVU=' + GVUNr);

    if (resp.length > 0) {
        var ss = resp.split(";")
        var objOption1 = document.createElement("option");
        objOption1.text = 'Bitte wählen';
        objOption1.value = 0;
        objSelectPidx.add(objOption1);
        for (i = 0; i < ss.length - 1; i = i + 2) {

            var objOption = document.createElement("option");
            objOption.text = ss[i];
            objOption.value = ss[i + 1];
            if (document.all && !window.opera)
            { objSelectPidx.add(objOption); }
            else
            { objSelectPidx.add(objOption, null); };
        }
    }
    //  document.getElementById("CityList").style.display="block"   

}

function addSelectOption(selectObj, text, value, isSelected) {
    if (selectObj != null && selectObj.options != null) {
        selectObj.options[selectObj.options.length] =
            new Option(text, value, false, isSelected);
    }
}
function DoPLZCallback(url) {
    var xmlhttp
    // code for Mozilla, etc.
    if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest() }
    // code for IE
    else if (window.ActiveXObject) { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
    
    xmlhttp.open("GET", url, false);
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlhttp.send(null);
    return xmlhttp;
    // return xmlRequest
}
function getFromUrl(url) {
    return DoPLZCallback(url).responseText;
}
function setCityName() {

    var txt = document.getElementById("CityName")
    var sel = document.getElementById("PID")
    if (!sel) {
        sel = myPLZ = document.targetSlider.PID;
    }



    if (sel.options.length > 0)
        txt.value = sel.options[sel.selectedIndex].text

}

function setPreisGarantieSelectbox() {
    if (document.getElementById("chk_preisgarantie").checked)
    { document.getElementById('PreisGarantieMonate').style.display = 'block' }
    else
    { document.getElementById('PreisGarantieMonate').style.display = 'none' }
}



function closeSortLayers() {
    var sortLayers = ['sortSelectorListErsparnis', 'sortSelectorListTarifdetails', 'sortSelectorListKosten']
    for (var i = 0; i < sortLayers.length; i++) {
        var o = document.getElementById(sortLayers[i]);
        if (o) o.style.display = 'none';
    }
}
function openSortLayer(ob1, id, w) {
    closeSortLayers();
    if (!w) w = 4;

    var obj = document.getElementById(id)
    if (obj) {
        ob1.style.position = 'relative'
        obj.style.width = ob1.parentNode.offsetWidth - w + 'px';
        obj.style.top = ob1.offsetTop + 12 + 'px';
        obj.style.left = ob1.offsetLeft - 3 + 'px';
        // obj.style.marginLeft = (w - 8) + 'px';
        obj.style.marginTop = '-12px';
        obj.style.display = 'block'

    }
}
function getRequest(name) {
    var arr = getQueryValueList();
    for (var i in arr) {
        if (arr[i][0] == name.toLowerCase()) {
            return arr[i][1];
        }
    }
    return '';
}

function getQueryValueList() {
    if (location.search == '') return;
    var vs = location.search.slice(1);
    var ps = vs.split("&"); var p, n, v;
    var arr = new Array();
    for (var i = 0; i < ps.length; i++) {
        p = ps[i].split("=");
        n = p[0]; v = p[1];
        n = unescape(n).replace("+", " ").toLowerCase();
        v = unescape(v).replace("+", " ");
        arr[i] = new Array(n, v);
    }
    return arr;
}



function callSort(ob, obx, sm) {
    if (sm == 1) { tarifeVergleichen(ob, obx); return }
    if (sm != 1) { tarifeSortieren(ob, obx); return }
    if (!obx) obx = 1;
    closeSortLayers();
    showWaitBox(); //  document.getElementById('waitLayer').style.display = 'block';
    var t = sortURL + '&ob=' + ob + '&obx=' + obx
    setTimeout("window.location='" + t + "'", 1)
}
function closeSortBox(obj) {
    closeSortLayers();
    obj.parentNode.parentNode.style.display = 'none';
}


//####################################################################  SLIDER 


function slider(a_init, a_tpl) {
    this.f_setValue = f_sliderSetValue;
    this.f_getPos = f_sliderGetPos;

    // register in the global collection 
    if (!window.A_SLIDERS) {
        window.A_SLIDERS = [];
    }
    this.n_id = window.A_SLIDERS.length;
    window.A_SLIDERS[this.n_id] = this;

    // save config parameters in the slider object
    var s_key;
    if (a_tpl) {
        for (s_key in a_tpl) {
            this[s_key] = a_tpl[s_key];
        }
    }
    for (s_key in a_init) {
        this[s_key] = a_init[s_key];
    }

    this.n_pix2value = this.n_pathLength / (this.n_maxValue - this.n_minValue);
    if (this.n_value == null) {
        this.n_value = this.n_minValue;
    }
    // generate the control's HTML
    document.write(
'<div style="width:' + this.n_controlWidth + 'px;height:' + this.n_controlHeight + 'px;border:0;' + this.s_imgControlStyle + ';background-image:url(' + this.s_imgControl + ')" id="sl' + this.n_id + 'base">' +
'<img src="' + this.s_imgSlider + '" width="' + this.n_sliderWidth + '" height="' + this.n_sliderHeight + '" border="0" style="position:relative;left:' + this.n_pathLeft + 'px;top:' + this.n_pathTop + 'px;z-index:' + this.n_zIndex + ';cursor:pointer;visibility:hidden;" name="sl' + this.n_id + 'slider" id="sl' + this.n_id + 'slider" onmousedown="return f_sliderMouseDown(' + this.n_id + ')"/></div>'
);

    this.e_base = get_element('sl' + this.n_id + 'base');
    this.e_slider = get_element('sl' + this.n_id + 'slider');

    // safely hook document/window events
    if (document.onmousemove != f_sliderMouseMove) {
        window.f_savedMouseMove = document.onmousemove;
        document.onmousemove = f_sliderMouseMove;
    }
    if (document.onmouseup != f_sliderMouseUp) {
        window.f_savedMouseUp = document.onmouseup;
        document.onmouseup = f_sliderMouseUp;
    }
    // preset to the value in the input box if available
    var e_input = this.s_form == null
? get_element(this.s_name)
: document.forms[this.s_form]
? document.forms[this.s_form].elements[this.s_name]
: null;
    this.f_setValue(e_input && e_input.value != '' ? e_input.value : null, 1);
    this.e_slider.style.visibility = 'visible';
}

var objImgSlider
function f_sliderSetValue(n_value, b_noInputCheck) {
    if (!this.objImgSlider) { this.objImgSlider = document.getElementById('sl' + this.n_id + 'slider'); }

    if (n_value == null)
        n_value = this.n_value == null ? this.n_minValue : this.n_value;
    if (isNaN(n_value))
        return false;
    // round to closest multiple if step is specified
    if (this.n_step)
        n_value = Math.round((n_value - this.n_minValue) / this.n_step) * this.n_step + this.n_minValue;
    // smooth out the result
    if (n_value % 1)
        n_value = Math.round(n_value * 1e5) / 1e5;

    //if (n_value < this.n_minValue) n_value = this.n_minValue;

    //if (n_value>2410 && n_value<2590){n_value=2500}
    //if (n_value>1410 && n_value<1590){n_value=1500}
    //if (n_value>3210 && n_value<3390){n_value=3300}
    //if (n_value>3810 && n_value<3990){n_value=3900}
    //if (n_value>4310 && n_value<4490){n_value=4400}

    var n_valueNew
    n_valueNew = n_value
    if (n_value > this.n_maxValue) {
        n_valueNew = this.n_maxValue;
        this.objImgSlider.src = this.s_imgSliderRight
    } else if (n_value < this.n_minValue) {
        n_valueNew = this.n_minValue
        this.objImgSlider.src = this.s_imgSliderLeft
    } else {

        this.objImgSlider.src = this.s_imgSlider
    }



    this.n_value = n_value;

    // move the slider
    if (this.b_vertical)
        this.e_slider.style.top = (this.n_pathTop + this.n_pathLength - Math.round((n_value - this.n_minValue) * this.n_pix2value)) + 'px';
    else
        this.e_slider.style.left = (this.n_pathLeft + Math.round((n_valueNew - this.n_minValue) * this.n_pix2value)) + 'px';

    // save new value
    var e_input;
    if (this.s_form == null) {
        e_input = get_element(this.s_name);
        if (!e_input)
            return b_noInputCheck ? null : f_sliderError(this.n_id, "Can not find the input with ID='" + this.s_name + "'.");
    }
    else {
        var e_form = document.forms[this.s_form];
        if (!e_form)
            return b_noInputCheck ? null : f_sliderError(this.n_id, "Can not find the form with NAME='" + this.s_form + "'.");
        e_input = e_form.elements[this.s_name];
        if (!e_input)
            return b_noInputCheck ? null : f_sliderError(this.n_id, "Can not find the input with NAME='" + this.s_name + "'.");
    }
    e_input.value = n_value
    try { calcHeizleistung() } catch (e) { }
}

// get absolute position of the element in the document
function f_sliderGetPos(b_vertical, b_base) {
    var n_pos = 0,
s_coord = (b_vertical ? 'Top' : 'Left');
    var o_elem = o_elem2 = b_base ? this.e_base : this.e_slider;

    while (o_elem) {
        n_pos += o_elem["offset" + s_coord];
        o_elem = o_elem.offsetParent;
    }
    o_elem = o_elem2;

    var n_offset;
    while (o_elem.tagName != "BODY") {
        n_offset = o_elem["scroll" + s_coord];
        if (n_offset)
            n_pos -= o_elem["scroll" + s_coord];
        o_elem = o_elem.parentNode;
    }
    return n_pos;
}

function f_sliderMouseDown(n_id) {
    window.n_activeSliderId = n_id;
    return false;
}

function f_sliderMouseUp(e_event, b_watching) {
    if (window.n_activeSliderId != null) {
        var o_slider = window.A_SLIDERS[window.n_activeSliderId];
        o_slider.f_setValue(o_slider.n_minValue + (o_slider.b_vertical
? (o_slider.n_pathLength - parseInt(o_slider.e_slider.style.top) + o_slider.n_pathTop)
: (parseInt(o_slider.e_slider.style.left) - o_slider.n_pathLeft)) / o_slider.n_pix2value);
        if (b_watching) return;
        window.n_activeSliderId = null;
    }
    if (window.f_savedMouseUp)
        return window.f_savedMouseUp(e_event);
}

function f_sliderMouseMove(e_event) {

    if (!e_event && window.event) e_event = window.event;

    // save mouse coordinates
    if (e_event) {
        window.n_mouseX = e_event.clientX + f_scrollLeft();
        window.n_mouseY = e_event.clientY + f_scrollTop();
    }

    // check if in drag mode
    if (window.n_activeSliderId != null) {
        var o_slider = window.A_SLIDERS[window.n_activeSliderId];

        var n_pxOffset;
        if (o_slider.b_vertical) {
            var n_sliderTop = window.n_mouseY - o_slider.n_sliderHeight / 2 - o_slider.f_getPos(1, 1) - 3;
            // limit the slider movement
            if (n_sliderTop < o_slider.n_pathTop)
                n_sliderTop = o_slider.n_pathTop;
            var n_pxMax = o_slider.n_pathTop + o_slider.n_pathLength;
            if (n_sliderTop > n_pxMax)
                n_sliderTop = n_pxMax;
            o_slider.e_slider.style.top = n_sliderTop + 'px';
            n_pxOffset = o_slider.n_pathLength - n_sliderTop + o_slider.n_pathTop;
        }
        else {
            var n_sliderLeft = window.n_mouseX - o_slider.n_sliderWidth / 2 - o_slider.f_getPos(0, 1) - 3;
            // limit the slider movement
            if (n_sliderLeft < o_slider.n_pathLeft)
                n_sliderLeft = o_slider.n_pathLeft;
            var n_pxMax = o_slider.n_pathLeft + o_slider.n_pathLength;
            if (n_sliderLeft > n_pxMax)
                n_sliderLeft = n_pxMax;
            o_slider.e_slider.style.left = n_sliderLeft + 'px';
            n_pxOffset = n_sliderLeft - o_slider.n_pathLeft;
        }
        if (o_slider.b_watch)
            f_sliderMouseUp(e_event, 1);

        return false;
    }

    if (window.f_savedMouseMove)
        return window.f_savedMouseMove(e_event);
}
// get the scroller positions of the page
function f_scrollLeft() {
    return f_filterResults(
window.pageXOffset ? window.pageXOffset : 0,
document.documentElement ? document.documentElement.scrollLeft : 0,
document.body ? document.body.scrollLeft : 0
);
}
function f_scrollTop() {
    return f_filterResults(
window.pageYOffset ? window.pageYOffset : 0,
document.documentElement ? document.documentElement.scrollTop : 0,
document.body ? document.body.scrollTop : 0
);
}
function f_filterResults(n_win, n_docel, n_body) {
    var n_result = n_win ? n_win : 0;
    if (n_docel && (!n_result || (n_result > n_docel)))
        n_result = n_docel;
    return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

function f_sliderError(n_id, s_message) {
    alert("Slider #" + n_id + " Error:\n" + s_message);
    window.n_activeSliderId = null;
}

get_element = document.all ?
function (s_id) { return document.all[s_id] } :
function (s_id) { return document.getElementById(s_id) };


var A_SLIDERS = []
var A_TPL4h = {
    'b_vertical': false,
    'b_watch': true,
    'n_controlWidth': 374,
    'n_controlHeight': 16,
    'n_sliderWidth': 13,
    'n_sliderHeight': 35,
    'n_pathLeft': 1,
    'n_pathTop': -10,
    'n_pathLength': 359,
    's_imgControlStyle': 'background-position:0 6px;background-repeat:repeat-x; margin-left:30px;',
    's_imgControl': '/images/sliderBack.gif',
    's_imgSlider': '/images/sliderFore.gif',
    's_imgSliderLeft': '/images/sliderForeLeft.gif',
    's_imgSliderRight': '/images/sliderForeRight.gif',
    'n_zIndex': 1
}
var A_INIT4h = {
    's_form': 'targetSlider',
    's_name': 'KWHTag1',
    'n_minValue': 3000,
    'n_maxValue': 35000,
    'n_value': 20000,
    'n_step': 1
}
var A_INIT5h = {
    's_form': 'targetSlider',
    's_name': 'KWHTag2',
    'n_minValue': 3000,
    'n_maxValue': 35000,
    'n_value': 20000,
    'n_step': 1
}
