docs: function(e) {
      var error_free, form, isFileUpload, map, opts;
      if (e !== null) {
        e.preventDefault();
      }
      form = $('.sandbox', $(this.el));
      error_free = true;
      form.find('input.required').each(function() {
        $(this).removeClass('error');
        if (jQuery.trim($(this).val()) === '') {
          $(this).addClass('error');
          $(this).wiggle({
            callback: (function(_this) {
              return function() {
                $(_this).focus();
              };
            })(this)
          });
          error_free = false;
        }
      });
      form.find('textarea.required:visible').each(function() {
        $(this).removeClass('error');
        if (jQuery.trim($(this).val()) === '') {
          $(this).addClass('error');
          $(this).wiggle({
            callback: (function(_this) {
              return function() {
                return $(_this).focus();
              };
            })(this)
          });
          error_free = false;
        }
      });
      form.find('select.required').each(function() {
        $(this).removeClass('error');
        if (this.selectedIndex === -1) {
          $(this).addClass('error');
          $(this).wiggle({
            callback: (function(_this) {
              return function() {
                $(_this).focus();
              };
            })(this)
          });
          error_free = false;
        }
      });
      if (error_free) {
        map = this.getInputMap(form);
        isFileUpload = this.isFileUpload(form);
        opts = {
          parent: this
        };
        if (this.options.swaggerOptions) {
          for(var key in this.options.swaggerOptions) {
            opts[key] = this.options.swaggerOptions[key];
          }
        }
  
        var pi;
        for(pi = 0; pi < this.model.parameters.length; pi++){
          var p = this.model.parameters[pi];
          if( p.jsonEditor && p.jsonEditor.isEnabled()){
            var json = p.jsonEditor.getValue();
            map[p.name] = JSON.stringify(json);
          }
        }
  
        opts.responseContentType = $('div select[name=responseContentType]', $(this.el)).val();
        opts.requestContentType = $('div select[name=parameterContentType]', $(this.el)).val();
        $('.response_throbber', $(this.el)).show();
        if (isFileUpload) {
          $('.request_url', $(this.el)).html('<pre></pre>');
          $('.request_url pre', $(this.el)).text(this.invocationUrl);
  
          opts.useJQuery = true;
          map.parameterContentType = 'multipart/form-data';
          this.map = map;
          return this.model.execute(map, opts, this.showCompleteStatus, this.showErrorStatus, this);
        } else {
          this.map = map;
          return this.model.execute(map, opts, this.showCompleteStatus, this.showErrorStatus, this);
        }
      }
    }