"use strict";

var woobe_filtering_is_going = false;//marker about that products are filtered
var woobe_filter_chosen_inited = false;//just fix to init chosen
var woobe_filter_current_key = null;//unique id of current filter operation, which allow make bulk by filter in different browser tabs!

jQuery(function ($) {

    //init chosen by first click because chosen init doesn work for hidden containers
    jQuery(document).on("do_tabs-filters", {}, function () {
        //if (!woobe_filter_chosen_inited) {
        setTimeout(function () {
            //set chosen
            jQuery('#tabs-filters .chosen-select').chosen();
            woobe_filter_chosen_inited = true;
        }, 150);
        //}

        return true;
    });

    //set chosen to filters tab only
    jQuery('a[href="#tabs-filters"]').trigger('click');

    jQuery('.woobe_filter_select').on('change', function () {
        if (jQuery(this).val() == -1 || jQuery(this).val() == 0) {
            jQuery(this).removeClass('woobe_set_attention');
        } else {
            jQuery(this).addClass('woobe_set_attention');
        }
        return true;
    });

    //***

    //placeholder label
    jQuery('#woobe_filter_form input[placeholder]:not(.woobe_calendar)').placeholderLabel();

    //***


    //Filter button
    jQuery('#woobe_filter_products_btn').on('click', function () {
        woobe_do_filtering();
        return false;
    });

    jQuery(document).keydown(function (event) {
        var k = event.keyCode;
        if (event.altKey && k == 83) {
            jQuery('#woobe_filter_products_btn').trigger('click');
            jQuery('html, body').animate({
                scrollTop: jQuery(".bear-plugin-name").offset().top
            }, 777);
        }
    });


    //Reset Filter button
    jQuery('.woobe_filter_reset_btn1, .woobe_filter_reset_btn2').on('click', function () {

        var _this = this;
        woobe_message(lang.reseting, 'warning', 99999);
        jQuery.ajax({
            method: "POST",
            url: ajaxurl,
            data: {
                action: 'woobe_reset_filter',
                filter_current_key: woobe_filter_current_key
            },
            success: function () {

                if (!jQuery(_this).hasClass('woobe_filter_reset_btn2')) {
                    //jQuery('.woobe_top_panel_btn').trigger('click');
                }

                woobe_filter_current_key = null;
                jQuery('.woobe_tools_panel_newprod_btn').show();

                data_table.clear().draw();
                woobe_message(lang.reseted, 'notice');
                jQuery('.woobe_filter_reset_btn1').hide();
                jQuery('.woobe_filter_reset_btn2').hide();
                //clear all filter drop-downs and inputs
                __woobe_clean_filter_form();

                woobe_filtering_is_going = false;
                __woobe_action_will_be_applied_to();
            },
            error: function () {
                alert(lang.error);
            }
        });

        return false;
    });

    //***

    jQuery('#woobe_filter_form input').keydown(function (e) {
        if (e.keyCode == 13) {
            jQuery('#woobe_filter_products_btn').trigger('click');
        }
    });

    //***

    jQuery(document).on("taxonomy_data_redrawn", {}, function (event, tax_key, term_id) {

        var select_id = 'woobe_filter_taxonomies_' + tax_key;
        var select = jQuery('#' + select_id);
        jQuery(select).empty();
        __woobe_fill_select(select_id, taxonomies_terms[tax_key]);
        jQuery(jQuery('#' + select_id)).chosen({
            width: '100%'
        }).trigger("chosen:updated");

        return true;
    });

    jQuery('.woobe_filter_tools_select[name="woobe_filter_tools_options"]').on('change', function () {
        var val = jQuery(this).val();
        var select_beh = jQuery('select[name="woobe_filter_tools_behavior"]');
        var val_beh = select_beh.val();

        var options = jQuery('select[name="woobe_filter[' + val + '][behavior]"]').find("option").clone();

        select_beh.html(options);

        var selected = select_beh.find('option[value="' + val_beh + '"]');
        if (selected) {
            selected.attr('selected', 'selected');
        }
    });
    jQuery('#woobe_filter_btn_tools_panel').on('click', function () {
        var text = jQuery('input[name="woobe_filter_form_tools_value"]').val();
        var option = jQuery('select[name="woobe_filter_tools_options"]').val();
        var behavior = "exact";
        if (option != 'post__in') {
            behavior = jQuery('select[name="woobe_filter_tools_behavior"]').val();
        }
        var text_input = jQuery('input[name="woobe_filter[' + option + '][value]"]');
        if (jQuery(text_input).length) {
            __woobe_clean_filter_form();
            jQuery('input[name="woobe_filter_form_tools_value"]').val(text);
            jQuery(text_input).val(text);
            setTimeout(function () {
                jQuery(text_input).siblings('label').css("margin-top", "-11px");
            }, 2000);

            jQuery('select[name="woobe_filter[' + option + '][behavior]"]').val(behavior);
        }
        jQuery('#woobe_filter_products_btn').trigger("click");

        /* do not use it!!
         jQuery('html, body').animate({
         scrollTop: jQuery("#woobe_tools_panel").offset().top
         }, 777);
         */
    });

    jQuery("input[name='woobe_filter_form_tools_value']").off().on('keyup change', function (e) {
        if (e.keyCode === 13) {
            jQuery('#woobe_filter_btn_tools_panel').trigger("click");
        }
    });

});


function __woobe_clean_filter_form() {
    jQuery('#woobe_filter_form input[type=text]').val('');
    jQuery('#woobe_filter_form input[type=number]').val('');
    jQuery('#woobe_filter_form .woobe_calendar').val('').trigger('change');
    jQuery('#woobe_filter_form select.chosen-select').val('').trigger("chosen:updated");
    jQuery('#woobe_filter_form select:not(.chosen-select)').each(function (i, s) {
        jQuery(s).val(jQuery(s).find('option:first').val());
    });
    jQuery('#woobe_filter_form select').removeClass('woobe_set_attention');
    //tool panel filter
    jQuery("#woobe_filter_form_tools_panel input[type=text]").val('');
}



function woobe_do_filtering() {
    //jQuery('.woobe_txt_search').val('');
    woobe_message(lang.filters.filtering, 'warning');
    woobe_filter_current_key = (woobe_get_random_string(16)).toLowerCase();
    jQuery('.woobe_tools_panel_newprod_btn').hide();

    jQuery.ajax({
        method: "POST",
        url: ajaxurl,
        data: {
            action: 'woobe_filter_products',
            filter_data: jQuery('#woobe_filter_form').serialize(),
            filter_current_key: woobe_filter_current_key
        },
        success: function (e) {
            console.log(e);
            woobe_message(lang.filters.filtered, 'notice', 30000);
            data_table.clear().draw();

            jQuery('.woobe_filter_reset_btn1').show();
            jQuery('.woobe_filter_reset_btn2').show();
            woobe_filtering_is_going = true;
            __woobe_action_will_be_applied_to();


            jQuery('html, body').animate({
                scrollTop: jQuery('.woobe-section').offset().top - 30
            }, 600);
        },
        error: function () {
            alert(lang.error);
        }
    });
}