// ========================================
// Original Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// Made compatible to all major browsers (FF, Safari, Opera, Chrome) by Thomas Konrad
// ========================================
function autoComplete (field, select, property, forcematch, event, complete_f)
{
  var found = false;
  for (var i = 0; i < select.options.length; i++)
  {
    if (select.options[i][property].toUpperCase().indexOf(field.value.toUpperCase()) == 0)
    {
      found = true;
      break;
    }
  }
  if (found)
    select.selectedIndex = i;
  else
    select.selectedIndex = -1;

  if (field.createTextRange || field.setSelectionRange)
  {
    if (forcematch && !found)
    {
      field.value = field.value.substring(0, field.value.length - 1);
      return;
    }
    var cursorKeys ="8;46;37;38;39;40;33;34;35;36;45;";
    if (cursorKeys.indexOf(event.keyCode+";") == -1)
    {
      var oldValue = field.value;
      var newValue = found ? select.options[i][property] : oldValue;
      if (newValue != field.value)
      {
        field.value = newValue;
        if (field.createTextRange)
        {
          var rNew = field.createTextRange();
          rNew.moveStart('character', oldValue.length) ;
          rNew.select();
        }
        else
        {
          field.setSelectionRange(oldValue.length, field.value.length);
          field.focus();
        }  
        if (complete_f) complete_f();
      }
    }
  }
}

