whole_func_string: function setupDrop(dropbox, opts) {
  
          if (!FileReaderJS.enabled) {
              return;
          }
          var instanceOptions = extend(extend({}, FileReaderJS.opts), opts);
          var dragClass = instanceOptions.dragClass;
          var initializedOnBody = false;
  
          // Bind drag events to the dropbox to add the class while dragging, and accept the drop data transfer.
          dropbox.addEventListener("dragenter", onlyWithFiles(dragenter), false);
          dropbox.addEventListener("dragleave", onlyWithFiles(dragleave), false);
          dropbox.addEventListener("dragover", onlyWithFiles(dragover), false);
          dropbox.addEventListener("drop", onlyWithFiles(drop), false);
  
          // Bind to body to prevent the dropbox events from firing when it was initialized on the page.
          document.body.addEventListener("dragstart", bodydragstart, true);
          document.body.addEventListener("dragend", bodydragend, true);
          document.body.addEventListener("drop", bodydrop, false);
  
          function bodydragend(e) {
              initializedOnBody = false;
          }
  
          function bodydragstart(e) {
              initializedOnBody = true;
          }
  
          function bodydrop(e) {
              if (e.dataTransfer.files && e.dataTransfer.files.length ){
                  e.stopPropagation();
                  e.preventDefault();
              }
          }
  
          function onlyWithFiles(fn) {
              return function() {
                  if (!initializedOnBody) {
                      fn.apply(this, arguments);
                  }
              };
          }
  
          function drop(e) {
              e.stopPropagation();
              e.preventDefault();
              if (dragClass) {
                  removeClass(dropbox, dragClass);
              }
              processFileList(e, e.dataTransfer.files, instanceOptions);
          }
  
          function dragenter(e) {
              e.stopPropagation();
              e.preventDefault();
              if (dragClass) {
                  addClass(dropbox, dragClass);
              }
          }
  
          function dragleave(e) {
              if (dragClass) {
                  removeClass(dropbox, dragClass);
              }
          }
  
          function dragover(e) {
              e.stopPropagation();
              e.preventDefault();
              if (dragClass) {
                  addClass(dropbox, dragClass);
              }
          }
      }
func_code_string: function setupDrop(dropbox, opts) {
  
          if (!FileReaderJS.enabled) {
              return;
          }
          var instanceOptions = extend(extend({}, FileReaderJS.opts), opts);
          var dragClass = instanceOptions.dragClass;
          var initializedOnBody = false;
  
          // Bind drag events to the dropbox to add the class while dragging, and accept the drop data transfer.
          dropbox.addEventListener("dragenter", onlyWithFiles(dragenter), false);
          dropbox.addEventListener("dragleave", onlyWithFiles(dragleave), false);
          dropbox.addEventListener("dragover", onlyWithFiles(dragover), false);
          dropbox.addEventListener("drop", onlyWithFiles(drop), false);
  
          // Bind to body to prevent the dropbox events from firing when it was initialized on the page.
          document.body.addEventListener("dragstart", bodydragstart, true);
          document.body.addEventListener("dragend", bodydragend, true);
          document.body.addEventListener("drop", bodydrop, false);
  
          function bodydragend(e) {
              initializedOnBody = false;
          }
  
          function bodydragstart(e) {
              initializedOnBody = true;
          }
  
          function bodydrop(e) {
              if (e.dataTransfer.files && e.dataTransfer.files.length ){
                  e.stopPropagation();
                  e.preventDefault();
              }
          }
  
          function onlyWithFiles(fn) {
              return function() {
                  if (!initializedOnBody) {
                      fn.apply(this, arguments);
                  }
              };
          }
  
          function drop(e) {
              e.stopPropagation();
              e.preventDefault();
              if (dragClass) {
                  removeClass(dropbox, dragClass);
              }
              processFileList(e, e.dataTransfer.files, instanceOptions);
          }
  
          function dragenter(e) {
              e.stopPropagation();
              e.preventDefault();
              if (dragClass) {
                  addClass(dropbox, dragClass);
              }
          }
  
          function dragleave(e) {
              if (dragClass) {
                  removeClass(dropbox, dragClass);
              }
          }
  
          function dragover(e) {
              e.stopPropagation();
              e.preventDefault();
              if (dragClass) {
                  addClass(dropbox, dragClass);
              }
          }
      }
func_documentation_string: setupDrop: bind the 'drop' event for a DOM element