function validateIsPositiveNumber(field, alertText) 
{
  var enteredValue = parseFloat(field.value);

  if (isNaN(enteredValue) || enteredValue < 0) {
      alert(alertText);
      field.focus();
      field.select();
  }
}

// number formatting function
// copyright Stephen Chapman 24th March 2006, 22nd August 2008
// permission to use this function is granted provided
// that this copyright notice is retained intact
function formatNumber(num, dec, thou, pnt, curr1, curr2, n1, n2) 
{
  var x = Math.round(num * Math.pow(10, dec));

  if (x >= 0) {
      n1 = n2 = '';
  }

  var y = ('' + Math.abs(x)).split('');
  var z = y.length - dec;

  if (z < 0) {
      z--;
  }

  for (var i = z; i < 0; i++) {
      y.unshift('0');
  }

  if (z < 0) {
      z = 1;
  }

  y.splice(z, 0, pnt);

  if (y[0] == pnt) {
      y.unshift('0');
  }

  while (z > 3) {
      z -= 3;
      y.splice(z, 0, thou);
  }

  var r = curr1 + n1 + y.join('') + n2 + curr2;

  return r;
}

function calculateRoi() 
{
  var manualField = document.getElementById("manualEstimate");
  var migrate7Field = document.getElementById("migrate7Estimate");
  var savingsField = document.getElementById("migrate7Savings");
  var techRate = parseFloat(document.getElementById("technicianRate").value);
  var userRate = parseFloat(document.getElementById("endUserRate").value);
  var systems = parseFloat(document.getElementById("numberOfSystems").value);
  var license = parseFloat(document.getElementById("migrate7Cost").value);
  var timeToImageSystem = 5 / 60; 	// Actual time spent by IT tech to get a system imaged in fractions of an hour
  var timeToBackupData = 1.0; 	// Actual time spent by IT tech to backup user settings and data
  var timeToReplace = 10 / 60; // Actual time spent by IT tech to physically replace the system
  var timeToRestore = 1.5		// Actual time spent by users to restore application and personal settings
  var timeToExtract = 5 / 60; 	// Actual time spent by IT tech to extract user state with Migrate7
  var timeToInject = 5 / 60; 	// Actual time spent by IT tech to inject user state with Migrate7
  var manualCostPerSystem = (timeToImageSystem + timeToBackupData + timeToReplace) * techRate + timeToRestore * userRate;
  var migrate7CostPerSystem = (timeToImageSystem + timeToExtract + timeToInject + timeToReplace) * techRate + license;

  manualField.value = formatNumber(manualCostPerSystem * systems, 2, ',', '.', '', '', '-', '');
  migrate7Field.value = formatNumber(migrate7CostPerSystem * systems, 2, ',', '.', '', '', '-', '');
  savingsField.value = formatNumber((manualCostPerSystem - migrate7CostPerSystem) * systems, 2, ',', '.', '', '', '-', '');
}

