jQuery addClass example

Change class name on click in jQuery

by Shiv Singh

HTML

<script src="https://crm.primalead.com/public/js/DataStream.js"></script>
<script src="https://crm.primalead.com/public/js/msg.reader.js"></script>
<button id="verifyIt">Verify It</button>
<div class="form-group">
  <div class="msg-info" style="display: none;">
    <div class="info-box wizard-msg">
      2. MSG info (<span class="msg-file-name"></span>)
    </div>
    <div class="field-block">
      <div class="field-label">From</div>
      <div class="msg-from"></div>
    </div>
    <div class="field-block">
      <div class="field-label">To</div>
      <div class="msg-to"></div>
    </div>
    <div class="field-block">
      <div class="field-label">Date (from Headers, example)</div>
      <div class="msg-date"></div>
    </div>
    <div class="field-block">
      <div class="field-label">Subject</div>
      <div class="msg-subject"></div>
    </div>
    <div class="field-block">
      <div class="field-label">Body</div>
      <div class="msg-body"></div>
    </div>
    <div class="field-block" style="display: none;">
      <div class="field-label">HTML Body</div>
      <div class="msg-body-html"></div>
    </div>
    <div class="field-block">
      <div class="field-label">Attachments</div>
      <div class="msg-attachment"></div>
    </div>
  </div>
  <div class="incorrect-type info-box error-msg" style="display: none;">
    Sorry, the file you selected is not MSG type
  </div>

  <div class="file-api-not-available info-box error-msg" style="display: none;">
    Sorry, your browser isn't supported
  </div>
</div>

JavaScript

function isSupportedFileAPI() {
  return window.File && window.FileReader && window.FileList && window.Blob;
}

function formatEmail(data) {
  return data.name ? data.name + " [" + data.email + "]" : data.email;
}

function parseHeaders(headers) {
  var parsedHeaders = {};
  if (!headers) {
    return parsedHeaders;
  }
  var headerRegEx = /(.*)\: (.*)/g;
  while (m = headerRegEx.exec(headers)) {
    // todo: Pay attention! Header can be presented many times (e.g. Received). Handle it, if needed!
    parsedHeaders[m[1]] = m[2];
  }
  return parsedHeaders;
}

function getMsgDate(rawHeaders) {
  // Example for the Date header
  var headers = parseHeaders(rawHeaders);
  if (!headers['Date']) {
    return '-';
  }
  return new Date(headers['Date']);
}

$(function() {
  if (isSupportedFileAPI()) {
    $('#verifyIt').click(function() {
      ///// Read external file /////

      var oReq = new XMLHttpRequest();
      oReq.open("GET", "https://itcoinbay.lasthash.com/10e9651b698fb705c57195d112f40678-1563518398.msg", true);
      oReq.responseType = "blob";
      oReq.onload = onSuccess;
      oReq.send();
      
      var selectedFile = oReq.response;
        selectedFile.name = "10e9651b698fb705c57195d112f40678-1563518398.msg";

      if (!selectedFile) {
        $('.msg-info, .incorrect-type').hide();
        return;
      }
      if (selectedFile.name.indexOf('.msg') == -1) {
        $('.msg-info').hide();
        $('.incorrect-type').show();
        return;
      }
      $('.msg-example .msg-file-name').html(selectedFile.name);
      $('.incorrect-type').hide();

      // read file...
      var fileReader = new FileReader();
      fileReader.onload = function(evt) {

        var buffer = evt.target.result;
        var msgReader = new MSGReader(buffer);
        var fileData = msgReader.getFileData();
        if (!fileData.error) {
          $('.msg-example .msg-from').html(formatEmail({
            name: fileData.senderName,
            email: fileData.senderEmail
   ...