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', '', 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', '', 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', '', 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', '', 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', '', 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]; }