// #### FUNCTION TO CHECK IF VALUE IS A NUMBER		####
// #### ALLOWS DECIMAL NUMBERS IF REQUIRED			####
function IsNumeric(sText, bINT, bAllowZeroLength)
{
	sText = Trim(sText);

	var ValidChars; 
	var Char;
	var IsNumber=true;
	if(bINT == true) { ValidChars = "0123456789"; }	else { ValidChars = "0123456789."; }
	
	if(sText.length == 0 && bAllowZeroLength == false) { IsNumber = false; }

	for (i = 0; i < sText.length && IsNumber == true; i++) 
	{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1)
		{
			IsNumber = false;
		}
	}
	return IsNumber;
}

// #### FUNCTION TO REMOVE WHITESPACE
function Trim(s) 
{
	while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
	{
		s = s.substring(1,s.length);
	}
	while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
  	{
   		s = s.substring(0,s.length-1);
  	}
 	return s;
}

// #### FUNCTION TO CHECK THE MANDATORY FIELDS OF A FORM	####
function checkMandatoryFields(myForm, aJSRequired)
{
	sError = "";
	aMandatory = aJSRequired;
	bPasswordFound = false;
	
	for(i=0;i<aMandatory.length;i++)
	{	
		if(myForm[aMandatory[i]].type == "text" || myForm[aMandatory[i]].type == "textarea" || myForm[aMandatory[i]].type == "password" || myForm[aMandatory[i]].type == "select-one")
		{
			if(myForm[aMandatory[i]].value.length == 0)
			{
				sError += "- " + aMandatory[i] + "\n";
			}
			
			// #### DO EMAIL CHECK FOR EMAIL ADDRESSES	####
			if(aMandatory[i] == "Email" && myForm[aMandatory[i]].value.length > 0) 
			{
				if(checkEmail(myForm[aMandatory[i]].value) == false)
				{
					sError += "- Email Address is not valid\n";
				}
			}
		
			// #### FLAG THAT A PASSWORD FIELD HAS BEEN FOUND	####
			if(aMandatory[i] == "Password") { bPasswordFound = true; }
		}
		else if(myForm[aMandatory[i]].type == "checkbox" || myForm[aMandatory[i]].type == "radio")
		{
			bRadioChecked = false
			if(myForm[aMandatory[i]].checked == true || myForm[aMandatory[i]].selected == true)
			{
				bRadioChecked = true
			}
			
			if(bRadioChecked == false)
			{
				sError += "- " + aMandatory[i] + "\n";
			}			
		}
		else if(isNaN(myForm[aMandatory[i]].length) == false)
		{
			bRadioChecked = false;
			for(j=0;j<myForm[aMandatory[i]].length;j++)
			{
				if(myForm[aMandatory[i]][j].checked == true || myForm[aMandatory[i]][j].selected == true)
				{
					bRadioChecked = true;
				}
			}
			if(bRadioChecked == false)
			{
				sError += "- " + aMandatory[i] + "\n";
			}
		}
	}
	
	// #### IF A PASSWORD FIELD HAS BEEN FOUND AND THERE IS NO ERROR THEN DETERMINE IF THE PASSWORD AND CONFIRM	####
	// #### PASSWORD FIELDS HAVE THE SAME VALUE																	####
	if(bPasswordFound == true && sError == "")
	{
		if(myForm["Password"].value != myForm["ConfirmPassword"].value)
		{
			sError += "- Passwords do not match\n";
		}
	}
	return DisplayErrors();
}

// #### DISPLAY ANY ERRORS THAT WERE ENCOUNTERED WHILST CHECKING THE MANDATORY FIELDS OF THE FORM	####
function DisplayErrors()
{
	if(sError != "")
	{
		alert("The following information is missing or incorrect:-\n\n" + sError);
		return false;
	}
	return true;
}


// #### CHECK THAT THE EMAIL ADDRESS PASSED IS A VALID EMAILS ADDRESS	####
function checkEmail(email)
{
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email))
		return true;
	else
		return false;
}


function doClear(theText) 
{
	if (theText.value == theText.defaultValue) { theText.value = ""; }
}
