
function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
}


function validateCorporateEmail(emlstr) { // used below:
	var error="";

	var tfld = trim(emlstr); 
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;

	var matchArray=tfld.match(emailPat);

	if (matchArray==null) 
	{		
        error = "Invalid email.\n";
		return error;
	}

	var domain=matchArray[2];	
	var domArr=domain.split(".");	
	var len=domArr.length;

	if (len<2)
	{		
        error = "Missing hostname or domain in email.\n";
		return error;
	}

	var hostname = domArr[domArr.length-2];
	var domainname = domArr[domArr.length-1];
	hostname = hostname.toLowerCase();
	domainname = domainname.toLowerCase();

	if (domainname.length!=2 && domainname.search(knownDomsPat)==-1) 
	{		
        error = "The email domain is incorrect.\n";
		return error;
	}

	if (hostname == "mail"
		|| hostname == "inbox"
		|| hostname == "aol"
		|| hostname == "fishfuse"
		|| hostname == "example"
		|| hostname == "mailinator"
		|| hostname == "mailinator2"
		|| hostname == "sogetthis"
		|| hostname == "mailin8r"
		|| hostname == "spamherelots"
		|| hostname == "tempinbox"	
		|| hostname == "nospam"	
		|| hostname == "aim"
		|| hostname == "thisisnotmyrealemail"
		|| hostname == "fastmail"
		)
	{		
        error = "Email should be your corporate email account.\n";
		return error;
	}
	
	return error;
}

/* ============================================== */

function validateEmpty(fld) {
    var error = "";

	var val = trim(fld.value);

    if (val.length == 0) {
        fld.style.background = 'Yellow'; 
        error = "The required field has not been filled in.\n"
    } else {
        fld.style.background = 'White';
    }
    return error;  
}

function validateUsername(fld) {
    var error = "";
    var illegalChars = /\W/; // allow letters, numbers, and underscores
 
    if (fld.value == "") {
        fld.style.background = 'Yellow'; 
        error = "You didn't enter a username.\n";
    } else if ((fld.value.length < 5) || (fld.value.length > 15)) {
        fld.style.background = 'Yellow'; 
        error = "The username is the wrong length.\n";
    } else if (illegalChars.test(fld.value)) {
        fld.style.background = 'Yellow'; 
        error = "The username contains illegal characters.\n";
    } else {
        fld.style.background = 'White';
    }
    return error;
}


function validateMismatch(fld1, fld2) {
    var error = "";
     
    if (fld1.value != fld2.value) {
        fld1.style.background = 'Yellow'; 
		fld2.style.background = 'Yellow';
        error = "Mismatch.\n";
    } else {
        fld1.style.background = 'White';
		fld2.style.background = 'White';
    }
    return error;
}


function validatePassword(fld) {
    var error = "";
    var illegalChars = /[\W_]/; // allow only letters and numbers 
 
    if (fld.value == "") {
        fld.style.background = 'Yellow';
        error = "You didn't enter a password.\n";
    } else if ((fld.value.length < 7) || (fld.value.length > 15)) {
        error = "The password is the wrong length. \n";
        fld.style.background = 'Yellow';
    } else if (illegalChars.test(fld.value)) {
        error = "The password contains illegal characters.\n";
        fld.style.background = 'Yellow';
    } else if (!((fld.value.search(/(a-z)+/)) && (fld.value.search(/(0-9)+/)))) {
        error = "The password must contain at least one numeral.\n";
        fld.style.background = 'Yellow';
    } else {
        fld.style.background = 'White';
    }
   return error;
}  



function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
	
	var error2 = validateCorporateEmail(tfld);	
   
    if (fld.value == "") {
        fld.style.background = 'Yellow';
        error = "You didn't enter an email address.\n";
    } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
        fld.style.background = 'Yellow';
        error = "Please enter a valid email address.\n";
    } else if (fld.value.match(illegalChars)) {
        fld.style.background = 'Yellow';
        error = "The email address contains illegal characters.\n";
    } else if (error2 != ""){
		fld.style.background = 'Yellow';
        error =	error2;	
    }	
	else {
        fld.style.background = 'White';
    }
    return error;
}



function validatePhone(fld) {
    var error = "";
    var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');    

   if (fld.value == "") {
        error = "You didn't enter a phone number.\n";
        fld.style.background = 'Yellow';
    } else if (isNaN(parseInt(stripped))) {
        error = "The phone number contains illegal characters.\n";
        fld.style.background = 'Yellow';
    } else if ((stripped.length < 10)) {
        error = "The phone number is the wrong length. Make sure you included an area code.\n";
        fld.style.background = 'Yellow';
    }
    return error;
}


