// calculator functions
function fmtPricePound(value)
   {
   result="£"+Math.floor(value)+".";
   var cents=100*(value-Math.floor(value))+0.5;
   result += Math.floor(cents/10);
   result += Math.floor(cents%10);
   return result;
   }
   
// format currency amounts   
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');

	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();

	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}

// Called by the Calculate button
function calculate()	{

if ((document.roicalc1.cfaas.value == "") || (document.roicalc1.cfagmp.value == "") || (document.roicalc1.cfacii.value == "") || (document.roicalc1.piics.value == "") || (document.roicalc1.piirp.value == "") || (document.roicalc1.ists.value == "") || (document.roicalc1.istt.value == "") || (document.roicalc1.ccsccp.value == "")) {
	alert ("All fields marked in yellow are required");
	} else {

// calculate current facts & assumptions
	var cfaannualsales = parseFloat(document.roicalc1.cfaas.value);
	var cfagrossmarper = parseFloat(document.roicalc1.cfagmp.value);
	var cfacurrinventinvest = parseFloat(document.roicalc1.cfacii.value);
	var currinventturns = cfaannualsales*(100 - cfagrossmarper)/cfacurrinventinvest/100;
	var grossmarginamt = cfaannualsales*cfagrossmarper/100;
	document.roicalc1.cfacit.value=Math.round(currinventturns);
	document.roicalc1.cfagma.value=formatCurrency(grossmarginamt);
	
// background calculations
	var piimprovecustserv = parseFloat(document.roicalc1.piics.value);
	var dsroicalc1 = cfaannualsales*piimprovecustserv/100;
	var dsroicalc2 = dsroicalc1 + cfaannualsales;
	var dsroicalc3 = dsroicalc2*(100 - cfagrossmarper)/100;
	
// calculate projected improvements
	var improvecustserv = parseFloat(document.roicalc1.piics.value);
	var projinventturns = dsroicalc3 / cfacurrinventinvest;
	document.roicalc1.pipit.value=Math.round(projinventturns);
	var inventreduceper = document.roicalc1.piirp.value;
	
// calculate investment in software/training
	var istsoftware = parseFloat(document.roicalc1.ists.value);
	var isttraining = parseFloat(document.roicalc1.istt.value);
	var isttotal = istsoftware + isttraining;
	document.roicalc1.istti.value = formatCurrency(isttotal);
	
// calculate increased sales & gross margin
	var isgsalesincfromcs = cfaannualsales*improvecustserv/100;
	document.roicalc1.isgsics.value = formatCurrency(isgsalesincfromcs);
	var isggrossmarincsales = isgsalesincfromcs*cfagrossmarper/100;
	document.roicalc1.isggmp.value = formatCurrency(isggrossmarincsales);
	
// calculate cash flow improvement
	document.roicalc1.cfiassi.value = formatCurrency(dsroicalc2);
	document.roicalc1.cfiac.value = formatCurrency(dsroicalc3);
	var cfiinventvalue = dsroicalc3/currinventturns;
	document.roicalc1.cfiivct.value = formatCurrency(cfiinventvalue);
	document.roicalc1.cfiir.value = inventreduceper;
	var cfiinventreduceval = dsroicalc3*inventreduceper/currinventturns/100;
	document.roicalc1.cfiirv.value = formatCurrency(cfiinventreduceval);
	
//	calculate carrying cost savings
	var ccscarrycostper = document.roicalc1.ccsccp.value;
	var ccscarrycostir = cfiinventreduceval*ccscarrycostper/100
	document.roicalc1.ccscc.value = formatCurrency(ccscarrycostir);
	
// calculate total financial impact
	var tficarrycostplgm = isggrossmarincsales+ccscarrycostir;
	document.roicalc1.tficcsgm.value = formatCurrency(tficarrycostplgm);
	
// calculate payback schedule
	var psavemonthben = Math.round(tficarrycostplgm/12);
	document.roicalc1.psamb.value = formatCurrency(psavemonthben);
	var psmonthpayoff = isttotal/psavemonthben;
	document.roicalc1.psmpi.value = Math.round(psmonthpayoff);

// calculate cost of delaying implementation
	var cdicostmonthdelay = psavemonthben;
	document.roicalc1.cdicmdi.value = formatCurrency(cdicostmonthdelay);
}

}


