﻿// Author: David Wainwright

// Used to enable a button providing specified required fields are filled

(function($) {
    $.fn.buttonEnable = function(requiredClassName, targetClassName) {
        $(this).each(function() {
            var container = $(this);

            var buttons = container.find('button.' + targetClassName + ',' +
                                          'input[type=submit].' + targetClassName
                                          );
            buttons.attr("disabled", "disabled");
            var inputs = container.find('input[type=text].' + requiredClassName + ',' +
                                        'input[type=password].' + requiredClassName + ',' +
                                        'input[type=checkbox].' + requiredClassName + "," +
                                        'textarea.' + requiredClassName);

            var textInputs = inputs.filter('input[type=text],input[type=password],textarea');
            var checkboxes = inputs.filter('input[type=checkbox]');
            textInputs.bind('keyup', function(e) {
                // Check content of all inputs
                buttonenable_checkInputs(inputs, buttons);
            })

            checkboxes.click(function() {
                // Check content of all inputs
                buttonenable_checkInputs(inputs, buttons);
            })
        });
    }

    function buttonenable_checkInputs(inputs, button) {
        var enableButton = true;
        inputs.each(function() {

            if (this.type == "checkbox")
                enableButton = enableButton && this.checked;
            else
                enableButton = enableButton && !$.string(this.value).blank();
        });

        if (enableButton)
            button.attr("disabled", !enableButton);
    }

})(jQuery);
