/**
 * Customization of YAHOO.widget.MultiCheckNode for single check box.
 */
YAHOO.widget.TagNode = function(oData, oParent, expanded, otherChild, checked) {
  if (oData) {
    if (otherChild && !oParent.otherAdded) { // add sib for 'other/unspecified'
      oParent.otherAdded = true;
      new YAHOO.widget.TagNode(
          { label: '<i>other</i>', href: 'everything else',
            myData: {id: oParent.data.myData.id, childrenPresent: true, prefValue: oParent.data.myData.prefValue} },
          oParent, true);
    }
    if (!otherChild) { this.otherAdded = true; }
    this.init(oData, oParent, expanded);
    this.setUpLabel(oData);
    this.setUpCheck([checked], 1);
  }
  // this.logger = new YAHOO.widget.LogWriter(this.toString());
};

YAHOO.extend(YAHOO.widget.TagNode, YAHOO.widget.MultiCheckNode, {
  /**
   * true if 'other/unspecified' node has been added, or isn't wanted
   */
  otherAdded: null,

  // Overrides YAHOO.widget.TagNode. The html that draws the label and boxes
  getNodeHtml: function() {
    // this.logger.log("Generating html");
    var sb = new Array();

    sb[sb.length] = '<table border="0" cellpadding="0" cellspacing="0">';
    sb[sb.length] = '<tr>';

    sb[sb.length] = this.getNodeHtmlSpacer();
    sb[sb.length] = this.getNodeHtmlToggle();
    sb[sb.length] = this.getNodeHtmlCheckBox(0);
    sb[sb.length] = this.getNodeHtmlLabel();
    
    sb[sb.length] = '</tr>';
    sb[sb.length] = '</table>';

    return sb.join('');

  }
});
