/*
 * ALV-laskuri | Laskurit.fi
 * Copyright (C) 2008 - 2009 Lahti Media
 *
 * URL: http://www.laskurit.fi/
 */

function clearResults() {
  $$('.result').invoke('update');
  $$('.round').invoke('update');
}

function setResult(field, result) {
  originalValue = $(field.substr(0, 1).toLowerCase() + field.substr(1)).value;
  if (originalValue == 0) {
    $('result' + field).innerHTML = result.toFixed(5).replace('.',',');
    $('round' + field).innerHTML  = result.toFixed(2).replace('.',',');
  }
}

function calculateResult(e) {
  clearResults();
  var priceExcludeVat = parseFloat($('priceExcludeVat').value.replace(',','.'));
  var priceIncludeVat = parseFloat($('priceIncludeVat').value.replace(',','.'));
  var vatAmount       = parseFloat($('vatAmount').value.replace(',','.'));
  var vatPercentage   = parseFloat($('vatPercentage').value.replace(',','.')) / 100;

  if (priceExcludeVat > 0 && priceIncludeVat > 0) {
    result = priceIncludeVat - priceExcludeVat;
    setResult('VatAmount', result);
    setResult('VatPercentage', (result / priceExcludeVat) * 100);
  }
  if (priceExcludeVat > 0 && vatAmount > 0) {
    result = priceExcludeVat + vatAmount;
    setResult('PriceIncludeVat', result);
    setResult('VatPercentage',
      ((result - priceExcludeVat) / priceExcludeVat) * 100);
  }
  if (priceIncludeVat > 0 && vatAmount > 0) {
    result = priceIncludeVat - vatAmount;
    setResult('PriceExcludeVat', result);
    setResult('VatPercentage', ((priceIncludeVat - result) / result) * 100);
  }
  if (priceExcludeVat > 0 && vatPercentage > 0) {
    setResult('PriceIncludeVat', priceExcludeVat * (vatPercentage + 1));
    setResult('VatAmount', priceExcludeVat * vatPercentage);
  }
  if (priceIncludeVat > 0 && vatPercentage > 0) {
    result = priceIncludeVat / (vatPercentage + 1);
    setResult('PriceExcludeVat', result);
    setResult('VatAmount', priceIncludeVat - result);
  }

  e.stop();
  return false;
}

function initVatCalculator(e) {
  $('priceExcludeVat').focus();
  $('submit').observe('click', calculateResult);
}

$(document).observe('dom:loaded', initVatCalculator);
