  function getDimension(value, name) {
    if (value > 0) {
      return value;
    } else {
      var dimInt = document.getElementById(name + 'Int').value;
      var dimDez = document.getElementById(name + 'Dez').value;
      if (!dimInt || isNaN(dimInt)) {
        var dimInt = 0;
      }
      if (!dimDez || isNaN(dimDez)) {
        var dimDez = 0;
      }
      dimDez = '0.' + dimDez;
      return (parseFloat(dimInt) + parseFloat(dimDez)); 
    }
  }
  
  function myRound(number, precision) {
    if (precision < 12) {
      number = myRound(number, 12);
    }
    number = number * Math.pow(10, precision);
    number = Math.floor(number + 0.5);
    number = number / Math.pow(10, precision);
    return number.toFixed(precision);
  }
  
  function forwardCalculation(dim1, dim2, dim3, calc, decimals, forcePackage, package, operator, multiplier, exponent, divisor) {
    if (forcePackage == 'J' && calc < 5 && calc > 0) {
      var menge = document.getElementById('Pack').value;
      if (isNaN(menge)) {
        var menge = 0;
      }
      menge = parseInt(menge);
      menge *= package;
      document.getElementById('Bestellmenge').value = menge;
    } else {
      var menge = document.getElementById('Bestellmenge').value;
      if (!menge || isNaN(menge)) {
        if (calc > 0) {
          var menge = 0;
        } else {
          var menge = 1;
        }
      }
      menge = parseInt(menge);
    }
    if (calc == 5) {
      var factor = multiplier / Math.pow(10, exponent);
      if (operator == 'D') {
        var calcValue = menge / factor;
      } else {
        var calcValue = menge * factor;
      }
    } else {
      var mass1 = 1;
      var mass2 = 1;
      var mass3 = 1;
      if (calc > 0) {
        mass1 = getDimension(dim1, 'Mass1') ;
        if (calc > 1) {
          mass2 = getDimension(dim2, 'Mass2');
          mass2 = parseFloat(mass2 / 100);
          if (calc == 3) {
            mass3 = getDimension(dim3, 'Mass3');
            mass3 = parseFloat(mass3 / 100);
          } else if (calc == 4) {
            mass3 = getDimension(dim3, 'Mass3');
            mass3 = parseFloat(mass3 / 1000);
          }
        }              
      }
      var calcValue = parseFloat(mass1 * mass2 * mass3 * menge);
    }
    calcValue = myRound(calcValue, decimals);
    divisor = (parseInt(divisor) > 1) ? parseInt(divisor) : 1;
    var total = (parseFloat(document.getElementById('Price').value) / divisor) * calcValue;
    total = String(myRound(total, 2));
    document.getElementById('TotalPrice').value = total;
    document.getElementById('Total').innerHTML = total.replace('.', ',');
    var mengeInt = Math.floor(calcValue);
    var mengeDez = (calcValue - mengeInt);    
    mengeDez = myRound(mengeDez, decimals) * Math.pow(10, decimals);
    if (calc > 0) {
      document.getElementById('MengeInt').value = mengeInt;
      if (Math.round(mengeDez) > 0) {
        document.getElementById('MengeDez').value = Math.round(mengeDez);
      } else {
        document.getElementById('MengeDez').value = '';
      }
      for (i = 0; i < decimals; i++) {
        if (mengeDez < Math.pow(10, i)) document.getElementById('MengeDez').value = '0' + document.getElementById('MengeDez').value;
      }
    }      
  }
  
  function backwardCalculation(dim1, dim2, dim3, calc, decimals, forcePackage, package, operator, multiplier, exponent, divisor) {
    var menge = document.getElementById('MengeInt').value + '.' + document.getElementById('MengeDez').value;
    if (!menge || isNaN(menge)) {
      var menge = 0;
    }
    menge = parseFloat(menge);
    if (calc == 5) {
      var factor = multiplier / Math.pow(10, exponent);
      if (operator == 'D') {
        var bestellmenge = menge * factor;
      } else {
        var bestellmenge = menge / factor;
      }
      document.getElementById('Bestellmenge').value = Math.ceil(bestellmenge);
    } else {
      var mass1 = 1;
      var mass2 = 1;
      var mass3 = 1;
      if (calc > 0) {
        mass1 = getDimension(dim1, 'Mass1') ;
        if (calc > 1) {
          mass2 = getDimension(dim2, 'Mass2');
          mass2 = mass2 / 100;
          if (calc == 3) {
            mass3 = getDimension(dim3, 'Mass3');
            mass3 = mass3 / 100;
          } else if (calc == 4) {
            mass3 = getDimension(dim3, 'Mass3');
            mass3 = mass3 / 1000;
          }
        }
        if (menge < (mass1 * mass2 * mass3)) {
          document.getElementById('Bestellmenge').value = 1;
        } else {
          var stueck = menge / (mass1 * mass2 * mass3);
          document.getElementById('Bestellmenge').value = Math.ceil(stueck);
        }
      } else {
        divisor = (parseInt(divisor) > 1) ? parseInt(divisor) : 1;
        var total = (parseFloat(document.getElementById('Price').value) / divisor) * menge;
        total = String(myRound(total, 2));
        document.getElementById('TotalPrice').value = total;
        document.getElementById('Total').innerHTML = total.replace('.', ',');
        return;
      }
      if (forcePackage == 'J' && calc < 5 && calc > 0) {
        if (parseInt(document.getElementById('Bestellmenge').value) < parseInt(package)) {
          document.getElementById('Pack').value = 1;
          document.getElementById('Bestellmenge').value = package;
        }
        else {
          var packmenge = parseInt(document.getElementById('Bestellmenge').value) / parseInt(package);
          document.getElementById('Pack').value = Math.ceil(packmenge);
          document.getElementById('Bestellmenge').value = parseInt(document.getElementById('Pack').value) * parseInt(package);
        }
      }
    }
    executeForwardCalculation();
    return;
  }

