function melt(nodes, redirect) {
	g_nodes = nodes;
	if (doMelt(g_nodes)) {
		setTimeout("melt(g_nodes)",1);
	} else {
		if (redirect == null) {
			window.location = "/";
		} else {
			window.location = redirect;
		}
	}
}

function doMelt(nodes) {
	if (nodes.childNodes.length) {
		var r = false;
		for (var x=0;x<nodes.childNodes.length;x++) { if (doMelt(nodes.childNodes[x])) { r = true; } }
		return (r);
	} else if (nodes.nodeType == 3) {
		newval = "";
		for (var x=0;x<nodes.nodeValue.length;x++) { newval += meltChar(nodes.nodeValue.substr(x,1)); }
		if (newval != nodes.nodeValue) { nodes.nodeValue = newval; return true; }
	}
	return false;
}

function meltChar(c) {
	if (c.charCodeAt(0) > 255) { return 127; }
	if (c.charCodeAt(0) > 32) { return (String.fromCharCode(c.charCodeAt(0) - 1)); }
	return (c);
}
