var text_next_clue = "Hint # of #";
var text_last_clue = "No hints anymore ? close";
function childrenWithTag(el, tag) {
if (el == null) return null;
var ch = el.childNodes;
if (ch == null) return null;
var ct = [];
for (var i = 0; i < ch.length; i++) {
if (ch[i].nodeType == 1 && ch[i].nodeName == tag) {
ct.push(ch[i]);
}
}
return ct;
}
function clueify_clue(li, ix, nx) {
var tx = text_next_clue;
tx = tx.replace("#", ix + 1);
tx = tx.replace("#", nx);
var ht = li.innerHTML;
li.innerHTML = "<a href=\"#\">"
+ tx + "</a> <span class=\"hint\">"
+ ht + "</span>";
li.firstChild.onclick = reveal;
if (ix) li.style.display = "none";
}
function clueify_hint(ol) {
var li = childrenWithTag(ol, "LI");
for (var i = 0; i < li.length; i++) {
clueify_clue(li[i], i, li.length);
}
var li = document.createElement("li");
li.style.display = "none";
li.innerHTML = "<a href=\"#\">" + text_last_clue + "</a>";
li.firstChild.onclick = collapse;
ol.appendChild(li);
}
function clueify(dl) {
var dd = childrenWithTag(dl, "DD");
for (var i = 0; i < dd.length; i++) {
var ol = childrenWithTag(dd[i], "OL");
for (var j = 0; j < ol.length; j++) {
ol[j].style.listStyleType = "none";
clueify_hint(ol[j]);
}
}
}
function reveal() {
var sb = this.nextSibling;
while (sb) {
if (sb.nodeType == 1 && sb.nodeName == "SPAN") {
sb.firstChild.style.color = "black";
sb.style.display = "inline";
break;
}
sb = sb.nextSibling;
}
this.style.display = "none";
next_clue(this.parentNode);
return false;
}
function next_clue(li) {
li = li.nextSibling;
while (li) {
if (li.nodeType == 1 && li.nodeName == "LI") {
li.style.display = "list-item";
var aa = childrenWithTag(li, "A");
if (aa.length > 0) aa[0].focus();
break;
}
li = li.nextSibling;
}
return false;
}
function collapse() {
var li = this.parentNode;
var ol = li.parentNode;
var aa = null;
li = childrenWithTag(ol, "LI");
for (var i = 0; i < li.length; i++) {
var sb = li[i].firstChild;
while (sb) {
if (sb.nodeName == "A") {
sb.style.display = "inline";
if (aa == null) aa = sb;
}
if (sb.nodeName == "SPAN") {
sb.style.display = "none";
}
sb = sb.nextSibling;
}
li[i].style.display = i ? "none" : "list-item";
}
if (aa) aa.focus();
return false;
}