/*********************************************************************************
// Function:		formValidator
// Synopsis:		Generic form validation function
//
// Date Created:	09/01/2007
// Created By:		Stewart McQueen
// Ammendments:		This is a work in progress!!
//
**********************************************************************************/
function formValidator(p_theForm, p_requiredFields, p_nonZeroFields, p_EqualFields)
{
	var arrayRequired;
	var arrayNonZero;
	var i = 0;
	var formElement = null;
	
	if (p_theForm == null)
	{
		alert("Could not determine the form object. Please contact the system administrator.");
		return false;
	}
	
	//ensure that all multiple list box items are selected as they od not get passed otherwise
	for (i = 0; i < p_theForm.elements.length; i++)
	{
		formElement = p_theForm.elements[i];
		
		if (formElement.type == "select-multiple")
		{	
			for (j = 0; j < formElement.options.length; j++)
			{
				 formElement.options[j].selected = true;
			}
		}
	}
	
	if (p_requiredFields != null)
	{
		//split required fields into array
		arrayRequired = String(p_requiredFields).split("|");
			
		//loop through array and check if value = null, "", or NaN
		for (i = 0; i < arrayRequired.length; i++)
		{
			
			//get element
			formElement = p_theForm.elements(arrayRequired[i]);
			
			if (formElement == null)
			{
				//report error
				alert("Could not determine the form element. Please contact the system administrator");
			}
			else
			{
				//if value zero highlight field and exit function returning false
				if (trimAll(formElement.value) == "")
				{
					formElement.style.borderColor = "red";
					
					formElement.focus();
					
					alert("The following field cannot be empty!");	
					
					return false;
				}
				else if (formElement.value == null)
				{
					formElement.style.borderColor = "red";
					
					formElement.focus();
					
					alert("The highlighted field cannot have a null value!");	
					
					return false;
				}
				
				formElement.style.borderColor = "";
			}
		}
	}
	
	if (arrayNonZero != null)
	{
		//split non zero fields into array
		arrayNonZero = String(p_requiredFields).split("|");
	
		//loop through array and check if value is zero
		for (i = 0; i < arrayNonZero.length; i++)
		{
			//get element
			formElement = p_theForm.elements(arrayRequired[i]);
			
			if (formElement == null)
			{
				//report error
				alert("Could not determine the form element. Please contact the system administrator");
			}
			else
			{
				//if value zero highlight field and exit function returning false
				if (parseInt(formElement.value) == 0)
				{
					formElement.style.borderColor = "red";
					
					formElement.focus();
					
					alert("The highlighted field cannot have a zero value!");	
					
					return false;
				}
				else
				{
					formElement.style.borderColor = "";
				}
			}
			
			
		}
	}
	
	//check if two fields should be equal
	if (p_EqualFields != null)
	{
		for (i = 0; i < p_EqualFields.length; i++)
		{
			
			for (j = 0; j < p_EqualFields[i].length - 1; j++)
			{	
				if (p_theForm.elements(p_EqualFields[i][j+1]).value != p_theForm.elements(p_EqualFields[i][j]).value)
				{
					p_theForm.elements(p_EqualFields[i][j+1]).style.borderColor = "red";
					p_theForm.elements(p_EqualFields[i][j]).style.borderColor = "red";
					formElement.focus();
					alert("The highlighted fields must be equal!");	
					return false;
				}
				else
				{
					//reset the highlighting
					p_theForm.elements(p_EqualFields[i][j+1]).style.borderColor = "";
					p_theForm.elements(p_EqualFields[i][j]).style.borderColor = "";
				}
			}
		}
	}
		
	return true;
}

/*********************************************************************************
// Function:		selectCheckBoxes
// Synopsis:		assumes only one form on page. Sets on or off for all
//			checkboxes in list depending on current status of chosen 
//			checkbox
//
// Date Created:	09/01/2007
// Created By:		Stewart McQueen
// Ammendments:
//
**********************************************************************************/
function selectCheckBoxes(p_name)
{
	var i = 0;
	
	var checkList = document.forms[0].elements[p_name];

	var isChecked = checkList[i].checked;
		
	for (i = 0; i < checkList.length; i++)
	{
		checkList[i].checked = isChecked;
	}
}


/*********************************************************************************
// Function:		autofocus
// Synopsis:		if page contains form focus on first available input
//			based on the tab index
//
// Date Created:	09/01/2007
// Created By:		Stewart McQueen
// Ammendments:
//
**********************************************************************************/
function autofocus()
{
	//only focus if page has form
	if (document.forms.length > 0)
	{
		var elementList = document.forms(0).elements;
		var i =0;
				
		for (i=0; i < elementList.length; i++)
		{
			if (elementList[i].tabIndex == 1)
			{	//focus on first element
				elementList[i].focus();
				
				return;
			}
		}
	}
}


function isTelephoneNumber(p_element)
{
	var elementVal = String(p_element.value);
	
	if (elementVal.length > 0)
	{
		//get last character
		var lastChar = elementVal.charAt(elementVal.length - 1);
				
		//check if number
		if ((isNaN(lastChar))&&(lastChar != " ")&&(lastChar != "+")&&(lastChar != "(")&&(lastChar != ")"))
		{
			p_element.value = elementVal.substring(0, elementVal.length - 1);
		}
		
		//if not remove
		
		
	}

}