
//----------------------------------------------------------------------
// Useful Page Functions
//----------------------------------------------------------------------

var arInputsToValidate = new Array ();
var arSpansToValidate = new Array ();

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 )
		{
			arSpansToValidate[n].style.display = "none";
			nItemsValidated ++;
		}
		else
		{
			arSpansToValidate[n].style.display = "inline";
		}
	}	
	
	if ( nItemsValidated == arInputsToValidate.length ) bIsValidated = true;
	else bIsValidated = false;

	return bIsValidated;
}

function JS_Form_FindValidationItems ()
{
	var arTempSpans = document.getElementsByTagName("span");
	var arTempInputs = new Array();
	var arTempSelects = new Array();
	var objTempElement = new Object();
	var arResults = new Array();
	
	arInputsToValidate = new Array();
	arSpansToValidate = new Array();

	// get validation spans
	for ( var n=0; n<arTempSpans.length; n++ )
	{
		if ( arTempSpans[n].className == "ValidationError" )
		{
			objCurrentElement = JS_Utils_GetParent (arTempSpans[n]);
			arTempInputs = objCurrentElement.getElementsByTagName("input");
			arTempSelects = objCurrentElement.getElementsByTagName("select");
			arTempTextareas = objCurrentElement.getElementsByTagName("textarea");

			if ( (arTempInputs.length > 0) && (arTempInputs.length < 2)  ) 
			{			
				arInputsToValidate.push(arTempInputs[0]);
				arSpansToValidate.push(arTempSpans[n]);
			}
			else if ( (arTempSelects.length > 0) && (arTempSelects.length < 2)  ) 
			{
				arInputsToValidate.push(arTempSelects[0]);
				arSpansToValidate.push(arTempSpans[n]);				
			}
			else if ( (arTempTextareas.length > 0) && (arTempTextareas.length < 2)  ) 
			{
				arInputsToValidate.push(arTempTextareas[0]);
				arSpansToValidate.push(arTempSpans[n]);				
			}			
			else alert("Warning! Too many or too few items to validate for: " + arTempSpans[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?");
}

function JS_Form_ConfirmDuplicate ()
{
	return confirm("Are you sure you want to duplicate 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_ChangeOrdinal ( nRecordID, strDirection )
{
	var objOrdinalHolder = document.getElementById ( "hidChangeOrdinal" );
	var objDirectionHolder = document.getElementById ( "hidChangeOrdinalDirection" );
	
	if (objOrdinalHolder) objOrdinalHolder.value = nRecordID;
	if (objDirectionHolder) objDirectionHolder.value = strDirection;
	
	//JS_Form_AutoPostback("Form1");
	
	return false;
}


//----------------------------------------------------------------------
//----------------------------------------------------------------------

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;
	}	
}

//----------------------------------------------------------------------
//----------------------------------------------------------------------

function JS_Form_CheckLimit ( objElement, nLimit, bShowSpan )
{	
	// perform limit
	if ( objElement.value.length > nLimit ) objElement.value = objElement.value.substring(0, nLimit);
	
	// create message
	var nRemaining = nLimit-objElement.value.length;
	strText  = "Remaining<br/>" + nRemaining + "/" + nLimit;		
	
	// update limiter text
	var arSpans = JS_Utils_GetParent(objElement).getElementsByTagName("span");
	var objSpan;
	
	for ( var i=0; i<arSpans.length; i++ )
	{
		if ( arSpans[i].className == "Limiter" ) objSpan = arSpans[i];
	}
	
	// write message 
	objSpan.innerHTML = strText;
	
	// show / hide span
	if ( bShowSpan ) objSpan.style.display = "block";
	else objSpan.style.display = "none";
}

//----------------------------------------------------------------------
//----------------------------------------------------------------------


//----------------------------------------------------------------------
//----------------------------------------------------------------------


