<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl"
          xmlns:html="http://www.w3.org/1999/xhtml">
  <binding id="dispatcher">
    <content>
      <html:input type="button" value="Dispatch"
                  onclick="var e = document.createEvent('Events');
                           e.initEvent('XBLEvent', true, true);
                           this.parentNode.parentNode.dispatchEvent(e);"
        />
    </content>
  </binding>

  <binding id="listener">
    <content>
      <html:div anonid="listener" id="inner_listener">
        <html:span style="-moz-binding: url(tester.xml#dispatcher);"/>
        <html:span anonid="result">[]</html:span>
        <children/>
      </html:div>
    </content>
    <implementation>
      <constructor>
        var res = document.getAnonymousElementByAttribute(this, "anonid", "result");
        document.getAnonymousElementByAttribute(this, "anonid", "listener").
          addEventListener("XBLEvent", function(e) {
            res.firstChild.data = "[" + e.target.id + "]";
          }, false);
      </constructor>
    </implementation>
  </binding>

  <binding id="listener2">
    <content>
      <html:div anonid="listener" id="inner_listener2">
        <html:span anonid="result">[]</html:span>
        <html:div anonid="inner" style="-moz-binding: url(tester.xml#listener);">
          <children/>
        </html:div>
      </html:div>
    </content>
    <implementation>
      <constructor>
        document.getAnonymousElementByAttribute(this, "anonid", "inner").
          setAttribute("id", this.getAttribute('id') + "_inner");
        var res = document.getAnonymousElementByAttribute(this, "anonid", "result");
        document.getAnonymousElementByAttribute(this, "anonid", "listener").
          addEventListener("XBLEvent", function(e) {
            res.firstChild.data = "[" + e.target.id + "]";
          }, false);
      </constructor>
    </implementation>
  </binding>
</bindings>
