    function filterDigits(number) {
        number = number.toString();
        number = number.replace(/\$|\,|\%/g, '');
        if(isNaN(number)) {
            number = "0";
        }
        return(number);
    }

    function formatNumber(number) {
        number = number.toString();
        number = number.replace(/\$|\,|\%/g,'');
        if(isNaN(number)) {
            number = "0";
        }
        if (number.length > 3) {
            var mod = number.length % 3;
            var output = (mod > 0 ? (number.substring(0,mod)) : '');
            for (i=0 ; i < Math.floor(number.length / 3); i++) {
                if ((mod == 0) && (i == 0)) {
                    output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
                } else {
                    output+= ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
                }
            }
            return (output);
        } else {
            return(number);
        }
    }

    function formatCurrency(number) {
        number = number.toString()
        number = number.replace(/\$|\,/g,'');
        if(isNaN(number)) {
            number = "0";
        }
        sign = (number == (numnumber = Math.abs(number)));
        number = Math.floor(number*100+0.50000000001);
        cents = number%100;
        number = Math.floor(number/100).toString();
        if(cents<10)
        cents = "0" + cents;
        for (var i = 0; i < Math.floor((number.length-(1+i))/3); i++) {
            number = number.substring(0,number.length-(4*i+3)) +',' + number.substring(number.length-(4*i+3));
        }
        return (((sign)?'':'-') + '$' + number);
    }

    function formatROI(number) {
        number = number.toString()
        number = number.replace(/\$|\,/g,'');
        if(isNaN(number)) {
            number = "0";
        }
        sign = (number == (numnumber = Math.abs(number)));
        number = Math.floor(number*100+0.50000000001);
        cents = number%100;
        number = Math.floor(number/100).toString();
        if(cents<10)
        cents = "0" + cents;
        for (var i = 0; i < Math.floor((number.length-(1+i))/3); i++) {
            number = number.substring(0,number.length-(4*i+3)) +',' + number.substring(number.length-(4*i+3));
        }
        return (((sign)?'':'-') + number + "%");
    }

    function getInput(name) {
        var input;
        input = document.getElementById(name);
        return(filterDigits(input.value));
    }

    function putInput(name, val) {
        input = eval('document.roi.' + name);
        if(input.value != val) {
            input.value = val;
        }
    }

    function putElement(id, val) {
        element = document.getElementById(id);
        element.innerHTML = "";
        element.innerHTML = val;
    }

    function roiCalculate() {
        // Constants
        var secondsPerEmail = Number(5);
        var workDaysPerYear = Number(240);
        var secondsPerHour  = Number(3600);
        var costPerEmployee = Number(10);

        // input elements
        var iElements   = new Array();
        iElements['compSize'] = getInput('compSize');
        iElements['admnCost'] = getInput('admnCost');
        iElements['mailCount'] = getInput('mailCount');
        iElements['spamPercent'] = getInput('spamPercent');
        iElements['hourlyWage'] = getInput('hourlyWage');
        iElements['otherDirectCost'] = getInput('otherDirectCost');
        iElements['otherProdCost'] = getInput('otherProdCost');

        // interim elements
        var hwswCosts    = iElements['compSize'] * costPerEmployee;
        var adminCosts   = iElements['admnCost'] * 25000;
        var directCosts  = hwswCosts + Number(iElements['otherDirectCost']) + adminCosts;
        var spamCount    = Number(iElements['mailCount']) * Number(iElements['spamPercent']) / 100;
        var spamHours    = ((secondsPerEmail * spamCount * workDaysPerYear) / secondsPerHour) * iElements['compSize'];
        var productCosts = (iElements['hourlyWage'] * spamHours) + Number(iElements['otherProdCost']);

        var totalCosts     = Number(directCosts) + Number(productCosts);
        var solutionCosts  = (Number(iElements['compSize']) * 2.5 * 12);
        

		if (solutionCosts < 3000)
			solutionCosts = 3000;

        var yearlySavings  = (totalCosts - solutionCosts);

        var monthlySavings = yearlySavings / 12;
        var monthlyCosts   = solutionCosts / 12;
        var ROIresult      = ((yearlySavings / solutionCosts) * 100);
        
        // output elements old =  putInput('compSize', formatNumber(iElements['compSize']));
       
        putInput('admnCost', formatNumber(iElements['admnCost']));
        putInput('mailCount', formatNumber(iElements['mailCount']));
        putInput('spamPercent', iElements['spamPercent']);
        putInput('hourlyWage', formatCurrency(iElements['hourlyWage']));
        putInput('otherDirectCost', formatCurrency(iElements['otherDirectCost']));
        putInput('otherProdCost', formatCurrency(iElements['otherProdCost']));

        putElement('hwswCost', formatCurrency(hwswCosts));
        putElement('spamCount', formatNumber(Math.round(spamCount)));
        putElement('spamTime', formatNumber(Math.round(spamHours)));
        putElement('directCosts', formatCurrency(directCosts));
        putElement('productCosts', formatCurrency(productCosts));
        putElement('totalCosts', formatCurrency(totalCosts));
        putElement('solutionCosts', formatCurrency(solutionCosts));
        putElement('monthlyCosts', formatCurrency(monthlyCosts));
        putElement('monthlySavings', formatCurrency(monthlySavings));
        putElement('yearlySavings', formatCurrency(yearlySavings));
        putElement('ROIresult', formatROI(ROIresult));
        }
