function show_form_error(elem, text){

    id_ext = elem.id;

    if(document.getElementById('form_error_' + id_ext)){
        document.getElementById('form_error_' + id_ext).innerHTML = text;
        $('#form_error_' + id_ext).show();
    } else {
        if(text){
            var div = document.createElement('div');
            div.className = 'show_form_error';
            div.id = 'form_error_' + id_ext;
            div.innerHTML = text;

            div.style.display = 'none';
            elem.parentNode.appendChild(div);

            $('#form_error_' + id_ext).show('normal');
        }
        $(elem).addClass('error');
    }
 }

function hide_form_error(elem){

    id_ext = elem.id;

    $(elem).removeClass('error');
    if(document.getElementById('form_error_' + id_ext)){
        $('#form_error_' + id_ext).hide('normal');
    }
}




function checkNewsletter(form){

    var error = false;
    var hide_error = new Array();

    var anrede_checked = false;
    var anrede = document.getElementsByName('anrede');
    for(var i = 0; i < anrede.length; i++){
        if(anrede[i].checked){
            anrede_checked = true;
            break;
        }
    }

    if(!anrede_checked){
        show_form_error(document.getElementsByName('anrede')[0], 'Bitte wählen Sie eine Anrede aus.');
        error = true;
    } else {
        hide_error[hide_error.length] = document.getElementsByName('anrede')[0];
    }

    if(form.firstname.value == ''){
        show_form_error(form.firstname, 'Bitte geben Sie einen Vornamen an.');
        error = true;
    } else {
        hide_error[hide_error.length] = form.firstname;
    }

    if(form.lastname.value == ''){
        show_form_error(form.lastname, 'Bitte geben Sie einen Nachnamen an.');
        error = true;
    } else {
        hide_error[hide_error.length] = form.lastname;
    }

    if(form.email.value == '' || !form.email.value.match(email_regex)){
        show_form_error(form.email, 'Bitte geben Sie eine gültige E-Mail Adresse an.');
        error = true;
    } else {
        hide_error[hide_error.length] = form.email;
    }

    if(
        form.tag.value == '' || form.monat.value == '' || form.jahr.value == '' ||
        parseInt(form.tag.value) > 31 || parseInt(form.monat.value) > 12 || form.jahr.value.length != 4
    ){
        show_form_error(form.jahr, 'Bitte geben Sie eine gültiges Geburtsdatum an.');
        show_form_error(form.monat);
        show_form_error(form.tag);
        error = true;
    } else {
        hide_error[hide_error.length] = form.jahr;
        hide_error[hide_error.length] = form.monat;
        hide_error[hide_error.length] = form.tag;
    }

    if(form.telefon.value == '' || !form.telefon.value.match(/^[\d+ -]+$/)){
        show_form_error(form.telefon, 'Bitte geben Sie eine gültige Telefonnummer an.');
        error = true;
    } else {
        hide_error[hide_error.length] = form.telefon;
    }


    if(form.street.value == '' || form.street_nr.value == ''){
        show_form_error(form.street_nr, 'Bitte geben Sie Straße und Hausnummer an.');
        show_form_error(form.street);
        error = true;
    } else {
        hide_error[hide_error.length] = form.street;
        hide_error[hide_error.length] = form.street_nr;
    }

    if(form.zip.value == '' || form.city.value == ''){
        show_form_error(form.city, 'Bitte geben Sie Ihre Postleitzahl und Ihren Wohnort an.');
        show_form_error(form.zip);
        error = true;
    } else {
        hide_error[hide_error.length] = form.city;
        hide_error[hide_error.length] = form.zip;
    }


    if(!form.accept_agb.checked){
        show_form_error(document.getElementById('agb_error'), 'Bitte bestätigen Sie das sie die AGB gelesen haben.');
        error = true;
    } else {
        hide_error[hide_error.length] = document.getElementById('agb_error');
    }



    if(error){
        var i;
        for(i = 0; i < hide_error.length; i++){
            hide_form_error(hide_error[i]);
        }
    }

    return !error;

}
