(function ($) {
  $.fn.autoSelect = function (options) {
    /* default vars*/
    var defaults = {
      file: 'file.php',
      startAfter: 2
    }
    /* help functions - start*/
    function trim(v) {
      return v.replace(/^\s+|\s+$/g, '');
    }
    /* help functions - end*/
    options = $.extend({}, defaults, options);
    return this.each(function (N) {
      var that = $(this);
      var getEl;
      var elArr
      $.ajax({
        type: 'POST',
        url: options.file,
        data: {
          cmd: 'get'
        },
        success: function (data) {
          getEl = data.substring(data.indexOf('#') + 1, data.length);
          getEl = trim(getEl);
          elArr = getEl.split(' ');
        }
      });
      that.ajaxComplete(function () {
        that.bind('keyup', function (e) {
          var eKeyCode = e.keyCode;
          var hElement = (e.srcElement) ? e.srcElement : e.originalTarget;
          var elValue = that.val().toLowerCase();
		  if (that.data('showAfter') != 1)
		  {
			  return false;
		  }
          if (eKeyCode == 16) return;
          if (eKeyCode == 8) {elValue = elValue.substring(0, elValue.length - 1); return;}
          if (elValue.length <= options.startAfter) return;
          // onEnter select current suggestion 
					/*
          if (eKeyCode == 13) {
            if (hElement.createTextRange) {

              var r = hElement.createTextRange();
              var t = that.val(that.val() + ' ');
              r.findText((that.val().toString() + ' ').substr(that.val().toString().length));
              r.select()
            } else {
              hElement.setSelectionRange(that.val().length, that.val().length);
            }
            return;
          }
					*/
          var nInx;
          for (var cnt = 0; cnt < elArr.length; cnt++) {
            var qText = elArr[cnt];
            nIdx = qText.toLowerCase().indexOf(elValue, 0)
            if (nIdx == 0 && qText.length > elValue.length) {
			var hText = hElement.value;
              hElement.value = hText + elArr[cnt].substring(hText.length,elArr[cnt].length);
              if (hElement.createTextRange) {
                range = hElement.createTextRange()
                range.findText(qText.substr(elValue.length))
                range.select()
              }
              else {
                hElement.setSelectionRange(elValue.length, qText.length);
              }
              return;
            }
          }
        });
      });
    });

  }
})(jQuery);
