﻿// JScript File
function CalculatePrice()
{
    var geocode = $("#ctl00_hidGeoCode").val();
    geocode = geocode.toUpperCase();
    
    var baseproductprice = 0;
    var baseproductname = "";
    var baseproductremoteprice = 0;
    var baseproductremotename = "";
    var netflowname = "";
    var netflowprice = 0;
	var flowpublishername = "";
    var flowpublisherprice = 0;
    var wcname = "";
    var wcprice = 0;
	var wconfigname = "";
    var wconfigprice = 0;
    var voipname = "";
    var voipprice = 0;

    //oWMI = $("input[name='WMI'][checked=true]").val();;
    oNumberOfDevices = $("input[name='Devices']:checked").val();
    //oNumberOfSites = $("#NumberOfSites").val();
    oNetFlowSources = $("#NetFlowSources").val();
	oWCdevices = $("#WCdevices").val();
	oWConfigDevices = $("#WConfigDevices").val();
    oNetworkType = $("input[name='NetworkType']:checked").val();
    //alert(oNumberOfDevices+"|"+oNetFlowSources+"|"+oNetworkType);
    
    switch(oNetworkType)
    {
        case "Premium":
            //Premium Pricing
            baseproductprice = ConvertToInt($("body").data(geocode +"Premium" + oNumberOfDevices));
            baseproductname = $("body").data(geocode +"Premium" + oNumberOfDevices + "Name")
            break;
        case "Standard":
            //Standard Pricing
            baseproductprice = ConvertToInt($("body").data(geocode +"Standard" + oNumberOfDevices));
            baseproductname = $("body").data(geocode +"Standard" + oNumberOfDevices + "Name")
            break;
    }
//        case "Multi":
//            //Distributed Pricing
//            baseproductprice = ConvertToInt($("body").data(geocode +"DistributedC" + oNumberOfDevices));
//            baseproductname = "1 x " + $("body").data(geocode +"DistributedC" + oNumberOfDevices + "Name")
//            baseproductremoteprice = (ConvertToInt(oNumberOfSites) - 1) * ConvertToInt($("body").data(geocode +"DistributedR" + oNumberOfDevices));
//            baseproductremotename = "" + (ConvertToInt(oNumberOfSites) - 1) + " x " + $("body").data(geocode +"DistributedR" + oNumberOfDevices + "Name");
//            break;
 
    oNetFlow = $("input[name='NetFlow']:checked").val();
	if(oNetFlow == "on")
    {
        netflowprice = ConvertToInt($("body").data(geocode +"NetFlowPremium" + oNetFlowSources));
        netflowname = $("body").data(geocode +"NetFlowPremium" + oNetFlowSources + "Name");
		//alert("oWC value?=" + netflowprice + " " + netflowname);
    }
    
    oFlowPublisher = $("input[name='FlowPublisher']:checked").val();
    if(oFlowPublisher == "on")
    {
        flowpublisherprice = ConvertToInt($("body").data(geocode +"FlowPublisherPremium"));
        flowpublishername = $("body").data(geocode +"FlowPublisherPremiumName");
    }
	
	oWC = $("input[name='WC']:checked").val();	
    if(oWC == "on")
    {
        wcprice = ConvertToInt($("body").data(geocode +"WCPremium" + oWCdevices));
        wcname = $("body").data(geocode +"WCPremium" + oWCdevices + "Name");
		//alert("oWC value?=" + wcprice + " " + wcname);
    }
	
	oWConfig = $("input[name='WConfig']:checked").val();	
    if(oWConfig == "on")
    {
        wconfigprice = ConvertToInt($("body").data(geocode +"WConfigPremium" + oWConfigDevices));
        wconfigname = $("body").data(geocode +"WConfigPremium" + oWConfigDevices + "Name");
		//alert("oWConfig value?=" + wconfigprice + " " + wconfigname);
    }
    
    oVOIP = $("input[name='VOIP']:checked").val();
    if(oVOIP == "on")
    {
        voipprice = ConvertToInt($("body").data(geocode +"VOIPPremium"));
        voipname = $("body").data(geocode +"VOIPPremiumName");
    }

    finalprice = baseproductprice + baseproductremoteprice + netflowprice + + flowpublisherprice + wcprice + wconfigprice + voipprice;
    
    $("#FinalPrice").html(GetCurrencySymbol(geocode) + addCommas(format_number(finalprice,2)));
    var finalproductlist = "" + baseproductname + "";
    if(baseproductremotename != "")
    {
        finalproductlist += "<br />" + baseproductremotename + "";
    }
    if(netflowname != "")
    {
        finalproductlist += "<br />" + netflowname;
    }
	if(flowpublishername != "")
    {
        finalproductlist += "<br />" + flowpublishername;
    }
    if(wcname != "")
    {
        finalproductlist += "<br />" + wcname;
    }
	if(wconfigname != "")
    {
        finalproductlist += "<br />" + wconfigname;
    }
    if(voipname != "")
    {
        finalproductlist += "<br />" + voipname;
    }
    
    $("#EstimateDiv").show();
    $("#ProductNames").html(finalproductlist);
    $(".HiddenEstimate").val(finalproductlist + " -- Price Estimate: " + GetCurrencySymbol(geocode) + addCommas(format_number(finalprice,2)))
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function format_number(pnumber,decimals){
	if (isNaN(pnumber)) { return 0};
	if (pnumber=='') { return 0};
	
	var snum = new String(pnumber);
	var sec = snum.split('.');
	var whole = parseFloat(sec[0]);
	var result = '';
	
	if(sec.length > 1){
		var dec = new String(sec[1]);
		dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals)));
		dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals));
		var dot = dec.indexOf('.');
		if(dot == -1){
			dec += '.'; 
			dot = dec.indexOf('.');
		}
		while(dec.length <= dot + decimals) { dec += '0'; }
		result = dec;
	} else{
		var dot;
		var dec = new String(whole);
		dec += '.';
		dot = dec.indexOf('.');		
		while(dec.length <= dot + decimals) { dec += '0'; }
		result = dec;
	}	
	return result;
}

function ConvertToInt(value)
{
    rExpComma = /,/gi;
    rExpEuro = /€/gi;
    rExpDollar = /\$/gi;
    rExpUKPound = /£/gi;
    rExpUS = /US/gi;
    
    value = value.replace(rExpComma, "");
    value = value.replace(rExpEuro, "");
    value = value.replace(rExpDollar, "");
    value = value.replace(rExpUKPound, "");
    value = value.replace(rExpUS, "");
    
    return parseFloat(value);
}

function GetCurrencySymbol(value)
{
    var returnvalue;
    
    if(value == "US")
    {
        returnvalue = "$";
    }
    else if(value == "EU")
    {
        returnvalue = "€";
    }
    else if(value == "UK")
    {
        returnvalue = "£";
    }
    else if(value == "USROW")
    {
        returnvalue = "US$";
    }
    
    return returnvalue;
}

function updateWCOptions()
{
    var WCSelect = document.getElementById('WCdevices');

    //Clear all existing items
    for (i = WCSelect.length - 1; i>=0; i--) {
        WCSelect.remove(i);
    }
    
    //Add the values that are valid
    DeviceCount = $("input[name='Devices']:checked").val();
    
    // Create an Option object        
    var opt100 = document.createElement("option");
    opt100.text = 'Up to 100';
    opt100.value = '100';
    var opt300 = document.createElement("option");
    opt300.text = 'Up to 300';
    opt300.value = '300';
    var opt500 = document.createElement("option");
    opt500.text = 'Up to 500';
    opt500.value = '500';
    var opt1000 = document.createElement("option");
    opt1000.text = 'Up to 1000';
    opt1000.value = '1000';
    var opt2500 = document.createElement("option");
    opt2500.text = 'Up to 2500';
    opt2500.value = '2500';
    var opt3500 = document.createElement("option");
    opt3500.text = 'Up to 3500';
    opt3500.value = '3500';
    var opt5000 = document.createElement("option");
    opt5000.text = 'Up to 5000';
    opt5000.value = '5000';

    if(DeviceCount == 100){
        try {
            WCSelect.add(opt100, null); // standards compliant; doesn't work in IE
            WCSelect.add(opt300, null);
            WCSelect.add(opt500, null);
            WCSelect.add(opt1000, null);
            WCSelect.add(opt2500, null);
            WCSelect.add(opt3500, null);
            WCSelect.add(opt5000, null);
        }
        catch(ex) {
            WCSelect.add(opt100); // IE only
            WCSelect.add(opt300);
            WCSelect.add(opt500);
            WCSelect.add(opt1000);
            WCSelect.add(opt2500);
            WCSelect.add(opt3500);
            WCSelect.add(opt5000);
        }
    }
    if(DeviceCount == 300){
        try {
            WCSelect.add(opt300, null);
            WCSelect.add(opt500, null);
            WCSelect.add(opt1000, null);
            WCSelect.add(opt2500, null);
            WCSelect.add(opt3500, null);
            WCSelect.add(opt5000, null);
        }
        catch(ex) {
            WCSelect.add(opt300);
            WCSelect.add(opt500);
            WCSelect.add(opt1000);
            WCSelect.add(opt2500);
            WCSelect.add(opt3500);
            WCSelect.add(opt5000);
        }
    }
    if(DeviceCount == 500){
        try {
            WCSelect.add(opt500, null);
            WCSelect.add(opt1000, null);
            WCSelect.add(opt2500, null);
            WCSelect.add(opt3500, null);
            WCSelect.add(opt5000, null);
        }
        catch(ex) {
            WCSelect.add(opt500);
            WCSelect.add(opt1000);
            WCSelect.add(opt2500);
            WCSelect.add(opt3500);
            WCSelect.add(opt5000);
        }
    }
    if(DeviceCount == 1000){
        try {
            WCSelect.add(opt1000, null);
            WCSelect.add(opt2500, null);
            WCSelect.add(opt3500, null);
            WCSelect.add(opt5000, null);
        }
        catch(ex) {
            WCSelect.add(opt1000);
            WCSelect.add(opt2500);
            WCSelect.add(opt3500);
            WCSelect.add(opt5000);
        }
    }
    if(DeviceCount == 2500){
        try {
            WCSelect.add(opt2500, null);
            WCSelect.add(opt3500, null);
            WCSelect.add(opt5000, null);
        }
        catch(ex) {
            WCSelect.add(opt2500);
            WCSelect.add(opt3500);
            WCSelect.add(opt5000);
        }
    }
    if(DeviceCount == 3500){
        try {
            WCSelect.add(opt3500, null);
            WCSelect.add(opt5000, null);
        }
        catch(ex) {
            WCSelect.add(opt3500);
            WCSelect.add(opt5000);
        }
    }
    if(DeviceCount == 5000){
        try {
            WCSelect.add(opt5000, null);
        }
        catch(ex) {
            WCSelect.add(opt5000);
        }
    }
}

