/****************************************************
 * Hangman Game                                     *
 * Unobtrusive JavaScripts                          *
 * copyright Stephen Chapman http://www.felgall.com *
 * March 2007                                       *
 *                                                  *
 * You may use this script provided that you        *
 * include this copyright notice with the code.     *
 ****************************************************/


var dc = '7!3@4#1$^5*~:6 +8=`<2-0>_/?9';
var al;
var turn;
var answer;
var sol;

function start() {
al = '--------------------------';
turn = 0;
var opt = Math.floor(Math.random()*opts.length);
answer = trans2(opts[opt]);
sol = trans(answer);
var h = document.getElementById('hang');
var t = h.getElementsByTagName('*');
while (t.length > 0) {
   t[0].parentNode.removeChild(t[0]);
   }
h.appendChild(availLetter());
h.appendChild(displayImg());
h.appendChild(displaySolution());
}

function trans(op) {
var opn = '';
var len = op.length;
for (var i = 0; i < len; i++) {
   if (' ' === op.substr(i,1)) {opn += ' ';}
   else {opn += '-';}
}
return opn;
}

function trans2(op) {
var opn = '';
var len = op.length;
for (var i = 0; i < len; i++) {
   var ch = op.substr(i,1);
   if (ch == dc.substr(27,1)) break;
   if (ch == dc.substr(0,1)) opn += ' ';
   else opn += String.fromCharCode(dc.indexOf(ch)+64);
   }
return opn;}

function displayResult(txt) {
var ht = document.getElementById('hangt');
var newD2 = document.createElement("div");
newD2.id = 'hangr';
var newT = document.createTextNode(txt);
newD2.appendChild(newT);
var newD3 = document.createElement("div");
newD3.onclick = start;
newD3.style.color = '#00f';
newD3.style.cursor = 'pointer';
var newT2 = document.createTextNode('Try Again?');
newD3.appendChild(newT2);
newD2.appendChild(newD3);
ht.parentNode.replaceChild(newD2,ht);
}

function selectLetter(ltr) {
var ch = String.fromCharCode(ltr+65);
var match = false;
for (var i = sol.length - 1; i >= 0; i--) {
if (ch === answer.substr(i,1)) {
   sol = sol.substring(0,i) + ch + sol.substring(i+1);
   match = true;
   }
}
if (!match) {turn++;}
if (-1 !== answer.indexOf(ch)) {
   al = al.substring(0,ltr) + ch + al.substring(ltr+1);
}
if (sol === answer) {
   displayResult('You Win');
   } else if (10 > turn) {
   document.getElementById('hl'+ltr).childNodes[0].data = '-';
      } else {
   displayResult('You Lose');
   }
document.getElementById('hangi').src = 'hang' + turn + '.gif';
document.getElementById('hanga').childNodes[0].data = sol;
}

function availLetter() {
var newD = document.createElement("div");
newD.id = 'hangt';
var len = al.length;
for (var i = 0; i < len; i++) {
   var ltr = String.fromCharCode(i + 65);
   var newS = document.createElement("span");
   newS.id = 'hl'+i;
   if (ltr !== al.charAt(i)) {
     newS.onclick = Function('selectLetter('+i+')');
     newS.style.color = '#00f';
     newS.style.cursor = 'pointer';
     var newT = document.createTextNode(ltr);
     newS.appendChild(newT);
   }
  newD.appendChild(newS);
}
return newD;
}

function displayImg() {
var newI = document.createElement("img");
newI.id = 'hangi';
newI.src = 'hang' + turn + '.gif';
return newI;
}

function displaySolution() {
var newD = document.createElement("div");
newD.id = 'hanga';
var newT = document.createTextNode(sol);
newD.appendChild(newT);
return newD;
}

var pageLoaded = 0;
window.onload = function() {pageLoaded = 1;}
function loaded(i,f) {
if (document.getElementById && document.getElementById(i) != null) f();
else if (!pageLoaded) setTimeout('loaded(\''+i+'\','+f+')',100);
}
loaded('hang',start);