﻿function myCustomEmail() {
  try {
    this.RequestID = -1;
    this.MailTo = "";
    this.MailCc = "";
    this.MailSubject = "";
    this.MailBody = "";
    this.MailType = "";
  } catch (err) {
    alert(err.description + ' in function .myEmail.');
    }
}

function createCustomEmail(rid, strTo, strCc, strSubject, strBody, strType) {
  try {
  customEmail.RequestID = rid;
  customEmail.MailTo = strTo;
  customEmail.MailCc = strCc;
  customEmail.MailSubject = strSubject;
  customEmail.MailBody = strBody;
  customEmail.MailType = strType;
  
  return customEmail;
  
  } catch (err) {
    alert(err.description + ' in function .createCustomEmail.');
  }
}

function validateEmail(email) {
  var msg = "";
  msg += validateMailTo(email.MailTo);
  msg += validateCc(email.MailCc);
  msg += validateSubject(email.MailSubject);
  msg += validateBody(email.MailBody);
  return msg;
}

function validateSubject(subject) {
  msg = "";
  if (subject == "") {
    msg = "Subject: Subject required.\n";
  }
  return msg;
}

function validateBody(body) {
  msg = "";
  if (body == "") {
    msg = "Message: Mail message required.\n";
  }
  return msg;
}

function validateMailTo(mailstr) {
  var msg = "";
  if (mailstr == "") {
    msg = "To: Email address required.\n";
  } else if (mailstr.length > 300) {
    msg = "To: Max length of 300 characters exceeded.\n";
  } else if (getInvalidEmail(mailstr).length > 0) {
    var ary = new Array();
    ary = getInvalidEmail(mailstr);
    for (i = 0; i < ary.length; i++) {
      msg += "To: " + ary[i] + " is not a valid email address.\n";
    }
  }
  return msg;
}

function validateCc(mailstr) {
  var msg = "";
  if (mailstr != "" && getInvalidEmail(mailstr).length > 0) {
    var ary = new Array();
    ary = getInvalidEmail(mailstr);
    for (i = 0; i < ary.length; i++) {
      msg += "Cc: " + ary[i] + " is not a valid email address.\n";
    }
  }
  return msg;
}

function getInvalidEmail(mailstr) {
  // First get rid of any leading or trailing white space
  mailstr = trim(mailstr);
  // Then get rid of trailing semi-colon
  if (mailstr.substring(mailstr.length-1,mailstr.length) == ';') {
    mailstr = mailstr.substring(0, mailstr.length-1);
  }
  // array to hold the individual email addresses
  var ary = new Array();
  // array to hold 
  var addys = new Array();
  // array to hold invalid email addresses
  var invalidaddys = new Array();
  // filter to check for valid email addresses
  var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  // Split the email address string on the semi-colons
  ary = mailstr.split(";");
    // Loop through the array and test for invalid email addresses
    // Save the invalid email addresses in an array and return it
    for (i = 0; i < ary.length; i++) {
      if (!filter.test(trim(ary[i]))) {
        invalidaddys[invalidaddys.length] = trim(ary[i]);
      }
    }
  return invalidaddys;
}

function trim(strText) { 
  // this will get rid of leading spaces 
  while (strText.substring(0,1) == ' ') 
      strText = strText.substring(1, strText.length);

  // this will get rid of trailing spaces 
  while (strText.substring(strText.length-1,strText.length) == ' ')
      strText = strText.substring(0, strText.length-1);

 return strText;
} 
