code: function () {
        var element = this.$el.get(0);
        
        // check if we are in an iframe
        // we need to alter positioning logic if using an iframe
        if (this.$el.prop('ownerDocument') !== document && window.frames.length) {
          for (var iframeIndex = 0; iframeIndex < window.frames.length; iframeIndex++) {
            if (this.$el.prop('ownerDocument') === window.frames[iframeIndex].document) {
              this.$iframe = $(window.frames[iframeIndex].frameElement);
              break;
            }
          }
        }
        
        
        // Initialize view objects.
        this.dropdown = new $.fn.textcomplete.Dropdown(element, this, this.option);
        var Adapter, viewName;
        if (this.option.adapter) {
          Adapter = this.option.adapter;
        } else {
          if (this.$el.is('textarea') || this.$el.is('input[type=text]') || this.$el.is('input[type=search]')) {
            viewName = typeof element.selectionEnd === 'number' ? 'Textarea' : 'IETextarea';
          } else {
            viewName = 'ContentEditable';
          }
          Adapter = $.fn.textcomplete[viewName];
        }
        this.adapter = new Adapter(element, this, this.option);
      }
docs: Public methods --------------