function UpdateTotals()
	{
		if (!document.getElementById)
		{
			return;
		}
		
		document.getElementById('vvtotal').innerHTML   = format_number(GetVVTotal(), 2);
		document.getElementById('hometotal').innerHTML = format_number(GetHomeTotal(), 2);
		//document.getElementById('fuel').innerHTML = format_number(GetFuel(), 2);
	}
	
	function GetVVTotal()
	{
		total = 0;
		
		
		switch (document.calculator.roomtype.value)
		{
			case '1A': total += 870.00; break;
			case '1B': total += 1065.00; break;
			case '1C': total += 1306.00; break;
			case '1D': total += 1415.00; break;
			case '1E': total += 1525.00; break;
			default: break;
		}
		
		fields = new Array('telephone', 'cabletv');
		for (i = 0; i < fields.length; i++)
		{
			temp = parseFloat(eval('document.calculator.' + fields[i] + '.value'));
			if (!isNaN(temp))
			{
				total += temp;
			}
		}
 
		total += 50; // garage fee
		
		return total;
	}
	
	function GetHomeTotal()
	{
		total = 0;
		fields = new Array('mortgage', 'taxes', 'propertyins', 'heat', 'electricity',
							'water', 'telephone', 'trash', 'garage', 'maintenance', 'repairs', 'landscaping',
							'lawncare', 'snowremoval', 'security', 'smokealarm', 'painting', 'driveway', 'cabletv');
 
		for (i = 0; i < fields.length; i++)
		{
			temp = parseFloat(eval('document.calculator.' + fields[i] + '.value'));
			if (!isNaN(temp))
			{
				total += temp;
			}
		}
				
		return total;
	}
	
	/* Fuel surcharge included in new pricing
	function GetFuel()
	{
	
		fuel_charge = 0;
		
		switch (document.calculator.roomtype.value)
		{
			case '1A': fuel_charge += 23.85; break;
			case '1B': fuel_charge += 29.25; break;
			case '1C': fuel_charge += 35.85; break;
			case '1D': fuel_charge += 38.85; break;
			case '1E': fuel_charge += 41.85; break;
			default: break;
		}
		
		return fuel_charge;
	}
	*/	
 
	function ChangeVV(obj)
	{
		name = obj.name;
		val  = obj.value;
 
		if (!document.getElementById)
		{
			return;
		}
		
		document.getElementById('vv' + name).innerHTML = format_number(val, 2);
	}
	
	/*function : format_number()  
version: 1.0.0  
This function formats a numeric value passed in to it with specified number of  
decimal values. numeric value will not be rounded.  
pnumber : numeric value to be formatted.  
decimals : number of decimal points desired.  

Author: Buddhike de Silva  
Date: 21-Nov-2002 11:16 AM*/  

/*  
revision: 1.1.0  
Author: M. Cassim Farook  
Date: 21-Nov-2002 10:16 PM  
Notes: No offense buddhike...but i had to rewrite the code  
works for ADT (any dam thing)  
usage: x = format_number(123.999, 2)  
*/  

/*  
revision: 1.2.0  
Authors: Buddhike de Silva  
Date: 22-Nov-2002 12:07 PM  
Notes: Optimized for best performence.  
usage: x = format_number(123.999, 2)  
*/  

/* 
 * Revision: 1.3 
 * Author: Mike Robb (JS-X.com) 
 * Date: May 26, 2003 
 * Notes:  Changed to deal with negative numbers. 
 *         Fixed length of final answer. 
 *         Work-around for javascript internal math problem with rounding negative numbers. 
 */ 

/*
 * Revision 1.4
 * Author: LeAnn Roberts
 * Date: September, 2003
 * Note: Modified the if logic: Math.pow()
 */

/*
 * Revision 1.5
 * Author: Robert Heggdal
 * Date: February, 2004
 * Note: Modified check for negative number by replacing parseInt with parseFloat so that negative numbers between zero and minus one are recognized as such.
 */ 

/*
 * Revision 1.6
 * Author: Naveen
 * Date: February, 2004
 * Note: Rewrote format_number to correct a logic problem.
 */

/*
 * Revision 1.7
 * Author: JS-X.com
 * Date: February, 2004
 * Note: Added wrapper around format_number as negative values were dropped from
 *       the logic.
 */

function format_number(p,d) 
{
  var r;
  if(p<0){p=-p;r=format_number2(p,d);r="-"+r;}
  else   {r=format_number2(p,d);}
  return r;
}
function format_number2(pnumber,decimals) 
{
  var strNumber = new String(pnumber);
  var arrParts = strNumber.split('.');
  var intWholePart = parseInt(arrParts[0],10);
  var strResult = '';
  if (isNaN(intWholePart))
    intWholePart = '0';
  if(arrParts.length > 1)
  {
    var decDecimalPart = new String(arrParts[1]);
    var i = 0;
    var intZeroCount = 0;
     while ( i < String(arrParts[1]).length )
     {
       if( parseInt(String(arrParts[1]).charAt(i),10) == 0 )
       {
         intZeroCount += 1;
         i += 1;
       }
       else
         break;
    }
    decDecimalPart = parseInt(decDecimalPart,10)/Math.pow(10,parseInt(decDecimalPart.length-decimals-1)); 
    Math.round(decDecimalPart); 
    decDecimalPart = parseInt(decDecimalPart)/10; 
    decDecimalPart = Math.round(decDecimalPart); 

    //If the number was rounded up from 9 to 10, and it was for 1 'decimal' 
    //then we need to add 1 to the 'intWholePart' and set the decDecimalPart to 0. 

    if(decDecimalPart==Math.pow(10, parseInt(decimals)))
    { 
      intWholePart+=1; 
      decDecimalPart="0"; 
    } 
    var stringOfZeros = new String('');
    i=0;
    if( decDecimalPart > 0 )
    {
      while( i < intZeroCount)
      {
        stringOfZeros += '0';
        i += 1;
      }
    }
    decDecimalPart = String(intWholePart) + "." + stringOfZeros + String(decDecimalPart); 
    var dot = decDecimalPart.indexOf('.');
    if(dot == -1)
    {
      decDecimalPart += '.'; 
      dot = decDecimalPart.indexOf('.'); 
    } 
    var l=parseInt(dot)+parseInt(decimals); 
    while(decDecimalPart.length <= l) 
    {
      decDecimalPart += '0'; 
    }
    strResult = decDecimalPart;
  }
  else
  {
    var dot; 
    var decDecimalPart = new String(intWholePart); 

    decDecimalPart += '.'; 
    dot = decDecimalPart.indexOf('.'); 
    var l=parseInt(dot)+parseInt(decimals); 
    while(decDecimalPart.length <= l) 
    {
      decDecimalPart += '0'; 
    }
    strResult = decDecimalPart;
  }
  return strResult;
}
