var a = null, p = null, v = null, login = null, world = null, actSelCategoryId = -1, globalAttatchmentCount = 0;
var showLogin = true;
var showedFormOnce = false;

var pwdForgetWorldEmail = "https://reg.webmail.freenet.de/freenet/PasswordForgot";
var pwdForgetWorldCommunity = "https://pos.freenet.de/reminder/pw_reminder.html";
var pwdForgetWorldFallback = "";

var continueLinkTextLoggedInWorldEmail = "Weiter zum Postfach";
var continueLinkUrlLoggedInWorldEmail = "http://webmail.freenet.de";
var continueLinkTextLoggedInWorldCommunity = "Weiter zur Community";
var continueLinkUrlLoggedInWorldCommunity = "http://community.freenet.de";

var continueLinkTextNotLoggedInWorldEmail = "Weiter zu freenet.de";
var continueLinkUrlNotLoggedInWorldEmail = "http://www.freenet.de";
var continueLinkTextNotLoggedInWorldCommunity = "Weiter zur Community";
var continueLinkUrlNotLoggedInWorldCommunity = "http://community.freenet.de";

var continueLinkTextFallback = "";
var continueLinkUrlFallback = "";

var widId = "";
var widgetId = "";

var fromKzu = false;

var postmasterMandant = false;
var postmaster_enMandant = false;

var isKuendigungCombi = false;
var showFormDirectoy = false;

// var isMailKuendigungCombi = false;
// var isDomainKuendigungCombi = false;
// var isOsKuendigungCombi = false;

$(function () {
    $("#sp").selectBox().change(function () {
        changeProduct($(this).val());
    });
    
    // wenn in "sp" ein element ausgewaehlt ist, das > 0 ist und
    // wenn es keine url parameter gibt, dann changeProduct aufrufen!
    if ($("#sp").val() != "0" && urlHash === '') {
        changeProduct($("#sp").val());
    }
    
    $.address.init().change(function (event) {
        a = new Array();
        for (var p in event.parameters) {
            var tmp = new Object();
            tmp.a = "#" + p;
            tmp.b = decodeURIComponent(event.parameters[p].replace(/\+/g, ' '));
            if (p.substring(0, "sc".length) == "sc") {
                tmp.c = p.substring("sc".length);
            }
            a.push(tmp);
        }
        changeSelectBoxes();

        if (fromKzu == true) {
            showedFormOnce = false;
            if (login != null && login.login) {
                loggedInContinueToForm();
            } else {
                continueWithoutLogin();
            }
        }

    });
    $("#login").submit(function (event) {
        event.preventDefault();
        var $form = $(this),
            e = $form.find('input[name="e"]').val(),
            p = $form.find('input[name="p"]').val(),
            url = $form.attr('action');
        var posting = $.post(url, { e:e, p:p });
        posting.done(function (data) {
            if (data.type == null) {
                data.type = "ERROR";
            }
            if (data.preMessage && data.message) {
                $("#login_message").empty().append("<div><span class='" + data.type.toLowerCase() + "'>" + data.preMessage + "</span> " + data.message + "</div>").show();
            } else if (data.preMessage && !data.message) {
                $("#login_message").empty().append("<div><span class='" + data.type.toLowerCase() + "'>" + data.preMessage + "</span> </div>").show();
            } else if (!data.preMessage && data.message) {
                $("#login_message").empty().append("<div>" + data.message + "</div>").show();
            } else {
                $("#login_message").empty().hide();
            }
            if (data.sid) {
                login = data;
                login.login = true;
                login.hide = true;
                $("#isLoggedIn").attr("value","true");
                fillInCustomerData();
                
                $("#upload").attr("data-url", "form/fileupload/" + session);

                showedFormOnce = false;
                if (data.message) {
                    $("#login_message").append('<div><a href="javascript:showLoginOrForm();">Weiter</span></div>');
                    $("#login_input").hide();
                } else {
                    showLoginOrForm();
                }
            }
            $("#div_loggedin_continue_to_form").hide();
            setTimeout(function(){ resize(); }, 50);
            // resize();
        });
    });

    $("#kontaktformular").submit(function (event) {
        event.preventDefault();
        
        ignoreMsiePlaceholderHack();
        
        var $form = $(this), url = $form.attr('action'), ok = true;
        $.each(p, function (key, val) {
            var inputEle = $("#"+val.a);
            if (inputEle) {
                if (val.type == "CHECKBOX") {
                    var inputEleInfo = $("#"+val.a+"_info");
                    if (!inputEle.prop('checked') && (login == null || (login.login && val.b) || (!login.login && val.c))) {
                        ok = false;
                        inputEleInfo.addClass("error");
                        /*$("#error_" + val.a).empty().append("Bitte ausf&uuml;llen!");*/
                        $("#empty_" + val.a).show();
                    } else {
                        inputEleInfo.removeClass("error");
                        /*$("#error_" + val.a).empty();*/
                        $("#empty_" + val.a).hide();
                    }
                } else if (val.type != "INFOTEXT") {
                    if ((!$("#" + val.a).val() || $("#" + val.a).val().length <= 0) && (login == null || (login.login && val.b) || (!login.login && val.c))) {
                        ok = false;
                        $("#" + val.a).addClass("error");
                        /*$("#error_" + val.a).empty().append("Bitte ausf&uuml;llen!");*/
                        $("#empty_" + val.a).show();
                    } else {
                        $("#" + val.a).removeClass("error");
                        /*$("#error_" + val.a).empty();*/
                        $("#empty_" + val.a).hide();
                    }
                }
            }
        });
        $.each(v, function (key, val) {
            if ($("#" + val.n) && $("#" + val.n).val() && $("#" + val.n).val().length > 0) {
                if (val.v == "PHONE") {
                    var stripped = $("#" + val.n).val().replace(/[\(\)\.\-\ ]/g, '');
                    if (isNaN(parseInt(stripped))) {
                        ok = false;
                        $("#" + val.n).addClass("error");
                        // $("#error_" + val.n).empty().append("Bitte trage eine g&uuml;ltige Telefonnummer ein!");
                    } else {
                        $("#" + val.n).removeClass("error");
                        $("#error_" + val.n).empty();
                    }
                } else if (val.v == "EMAIL") {
                    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
                    if (!re.test($("#" + val.n).val())) {
                        ok = false;
                        $("#" + val.n).addClass("error");
                        // $("#error_" + val.n).empty().append("Bitte trage eine g&uuml;ltige E-Mail Adresse ein!");
                    } else {
                        $("#" + val.n).removeClass("error");
                        $("#error_" + val.n).empty();
                    }
                } else if (val.v == "DATE") {
                  var dateReg = /^\d{2}([./-])\d{2}\1\d{4}$/;
                  if (!dateReg.test($("#" + val.n).val())) {
                    ok = false;
                    $("#" + val.n).addClass("error");
                    // $("#error_" + val.n).empty().append("Bitte trage ein g&uuml;ltiges Geburtsdatum ein.");
                  } else {
                    $("#" + val.n).removeClass("error");
                    $("#error_" + val.n).empty();
                  }
                }
            }
        });
        if (ok) {
            disableEnableFormFields(false);
            disableSendButton(true);
            $.post(url, $form.serialize(), function (data) {
                disableEnableFormFields(true);
                disableSendButton(false);
                msiePlaceholderHack();
                
                $(".error_message").empty();
                if (data.errorList) {
                    $.each(data.errorList, function (key, val) {
                        $("#error_" + val.name).empty().append(val.errorMessage);
                    });
                } else if (data.errorMessage) {
                    $("#errorDialog").html(data.errorMessage).dialog("open");
                } else if (data.successMessage) {
                    $("#main").hide();
                    $("#dynContent").hide();
                    $("#category").hide();
                    $("#kontaktformular").hide();
                    $("#div_loggedin_continue_to_form").hide();
                    if (data.contactMail) {
                        $("#contactMailMessage").show();
                        $("#smContactMail").empty().append(data.contactMail);
                    } else {
                        $("#contactMailMessage").hide();
                    }
                    var continueText = continueLinkTextFallback;
                    var continueUrl = continueLinkUrlFallback;
                    if (login) {
                        if (login.login) {
                            // eingeloggt:
                            if (world == 1) {
                                continueText = continueLinkTextLoggedInWorldCommunity;
                                continueUrl = continueLinkUrlLoggedInWorldCommunity;
                            } else if (world == 2) {
                                continueText = continueLinkTextLoggedInWorldEmail;
                                continueUrl = continueLinkUrlLoggedInWorldEmail;
                            }
                        } else {
                            // nicht eingeloggt.
                            if (world == 1) {
                                continueText = continueLinkTextNotLoggedInWorldCommunity;
                                continueUrl = continueLinkUrlNotLoggedInWorldCommunity;
                            } else if (world == 2) {
                                continueText = continueLinkTextNotLoggedInWorldEmail;
                                continueUrl = continueLinkUrlNotLoggedInWorldEmail;
                            }
                        }
                    }
                    $("#continueLinkText").html(continueText);                    
                    $(".continueLinkUrl").attr("href", continueUrl);
                    $("#currentContext").empty().append(current_context);
                    $("#successMessage").show();
                }
                resize();
            });
        } else {
            msiePlaceholderHack();
            resize();
        }
    });

    $("#dialog").dialog({
        modal:true,
        autoOpen:false,
        buttons:{
            "login":{
                "text":'zum Login',
                "class":'login',
                "click":function () {
                    $(this).dialog("close");
                }
            }, "ok":{
                "text":'Ok',
                "class":'login',
                "click":function () {
                    continueWithoutLogin();
                    $(this).dialog("close");
                }
            }
        }
    });
    $("#withoutLoginDialog").dialog({
        modal:true,
        autoOpen:false,
        width:600,
        open: function(event, ui) {
            $(".ui-dialog-titlebar").hide();
            $('.ui-dialog-buttonpane').css("border", "0px solid black");
        },
        buttons:{
            "login":{
                // "text":'zum Login',
                "class":"text_btn_dummy_zum_login",
                "click":function () {
                    $(this).dialog("close");
                }
            }, "ok":{
                "class":"text_btn_dummy_ok",
                "click":function () {
                    continueWithoutLogin();
                    $(this).dialog("close");
                }
            }
        }
    });
    $("#errorDialog").dialog({
        modal:true,
        autoOpen:false,
        width:600,
        open: function(event, ui) {
            $(".ui-dialog-titlebar").hide();
            $('.ui-dialog-buttonpane').css("border", "0px solid black");
        },
        buttons:{
            "ok":{
                //"text":'Ok',
                "class":"text_btn_dummy_ok",
                "click":function () {
                    $(this).dialog("close");
                }
            }
        }
    });
    $('body').data('filelist', new Array());
});
var getFilelist = function () {
    var files = $('body').data('filelist');
    var filenames = '';
    for (var i = 0; i < files.length; i < i++) {
        var suffix = (i == files.length - 1) ? '' : ';';
        filenames += files[i].name + suffix;
    }
    return filenames;
};
var changeProduct = function (val) {
    // if (isKuendigungCombi) {
    //     if (isMailKuendigungCombi) {
    //         val = 22;
    //     } else if (isDomainKuendigungCombi) {
    //         val = 35;
    //     } else if (isOsKuendigungCombi) {
    //         val = 42;
    //     }
    // }

    // "freenet Mobilfunk ehemals md":  val = 59
    // "freenet TV - Entertainment":    val = 381
    // "freenet Internet (Video)":      val = 387

    // if (val === "59" || val === "108") {     // 108: "Kontakt" lokal ("freenet Mobilfunk ehemals md" > "Kontakt")
    if (val === "59" || val === "381" || val === "387") {
        showFormDirectoy = true
        showedFormOnce = false; // (important)
        login = {};
        login.hide = true;
    } else {
        showFormDirectoy = false;
    }

    s = null;
    clearForm();
    $("#start").hide();
    $("#main").show();
    $('#dynContent').show();
    $("#div_loggedin_continue_to_form").hide();
    fillInCustomerData();
    $("#no_product_text").hide();
    $("#product_text").html($('#sp :selected').text()).show();
    
    world = $(".pwdWorld_"+val).attr("pwdWorld");
    var pwdUrl = pwdForgetWorldFallback;
    if (world == 1) {
        pwdUrl = pwdForgetWorldCommunity;
    } else if (world == 2) {
        pwdUrl = pwdForgetWorldEmail;
    }
    
    $(".pwdForgotLinkUrl").attr("href", pwdUrl);
    // den LinkText ausblenden, wenn world invalid:
    /*
    if (pwdForgetWorldFallback == pwdUrl) {
        $(".pwdForgotLinkUrl").hide();
    } else {
        $(".pwdForgotLinkUrl").show();
    }
    */
    $.get("data/category", { c:val, l:true, sid:session},
        function (data) {
            $('#dynContent').empty();
            $("#category").empty();
            if (data != null) {
                if (data.categoryList && data.categoryList.length > 0) {
                    createCategory("#category", data.categoryList, val);
                }
                if (data.content != null) {
                    displayContent(data.content);
                }
            }
        }, "json"
    ).done(function () {
            changeSelectBoxes();
    });

    if ($("#customerBar").length == 0) {
        $('<div id="customerBar"></div>').insertAfter('#partnerHead');
        $("#customerBar").append('<div id="customerInfo"><div id="productImage"></div></div>');
        $("#customerBar").append('<div id="whiteLine"></div>');
        $("#customerBar").append('<div id="customerHint"></div>');
    }
    if (login) {
        if (login.login) {
           // eingeloggt.
           $("#customerBar").show();
           $("#partnerHead").hide();
        } else {
           // nicht eingeloggt.
           $("#customerBar").hide();
           $("#partnerHead").show();
        }
    }

};
var changeCategory = function (val, subid) {
    clearForm();
    if (val === "30" || val === "39" || val === "49") {
        isKuendigungCombi = true;
    } else {
        isKuendigungCombi = false;
    }
    // display contact form directly without login:
    if (
        val === "108" || val === "109" || val === "110" ||                      // lokal:   Anfragethemen von: "freenet Mobilfunk ehemals md"
        val === "531" || val === "537" || val === "538" ||                      // stage:   Anfragethemen von: "freenet Mobilfunk ehemals md"
        val === "533" || val === "539" || val === "540" ||                      // stage:   Anfragethemen von: "freenet TV - Entertainment"
        val === "535" ||                                                        // stage:   Anfragethemen von: "freenet Internet"
        val === "531" || val === "537" || val === "539" || val === "575" ||     // live:    Anfragethemen von: "freenet Mobilfunk ehemals md"
        val === "533" || val === "541" || val === "543" || val === "577" ||     // live:    Anfragethemen von: "freenet TV - Entertainment"
        val === "535" || val === "545" || val === "547" || val === "579"        // live:    Anfragethemen von: "freenet Internet"
        ) {
        showFormDirectoy = true
        showedFormOnce = false; // (important)
        login = {};
        login.hide = true;
    } else {
        showFormDirectoy = false;
    }
    $("#subc" + subid).empty();
    $("#no_category_text_" + subid).hide();
    $("#category_text_" + subid).html($('#sc' + subid + ' :selected').text()).show();
    $.get("data/category", { c:val, sid:session },
        function (data) {
            $('#dynContent').empty();
            if (data != null) {
                if (data.categoryList != null) {
                    if (data.categoryList.length > 0) {
                            createCategory("#subc" + subid, data.categoryList, val);
                    } else if (data.categoryList.length <= 0) {
                        $.get("data/form", { c:val },
                            function (data) {
                                createForm(data, val);
                            }, "json");
                    }
                }
                if (data.content != null) {
                    displayContent(data.content);
                }
            }
        }, "json").done(function () {
            changeSelectBoxes();
        });
    $(".introductionText").hide();
};
var changeSelectBoxes = function () {
    // if (isKuendigungCombi) {
    //     if (a != null) {
    //         let d = a.shift();
    //         if (d == null) {
    //             console.log('d is null. Do nothing!')
    //             // return;
    //         } else {
    //             $(d.a).selectBox('value', d.b);
    //             changeCategory(d.b, d.c);
    //         }
    //     } else {
    //         console.log('*** a is null!')
    //     }
    // } else {
        var d = a.shift();
        if (d != null) {
            $(d.a).selectBox('value', d.b);
            if (d.c) {
                changeCategory(d.b, d.c);
            } else {
                changeProduct(d.b);
            }
        }
    // }
    //
    // isKuendigungCombi = false;
    // isMailKuendigungCombi = false;
    // isDomainKuendigungCombi = false;
    // isOsKuendigungCombi = false;

    setTimeout(function(){ resize(); }, 150);
    // resize();
};

var arrNotShowLoginCategory = new Array();

var createCategory = function (c, data, id) {
    $(c).empty();
    var anfrageText = "Anfragethema:";
    var introText = "<div class=\"introductionText\">Sehr gerne unterst&uuml;tzen wir Dich bei Deinen individuellen Fragen und Anregungen rund um freenet.<br /><br />Bitte w&auml;hle zuerst Dein Produkt (Mail, Webhosting etc.) und dann das Thema Deines Anliegens aus oder gib einen Suchbegriff in die Suchleiste ein, um in unseren FAQ- und Hilfebereich zu gelangen.</div>";
    if (postmasterMandant || postmaster_enMandant) {
        anfrageText = "";
        $("#fieldTitleProdukt").html("Problem:");
        introText = "<div class=\"introductionText\"><br /> </div>";
        login = new Object();
    }
    var disabledVar = "";
    if (id === "51") {
        disabledVar = "disabled = \"disabled\"";
    }
    $(c).append('<div class="eingabeContainer"><div class="fieldTitle" id="fieldTitle2"></div><select id="sc' + id + '" name="sc' + id + '" class="sc" ' + disabledVar + '></select></div>');
    if (postmaster_enMandant) {
        $("#sc" + id).append('<option value="0" selected="selected" disabled="disabled">Please select</option>');
    } else {
        $("#sc" + id).append('<option value="0" selected="selected" disabled="disabled">Bitte w&auml;hlen</option>');
    }
    $(c).append(introText);
    $("#fieldTitle2").html(anfrageText);
    $.each(data, function (key, val) {
        if (!val.showLogin) {
            arrNotShowLoginCategory.push(val.id);
        }
        $("#sc" + id).append('<option value="' + val.id + '">' + val.name + '</option>');
    });
    // $(c).append('<div class="auswahlContainer"><b>Deine Auswahl:</b> ' +
    //     '<span id="no_category_text_' + id + '" class="toShow">Du hast noch keine Kategorie gew&auml;hlt</span>' +
    //     '<span id="category_text_' + id + '" style="display: none;" /></div>');
    $(c).append('<div id="subc' + id + '"></div>');

    $("#sc" + id).selectBox().change(function () {
        changeCategory($(this).val(), id);
    });
    resize();
};

var createForm = function (data, id) {
    actSelCategoryId = id;
    
    clearForm();
    p = new Array(), v = new Array();
    if (data && data.form) {
        $('#dynForm').append('<div class="dataText" id="dataText2">Deine Daten:</div><div id="formFields" class="formFields"></div>');

        var formTitle = "Deine Daten:";
        if (postmasterMandant) {
            formTitle = "Ihre Eingaben:";
        }
        if (postmaster_enMandant) {
            formTitle = "Your Data:";
        }
        $("#dataText2").html(formTitle);

        if (data.form.informationTop) {
            $('#formFields').append('<div id="informationTop">' + data.form.informationTop + '</div>');
        }
        $.each(data.form.formFields, function (key, val) {
            var idName = val.name;
            if (val.headline) {
                $('#formFields').append('<div id="headline_' + val.name + '" class="headline">' + val.headline + '</div>');
            }
            if (!val.optional) {
                val.placeholder = val.placeholder + '*';
            }
            if (val.type == "TEXT" || val.type == "FIRSTNAME" || val.type == "LASTNAME" || val.type == "CONTACTMAIL" || val.type == "FIRSTLASTNAME" || val.type == "CUSTOMERNUMBER") {
                //idName = (val.type == "TEXT" || val.type == "CONTACTMAIL" ? idName : val.type.toLocaleLowerCase());
                var strHelpImg = "";
                // if (val.type == "CONTACTMAIL") {
                //     strHelpImg = '<img style="margin-left:5px;" class="btnKontaktEmail" src="../img/icon_help.png" width="22px" title="Falls wir unsere Antwort auf Deine Anfrage an eine andere E-Mail Adresse senden sollen, trage bitte hier die entsprechende E-Mail Adresse ein."/>';
                // } else {
                //     strHelpImg = '<img style="margin-left:5px;visibility:hidden;" src="../img/icon_help.png" width="22px" />';
                // }
                $('#formFields').append('<div class="formInput"><input type="TEXT" name="' + val.name + '" placeholder="' + val.placeholder + '" id = "' + idName + '" /><span id="display_' + idName + '" class="display_textfield"></span>'+strHelpImg+'<span id="empty_' + idName + '" style="display: none;" class="error_message">' + val.messageIfEmpty + '</span><span id="error_' + idName + '" class="error_message"></span></div>');
                $('#' + idName).focus(function () {
                    $('#error_' + idName).empty();
                    $("#empty_" + idName).hide();
                    $("#" + idName).removeClass("error");
                });
                $(".btnKontaktEmail").tooltip(
                    {
                      position: {
                        my: "left+35 top-10",
                        at: "left top",
                        using: function( position, feedback ) {
                          $( this ).css( position );
                          $( "<div>" )
                            .addClass( "arrow" )
                            .addClass( feedback.vertical )
                            .addClass( feedback.horizontal )
                            .appendTo( this );
                        }
                      }
                    }
                );
            } else if (val.type == "TEXTAREA") {
                $('#formFields').append('<div class="textarea_description"></div>');
                $('#formFields').append('<div><textarea rows="12" cols="80" name="' + val.name + '" id = "' + idName + '" ></textarea><span id="error_' + idName + '" class="error_message"></span></div>');
                $('#' + idName).focus(function () {
                    $('#error_' + idName).empty();
                    $("#" + idName).removeClass("error");
                });
            } else if (val.type == "FILEUPLOAD") {
                $('#formFields').append('<div id="' + idName + '" style="display: none;"></div>');
                $('#' + idName).append('<div id="filename"></div><div id="uploadControl"></div>');
                $('#uploadControl').append('<input type="HIDDEN" name="fname" id = "fname" />');
                
                $('#uploadControl').append('<span class="fileinput-button"><input id="upload" type="file" name="file" single style="width:100%;"><img src="../img/icon_dateianhang.png"/>&nbsp;&nbsp;<span id="attach">Datei anh&auml;ngen</span></span>');
                if ( current_context == "postmaster_en" ) {
                    $('#attach').empty().text('Attach file');
                }
                $('#' + idName).append('<input type="HIDDEN" name="filelist" id="filelist" />');
                $('body').data('filelist', new Array());
            } else if (val.type == "INFOTEXT") {
                $('#formFields').append('<div class="frn_kontakt_infotext">' + val.infotext + '</div>');
            } else if (val.type == "CHECKBOX") {
                // $('#dynForm').append('<div><input type="checkbox" name="' + val.name + '" id = "' + idName + '" /> <span id="'+idName+'_info">' + val.infotext + '</span><span id="empty_' + idName + '" style="display: none;" class="error_message">' + val.messageIfEmpty + '</span><span id="error_' + idName + '" class="error_message"></span></div>');
                $('#formFields').append('<div><div class="checkboxContainer"><input type="checkbox" name="' + val.name + '" id = "' + idName + '" /> <label for="' + val.name + '" id="'+idName+'_info">' + val.infotext + '</label></div><img style="margin-left:5px;visibility:hidden;" src="../img/icon_help.png" width="22px" /><span id="empty_' + idName + '" style="display: none;" class="error_message">' + val.messageIfEmpty + '</span><span id="error_' + idName + '" class="error_message"></span></div>');
            }
            if (val.additionalInfo) {
                $('#formFields').append('<div id="additionalInfo_' + val.name + '" class="additionalInfo">' + val.additionalInfo + '</div>');
            }
            $("#" + idName).hide();
            $("#additionalInfo_" + val.name).hide();
            if (val.visibleWhenLoggedIn) {
                $("#" + idName).addClass("visibleWhenLoggedIn");
                $("#additionalInfo_" + val.name).addClass("visibleWhenLoggedIn");
            }
            if (val.visibleWhenNotLoggedIn) {
                $("#" + idName).addClass("visibleWhenNotLoggedIn");
                $("#additionalInfo_" + val.name).addClass("visibleWhenNotLoggedIn");
            }
            if (val.type != "FILEUPLOAD") {
                if (!val.optional) {
                    var o = Object();
                    o.a = idName;
                    o.b = val.visibleWhenLoggedIn;
                    o.c = val.visibleWhenNotLoggedIn;
                    o.type = val.type;
                    p.push(o);
                }
            }
            if (val.validation) {
                var t = new Object();
                t.n = idName;
                t.v = val.validation;
                v.push(t);
            }
        });

        // var strCap = '<div class="visibleWhenNotLoggedIn captchaVisibleWhenNotLoggedIn" style="display:none;"><HR >';
        // strCap = strCap + '<span>Bitte gib zur Best&auml;tigung den nachfolgenden Code ein:<br/><br/></span>';
        // strCap = strCap + '<div class="div_img_captcha" style="float:left; width:182px; "><img id="img_captcha" src="getNewCaptcha/'+session+'?ttl='+(new Date()).getTime()+'"></div>';
        // strCap = strCap + '<div style="flaot:left;margin-left:10px;"><input style="margin-left: 10px; width: 120px;height: 40px;font-size: 13px;text-align: left;" type="TEXT" id="captcha" name="captcha" placeholder="Sicherheitscode*" />&nbsp;<img src="../img/icon_reload.png" width="22px" title="neuen Code generieren" onClick="refreshCaptcha()"/>&nbsp;&nbsp;&nbsp;<img class="btnHilfe" src="../img/icon_help.png" width="22px" title="Der Sicherheitscode verhindert, dass eine Bestellung automatisiert (z.B. durch ein Computer-Programm) durchgef&uuml;hrt werden kann. Falls der Code nicht optimal lesbar ist, lass Dir durch die Pfeile einen neuen Code anzeigen."/></div>';
        // strCap = strCap + '<div style="clear:both; color:red;" id="error_captcha"></div>';
        // strCap = strCap + '</div>';

        var strCap = '<div class="visibleWhenNotLoggedIn captchaVisibleWhenNotLoggedIn" style="display:none;">';
        strCap = strCap +  '<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onloadTurnstileCallback" defer></script>';
        strCap = strCap + '<div class="cf-turnstile" data-sitekey="0x4AAAAAAAE9eWB52Iacdknc" data-callback="javascriptCallback"></div>';
        strCap = strCap + '</div>';

        $("#formFields").append(strCap);
        
        $(".btnHilfe").tooltip(
            {
              position: {
                my: "left+35 top-10",
                at: "left top",
                using: function( position, feedback ) {
                  $( this ).css( position );
                  $( "<div>" )
                    .addClass( "arrow" )
                    .addClass( feedback.vertical )
                    .addClass( feedback.horizontal )
                    .appendTo( this );
                }
              }
            }
        );
        $('#formFields').append('<input type="hidden" id="isLoggedIn" name="isLoggedIn" value="false" />');

        if (isKuendigungCombi) {
            $('#formFields').append('<input type="submit" value="Kündigung senden" name="send" id="readyButton" class="readyButtonKdgCombi" />');
        } else {
            $('#formFields').append('<input type="submit" value="Senden" name="send" id="readyButton" />');
        }
        if (data.form.informationBottom) {
            $('#formFields').append('<div id="informationBottom">' + data.form.informationBottom + '</div>');
        }
        $("#kontaktformular").attr("action", "form/post/" + id + "/" + session);
        $("#login").attr("action", "data/login/" + id + "/" + session);
        msiePlaceholderHack();
        showLoginOrForm();
    }
    resize();
};
var clearForm = function () {
    $('#dynForm').empty();
    $('#kontaktformular').hide();
    $("#login").hide();
    $("#div_continue_without_login").hide();
    $("#login_message").hide();
    globalAttatchmentCount = 0;
};
var showLoginOrForm = function () {
    msiePlaceholderHack();
    if (login != null || skipLogin || fromKzu == true) {
        if (fromKzu == true) {
            $('#dynContent').empty();
        }
        $("#e").val('');
        $("#p").val('');
        
        disableEnableFormFields(true);
        
        if (login != null) {
            if (login.email && $("#email")) {
                $("#email").val(login.email);
                //$("#email").hide().removeClass("visibleWhenNotLoggedIn").removeClass("visibleWhenLoggedIn");
                //$("#display_email").append($("#email").val());
            }
        }
        
        $("#login_input").show();
        $("#login").hide();
        $("#div_continue_without_login").hide();
        if (login != null && login.hide) {
            // das 1. Mal:
            // content (Text) nicht anzeigen, Formular anzeigen:
            if (showedFormOnce == false) {
                $('#dynContent').empty();
                $('#kontaktformular').show();
                $(".captchaVisibleWhenNotLoggedIn").show();
                if (login.login) {
                    if (fromKzu == false) {
                        $("#div_loggedin_continue_to_form").show();
                    }
                    $(".captchaVisibleWhenNotLoggedIn").hide();
                }
                showedFormOnce = true;
            } else {
                // ab dem 2. Mal:
                // content (Text) anzeigen, Formular nicht anzeigen
                $('#dynContent').show();
                $('#kontaktformular').hide();
                if (! login.login) {
                    // nicht eingeloggt:
                    showLogin = true;
                    for (var i = 0; i < arrNotShowLoginCategory.length; i++) {
                        if (arrNotShowLoginCategory[i] == actSelCategoryId) {
                            showLogin = false;
                        }
                    }                    
                    if ( showLogin == true ) {
                        // button 'Zum Login' im Dialogfenster:
                        $(".text_btn_dummy_zum_login").show();
                        // login boxes:
                        $("#login").show();
                        // Text 'Weiter ohne Login' alleinstehend:
                        $("#div_continue_without_login").hide();
                    } else {
                        $(".text_btn_dummy_zum_login").hide();
                        $("#login").hide();
                        $("#div_continue_without_login").show();
                    }
                    $(".captchaVisibleWhenNotLoggedIn").show();
                } else {
                    // eingeloggt:
                    $("#div_loggedin_continue_to_form").show();
                    $(".captchaVisibleWhenNotLoggedIn").hide();
                }
            }
        }
        
        // $('#kontaktformular').show();

        $('#upload').fileupload({
            url:'form/fileupload/' + session,
            dataType:'json',
            formAcceptCharset:'utf-8',
            add:function (e, data) {
                $.each(data.files, function (index, file) {
                    $("#fname").val(file.name);
                });
                data.submit();
            },
            beforeSend:function (xhr) {
                $('#filename').append('<span id="loading"><img src="../img/loader.gif" /></span>');
            },
            done:function (e, data) {
                $('#loading').remove();
                if (data.result.errorMessage) {
                    var divOther1 = "<div style='margin-top:10px;margin-left:0px;margin-bottom:10px;margin-right:0px'>";
                    var imgDiv = "<div style='float:left; width:56px;'><img src='../img/icon_achtung.png' /></div>";
                    var textDiv = "<div style='float:left; margin-left:10px; width:500px; font-family:Arial, Helvetica, sans-serif; font-size:20px; color:#888888; font-weight:bold;'>"+data.result.errorMessageTitle;
                    var textDiv2 = "<div style='margin-top:10px;font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#333333; font-weight:bold;'>"+data.result.errorMessage+"</div></div>";
                    var divOther1End = "</div>";
                    $("#errorDialog").html(divOther1+imgDiv+textDiv+textDiv2+"<div style='clear:both;'></div>"+divOther1End).dialog("open");
                    return;
                }
                globalAttatchmentCount = globalAttatchmentCount + 1;
                var idName = "file_" + data.result.id;
                $('#filename').append('<span id="' + idName + '" class="fileentry"></span>');
                $('#' + idName).append('<span class="filetype ' + data.result.extension + '"></span> ');
                $('#' + idName).append('<span>'+data.result.name+'</span>');
                $('#' + idName).append('<span> <a href="javascript:void(0);" class="remove" onclick="removeAttachment(' + data.result.id + ');"></a></span>');

                $('body').data('filelist').push(data.result);
                if ($('#attach')) {
                    $('#attach').empty().append('Weitere Datei anh&auml;ngen');
                    if ( current_context == "postmaster_en" ) {
                        $('#attach').empty().text('Attach more file');
                    }
                }
                if ($('#upload')) {
                    $('#upload').width("100%");
                }
                
                if ($('body').data('filelist').length >= 10) {
                    $('#uploadControl').hide();
                }
                resize();
            }
        });

        if (skipLogin || (login && !login.login)) {
            $(".visibleWhenNotLoggedIn").show();
        } else {
            $(".visibleWhenLoggedIn").show();
        }

        if (skipLogin || fromKzu == true) {
            $('#kontaktformular').show();
        }
    } else {
        $('#kontaktformular').hide();
        
        showLogin = true;
        for (var i = 0; i < arrNotShowLoginCategory.length; i++) {
            if (arrNotShowLoginCategory[i] == actSelCategoryId) {
                showLogin = false;
            }
        }
        
        if ( showLogin == true ) {
            $(".text_btn_dummy_zum_login").show();
            $("#login").show();
            $("#div_continue_without_login").hide();
        } else {
            $(".text_btn_dummy_zum_login").hide();
            $("#login").hide();
            $("#div_continue_without_login").show();
        }
    }

    fromKzu = false;

    resize();
};

var disableSendButton = function (doDisable) {
    var tmp = $("#readyButton");
    if (tmp) {
        if (doDisable) {
            $("#readyButton").css('visibility','hidden');
        } else {
            $("#readyButton").css('visibility','visible');
        }
    }
}

var disableEnableFormFields = function(doDisable) {
    
    if (login != null) {
        if (login.firstname && $("#firstname")) {
            $("#firstname").val(login.firstname);
            $("#firstname").prop('disabled', doDisable);
            //$("#firstname").hide().removeClass("visibleWhenNotLoggedIn").removeClass("visibleWhenLoggedIn");
            //$("#display_firstname").append($("#firstname").val());
        }
        if (login.lastname && $("#lastname")) {
            $("#lastname").val(login.lastname);
            $("#lastname").prop('disabled', doDisable);
            //$("#lastname").hide().removeClass("visibleWhenNotLoggedIn").removeClass("visibleWhenLoggedIn");
            //$("#display_lastname").append($("#lastname").val());
        }
        if (login.firstname && login.lastname && $("#firstlastname")) {
            $("#firstlastname").val(login.firstname + ' ' + login.lastname);
            $("#firstlastname").prop('disabled', doDisable);
            //$("#firstlastname").hide().removeClass("visibleWhenNotLoggedIn").removeClass("visibleWhenLoggedIn");
            //$("#display_firstlastname").append($("#firstlastname").val());
        }
        if (login.customerNumber && $("#customerNumber")) {
            $("#customerNumber").val(login.customerNumber);
            $("#customerNumber").prop('disabled', doDisable);
            //$("#customerNumber").hide().removeClass("visibleWhenNotLoggedIn").removeClass("visibleWhenLoggedIn");
            //$("#display_customerNumber").append($("#customerNumber").val());
        }
    }
}

var continueWithoutLogin = function () {
    showedFormOnce = false;
    login = new Object();
    login.login = false;
    login.hide = true;
    // if-Bedingung fuer den Fall, wenn das Formaular angezeigt werden soll:
    // if (fromKzu == false) {
        showLoginOrForm();
    // }
};
var showNoLoginDialog = function () {
    $("#withoutLoginDialog").dialog("open");
};
    
var loggedInContinueToForm = function () {
    $('#dynContent').hide();
    $('#kontaktformular').show();
    $("#div_loggedin_continue_to_form").hide();
    if ($('#upload')) {
        $('#upload').width("100%");
    }
    resize();
};

var displayContent = function (content) {
    $('#dynContent').empty();
    // $('#dynContent').append('<HR>');
    $('#dynContent').append('<div class="separatorLine"></div>');
    $('#dynContent').append(content);
    resize();
};
var displaySelect = function (val) {
    $("#sp").selectBox('value', val);
    $("#start").hide();
    $("#main").show();
    changeProduct(val);
};
var removeAttachment = function (file) {
    $.ajax({
        url:'form/remove/' + session,
        dataType:'text',
        type:'POST',
        data:{"file":file},
        success:function (result) {
            globalAttatchmentCount = globalAttatchmentCount - 1;
            if (globalAttatchmentCount < 0) {
                globalAttatchmentCount = 0;
            }
            $("#file_" + file).remove();
            $('#loading').remove();
            $('body').data('filelist').splice(0, 1);
            if ($('body').data('filelist').length < 10) {
                $('#uploadControl').show();
            }            
            if (globalAttatchmentCount == 0) {
                if ($('#attach')) {
                    $('#attach').empty().append('Datei anh&auml;ngen');
                    if ( current_context == "postmaster_en" ) {
                        $('#attach').empty().text('Attach file');
                    }
                }
                if ($('#upload')) {
                    $('#upload').width("100%");
                }
            }
            resize();
        }
    });
};
var msiePlaceholderHack = function () {
    if ((/msie|trident/i).test(navigator.userAgent)) {
        $('input[placeholder]').each(function () {
            var input = $(this);
            if (input.val() == '') {
                input.val(input.attr('placeholder'));
            }            
            input.focus(function () {
                if (input.val() == input.attr('placeholder')) {
                    input.val('');
                }
            });
            input.blur(function () {
                if (input.val() == '' || input.val() == input.attr('placeholder')) {
                    input.val(input.attr('placeholder'));
                }
            });
        });
    }
};

var ignoreMsiePlaceholderHack = function () {
    if ((/msie|trident/i).test(navigator.userAgent)) {
        $('input[placeholder]').each(function () {
            var input = $(this);
                if (input.val() == input.attr('placeholder')) {
                    input.val('');
                }
        });
    }
};

function fillInCustomerData() {
    // ohne Kundendaten geht nix
    if (login && login.login) {
        try {
            var name = "";
            if (login.firstname) {
                name += login.firstname;
            }
            if (login.lastname) {
                name += " " + login.lastname;
            }
            if (!name) {
                name = "Kunde";
            }
            
            if (document.getElementById("sp").selectedIndex) {
                bild = document.getElementById("start").getElementsByTagName("img")[document.getElementById("sp").selectedIndex-1].src;
                document.getElementById("kundendatenheader").getElementsByTagName("img")[0].src = bild;
            } else {
                // Bild so lassen
            } 
        } catch(e) {
            // console.log("Fehler aufgetreten: " + e);
        }
        try {
            if (login.customerNumber) {
                cid = login.customerNumber;
                //document.getElementById("kundendatenheader").innerHTML = document.getElementById("kundendatenheader").innerHTML.replace("{Name}", name);
                //document.getElementById("kundendatenheader").innerHTML = document.getElementById("kundendatenheader").innerHTML.replace("{CID}", cid);
                //document.getElementById("hotlineinfo").className += " headless ";
                //document.getElementById("partnerHead").style.display = "none";
                //document.getElementById("kundendatenheader").style.display = "block";
                
                if ($("#kundendatenheader")) {
                    $("#kundendatenheader").html($("#kundendatenheader").html().replace("{Name}", name));
                    $("#kundendatenheader").html($("#kundendatenheader").html().replace("{CID}", cid));
                }
                if ($("#hotlineinfo")) {
                    $("#hotlineinfo").addClass("headless");
                }
                if ($("#partnerHead")) {
                    $("#partnerHead").hide();
                }
                if ($("#kundendatenheader")) {
                    $("#kundendatenheader").show();
                }
            } else {
                if ($("#partnerHead")) {
                    $("#partnerHead").hide();
                }
                // document.getElementById("partnerHead").style.display = "none ";
                // Keine CID? Hasta la pasta!
            }
        } catch(e) {
            // console.log("Hoppala: " + e);
        }
    }
}

function resize_orig() {
    var height = $('.lay5').height() + 40;
    if (height < 390) {
        height = 390;
    }
    window.parent.postMessage(["setHeight", height], "*");
}

function resize() {
    if (showFormDirectoy) {
        $(".introductionText").hide();
    }
    var height = $('.lay5').height() + 40;
    var heightLimit = 390;
    var heightValue = 390;
    if (postmasterMandant || postmaster_enMandant) {
        heightLimit = 500;
        heightValue = 500;
    }
    if (height < heightLimit) {
        height = heightValue;
    }
    window.parent.postMessage(["setHeight", height], "*");
}

$(document).ready(function() {
    $(document).on("click", '.selectBox-dropdown', function(){
        console.log('selectBox-dropdown ...')
        resize();
    })
});

function userIsLoggedIn(data) {
    login = data;
    login.login = true;
    login.hide = true;
    $("#isLoggedIn").attr("value","true");
    fillInCustomerData();

    $("#upload").attr("data-url", "form/fileupload/" + session);

    showedFormOnce = false;
    if (fromKzu == false) {
        showLoginOrForm();
    }
    // resize();
}

window.onloadTurnstileCallback = function () {
    if ( current_context !== "gewinnspiel" ) {
        widgetId = turnstile.render('.cf-turnstile', {
            sitekey: '0x4AAAAAAAE9eWB52Iacdknc',
            callback: function(token) {
                console.log(`Challenge Success ${token}`);
            },
        });
    }
};

