function ReturnDollarsVal(sVal){
	var iReturn = parseInt(DeFormatDollars(sVal));
	if(isNaN(iReturn)) iReturn = 0;
	return iReturn;
}
function ReturnCentsVal(sVal){
	var iReturn = parseInt(DeFormatCents(sVal));
	if(isNaN(iReturn)) iReturn = 0;
	return iReturn;
}

function TabOnLength(chkFld, tabFld, tabLen, e, OnChangeCheckOptional){
	if ( (chkFld.value.length >= tabLen) && (e.keyCode >= 30) )
    {   
    	if(chkFld.onchange() || OnChangeCheckOptional){
			 tabFld.focus();
			 return true;
		}
		else
		{
			return false;
		}
    }
}

function TabOnCharacter(chkFld, tabFld, tabChar, OnChangeCheckOptional){
	var i = 0;
	for (i = 0; i < chkFld.value.length; i++)
    {   
        var c = chkFld.value.charAt(i);
        if (c == tabChar) {
			chkFld.value = chkFld.value.substring(0, chkFld.value.length - 1);
			if(chkFld.onchange() || OnChangeCheckOptional){
				 tabFld.focus();
				 return true;
			}
			else
			{
				return false;
			}
        }
    }
}

function RemovePreceedingZero(s){
	s = '' + s;
	var iLen = s.length;
	var sOut = '';
	var chr = '';
	var NonZeroFound = 0;
	for (var i=0; i<iLen; i++)
	{
		chr = s.charAt (i);
		if ( (chr!=' ' && chr!='0') || NonZeroFound==1){
			sOut = sOut + chr;
			NonZeroFound = 1;
		}
	}
	return sOut;
}
function DeFormatDollars(s){
	var sOut = RemovePreceedingZero(RemoveCommasAndDollarSigns(s));
	return sOut;
}
function DeFormatCents(s){
	var sOut = RemovePreceedingZero(s);
	return sOut;
}
function FormatDollarField(oField){
	var s = oField.value;
	s = FormatDollars(s)
	oField.value = s;
	return true;
}

function FormatDollars(s){
	s = '' + s;
	s = DeFormatDollars(s)
	if(s == '') s = '0';
	var sOut = '';
	var chr = '';
	var iLen = s.length;
	var iComma = 0;
	for (var i=iLen-1; i>=0; i--)
	{
		chr = s.charAt (i);
		if(chr != ''){
			if(iComma == 3 && chr != '-'){
				sOut = chr + ',' + sOut;
				iComma = 0;
			}
			else{
				sOut = chr + sOut;
			}
			iComma ++;
		}
	}
	return sOut;
}


function RemoveCommasAndDollarSigns(s) 
{
	s = '' + s;
	var iLen = s.length;
	var sOut = '';
	var chr = '';
	for (var i=0; i<iLen; i++)
	{
		chr = s.charAt (i);
		if (chr != ',' && chr != '$')
		{
			sOut = sOut + chr;
		}
	}
	return sOut;
}


function FormatCentField(oField){
	var sVal = oField.value;
	sVal = FormatCents(sVal);
	oField.value = sVal;
	return true;
}

function FormatCents(s){
	s = '' + s;
	var iVal;
	var sVal;
	sVal = DeFormatCents(s);
	if(sVal == '') sVal = '0';
	iVal = parseInt(sVal);
	if(isNaN(iVal)){ iVal = 0;}
	switch(iVal){
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
		case 6:
		case 7:
		case 8:
		case 9:
			sVal = '0' + iVal;
			break;
		default:
			sVal = '' + iVal;		
	}
	return sVal;
}

function SplitTotalToFields(Total, oFieldD, oFieldC){
	var bIsNegative = (Total < 0);
	Total = Math.abs(Total);
	var TotalD = Math.floor(Total / 100);
	var TotalC = (Total / 100);
	TotalC =  TotalC - TotalD;
	TotalC = TotalC * 100; 
	TotalC = Math.round(TotalC);
	oFieldC.value = TotalC;
	FormatCentField(oFieldC);
	if(bIsNegative){
		oFieldD.value = '-' + TotalD;
	}
	else{
		oFieldD.value = TotalD;	
	}
	FormatDollarField(oFieldD);
}
function ValidateMoneyLimit(oFieldD, iValC, iTDLmt, iTCLmt){
	var Dollars = ReturnDollarsVal(oFieldD.value);
	var Cents = 0;
	var TotalDLimit = 2000000000;
	var TotalCLimit = 0;
	if(arguments.length > 1){
		Cents = iValC
	}
	if(arguments.length > 2){
		TotalDLimit = iTDLmt;
		TotalCLimit = iTCLmt;
	}
	var Total = (Dollars * 100) + Cents;
	if(Total > ((TotalDLimit * 100) + TotalCLimit)){
		alert('Dollar amounts over $' + FormatDollars(TotalDLimit) + '.' + FormatCents(TotalCLimit) + ' are not allowed.');
		oFieldD.focus();
		oFieldD.select();
		return false;
	}
	return true;
}