// It's a bit messy in here. Sorry about that.

var leftArrow, rightArrow, upArrow, downArrow;

if (document.captureEvents) {
    document.captureEvents(Event.KEYDOWN);
    leftArrow = 28;
    rightArrow = 29;
    upArrow = 30;
    downArrow = 31;
    tabKey = 9;
    delKey = 8;
} else {
    leftArrow = 37;
    rightArrow = 39;
    upArrow = 38;
    downArrow = 40;
    tabKey = 9;
    delKey = 8;
}

function keyDownHandler(evt)
{
  var pkey;
	
  if (evt) {
    pkey = evt.which;
    d = evt.target.id;
  } else {
    // IE sucks
    pkey = window.event.keyCode;
    d = window.event.target.id;
  }
  
  if (d.indexOf("i_") == 0) {
    tb = document.forms["sf"].elements;
    switch (pkey) {
      case leftArrow:
      case 37:
        c = d.charCodeAt(3) - 1;
        if (c < 97) c = 105;
        d = d.substr(0,3) + String.fromCharCode(c);
        tb[d].focus();
        tb[d].select();
        return false;
        break;
      case rightArrow:
      // case tabKey:
      case 39:
        c = d.charCodeAt(3) + 1;
        if (c > 105) c = 97;
        d = d.substr(0,3) + String.fromCharCode(c);
        tb[d].focus();
        tb[d].select();
        return false;
        break;
      case upArrow:
      case 38:
        c = d.charCodeAt(2) - 1;
        if (c < 97) c = 105;
        d = "i_" + String.fromCharCode(c) + d.charAt(3);
        tb[d].focus();
        tb[d].select();
        return false;
        break;
      case downArrow:
      case 40:
        c = d.charCodeAt(2) + 1;
        if (c > 105) c = 97;
        d = "i_" + String.fromCharCode(c) + d.charAt(3);
        tb[d].focus();
        tb[d].select();
        return false;
        break;
      case delKey:
        tb.value = "";
        break;
      default:
        if (pkey<49 || pkey>57) {
          if (pkey > 31) tb.value="";
          return false;
        }
        tb[d].value = '';
        tb[d].value = String.fromCharCode(pfkey);
        tb[d].focus();
        tb[d].select();
        return false;
    }
  }
}

document.onkeydown = keyDownHandler;

