var immerEinzugsGebiet = {
    '57439': true,
    '57462': true,
    '57489': true,
    '57482': true
};

var anbieter = {
    1: 'LLK',
    2: 'SWA',
    3: 'SWO'
};

var maxcount=5;

var scripting=false;

var plz2strassenAsArray = { };

var strassenliste = [ ];

var elementPLZ;
var elementStrasse;
var elementHausnummer;

var elementKwh;

// form1
var elementName1;
var elementTel1;
var elementAnbieterId1;

var elementMail1;
var elementDatum1;
var elementUhrzeit1;

// form2
var elementName2;
var elementTel2;
var elementAnbieterId2;

var elementMail2;
var elementDatum2;
var elementUhrzeit2;

var ae = "\u00e4";
var oe = "\u00f6";
var ue = "\u00fc";
var sz = "\u00df";

$(document).ready(function(){
    elementPLZ = document.getElementById("plz");
    elementStrasse = document.getElementById("strasse");
    elementHausnummer = document.getElementById("hausnummer");

    // form1
    elementName1 = document.getElementById("form1_int_name");
    elementStrasse1 = document.getElementById("form1_int_strasse");
    elementTel1 = document.getElementById("form1_int_tel");
    elementAnbieterId1 = document.getElementById("form1_anbieter_id");
    elementMail1 = document.getElementById("form1_int_email");
    elementDatum1 = document.getElementById("form1_int_datum");
    elementUhrzeit1 = document.getElementById("form1_int_uhrzeit");

    // form2
    elementName2 = document.getElementById("form2_int_name");
    elementTel2 = document.getElementById("form2_int_tel");
    elementAnbieterId2 = document.getElementById("form2_anbieter_id");
    elementMail2 = document.getElementById("form2_int_email");
    elementDatum2 = document.getElementById("form2_int_datum");
    elementUhrzeit2 = document.getElementById("form2_int_uhrzeit");

    elementKwh = document.getElementById("kwh");

    $("#form1_formular_senden").addClass("submit_disabled");
    $("#form2_formular_senden").addClass("submit_disabled");

    // ueberschreiben der form submit methoden
    $("#tarifwechsel_kontakt_form1").submit(function() {
        var isOK = anfrageCheck('form1', true);
        if (isOK) {
            sendData2Server('form1');
        }
        return false;
    });

    $("#tarifwechsel_kontakt_form2").submit(function() {
        var isOK = anfrageCheck('form2', true);
        if (isOK) {
            sendData2Server('form2');
        }
        return false;
    });

    $("#strassen_div").css( {
        'visibility': 'hidden',
        'display': 'none'
    } );
    $("#hausnummer").css( {
        'visibility': 'hidden'
    } );

    $("#interesse").css( {
        'visibility': 'hidden',
        'display': 'none'
    } );
    $("#kein_anbieter").css( {
        'visibility': 'hidden',
        'display': 'none'
    } );
    $("#falsche_strasse").css( {
        'visibility': 'hidden',
        'display': 'none'
    } );

    $("#form1_div_rueckruf").css( {
        'visibility': 'hidden',
        'display': 'none'
    } );
    $("#form1_div_email").css( {
        'visibility': 'hidden',
        'display': 'none'
    } );

    $("#form2_div_rueckruf").css( {
        'visibility': 'hidden',
        'display': 'none'
    } );
    $("#form2_div_email").css( {
        'visibility': 'hidden',
        'display': 'none'
    } );

    // einige events auf die form elemente
    elementPLZ.onchange=function(){
        pruefePLZ();
    };

    elementPLZ.onblur=function(){
        pruefePLZ();
    };

    elementPLZ.onkeyup=function(e){
        if(!e) {
            e=event;
        }

        switch (e.keyCode) {
            case 13:
            case 16:
            case 17:
            case 18:
                return;
        }
        pruefePLZ();
    };
    elementKwh.onchange=function(){
        pruefeKWH();
    };

    // form1
    var elementKontaktaufnahmeTel1 = document.getElementById("form1_kontaktaufname_tel");
    var elementKontaktaufnahmeMail1 = document.getElementById("form1_kontaktaufname_mail");

    elementName1.onkeyup = pruefeAnfrageForm1;
    elementStrasse1.onkeyup = pruefeAnfrageForm1;
    elementTel1.onkeyup = pruefeAnfrageForm1;
    elementMail1.onkeyup = pruefeAnfrageForm1;
    elementDatum1.onkeyup = pruefeAnfrageForm1;
    elementUhrzeit1.onkeyup = pruefeAnfrageForm1;

    // radio button events fuer form1
    elementKontaktaufnahmeTel1.onselect = showKontaktDivForm1
    elementKontaktaufnahmeMail1.onselect = showKontaktDivForm1
    elementKontaktaufnahmeTel1.onclick = showKontaktDivForm1
    elementKontaktaufnahmeMail1.onclick = showKontaktDivForm1

    // form2
    var elementKontaktaufnahmeTel2 = document.getElementById("form2_kontaktaufname_tel");
    var elementKontaktaufnahmeMail2 = document.getElementById("form2_kontaktaufname_mail");

    elementName2.onkeyup = pruefeAnfrageForm2;
    elementTel2.onkeyup = pruefeAnfrageForm2;
    elementMail2.onkeyup = pruefeAnfrageForm2;
    elementDatum2.onkeyup = pruefeAnfrageForm2;
    elementUhrzeit2.onkeyup = pruefeAnfrageForm2;

    // radio button events fuer form2
    elementKontaktaufnahmeTel2.onselect = showKontaktDivForm2
    elementKontaktaufnahmeMail2.onselect = showKontaktDivForm2
    elementKontaktaufnahmeTel2.onclick = showKontaktDivForm2
    elementKontaktaufnahmeMail2.onclick = showKontaktDivForm2
});

function pruefeAnfrageForm1(e) {
    pruefeAnfrage('form1', e);
}

function pruefeAnfrageForm2(e) {
    pruefeAnfrage('form2', e);
}

function pruefeAnfrage(formname, e) {
    if(!e) {
        e = event;
    }

    $("#" + formname + "_anfrage_hinweis").html("");

    // formular check
    anfrageCheck(formname, false);
}

function anfrageCheck(formname, showHinweis) {
    $("#" + formname + "_anfrage_hinweis").removeClass("anfrage_ok");

    // pruefe name
    var checkElementName = document.getElementById(formname + "_int_name");
    if (checkElementName.value.length == 0) {
        $("#" + formname + "_formular_senden").addClass("submit_disabled");
        if (showHinweis) {
            $("#" + formname + "_anfrage_hinweis").css( {
                'visibility': 'visible',
                'display': 'block'
            } );
            $("#" + formname + "_anfrage_hinweis").html("Bitte geben Sie Ihren Namen ein");
        }
        return false;
    }

    // Überprüfung der Strasse muss nur bei Form1 gemacht werden wenn die
    // PLZ ausshalb des Einzugsgebietes liegt
    if (formname == 'form1') {
        var checkElementStrasse = document.getElementById(formname + "_int_strasse");
        if (checkElementStrasse.value.length == 0) {
            $("#" + formname + "_formular_senden").addClass("submit_disabled");

            if (showHinweis) {
                $("#" + formname + "_anfrage_hinweis").css( {
                    'visibility': 'visible',
                    'display': 'block'
                } );
                $("#" + formname + "_anfrage_hinweis").html("Bitte geben Sie Ihre Strasse ein");
            }

            return false;
        }
    }

    var kontaktaufnameTelElement = document.getElementById(formname + "_kontaktaufname_tel");
    var kontaktaufnameMailElement = document.getElementById(formname + "_kontaktaufname_mail");

    // pruefe kontaktaufnahme
    if (!kontaktaufnameTelElement.checked && !kontaktaufnameMailElement.checked) {
        return false;
    }

    // pruefe rueckruf
    if (kontaktaufnameTelElement.checked) {
        var checkElementTel = document.getElementById(formname + "_int_tel");
        var checkElementDatum = document.getElementById(formname + "_int_datum");
        var checkElementUhrzeit = document.getElementById(formname + "_int_uhrzeit");

        if (checkElementTel.value.length == 0) {
            $("#" + formname + "_formular_senden").addClass("submit_disabled");
            if (showHinweis) {
                $("#" + formname + "_anfrage_hinweis").css( {
                    'visibility': 'visible',
                    'display': 'block'
                } );
                $("#" + formname + "_anfrage_hinweis").html("Bitte geben Sie Ihre Telefonnummer, Datum und Uhrzeit an");
            }
            return false;
        } else {
            if (checkElementDatum.value.length == 0) {
                $("#" + formname + "_formular_senden").addClass("submit_disabled");
                if (showHinweis) {
                    $("#" + formname + "_anfrage_hinweis").css( {
                        'visibility': 'visible',
                        'display': 'block'
                    } );
                    $("#" + formname + "_anfrage_hinweis").html("Wann m&ouml;chten Sie zur&uuml;ckgerufen werden?<br />Bitte geben Sie Datum und Uhrzeit an");
                }
                return false;
            } else {
                if (checkElementUhrzeit.value.length == 0) {
                    $("#" + formname + "_formular_senden").addClass("submit_disabled");
                    if (showHinweis) {
                        $("#" + formname + "_anfrage_hinweis").css( {
                            'visibility': 'visible',
                            'display': 'block'
                        } );
                        $("#" + formname + "_anfrage_hinweis").html("Bitte geben Sie eine Zeit ein wann wir Sie zur&uuml;ckrufen sollen");
                    }
                    return false;
                }
            }
        }
    }

    if (kontaktaufnameMailElement.checked) {
        var checkElementMail = document.getElementById(formname + "_int_email");
        if (checkElementMail.value.length == 0) {
            $("#" + formname + "_formular_senden").addClass("submit_disabled");
            if (showHinweis) {
                $("#" + formname + "_anfrage_hinweis").css( {
                    'visibility': 'visible',
                    'display': 'block'
                } );
                $("#" + formname + "_anfrage_hinweis").html("Bitte geben Sie Ihre Mail Adresse ein");
            }
            return false;
        }
    }

    // all check ok
    $("#" + formname + "_formular_senden").removeClass("submit_disabled");

    return true;
}

// ############### TEXTFELD PRUEF METHODEN ################
function pruefeKWH() {
    schreibeBenutzerNachricht("");

    var kwh = document.getElementById("kwh").value;
    if (kwh.length == 0) {
        return;
    }

    if(!kwh.match(/\d+\b/)) {
        // kwh ist keine zahl
        schreibeBenutzerNachricht("<span class='hinweis'>Hinweis: Kilowatt pro Jahr enth&auml;lt keine Zahl</span>");
        return;
    }
}

function pruefePLZ() {
    schreibeBenutzerNachricht("");

    var plz = myTrim(elementPLZ.value);

    if(!plz.match(/\d+\b/)) {
        // plz ist keine zahl
        schreibeBenutzerNachricht("<span class='hinweis'>Hinweis: Postleitzahl ist keine Zahl</span>");
        return;
    }

    var anbieterArray = sucheAnbieterFuerPLZ(plz);

    if (anbieterArray.length == 0) {
        // keinen anbieter gefunden, deaktivere strassen textfeld
        $("#strassen_div").css( {
            'visibility': 'hidden',
            'display': 'none'
        } );
    } else if (anbieterArray.length == 1) {
        // nur einen anbieter gefunden, deaktivere strassen textfeld
        $("#strassen_div").css( {
            'visibility': 'hidden',
            'display': 'none'
        } );
    } else if (anbieterArray.length > 1) {
        // mehr als einen anbieter gefunden, aktivere strassen textfeld
        $("#strassen_div").css( {
            'visibility': 'visible',
            'display': 'block'
        } );

        strassenliste = getStrassen4PLZAsArray(plz);
        strassenSucheInit();
    }
}

function pruefeStrasse() {
    schreibeBenutzerNachricht("");

    var plz = myTrim(elementPLZ.value);
    var strasse = myTrim(elementStrasse.value);

    // prufe auf str und str.
    if (endsWith(strasse.toLowerCase(), "str")) {
        strasse = strasse.substring(0, strasse.length-3);
        strasse = strasse + "strasse";
    } else if (endsWith(strasse.toLowerCase(), "str.")) {
        strasse = strasse.substring(0, strasse.length-4);
        strasse = strasse + "strasse";
    }

    if (strasse.length > 0) {
        var anbieterArray = sucheAnbieterFuerStrasse(plz, strasse);

        if (anbieterArray.length == 0 ||anbieterArray.length == 1) {
            // keinen anbieter gefunden, deaktivere hausnummer textfeld
            // Hausnummer feld immer aktivieren
            $("#hausnummer").css( {
                'visibility': 'visible'
            } );
        } else if (anbieterArray.length > 1) {
            // mehr als einen anbieter gefunden, aktivere hausnummer textfeld
            $("#hausnummer").css( {
                'visibility': 'visible'
            } );
        }
    }
}

// ############### ANBIETER SUCH METHODEN ######
function sucheAnbieterFuerPLZ(plz) {
    var anbieterArray = [ ];
    if (plz2anbieter[plz]) {
        var anbieter4plz = plz2anbieter[plz];
        for (var id in anbieter4plz) {
            anbieterArray.push(id);
        }
    }

    return anbieterArray;
}

function sucheAnbieterFuerStrasse(plz, strasse) {
    var anbieterArray = [ ];

    strasse = strasse.replace(ae, 'ae');
    strasse = strasse.replace(ue, 'ue');
    strasse = strasse.replace(oe, 'oe');
    strasse = strasse.replace(sz, 'ss');

    // prufe ob letzte token die hausnummer ist
    var tokens = strasse.split(" ");
    if (tokens.length > 1 && tokens[tokens.length-1].match(/\d+\b/)) {
        strasse = "";
        for (var a = 0; a < tokens.length-1; a++) {
            strasse = strasse + tokens[a] + " ";
        }
    }

    strasse = strasse.replace(/ /g, "").toLowerCase();

    var plzStrasseKey = plz + " " + strasse;

    var anbieter4strasse = strasse2anbieter[plzStrasseKey];
    for (var id in anbieter4strasse) {
        anbieterArray.push(id);
    }

    return anbieterArray;
}

function sucheAnbieterFuerHausnummer(plz, strasse, hausnummer) {
    var anbieterArray = [ ];
    hausnummer = Number(hausnummer);

    strasse = strasse.replace(ae, 'ae');
    strasse = strasse.replace(ue, 'ue');
    strasse = strasse.replace(oe, 'oe');
    strasse = strasse.replace(sz, 'ss');

    // prufe ob letzte token die hausnummer ist
    var tokens = strasse.split(" ");
    if (tokens.length > 1 && tokens[tokens.length-1].match(/\d+\b/)) {
        strasse = "";
        for (var a = 0; a < tokens.length-1; a++) {
            strasse = strasse + tokens[a] + " ";
        }
    }

    strasse = strasse.replace(/ /g, "").toLowerCase();

    var plzStrasseKey = plz + " " + strasse;
    var anbieterObj = besondereStrassen[plzStrasseKey];

    for (var id in anbieterObj) {
        var hausnummerArray = anbieterObj[id];
        for (var a = 0; a < hausnummerArray.length; a++) {
            if (hausnummerArray[a] == hausnummer) {
                anbieterArray.push(id);
                break;
            }
        }
    }

    return anbieterArray;
}

// ############### BERECHNUNGS METHODEN ################
function berechne() {
    $("#form1_anfrage_ok").html("");
    $("#form2_anfrage_ok").html("");

    $("#interesse").css( {
        'visibility': 'hidden',
        'display': 'none'
    } );
    $("#kein_anbieter").css( {
        'visibility': 'hidden',
        'display': 'none'
    } );
    $("#falsche_strasse").css( {
        'visibility': 'hidden',
        'display': 'none'
    } );

    elementAnbieterId1.value = "NONE";
    elementAnbieterId2.value = "";

    var keinAnbieter = false;

    $("#ergebnis").html("");

    $("#grund_tarif").html("");
    $("#bigge_maxi").html("");
    $("#bigge_mini").html("");
    $("#bigge_fix").html("");

    $("#bigge_pur").html("");

    var plz = elementPLZ.value;

    if (!(plz.length == 5)) {
        // plz ist nicht 5 stellig
        schreibeBenutzerNachricht("<span class='hinweis'>Hinweis: Postleitzahl ist nicht 5 stellig</span>");
        return;
    }

    var strasse = elementStrasse.value;

    // prufe auf str und str.
    if (endsWith(strasse.toLowerCase(), "str")) {
        strasse = strasse.substring(0, strasse.length-3);
        strasse = strasse + "strasse";
    } else if (endsWith(strasse.toLowerCase(), "str.")) {
        strasse = strasse.substring(0, strasse.length-4);
        strasse = strasse + "strasse";
    }

    var hausnummer = elementHausnummer.value;

    var anbieterArray = sucheAnbieterFuerPLZ(plz);

    if (anbieterArray.length == 0) {
        //schreibeBenutzerNachricht("<span class='hinweis'>kein Anbieter gefunden f&uuml;r die von Ihnen angebene Postleitzahl</span>");
        keinAnbieter = true;
    } else if (anbieterArray.length == 1) {
        berechneTarif(anbieterArray[0]);
    } else if (anbieterArray.length > 1) {
        // mehr als einen anbieter gefunden, aktivere strassen textfeld
        anbieterArray = sucheAnbieterFuerStrasse(plz, strasse);

        if (strasse.length == 0) {
            schreibeBenutzerNachricht("<span class='hinweis'>Bitte geben Sie eine Stra&szlig;e ein</span>");
            $("#strassen_div").css( {
                'visibility': 'visible',
                'display': 'block'
            } );
            return;
        }

        if (anbieterArray.length == 0) {
            //schreibeBenutzerNachricht("<span class='hinweis'>kein Anbieter gefunden f&uuml;r die von Ihnen angegebene Postleitzahl und Stra&szlig;e</span>");
            keinAnbieter = true;
        } else if (anbieterArray.length == 1) {
            berechneTarif(anbieterArray[0]);
        } else if (anbieterArray.length > 1) {
            // mehr als einen anbieter gefunden, aktivere strassen textfeld
            anbieterArray = sucheAnbieterFuerHausnummer(plz, strasse, hausnummer);

            if (hausnummer.length == 0) {
                schreibeBenutzerNachricht("<span class='hinweis'>Bitte geben Sie eine Hausnummer ein</span>");
                $("#hausnummer").css( {
                    'visibility': 'visible'
                } );
                return;
            }

            if (anbieterArray.length == 0) {
                //schreibeBenutzerNachricht("<span class='hinweis'>kein Anbieter gefunden f&uuml;r die von Ihnen angebene PLZ, Stra&szlig;e und Hausnummer</span>");
                keinAnbieter = true;
            } else if (anbieterArray.length == 1) {
                berechneTarif(anbieterArray[0]);
            } else {
                //schreibeBenutzerNachricht("<span class='hinweis'>Ihre Adressen konnte keinen Anbieter zugeordnet werden.</span>");
                keinAnbieter = true;
            }
        }
    }

    var kwh = document.getElementById("kwh").value;
    if(kwh.length == 0 || !kwh.match(/\d+\b/)) {
        // kwh ist leer oder ist keine zahl
        schreibeBenutzerNachricht("<span class='hinweis'>Hinweis: Kilowatt pro Jahr enth&auml;lt keine Zahl</span>");

        // falls ein form sichtbar wurde wird es hier wieder deaktiviert
        $("#interesse").css( {
            'visibility': 'hidden',
            'display': 'none'
        } );
        $("#kein_anbieter").css( {
            'visibility': 'hidden',
            'display': 'none'
        } );
        $("#falsche_strasse").css( {
            'visibility': 'hidden',
            'display': 'none'
        } );

        return;
    }

    if (keinAnbieter) {
        if (immerEinzugsGebiet[plz]) {
            $("#falsche_strasse").css( {
                'visibility': 'visible',
                'display': 'block'
            } );
        } else {
            $("#kein_anbieter").css( {
                'visibility': 'visible',
                'display': 'block'
            } );
        }
    }
}

function schreibeBenutzerNachricht(text) {
    $("#ergebnis").css( {
        'visibility': 'visible'
    } );
    $("#ergebnis").html(text);
}

function getStrassen4PLZAsArray(plz) {
    if (plz2strassenAsArray[plz]) {
        return 	plz2strassenAsArray[plz];
    } else {
        var strassenArray = [ ];
        var strassenObj = plz2Strasse[plz];
        for (var strassen in strassenObj) {
            strassenArray.push(strassen);
        }

        strassenArray.sort();
        plz2strassenAsArray[plz] = strassenArray;

        return strassenArray;
    }
}

function objectSize(obj) {
    var counter = 0;
    for (var a in obj) {
        counter++;
    }
    return counter;
}

// ########## TARIF RECHER METHODEN ###########
function berechneTarif(anbieterId) {
    // zeige kontakt formular
    $("#interesse").css( {
        'display': 'block',
        'visibility': 'visible'
    } );
    elementAnbieterId1.value = "NONE";
    elementAnbieterId2.value = anbieterId;

    var kwh = document.getElementById("kwh").value;

    if(kwh.length == 0 || !kwh.match(/\d+\b/)) {
        return;
    }

    kwh = parseInt(kwh);

    var grundTarif;
    if (anbieterId == 1) {
        grundTarif = rechneGrundTarifLLK(kwh);
    } else if (anbieterId == 2) {
        grundTarif = rechneGrundTarifSWA(kwh);
    } else if (anbieterId == 3) {
        grundTarif = rechneGrundTarifSWO(kwh);
    }

    var biggeMaxi;
    if (anbieterId == 1) {
        biggeMaxi = rechneBiggeMaxiTarifLLK(kwh);
    } else if (anbieterId == 2) {
        biggeMaxi = rechneBiggeMaxiTarifSWA(kwh);
    } else if (anbieterId == 3) {
        biggeMaxi = rechneBiggeMaxiTarifSWO(kwh);
    }

    var biggeMini = rechneBiggeMiniTarif(kwh);

    var biggeFix = rechneBiggeFixTarif(kwh);

    var biggePur = rechneBiggePurTarif(kwh);

    /*
	// wird nicht mehr verwendet
	var tarifZuordnung = { };
	tarifZuordnung[grundTarif] = 'Grund Tarif';
	tarifZuordnung[biggeMaxi] = 'Bigge Maxi';
	tarifZuordnung[biggeMini] = 'Bigge Mini';

	var tarifListe = [ grundTarif, biggeMaxi, biggeMini ];
	tarifListe.sort();
	*/

    var strGrundTarif = formatNumber(grundTarif);
    var strBiggeMaxi = formatNumber(biggeMaxi);
    var strBiggeMini = formatNumber(biggeMini);
    var strBiggeFix = formatNumber(biggeFix);
    var strBiggePur = formatNumber(biggePur);

    $("#grund_tarif").html(strGrundTarif);
    $("#bigge_maxi").html(strBiggeMaxi);
    $("#bigge_mini").html(strBiggeMini);
    $("#bigge_fix").html(strBiggeFix);

    $("#bigge_pur").html(strBiggePur);
}

// ########## TARIFE SWA ###########
function rechneGrundTarifSWA(kwh) {
	var tarif = (kwh * 0.2165) ;
	tarif = (tarif + 107.10);
	return tarif;
}


function rechneBiggeMaxiTarifSWA(kwh) {
	var tarif;
	if (kwh < 3501) {
		tarif = (0.2165 * kwh);
	} else {
		mehrStd = kwh - 3500;
		tarif = (0.2165 * 3500);
		tarif += (0.2065 * mehrStd);
	}
	tarif = tarif + 107.10;
	return tarif;
}


function rechneBiggeMiniTarif(kwh) {
	var tarif;
	if (kwh < 2501) {
		tarif = (0.1856 * kwh);
		tarif = tarif + 142.80;
	} else {
		tarif = (0.2356 * kwh);
	}
	return tarif;
}


function rechneBiggeFixTarif(kwh) {
	var tarif = kwh * 0.2 + 144;
	return tarif;

}

// ########## TARIFE LLK ###########
function rechneGrundTarifLLK(kwh) {
    var tarif = (kwh * 0.2153) ;
    tarif = (tarif + 92.82);
    return tarif;
}

function rechneBiggeMaxiTarifLLK(kwh) {
    var tarif;
    if (kwh < 3501) {
        tarif = (0.2153 * kwh);
    } else {
        mehrStd = kwh - 3500;
        tarif = (0.2153 * 3500);
        tarif += (0.2053 * mehrStd);
    }

    tarif = tarif + 92.82;
    return tarif;
}

// ########## TARIFE SWO ###########
function rechneGrundTarifSWO(kwh) {
    var tarif = (kwh * 0.2140);
    tarif = (tarif + 107.10);
    return tarif;
}

function rechneBiggeMaxiTarifSWO(kwh) {
    var tarif;
    if (kwh < 3501) {
        tarif = (0.2140 * kwh);
    } else {
        mehrStd = kwh - 3500;
        tarif = (0.2140 * 3500);
        tarif += (0.2040 * mehrStd);
    }

    tarif = tarif + 107.10;
    return tarif;
}

function rechneBiggePurTarif(kwh) {
    var tarif = (kwh * 0.005);
    return tarif;
}

// ########## FIND AS YOU TYPE SUCHE #########

var elementSelect;
var elementTextfield;
var newdiv=document.createElement("DIV");
var globalN=0;

//for ie
if (document.attachEvent)
    document.attachEvent("onclick",hideSelect)

// for Mozilla
if (document.captureEvents) {
    document.captureEvents(Event.CLICK);
    document.onclick = hideSelect;
}
function hideSelect() {
    newdiv.style.display="none"
}
function strassenSucheInit() {
    $("#hover_menu").remove();

    var newDivElement = document.createElement("DIV")
    newDivElement.setAttribute("id", "hover_menu");

    if (newDivElement) {
        scripting=true;
        elementSelect=document.createElement("SELECT");
        elementSelect.onkeyup=function(e){
            if(!e) {
                e=event;
            }
            setInputValue(this.selectedIndex,e);

            pruefeStrasse();

            if (e.keyCode == 13) {
                berechne();
            }
        };

        elementSelect.className="select_input";
        elementSelect.setAttribute("id","selectInput");
        elementSelect.style.position="absolute";
        elementSelect.style.top="-9999px";
        elementSelect.style.left="-9999px";
        elementSelect.style.visibility="hidden";
        document.body.appendChild(elementSelect);
        elementTextfield = document.getElementById("strasse");
        elementTextfield.setAttribute("autocomplete","OFF");
        elementTextfield.onkeyup=function(e){
            if (!e) {
                e=event;
            }

            switch (e.keyCode) {
                case 13:
                case 16:
                case 17:
                case 18:
                    return;
            }

            showSelection(this.value,e);

            pruefeStrasse();
        };
        elementTextfield.onchange=function(){
            pruefeStrasse();
        };

        elementTextfield.focus();
        for (i=0;i<strassenliste.length;i++) {
            o=document.createElement("OPTION");
            o.innerHTML=strassenliste[i];
            elementSelect.appendChild(o);
            elementSelect.style.visibility="visible";
        }

        // suche textfeld koordinaten
        pos2=findPos(elementTextfield);
        pos2.push(elementTextfield.offsetHeight);
        pos2.push(elementTextfield.offsetWidth)

        newdiv.style.top=(pos2[1]+pos2[2])+'px';
        newdiv.style.left=pos2[0]+'px';
        newdiv.style.width=pos2[3]+'px';
        newdiv.className="suchBoxRahmen";
        newdiv.style.display="none",
        buildDiv(0);
        document.body.appendChild(newdiv);
    }
}

function buildDiv(n) {
    if (n>elementSelect.childNodes.length) {
        return false;
    }
    for (i=0;i<newdiv.childNodes.length;i++) {
        newdiv.removeChild(newdiv.childNodes[i]);
        i--
    }
    if (n>0) {
        d1=document.createElement("DIV");
        d1.id="lessDiv"
        d1.style.width="100%"
        d1.style.fontSize="0.6em"
        d.style.textAlign="left";
        d1.onmouseover=function() {
            this.className="mouse_over";
        }
        d1.onmouseout=function() {
            this.className="suchBox"
        }
        d1.onclick=function() {
            buildDiv(n-1);
            d1.className="mouse_over"
        }
        d1.innerHTML="......";
        newdiv.appendChild(d1);
    }
    m=(maxcount<elementSelect.childNodes.length)?(maxcount):(elementSelect.childNodes.length)
    for(i=0;i<m;i++) {
        d=document.createElement("DIV")
        d.style.width="100%"
        d.style.fontSize="0.6em"
        d.style.textAlign="left";
        d.onmouseover=function() {
            this.className="mouse_over";
            elementTextfield.value=this.innerHTML
        }
        d.onmouseout=function() {
            this.className='suchBox'
        }
        d.onclick=function() {
            elementTextfield.value=this.innerHTML;

            // on click --> pruefe strasse
            pruefeStrasse();

            newdiv.style.display="none"
        }
        try {
            d.innerHTML=elementSelect.childNodes[i+n].innerHTML;
        }
        catch(err) {}
        newdiv.appendChild(d)
    };
    globalN=n;

// Abfrage wenn anzahl der gefundenen strassen groesser ist als das anzeige div
/*
	if (elementSelect.childNodes.length-n>maxcount) {
		d2=document.createElement("DIV");
		d2.id="moreDiv"
		d2.style.width="100%"
		d2.style.fontSize="0.8em"
		d2.onmouseover=function() {this.className="mouse_over";}
		d2.onmouseout=function() {this.className="suggestBox";}
		d2.onclick=function() {
			buildDiv(n+1);
			d2.className="mouse_over";
		}
		d2.innerHTML="......";
		d2.className="suggestBox";
		newdiv.appendChild(d2)
	 }
	 */
}

function setInputValue(m,ev) {
    if (!scripting) return;
    isLess=(document.getElementById("lessDiv"))?(1):(0)
    if (m>globalN+maxcount+isLess+1) {
        m=globalN+maxcount;
        elementSelect.selectedIndex=m
    }
    if (m<isLess) {
        m=globalN-1;
        elementSelect.selectedIndex=globalN-1
    }
    a=elementSelect.childNodes[m].innerHTML
    elementTextfield.value=a;

    try {
        if (newdiv.childNodes[m-globalN+isLess]) {
            if (newdiv.childNodes[m-globalN+isLess].id=="moreDiv") {
                buildDiv(globalN+1);
                newdiv.childNodes[maxcount].className="mouse_over";
                ;
                return
            }
        }
    } catch (err) {}
    try {
        if (newdiv.childNodes[m-globalN+isLess]) {
            if (newdiv.childNodes[m-globalN+isLess].id=="lessDiv") {
                buildDiv(globalN-1);
                isLess_new=(document.getElementById("lessDiv"))?(1):(0)
                newdiv.childNodes[isLess_new].className="mouse_over";
                return
            }
        }
    } catch (err) {}
    try {
        for (i=0;i<newdiv.childNodes.length;i++)
            newdiv.childNodes[i].className="suggestBox";
        newdiv.childNodes[m-globalN+isLess].className="mouse_over";
    } catch(err) {};
    if ((ev.keyCode!=40) && (ev.keyCode!=38) && (ev.keyCode!=0)) { // if not arrow down, arrow up or mouseclick
        newdiv.style.display="none"
        elementTextfield.focus();
    }
}

function showSelection(t,ev) {
    if (!scripting) return;
    if (ev.keyCode==40) { // by arrow down comes into suggestion select
        if (elementSelect.childNodes.length>0) {
            newdiv.childNodes[0].className="mouse_over";
            elementTextfield.value=elementSelect.childNodes[0].innerHTML;
            try {
                elementSelect.focus();
            } catch(err){}
            elementSelect.childNodes[0].selected=true;
        }
        return
    }
    if (t=="")
        return ;
    t=t.toLowerCase();
    l=t.length;
    for (i=0;i<elementSelect.childNodes.length;i++) {
        elementSelect.removeChild(elementSelect.childNodes[i]);
        i--
    }
    for(i=0;i<strassenliste.length;i++) {
        if (strassenliste[i].substr(0,l).toLowerCase()==t) {
            oOption = document.createElement("OPTION");
            elementSelect.appendChild(oOption)
            oOption.innerHTML = strassenliste[i];
        }
    }
    if (elementSelect.childNodes.length>0)  {
        newdiv.style.display=""
        buildDiv(0)
    }
    else
        newdiv.style.display="none";
    elementTextfield.focus()
}

// schnelle Methode zum ermitteln der Position des Parent Elements
function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft;
        curtop = obj.offsetTop;
        while (obj = obj.offsetParent) {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        }
    }
    return [curleft,curtop];
}


function formatNumber(zahl) {
    var strZahl = String(zahl);
    strZahl = strZahl.replace(".", ",");
    var zahlArray = strZahl.split(",");
    if (zahlArray.length == 2) {
        var vorKomma = zahlArray[0];
        var nachKomma = zahlArray[1];

        if (nachKomma.length > 2) {
            nachKomma = nachKomma.substring(0,2);
        }

        if (nachKomma.length == 1) {
            nachKomma = nachKomma + "0";
        }

        strZahl = vorKomma + "," + nachKomma;
    } else {
        strZahl = strZahl + ",00";
    }

    return strZahl;
}

// #### AJAX REQUEST ####
function sendData2Server(formname) {

    // $("#anfrage_hinweis").html("Bitte f&uuml;llen Sie die Pflichtfelder Name und Telefon aus");

    var anfrageData = {
        'ajax': 'y'
    };
    anfrageData['int_name'] = document.getElementById(formname + "_int_name").value;
    anfrageData['plz'] = elementPLZ.value;
    anfrageData['strasse'] = elementStrasse.value;
    anfrageData['int_tel'] = document.getElementById(formname + "_int_tel").value;
    anfrageData['int_email'] = document.getElementById(formname + "_int_email").value;
    anfrageData['int_datum'] = document.getElementById(formname + "_int_datum").value;
    anfrageData['int_uhrzeit'] = document.getElementById(formname + "_int_uhrzeit").value;
    anfrageData['anbieter_id'] = document.getElementById(formname + "_anbieter_id").value;

    anfrageData['kwh'] = elementKwh.value;

    var url = "/fileadmin/bigge_energie_de/php/tarifrechner-anfrage.php";
    $.post(url, anfrageData,
        function(response){
            sendData2ServerReady(response, formname);
        }, "json"
        );
}

function showKontaktDivForm1() {
    showKontaktDiv('form1');
    anfrageCheck('form1', false);
}

function showKontaktDivForm2() {
    showKontaktDiv('form2');
    anfrageCheck('form2', false);
}

function showKontaktDiv(formname) {
    var kontaktaufnameTelElement = document.getElementById(formname + "_kontaktaufname_tel");
    var kontaktaufnameMailElement = document.getElementById(formname + "_kontaktaufname_mail");

    if (kontaktaufnameTelElement.checked) {
        // rueckruf
        //alert("rueckruf aktiv");
        $("#" + formname + "_div_rueckruf").css ( {
            'visibility': 'visible',
            'display': 'block'
        } );
        $("#" + formname + "_div_email").css ( {
            'visibility': 'hidden',
            'display': 'none'
        } );
    } else if (kontaktaufnameMailElement.checked) {
        // mail
        //alert("mail aktiv");
        $("#" + formname + "_div_rueckruf").css ( {
            'visibility': 'hidden',
            'display': 'none'
        } );
        $("#" + formname + "_div_email").css ( {
            'visibility': 'visible',
            'display': 'block'
        } );
    }
}

function sendData2ServerReady(data, formname) {
    if (data['MAIL'] == "OK") {
        if (formname == "form1") {
            $("#kein_anbieter").css( {
                'visibility': 'hidden',
                'display': 'none'
            } );
            $("#falsche_strasse").css( {
                'visibility': 'hidden',
                'display': 'none'
            } );
        } else {
            $("#interesse").css( {
                'visibility': 'hidden',
                'display': 'none'
            } );
        }

        $("#" + formname + "_anfrage_ok").css( {
            'visibility': 'visible',
            'display': 'block',
            'color': '#990000',
            'font-size': '70%'
        } );
        $("#" + formname + "_anfrage_ok").html("<strong>Vielen Dank f&uuml;r Ihre Anfrage.</strong><br />Wir werden uns umgehend bei Ihnen melden.");
    } else {
        $("#" + formname + "_anfrage_hinweis").css( {
            'visibility': 'visible',
            'display': 'block'
        } );
        $("#" + formname + "_anfrage_hinweis").html("Ihre Anfrage konnte nicht gesendet werden");
    }
}

function emptySubmit() {
    $("#anfrage_hinweis").css( {
        'visibility': 'visible',
        'display': 'block'
    } );
    $("#anfrage_hinweis").html("Ihre Anfrage konnte nicht gesendet werden (Fehler: 409)");
}

function endsWith(search, pattern) {
    return (search.match(pattern + "$") == pattern);
}

function addOptionToElement(selectElement, name, value) {
    var newOption = new Option(name, value, false, true);
    selectElement.options[selectElement.length] = newOption;
}

function myTrim(str) {
    if (str == null)
        return null;

    var startingIndex = 0;
    var endingIndex = str.length - 1;

    while (str.substring(startingIndex, startingIndex + 1) == ' ')
        startingIndex++;

    while (str.substring(endingIndex, endingIndex + 1) == ' ')
        endingIndex--;

    if (endingIndex < startingIndex)
        return '';

    return str.substring(startingIndex, endingIndex + 1);
}


