text: /**
   * ismn validator
   *
   * @link        http://formvalidation.io/validators/ismn/
   * @author      https://twitter.com/formvalidation
   * @copyright   (c) 2013 - 2016 Nguyen Huu Phuoc
   * @license     http://formvalidation.io/license/
   */
  (function($) {
      FormValidation.I18n = $.extend(true, FormValidation.I18n || {}, {
          'en_US': {
              ismn: {
                  'default': 'Please enter a valid ISMN number'
              }
          }
      });
  
      FormValidation.Validator.ismn = {
          /**
           * Validate ISMN (International Standard Music Number)
           *
           * @see http://en.wikipedia.org/wiki/International_Standard_Music_Number
           * @param {FormValidation.Base} validator The validator plugin instance
           * @param {jQuery} $field Field element
           * @param {Object} options Can consist of the following keys:
           * - message: The invalid message
           * @returns {Boolean|Object}
           */
          validate: function(validator, $field, options, validatorName) {
              var value = validator.getFieldValue($field, validatorName);
              if (value === '') {
                  return true;
              }
  
              // Groups are separated by a hyphen or a space
              var type;
              switch (true) {
                  case /^M\d{9}$/.test(value):
                  case /^M-\d{4}-\d{4}-\d{1}$/.test(value):
                  case /^M\s\d{4}\s\d{4}\s\d{1}$/.test(value):
                      type = 'ISMN10';
                      break;
                  case /^9790\d{9}$/.test(value):
                  case /^979-0-\d{4}-\d{4}-\d{1}$/.test(value):
                  case /^979\s0\s\d{4}\s\d{4}\s\d{1}$/.test(value):
                      type = 'ISMN13';
                      break;
                  default:
                      return false;
              }
  
              if ('ISMN10' === type) {
                  value = '9790' + value.substr(1);
              }
  
              // Replace all special characters except digits
              value = value.replace(/[^0-9]/gi, '');
              var length = value.length,
                  sum    = 0,
                  weight = [1, 3];
              for (var i = 0; i < length - 1; i++) {
                  sum += parseInt(value.charAt(i), 10) * weight[i % 2];
              }
              sum = 10 - sum % 10;
              return {
                  type: type,
                  valid: (sum + '' === value.charAt(length - 1))
              };
          }
      };
  }(jQuery));
  