// Detect Client Browser type
var agent = navigator.userAgent.toLowerCase();
var isIE = ((agent.indexOf("msie") != -1) && (agent.indexOf("opera") == -1));

function cellClicked(item,dir) {
    rForm.activeID.value = item;
    rForm.activeDir.value = dir;
    rForm.submit();
}

function moveTo(dir,src,ev) {
    if (!src || !src.name) return;
    var oldEl = src.name.split("x");
    var newEl = parseInt(oldEl[2]);
    if (dir == "next") newEl++; else newEl--;
    newEl = "gridx"+oldEl[1]+"x"+newEl;
    if (document.JSraetselForm[newEl]) {
      document.JSraetselForm[newEl].focus();
    } else {
      var newEl = parseInt(oldEl[1]);
      if (dir == "next") newEl++; else newEl--;
      newEl = "gridx"+newEl+"x"+oldEl[2];
      if (document.JSraetselForm[newEl]) {
        document.JSraetselForm[newEl].focus();
      }
    }
}

function keyDown(ev) {
    var target  = (ev.target != null) ? ev.target : (ev.srcElement != null) ? ev.srcElement : null;
    var keyCode = ev.keyCode ? ev.keyCode : ev.charCode ? ev.charCode : ev.which ? ev.which : null;
    if ((isIE && ev.type == "keydown") || (ev.type == "keypress")) {
      if (keyCode == 8) {
        if (target.value == "")
          moveTo("prev",target,ev);
        else
          target.value = "";
      } else if (keyCode == 46) {
        target.value = "";
      } else if (keyCode == 13) {
        rForm.submit();
      } else if (keyCode == 39) {
        moveTo("next",target,ev);
      } else if (keyCode == 37) {
        moveTo("prev",target,ev);
      } else if ((keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122)) {
        var key = String.fromCharCode(keyCode).toUpperCase();
        target.value = key;
        moveTo("next",target,ev);
      }
      cancelKey(ev);
    }
}

function cancelKey(ev) {
    if (isIE) {
      ev.cancelBubble = true;
      ev.returnValue = false;
    } else {
      ev.preventDefault();
      ev.stopPropagation();
    }
}
