text: /**
   * callback validator
   *
   * @link        http://formvalidation.io/validators/callback/
   * @author      https://twitter.com/nghuuphuoc
   * @copyright   (c) 2013 - 2015 Nguyen Huu Phuoc
   * @license     http://formvalidation.io/license/
   */
  (function($) {
      FormValidation.I18n = $.extend(true, FormValidation.I18n || {}, {
          'en_US': {
              callback: {
                  'default': 'Please enter a valid value'
              }
          }
      });
  
      FormValidation.Validator.callback = {
          html5Attributes: {
              message: 'message',
              callback: 'callback'
          },
  
          /**
           * Return result from the callback method
           *
           * @param {FormValidation.Base} validator The validator plugin instance
           * @param {jQuery} $field Field element
           * @param {Object} options Can consist of the following keys:
           * - callback: The callback method that passes 2 parameters:
           *      callback: function(fieldValue, validator, $field) {
           *          // fieldValue is the value of field
           *          // validator is instance of BootstrapValidator
           *          // $field is the field element
           *      }
           * - message: The invalid message
           * @returns {Deferred}
           */
          validate: function(validator, $field, options) {
              var value  = validator.getFieldValue($field, 'callback'),
                  dfd    = new $.Deferred(),
                  result = { valid: true };
  
              if (options.callback) {
                  var response = FormValidation.Helper.call(options.callback, [value, validator, $field]);
                  result = ('boolean' === typeof response || null === response) ? { valid: response } : response;
              }
  
              dfd.resolve($field, 'callback', result);
              return dfd;
          }
      };
  }(jQuery));
  