/* ************************************************************************************* */
/* math utilities */
/* ************************************************************************************* */

// credit: SelfHTML (http://www.teamone.de/selfhtml/)
function decimal2hex(d)
{
	var x = "";
	var max = Math.pow(16,8);
	if(d > max || d < 0){
		return "";
	}
	var z = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
	var i = 1, v = d, r = 0;
	while(v > 15){
		v = Math.floor(v / 16); i++;
	}
	v = d;
	for(j=i;j>=1;j--){
		x = x + z[Math.floor(v / Math.pow(16,j-1))];
		v = v - (Math.floor(v / Math.pow(16,j-1)) * Math.pow(16,j-1));
	}
	return x;
}
function decimal2hexMinDigits(d, nMinDigits)
{
	var x = decimal2hex(d);
	if(x.length >= 0 /* no error */ && x.length < nMinDigits){
		for(var i = x.length; i < nMinDigits; i++){
			x = "0" + x;
		}
	}
	return x;
}