String.prototype.trim = function() {
    a = this.replace(/^\s+/, '');
    return a.replace(/\s+$/, '');
};

function isAlphabetic(field, errMsg)
{   
    var name = field.name;
    var val  = field.value;
    var errDiv = document.getElementById(name+'_errMsg');

    if (val.match(/^[a-zA-Z-. ]+$/))
    {
        errDiv.style.display = 'none';
        return true;
    }
    else
    {   
        errDiv.innerHTML = errMsg;
        errDiv.style.display = 'block';
        field.focus();
        return false;
    }
 }
         
 // check to see if input is alphanumeric
function isAlphaNumeric(field, errMsg)
{           
    var name = field.name;
    var val  = field.value;
    var errDiv = document.getElementById(name+'_errMsg');            
    if (val.match(/^[a-zA-Z0-9]+$/))
    {
        errDiv.style.display = 'none';
        return true;
    }
    else
    {   
        errDiv.innerHTML = errMsg;
        errDiv.style.display = 'block';
        field.focus();
        return false;
    }
}
        
function emailCheck (val) {
    //if (val.match(/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/))
	if(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(val))
    {
        return true;
    } else {
        return false;
    }
}

// check to see if input is a valid email address
function isEmailAddress(field, errMsg)
{
    var name = field.name;
    var val  = field.value;
    var errDiv = document.getElementById(name+'_errMsg');
    if (emailCheck (val))
    {
        errDiv.style.display = 'none';
        return true;
    }
    else
    {
        errDiv.innerHTML = errMsg;
        errDiv.style.display = 'block';
        field.focus();
        return false;
    }
}

function checkNull(field, errMsg) {        
    var name = field.name;
    var val  = field.value;            
    var errDiv = document.getElementById(name+'_errMsg');            
    if (val == '') {
        errDiv.style.display = 'block';
        errDiv.innerHTML = errMsg;
        field.focus();
        return false;
    } else {
        errDiv.style.display = 'none';
        return true;
    }        
}

function passLengthCheck(field, errMsg) {
    var name        = field.name;
    var passLength  = field.value.length;
    var errDiv      = document.getElementById(name+'_errMsg');
    if (!(passLength >= 6 && passLength <=10)) {
        errDiv.style.display = 'block';
        errDiv.innerHTML = errMsg;
        field.focus();
        return false;
    } else {
        errDiv.style.display = 'none';
        return true;
    }  
}

function zipCodeLengthCheck(field, errMsg) {
    var name        = field.name;
    var passLength  = field.value.length;
    var errDiv      = document.getElementById(name+'_errMsg');
    if (!(passLength >= 5)) {
        errDiv.style.display = 'block';
        errDiv.innerHTML = errMsg;
        field.focus();
        return false;
    } else {
        errDiv.style.display = 'none';
        return true;
    }  
}
        

function showErrorMessage(divId, msg) {
    var errDiv = document.getElementById(divId);  
    errDiv.innerHTML = msg;
    errDiv.style.display = 'block';
}

function loginForm_validation() {
    document.getElementById('errorMessage').style.display = 'none';
    var frm = document.loginForm;
	var EmailErr   = '';
	var PassErr    = '';
    if (! checkNull(frm.emailAddressLog, 'Please enter your email address.')) {
        EmailErr   =  1;
	} else {
		if (! isEmailAddress(frm.emailAddressLog, 'Sorry, that format is not recognized. Please try again.')) {
			EmailErr = 1;
		}
	}
    if (! checkNull(frm.passwordLog, 'Please enter your password.')) {
        PassErr   =  1;
    } 

	if (EmailErr == 1)
	{
		frm.emailAddressLog.focus();
		return false;
	} 
	else {		
			if (PassErr == 1)
			{
				frm.passwordLog.focus();
				return false;
			}else
			{
			return true;
			}
		}
}

function removeText() {
    var textVal = 'Enter up to 100 email addresses separated by commas ex: friend1@email.com, friend2@email.com, friend3@email.com';
    var frm = document.inviteForm;    
    if (frm.emailInput.value == textVal) {
        frm.emailInput.value = '';
        frm.emailInput.focus();
    }
}

function showText() {
    var textVal = 'Enter up to 100 email addresses separated by commas ex: friend1@email.com, friend2@email.com, friend3@email.com';
    var frm = document.inviteForm;    
    if (frm.emailInput.value == '') {
        frm.emailInput.value = textVal;
    }
}

function inviteForm_validation() {
    var frm     = document.inviteForm;
    var textVal = 'Enter up to 100 email addresses separated by commas ex: friend1@email.com, friend2@email.com, friend3@email.com';
    if (! checkNull(frm.emailMessage, "Please enter message")) {
        return false;
    }
    if (! checkNull(frm.emailInput, "Please enter your friend's email addresses")) {
        return false;
    }
    if (frm.emailInput.value == textVal) {
        var errDiv = document.getElementById('emailInput_errMsg');
        errDiv.innerHTML = "Please enter your friend's email addresses";
        errDiv.style.display = 'block';
        frm.emailInput.focus();
        return false;
    }
    var emailAddresses = frm.emailInput.value;
    var emailArray     = emailAddresses.split(",");
    var emailCnt       = emailArray.length;

    if (emailCnt > 100) {
        var errDiv = document.getElementById('emailInput_errMsg');
        errDiv.innerHTML = 'Enter only 100 email addresses';
        errDiv.style.display = 'block';
        return false;
    }
    for (i=0; i< emailCnt; i++) {
        emailArray[i] = emailArray[i].trim();
        if (emailArray[i] != '') {        
            if (!emailCheck(emailArray[i])) {
                var errDiv = document.getElementById('emailInput_errMsg');
                errDiv.innerHTML = '"'+emailArray[i]+'" is not a valid email address';
                errDiv.style.display = 'block';
                return false;
            }
        }
    }
}



function forgotForm_validation()
{
	document.getElementById('ForgotDisplayDiv').style.display = 'none';
    var frm = document.forgotForm;
    if (! checkNull(frm.emailAddressForgot, 'Please enter your email address.')) {
        return false;
    }
    if (! isEmailAddress(frm.emailAddressForgot, 'Sorry, that format is not recognized. Please try again.')) {
        return false;
    }
	return true;
}


function isValidPassword(field, errMsg) 
{

    var name = field.name;
    var val  = field.value;
    var errDiv = document.getElementById(name+'_errMsg');
    if (val.match(/^[a-zA-Z0-9\$,@#~`\%\*\^\&\(\)\=\[\]\}\{\;\:\'\"\<\>\?\|\\\!\.]+$/))
    {
        errDiv.style.display = 'none';
        return true;
    }
    else
    {   
        errDiv.innerHTML = errMsg;
        errDiv.style.display = 'block';
        field.focus();
        return false;
    }
}

function regForm_validation() {
    document.getElementById('errorMessage').style.display = 'none';
	document.getElementById('regErrorMessage').style.display = 'none';
    var frm            = document.regForm;
	var setFocus       = '';
	var firstNameErr   = '';
	var lastNameErr    = '';
	var emailErr       = '';
	var confEmailErr   = '';
	var passErr        = '';
	var confPassErr    = '';
	var zipErr         = '';
	var agreeErr       = '';


    if (! checkNull(frm.firstName, 'Please enter your first name.')) {
		firstNameErr    = 1;
    } else {
		if (! isAlphabetic(frm.firstName, 'Sorry, that format is not recognized. Please try again.')) {
			firstNameErr = 1;
		}
	}
    
    if (! checkNull(frm.lastName, 'Please enter your last name.')) {
		lastNameErr = 1;
    } else {
		if (! isAlphabetic(frm.lastName, 'Sorry, that format is not recognized. Please try again.')) {			
			lastNameErr = 1;
		}
	}
    
    if (! checkNull(frm.emailAddress, 'Please enter your email address.')) {
		emailErr = 1;
    } else {
		if (! isEmailAddress(frm.emailAddress, 'Sorry, that format is not recognized. Please try again.')) {
			emailErr = 1;
		}
	}
    
    if (! checkNull(frm.confirmEmailAddress, 'Please enter your email address.')) {
		confEmailErr = 1;
    }  else {
		 if (! isEmailAddress(frm.confirmEmailAddress, 'Sorry, that format is not recognized. Please try again.')) {
			confEmailErr = 1;
		}
	}
    
	if ((frm.emailAddress.value != '') && (frm.confirmEmailAddress.value != ''))
	{
		if (frm.emailAddress.value != frm.confirmEmailAddress.value) {
			var errDiv = document.getElementById('emailAddress_errMsg');
			errDiv.style.display = 'none';
			errDiv.innerHTML = 'Please make sure your email addresses are identical.';
			errDiv.style.display = 'block';
			emailErr = 1;
		}
	}
    
    if (! checkNull(frm.password, 'Please enter a password.')) {     
		passErr = 1;
    } else {
		if (! isValidPassword(frm.password, 'Sorry, that format is not recognized. Please try again.')) {
			passErr = 1;
		} else {            
            if (! passLengthCheck(frm.password, 'Please make sure your password is between six and ten alphanumeric case-sensitive characters.')) {
                passErr = 1;
            }
        }
	}
    
    if (! checkNull(frm.confirmPassword, 'Please enter a password.')) {
		confPassErr = 1;
    } else {
		if (! isValidPassword(frm.confirmPassword, 'Sorry, that format is not recognized. Please try again.')) {
			confPassErr = 1;
		} else {           
            if (! passLengthCheck(frm.confirmPassword, 'Please make sure your password is between six and ten alphanumeric case-sensitive characters.')) {
                confPassErr = 1;
            }
        }
    }

    if ((frm.password.value != '') && (frm.confirmPassword.value != ''))
	{
		if (frm.password.value != frm.confirmPassword.value) {
			var errDiv = document.getElementById('password_errMsg');
			errDiv.style.display = 'none';            
			errDiv.innerHTML = 'Please make sure your password and confirmed password are identical.';
			errDiv.style.display = 'block';
			passErr = 1;
		}
	}

    if (! checkNull(frm.zipCode, 'Please enter your zip/postal code.')) {
        setFocus   = 'zipCode';
        zipErr     = 1;
    } else {
        if (! isAlphaNumeric(frm.zipCode, 'Sorry, that format is not recognized. Please try again.')) {
            setFocus   = 'zipCode';
            zipErr     = 1;
        } else {           
            if (! zipCodeLengthCheck(frm.zipCode, 'Please enter valid zip/postal code.')) {
                setFocus   = 'zipCode';
                zipErr     = 1;
            }
        }
    }
    
    var errDiv = document.getElementById('agree_errMsg');
    errDiv.style.display = 'none';    
    if (! frm.agree.checked) {
        errDiv.innerHTML = 'Please agree to the Terms of Use';
        errDiv.style.display = 'block';
		agreeErr = 1;
    }


	if (firstNameErr == 1)
	{
		frm.firstName.focus();
		return false;
	} 
	else {
		
		if (lastNameErr == 1)
		{
			frm.lastName.focus();
			return false;
		}
		else
		{
			if (emailErr == 1)
			{
				frm.emailAddress.focus();
				return false;
			}
			else {
				if (confEmailErr == 1)
				{
					 frm.confirmEmailAddress.focus();
					 return false;
				}
				else 
				{
					if (passErr == 1)
					{
						frm.password.focus();
						 return false;
					}
					else {
						if (confPassErr == 1)
						{
							frm.confirmPassword.focus();
							 return false;
						}
						else {
							
							if (zipErr == 1)
							{
								 frm.zipCode.focus();
								 return false;
							} else {
								if (agreeErr == 1)
								{
									 frm.agree.focus();
									 return false;
								}
								else {
									return true;

								}
							}		
						
						}

					}
				}

			}
		}
	}

}

function myAccountForm_validation() {
    var frm = document.myAccountForm;
    if (! checkNull(frm.emailAddress, 'Please enter your email address.')) {
        return false;
    }
    if (! isEmailAddress(frm.emailAddress, 'Sorry, that format is not recognized. Please try again.')) {
        return false;
    }
    
    if (! checkNull(frm.confirmEmailAddress, 'Please enter your email address.')) {
        return false;
    }
    if (! isEmailAddress(frm.confirmEmailAddress, 'Sorry, that format is not recognized. Please try again.')) {
        return false;
    }
    var errDiv = document.getElementById('emailAddress_errMsg');
    errDiv.style.display = 'none';            
    if (frm.emailAddress.value != frm.confirmEmailAddress.value) {
        errDiv.innerHTML = 'Please make sure your email addresses are identical.';
        errDiv.style.display = 'block';
        frm.emailAddress.focus();
        return false;
    }
    
    if ((frm.password.value != '') || (frm.forcePasswordChange.value == 1)){
        if (frm.forcePasswordChange.value == 1) {
            if (! checkNull(frm.password, 'Please enter a password.')) {
                return false;
            }
        }
        if (! isValidPassword(frm.password, 'Sorry, that format is not recognized. Please try again.')) {
            return false;
        } else {
            if (! passLengthCheck(frm.password, 'Please make sure your password is between six and ten alphanumeric case-sensitive characters.')) {
                return false;
            }
        }
        
        if (! checkNull(frm.confirmPassword, 'Please enter a password.')) {
            return false;
        } else {
            if (! isValidPassword(frm.confirmPassword, 'Sorry, that format is not recognized. Please try again.')) {
                return false;
            }
            else {
                if (! passLengthCheck(frm.confirmPassword, 'Please make sure your password is between six and ten alphanumeric case-sensitive characters.')) {
                    return false;
                }
            }
        }
        
        var errDiv = document.getElementById('password_errMsg');
        errDiv.style.display = 'none';            
        if (frm.password.value != frm.confirmPassword.value) {
            errDiv.innerHTML = 'Please make sure your password and confirmed password are identical.';
            errDiv.style.display = 'block';
            frm.password.focus();
            return false;
        }
    }
    if (! checkNull(frm.zipCode, 'Please enter your zip/postal code.')) {
        return false;
    }
    if (! isAlphaNumeric(frm.zipCode, 'Sorry, that format is not recognized. Please try again.')) {
        return false;
    }
    if (! zipCodeLengthCheck(frm.zipCode, 'Please enter valid zip/postal code.')) {
        return false;
    }
}

function clearUpdateErrorDivs() {
    document.getElementById('emailAddress_errMsg').style.display        = 'none';
    document.getElementById('confirmEmailAddress_errMsg').style.display = 'none';
    document.getElementById('password_errMsg').style.display            = 'none';
    document.getElementById('confirmPassword_errMsg').style.display     = 'none';
    document.getElementById('zipCode_errMsg').style.display             = 'none';
}
