var LEFT_MOUSEBUTTON = 1;
var ENTER_KEY = 13;

function loadInTopFrame()
{
  if (window != window.top)
    window.top.location.href = window.location.href;
}

function isEnterKey(event)
{
  var keycode;

  if (event.which)
    keycode = event.which;
  else if (event.keyCode)
    keycode = event.keyCode;
  else
    return false;

  return (keycode == ENTER_KEY);
}

function isLeftMouseButton(event)
{
  return (event.which ? event.which == LEFT_MOUSEBUTTON : true);
}

function submitOnEnter(event)
{
  if (isEnterKey(event))
    document.getElementById('riddleForm').submit();
}

function trim(text)
{
  if (text.length == 0) return text;

  var WHITESPACE_REGEXP = new RegExp("\\s");
  var startIndex = 0, stopIndex = text.length - 1;
  while (WHITESPACE_REGEXP.test(text[startIndex]))
  {
    startIndex++;
    if (startIndex > stopIndex) return '';
  }
  while (WHITESPACE_REGEXP.test(text[stopIndex])) stopIndex--;

  return text.substring(startIndex, stopIndex + 1);
}

function containedIn(event, containerID)
{
  var content = (event.relatedTarget || event.toElement);

  while (content != null)
  {
    try
    {
      if (content.id == containerID)
        return true;
      else
        content = (content.parentNode || content.parentElement);
    }
    catch(e)
    {
      return true;
    }
  }

  return false;
}

function createRiddle1SaveData()
{
  var numberOfBits = board[0].length;
  var data = numberOfBits;

  for (var nibbleNumber = 0; nibbleNumber < board.length; nibbleNumber++)
    for (var bitNumber = 0; bitNumber < numberOfBits; bitNumber++)
      data += '_' + board[nibbleNumber][bitNumber];
  return data;
}

function createRiddle2SaveData()
{
  var data = numberOfMoves;

  var numberOfColumns = marbles[0].length;
  data += '_' + numberOfColumns;

  for (var row = 0; row < marbles.length; row++)
    for (var column = 0; column < numberOfColumns; column++)
      data += '_' + marbles[row][column];
  return data;
}

function createRiddle3SaveData()
{
  var numberOfRows = board.length;
  var numberOfColumns = board[0].length;
  var data = numberOfColumns;

  for (var row = 0; row < numberOfRows; row++)
    for (var column = 0; column < numberOfColumns; column++)
      data += '_' + board[row][column];
  return data;
}

function createRiddle4SaveData()
{
  var data = order;

  for (var i = 0; i < board.length; i++)
    data += '_' + board[i];
  return data;
}

function createRiddle5SaveData()
{
  var numberOfRows = board.length;
  var numberOfColumns = board[0].length;
  var data = getGuess();

  data += '_' + numberOfColumns;

  for (var row = 0; row < numberOfRows; row++)
    for (var column = 0; column < numberOfColumns; column++)
      data += '_' + board[row][column];
  return data;
}

function createRiddle6SaveData()
{
  var numberOfColumns = board[0].length;
  var data = getNumberOfMoves() + '_' + numberOfColumns;

  for (var row = 0; row < board.length; row++)
    for (var column = 0; column < numberOfColumns; column++)
      data += '_' + board[row][column];
  return data;
}

function createRiddle7SaveData()
{
  var data = 'null';

  return data;
}

function createRiddle8SaveData()
{
  var data = 'null';

  return data;
}

function createRiddle9SaveData()
{
  var data = 'null';

  return data;
}

function createRiddle10SaveData()
{
  var data = 'null';

  return data;
}

function createRiddle11SaveData()
{
  return getGuess();
}

function createRiddle12SaveData()
{
  var data = 'null';

  return data;
}

function createRiddle13SaveData()
{
  var data = 'null';

  return data;
}

function createRiddleSaveData(riddle)
{
  var data = '';
  if ((riddle > 0) && (riddle < 14))
    eval('data = createRiddle' + riddle  + 'SaveData();');
  return data;
}


loadInTopFrame();
