
<!--
var nastynum;
var maxprice;
var aincome;
var cincome;
var cards;
var cars;
var child;
var alimony;
var student;
var other;
var credit;

function beautify()
{
        var uglynum;
        var prettynum = "$";
        var uglyptr = 0;
        var numtrios;
        var leadingdigs;
        var numcommas;

        uglynum = maxprice.toFixed(2);
        uglynum = uglynum.toString();
        numtrios = Math.floor(uglynum.length / 3);
        leadingdigs = uglynum.length % 3;
        numcommas = numtrios - ((numtrios > 1 && leadingdigs == 0) ? 2 : 1);

        // put out ll or 1st ddd
        if (leadingdigs > 0)
        {
                prettynum += uglynum.substr(0,leadingdigs);
                uglyptr += leadingdigs;
        }
        else
                if (numtrios > 1)
                {
                        prettynum += uglynum.substr(0,3);
                        uglyptr += 3;
                }

        // put out ,ddd as often as needed
        while (numcommas-- > 0)
        {
                prettynum += "," + uglynum.substr(uglyptr,3);
                uglyptr += 3;
        }

        // put out .dd
        prettynum += uglynum.substr(uglyptr,3);
        maxprice = prettynum;
        document.calc.comment.value = "You qualify for a home worth up to " + maxprice;
        return true;
}

function prune()
{
        var nicenum;
        var holder;
	var done = 0;
	var badthing = 0;

	// If entry was null, give 'er a 0 string.
	if(nastynum.length == 0)
	{
		nicenum = "0";
		done = 1;
	}
	
	// Check for more goblins
	else
	{
		// If entry was $xxx we will shave off the first $
		if (nastynum.substr(0,1) =='$' && nastynum.length > 1)
			nastynum = nastynum.substr(1,nastynum.length-1);

		// Next we shave off leading zeroes.  They seem to screw up parseInt() further down.
		while (nastynum.substr(0,1) == '0' && !done)
		{
			if (nastynum.length > 1)
			{
//				holder = nastynum;
//				nastynum = 0;
				nastynum = nastynum.substr(1, nastynum.length-1);
			}
			
			// If we've got nothing but one or more 0's, just keep one around
			else
			{
				nicenum = "0";
				done = 1;
			}			
		}	
		
		// Check each byte individually
		for (var i=0; (i<nastynum.length && badthing == 0); i++)
		{
			// Glitch: apparently isNan() accepts a blank as a number which causes confusion during calculation. Fixed below:
			if (nastynum.substr(i,1) < '0' || nastynum.substr(i,1) > '9')
				badthing = 1;
		}
	} // End goblin check

	// If no error & we haven't already filled nicenum
	if (!badthing && !done)
		nicenum = nastynum;

	// If there's a negative, lone $, or any other funny character anywhere in the entry, complain
	if (badthing)
	{
		document.calc.comment.value = "Enter numerals only in fields above."
		return false;
	}
	
	// Make integer available to calculate()
	else
	{
		retfield = parseInt(nicenum);
		return true;
	}
}


function calculate()
{
	var aincome;
	var cincome;
	var cards;
	var cars;
	var child;
	var alimony;
	var student;
	var other;
	var credit;
	var annualincome;
	var modebt;
	var annualdebt;
        var netincome = 0;
	var badentry = 0;
	var toolow = 0;

        //Retrieve each debt field & validate
	nastynum = document.calc.aincome.value;
	if (prune() == true)
		aincome = retfield;
	else
		badentry = 1;

        nastynum = document.calc.cincome.value;
        if (prune() == true)                
		cincome = retfield;        
	else                
		badentry = 1;

        credit = parseFloat(document.calc.credit.value);

        nastynum = document.calc.cards.value;
        if (prune() == true)    
             	cards = retfield;
        else                                
		badentry = 1;

        nastynum = document.calc.cars.value;
        if (prune() == true)
                cars = retfield;
        else
                badentry = 1;

        nastynum = document.calc.child.value;
        if (prune() == true)
                child = retfield;
        else
                badentry = 1;

        nastynum = document.calc.alimony.value;
        if (prune() == true)
                alimony = retfield;
        else
                badentry = 1;

        nastynum = document.calc.student.value;
        if (prune() == true)
                student = retfield;
        else
                badentry = 1;

        nastynum = document.calc.other.value;        
	if (prune() == true)                
		other = retfield;        
	else                
		badentry = 1;
	      
	// If all entries were validated go ahead
	if (!badentry)
	{
		//Calculate gross income
		annualincome = aincome + cincome;

		//Calculate monthly debt
		modebt = cards + cars + child + alimony + student + other;

		//Calculate annual debt
		annualdebt = modebt * 12;

        	//Calculate net income
        	netincome = annualincome - annualdebt;
	
                //If net income is less than $10,000, prompt to enter annual income
                if (netincome < 10000 || annualincome < 15000)
			document.calc.comment.value = "Enter annual income and monthly payments.";
                else
                {
                        //Calculate maxprice
                        maxprice = (annualincome * 0.0375 - 400 - modebt) / (credit / 12);
			//Make sure maxprice is between $100,000 and $10,000,000
			if (maxprice < 100000)
			{
				toolow = 1;
				document.calc.comment.value = "Call your local representative";
			}	
			if (maxprice > 10000000)
				maxprice = 10000000;
			if (!toolow)
                       		//Make the output look nice and output it with a good news msg
                       		beautify();
                } //End of 'else' clause

        } // End of if (!badentry)

} // End of calculate()

//-->

