whole_func_string: function(elem, appendElem, stylesToAdd) {
      // glue to DOM element
      // elem can be ID or actual DOM element object
      this.domElement = ZeroClipboard.$(elem);
      
      // float just above object, or zIndex 99 if dom element isn't set
      var zIndex = 99;
      if (this.domElement.style.zIndex) {
        zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
      }
      
      if (typeof(appendElem) == 'string') {
        appendElem = ZeroClipboard.$(appendElem);
      }
      else if (typeof(appendElem) == 'undefined') {
        appendElem = document.getElementsByTagName('body')[0];
      }
      
      // find X/Y position of domElement
      var box = ZeroClipboard.getDOMObjectPosition(this.domElement, appendElem);
      
      // create floating DIV above element
      this.div = document.createElement('div');
      var style = this.div.style;
      style.position = 'absolute';
      style.left = '' + box.left + 'px';
      style.top = '' + box.top + 'px';
      style.width = '' + box.width + 'px';
      style.height = '' + box.height + 'px';
      style.zIndex = zIndex;
  
      style.left = '0px';
      style.top = '0px';
      
      if (typeof(stylesToAdd) == 'object') {
        for (addedStyle in stylesToAdd) {
          style[addedStyle] = stylesToAdd[addedStyle];
        }
      }
      
      // style.backgroundColor = '#f00'; // debug
      
      appendElem.appendChild(this.div);
      
      this.div.innerHTML = this.getHTML( box.width, box.height );
    }
func_code_string: function(elem, appendElem, stylesToAdd) {
      // glue to DOM element
      // elem can be ID or actual DOM element object
      this.domElement = ZeroClipboard.$(elem);
      
      // float just above object, or zIndex 99 if dom element isn't set
      var zIndex = 99;
      if (this.domElement.style.zIndex) {
        zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
      }
      
      if (typeof(appendElem) == 'string') {
        appendElem = ZeroClipboard.$(appendElem);
      }
      else if (typeof(appendElem) == 'undefined') {
        appendElem = document.getElementsByTagName('body')[0];
      }
      
      // find X/Y position of domElement
      var box = ZeroClipboard.getDOMObjectPosition(this.domElement, appendElem);
      
      // create floating DIV above element
      this.div = document.createElement('div');
      var style = this.div.style;
      style.position = 'absolute';
      style.left = '' + box.left + 'px';
      style.top = '' + box.top + 'px';
      style.width = '' + box.width + 'px';
      style.height = '' + box.height + 'px';
      style.zIndex = zIndex;
  
      style.left = '0px';
      style.top = '0px';
      
      if (typeof(stylesToAdd) == 'object') {
        for (addedStyle in stylesToAdd) {
          style[addedStyle] = stylesToAdd[addedStyle];
        }
      }
      
      // style.backgroundColor = '#f00'; // debug
      
      appendElem.appendChild(this.div);
      
      this.div.innerHTML = this.getHTML( box.width, box.height );
    }
func_documentation_string: user event handlers