var service = new dedicated_service;
var dedicateds = Array();
var currency_conversion_indexes = Array();
function init_page( serviceid )
{
dedicateds[12] = new dedicated_server( 12, 'Dedicated Lite', '
Guaranteed minimum spec: Intel Pentium 4 2.4 GHz, 1024MB RAM, 40GB HD Free 50MB of webspace Free 24-player teamspeak or ventrilo server Estimates** of Server Use: 1 x 24-player Battlefield 2 Server or 1 x 16 player Unreal Tournament XMP + 1 x 8-player MOHAA or 1 x 12-player MOHAA, 1 x 12-player CoD ', 4255.30, 5000.00, 1, 1, 0, 0 );
dedicateds[12].add_os( 80, 'Microsoft Windows', 0.00, 0.00 );
dedicateds[12].add_os( 81, 'FreeBSD', 0.00, 0.00 );
dedicateds[12].add_voice_comm( 0, "None", 0, 0 );
dedicateds[12].add_voice_comm( 128, 'Free Teamspeak Server', 0.00, 0.00 );
dedicateds[12].add_voice_comm( 129, 'Free Ventrilo Server', 0.00, 0.00 );
dedicateds[12].add_payment_term( 3, 0.10000 );
dedicateds[12].add_payment_term( 12, 0.30000 );
dedicateds[12].add_payment_term( 6, 0.20000 );
dedicateds[15] = new dedicated_server( 15, 'Dedicated Ultra', 'Guaranteed minimum spec: Dual Core AMD Athlon 64 4400+, 2048MB RAM, 120GB HD Free 400MB of webspace Free 64-player teamspeak or ventrilo server Estimates** of server use: 2 x 64-player BF2 servers, or 4 x 32-player BF2 servers, or 8 x 32-player MOHAA servers, or 4 x 24-player CS:S(66 tick) servers, or 6 x 12-player UT2004 servers, or 2 x 32-player UT2004 Onslaught servers ', 15744.70, 18500.00, 1, 1, 0, 0 );
dedicateds[15].add_os( 101, 'Microsoft Windows', 0.00, 0.00 );
dedicateds[15].add_os( 102, 'FreeBSD', 0.00, 0.00 );
dedicateds[15].add_voice_comm( 0, "None", 0, 0 );
dedicateds[15].add_voice_comm( 123, 'Free Teamspeak Server', 0.00, 0.00 );
dedicateds[15].add_voice_comm( 124, 'Free Ventrilo Server', 0.00, 0.00 );
dedicateds[15].add_payment_term( 3, 0.10000 );
dedicateds[15].add_payment_term( 12, 0.20000 );
dedicateds[15].add_payment_term( 6, 0.15000 );
dedicateds[21] = new dedicated_server( 21, 'Dedicated Ultra Extreme', 'Guaranteed minimum spec: Dual Core Intel Core 2 E6700+, 2048MB RAM, 120GB HD Free 400MB of webspace Free 64-player teamspeak or ventrilo server Estimates** of server use: 2 x 64-player BF2/2142 servers, or 2 x 48+ player BF2142 titan servers, or 4 x 20-player CS:S (100 tick) servers, or 4 x 24-player Stalker servers ', 18297.90, 21500.00, 1, 1, 0, 0 );
dedicateds[21].add_os( 227, 'Microsoft Windows', 0.00, 0.00 );
dedicateds[21].add_os( 228, 'FreeBSD', 0.00, 0.00 );
dedicateds[21].add_voice_comm( 0, "None", 0, 0 );
dedicateds[21].add_voice_comm( 230, 'Free Teamspeak Server', 0.00, 0.00 );
dedicateds[21].add_voice_comm( 231, 'Free Ventrilo Server', 0.00, 0.00 );
dedicateds[21].add_payment_term( 3, 0.10 );
dedicateds[21].add_payment_term( 12, 0.20 );
dedicateds[21].add_payment_term( 6, 0.15 );
dedicateds[17] = new dedicated_server( 17, 'Dedicated Ultimate', 'Guaranteed minimum spec: Dual AMD Opteron 275 dual core 64-bit processor, 2048MB RAM, 250GB HD Free 1000 MB of webspace Free 128-player teamspeak or ventrilo server Estaimtes** of server use: 4 x 64-player BF2 servers, or 8 x 32-player BF2 servers, or 16 x 24-player MOHAA servers, or 8 x 24-player CS:S(66 tick) servers, or 12 x 12-player UT2004 servers, or 4 x 32-player UT2004 Onslaught servers ', 25532.00, 30000.00, 1, 1, 0, 0 );
dedicateds[17].add_os( 159, 'Microsoft Windows', 0.00, 0.00 );
dedicateds[17].add_os( 160, 'FreeBSD', 0.00, 0.00 );
dedicateds[17].add_voice_comm( 0, "None", 0, 0 );
dedicateds[17].add_voice_comm( 162, 'Free Teamspeak Server', 0.00, 0.00 );
dedicateds[17].add_voice_comm( 163, 'Free Ventrilo Server', 0.00, 0.00 );
dedicateds[17].add_payment_term( 3, 0.10000 );
dedicateds[17].add_payment_term( 12, 0.20000 );
dedicateds[17].add_payment_term( 6, 0.15000 );
dedicateds[20] = new dedicated_server( 20, 'Dedicated Ultimate Extreme', 'Guaranteed minimum spec: Dual Intel Core2 processor, 2048MB RAM, 160GB HD Free 1000 MB of webspace Free 128-player teamspeak or ventrilo server ', 34042.50, 40000.00, 1, 1, 0, 0 );
dedicateds[20].add_os( 216, 'Microsoft Windows', 0.00, 0.00 );
dedicateds[20].add_os( 217, 'FreeBSD', 0.00, 0.00 );
dedicateds[20].add_voice_comm( 0, "None", 0, 0 );
dedicateds[20].add_voice_comm( 219, 'Free Teamspeak Server', 0.00, 0.00 );
dedicateds[20].add_voice_comm( 220, 'Free Ventrilo Server', 0.00, 0.00 );
dedicateds[20].add_payment_term( 3, 0.10000 );
dedicateds[20].add_payment_term( 12, 0.20000 );
dedicateds[20].add_payment_term( 6, 0.15000 );
currency_conversion_indexes["GBP-EUR"] = new currency_conversion_index( "GBP", "EUR", 1.30843 );
currency_conversion_indexes["GBP-USD"] = new currency_conversion_index( "GBP", "USD", 2.00337 );
// Populate select box
temp = Array();
for ( j in dedicateds )
{
temp.push( dedicateds[j].name + '#:#' + j );
}
//temp.sort();
dedicated_select = document.getElementById( "dedicated" ).options;
j = 0;
for ( i in temp )
{
data = String( temp[ i ] );
data = data.split( "#:#" );
temp_option = new Option( data[ 0 ], data[ 1 ], 0, 0 );
dedicated_select[j++] = temp_option;
}
for ( i = 0; i < dedicated_select.length; i++ )
{
if ( dedicated_select[i].value == serviceid )
{
document.getElementById( "dedicated" ).selectedIndex = i;
}
}
service.service_typeid = dedicated_select[dedicated_select.selectedIndex].value;
update_os_select();
service.osid = document.getElementById( "os" )[0].value;
update_voice_comm_select();
update_service_desc();
update_payment_terms();
update_pricing();
}
function update_service()
{
// Service type
dedicated = document.getElementById( "dedicated" )[document.getElementById( "dedicated" ).selectedIndex].value;
service.service_typeid = dedicated;
// Operating system
service.osid = document.getElementById( "os" )[document.getElementById( "os" ).selectedIndex].value;
// Voice comms
service.voice_comm = document.getElementById( "voice_comm" )[document.getElementById( "voice_comm" ).selectedIndex].value;
// Managed
service.managed = document.getElementById( "managed" ).checked;
// Payment term
payment_terms = document.getElementById( "actionForm" ).paymentterm;
if ( 'undefined' != typeof( payment_terms ) )
{
for( i = 0; i < payment_terms.length; i++ )
{
if ( payment_terms[i].checked )
{
service.payment_term = payment_terms[i].value;
}
}
}
}
function update_managed()
{
dedicated = document.getElementById( "dedicated" )[document.getElementById( "dedicated" ).selectedIndex].value;
if ( 3 == dedicateds[dedicated].man_type )
{
document.getElementById( "managed" ).checked = dedicateds[dedicated].man_default;
document.getElementById( "managed" ).readonly = 1;
}
else
{
document.getElementById( "managed" ).readonly = 0;
}
}
function update_select_list( selectid, options )
{
temp = document.getElementById( selectid ).selectedIndex;
current_op = ( temp > 0 ) ? document.getElementById( selectid )[temp].text : 0;
select = document.getElementById( selectid ).options;
j = 0;
current_option = 0;
for( i in options )
{
data = String( options[i] );
data = data.split( "#:#" );
if ( current_op == data[0] )
{
current_option = i;
}
temp_option = new Option( data[0], data[1], 0, 0 );
select[j++] = temp_option;
}
if ( select[current_option] )
{
select[current_option].selected = 1;
}
for( ++i; i < select.length; )
{
select[i] = null;
}
}
function update_os_select()
{
temp = Array();
dedicated = document.getElementById( "dedicated" )[document.getElementById( "dedicated" ).selectedIndex].value;
for ( j in dedicateds[dedicated].os )
{
os = dedicateds[dedicated].os[j];
temp.push( os.name + '#:#' + j );
}
temp.sort();
update_select_list( "os", temp );
}
function update_voice_comm_select()
{
temp = Array();
dedicated = document.getElementById( "dedicated" )[document.getElementById( "dedicated" ).selectedIndex].value;
for ( j in dedicateds[dedicated].voice_comm )
{
voice_comm = dedicateds[dedicated].voice_comm[j];
temp.push( voice_comm.name + '#:#' + j );
}
update_select_list( "voice_comm", temp );
}
function update_service_desc()
{
dedicated = service.service_typeid;
document.getElementById( "service_desc" ).innerHTML = dedicateds[dedicated].description;
}
function update_payment_terms()
{
payment_terms = document.getElementById( "actionForm" ).paymentterm;
current_payment_term = 0;
if ( 'undefined' != typeof( payment_terms ) )
{
for( i = 0; i < payment_terms.length; i++ )
{
if ( payment_terms[i].checked )
{
current_payment_term = payment_terms[i].value;
}
}
}
else
{
current_payment_term = 3;
}
tdpt = document.getElementById( "td_payment_terms" );
tdpt.innerHTML = '';
dedicated = service.service_typeid;
payment_terms = dedicateds[dedicated].payment_terms;
if ( payment_terms.length > 0 )
{
cpt_exists = 0;
def_pt = 0;
for( i in payment_terms )
{
if ( def_pt == 0 )
{
def_pt = payment_terms[i].payment_term;
}
if ( payment_terms[i] )
{
cpt_exists = ( payment_terms[i].payment_term == current_payment_term ) ? 1 : cpt_exists;
}
}
if ( cpt_exists == 0 )
{
current_payment_term = def_pt;
}
for( i = 0; i < payment_terms.length; i++ )
{
if ( payment_terms[i] )
{
checked = ( payment_terms[i].payment_term == current_payment_term ) ? ' checked="checked"' : '';
tdpt.innerHTML += ' ' + payment_terms[i].payment_term + ' Month(s) ( ' + payment_terms[i].discount * 100 + '% discount ) '
}
}
}
}
function update_pricing()
{
update_service();
dedicated = service.service_typeid;
dedicated = dedicateds[dedicated];
total = service.cost();
multiplier = ( 1 - service.discount ) * service.payment_term;
// update breakdown
td_breakdown = document.getElementById( "breakdown" );
td_breakdown.innerHTML = dedicated.name + ": £" + format_currency( Math.round( service.base_cost * multiplier ) / 100 ) + " ";
total = dedicated.incvat;
td_breakdown.innerHTML += "Operating System: " + dedicated.os[service.osid].name + ": £" + format_currency( Math.round( service.os_cost * multiplier ) / 100 ) + " "
total += dedicated.os[service.osid].incvat;
if ( service.managed )
{
td_breakdown.innerHTML += "Managed: £" + format_currency( Math.round( service.managed_cost * multiplier ) / 100 ) + " ";
total += dedicated.man_incvat;
}
td_breakdown.innerHTML += "Voice Comm: " + dedicated.voice_comm[service.voice_comm].name + ": £" + format_currency( Math.round( service.voice_comm_cost * multiplier ) / 100 ) + " "
total += dedicated.voice_comm[service.voice_comm].incvat;
// update running_total
gbp_cost = format_currency( Math.round( total * multiplier ) / 100 );
eur_cost = format_currency( Math.round( currency_conversion_indexes["GBP-EUR"].convertForwards( gbp_cost ) ) );
usd_cost = format_currency( Math.round( currency_conversion_indexes["GBP-USD"].convertForwards( gbp_cost ) ) );
td_running_total = document.getElementById( "running_total" );
td_running_total.innerHTML = "£" + gbp_cost +
" (Approximately €" + eur_cost + " EUR / $" + usd_cost + " USD) *";
// update extra_money_info
if ( dedicated.payment_terms[service.payment_term].discount > 0 )
{
document.getElementById( "em_savings" ).innerHTML = "£" + format_currency( Math.round( service.discount_cost ) / 100 );
document.getElementById( "em_monthly" ).innerHTML = "£" + format_currency( Math.round( ( total / service.payment_term * multiplier ) ) / 100 );
document.getElementById( "extra_money_info" ).style.display = "block";
}
else
{
document.getElementById( "extra_money_info" ).style.display = "none";
}
}
function format_currency( fAmount )
{
aAmount = fAmount.toString().split( "." );
if ( aAmount[1] )
{
if ( aAmount[1].length == 1 )
{
aAmount[1] += "0";
}
} else {
aAmount[1] = "00";
}
return aAmount[0] + "." + aAmount[1];
}