function formCheck(mode, description)
{ 
	if(document.forms[0].RECEIVE_YES_NO[0].checked == false && document.forms[0].RECEIVE_YES_NO[1].checked == false)
	{
		alert ("Please specify whether you wish to receive Packaging World?");
        	document.forms[0].RECEIVE_YES_NO[0].focus();
		return false;
	}

	if (ObjectExists(document.forms[0],"RECEIVE_YES_NO_HCP"))
	{
		if(document.forms[0].RECEIVE_YES_NO_HCP[0].checked == false && document.forms[0].RECEIVE_YES_NO_HCP[1].checked == false)
		{
			alert ("Please specify whether you wish to receive Healthcare Packaging?");
        		document.forms[0].RECEIVE_YES_NO_HCP[0].focus();
			return false;
		}
		else
		{
			if(document.forms[0].RECEIVE_YES_NO[1].checked == true)
			{
				// stop validation when "not to receive" response
				return true;
			}
		}
	}
	else
	{
		if(document.forms[0].RECEIVE_YES_NO[1].checked == true)
		{
			// stop validation when "not to receive" response
			return true;
		}
	}
	

	if ((mode == "SHORT") || (mode == "ABBR"))
	{
//Personal ID
		if (!checkDropdown(document.forms[0].PERSONAL_ID))
		{
			alert ("Please select your personal ID.");
			document.forms[0].PERSONAL_ID.focus();
			return false;
		}
	return true;
	}

	var USonly = true;
	if (ObjectExists(document.forms[0],"COUNTRY")) {USonly = false};

	if (mode == "ADD")
	{
		if(document.forms[0].FNAME.value == "")
		{
			alert ("Please specify your First name.");
        		document.forms[0].FNAME.focus();
			return false;
		}
		if(document.forms[0].LNAME.value == "")
		{
			alert ("Please specify your Last name.");
        		document.forms[0].LNAME.focus();
			return false;
		}
	}
	if (mode != "RENEW")
	{
		if(document.forms[0].TITLE.value == "")
		{
			alert ("Please specify your Title.");
	        	document.forms[0].TITLE.focus();
			return false;
		}
		if(document.forms[0].COMPANY.value == "")
		{
			alert ("Please specify your Company name.");
        		document.forms[0].COMPANY.focus();
			return false;
		}
		if(document.forms[0].ADDRESS2.value == "")
		{
			alert ("Please specify your Street Address.");
	        	document.forms[0].ADDRESS2.focus();
			return false;
		}
		if(document.forms[0].CITY.value == "")
		{
			alert ("Please specify your City.");
	        	document.forms[0].CITY.focus();
			return false;
		}
		if (document.forms[0].STATE.selectedIndex == 0)
		{
			if (USonly)
			{
				alert ("Please specify your State");
			}
			else
			{
				alert ("Please specify your State/Province or select 'I am not in the US or Canada'.");
			}
		        document.forms[0].STATE.focus();
			return false;
		}
		

		// validate Canadian state/postal code combination
		if (!ValidCanPostal(document.forms[0].STATE[document.forms[0].STATE.selectedIndex].value,document.forms[0].ZIPCODE.value))
		{
			alert ("Invalid Canadian province/postal code combination.");
	        	document.forms[0].STATE.focus();
			return false;
		}

		if (document.forms[0].STATE[document.forms[0].STATE.selectedIndex].value == "53")
		{
			if (document.forms[0].COUNTRY.value == "")
			{
				alert ("Please specify your Country.");
		        	document.forms[0].COUNTRY.focus();
				return false;
			}
		}
		else
		{
			if (document.forms[0].ZIPCODE.value.length < 5)
			{
				if (USonly)
				{
					alert ("Please specify your Zip Code.");
				}
				else
				{
					alert ("Please specify your Postal Code.");
				}
	        		document.forms[0].ZIPCODE.focus();
				return false;
			}
		}
	}
	
	if (document.forms[0].EMAIL_ADDRESS.value == "")
	{
		alert ("Please specify your E-mail Address.");
        	document.forms[0].EMAIL_ADDRESS.focus();
		return false;
	}
	if (!validEmail(document.forms[0].EMAIL_ADDRESS.value))
	{
		alert ("You have entered an invalid email address. Please re-enter it.");
		document.forms[0].EMAIL_ADDRESS.focus();
		return false;
	}

	if (document.forms[0].PHONE.value == "")
	{
		alert ("Please specify your Phone.");
        	document.forms[0].PHONE.focus();
		return false;
	}

	if (ObjectExists(document.forms[0],"FAX_PROMOTE"))
	{
		if (document.forms[0].FAX_PROMOTE.checked)
		{
			if (document.forms[0].FAX.value == "")
			{
				alert ("Please specify your Fax.");
        			document.forms[0].FAX.focus();
				return false;
			}
		}
	}	
	

	if (!checkUnselects(document.forms[0].PRIMARY_PRODUCTS))
	{
		alert ("Please check your primary product.");
 	      	document.forms[0].PRIMARY_PRODUCTS[0].focus();
		return false;
	}

	if ((CheckedRadioValue(document.forms[0].PRIMARY_PRODUCTS) == '98') && (document.forms[0].PRIMARY_PRODUCTS_DESC.value == ""))
	{
		alert ("Please specify your other primary product.");
        	document.forms[0].PRIMARY_PRODUCTS_DESC.focus();
		return false;
	}
	
	if (!checkUnselects(document.forms[0].EMPLOYEE_WORLDWIDE))
	{
		alert ("Please check number of employees worldwide.");
        	document.forms[0].EMPLOYEE_WORLDWIDE[0].focus();
		return false;
	}

	if (!checkUnselects(document.forms[0].JOB_TITLE_CODE))
	{
		alert ("Please check your job function.");
        	document.forms[0].JOB_TITLE_CODE[0].focus();
		return false;
	}

	if (!checkDropdown(document.forms[0].PERSONAL_ID))
	{
			alert ("Please select your personal ID.");
			document.forms[0].PERSONAL_ID.focus();
			return false;
	}
}  


function RegFormCheck(mode)
{ 
	if (mode == "SELECT")
	{
		if (!checkUnselects(document.forms[0].PERSONALINFO))
		{
			alert ("Please select your record");
			document.forms[0].PERSONALINFO[0].focus();
			return false;
		}
		return true;
	}
	if (mode == "LOGIN")
	{
		if (document.forms[0].FNAME.value == "")
		{
			alert ("Please specify your First name.");
        		document.forms[0].FNAME.focus();
			return false;
		}
		if (document.forms[0].LNAME.value == "")
		{
			alert ("Please specify your Last name.");
        		document.forms[0].LNAME.focus();
			return false;
		}

		if (document.forms[0].COUNTRY.selectedIndex < 2 )
		{
			if (document.forms[0].ZIPCODE.value.length < 5)
			{
				alert ("Please specify your Zip/Postal Code.");
	        		document.forms[0].ZIPCODE.focus();
				return false;
			}
		}
		if (document.forms[0].EMAIL_ADDRESS.value == "")
		{
			alert ("Please specify your E-mail Address.");
        		document.forms[0].EMAIL_ADDRESS.focus();
			return false;
		}
		if (!validEmail(document.forms[0].EMAIL_ADDRESS.value))
		{
			alert ("You have entered an invalid email address. Please re-enter it.");
			document.forms[0].EMAIL_ADDRESS.focus();
			return false;
		}
			
		return true;
	}

	if (mode == "REGISTER")
	{
		if (document.forms[0].FNAME.value == "")
		{
			alert ("Please specify your First name.");
        		document.forms[0].FNAME.focus();
			return false;
		}
		if (document.forms[0].LNAME.value == "")
		{
			alert ("Please specify your Last name.");
        		document.forms[0].LNAME.focus();
			return false;
		}
		if (document.forms[0].COMPANY.value == "")
		{
			alert ("Please specify your Company name.");
        		document.forms[0].COMPANY.focus();
			return false;
		}
		if (!checkDropdown(document.forms[0].EMPLOYEE_WORLDWIDE))
		{
			alert ("Please select Company Size.");
			document.forms[0].EMPLOYEE_WORLDWIDE.focus();
			return false;
		}
		if (document.forms[0].TITLE.value == "")
		{
			alert ("Please specify your Title.");
	        	document.forms[0].TITLE.focus();
			return false;
		}
		if (!checkDropdown(document.forms[0].PRIMARY_PRODUCTS))
		{
			alert ("Please select industry.");
			document.forms[0].PRIMARY_PRODUCTS.focus();
			return false;
		}
		if (!checkDropdown(document.forms[0].JOB_TITLE_CODE))
		{
			alert ("Please specify your job duties.");
			document.forms[0].JOB_TITLE_CODE.focus();
			return false;
		}
		if (document.forms[0].ADDRESS2.value == "")
		{
			alert ("Please specify your Address.");
	        	document.forms[0].ADDRESS2.focus();
			return false;
		}
		if (document.forms[0].ZIPCODE.value == "")
		{
			alert ("Please specify your Zip/Postal code.");
	        	document.forms[0].ZIPCODE.focus();
			return false;
		}
		if (ObjectExists(document.forms[0],"CITY"))
		{
			if (document.forms[0].CITY.value == "")
			{
				alert ("Please specify your City.");
	        		document.forms[0].CITY.focus();
				return false;
			}
		}

		if (ObjectExists(document.forms[0],"STATE"))
		{
			if (document.forms[0].STATE.selectedIndex == 0)
			{
				alert ("Please specify your State/Province or select 'I am not in the US or Canada'.");
		        	document.forms[0].STATE.focus();
				return false;
			}
		}
		if (document.forms[0].COUNTRY.selectedIndex < 2 )
		{
			if (document.forms[0].ZIPCODE.value.length < 5)
			{
				alert ("Please specify your Zip/Postal Code.");
	        		document.forms[0].ZIPCODE.focus();
				return false;
			}
		}
		if (document.forms[0].EMAIL_ADDRESS.value == "")
		{
			alert ("Please specify your E-mail Address.");
        		document.forms[0].EMAIL_ADDRESS.focus();
			return false;
		}
		if (!validEmail(document.forms[0].EMAIL_ADDRESS.value))
		{
			alert ("You have entered an invalid email address. Please re-enter it.");
			document.forms[0].EMAIL_ADDRESS.focus();
			return false;
		}

		if (ObjectExists(document.forms[0],"RECEIVE_YES_NO"))
		{
			if (!checkUnselects(document.forms[0].RECEIVE_YES_NO))
			{
				alert ("Please select whether you want to receive Packaging World");
				document.forms[0].RECEIVE_YES_NO[0].focus();
				return false;
			}
		}
		document.forms[0].submit.disabled=true;
	}

}  

// declare global variables
var i;

// two arrays for Canadian province/postal code validation
var CanCodes=new Array("54","55","56","57","58","59","60","66","61","62","63","64","65");
var CanLetters=new Array("T","UV","R","E","A","B","X","X","KLMNP","C","GHJ","S","Y");

// check if first letter of postal code matches selected Canadian province
// StateCD is 2-digit code that Omeda uses to identify Canadian provinces (value of STATE field)
// PostCD is entered postal code (value of ZIPCODE field)
function ValidCanPostal(StateCD, PostCD)
{
	var fletter=PostCD.substring(0,1);
	fletter = fletter.toUpperCase();

	for(i=0;i<13;i++)
	{
		if (StateCD==CanCodes[i])
		{
			if (CanLetters[i].indexOf(fletter,0) == -1)
			{
				return false;
			}
			else
			{
				return true;
			}
		}
	}
	return true;
}

function checkEmailValue(emailValue)
{     //runs the validate script and returns error box or nonerror

	if (emailValue == "")
	{
		alert ("You have not entered email address. Please re-enter it.");
		return false;
	}

	startPos = 0;

	commaPos = emailValue.indexOf(",",startPos+1);	//position of semicolomn
	while (commaPos != -1)
	{
		endPos = commaPos;
		emailElement = emailValue.substring(startPos,endPos);
		if(!validEmail(emailElement))
		{
			alert ("You have entered an invalid email address. Please re-enter it.");
                       document.forms[0].EMAIL_ADDRESS.focus();
                       return false;
		}
		startPos = endPos + 1;		
		commaPos = emailValue.indexOf(",",startPos);	//position of semicolomn
	}
	endPos = emailValue.length;
	emailElement = emailValue.substring(startPos,endPos);

	if(!validEmail(emailElement))
	{
		alert ("You have entered an invalid email address. Please re-enter it."); 
		document.forms[0].EMAIL_ADDRESS.focus();
		return false;
	}
	return true;		
}				

function validEmail(email)
{
	invalidchars = " /:;"

	if(email == "")
	{			//checks to see if blank field
		return false
	}
			
	for(i=0;i<invalidchars.length;i++){ //checks for invalid chars
			
	badchars = invalidchars.charAt(i)
			
	if(email.indexOf(badchars,0)!= -1)
	{
		return false
	}	
													}
	
	atPos = email.indexOf("@",1)  //holds position of "@"
			
	if(atPos == -1) 
	{	//checks to see if "@" present
		return false
	}
							
	if(email.indexOf("@",atPos+1) != -1) 
	{ //checks for second "@"
		return false
	}
							
	periodPos = email.indexOf(".",atPos) //holds position of "."
			
	if(periodPos == -1)
	{ //checks for presence of "."
		return false
	}
	if(periodPos+3 > email.length)
	{//makes sure at least two chars after the period
		return false
	}
	return true 
}

function checkUnselects(radioItem)
{
	for(i=0;i<radioItem.length;i++)
	{
		if(radioItem[i].checked)
		{
			return true;
		}//end if
	}//end for
	return false;
}

function CheckedRadioValue(radioItem)
{
	for(i=0;i<radioItem.length;i++)
	{
		if(radioItem[i].checked)
		{
			return radioItem[i].value;
		}//end if
	}//end for
	return false;
}

function checkDropdown(selectBox)
{
	if(selectBox.selectedIndex == "0")
	{
		return false;
	}
	else
	{
		return true;
	}
}

function CheckboxChecked(formindex, CheckBoxName)
{
var ChLength = CheckBoxName.length + 1;
var vName = CheckBoxName + "-";

var CBindex = 0;
	for ( i=0; i < document.forms[formindex].elements.length; i++)
	{
		if (document.forms[formindex].elements[i].type == "checkbox")
		{
			if (document.forms[formindex].elements[i].name.substring(0,ChLength)==vName)
			{
				if (CBindex==0) {CBindex = i;}
				if (document.forms[formindex].elements[i].checked)
				{
					return true;
					break;
				}
			}
		}

	}
	document.forms[formindex].elements[CBindex].focus();
	return false;
}

function ObjectExists(form,fieldname)
{
	for ( i=0; i < form.elements.length; i++)
	{
		if (form.elements[i].name == fieldname)
		{
			return true;
		}
	}
	return false;
}

function ValidNum(NumObj)
{
	var myNum, cleanNum;
	
	myNum = NumObj.value
	cleanNum = parseInt(myNum);

	if ( myNum == "")
	{
		return true;
	}
       	if (myNum != cleanNum)
	
	{
		alert ("You have entered an invalid number.Please re-enter.");
		NumObj.focus();
		return false;
	}
	return true;
}
