Number.prototype.round = function(/*amount of decimal places*/) { // was "Number.flexibleRound";
  var numberValue = this;
  if (!isNaN(numberValue)) {
    if ((arguments.length >= 1) && (!isNaN(parseFloat(arguments[0])))) {
      var decimalPlaces = Math.round(parseFloat(arguments[0]));
      numberValue = ((decimalPlaces >= 1) ? (Math.round(numberValue*Math.pow(10,decimalPlaces))/Math.pow(10,decimalPlaces)) : (Math.round(numberValue)));
    } else {
      numberValue = Math.round(numberValue);
    }
  }
  return numberValue;
};
String.prototype.round = function(/*amount of decimal places*/) { // was "String.flexibleRound";
  var numberValue = parseFloat(this).round((arguments.length >= 1) ? (arguments[0]) : (""));
  return ((isNaN(numberValue)) ? (numberValue) : (numberValue.toString()));
};


Number.prototype.fixedDigits = function() {
  var content = this;
  if (!isNaN(content)) {
    var separatorFlag = "comma";
    var decimalPlaces = -1;
    var commaSymbol = "";
    var blockSymbol = "";
    var i;
    for (i=0; i<arguments.length; i++) {
      if (arguments[i].constructor == Number) {
        decimalPlaces = Math.round(arguments[i]);
      } else if (arguments[i].constructor == String) {
        if (separatorFlag == "comma") {
          commaSymbol = arguments[i];
        } else if (separatorFlag == "block") {
          blockSymbol = arguments[i];
        }
        separatorFlag = ((separatorFlag == "block") ? ("comma") : ((separatorFlag == "comma") ? ("block") : ("comma")));
      }
    }
    if (decimalPlaces < 0) {
      decimalPlaces = ((content.toString().indexOf(".") >= 0) ? ((content.toString().split("."))[1].length) : (0));
    }
    if (commaSymbol === "") {
      commaSymbol = ".";
    }
    content = ((decimalPlaces >= 1) ? (Math.round(content*Math.pow(10,decimalPlaces))/Math.pow(10,decimalPlaces)) : (Math.round(content))).toString();
    if (decimalPlaces >= 1) {
      content = content.split(".");
    } else {
      content = new Array(content);
      commaSymbol = "";
    }
    content[content.length] = "";
    var blockCounter = 0;
    for (i=content[0].length-1; i>=0; i--) {
      content[content.length-1] = content[0].charAt(i) + content[content.length-1];
      blockCounter++;
      if (blockCounter == 3) {
        blockCounter = 0;
        content[content.length-1] = blockSymbol + content[content.length-1];
      }
    }
    content[0] = content[content.length-1];
    content.length = content.length-1;
    if (content.length == 1) {
      content[1] = "";
    }
    for (i=content[1].length; i<decimalPlaces; i++) {
      content[1] += "0";
    }
    content = new String(content[0] + commaSymbol + content[1]);
    if (content.charAt(0) == blockSymbol) {
      content = content.substring(1);
    }
  }
  return content;
};
String.prototype.fixedDigits = function() {
//return Number.prototype.fixedDigits.apply(parseFloat(this),arguments); // "Function.apply": nnav 4.06++, msie 5.5++;
  var content = parseFloat(this);
  if (!isNaN(content)) {
    var separatorFlag = "comma";
    var decimalPlaces = -1;
    var commaSymbol = "";
    var blockSymbol = "";
    var i;
    for (i=0; i<arguments.length; i++) {
      if (arguments[i].constructor == Number) {
        decimalPlaces = Math.round(arguments[i]);
      } else if (arguments[i].constructor == String) {
        if (separatorFlag == "comma") {
          commaSymbol = arguments[i];
        } else if (separatorFlag == "block") {
          blockSymbol = arguments[i];
        }
        separatorFlag = ((separatorFlag == "block") ? ("comma") : ((separatorFlag == "comma") ? ("block") : ("comma")));
      }
    }
    content = content.fixedDigits(decimalPlaces,commaSymbol,blockSymbol);
  }
  return content;
};



String.prototype.forceNumber = function() { // was "String.forceToNumber";
  var content = this;
  var posDot = content.lastIndexOf(".");
  var posComma = content.lastIndexOf(",");
  var regX = /\d+/g;
  var regXMatch, i, k;
  if ((posDot >= 0) || (posComma >= 0)) {
    if (((content.split(".")).length == 2) && ((content.split(",")).length == 2)) {
      content = content.split((posDot > posComma) ? (".") : (","));
    } else if (((content.split(".")).length == 2) && ((content.split(",")).length != 2)) {
      content = content.split(".");
    } else if (((content.split(".")).length != 2) && ((content.split(",")).length == 2)) {
      content = content.split(",");
    } else {
      content = new Array(content);
    }
  } else {
    content = new Array(content);
  }
  for (i=0; i<content.length; i++) {
    regXMatch = content[i].match(regX);
    content[i] = "";
    if (regXMatch) {
      for (k=0; k<regXMatch.length; k++) {
        content[i] += regXMatch[k];
      }
    }
  }
  return parseFloat((content.length == 1) ? (content[0]) : (content[0] + "." + content[1]));
};

