// JavaScript Document
/***************************
(c) 2008 www.TUFaT.com
All Rights Reserved. Please
do not re-sell/re-distribute
this software.
***************************/

function CalculateTax(form)
{
	var wage = form.income.value;
	var ty = form.ty.value;
	var kids = form.ch.value;
	var nwag = form.nw.value;
	var gain = form.cg.value;
	var ided = form.ided.value;
	var mort = form.mc.value;
	var frat = form.fr.value;
	var forbesd = 13100;  
	var typ = ty; 
	var grammd = 11000;
	var prc = Array(0.15,0.28,0.31,0.36,0.396); 
	var armeyd = 11350;
	var lim = Array(0,23350,56550,117950,256500); 
	var forbesd = 0;  
	var grammd = 0;
	var self = 2500; 
	var stat = "A";
	
	if (ty =='Head of Household') {
		stat =  "B"; 
		stdd = 17200; 
		lim = Array(0,31250,80750,130800,256500); 
		self = 2500; 
		armeyd = 14850;
		forbesd = 13100;  
		grammd = 11000;
	}
	if (ty == 'Married Filing Jointly') {
		stat =  "C"; 
		stdd = 26200; 
		lim = Array(0,39000,94250,143600,256500); 
		self = 5000; 
		armeyd = 22700;
		forbesd = 26200;  
		grammd = 22000;
	}
	if (ty == 'Married Filing Seperately') {
		stat =  "D"; 
		stdd = 13100; 
		lim = Array(0,19500,47125,71800,128250); 
		self = 2500; 
		armeyd = 22700;
		forbesd = 26200; 
		grammd = 22000; 
	}
	exem = eval(kids) * 5300;
	gexem = eval(kids) * 5000;
	limforb = eval(armeyd) + eval(exem);
	tax = (eval(wage) - eval(limforb)) * eval(frat)/100;
	forbes_tax = (eval(wage) - eval(exem) - eval(forbesd)) * eval(frat)/100;
	grat = frat - 1;
	gramm_tax = (eval(wage) + eval(nwag) + eval(gain) - eval(gexem) - eval(grammd) - eval(mort)) * grat/100;
	if (tax < 0) { tax = 0; }
	if (forbes_tax < 0) { forbes_tax = 0; }
	if (gramm_tax < 0) { gramm_tax = 0; }
	var StrAdd= '<strong> <font color="#FF0000">Results</font></strong> <br />';
	if ((ided + mort) < 1) 
	{
		ided = 3900; 
		mort = 0;
		if (stat == "B") { 
			ided = 5750; 
		}
		if (stat == "C") { 
			ided = 6550; 
		}
		if (stat == "D") { 
			ided = 3275; 
		}
		StrAdd= StrAdd + 'Since you gave no itemized deductions, your standard deduction of $ '+ided+' was used.<hr/>';
	}

	document.getElementById("armey").innerHTML=StrAdd+'Only income above $ '+formatNumberDec(eval(armeyd)+eval(exem),2,1)+' would be taxed (<strong>Armey</strong>)<br />Your Armey Flat Tax would be: $ '+formatNumberDec(tax,2,1);
	document.getElementById("forbes").innerHTML='Only income above $ '+formatNumberDec(eval(forbesd)+eval(exem),2,1)+' would be taxed (<strong>Forbes</strong>)<br />Your Forbes Flat Tax would be: $ '+formatNumberDec(forbes_tax,2,1);
	document.getElementById("gramm").innerHTML='Only income above $ '+formatNumberDec(eval(grammd)+eval(gexem) + eval(mort),2,1)+' would be taxed (<strong>Gramm</strong>)<br />Your Gramm Flat Tax would be: $ '+formatNumberDec(gramm_tax,2,1);

	gross = eval(wage) + eval(nwag) + eval(gain);
	allow = 2500 * eval(kids) + eval(self); 
	ided = eval(ided) + eval(mort);
	ti = eval(gross) - eval(ided) - eval(allow);
	tt = ti; 
	ct = 0; 
	rate = 0;
	for (i=4; i>=0; i--)
	{
		if (ti > lim[i]) 
		{
		  tt = tt - lim[i];  
		  ct = eval(ct) + (eval(prc[i]) * tt);
		  tt = lim[i]; 
		  if (rate == 0)  { rate = prc[i] * 100; }
		}
	}

	document.getElementById("other").innerHTML='<strong>Under Current Taxation Laws:</strong> <br />Gross Income = $ '+formatNumberDec(gross,2,1)+'<br />Deductions = $ '+formatNumberDec(ided,2,1)+'<br />Exemptions = $ '+formatNumberDec(allow,2,1)+' ($2500/person incl. self for 1995)<br />Taxable Income = $ '+formatNumberDec(ti,2,1)+'<br />Tax Bracket = '+formatNumberDec(rate,2,0)+' %';
	document.getElementById("maintax").innerHTML='<strong>Your current income tax is $ '+formatNumberDec(ct,2,1) + '</strong>';
	document.getElementById("results").style.display='block';
}

function formatNumberDec(num, places, comma) {
var isNeg=0;
    if(num < 0) {
       num=num*-1;
       isNeg=1;
    }
    var myDecFact = 1;
    var myPlaces = 0;
    var myZeros = "";
    while(myPlaces < places) {
       myDecFact = myDecFact * 10;
       myPlaces = eval(myPlaces) + eval(1);
       myZeros = myZeros + "0";
    }
    
	onum=Math.round(num*myDecFact)/myDecFact;
	integer=Math.floor(onum);
	if (Math.ceil(onum) == integer) {
		decimal=myZeros;
	} else{
		decimal=Math.round((onum-integer)* myDecFact)
	}
	decimal=decimal.toString();
	if (decimal.length<places) {
        fillZeroes = places - decimal.length;
	   for (z=0;z<fillZeroes;z++) {
        decimal="0"+decimal;
        }
     }

   if(places > 0) {
      decimal = "." + decimal;
   }

   if(comma == 1) {
	integer=integer.toString();
	var tmpnum="";
	var tmpinteger="";
	var y=0;

	for (x=integer.length;x>0;x--) {
		tmpnum=tmpnum+integer.charAt(x-1);
		y=y+1;
		if (y==3 & x>1) {
			tmpnum=tmpnum+",";
			y=0;
		}
	}

	for (x=tmpnum.length;x>0;x--) {
		tmpinteger=tmpinteger+tmpnum.charAt(x-1);
	}


	finNum=tmpinteger+""+decimal;
   } else {
      finNum=integer+""+decimal;
   }

    if(isNeg == 1) {
       finNum = "-" + finNum;
    }

	return finNum;
}
