function emailCheck (emailStr) {
  var checkTLD = 1;
  var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
  var emailPat = /^(.+)@(.+)$/;
  var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
  var validChars = "\[^\\s" + specialChars + "\]";
  var quotedUser = "(\"[^\"]*\")";
  var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
  var atom = validChars + '+';
  var word = "(" + atom + "|" + quotedUser + ")";
  var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
  var domainPat = new RegExp("^" + atom + "(\\." + atom + ")*$");
  var matchArray = emailStr.match(emailPat);
  if (matchArray == null) return false;
  var user = matchArray[1];
  var domain = matchArray[2];
  for(i=0; i<user.length; i++)
    if(user.charCodeAt(i)>127) return false;
  for(i=0; i<domain.length; i++)
    if(domain.charCodeAt(i)>127) return false;
  if(user.match(userPat)==null) return false;
  var IPArray = domain.match(ipDomainPat);
  if(IPArray != null) {
    for(var i=1;i<=4;i++)
      if(IPArray[i]>255) return false;
    return true;
  }
  var atomPat = new RegExp("^" + atom + "$");
  var domArr = domain.split(".");
  var len = domArr.length;
  for(i=0; i<len; i++)
    if(domArr[i].search(atomPat)==-1) return false;
  if(checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) return false;
  if(len<2) return false;
  return true;
}

function LTrim(str) {
  var whitespace = ' \t\n\r';
  var s = str;
  if(whitespace.indexOf(s.charAt(0)) != -1) {
    var j=0, i = s.length;
    while(j < i && whitespace.indexOf(s.charAt(j)) != -1) j++;
    s = s.substring(j, i);
  }
  return s;
}

function RTrim(str) {
  var whitespace = ' \t\n\r';
  var s = str;
  if(whitespace.indexOf(s.charAt(s.length-1)) != -1) {
    var i = s.length - 1;
    while(i >= 0 && whitespace.indexOf(s.charAt(i)) != -1) i--;
    s = s.substring(0, i+1);
  }
  return s;
}

function Trim(str) { return RTrim(LTrim(str)); }

/*
function CheckDate(m, d, y) {
	var monthLength = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var day = parseInt( d ); // frm.datepurchased_dd.value
	var month = parseInt( m ); // frm.datepurchased_mm.value
	var year = parseInt( y ); // frm.datepurchased_yyyy.value
	// Empty date
	if (!day || !month || !year) return false;
  // Invalid date
  if(month > 12) return false;
	if(year/4 == parseInt(year/4)) monthLength[1] = 29;
	if(day > monthLength[month-1]) return false;
	monthLength[1] = 28;
	var now = new Date();
	now = now.getTime(); //NN3
	var dateToCheck = new Date(year, month-1, day, 0, 0, 0, 0);
	// dateToCheck.setYear(year); dateToCheck.setMonth(month-1); dateToCheck.setDate(day);
	var checkDate = dateToCheck.getTime();
	if(now < checkDate) return 1;
	if(now > checkDate) return -1;
  return 0;
}
*/

function CheckDate(month, day, year) {
  month = parseInt(month);
  day = parseInt(day);
  year = parseInt(year);
  if(isNaN(month) || isNaN(day) || isNaN(year))
    return false;
  if(year >= 0 && year <= 99)
    year += 1900;
  var d = new Date(year, month - 1, day);
  return (day == d.getDate()) && (month == d.getMonth() + 1) && (year == d.getFullYear()) ;
}

