update = function(id, response, tmpTag) {
	var element = document.getElementById(id);
	if (element == null) {
		alert('Element \'' + id + '\' not found. Cannot update.');
		return false;
	}
	var tmp = document.createElement(tmpTag);
	tmp.innerHTML = response;
	if (tmp.childNodes > 1) {
		alert('Returned view \'' + id + '\' needs to be wrapped in single tag.\nMake sure that text elements are wrapped too.');
	} else {
		element.parentNode.replaceChild(tmp.childNodes[0], element);
	}
};


checkDuplicateId = function () {
	recursiveIdCheck(document.body, new Array());
};


recursiveIdCheck = function (element, map) {
	for (var i = 0; i < element.childNodes.length; ++i) {
		var e = element.childNodes[i];
		if (e == undefined || e.nodeType != 1) {
			continue;
		}
		if (e.id != '') {
			if (map[e.id] != undefined) {
				alert('Duplicate identifier detected \'' + e.id + '\'');
			} else {
				map[e.id] = true;
			}
		}
		recursiveIdCheck(e, map);
	}
};
