var legalChars = 'ABCDEFGHIJKLMNOPQRSTRUVWXYZ0123456789-_@.'
var legalAlpha = 'ABCDEFGHIJKLMNOPQRSTRUVWXYZ' //for toplevel validation
function IsValidEmail(addr){
return CheckEmail(addr) == 0
}
function CheckEmail(addr){
// Return codes
var retValid = 0
var retNotExactlyOneAt = -1
var retNotEnoughDomainParts = -2
var retBadCharTopLevel = -3
var retSecondLevelTooSmall = -4
var retNameTooShort = -5
var retBadCharacters = -6
var retDoubleDots = -7
var retMisplacedDot = -8
var retNoValue = -9
var retTopLevelTooShort = -10
var retTopLevelTooLong = -11
var ADDR = addr.toUpperCase()
var n
var c = 0
if (ADDR.length == 0) return retNoValue
for (n = 0; n < ADDR.length; n++) {
if (legalChars.indexOf(ADDR.charAt(n)) == -1) return retBadCharacters
if (n > 0 && (ADDR.charAt(n - 1) == '.' && ADDR.charAt(n) == '.')) return retDoubleDots
if (ADDR.charAt(n) == '@') c++
}
if (c != 1) return retNotExactlyOneAt
var at = ADDR.indexOf('@')
var name = ADDR.substring(0, at)
var domain = ADDR.substring(at + 1, ADDR.length)
var toplevel = domain.substring(domain.lastIndexOf('.'), domain.length)
if (ADDR.charAt(0) == '.' || ADDR.charAt(ADDR.length - 1) == '.' ||
ADDR.charAt(at - 1) == '.' || ADDR.charAt(at + 1) == '.') return retMisplacedDot
if (domain.indexOf('.') == -1) return retNotEnoughDomainParts
var start = 0
var next = domain.indexOf('.')
if (domain.substring(start, next).length < 1) return retSecondLevelTooSmall //cf 2 to 1
while (next != -1){
if (domain.substring(start, next).length < 1) return retSecondLevelTooSmall //cf 2 to 1
start = next + 1
next = domain.indexOf('.', start)
}
if (name.length < 1) return retNameTooShort //cf 2 to 1
if (toplevel.length < 3) return retTopLevelTooShort
for (n = 1; n < toplevel.length; n++)
if (legalAlpha.indexOf(toplevel.charAt(n)) == -1) return retBadCharTopLevel
if (toplevel.length > 4) return retTopLevelTooLong
return retValid

}
function IsValidPhone(num){
return CheckPhone(num) == 0
}
function CheckPhone(num){
// Return codes
var retValid = 0
var retNotEnoughChars = -1
var retNotEnoughNums = -2
var filteredValues = "1234567890" // Characters stripped out
var NUM = num.toUpperCase()
var chr = ""
var n
var NewNUM = ""
if (NUM.length < 10) return retNotEnoughChars;
for (n = 0; n < NUM.length; n++){
chr = NUM.charAt(n)
if (filteredValues.indexOf(chr) != -1) NewNUM += chr
}
if (NewNUM.length < 10) return retNotEnoughNums
document.forms["frmInfo"].phone.value = NewNUM
return retValid
}
function IsValidZip(num){
return CheckZip(num) == 0
}
function CheckZip(num){
// Return codes
var retValid = 0
var retNotEnoughChars = -1
var retNotEnoughNums = -2
var filteredValues = "1234567890" // Characters stripped out
var NUM = num.toUpperCase()
var chr = ""
var n
var NewNUM = ""
if (NUM.length < 5) return retNotEnoughChars;
for (n = 0; n < NUM.length; n++){
chr = NUM.charAt(n)
if (n == 5 && chr =="-") NewNUM += chr
if (filteredValues.indexOf(chr) != -1) NewNUM += chr
}
if (NewNUM.length < 5) return retNotEnoughNums;
document.forms["frmInfo"].zip.value = NewNUM
return retValid;
}
function LRTrim(str){
if (str)
{
var strTrim = ""
var len = str.length

// Find non white space at start
for (i=0; i < len; i++){
strChar = str.charAt(i);
if (strChar != " " && strChar != "\t") break
}
//Find non white space at end
for (j=(len - 1); j > i; j--){
strChar = str.charAt(j)
if (strChar != " " && strChar != "\t") break
}
// Loop through and copy the remaining data
for (k=i; k <= j; k++)
strTrim += str.charAt(k)
return strTrim
}
return ""
}
function SubmitToNext(){
var strError = Validate();
if (strError == ""){
document.forms["frmInfo"].action="/company/confirm.aspx"
document.forms["frmInfo"].submit()
}
else{
document.forms["frmInfo"].Submit.disabled = false
strErrorDisplayText="Please correct the following errors before continuing:\n"
strErrorDisplayText=strErrorDisplayText + strError
alert(strErrorDisplayText)
}
}
function Validate(){
document.forms["frmInfo"].Submit.disabled = true
if (window.focus) var bSetFocus=true
else var bSetFocus=false
var FormType = document.forms["frmInfo"].frmtype.value
var strError = ""
if (FormType == "E")
{
if (strError != "")
bSetFocus = false
strError = ValidateLiterature(bSetFocus)
if (strError != "")
bSetFocus = false
strError = strError + ValidateAddress(bSetFocus)
}
else var strError = ValidateQuestion(bSetFocus)

if (strError != "")
bSetFocus = false
strError = strError + ValidateName(bSetFocus);
if ((FormType == "A") || (FormType == "B") || (FormType == "E"))
{
if (strError != "")
bSetFocus = false
strError = strError + ValidateCity(bSetFocus)
}
if ((FormType == "A") || (FormType == "E"))
{
if (strError != "")
bSetFocus = false
strError = strError + ValidateState(bSetFocus)
if (strError != "")
bSetFocus = false
strError = strError + ValidateZip(bSetFocus)
}
if (FormType == "B")
{
if (strError != "")
bSetFocus = false
strError = strError + ValidateCountry(bSetFocus)
}
if (FormType != "D")
{
if (strError != "")
bSetFocus = false
strError = strError + ValidateResponse(bSetFocus)
}
return strError
}
function ValidateQuestion(bSetFocus){
var str = document.forms["frmInfo"].question.value;
if (str.length < 1){
if (bSetFocus)
document.forms["frmInfo"].question.focus()
var strInvalidQuestionText = "\tEnter a valid question\n"
return strInvalidQuestionText
}
return ""
}
function ValidateLiterature(bSetFocus){
var i;
for (i = 1; i < 14; i++) {
if (document.forms["frmInfo"].elements[i].checked) return ""
}
if (bSetFocus)
document.forms["frmInfo"].question.focus()
var strInvalidLiteratureText = "\tSelect the literature you wish to receive\n"
return strInvalidLiteratureText

}
function ValidateName(bSetFocus){
var str = document.forms["frmInfo"].name.value
if (str.length < 1){
if (bSetFocus)
document.forms["frmInfo"].name.focus()
var strInvalidNameText = "\tEnter your name\n"
return strInvalidNameText;
}
return ""
}
function ValidateAddress(bSetFocus){
var str = document.forms["frmInfo"].address.value
if (str.length < 1){
if (bSetFocus)
document.forms["frmInfo"].address.focus()
var strInvalidAddressText = "\tEnter your address\n"
return strInvalidAddressText
}
return "";
}
function ValidateCity(bSetFocus){
var str = document.forms["frmInfo"].city.value
if (str.length < 1){
if (bSetFocus)
document.forms["frmInfo"].city.focus()
var strInvalidCityText = "\tEnter your city\n"
return strInvalidCityText
}
return ""
}
function ValidateState(bSetFocus){
var str = ""
if(!document.forms["frmInfo"].state.value){
var selectIdx = document.forms["frmInfo"].state.selectedIndex
str = document.forms["frmInfo"].state.options[selectIdx].value
}
else str = document.forms["frmInfo"].state.value
if (str.length < 1){
if (bSetFocus)
document.forms["frmInfo"].state.focus()
var strInvalidStateText = "\tSelect your state from the drop-down box\n"
return strInvalidStateText
}
return ""
}
function ValidateZip(bSetFocus){
document.forms["frmInfo"].zip.value = LRTrim(document.forms["frmInfo"].zip.value)
if (!IsValidZip(document.forms["frmInfo"].zip.value)){
if (bSetFocus){
document.forms["frmInfo"].zip.focus()
document.forms["frmInfo"].zip.select()
}
var strInvalidZipText = "\tEnter a valid zip code (Enter using format ##### and Zip+4 if known)\n"
return strInvalidZipText
}
return ""

}
function ValidateCountry(bSetFocus){
var str = ""
if(!document.forms["frmInfo"].state.value){
var selectIdx = document.forms["frmInfo"].country.selectedIndex
str = document.forms["frmInfo"].country.options[selectIdx].value
}
else str = document.forms["frmInfo"].country.value
if (str.length < 1){
if (bSetFocus)
document.forms["frmInfo"].country.focus()
var strInvalidCountryText = "\tSelect your country from the drop-down box\n"
return strInvalidCountryText
}
return "";
}
function ValidateResponse(bSetFocus){
var ByWhat = ""
if(!document.forms["frmInfo"].respondby.value){
var selectIdx = document.forms["frmInfo"].respondby.selectedIndex
ByWhat = document.forms["frmInfo"].respondby.options[selectIdx].value
}
else ByWhat = document.forms["frmInfo"].respondby.value
switch (ByWhat){
case "Phone": 
var strP = ValidatePhone(bSetFocus)
return strP
case "Email": 
var strE = ValidateEmail(bSetFocus)
return strE
default:
if (bSetFocus)
document.forms["frmInfo"].respondby.focus()
var strInvalidResponse = "\tPlease select how you want us to respond, via Email or Phone\n"
return strInvalidResponse
}
return ""
}
function ValidateEmail(bSetFocus){
document.forms["frmInfo"].email.value = LRTrim(document.forms["frmInfo"].email.value)
if (!IsValidEmail(document.forms["frmInfo"].email.value)){
if (bSetFocus){
document.forms["frmInfo"].email.focus()
document.forms["frmInfo"].email.select()
}
var strInvalidEmailText = "\tEnter a valid email address (Enter using format someone@yourdomain.com)\n"
return strInvalidEmailText
}
return ""
}
function ValidatePhone(bSetFocus){
document.forms["frmInfo"].phone.value = LRTrim(document.forms["frmInfo"].phone.value)
if (!IsValidPhone(document.forms["frmInfo"].phone.value)){
if (bSetFocus){
document.forms["frmInfo"].phone.focus()
document.forms["frmInfo"].phone.select()
}
var strInvalidEmailText = "\tEnter a valid phone number (Enter using format ###/###-####)\n"
return strInvalidEmailText
}
return ""
}
//Debug For Validate Functions
//strTemp=str.length;
//strTemp="Validate ITEM-NAME: length of str: " + strTemp;
//alert(strTemp)