/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Ilanio | http://www.webdeveloper.com/forum/showthread.php?t=119753 */

function Complete(obj, evt, fld) {
     if ((!obj) || (!evt) || (fld.length == 0)) {
        return;
  }

  if (obj.value.length == 0) {
        return;
  }

  var elm = (obj.setSelectionRange) ? evt.which : evt.keyCode;

  if ((elm < 32) || (elm >= 33 && elm <= 46) || (elm >= 112 && elm <= 123)) {
        return;
  }

  var txt = obj.value.replace(/;/gi, ",");
  elm = txt.split(",");
  txt = elm.pop();
  txt = txt.replace(/^\s*/, "");

  if (txt.length == 0) {
        return;
  }

  if (obj.createTextRange) {
    var rng = document.selection.createRange();
        if (rng.parentElement() == obj) {
            elm = rng.text;
            var ini = obj.value.lastIndexOf(elm);
        }
  } else if (obj.setSelectionRange) {
        var ini = obj.selectionStart;
  }

  for (var i = 0; i < fld.length; i++) {
    elm = fld[i].toString();
        if (elm.toLowerCase().indexOf(txt.toLowerCase()) == 0) {
            obj.value += elm.substring(txt.length, elm.length);
            break;
        }
  }

  if (obj.createTextRange) {
        rng = obj.createTextRange();
        rng.moveStart("character", ini);
        rng.moveEnd("character", obj.value.length);
        rng.select();
  } else if (obj.setSelectionRange) {
        obj.setSelectionRange(ini, obj.value.length);
  }
}