function resetValues(form) {
  form.find(".total input[type=text]").val("");
}
function resetStyles() {
  $("input[type=text]").css("background", "#fff");
}

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

function calculate(form) {
  var aField = form.find("input").first();
  var bField = aField.next();
  var a = aField.val().replace(",", ".");
  var b = bField.val().replace(",", ".");

  var errors = false;

  resetValues(form);
  resetStyles();

  if (!isNumber(a)) {
    aField.css("background", "#fee");
    errors = true;
  }
  
  if (!isNumber(b)) {
    bField.css("background", "#fee");
    errors = true;
  }

  if (errors) {
    return false;
  }

  switch(form.attr("id")) {
    case "f1":
      var totalValue = a / 100 * b;
      break;
    case "f2":
      var totalValue = a / b * 100;
      break;
    case "f3":
      var totalValue = (b - a) / a  * 100;
      break;
  }

  var totalField = form.find(".total input[type=text]");
  if (isNumber(totalValue)) {
    totalField.val(totalValue);
    totalField.attr("title", totalValue);
  }
  else {
    totalField.val(0);
  }
}

function initializeCalculators() {
  $("input").first().focus();
  $("input[type=submit]").click(function(e) {
    e.preventDefault();
    calculate($(this).parents("form"));
  });
}

$(document).ready(initializeCalculators);


