// Javascript Utility Functions - For Use in City Of Sydney Online Applications
// Ali Chamas (c) created 10-11-2006 dragonworxau@yahoo.com.au
// City of Sydney Council www.cityofsydney.nsw.gov.au
// Version History
//		AC 19/03/07 - moved functions into global static JSUtil object

// create the global static object
function JSUtil() {}

// write out the first level inner contents of the given object
JSUtil.explore = function (tmpObj) {
	var tmp = new Object;
	if (typeof tmpObj != typeof tmp) {
		document.write(typeof tmpObj);
	} else {
		tmp="";
		for (var i in tmpObj) {
			var str = "" + tmpObj[i] + "";
			str = str.split("<").join("&lt;");
			str = str.split(">").join("&gt;");
			tmp += "<b>" + i + "</b>: " + str + "<hr/>";
		}
		document.write(tmp);
	}
}

// return the last element in an array
JSUtil.getLast = function (array) {
	return array[array.length-1];
}

// alert the contents of the associative array (useful for debugging)
JSUtil.alertArray = function (array) {
	listString = "";
	for (var word in array) listString += word + ": " + array[word] + "\n";
	alert(listString);
}

// write out the contents of the associative array (useful for debugging)
JSUtil.writeArray = function (array) {
	for (var word in array) document.write(word + ": " + array[word] + "<br/>");
}

// convert a single hex character to decimal
JSUtil.hexToDec = function (hex) {
	var input = hex.toUpperCase();
	var value = -1;
	if (input == "A") value = 10;
	if (input == "B") value = 11;
	if (input == "C") value = 12;
	if (input == "D") value = 13;
	if (input == "E") value = 14;
	if (input == "F") value = 15;
	if (value == -1) value = eval(input);
	return value;
}

// convert a single decimal character to hex
JSUtil.decToHex = function (dec) {
	if (dec == 10) return "A";
	if (dec == 11) return "B";
	if (dec == 12) return "C";
	if (dec == 13) return "D";
	if (dec == 14) return "E";
	if (dec == 15) return "F";
	return "" + dec;
}

// convert a 6 digit hex string (may include # char) to an associate array with red green and blue components
JSUtil.HexToDec = function (hex) {
	var input = hex.replace("#", "");
	var a = JSUtil.hexToDec(input.substring(0, 1));
	var b = JSUtil.hexToDec(input.substring(1, 2));
	var c = JSUtil.hexToDec(input.substring(2, 3));
	var d = JSUtil.hexToDec(input.substring(3, 4));
	var e = JSUtil.hexToDec(input.substring(4, 5));
	var f = JSUtil.hexToDec(input.substring(5, 6));
	var x = (a * 16) + b;
	var y = (c * 16) + d;
	var z = (e * 16) + f;
	var color = {"red":x, "green":y, "blue":z};
	//var color = x + ", " + y + ", " + z;
	return color;
}

// convert seperate red green and blue components to a hex string
JSUtil.DecToHex = function (red, green, blue) {
	var a = JSUtil.decToHex(Math.floor(red / 16));
	var b = JSUtil.decToHex(red % 16);
	var c = JSUtil.decToHex(Math.floor(green / 16));
	var d = JSUtil.decToHex(green % 16);
	var e = JSUtil.decToHex(Math.floor(blue / 16));
	var f = JSUtil.decToHex(blue % 16);
	var z = "#" + a + b + c + d + e + f;
	return z;
}