var letters = "abcdefghijklmnopqrstuvwxyz";
var numbers = "0123456789";
var choice = numbers + letters;
var subs = ",?/*-+";
var toleft;
var totop;
var flagsleft;
var rights;
var currflag;

function go2() {
go();
toleft = xobj("bgr").offsetLeft;
totop = xobj("bgr").offsetTop;
xobj("flag1").style.left = toleft+193;
xobj("flag1").style.top = totop+195;}

function toflag(x) {
 if (letters.indexOf(x)!=-1)
  return "<img src='../images/" + x + "flag.gif' width='25' height='20'>";
 else if (numbers.indexOf(x)!=-1)
  return "<img src='../images/" + x + "flag.gif' width='40' height='16'>";
 else if (subs.indexOf(x)!=-1) {
   if (subs.indexOf(x)>2) b = subs.indexOf(x) - 2;
   else b = subs.indexOf(x) + 1;
  return "<img src='../images/" + b + "sub.gif' width='25' height='20'>";
 }
 else if (x==".") return "<img src='../images/answer.gif' width='40' height='16'>";
 else return "";
}

function ch() {
s = xobj("f1").tt.value.toLowerCase();
nolet = 0; nonum = 0; t = "";
 for (i=0;i<s.length;i++) {
   if (letters.indexOf(s.substring(i,i+1))!=-1) {
     if (nolet<3) t += subs.substring(nolet,nolet+1);
     else t += ".";
    nolet++;
   } 
   else if (numbers.indexOf(s.substring(i,i+1))!=-1) {
     if (nonum<3) t += subs.substring(nonum+3,nonum+4);
     else t += ".";
    nonum++;
   }
   else if (s.substring(i,i+1)==".") t += ".";
   else s = s.substring(0,i) + s.substring(i+1); 
 }
h = "<table border='0'><tr><td>";
 for (i=0;i<s.length;i++) {
  w = s.substring(0,i).lastIndexOf(s.substring(i,i+1));
   if (w!=-1) h += toflag(t.substring(w,w+1));
   else h += toflag(s.substring(i,i+1));
   if (i<s.length) h += "</td></tr><tr><td>";
 }
h +="</td></tr></table>";
xobj("flag1").innerHTML = h;
xobj("flag1").style.visibility = "visible";
setTimeout("answer1()",2000);    
}

function answer1() {
xobj("flag2").style.left = toleft+550;
xobj("flag2").style.top = totop+208;
xobj("flag2").style.visibility = "visible";
xobj("ans1").style.visibility = "visible";
setTimeout("answer2()",2000);    
}

function answer2() {
xobj("flag2").style.left = toleft+550;
xobj("flag2").style.top = totop+188;
xobj("ans2").style.visibility = "visible";
}
 
function again() {
xobj("flag1").style.visibility = "hidden";
xobj("flag2").style.visibility = "hidden";
xobj("ans1").style.visibility = "hidden";
xobj("ans2").style.visibility = "hidden";
xobj("f1").tt.value = "";
}

function teststart() {
flagsleft = 30;
rights = 0;
xobj("noflags").innerHTML = flagsleft;
xobj("result").innerHTML = "(This number counts down as you progress)";
xobj("ans1").innerHTML = "&nbsp;";
rectest(0);
}

function rectest(cod) {
xobj("flag1").style.visibility = "hidden";
 if (cod != 0) {
   if (cod != 32) {
    xobj("flag2").style.left = toleft+550;
    xobj("flag2").style.top = totop+188;
    xobj("flag2").style.visibility = "visible";
     if (cod > 96)
      cod -= 32;
     if (cod > 64)
      chr = choice.substring(cod-55,cod-54);
     else
      chr = choice.substring(cod-48,cod-47);
     if (chr == currflag) {
      rights++;  
      xobj("ans1").innerHTML = "Correct!";
     } else
      xobj("ans1").innerHTML = "Wrong, it was flag " + currflag;
   }
  flagsleft--;
  xobj("noflags").innerHTML = flagsleft;
 }
 if (flagsleft > 0) {
  i = rndno(choice.length);
  h = "<table border='0'><tr><td>";
  currflag = choice.substring(i,i+1);
  h += toflag(currflag);
  h +="</td></tr></table>";
  xobj("flag1").innerHTML = h;
  xobj("flag1").style.visibility = "visible";
 } else {
  xobj("result").innerHTML = "Percentage score: " + rights/30*100 + "%";
 }
xobj("flag2").style.visibility = "hidden";
}

function rndno(maxi) {
idx = -1;
while (idx < 0 || idx > maxi || isNaN(idx)) {
 idx = parseInt(Math.random()*(maxi));}
return idx;
}