$(document).ready(function() {
    var tocol = $(".checkboxcolumns");
    tocol.css({ visibility: 'hidden' });
    tocol.columnize({ columns: 3, lastNeverTallest: true });
    tocol.each(function() {
        this.style.visibility = 'visible';
        this.style.height = $(this).height();
        this.style.width = $(this).width();
    });


    setAllowSubmit();

    //INIT Boern (hide/show)
    $("div.barnWrapper").each(function() {
        $(this).hide();
    });

    boernToggle($(".childrenSelector"));


    //INIT ValidateBoern
    $("div.barnWrapper :input").each(function() {
        validateBoern($(this)); //Dette bør kunne køre smartere
    });

    //skjul/vis boern
    $(".childrenSelector").change(function() {
        boernToggle($(this));
    });

    //skjul/vis fejlmeddelelse for boer
    $("div.barnWrapper :input").change(function() {
        validateBoern($(this));
    });

    function toogleOptionsBoxes(o) {
        o.each(function() {
            var ishidden = $(this).data('ishidden');
            if (ishidden) {
                o.css({ position: '', top: 0 });
            } else {
                o.css({ position: 'absolute', top: -9999 });
            }
            //o[ishidden ? 'show' : 'hide']()
            $(this).data('ishidden', !ishidden);
        })
    }

    // Gem alle options
    toogleOptionsBoxes($(".chainOptionsBox"));

    // opdater headeren
    opdaterCheckboxe();

    //Det her sutter røv men det er den eneste måde at ie6 vil acceptere det her skidt.
    $(".chainOptionsBox").click(function() {
        // default tilmeldte skal fungere som om de var én checkbox. Hvis en slås til, skal de alle slås til. Hvis en slås fra, skal de alle slås fra.
        if ($(this).parent('.DefaultNytilmeldt').length == 1) {
            $(this).parents('.chainContainer').find('.DefaultNytilmeldt input').attr('checked', $(this).attr('checked'));
        }
        opdaterCheckboxe();
    });

    //Når kvickly skal have den "rigtige" løsning skal denne fjernes + søg efter *kvickly* og slet den også
    //start *fjern*
    $(".specialKvCheckbox").click(function() {
        if ($(this).find('input').attr('checked')) {
            $(this).parent().parent().find("span.DefaultNytilmeldt input").attr('checked', true);
        }
    });
    //end *fjern*

    // når der klikkes på checkboxen i overskriften
    $(".checkboxImage").click(function() {
        var erKrydsetAf = $(this).attr('src') == '/Images/EMS/checkbox_on.gif'

        if (erKrydsetAf) {
            // hvis den slås fra skal: alle checkboxe slås fra
            $(this).parents('.chainContainer').find("input[type='checkbox']").attr({ checked: false });
        } else {
            // den slås til skal: alle default checkboxe slås til
            $(this).parents('.chainContainer').find('.DefaultNytilmeldt input').attr({ checked: true });
        }

        opdaterCheckboxe();
        toggleIrmaDefaultCheckbox();

        // aldrig folde ind, kun folde ud
        var erFoldetUd = $(this).parents('.chainContainer').find(".arrowImage").attr('src') == '/Images/EMS/arrowDown.gif'
        return !erFoldetUd;
    })

    // når der klikkes på en overskrift
    $(".chainHeaderBox").click(function() {
        var t = $(this);

        // ret i pilen
        var pil = t.find(".arrowImage");
        pil.attr('src', pil.attr('src') == '/Images/EMS/arrowRight.gif' ? '/Images/EMS/arrowDown.gif' : '/Images/EMS/arrowRight.gif');

        // vis boxene
        toogleOptionsBoxes(t.parent().find(".chainOptionsBox"));
        //t.parent().find(".chainOptionsBox").slideToggle(100)
    })

    // når personale nummer ændres, skal det valideres.
    $("span#txtPersonaleNummerSpan input").keyup(function() {
        setAllowSubmit();
    });


    $("#containerIrmaUgensTilbud input:checkbox").change(function() {
        toggleIrmaDefaultCheckbox();
    });
})


function toggleIrmaDefaultCheckbox() {
    if ($("#containerIrmaUgensTilbud input:checkbox").attr('checked')) {
        $("#containerIrmaUgensTilbud").parent().find('table input:hidden').attr('value', true);
    }
    if (!$("#containerIrmaUgensTilbud input:checkbox").attr('checked')) {
        $("#containerIrmaUgensTilbud").parent().find('table input:hidden').attr('value', false);
    }
}

function opdaterCheckboxe() {
    $('.chainContainer:not(.nettorvetContainer)').each(function() {
        var container = $(this)
        var ikkeDefaultTilmeldt = container.find(".chainOptionsBox:not(#irmaNewsletterTemaNyhedsBrev) span:not(.DefaultNytilmeldt) input[type='checkbox']:checked")
        var defaults = container.find(".chainOptionsBox:not(#irmaNewsletterTemaNyhedsBrev) span.DefaultNytilmeldt input");

        // hvis der bare er én ikke-default der er klikket, skal default være klikket og disablet
        // ellers skal default bare ikke være disablet
        //defaults.attr(ikkeDefaultTilmeldt.length > 0 ? { checked: true, disabled: true} : { disabled: false })


        //*kvickly*
        //start *fjern*
        var temp = container.find(".specialKvCheckbox :checked")
        if (ikkeDefaultTilmeldt.length == temp.length) {
            //defaults.attr('disabled', false);
        }
        //end *fjern*

        //Når du fjerner ovenstående, så er det nedenstående if der skal bruges istedet.
        //if (ikkeDefaultTilmeldt.length > 0) {
        if (ikkeDefaultTilmeldt.length > 0 && ikkeDefaultTilmeldt.length != temp.length) {
            defaults.attr('checked', true);
            defaults.attr('disabled', true);
            defaults.addClass("DefaultSelected");
            defaults.parent().parent().find("input:hidden").attr('value', 'true')

            if ($("#containerIrmaUgensTilbud input:checkbox").attr('checked')) {
                $("#irmaNewsletterOptions table input:hidden").attr('value', true);
            }

        } else {
            defaults.attr('disabled', false);
            defaults.removeClass("DefaultSelected");
        }
    })

    // header checkbox billedet skal være krydset af hvis bare en under checkbox er krydset af
    $("img.checkboxImage").each(function() {
        
        var krydsetAf = $(this).parents('.chainContainer').find(".chainOptionsBox input[type='checkbox']:checked")
        $(this).attr('src', krydsetAf.length > 0 ? '/Images/EMS/checkbox_on.gif' : '/Images/EMS/checkbox_off.gif')
    })

    // man må max have 3 interesser.
    $("#divInteresser input:checked:gt(2)").attr({ checked: false })

    // når der er 3 interesser, skal resten af checkboxene disables
    if (($("#divInteresser :checked").size()) == 3) {
        $("#divInteresser :checkbox:not(:checked)").attr('disabled', true);
    } else {
        $("#divInteresser :checkbox").removeAttr('disabled');
    }
    setAllowSubmit();
}


//Funktion til at skjule/vise boern
function boernToggle(t) {
    var index = 0;
    var selectedVal = parseInt(t.val());
    var oldSelectedVal = t.data('oldSelectedVal');

    if (oldSelectedVal === undefined) {
        oldSelectedVal = 0;
    }

    if (selectedVal > oldSelectedVal) {
        //shows boern divs
        $("div.barnWrapper").each(function() {
            if (index < selectedVal) {
                $(this).show();
                $(this).find(".barnAktiv").val(true);
            }
            index++;
        });
    } else {
        //hides boern divs
        $("div.barnWrapper").each(function() {
            if (index > selectedVal - 1) {
                $(this).hide();
                $(this).find(".barnAktiv").val(false);
            }
            index++;
        });
    }
    t.data('oldSelectedVal', selectedVal);
    setAllowSubmit();
}

//Funktion til at validere boern
function validateBoern(t) {
    var isValid = false;

    var parent = t.parents("div.barnWrapper");
    //console.log(parent);

    //Finder dag/maaned/aar selectore for diven
    var barnDag = $(".barnDag", parent).val();
    var barnMaaned = $(".barnMaaned", parent).val();
    var barnAar = $(".barnAar", parent).val();
    var barnKoen = $(".ddlKoen", parent).val();

    var isValid = barnDag > 0 && barnMaaned > 0 && barnAar > 0 && barnKoen > 0;

    //hide errorMessage
    parent.find(".bornErrorMessageDiv")[isValid ? "hide" : "show"]();
    setAllowSubmit();
}

function setAllowSubmit() {
    var personaleNummerErValid = true;

    if ($("#personaleNummerDiv input[type='checkbox']:checked").length > 0) {
        $("#hiddenPersonaleValidatorFejlMangler, #hiddenPersonaleValidatorFejlFormat").hide()
        var val = $("span#txtPersonaleNummerSpan input").val()
        if (val.length == 0) {
            $("#hiddenPersonaleValidatorFejlMangler").show()
            personaleNummerErValid = false;
        } else if (/^[0-9]{1,7}$/.test(val) == false) {
            $("#hiddenPersonaleValidatorFejlFormat").show()
            personaleNummerErValid = false;
        }
    }



    var bornErValide = $(".bornErrorMessageDiv:visible").length == 0
    var altErGodt = personaleNummerErValid && bornErValide;

    if (altErGodt) {
        $('.newsletterFieldWrapper').parents("form").find("input[type='image']").attr('disabled', '');
    } else {
        $('.newsletterFieldWrapper').parents("form").find("input[type='image']").attr('disabled', 'disabled');
    }
}
