/***********************************************
* Introductory Server PowerEdge R2160 Form
* Property of ServerTune, Inc.
* Last updated February 6th, 2009.
***********************************************/

function round(number, X)
{
	// rounds number to X decimal places, defaults to 2
	if ( X == undefined )
		X = 2;

	return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}	

function ComputeTotal ( frm )
{

/* Initialize price and setup cost arrays */

	// ServerType
	srv = new Array(3);
	srv_setup = new Array(3);
  	srv[0] = "89.00";  srv_setup[0] = "25.00";
  	srv[1] = "109.00";  srv_setup[1] = "25.00";


	// Memory
	mem = new Array(4);
	mem_setup = new Array(4);
  	mem[0] = "0.00";   mem_setup[0] = "0.00";
  	mem[1] = "20.00";  mem_setup[1] = "0.00";
  	mem[2] = "40.00";  mem_setup[2] = "0.00";
  	mem[3] = "60.00";  mem_setup[3] = "0.00";

	// HardDrive
	hdd = new Array(5);
	hdd_setup = new Array(5);
  	hdd[0] = "0.00";   hdd_setup[0] = "0.00";
  	hdd[1] = "15.00";  hdd_setup[1] = "0.00";
  	hdd[2] = "35.00";  hdd_setup[2] = "0.00";
  	hdd[3] = "50.00";  hdd_setup[3] = "0.00";
  	hdd[4] = "50.00";  hdd_setup[4] = "0.00";

	// HardDrive
	hdd2 = new Array(6);
	hdd2_setup = new Array(6);
  	hdd2[0] = "0.00";   hdd2_setup[0] = "0.00";
  	hdd2[1] = "10.00";  hdd2_setup[1] = "0.00";
  	hdd2[2] = "20.00";  hdd2_setup[2] = "0.00";
  	hdd2[3] = "30.00";  hdd2_setup[3] = "0.00";
  	hdd2[4] = "50.00";  hdd2_setup[4] = "0.00";
  	hdd2[5] = "50.00";  hdd2_setup[5] = "0.00";

	// SrvSec
	sec = new Array(3);
	sec_setup = new Array(3);
  	sec[0] = "0.00";  sec_setup[0] = "0.00";
  	sec[1] = "0.00";  sec_setup[1] = "79.95";
  	sec[2] = "0.00";  sec_setup[2] = "125.00";

	// OS
	ops = new Array(9);
	ops_setup = new Array(9);
	ops[0] = "0.00";  ops_setup[0] = "0.00";
	ops[1] = "0.00";  ops_setup[1] = "0.00";
	ops[2] = "0.00";  ops_setup[2] = "0.00";
	ops[3] = "0.00";  ops_setup[3] = "0.00";
	ops[4] = "0.00";  ops_setup[4] = "0.00";
	ops[5] = "0.00";  ops_setup[5] = "0.00";
	ops[6] = "0.00";  ops_setup[6] = "0.00";
	ops[7] = "0.00";  ops_setup[7] = "0.00";
	ops[8] = "0.00";  ops_setup[8] = "0.00";

	// ServerMgnt
	lvl = new Array(2);
	lvl_setup = new Array(2);
	lvl[0] = "0.00";   lvl_setup[0] = "0.00";
	lvl[1] = "69.95";  lvl_setup[1] = "0.00";

	// ControlPanel
	ctl = new Array(6);
	ctl_setup = new Array(4);
	ctl[0] = "0.00";   ctl_setup[0] = "0.00";
	ctl[1] = "10.00";  ctl_setup[1] = "0.00";
	ctl[2] = "15.00";  ctl_setup[2] = "0.00";
	ctl[3] = "30.00";  ctl_setup[3] = "0.00";

	// Bandwidth
	bnd = new Array(4);
	bnd_setup = new Array(4);
	bnd[0] = "0.00";   bnd_setup[0] = "0.00";
	bnd[1] = "50.00";  bnd_setup[1] = "0.00";
	bnd[2] = "75.00";  bnd_setup[2] = "0.00";
	bnd[3] = "100.00"; bnd_setup[3] = "0.00";

	// IPs
	adr = new Array(4);
	adr_setup = new Array(4);
	adr[0] = "0.00";   adr_setup[0] = "0.00";
	adr[1] = "16.25";  adr_setup[1] = "0.00";
	adr[2] = "36.25";  adr_setup[2] = "0.00";
	adr[3] = "76.25";  adr_setup[3] = "0.00";

	// Uplink
	upl = new Array(3);
	upl_setup = new Array(3);
	upl[0] = "0.00";   upl_setup[0] = "0.00";
	upl[1] = "10.00";  upl_setup[1] = "0.00";
	upl[2] = "20.00";  upl_setup[2] = "0.00";

/* Radio button parsing */

	// ServerType
	sel = -1;
	for ( i = 0; i < frm.ServerType.length; i++ ) {
		if ( frm.ServerType[i].checked == true )
			sel = i;
	}
	if ( sel >= 0 ) {
		servertype = round( srv[sel] );
		servertype_setup = round( srv_setup[sel] );
	} else {
		servertype = 0;
		servertype_setup = 0;
	}

	// Memory
	sel = -1;
	for ( i = 0; i < frm.Memory.length; i++ ) {
		if ( frm.Memory[i].checked == true )
			sel = i;
	}
	if ( sel >= 0 ) {
		memory = round( mem[sel] );
		memory_setup = round( mem_setup[sel] );
	} else {
		memory = 0;
		memory_setup = 0;
	}

	// HardDrive 1st and 2nd
	sel = -1;
	for ( i = 0; i < frm.HardDrive.length; i++ ) {
		if ( frm.HardDrive[i].checked == true )
			sel = i;
	}
	if ( sel >= 0 ) {
		harddrive = round( hdd[sel] );
		harddrive_setup = round( hdd_setup[sel] );
	} else {
		harddrive = 0;
		harddrive_setup = 0;
	}

	// HardDrive 3rd and 4th
	sel = -1;
	for ( i = 0; i < frm.HardDrive2.length; i++ ) {
		if ( frm.HardDrive2[i].checked == true )
			sel = i;
	}
	if ( sel >= 0 ) {
		harddrive2 = round( hdd2[sel] );
		harddrive2_setup = round( hdd2_setup[sel] );
	} else {
		harddrive2 = 0;
		harddrive2_setup = 0;
	}

	// SrvSec
	sel = -1;
	for ( i = 0; i < frm.SrvSec.length; i++ ) {
		if ( frm.SrvSec[i].checked == true )
			sel = i;
	}
	if ( sel >= 0 ) {
		srvsec = round( sec[sel] );
		srvsec_setup = round( sec_setup[sel] );
	} else {
		srvsec = 0;
		srvsec_setup = 0;
	}

	// OS
	sel = -1;
	for ( i = 0; i < frm.OS.length; i++ ) {
		if ( frm.OS[i].checked == true )
			sel = i;
	}
	if ( sel >= 0 ) {
		os = round( ops[sel] );
		os_setup = round( ops_setup[sel] );
	} else {
		os = 0;
		os_setup = 0;
	}

	// ServerMgnt
	sel = -1;
	for ( i = 0; i < frm.ServerMgnt.length; i++ ) {
		if ( frm.ServerMgnt[i].checked == true )
			sel = i;
	}
	if ( sel >= 0 ) {
		ServerMgnt = round( lvl[sel] );
		ServerMgnt_setup = round( lvl_setup[sel] );
	} else {
		ServerMgnt = 0;
		ServerMgnt_setup = 0;
	}


	// ControlPanel
	sel = -1;
	for ( i = 0; i < frm.ControlPanel.length; i++ ) {
		if ( frm.ControlPanel[i].checked == true )
			sel = i;
	}
	if ( sel >= 0 ) {
		controlpanel = round( ctl[sel] );
		controlpanel_setup = round( ctl_setup[sel] );
	} else {
		controlpanel = 0;
		controlpanel_setup = 0;
	}

	// Bandwidth
	sel = -1;
	for ( i = 0; i < frm.Bandwidth.length; i++ ) {
		if ( frm. Bandwidth[i].checked == true )
			sel = i;
	}
	if ( sel >= 0 ) {
		bandwidth = round( bnd[sel] );
		bandwidth_setup = round( bnd_setup[sel] );
	} else {
		bandwidth = 0;
		bandwidth_setup = 0;
	}

	// IPs
	sel = -1;
	for ( i = 0; i < frm.IPs.length; i++ ) {
		if ( frm.IPs[i].checked == true )
			sel = i;
	}
	if ( sel >= 0 ) {
		ips = round( adr[sel] );
		ips_setup = round( adr_setup[sel] );
	} else {
		ips = 0;
		ips_setup = 0;
	}

	// Uplink
	sel = -1;
	for ( i = 0; i < frm.Uplink.length; i++ ) {
		if ( frm.Uplink[i].checked == true )
			sel = i;
	}
	if ( sel >= 0 ) {
		uplink = round( upl[sel] );
		uplink_setup = round( upl_setup[sel] );
	} else {
		uplink = 0;
		uplink_setup = 0;
	}

/* Sum all the costs */

	total_monthly = servertype + memory + harddrive + harddrive2 + srvsec + os + ServerMgnt + controlpanel + bandwidth + ips + uplink;
	total_setup = servertype_setup + memory_setup + harddrive_setup + harddrive2_setup + srvsec_setup + os_setup + ServerMgnt_setup + controlpanel_setup + bandwidth_setup + ips_setup + uplink_setup;

	// PayTerms
	sel = 0;
	for ( i = 0; i < frm. PayTerm.length; i++ ) {
		if ( frm. PayTerm[i].checked == true )
			sel = i;
	}
	if ( sel == 1 ) {
		disc = 0.03;
		scalar = 3;
	}
	else if ( sel == 2 ) {
		disc = 0.05;
		scalar = 6;
	}
	else if ( sel == 3 ) {
		disc = 0.07;
		scalar = 12;
	}
	else {
		disc = 0;
		scalar = 1;
	}

/* Do final calculations and fill in form display */

	frm.disp_setup.value = round( total_setup );
	frm.disp_total.value = round( total_monthly * scalar * ( 1 - disc ) );
	frm.disp_discount.value = round( total_monthly * scalar * disc );
	frm.disp_price.value = round( total_monthly * ( 1 - disc ) );

}