var flash_even_on = true;
var flash_odd_on = false;
var in_flash = false;

var door_locked = true;

var start_t;
var active = false;
var finished = false;

function die(id)
{
if (active == true)
{
   active = false;
   finished = true;

   document.getElementById("outtxt").innerHTML = "Game Over<br/><span style='font-size:14px'>Your score was " + score + " and you reached level " + level + "</span><br/><a href='mailto:?subject=Maze&body=Hi%20I%20just%20scored%20"+score+"%20at%20http://funqai.com/site/toy/index.php%3fid=maze'>Tell a friend!</a>";
   
   document.getElementById("attr_level").value="1";
   document.getElementById("attr_score").value="0";
   document.getElementById("but_restart").style.display="";
   
   if (id != null)
   {
   	document.getElementById(id).style.background = "#d22";
   }
}
}

function flash_even(id)
{
in_flash = true;
if (flash_even_on == true) {die(id)};
}

function flash_odd(id)
{
in_flash = true;
if (flash_odd_on == true) {die(id)};
}

function outFlash()
{
in_flash = false;	
}

function key()
{
if (active)
{
   door_locked = false;
   var delems = getElementsByClassName("key", "td");
   delems[0].style.background = "#fff";
   
   delems = getElementsByClassName("door", "td");
   var delen = delems.length;
   for (var fi=0; fi<delen; fi++)
   {
      delems[fi].style.background = "#fff";
   }
}
}

function door(id)
{
if (door_locked)
{
   die(id);
}	
}

function win()
{
if (active == true)
{
   active = false;
   finished = true;

   _ts = timeLeft;
   score += 25 + _ts;
   document.getElementById("scoretxt").innerHTML = "<p>" + score + "</p>";
   
   if (_ts > 1)
   {
      document.getElementById("outtxt").innerHTML = "Well done. Finished with " + _ts + " seconds spare!";
   }
   else if (_ts == 1)
   {
      document.getElementById("outtxt").innerHTML = "Well done. Finished with one second spare... Phew!";
   }
   else 
   {
      document.getElementById("outtxt").innerHTML = "Well done. Finished with zero seconds spare... Lucky?!";
   }
   document.getElementById("attr_level").value=level+1;
   document.getElementById("attr_score").value=score;
   document.getElementById("but_next").style.display="";
}
}

function start()
{
if (active == false && finished == false)
{
   active = true;
   document.getElementById("outtxt").innerHTML = "";
   start_t = new Date().getTime();
   setTimeout("tick()", 1000);
}
}

function tick()
{
if (active == true)
{
   if (timeLeft >=0)
   {
      doFlash();
      timeLeft--;
      updateTime();
      setTimeout("tick()", 1000);
   }
   else
   {
      die(null);
   }
}
}

function updateTime()
{
	if (timeLeft < 0)
      {
         document.getElementById("timetxt").innerHTML = "<p>--</p>";
      }
      else if (timeLeft < 10)
      {
         document.getElementById("timetxt").innerHTML = "<p>0" + timeLeft + "</p>";
      }
      else
      {
         document.getElementById("timetxt").innerHTML = "<p>" + timeLeft + "</p>";
      }
}

function getElementsByClassName(className, tag, elm)
{
	var testClass = new RegExp("(^|\\\\s)" + className + "(\\\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

function doFlash()
{
flash_even_on = !flash_even_on;
flash_odd_on = !flash_odd_on;
	
var fsh = getElementsByClassName("flash_even", "td");
var flen = fsh.length;

for (var f=0; f<flen; f++)
{
   if (flash_even_on == true)
   {
      fsh[f].style.background = "#000";
   }
   else
   {
      fsh[f].style.background = "#fff";
   }	
}

fsh = getElementsByClassName("flash_odd");
flen = fsh.length;

for (var f=0; f<flen; f++)
{
   if (flash_odd_on == true)
   {
      fsh[f].style.background = "#000";
   }
   else
   {
      fsh[f].style.background = "#fff";
   }	
}

if (in_flash)
{
die(null);	
}

}
