var FullErMsg = ''; // a final delivery
var erFnd = 0;
var erMsg = ''; //a workspace

function ValidateForm(addFees) {
	if (!addFees)
		addFees='N';
		
	FullErMsg='';
	VText('Invoice #',document.ppgo.os0.value,'Y');
	VNumber('Amount',document.ppgo.amount.value,'.','$#!,',2,'Y');
	if (document.ppgo.amount.value == '0.00')
		FullErMsg+='Amount: Some value must be entered\n';
	if (FullErMsg == '' && addFees == 'Y') {
		//Add in the financial fees.
		var ovalue=document.ppgo.amount.value;
		var apct = (document.ppgo.amount.value * 0.027) + 0.3;
		var arpct=roundNumber(apct,2);
		// divide by 1 to insure a numeric cast (values can be text/numeric)
		var rv = (arpct / 1) + (ovalue / 1);
		document.ppgo.amount.value = rv;
	}
    if (FullErMsg != '')
    {
        alert(FullErMsg);
        return false;
    } else {
        return true;
    }
	return true; //safety valve
}
function roundNumber(num, dec) {
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return result;
}
/*VText Begin*/
function VText(field, text, required)
{
	required = required.toUpperCase();
	if (required == 'Y')
	{
		if (text == '' || text.length == 0)
		{
			FullErMsg+=field + ': An entry is required.\n';
			return false;
		}
	}
	if (required == 'N' && text.length == 0)
		return true;
	//Are we all spaces?
	var tcnt=0;
	for (var i=0; i < text.length; i++)
	{
		if (text.charAt(i) == ' ')
		{
			tcnt++;
		}
	}
	if (tcnt == text.length)
	{
		if (required == 'Y')
		{
			FullErMsg+=field + ': A non-space entry is required.\n';
			return false;
		} else {
			FullErMsg+=field + ': An all-space entry is meaningless; erase or reenter.\n';
			return false;
		}
	}
	return true;
}
/*VText End*/
/*VNumber Begin*/
function VNumber(field,text,ChrsAllowed,ChrsDisallowed,dps,required)
{
	//initially, numbers are treated as text
	required = required.toUpperCase();
	if (required == 'Y')
	{
		if (text.value == '' || text.length == 0)
		{
			FullErMsg+=field + ': An entry is required.\n';
			return false;
		}
	}
	if (required == 'N' && text.length ==0)
		return true;
	//Are we all spaces?
	var spcCnt=0;
	var noNbr=0; //When charcter is not a number and not an allowed special character...
	var dpflg=0; //flag to track number of decimal points
	var dpval=''; //the digits after a "."
	var disac=0; //disallowed character count
	for (var i=0; i < text.length; i++)
	{
		if (text.charAt(i) == ' ')
		{
			spcCnt++;
		}
		//Characters that CAN be in the entry (optional ones)
		var pf = 0;
		for (var k=0; k<ChrsAllowed.length;k++) //scan for allowed characters
		{
			if (text.charAt(i) == ChrsAllowed.charAt(k))
				pf=1; //flag it
		}
		if (pf != 1 && isNaN(text.charAt(i)))
			noNbr++;
			
		//Characters that shouldn't be in the entry		
		
		for (var k=0; k<ChrsDisallowed.length;k++)
		{
			if (text.charAt(i) == ChrsDisallowed.charAt(k))
				disac++; //flag it
		}
		//save dp digits
		if (text.charAt(i) == '.')
		{
			dpflg = 1;
		} else {
			if (dpflg == 1)
			{
				dpval+=text.charAt(i);
			}
		}
	}
	if (spcCnt == text.length)
	{
		if (required == 'Y')
		{
			FullErMsg+=field + ': A non-space entry is required.\n';
			return false;
		} else {
			FullErMsg+=field + ': Entry cannot be all spaces (" ").\n';
		}
	}
	if (disac !=0)
	{
		//format the characters
		var fmtDA = '';
		for (i = 0;i<ChrsDisallowed.length - 1;i++)
		{
			fmtDA+=ChrsDisallowed.charAt(i) + ' ';
		}
		fmtDA+=ChrsDisallowed.charAt(i);
		FullErMsg+=field + ': Number cannot contain the characters: ' + fmtDA + '\n';
		return false;
	}
	if (noNbr !=0)
	{
		FullErMsg+=field + ': Number contains characters other than: ' + ChrsAllowed + '\n';;
		return false;
	}

	if (dpval.length != dps && dpflg == 1)
	{
		FullErMsg+=field + ': Too many digits after decimal point (only ' + dps + ' allowed)';
		return false;
	}

	return true;
}
/*VNumber End*/
