function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != "function") {
		window.onload = func;
	}
	else {
		window.onload = function() {
			if (oldonload) { oldonload(); }
			func();
		}
	}
}

function buildElement(data) {
	if (typeof data == "string" || typeof data == "number") {
		return document.createTextNode(new String(data));
	}
	var tagName = data[0];
	var className, id;
	if (tagName.include(".")) {
		tagName = tagName.split(".");
		className = tagName[1];
		tagName = tagName[0];
	}
	else if (tagName.include("#")) {
		tagName = tagName.split("#");
		id = tagName[1];
		tagName = tagName[0];
	}
	var node = document.createElement(tagName);
	if (className) { node.className = className; }
	if (id) { node.id = id; }
	if (data[1]) {
		var attr = data[1];
		for (var i in attr) {
			if (i.startsWith("style.")) {
				node.style[i.substr(6)] = attr[i];
			}
			else {
				node[i] = attr[i];
			}
		}
		for (var i = 2; i < data.length; i++) {
			node.appendChild(buildElement(data[i]));
		}
	}
	return Element.extend(node);
}

function formatDate(tstamp) {
	var d = new Date(tstamp);
	return d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate() + " " +
		d.toTimeString().substring(0, 8);
}
function formatLoc(num) {
	var str = new String(Math.round(1000000 * num));
	while (str.length < 7) { str = "0" + str; }
	return str.substring(0, str.length - 6) + "." + str.substring(str.length - 6);
}

function getValue(node) {
	if (node.tagName.toLowerCase() == "input") { return node.value; }
	return node.innerHTML;
}
function setValue(node, value) {
	if (node.tagName.toLowerCase() == "input") { node.value = value; }
	else { node.innerHTML = value; }
}


