// Copyright © www.digitaldutch.com / www.rechner24.com
// Verwendung nur nach Genehmigung der Rechte-Inhaber!

function calc_stopError() {
  return true;
}
window.onerror = calc_stopError;

// Set cookie expiration date to a year from now
var expDate = new Date();
expDate.setTime(expDate.getTime() + (1000 * 60 * 60 * 24 * 365));

var numDigs;
var curQuantity;
var quantities = new Array("Area", "Bits", "Density", "Energy", "Force", "Length",
  "Mass", "Power", "Pressure", "Speed", "Temperature", "Volume");
var initializing = true;

function calc_initialize(quantity){
	calc_loadOptions();
  curQuantity = quantity;
  if (!initializing) calc_setCookie("curQuantity", curQuantity);
  calc_Convert();
}

function calc_Convert(){

  with (document.forms['ConvertForm']) {

    var lFrom     = parseFloat(elements['ValueFrom'].value);
    var lUnitFrom = parseFloat(elements['UnitFrom'].options[elements['UnitFrom'].selectedIndex].value);
    var lUnitTo   = parseFloat(elements['UnitTo'].options[elements['UnitTo'].selectedIndex].value);

    elements['ValueTo'].value = calc_formatFloat(lFrom * lUnitFrom / lUnitTo, numDigs);
  }

}

function calc_ConvertBack(){

  with (document.forms['ConvertForm']) {

    var lTo       = parseFloat(elements['ValueTo'].value);
    var lUnitFrom = parseFloat(elements['UnitFrom'].options[elements['UnitFrom'].selectedIndex].value);
    var lUnitTo   = parseFloat(elements['UnitTo'].options[elements['UnitTo'].selectedIndex].value);

    elements['ValueFrom'].value = calc_formatFloat(lTo / lUnitFrom * lUnitTo, numDigs);
  }

}

function calc_formatFloat(number, X) {
// rounds number to X decimal places, default is 6
    X = (!X ? 10 : X);
    return Math.round(number * Math.pow(10,X)) / Math.pow(10,X);
}

// Retrieve a cookie
function calc_getCookie(name){
  var cname = name + "=";
  var dc = document.cookie;
  if (dc.length > 0) {
    begin = dc.indexOf(cname);
    if (begin != -1) {
      begin += cname.length;
      end = dc.indexOf(";", begin);
      if (end == -1) end = dc.length;
      return unescape(dc.substring(begin, end));
    }
  }
  return null;
}

// Save a cookie
function calc_setCookie(name, value) {
  document.cookie = name + "=" + escape(value) + "; path=/" +
    ((expDate == null) ? "" : "; expires=" + expDate.toGMTString());
}

function calc_getNumDigs(){
  var numDigs = calc_getCookie("UCNumDigs");
  if (numDigs != null) return parseInt(numDigs);
  else return 10;
}

function calc_getUserQuantity(){
  var i;
  var returnQuantity;
  var cookieQuantity = calc_getCookie("userQuantity");

  // Default value
  returnQuantity = "Length";

  // Check if valid cookie quantity exists
  if (cookieQuantity != null) {
    for (i = 0; i <= (quantities.length - 1); i++) {
      if (cookieQuantity == quantities[i]) returnQuantity = cookieQuantity;
    }
  }
  return returnQuantity;
}

function calc_getUserQuantityIndex() {
  var i;
  var userQuantityIndex = -1;
  var userQuantity = getUserQuantity();

  for (i = 0; i <= (quantities.length -1); i++) {
      if (userQuantity == quantities[i]) userQuantityIndex = i;
  }
  return parseInt(userQuantityIndex);
}

function calc_getDefaultQuantityMethod() {
  if (calc_getCookie("defaultQuantityMethod") == "userDefined")
    return "userDefined";
  else return "remember";
}

function calc_displayPage(URL)
{
  window.open(URL);
}

function calc_loadOptions(){
  numDigs = calc_getNumDigs();

  if (calc_getDefaultQuantityMethod() == "userDefined")
    curQuantity = calc_getUserQuantity();
  else curQuantity = calc_getCookie("curQuantity");
  if (curQuantity == null) curQuantity = "Length";

  //calc_displayPage(curQuantity.toLowerCase() + ".htm");
  initializing = false;
}