// JavaScript Document

var errorField = '';

function setErrorField (str) {
	if (!errorField) { errorField = str; }
}

function checkField(strField, strMessage) {
	if (!getObj(strField).value) {
		setErrorField(strField);
		return strMessage; 
		}
	else { return ''; }
}


function validateEmailForm () {
	var bError = false;
	var strError = "";
	var strEmailErr;
	var radioObj;
	var formObj = getObj("frmEmail");
	var strErrorComment = "Required information:\n\n";

	strError += checkField("txtFirstName", "- Missing First Name\n");
	strError += checkField("txtLastName", "- Missing Last Name\n");
	strError += checkField("txtJobTitle", "- Missing Job Title\n");
	strError += checkField("txtCompany", "- Missing Company\n");

	strEmailErr = checkField("txtEmail", "- Missing Email\n");
	if (strEmailErr == "")
	{	
		if(!isValidEmail(getObj("txtEmail").value)) { strError += "- Invalid e-mail address. Please enter again.\n"; setErrorField("txtEmail"); }
	}
	else{
		strError += strEmailErr;
	}



	radioObj = formObj.elements['rbNewsletter'];
	if (!(radioObj[0].checked || radioObj[1].checked || radioObj[2].checked || radioObj[3].checked || radioObj[4].checked || radioObj[5].checked || radioObj[6].checked || radioObj[7].checked)) {
		strError += "- Missing Insider Interest\n"; setErrorField("rbNewsletter");
	}
	
	getObj("formType").value = 1;

	if (strError) { getObj(errorField).focus(); errorField=''; alert(strErrorComment + strError); }

	return !(strError);
}
	
function validateEmailForm2 () {
	var bError = false;
	var strError = "";
	var strEmailErr;
	var radioObj;
	var formObj = getObj("frmEmail");
	var strErrorComment = "Required information:\n\n";

	strError += checkField("txtFirstNameRefer", "- Missing First Name\n");
	strError += checkField("txtLastNameRefer", "- Missing Last Name\n");
	strError += checkField("txtJobTitleRefer", "- Missing Job Title\n");
	strError += checkField("txtCompanyRefer", "- Missing Company\n");
	
	strEmailErr = checkField("txtEmailRefer", "- Missing Email\n");
	if (strEmailErr == "")
	{	
		if(!isValidEmail(getObj("txtEmailRefer").value)) { strError += "- Invalid e-mail address. Please enter again.\n"; setErrorField("txtEmailRefer"); }
	}
	else{
		strError += strEmailErr;
	}

	var newsLetter = getObj("lstNewsletterRefer").value;
	if (newsLetter == "") {
		strError += "- missing Insider Interest\n"; setErrorField("lstNewsletterRefer");
	}

	getObj("formType").value = 2;

	if (strError) { getObj(errorField).focus(); errorField=''; alert(strErrorComment + strError); }

	return !(strError);
}

function getObj(name) {
	if (document.getElementById) { return document.getElementById(name); }
	else if (document.all) { return document.all[name]; }
	else if (document.layers) { return document.layers[name]; }
	else { return null; }
	}
	
function isValidEmail(email, required) {
    if (required==undefined) {   // if not specified, assume it's required
        required=true;
    }
    if (email==null) {
        if (required) {
            return false;
        }
        return true;
    }
    if (email.length==0) {  
        if (required) {
            return false;
        }
        return true;
    }
    if (! allValidChars(email)) {  // check to make sure all characters are valid
        return false;
    }
    if (email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
        return false;
    } else if (email.lastIndexOf(".") <= email.indexOf("@")) {  // last dot must be after the @
        return false;
    } else if (email.indexOf("@") == email.length) {  // @ must not be the last character
        return false;
    } else if (email.indexOf("..") >=0) { // two periods in a row is not valid
	return false;
    } else if (email.indexOf(".") == email.length) {  // . must not be the last character
	return false;
    }
    return true;
}

function allValidChars(email) {
  var parsed = true;
  var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
  for (var i=0; i < email.length; i++) {
    var letter = email.charAt(i).toLowerCase();
    if (validchars.indexOf(letter) != -1)
      continue;
    parsed = false;
    break;
  }
  return parsed;
}