
$(document).ready(function() {

    var validator = $('form').validate();

    if (validator) {
        var excludeList = '.wpL18 input[name$=tboxL18PostCode], .wpL18 input[name$=tboxL18HouseNumber], .wpL18 input[name$=tboxL18HouseNumberAddition], .wpL18 input[name$=tboxL18PhoneNumber]';

        if (validator.settings.onsubmitOnlyElements === undefined) {
            validator.settings.onsubmitOnlyElements = excludeList;
        } else {
            validator.settings.onsubmitOnlyElements += ',' + excludeList;
        }
    }

    function showL18lightbox() {
        // transfer input fields values into L18lightbox
        $('.wpL18lightbox input[name$=tboxL18PostCode]').val($('.wpL18 input[name$=tboxL18PostCode]').val());
        $('.wpL18lightbox input[name$=tboxL18HouseNumber]').val($('.wpL18 input[name$=tboxL18HouseNumber]').val());
        $('.wpL18lightbox input[name$=tboxL18HouseNumberAddition]').val($('.wpL18 input[name$=tboxL18HouseNumberAddition]').val());
        
        // and transfer L18 labels into L18lightbox
        $('.wpL18lightbox span.heading').html($('.wpL18 h2:first').html());
        $('.wpL18lightbox p:first').html($('.wpL18 p:first').html());
        

        // display L18lightbox
        $('.dimmed-overlay').slideDown();
        $("#wpL18lightbox").slideDown('slow');
        $('.header a').focus(); // simple 'scroll to top'

        // trigger validation in order to display the validation errors
        var validator = $('#aspnetForm').validate();
        validator.settings.ignore = ":not('.wpL18lightbox *')";
        validator.form();
    }

    $('.wpL18lightbox .submit').click(function(e) {
        //(window.console && window.console.log('wpL18lightbox form submit'));

        try {
            var $t = $(this);

            var validator = $('#aspnetForm').validate();

            validator.settings.ignore = ":not('." + $t.metadata().form + " *')";
            var isValid = validator.form();
            //(window.console && window.console.log('isValid', isValid));

            if (!isValid) {
                e.preventDefault();
                return false;
            } else {
                // transfer back input fields values into L18
                $('.wpL18 input[name$=tboxL18PostCode]').val($('.wpL18lightbox input[name$=tboxL18PostCode]').val());
                $('.wpL18 input[name$=tboxL18HouseNumber]').val($('.wpL18lightbox input[name$=tboxL18HouseNumber]').val());
                $('.wpL18 input[name$=tboxL18HouseNumberAddition]').val($('.wpL18lightbox input[name$=tboxL18HouseNumberAddition]').val());
                
                // and trigger L18 submit
                setTimeout(function() {
                    window.location = $('.wpL18 a.submit').attr('href');
                }, 1);
            }
        } catch (err) {
            e.preventDefault();
            return false;
        }
    });

    $('.wpL18 .submit').click(function(e) {

        try {
            var $t = $(this);

            var validator = $('#aspnetForm').validate();

            validator.settings.ignore = ":not('." + $t.metadata().form + " *')";
            var isValid = validator.checkForm();
            
            if (!isValid) {
                setTimeout(function() { showL18lightbox(); }, 1);
                e.preventDefault();
                return false;
            }
        } catch (err) {
            e.preventDefault();
            return false;
        }
    });
});