jQuery(function($){

    // Switch tip sponsor
    $('[name=tip_sponsor]').on('change', function(){
        var val = $(this).val();
        $('#ovp-sponsor-juridica').toggle(val === 'juridica');
        $('#ovp-sponsor-fizica').toggle(val === 'fizica');
        $('.ovp-c-tip-btn[data-tip]').each(function(){
            $(this).toggleClass('active', $(this).data('tip') === val);
        });
    });

    // Switch tip sponsorizare
    $('[name=tip_sponsorizare]').on('change', function(){
        var val = $(this).val();
        $('#ovp-sp-baneasca').toggle(val === 'baneasca');
        $('#ovp-sp-bunuri').toggle(val === 'bunuri');
        $('#ovp-sp-servicii').toggle(val === 'servicii');
        $('[data-tip]').each(function(){
            if ($(this).find('[name=tip_sponsorizare]').length) return;
            $(this).toggleClass('active', $(this).data('tip') === val);
        });
    });

    // Click pe butoane tip
    $('.ovp-c-tip-btn').on('click', function(){
        var radio = $(this).find('input[type=radio]');
        radio.prop('checked', true).trigger('change');
        var name = radio.attr('name');
        $('[name="' + name + '"]').closest('.ovp-c-tip-btn').removeClass('active');
        $(this).addClass('active');
    });

    // Submit
    $('#ovp-contract-form').on('submit', function(e){
        e.preventDefault();

        var errors = [];
        $(this).find('[required]').each(function(){
            var el = $(this);
            if ( el.is(':checkbox') && !el.is(':checked') ) {
                errors.push( el.closest('.ovp-c-check-label').text().replace('*','').trim().substring(0,60) );
            } else if ( !el.is(':checkbox') && !$.trim(el.val()) ) {
                var label = el.closest('.ovp-c-field').find('label').first().text().replace('*','').trim();
                if (label && el.closest('#ovp-sponsor-fizica, #ovp-sponsor-juridica, #ovp-sp-baneasca, #ovp-sp-bunuri, #ovp-sp-servicii').length) {
                    var wrap_id = el.closest('[id]').attr('id');
                    var tip_sp = $('[name=tip_sponsor]:checked').val();
                    var tip_spon = $('[name=tip_sponsorizare]:checked').val();
                    if (wrap_id === 'ovp-sponsor-juridica' && tip_sp !== 'juridica') return;
                    if (wrap_id === 'ovp-sponsor-fizica' && tip_sp !== 'fizica') return;
                    if (wrap_id === 'ovp-sp-baneasca' && tip_spon !== 'baneasca') return;
                    if (wrap_id === 'ovp-sp-bunuri' && tip_spon !== 'bunuri') return;
                    if (wrap_id === 'ovp-sp-servicii' && tip_spon !== 'servicii') return;
                }
                if (label) errors.push(label);
            }
        });

        errors = [...new Set(errors)];
        if (errors.length) {
            showMsg('<strong>Câmpuri necompletate:</strong><br>' + errors.slice(0,5).join('<br>') + (errors.length>5?'<br>...și altele':''), 'error');
            return;
        }

        var btn = $('#ovp-contract-submit');
        btn.prop('disabled', true).find('.btn-text').hide();
        btn.find('.btn-loading').show();
        $('#ovp-contract-msg').hide();

        $.ajax({
            url: ovp_contract.ajax_url,
            type: 'POST',
            data: $('#ovp-contract-form').serialize() + '&action=ovpspo_contract_submit',
            success: function(res){
                btn.prop('disabled', false).find('.btn-text').show();
                btn.find('.btn-loading').hide();
                if (res.success) {
                    showMsg(res.data.message, 'success');
                    $('html,body').animate({scrollTop: $('#ovp-contract-msg').offset().top - 80}, 400);
                } else {
                    showMsg(res.data.message || 'Eroare.', 'error');
                }
            },
            error: function(){
                btn.prop('disabled', false).find('.btn-text').show();
                btn.find('.btn-loading').hide();
                showMsg('Eroare de conexiune. Încearcă din nou.', 'error');
            }
        });
    });

    function showMsg(msg, type){
        $('#ovp-contract-msg').removeClass('success error').addClass(type).html(msg).show();
    }
});
