var prevclicked = false, field;
$("form.form-module").on("click", ".submitbutton.next-step", function(e){
    e.preventDefault();
    prevclicked = false;
    $($(this), $(this).parents()).submit();
})
    .on("click", ".submitbutton.previous-step", function(e){
        e.preventDefault();
        prevclicked = true;
        $($(this), $(this).parents()).submit();
    });
var form = $('form').not('.not_ajax');
form.on('change', '.actionCheckZipcode', function(e){
    var data = {url: window.location.href},
        zipcode = $("[data-reference='zipcode']", form),
        house_number = $("[data-reference='house_number']", form);

    if(zipcode) {
        data['zipcode'] = zipcode.val();
        if(data['zipcode'] == '') {
            return;
        }
    }
    if(house_number) {
        data['house_number'] = house_number.val();
        if(data['house_number'] == '') {
            return;
        }
    }

    $.post('/ajax/Forms/CheckZipcode', data,
        function(return_data){
            var container = $("[data-reference='house_number']", form);
            container.find('span.s-invalid').remove();

            container = $("[data-reference='zipcode']", form);
            container.find('span.s-invalid').remove();

            container.find('.s-invalid').removeClass('s-invalid');

            if (return_data.valid) {
                $.each(return_data.addressdata, function(key, value) {
                    field = $("[data-reference='"+key+"']", form);
                    if(field) {
                        field.val(value);
                    }
                });
            }
            else {
                container.append($('<span>').addClass('error').html(return_data.error));
            }
        }, "json"
    );
}).on("submit", function(e){
    e.preventDefault();

    var data = {url: window.location.href},
        _form = $(this),
        fieldscontainer = $(this);

    if(_form.hasClass("hassteps") && !$('.step.selected').hasClass('last')){
        fieldscontainer = '.step.selected';
    }

    $(fieldscontainer).find('input[type=text], input[type=email], input[type=date], input[type=password], input[type=hidden], textarea, select, input[type=radio]:checked').each(function(){
        data[$(this).attr('name')] = $(this).val();
    });
    $(fieldscontainer).find('input[type=checkbox]:checked').each(function(){
        if(!data[$(this).attr('name')]){
            data[$(this).attr('name')] = [];
        }
        data[$(this).attr('name')][data[$(this).attr('name')].length] = $(this).val();
    });

    if(prevclicked !== false){
        data['prevstep'] = true;
    }
    $.post(_form.attr('action'), data,
        function(return_data){
            $('html,body').animate({scrollTop: (_form.offset().top-150)});
            if (return_data.valid) {

                if(return_data.eventlabel) {
                    pushDataLayerEvent('forms', 'submitted', return_data.eventlabel);
                }

                if (return_data.hasOwnProperty('return_text')) {
                    _form.replaceWith(return_data.return_text);
                }

                if (return_data.hasOwnProperty('forward_url')) {
                    window.location = return_data.forward_url;
                }

                return;
            }
            if (return_data.nextstep) {
                toStep(return_data.nextstep);
                return;
            }
            if (return_data.prevstep) {
                toStep(return_data.prevstep);
                return;
            }
            _form.find('span.s-invalid').remove();
            _form.find('.s-invalid').removeClass('s-invalid');

            if(grecaptcha && _form.hasClass('use_captcha')) {
                grecaptcha.reset();
            }

            $.each(return_data.fields, function(key, value){
                var field = $('input[name="'+key+'"], textarea[name="'+key+'"], select[name="'+key+'"], #'+key, _form),
                    error = return_data.fields[key];

                if (field.attr('type') == 'checkbox' || field.attr('type') == 'radio') {
                    var container = $('h2', $(field).parent().parent());
                    container.prepend($('<span>').addClass('s-invalid').html(value+'<br/>'));
                }
                else if(key === 'g-recaptcha-response'){
                    $('.g-recaptcha').append($('<span>').addClass('state-invalid error-message').html(value));
                }
                else if (field.hasClass('upload-holder')) {
                    $('.note', field).html(error);
                }
                else {
                    field.addClass('s-invalid');
                    //$('<span>').addClass('note').insertBefore(field);
                    //field.siblings('.note').addClass('s-invalid').html(error);
                }
            });
        }, "json"
    );
});
function toStep(step){
    $('.step').removeClass('selected').hide();
    var new_step = $('.step[data-step="'+step+'"]');
    new_step.addClass('selected').show();
    $('.step-navigation li').removeClass('selected');
    $('.step-navigation li[data-step="'+step+'"]').addClass('selected');
    if (typeof refreshUploads == 'function') {
        refreshUploads($('.upload', new_step));
    }
}

$(document).ready(function(){
    if (document.documentElement.clientWidth > 1040) {
        var datePickerField = $('.datepicker');
        if(datePickerField.length){
            datePickerField.attr('type', 'text');

            datePickerField.datepicker({
                //minDate: new Date(),
                dateFormat: 'dd-mm-yy'
            });
        }
    }
});