// -------------------------------------------------------------------
// function isInteger(sNumStr)
// Function to determine if a string contains integer
//
// Parameters:
//				sNumStr: string to be verified
// --------------------------------------------------------------------

function isInteger(sNumStr)
{
	sNumStr = sNumStr + "";
	
	var i = 0;
	var bResultInd = false;
	var cCh = sNumStr.charAt(0);

	if ((cCh == '+') || (cCh == '-') || ((cCh >= '0') && (cCh <= '9')))
	{
		if (sNumStr.length == 1)
		{
			if ((cCh >= '0') && (cCh <= '9'))
			{
				bResultInd = true;
			}
		}
		else
		{
			for (i=1; i<sNumStr.length; i++)
			{
				cCh = sNumStr.charAt(i);
			
				if ((cCh >= '0') && (cCh <= '9'))
				{
					bResultInd = true;
				}
				else
				{
					//bail out
					i = sNumStr.length;
					bResultInd = false;
				}
			}
		}
	}	
	
	return bResultInd;
}



// -------------------------------------------------------------------
// function isIntegerField(domElement, sElementDescr, bDisplayAlert)
// Function to determine if a field contains integer
//
// Parameters:
//				domElement: DOM object
//				sElementDescr: description of field for message
//				bDisplayAlert: whether to show the alert box
// --------------------------------------------------------------------

function isIntegerField(domElement, sElementDescr, bDisplayAlert)
{
	var sElementValue = domElement.value;
	var sAlertMsg = sElementDescr + " must be an integer.";
	var bResultInd = true;

	if (sElementValue.length > 0)
	{
		bResultInd = isInteger(sElementValue);
	
		if (!bResultInd && bDisplayAlert)
		{
			alert(sAlertMsg);
		}
	}
	
	return bResultInd;
}


// -------------------------------------------------------------------
// function isNumeric(sNumStr)
// Function to determine if a string contains number
//
// Parameters:
//				sNumStr: string to be verified
// --------------------------------------------------------------------

function isNumeric(sNumStr)
{
	sNumStr = sNumStr + "";
	
	var i = 0;
	var bResultInd = false;
	var bDecimalFound = false;
	var cCh = sNumStr.charAt(0);

	if ((cCh == '+') || (cCh == '-') || (cCh == '.') || ((cCh >= '0') && (cCh <= '9')))
	{
		if (sNumStr.length == 1)
		{
			if ((cCh >= '0') && (cCh <= '9'))
			{
				bResultInd = true;
			}
		}
		else
		{
			if (cCh == '.')
			{
				bDecimalFound = true;
			}
		
			for (i=1; i<sNumStr.length; i++)
			{
				cCh = sNumStr.charAt(i);

				if (cCh == '.')
				{
					if (bDecimalFound)
					{
						//bail out
						i = sNumStr.length;
						bResultInd = false;
					}
					else
					{
						bDecimalFound = true;
						bResultInd = true;
					}
				}
				else
				{
					if ((cCh >= '0') && (cCh <= '9'))
					{
						bResultInd = true;
					}
					else
					{
						//bail out
						i = sNumStr.length;
						bResultInd = false;
					}
				}
			}
		}	
	}
	
	return bResultInd;
}



// -------------------------------------------------------------------
// function isNumericField(domElement, sElementDescr, bDisplayAlert)
// Function to determine if a field contains number
//
// Parameters:
//				domElement: DOM object
//				sElementDescr: description of field for message
//				bDisplayAlert: whether to show the alert box
// --------------------------------------------------------------------

function isNumericField(domElement, sElementDescr, bDisplayAlert)
{
	var sElementValue = domElement.value;
	var sAlertMsg = sElementDescr + " must be numeric.";
	var bResultInd = true;
	
	if (sElementValue.length > 0)
	{
		bResultInd = isNumeric(sElementValue);
	
		if (!bResultInd && bDisplayAlert)
		{
			alert(sAlertMsg);
		}
	}

	return bResultInd;
}



// -------------------------------------------------------------------
// function isPositiveNumberField(domElement, sElementDescr, bDisplayAlert)
// Function to determine if a field is numeric and positive
//
// Parameters:
//				domElement: DOM object
//				sElementDescr: description of field for message
//				bDisplayAlert: whether to show the alert box
// --------------------------------------------------------------------

function isPositiveNumberField(domElement, sElementDescr, bDisplayAlert)
{
	var sElementValue = domElement.value;
	var iElementStrLen = sElementValue.length;
	var sAlertMsg = sElementDescr + " must be positive.";
	var cCh = '';
	var bResultInd = true;
	
	if (sElementValue.length > 0)
	{
		bResultInd = isNumericField(domElement, "", false) || isIntegerField(domElement, "", false);

		if (bResultInd)
		{
			if (compareNumbers(sElementValue, "0") <= 0)		//compareNumbers() is in the js_utility_
				bResultInd = false;
		}

		if (!bResultInd && bDisplayAlert)
		{
			alert(sAlertMsg);
		}
	}
	
	return bResultInd;
}


// -------------------------------------------------------------------
// function isNegativeNumberField(domElement, sElementDescr, bDisplayAlert)
// Function to determine if a field is numeric and negative
//
// Parameters:
//				domElement: DOM object
//				sElementDescr: description of field for message
//				bDisplayAlert: whether to show the alert box
// --------------------------------------------------------------------

function isNegativeNumberField(domElement, sElementDescr, bDisplayAlert)
{
	var sElementValue = domElement.value;
	var iElementStrLen = sElementValue.length;
	var sAlertMsg = sElementDescr + " must be negative.";
	var cCh = '';
	var bResultInd = true;
	
	if (sElementValue.length > 0)
	{
		bResultInd = isNumericField(domElement, "", false) || isIntegerField(domElement, "", false);

		if (bResultInd)
		{
			if (compareNumbers(sElementValue, "0") > 0)		//compareNumbers() is in the js_utility_
				bResultInd = false;
		}

		if (!bResultInd && bDisplayAlert)
		{
			alert(sAlertMsg);
		}
	}
	
	return bResultInd;
}


// ---------------------------------------------------------------------------
// Function compareNumbers()
// Functions to compare the VALUES (strings) of two numbers.
// Parameters:
//              sNumValue1:  value of Num1
//              sNumValue2:  value of Num2
// Returns:
//				if Num1 < Num2: -1
//				if Num1 = Num2: 0
//				if Num1 > Num2: 1
// --------------------------------------------------------------------------

function compareNumbers(sNumValue1, sNumValue2)
{
	var iResult = 0;
	var iNum1 = 0;
	var iNum2 = 0;

	iNum1 = parseFloat(sNumValue1);
	iNum2 = parseFloat(sNumValue2);
	
	if (iNum1 == iNum2)
		iResult = 0;
		
	if (iNum1 < iNum2)
		iResult = -1;
		
	if (iNum1 > iNum2)
		iResult = 1;

	return iResult;
}



