/** start trim function**/
function trim(Str)
{
	if((Str != "") && (Str.indexOf(" ",0)!=-1))
	{
		var iMax = Str.length;
		var end = Str.length;
		var c;
		for(i=0;1<iMax;i++)
		{
			c = Str.substring(0,1);
			if (c == " ")
			{
				Str=Str.substring(1,end);
				end = Str.length;
			}
			else
				break;
		}
		iMax = Str.length;
		end = Str.length;
		for(i=iMax;i>0;i--)
		{
			c = Str.substring(end-1,end)
			if (c == " ")
			{				
				Str=Str.substring(0,end-1);
				end = Str.length;
			}
			else
				break;
		}
	}
	return Str;
}

/** start isEmpty  function**/
function isEmpty(str)
{
	var trimmed = trim(str);
	return((trimmed==null) || (trimmed.length==0))
}

/** start numeric check function**/
function isNumeric(fObj)
{
	if ( fObj != "" ) 
	{
		var iMax = fObj.value.length;
		for(i = 0; i < iMax; i++)
		{
			var c = fObj.value.charAt(i);
			if ((c < '0') || (c >'9'))
			{
				if (c != ".")
				{
				return false;
				}
			}
		}
	}
	return true;
}
	
/** start decimal check function**/
function isFloat(fObj,fName,isReq,minVal,maxVal,isMon)
{
	if ((isReq == false) && (isEmpty(fObj.value)))
		return true;
	
	var field=fObj.value;
	var decNum = 0;
	if(field != "")
	{
		var iMax = field.length;
		var front = field.indexOf(".",0);
		var back = field.lastIndexOf(".",iMax - 1);
		if(front != back)
		{
			floatAlert(fObj,fName);
			return false;
		}
		for(i = 0; i < iMax; i++)
		{
			var c = fObj.value.charAt(i);
			if ((c < '0'  || c >'9') && (c != "."))
			{
				floatAlert(fObj,fName);
				return false;
			}
		}
		if((minVal!=0 || minVal!="") && fObj.value<minVal)
		{
			alert(fName + " must be larger than " + minVal + ".");
			fObj.focus();
			return false;
		}
		if((maxVal!=0 || maxVal!="") && fObj.value>maxVal)
		{
			alert(fName + " must be less than " + maxVal + ".");
			fObj.focus();
			return false;
		}
		if(isMon && (iMax - front)-1 != 2)
		{
			alert(fName + " must be a valid monetery unit.");
			fObj.focus()
			return false;
		}
	}
	else {
		alert(fName + " is a required field.");
		fObj.focus();
		return false;
	}
	return true;
}
	
function isValidInteger(sVal)
{
	//matches all digits
	IntegerRegEx = /^[0-9]+$/i;
	return IntegerRegEx.test(sVal);
}

function calculateFedIncomeTax(intIncome)
{
	//income brackets are from Federal Schedule Y-1 (Married filing jointly)
	var curFedTaxAmt = 0.00;
	var intTaxBracket = 0;
	
	if (intIncome > 326450){
		curFedTaxAmt = 88320.00 + (.35 * (intIncome - 326450));
		intTaxBracket = 6;
	}else if (intIncome > 182800){
		curFedTaxAmt = 40915.50 + (.33 * (intIncome - 182800));
		intTaxBracket = 5;
	}else if (intIncome > 119950){
		curFedTaxAmt = 23317.50 + (.28 * (intIncome - 119950));
		intTaxBracket = 4;
	}else if (intIncome > 59400){
		curFedTaxAmt = 8180.00 + (.25 * (intIncome - 59400));
		intTaxBracket = 3;
	}else if (intIncome > 14600){
		curFedTaxAmt = 1460.00 + (.15 * (intIncome - 14600));
		intTaxBracket = 2;
	}else{
		curFedTaxAmt = .10 * intIncome;
		intTaxBracket = 1;
	}

	return parseInt(curFedTaxAmt,10) + "~" + intTaxBracket;
}
function formatCurrency(num,withCents) 
{
	num = num.toString().replace(/\$|\,/g,'');
	
	if(isNaN(num))
	num = "0";
	
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	
	if(cents<10)
	cents = "0" + cents;
	
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3)) + ','
			+ num.substring(num.length-(4*i+3));
			
	if (withCents == 'Yes'){
		return (((sign)?'':'-') + num + '.' + cents);
	}else{
		return (((sign)?'':'-') + num);
	}
}
