
//----------------------------------------------------------------------
// Useful Page Functions
//----------------------------------------------------------------------

var arInputsToValidate = new Array ();
var arDivsToValidate = new Array ();



/***********************************************/
/****************** Scoped *********************/
/***********************************************/


function JS_Form_Validate_Scoped (eCaller)
{	
	var eForm = JS_Utils_FindParentElement(eCaller, 'FORM');
	if(eForm != false)
	{
		var bIsValidated = false;
		var nItemsValidated = 0;
		var objCurrentElement = new Object ();
		
		JS_Form_FindValidationItems_Scoped (eForm); // get items to validate
		
		// loop through items to validate and check each one
		for ( var n=0; n<arInputsToValidate.length; n++ )
		{
			JS_SetValidateOnDefocus_Scoped(arInputsToValidate[n]); // tell object to trigger valiate funciton on exit focus
																	 
			arInputsToValidate[n].value = JS_Utils_Trim(arInputsToValidate[n].value); // trim string
			
			if  ( arInputsToValidate[n].value.length > 0 )
			{
				arDivsToValidate[n].style.display = "none";
				nItemsValidated ++;
			}
			else
			{
				arDivsToValidate[n].style.display = "";
			}
		}	
		
		if ( nItemsValidated == arInputsToValidate.length ) bIsValidated = true;
		else bIsValidated = false;
	
		return bIsValidated;
	}
	else
	{
		alert("No parent form found");
		return false;
	}
}


function JS_Form_FindValidationItems_Scoped (eForm)
{
	var arTempDivs = eForm.getElementsByTagName("div");
	var arTempInputs = new Array();
	var arTempSelects = new Array();
	var objTempElement = new Object();
	var arResults = new Array();
	
	arInputsToValidate = new Array();
	arDivsToValidate = new Array();

	// get validation spans
	for ( var n=0; n<arTempDivs.length; n++ )
	{
		if ( arTempDivs[n].className == "ValidationError" )
		{
			objCurrentElement = JS_Utils_GetParent (arTempDivs[n]);
			arTempInputs = objCurrentElement.getElementsByTagName("input");
			arTempSelects = objCurrentElement.getElementsByTagName("select");
			arTempTextareas = objCurrentElement.getElementsByTagName("textarea");

			if ( (arTempInputs.length > 0) && (arTempInputs.length < 2)  ) 
			{			
				arInputsToValidate.push(arTempInputs[0]);
				arDivsToValidate.push(arTempDivs[n]);
			}
			else if ( (arTempSelects.length > 0) && (arTempSelects.length < 2)  ) 
			{
				arInputsToValidate.push(arTempSelects[0]);
				arDivsToValidate.push(arTempDivs[n]);				
			}
			else if ( (arTempTextareas.length > 0) && (arTempTextareas.length < 2)  ) 
			{
				arInputsToValidate.push(arTempTextareas[0]);
				arDivsToValidate.push(arTempDivs[n]);				
			}			
			else alert("Warning! Too many or too few items to validate for: " + arTempDivs[n].innerHTML );
		}
	}
}


function JS_SetValidateOnDefocus_Scoped ( objElement )
{
	objElement.onblur = function(){JS_Form_Validate_Scoped(objElement)};
}

/***********************************************/
/****************** Normal *********************/
/***********************************************/

function JS_Form_Validate ()
{	
	var bIsValidated = false;
	var nItemsValidated = 0;
	var objCurrentElement = new Object ();
	
	JS_Form_FindValidationItems (); // get items to validate
	
	// loop through items to validate and check each one
	for ( var n=0; n<arInputsToValidate.length; n++ )
	{
		JS_SetValidateOnDefocus(arInputsToValidate[n]); // tell object to trigger valiate funciton on exit focus
																 
		arInputsToValidate[n].value = JS_Utils_Trim(arInputsToValidate[n].value); // trim string
		
		if  ( arInputsToValidate[n].value.length > 0 )
		{
			arDivsToValidate[n].style.display = "none";
			nItemsValidated ++;
		}
		else
		{
			arDivsToValidate[n].style.display = "";
		}
	}	
	
	if ( nItemsValidated == arInputsToValidate.length ) bIsValidated = true;
	else bIsValidated = false;

	return bIsValidated;
}

function JS_Form_FindValidationItems ()
{
	var arTempDivs = document.getElementsByTagName("div");
	var arTempInputs = new Array();
	var arTempSelects = new Array();
	var objTempElement = new Object();
	var arResults = new Array();
	
	arInputsToValidate = new Array();
	arDivsToValidate = new Array();

	// get validation spans
	for ( var n=0; n<arTempDivs.length; n++ )
	{
		if ( arTempDivs[n].className == "ValidationError" )
		{
			objCurrentElement = JS_Utils_GetParent (arTempDivs[n]);
			arTempInputs = objCurrentElement.getElementsByTagName("input");
			arTempSelects = objCurrentElement.getElementsByTagName("select");
			arTempTextareas = objCurrentElement.getElementsByTagName("textarea");

			if ( (arTempInputs.length > 0) && (arTempInputs.length < 2)  ) 
			{			
				arInputsToValidate.push(arTempInputs[0]);
				arDivsToValidate.push(arTempDivs[n]);
			}
			else if ( (arTempSelects.length > 0) && (arTempSelects.length < 2)  ) 
			{
				arInputsToValidate.push(arTempSelects[0]);
				arDivsToValidate.push(arTempDivs[n]);				
			}
			else if ( (arTempTextareas.length > 0) && (arTempTextareas.length < 2)  ) 
			{
				arInputsToValidate.push(arTempTextareas[0]);
				arDivsToValidate.push(arTempDivs[n]);				
			}			
			else alert("Warning! Too many or too few items to validate for: " + arTempDivs[n].innerHTML );
		}
	}
}

function JS_SetValidateOnDefocus ( objElement )
{
	objElement.onblur = JS_Form_Validate;
}

function JS_Form_ValidateItem ( objItem, strValidationType )
{
	var bIsValidated = false;	
	
	return bIsValidated;
}

//----------------------------------------------------------------------
//----------------------------------------------------------------------

function JS_Form_ConfirmDelete ()
{
	return confirm("Are you sure you want to delete this item?");
}

//----------------------------------------------------------------------
//----------------------------------------------------------------------

// Sets the focus if the element is found
function JS_Form_SetFocus ( strElement )
{
	var txtElement = document.getElementById ( strElement );
	if ( txtElement != null ) txtElement.focus();
}

// make any disabled items enabled
function JS_Form_EnableInputs ( strFormID )
{
	var objAppForm = document.getElementById( strFormID );
	var nElementsCount = objAppForm.elements.length;
	for ( var x=0; x<nElementsCount; x++ )
	{
		objAppForm.elements[x].disabled = false;
	}	
}

function JS_Form_AutoPostback ( strFormID )
{
	var objAppForm = document.getElementById ( strFormID );	
	objAppForm.submit();
}

//----------------------------------------------------------------------
//----------------------------------------------------------------------

function JS_Form_SelectAll ( strElement )
{
	var objElement = document.getElementById ( strElement );
	var arInputs = objElement.getElementsByTagName ( "input" );
	
	for ( var i=0; i<arInputs.length; i++ )
	{
		arInputs[i].checked = true;
	}	
}

function JS_Form_DeselectAll ( strElement )
{
	var objElement = document.getElementById ( strElement );
	var arInputs = objElement.getElementsByTagName ( "input" );
	
	for ( var i=0; i<arInputs.length; i++ )
	{
		arInputs[i].checked = false;
	}	
}

//----------------------------------------------------------------------
//----------------------------------------------------------------------