
function autoTab( input, e ) {
    
  var maxLength = input.getAttribute("maxLength");
  if (!maxLength) {
    return;
  }

  var keyCode = e.keyCode;
  var filter = [0,8,9,16,17,18,37,38,39,40,46];

  var tabIndex = input.getAttribute("tabIndex");
  //Natural Order
  if (!tabIndex) {
    if ((input.value.length >= maxLength) &&
        (!containsElement( filter, keyCode )) &&
        (!isDocumentSelected())) {
      
      input.value = input.value.slice( 0, maxLength );
      tabIndex = getNaturalOrderIndex(input);
      input.form[tabIndex + 1].focus();
    }
  }
  //TabIndex attribute
  else {
    if ((input.value.length >= maxLength) &&
       (!containsElement(filter, keyCode)) && 
       (!isDocumentSelected()) ){
      
      input.value = input.value.slice( 0, maxLength );
      input = getNextTabbedElement(tabIndex);
      if (input) {
        input.focus();
      }
    }
  }
}

function getNextTabbedElement(tabIndex) {
  var elements = document.forms[0].elements;
  for(i=0; i < elements.length; i++) {
    var anElement = elements[i];
    var aTabIndex = anElement.getAttribute("tabIndex");
    if (tabIndex == aTabIndex - 1) {
      return anElement;
    }
  }
}
