(function ($) {
    $(fn);
    $(document).on('pl_section_updated', fn);

    function fn() {
        $('[data-textfield-dirty]')
            .each(isDirty)
            .on('focusin focusout input', isDirty);

        $('[data-textfield-reset]')
            .each(isReset)
            .on('focusin focusout input', isReset);

        function isDirty(event) {
            var $element = $(this);
            var isDirty = !!$element.val() || event && event.type && event.type.toLowerCase() === 'focusin';
            var selector = $element.attr('data-textfield-parent');
            var $parent = selector && $element.parent(selector);
            var $parentContainer = $(".af-material-form");

            var classSelector = $element.attr('data-multiple-searchbox-id');
            if (classSelector !== undefined) {
                $parentContainer = $(classSelector);
            }

            if (!$parent || !$parent.length) $parent = $element.parent();

            $parent[isDirty ? 'addClass' : 'removeClass']($element.attr('data-textfield-dirty') || 'focus');

            if ($element.parent(selector).hasClass('focus')) {
                $parentContainer.addClass('focus-parent');
            } else {
                $parentContainer.removeClass('focus-parent');
            }
        }

        function isReset() {
            var $element = $(this);
            var isDirty = !!$element.val();
            var selector = $element.attr('data-textfield-reset');
            var $target = selector && $element.find(selector);

            $target.toggle(isDirty);
        }
    }
}) (window.jQuery);