﻿

function dsoCalc() 
{
var strError = ""
var	intDays = document.forms[0].Days.value
var	fReceivables =  document.forms[0].Receivables.value
var	fReceivablesCurrent =  document.forms[0].ReceivablesCurrent.value
var	fSales = document.forms[0].Sales.value
var allVals = fReceivables + fSales + intDays + fReceivablesCurrent


	if (allVals.length == 0) {
	   strError = "No input found."
	   }
	else if (fReceivables.length == 0) {
	   strError = "Total Receivables is required."
	   }
	else if (fReceivablesCurrent.length == 0) {
	   strError = "Current Receivables is required."
	   }
	else if (fSales.length == 0) {
	   strError = "Sales is required."
	   }
	else if (intDays.length == 0) {
	   strError = "Days is required."
	   }
	else if (isNaN( fReceivables )) {
	   strError = "Total Receivables must be numeric."
	   }
	else if (isNaN( fReceivablesCurrent )) {
	   strError = "Current Receivables must be numeric."
	   }
	else if (isNaN( fSales)) {
	   strError = "Sales must be numeric."
	   }
	else if (isNaN( intDays )) {
	   strError = "Days must be numeric."
	   }


	// CALCULATE DSO
	if (strError.length > 0) 
		{
	   alert(strError)
		}
	else 
		{
		var fRegularDSO = new Number(( fReceivables / fSales ) * intDays);
		var fBestDSO = new Number(( fReceivablesCurrent / fSales ) * intDays);
		var fADD = new Number(fRegularDSO - fBestDSO);
		//document.forms[0].BPDSO.value = Math.round(fBestDSO)
		//document.forms[0].AvgDaysDel.value = fADD
		//document.forms[0].DSO.value = Math.round(fRegularDSO)
		document.forms[0].BPDSO.value = fBestDSO.toFixed(1);
		document.forms[0].AvgDaysDel.value = fADD.toFixed(1);
		document.forms[0].DSO.value = fRegularDSO.toFixed(1);
		}
}

function numberTest(CellValue,CellName) {
var message="Enter a Number"
var cmd1=""
var cmd2=""
var cmd3=""
	if (isNaN( CellValue )) 
		{
		cmd1+="document.forms[0]." + CellName +".focus()"
		cmd2+="document.forms[0]." + CellName +".value=message"
		cmd3+="document.forms[0]." + CellName +".select()"
		eval(cmd1)
		eval(cmd2)
		eval(cmd3)
		}
	document.forms[0].BPDSO.value = "click Calculate";
	document.forms[0].AvgDaysDel.value = "click Calculate";
	document.forms[0].DSO.value = "click Calculate";
}

function displayForm() {
   var result = ""
for (var i=0; i<document.forms[0].elements.length; i++) {
    result += "\nHere is element number " + i + ": "
    result += document.forms[0].elements[i].name
    result += " and its value is "
    result += document.forms[0].elements[i].value
       }

    document.write("Number of elements in this document: " +
         document.forms[0].elements.length +
         "\n" + result)
}




/////////////////////////////////////////////////////////////////////////////////////////


function dsoCalcCRF() 
{
var strError = ""
var	intDays = document.forms[0].CRFDays.value
var	fReceivablesOpen =  document.forms[0].CRFReceivables.value
var	fReceivablesCurrentOpen =  document.forms[0].CRFReceivablesCurrent.value
var fReceivablesCurrentClose = document.forms[0].CRFClosingReceivablesCurrent.value 
var fReceivablesClose = document.forms[0].CRFClosingReceivables.value   
var	fSales = document.forms[0].CRFSales.value
var allVals = fReceivables + fSales + intDays + fReceivablesCurrent + fReceivablesCurrentClose + fReceivablesClose   

	if (allVals.length == 0) {
	   strError = "No input found."
	   }
	else if (fReceivablesOpen.length == 0) {
	   strError = "Opening Total Receivables is required."
	   }
	else if (fReceivablesCurrentOpen.length == 0) {
	   strError = "Opening Current Receivables is required."
	   }

	else if (fReceivablesCurrentClose.length == 0) {
	   strError = "Closing Total Receivables is required."
	   }
	else if (fReceivablesClose.length == 0) {
	   strError = "Closing Current Receivables is required."
	   }


	else if (fSales.length == 0) {
	   strError = "Sales is required."
	   }
	else if (intDays.length == 0) {
	   strError = "Days is required."
	   }
	else if (isNaN( fReceivablesOpen )) {
	   strError = "Opening Total Receivables must be numeric."
	   }
	else if (isNaN( fReceivablesCurrentOpen )) {
	   strError = "Opening Current Receivables must be numeric."
	   }
	   
    else if (isNaN( fReceivablesClose )) {
	   strError = "Opening Total Receivables must be numeric."
	   }
	else if (isNaN( fReceivablesCurrentClose )) {
	   strError = "Opening Current Receivables must be numeric."
	   }
	else if (isNaN( fSales)) {
	   strError = "Sales must be numeric."
	   }
	else if (isNaN( intDays )) {
	   strError = "Days must be numeric."
	   }


	// CALCULATE DSO
	if (strError.length > 0) 
		{
	   alert(strError)
		}
	else 
		{
		var fReceivables = new Number(fReceivablesClose / 2  + fReceivablesOpen / 2)
		var fReceivablesCurrent = new Number(fReceivablesCurrentClose / 2 + fReceivablesCurrentOpen / 2)
		var fRegularDSO = new Number(( fReceivables / fSales ) * intDays);
		var fBestDSO = new Number(( fReceivablesCurrent / fSales ) * intDays);
		var fADD = new Number(fRegularDSO - fBestDSO);

		document.forms[0].CRFBPDSO.value = fBestDSO.toFixed(1);
		document.forms[0].CRFAvgDaysDel.value = fADD.toFixed(1);
		document.forms[0].CRFDSO.value = fRegularDSO.toFixed(1);
		}
}
function numberTestCRF(CellValue,CellName) {
var message="Enter a Number"
var cmd1=""
var cmd2=""
var cmd3=""
	if (isNaN( CellValue )) 
		{
		cmd1+="document.forms[0]." + CellName +".focus()"
		cmd2+="document.forms[0]." + CellName +".value=message"
		cmd3+="document.forms[0]." + CellName +".select()"
		eval(cmd1)
		eval(cmd2)
		eval(cmd3)

		}
	document.forms[0].CRFBPDSO.value = "click Calculate";
	document.forms[0].CRFAvgDaysDel.value = "click Calculate";
	document.forms[0].CRFDSO.value = "click Calculate";
}

