var strErrorRecipientName = "Please enter the name of the recipient";
var strErrorRecipientEmail = "Please enter the recipient\'s email address";
var strErrorWhereHear = "Please enter how you heard of us";
var strErrorName = "Please enter your name";
var strErrorEmail = "Please enter your email address";

var mandatory = new Array("nameOfRecipient","recipientEmail","whereHear","yourEmailAddress","employerName","sizeOfCompany","contactPhone");

var blnProceed = true;
var objCurrentformElement = null;
var	displayMessageType = "";

function validation(objFrm)
{

 var intNumElements = 0 ;
 var intCounter	= 0;

 intNumElements = objFrm.elements.length;

 if (!blnProceed) {blnProceed = true}

	while ((intNumElements >intCounter) && (blnProceed))
	{
		objCurrentformElement = objFrm.elements[intCounter];
		if((objCurrentformElement.type.toLowerCase() != "hidden"))
		{
			switch (objCurrentformElement.name.toLowerCase())
			{
				case "nameofrecipient":
						if(ismandatory("nameofrecipient"))
						{
							isBlank(objCurrentformElement.value , strErrorRecipientName )
						}
						break;
				case "recipientemail":
						if(ismandatory("recipientemail"))
						{
							isBlank(objCurrentformElement.value , strErrorRecipientEmail )
							validateEmail(objCurrentformElement.value)
						}
						break;
				case "wherehear":
						if(ismandatory("wherehear"))
						{
							isSelected(objCurrentformElement , strErrorWhereHear )
						}
						break;
				case "yourname":
						if(ismandatory("yourname"))
						{
							isBlank(objCurrentformElement.value , strErrorName )

						}
						break;
				case "youremailaddress":
						if(ismandatory("youremailaddress"))
						{
							isBlank(objCurrentformElement.value , strErrorEmail )
							validateEmail(objCurrentformElement.value)
						}
						break;
			}
		}
		else
		{
			if (objCurrentformElement.name.toLowerCase() == "messagedisplaytype")
			{
				displayMessageType = objCurrentformElement.value
			}
		}
		intCounter = intCounter + 1
	}
	return blnProceed;
}

function isSelected (objElement , strErrorMessage)
{
	if ((objElement[objElement.selectedIndex].value) == "0")
	{
	   	displayMessage (strErrorMessage);
		blnProceed = false;
	}
}

function isBlank(value , strErrorMessage)
{
	if (parseInt(removeLeadingspaces(value).length)== 0)
	{
    	displayMessage (strErrorMessage);
		blnProceed = false;
	}
}


function removeLeadingspaces(value)
{
return value ;	// debugging the loss of characters in the form during client validation
	var i = 0 ;
	var blnDone = false;
	var strReturnString = "";
	var intNumspace = 0
	while ((!blnDone) && (i < value.length))
		{
			var c = value.charCodeAt(i);
			if (c == 32)
			{
				intNumspace = intNumspace + 1;
				if (value.charCodeAt(i+1) == 32)
				{
					blnDone = false;
				}
				else
				{
					blnDone = true;
				}
			}
			i = i + 1
		}	

	strReturnString  = value.substring(intNumspace , value.length);
	objCurrentformElement.value = strReturnString  ;

	return strReturnString ;
}

function hasInvalidChars(strEmail , strInvalidChars)
{
	var blnError = false;
	var i = 0;
	while ((!blnError) && (strInvalidChars.length > i))
	{
		if (strEmail.indexOf(strInvalidChars.charAt(i) , 0) > -1)
		{
			blnError = true;
		}
	 	i = i + 1
	}
	return blnError;
	
}
function validateEmail (strEmail)
{
	var intIndexofAt = strEmail.indexOf("@", 0)
	var intIndexofDot = strEmail.indexOf(".", parseInt(intIndexofAt) + 1)
	if (blnProceed)
	{
		if(intIndexofAt == -1)
		{
	    	displayMessage ("There must be an at symbol (@) in all email addresses");
			blnProceed = false;
		}
		else
		{
			if(intIndexofDot == -1)
			{
	    	displayMessage ("There was no domain specified (ex. mydomain.com) in one of the email addresses");
			blnProceed = false;
			}
			else
			{
				if (hasInvalidChars(strEmail , "/!?$%^&*()'+=") )
				{
			    	displayMessage ("There invalid characters in one of the email address.");
					blnProceed = false;
				}
			}
		}
	}
}

function displayMessage (strErrorMsg)
{
	if (displayMessageType != "alert")
	{
		if(document.all)
		{
			document.all.errMessage.innerHTML = strErrorMsg;
		}
		else if(document.getElementById)
		{
			document.getElementById("errMessage").innerHTML = strErrorMsg;
		}
		else
		{
			document.layers.errMessage.document.open()
			document.layers.errMessage.document.write(strErrorMsg);
			document.layers.errMessage.document.close()
		}
	}
	else
	{
		displayMessageAlert (strErrorMsg)
	}
}

function ismandatory(strMandatoryItem)
{
	var x = 0
	var found = false
	while (!found && x <= mandatory.length-1)
	{
		if (mandatory[x].toLowerCase() == strMandatoryItem)
		{
			found = true;
		}
		x = x + 1 
	}
	return found;
}

function displayMessageAlert (strErrorMsg)
{
	alert(strErrorMsg);
}
