/*global redux_change, redux*/

/**
 * Switch
 * Dependencies        : jquery
 * Feature added by    : Smartik - http://smartik.ws/
 * Date            : 03.17.2013
 */

(function($) {
    "use strict";

    redux.field_objects = redux.field_objects || {};
    redux.field_objects.switch = redux.field_objects.switch || {};

    $(document).ready(
        function() {
            //redux.field_objects.switch.init();
        }
    );

    redux.field_objects.switch.init = function(selector) {

        if (!selector) {
            selector = $(document).find(".redux-group-tab:visible").find('.redux-container-switch:visible');
        }

        $(selector).each(
            function() {
                var el = $(this);
                var parent = el;
                if (!el.hasClass('redux-field-container')) {
                    parent = el.parents('.redux-field-container:first');
                }
                if (parent.is(":hidden")) { // Skip hidden fields
                    return;
                }
                if (parent.hasClass('redux-field-init')) {
                    parent.removeClass('redux-field-init');
                } else {
                    return;
                }
                el.find(".cb-enable").click(
                    function() {
                        if ($(this).hasClass('selected')) {
                            return;
                        }

                        var parent = $(this).parents('.switch-options');

                        $('.cb-disable', parent).removeClass('selected');
                        $(this).addClass('selected');
                        $('.checkbox-input', parent).val(1).trigger('change');

                        redux_change($('.checkbox-input', parent));

                        //fold/unfold related options
                        var obj = $(this);
                        var $fold = '.f_' + obj.data('id');

                        el.find($fold).slideDown('normal', "swing");
                    }
                );

                el.find(".cb-disable").click(
                    function() {
                        if ($(this).hasClass('selected')) {
                            return;
                        }

                        var parent = $(this).parents('.switch-options');

                        $('.cb-enable', parent).removeClass('selected');
                        $(this).addClass('selected');
                        $('.checkbox-input', parent).val(0).trigger('change');

                        redux_change($('.checkbox-input', parent));

                        //fold/unfold related options
                        var obj = $(this);
                        var $fold = '.f_' + obj.data('id');

                        el.find($fold).slideUp('normal', "swing");
                    }
                );

                el.find('.cb-enable span, .cb-disable span').find().attr('unselectable', 'on');
            }
        );
    };
})(jQuery);