{
	var NumberConverter = function() {
		
	}
	
	NumberConverter.convertBaseArray = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
	
	NumberConverter.convertCharFromBase = (function(aChar, aBase) {
		for(var i = -1; ++i < aBase;) {
			if(aChar == NumberConverter.convertBaseArray[i]) {
				return i;
			}
		}
		gTewonderGlobalObjects["errorManager"].report("error", 3, "se.tewonder.Global.HelpObjects.Number.NumberConverter", "convertCharFromBase", aChar + " is not a part of base " + iBase + ".");
		return Number.NaN;
	});
	
	NumberConverter.convertFromBase = (function(aValueString, aBase) {
		if(aBase >= convertBaseArray.length) {
			gTewonderGlobalObjects["errorManager"].report("error", 3, "se.tewonder.Global.HelpObjects.Number.NumberConverter", "convertFromBase", aBase + " is out of bound (max is " + convertBaseArray.length + ").");
			return null;
		}
		var valueArray = aValueString.toUpperCase().split("");
		valueArray.reverse();
		var returnNr = 0;
		for(var i = -1; ++i < valueArray.length;) {
			returnNr += Math.pow(aBase, i)*NumberConverter.convertCharFromBase(valueArray[i], aBase);
		}
		return returnNr;
	});
	
	NumberConverter.getNumber = (function(aString) {
		if(iString.indexOf("0x") == 0) {
			return NumberConverter.convertFromBase(aString.substring(2, aString.length), 16);
		}
		else if (iString.indexOf("#") == 0) {
			return NumberConverter.convertFromBase(aString.substring(1, aString.length), 16);
		}
		else if (iString.indexOf("0o") == 0) {
			return NumberConverter.convertFromBase(aString.substring(2, aString.length), 8);
		}
		else if (iString.indexOf("0b") == 0) {
			return NumberConverter.convertFromBase(aString.substring(2, aString.length), 2);
		}
		else {
			return 1*iString;
		}
	});
	
	NumberConverter.getPaddedNumber = (function(aNumber, aPadding) {
		//MENOTE: theNumber can be a number  or string
		var resultText = aNumber.toString();
		if(resultText.length >= aPadding) {
			return resultText;
		}
		for(var i = resultText.length; ++i <= aPadding;) {
			resultText = "0"+resultText;
		}
		return resultText;
	});
	
	NumberConverter.getNumberWithPrecision = (function(aNr, aPrecision) {
		//MENOTE: this only sets the precision on decimals
		var precisionValue = Math.pow(10, aPrecision);
		return (Math.round(aNr*precisionValue)/precisionValue)
	});
	
	gTewonderGlobalFunctions.addClass("se.tewonder.Global.Utilities.Number.NumberConverter", NumberConverter);
	//MENOTE: HelpObjects path is only for legacy functionality
	gTewonderGlobalFunctions.addClass("se.tewonder.Global.HelpObjects.Number.NumberConverter", NumberConverter);
}

