<!DOCTYPE html>

<html>
  <head>
    <title>Cobalt pointer test</title>
    <script src='black_box_js_test_utils.js'></script>
    <style>
      .size10 {
        padding: 10px;
      }
      .size20 {
        padding: 20px;
      }
      .size40 {
        padding: 40px;
      }
      .black {
        background-color: #FFF;
      }
      .grey {
        background-color: #888;
      }
      .green {
        background-color: #0F0;
      }
      .blue {
        background-color: #00F;
      }
      .cyan {
        background-color: #0FF;
      }
      .purple {
        background-color: #F0F;
      }
      .yellow {
        background-color: #FF0;
      }
    </style>
  </head>
  <body class="black">
    <script>
      // Fail if the test is not finished within 15 seconds.
      var kTimeout = 30 * 1000;
      var failTimer = setTimeout(fail, kTimeout);

      function fail() {
          console.log("Failing due to timeout!");
          assertTrue(false);
      }

      function phasename(phase) {
        switch(phase) {
          case 0: return 'none';
          case 1: return 'capturing';
          case 2: return 'at target';
          case 3: return 'bubbling';
        }
        return ' [unknown: ' + phase + ']';
      }

      var expected_events = [
        // name, id, phase
        // actions.move_to_element(top_one).pause(_SLEEP_AFTER_MOVE_TIME)
        ['pointermove', 'top_one', 'at target'],
        ['pointermove', 'top', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'top_one', 'at target'],
        ['mousemove', 'top', 'bubbling'],
        ['mousemove', 'outer', 'bubbling'],
        ['pointerover', 'top_one', 'at target'],
        ['pointerover', 'top', 'bubbling'],
        ['pointerover', 'outer', 'bubbling'],
        ['pointerenter', 'top_one', 'at target'],
        ['pointerenter', 'top', 'at target'],
        ['pointerenter', 'outer', 'at target'],
        ['mouseover', 'top_one', 'at target'],
        ['mouseover', 'top', 'bubbling'],
        ['mouseover', 'outer', 'bubbling'],
        ['mouseenter', 'top_one', 'at target'],
        ['mouseenter', 'top', 'at target'],
        ['mouseenter', 'outer', 'at target'],
        // actions.move_to_element(top_two).pause(_SLEEP_AFTER_MOVE_TIME)
        ['pointerout', 'top_one', 'at target'],
        ['pointerout', 'top', 'bubbling'],
        ['pointerout', 'outer', 'bubbling'],
        ['pointerleave', 'top_one', 'at target'],
        ['mouseout', 'top_one', 'at target'],
        ['mouseout', 'top', 'bubbling'],
        ['mouseout', 'outer', 'bubbling'],
        ['mouseleave', 'top_one', 'at target'],
        ['pointermove', 'top_two', 'at target'],
        ['pointermove', 'top', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'top_two', 'at target'],
        ['mousemove', 'top', 'bubbling'],
        ['mousemove', 'outer', 'bubbling'],
        ['pointerover', 'top_two', 'at target'],
        ['pointerover', 'top', 'bubbling'],
        ['pointerover', 'outer', 'bubbling'],
        ['pointerenter', 'top_two', 'at target'],
        ['pointerenter', 'top', 'at target'],
        ['pointerenter', 'outer', 'at target'],
        ['mouseover', 'top_two', 'at target'],
        ['mouseover', 'top', 'bubbling'],
        ['mouseover', 'outer', 'bubbling'],
        ['mouseenter', 'top_two', 'at target'],
        ['mouseenter', 'top', 'at target'],
        ['mouseenter', 'outer', 'at target'],
        // actions.move_to_element_with_offset(top_two, 10, 10).pause(_SLEEP_AFTER_MOVE_TIME)
        ['pointermove', 'top_two', 'at target'],
        ['pointermove', 'top', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'top_two', 'at target'],
        ['mousemove', 'top', 'bubbling'],
        ['mousemove', 'outer', 'bubbling'],
        // actions.move_to_element_with_offset(top_two, 0, 0).pause(_SLEEP_AFTER_MOVE_TIME)
        ['pointermove', 'top_two', 'at target'],
        ['pointermove', 'top', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'top_two', 'at target'],
        ['mousemove', 'top', 'bubbling'],
        ['mousemove', 'outer', 'bubbling'],
        // actions.move_to_element_with_offset(top_two, -10, 0).pause(_SLEEP_AFTER_MOVE_TIME)
        ['pointerout', 'top_two', 'at target'],
        ['pointerout', 'top', 'bubbling'],
        ['pointerout', 'outer', 'bubbling'],
        ['pointerleave', 'top_two', 'at target'],
        ['mouseout', 'top_two', 'at target'],
        ['mouseout', 'top', 'bubbling'],
        ['mouseout', 'outer', 'bubbling'],
        ['mouseleave', 'top_two', 'at target'],
        ['pointermove', 'top_one', 'at target'],
        ['pointermove', 'top', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'top_one', 'at target'],
        ['mousemove', 'top', 'bubbling'],
        ['mousemove', 'outer', 'bubbling'],
        ['pointerover', 'top_one', 'at target'],
        ['pointerover', 'top', 'bubbling'],
        ['pointerover', 'outer', 'bubbling'],
        ['pointerenter', 'top_one', 'at target'],
        ['pointerenter', 'top', 'at target'],
        ['pointerenter', 'outer', 'at target'],
        ['mouseover', 'top_one', 'at target'],
        ['mouseover', 'top', 'bubbling'],
        ['mouseover', 'outer', 'bubbling'],
        ['mouseenter', 'top_one', 'at target'],
        ['mouseenter', 'top', 'at target'],
        ['mouseenter', 'outer', 'at target'],
        // actions.click(top_three)
        ['pointerout', 'top_one', 'at target'],
        ['pointerout', 'top', 'bubbling'],
        ['pointerout', 'outer', 'bubbling'],
        ['pointerleave', 'top_one', 'at target'],
        ['mouseout', 'top_one', 'at target'],
        ['mouseout', 'top', 'bubbling'],
        ['mouseout', 'outer', 'bubbling'],
        ['mouseleave', 'top_one', 'at target'],
        ['pointermove', 'top_three', 'at target'],
        ['pointermove', 'top', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'top_three', 'at target'],
        ['mousemove', 'top', 'bubbling'],
        ['mousemove', 'outer', 'bubbling'],
        ['pointerover', 'top_three', 'at target'],
        ['pointerover', 'top', 'bubbling'],
        ['pointerover', 'outer', 'bubbling'],
        ['pointerenter', 'top_three', 'at target'],
        ['pointerenter', 'top', 'at target'],
        ['pointerenter', 'outer', 'at target'],
        ['mouseover', 'top_three', 'at target'],
        ['mouseover', 'top', 'bubbling'],
        ['mouseover', 'outer', 'bubbling'],
        ['mouseenter', 'top_three', 'at target'],
        ['mouseenter', 'top', 'at target'],
        ['mouseenter', 'outer', 'at target'],
        ['pointerdown', 'top_three', 'at target'],
        ['pointerdown', 'top', 'bubbling'],
        ['pointerdown', 'outer', 'bubbling'],
        ['mousedown', 'top_three', 'at target'],
        ['mousedown', 'top', 'bubbling'],
        ['mousedown', 'outer', 'bubbling'],
        ['pointerup', 'top_three', 'at target'],
        ['pointerup', 'top', 'bubbling'],
        ['pointerup', 'outer', 'bubbling'],
        ['mouseup', 'top_three', 'at target'],
        ['mouseup', 'top', 'bubbling'],
        ['mouseup', 'outer', 'bubbling'],
        ['click', 'top_three', 'at target'],
        ['click', 'top', 'bubbling'],
        ['click', 'outer', 'bubbling'],
        // actions.click_and_hold(top_four)
        ['pointerout', 'top_three', 'at target'],
        ['pointerout', 'top', 'bubbling'],
        ['pointerout', 'outer', 'bubbling'],
        ['pointerleave', 'top_three', 'at target'],
        ['mouseout', 'top_three', 'at target'],
        ['mouseout', 'top', 'bubbling'],
        ['mouseout', 'outer', 'bubbling'],
        ['mouseleave', 'top_three', 'at target'],
        ['pointermove', 'top_four', 'at target'],
        ['pointermove', 'top', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'top_four', 'at target'],
        ['mousemove', 'top', 'bubbling'],
        ['mousemove', 'outer', 'bubbling'],
        ['pointerover', 'top_four', 'at target'],
        ['pointerover', 'top', 'bubbling'],
        ['pointerover', 'outer', 'bubbling'],
        ['pointerenter', 'top_four', 'at target'],
        ['pointerenter', 'top', 'at target'],
        ['pointerenter', 'outer', 'at target'],
        ['mouseover', 'top_four', 'at target'],
        ['mouseover', 'top', 'bubbling'],
        ['mouseover', 'outer', 'bubbling'],
        ['mouseenter', 'top_four', 'at target'],
        ['mouseenter', 'top', 'at target'],
        ['mouseenter', 'outer', 'at target'],
        ['pointerdown', 'top_four', 'at target'],
        ['pointerdown', 'top', 'bubbling'],
        ['pointerdown', 'outer', 'bubbling'],
        ['mousedown', 'top_four', 'at target'],
        ['mousedown', 'top', 'bubbling'],
        ['mousedown', 'outer', 'bubbling'],
        // actions.release(top_five)
        ['pointermove', 'top_four', 'at target'],
        ['pointermove', 'top', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'top_four', 'at target'],
        ['mousemove', 'top', 'bubbling'],
        ['mousemove', 'outer', 'bubbling'],
        ['pointerup', 'top_four', 'at target'],
        ['pointerup', 'top', 'bubbling'],
        ['pointerup', 'outer', 'bubbling'],
        ['mouseup', 'top_four', 'at target'],
        ['mouseup', 'top', 'bubbling'],
        ['mouseup', 'outer', 'bubbling'],
        ['click', 'top_four', 'at target'],
        ['click', 'top', 'bubbling'],
        ['click', 'outer', 'bubbling'],
        // actions.move_to_element(top_six).pause(_SLEEP_AFTER_MOVE_TIME)
        ['pointerout', 'top_four', 'at target'],
        ['pointerout', 'top', 'bubbling'],
        ['pointerout', 'outer', 'bubbling'],
        ['pointerleave', 'top_four', 'at target'],
        ['mouseout', 'top_four', 'at target'],
        ['mouseout', 'top', 'bubbling'],
        ['mouseout', 'outer', 'bubbling'],
        ['mouseleave', 'top_four', 'at target'],
        ['pointermove', 'top_six', 'at target'],
        ['pointermove', 'top', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'top_six', 'at target'],
        ['mousemove', 'top', 'bubbling'],
        ['mousemove', 'outer', 'bubbling'],
        ['pointerover', 'top_six', 'at target'],
        ['pointerover', 'top', 'bubbling'],
        ['pointerover', 'outer', 'bubbling'],
        ['pointerenter', 'top_six', 'at target'],
        ['pointerenter', 'top', 'at target'],
        ['pointerenter', 'outer', 'at target'],
        ['mouseover', 'top_six', 'at target'],
        ['mouseover', 'top', 'bubbling'],
        ['mouseover', 'outer', 'bubbling'],
        ['mouseenter', 'top_six', 'at target'],
        ['mouseenter', 'top', 'at target'],
        ['mouseenter', 'outer', 'at target'],
        // actions.move_to_element(bottom_six).pause(_SLEEP_AFTER_MOVE_TIME)
        ['pointerout', 'top_six', 'at target'],
        ['pointerout', 'top', 'bubbling'],
        ['pointerout', 'outer', 'bubbling'],
        ['pointerleave', 'top_six', 'at target'],
        ['pointerleave', 'top', 'at target'],
        ['mouseout', 'top_six', 'at target'],
        ['mouseout', 'top', 'bubbling'],
        ['mouseout', 'outer', 'bubbling'],
        ['mouseleave', 'top_six', 'at target'],
        ['mouseleave', 'top', 'at target'],
        ['pointermove', 'bottom_six', 'at target'],
        ['pointermove', 'bottom', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'bottom_six', 'at target'],
        ['mousemove', 'bottom', 'bubbling'],
        ['mousemove', 'outer', 'bubbling'],
        ['pointerover', 'bottom_six', 'at target'],
        ['pointerover', 'bottom', 'bubbling'],
        ['pointerover', 'outer', 'bubbling'],
        ['pointerenter', 'bottom_six', 'at target'],
        ['pointerenter', 'bottom', 'at target'],
        ['pointerenter', 'outer', 'at target'],
        ['mouseover', 'bottom_six', 'at target'],
        ['mouseover', 'bottom', 'bubbling'],
        ['mouseover', 'outer', 'bubbling'],
        ['mouseenter', 'bottom_six', 'at target'],
        ['mouseenter', 'bottom', 'at target'],
        ['mouseenter', 'outer', 'at target'],
        // actions.click(bottom_five)
        ['pointerout', 'bottom_six', 'at target'],
        ['pointerout', 'bottom', 'bubbling'],
        ['pointerout', 'outer', 'bubbling'],
        ['pointerleave', 'bottom_six', 'at target'],
        ['mouseout', 'bottom_six', 'at target'],
        ['mouseout', 'bottom', 'bubbling'],
        ['mouseout', 'outer', 'bubbling'],
        ['mouseleave', 'bottom_six', 'at target'],
        ['pointermove', 'bottom_five', 'at target'],
        ['pointermove', 'bottom', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'bottom_five', 'at target'],
        ['mousemove', 'bottom', 'bubbling'],
        ['mousemove', 'outer', 'bubbling'],
        ['pointerover', 'bottom_five', 'at target'],
        ['pointerover', 'bottom', 'bubbling'],
        ['pointerover', 'outer', 'bubbling'],
        ['pointerenter', 'bottom_five', 'at target'],
        ['pointerenter', 'bottom', 'at target'],
        ['pointerenter', 'outer', 'at target'],
        ['mouseover', 'bottom_five', 'at target'],
        ['mouseover', 'bottom', 'bubbling'],
        ['mouseover', 'outer', 'bubbling'],
        ['mouseenter', 'bottom_five', 'at target'],
        ['mouseenter', 'bottom', 'at target'],
        ['mouseenter', 'outer', 'at target'],
        ['pointerdown', 'bottom_five', 'at target'],
        ['pointerdown', 'bottom', 'bubbling'],
        ['pointerdown', 'outer', 'bubbling'],
        ['pointerup', 'bottom_five', 'at target'],
        ['pointerup', 'bottom', 'bubbling'],
        ['pointerup', 'outer', 'bubbling'],
        ['click', 'bottom_five', 'at target'],
        ['click', 'bottom', 'bubbling'],
        ['click', 'outer', 'bubbling'],
        // actions.click_and_hold(bottom_four)
        ['pointerout', 'bottom_five', 'at target'],
        ['pointerout', 'bottom', 'bubbling'],
        ['pointerout', 'outer', 'bubbling'],
        ['pointerleave', 'bottom_five', 'at target'],
        ['mouseout', 'bottom_five', 'at target'],
        ['mouseout', 'bottom', 'bubbling'],
        ['mouseout', 'outer', 'bubbling'],
        ['mouseleave', 'bottom_five', 'at target'],
        ['pointermove', 'bottom_four', 'at target'],
        ['pointermove', 'bottom', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'bottom_four', 'at target'],
        ['mousemove', 'bottom', 'bubbling'],
        ['mousemove', 'outer', 'bubbling'],
        ['pointerover', 'bottom_four', 'at target'],
        ['pointerover', 'bottom', 'bubbling'],
        ['pointerover', 'outer', 'bubbling'],
        ['pointerenter', 'bottom_four', 'at target'],
        ['pointerenter', 'bottom', 'at target'],
        ['pointerenter', 'outer', 'at target'],
        ['mouseover', 'bottom_four', 'at target'],
        ['mouseover', 'bottom', 'bubbling'],
        ['mouseover', 'outer', 'bubbling'],
        ['mouseenter', 'bottom_four', 'at target'],
        ['mouseenter', 'bottom', 'at target'],
        ['mouseenter', 'outer', 'at target'],
        ['pointerdown', 'bottom_four', 'at target'],
        ['pointerdown', 'bottom', 'bubbling'],
        ['pointerdown', 'outer', 'bubbling'],
        // actions.release(bottom_three)
        ['pointermove', 'bottom_four', 'at target'],
        ['pointermove', 'bottom', 'bubbling'],
        ['pointermove', 'outer', 'bubbling'],
        ['pointerup', 'bottom_four', 'at target'],
        ['pointerup', 'bottom', 'bubbling'],
        ['pointerup', 'outer', 'bubbling'],
        ['click', 'bottom_four', 'at target'],
        ['click', 'bottom', 'bubbling'],
        ['click', 'outer', 'bubbling'],
        // actions.move_to_element(bottom_two).pause(_SLEEP_AFTER_MOVE_TIME)
        ['pointerout', 'bottom_four', 'at target'],
        ['pointerout', 'bottom', 'bubbling'],
        ['pointerout', 'outer', 'bubbling'],
        ['pointerleave', 'bottom_four', 'at target'],
        ['mouseout', 'bottom_four', 'at target'],
        ['mouseout', 'bottom', 'bubbling'],
        ['mouseout', 'outer', 'bubbling'],
        ['mouseleave', 'bottom_four', 'at target'],
        ['pointermove', 'bottom_two', 'at target'],
        ['mousemove', 'bottom_two', 'at target'],
        ['pointerover', 'bottom_two', 'at target'],
        ['pointerenter', 'bottom_two', 'at target'],
        ['pointerenter', 'bottom', 'at target'],
        ['pointerenter', 'outer', 'at target'],
        ['mouseover', 'bottom_two', 'at target'],
        ['mouseenter', 'bottom_two', 'at target'],
        ['mouseenter', 'bottom', 'at target'],
        ['mouseenter', 'outer', 'at target'],
        // actions.move_to_element(bottom_one).pause(_SLEEP_AFTER_MOVE_TIME)
        ['pointerout', 'bottom_two', 'at target'],
        ['pointerleave', 'bottom_two', 'at target'],
        ['mouseout', 'bottom_two', 'at target'],
        ['mouseleave', 'bottom_two', 'at target'],
        ['pointermove', 'bottom_one', 'at target'],
        ['mousemove', 'bottom_one', 'at target'],
        ['pointerover', 'bottom_one', 'at target'],
        ['pointerenter', 'bottom_one', 'at target'],
        ['pointerenter', 'bottom', 'at target'],
        ['pointerenter', 'outer', 'at target'],
        ['mouseover', 'bottom_one', 'at target'],
        ['mouseenter', 'bottom_one', 'at target'],
        ['mouseenter', 'bottom', 'at target'],
        ['mouseenter', 'outer', 'at target'],
        // find_element_by_id(runner, 'end').click()
        ['pointerout', 'bottom_one', 'at target'],
        ['pointerleave', 'bottom_one', 'at target'],
        ['pointerleave', 'bottom', 'at target'],
        ['mouseout', 'bottom_one', 'at target'],
        ['mouseleave', 'bottom_one', 'at target'],
        ['mouseleave', 'bottom', 'at target'],
        ['pointermove', 'end', 'at target'],
        ['pointermove', 'outer', 'bubbling'],
        ['mousemove', 'end', 'at target'],
        ['mousemove', 'outer', 'bubbling'],
        ['pointerover', 'end', 'at target'],
        ['pointerover', 'outer', 'bubbling'],
        ['pointerenter', 'end', 'at target'],
        ['pointerenter', 'outer', 'at target'],
        ['mouseover', 'end', 'at target'],
        ['mouseover', 'outer', 'bubbling'],
        ['mouseenter', 'end', 'at target'],
        ['mouseenter', 'outer', 'at target'],
        ['pointerdown', 'end', 'at target'],
        ['pointerdown', 'outer', 'bubbling'],
        ['mousedown', 'end', 'at target'],
        ['mousedown', 'outer', 'bubbling'],
        ['pointerup', 'end', 'at target'],
        ['pointerup', 'outer', 'bubbling'],
        ['mouseup', 'end', 'at target'],
        ['mouseup', 'outer', 'bubbling'],
        ['click', 'end', 'at target'],
        ['click', 'outer', 'bubbling']];

      var current_event_number = 0
      var failure_count = 0;

      function CheckEvent(name, id, phase) {
        while ((current_event_number < expected_events.length) &&
               ((expected_events[current_event_number][0] != name) ||
               (expected_events[current_event_number][1] != id) ||
               (expected_events[current_event_number][2] != phase))) {
          console.log('ERROR: Missing Event [\'' +
                      expected_events[current_event_number][0] + '\', \'' +
                      expected_events[current_event_number][1] + '\', \'' +
                      expected_events[current_event_number][2] + '\'],');
          failure_count += 1;
          current_event_number += 1;
        }
        if (current_event_number < expected_events.length) {
          current_event_number += 1;
        } else {
          failure_count += 1;
          console.log('ERROR: Unexpected Event [\'' + name + '\', \'' +
                      id + '\', \'' + phase + '\'],');
        }
      }

      function LogEvent(e) {
        var pointertype = e.pointerType ? e.pointerType + ' ' : '';
        var id = this.getAttribute('id')
        CheckEvent(e.type, id, phasename(e.eventPhase))
        console.log(e.type + ' ' + pointertype + id +
                    ' (' + this.getAttribute('class') + ')' +
                    ' [' + phasename(e.eventPhase) + ']' +
                    ' (' + e.screenX + ',' + e.screenY + ')');
      }

      function EndTest(e) {
        console.log('Ending test.')
        assertTrue(failure_count == 0);
        onEndTest();
      }

      function Cancel(e) {
        console.log('cancel');
        e.preventDefault();
      }

      function Stop(e) {
        console.log('stop');
        e.stopPropagation();
      }

      function Capture(e) {
        console.log('capture');
        e.target.setPointerCapture(e.pointerId);
      }

      function SetHandlers(event, classname, callback) {
        var elements = document.getElementsByClassName(classname);
        for (var i = 0; i < elements.length; ++i) {
          elements[i].addEventListener(event, callback);
        }
      }

      function SetAllHandlers(prefix, classname, callback) {
        SetHandlers(prefix + 'enter', classname, callback);
        SetHandlers(prefix + 'leave', classname, callback);
        SetHandlers(prefix + 'over', classname, callback);
        SetHandlers(prefix + 'out', classname, callback);
        SetHandlers(prefix + 'down', classname, callback);
        SetHandlers(prefix + 'up', classname, callback);
        SetHandlers(prefix + 'move', classname, callback);
      }

      window.onload = function() {
        SetAllHandlers('mouse', 'track', LogEvent);
        SetAllHandlers('pointer', 'track', LogEvent);
        SetHandlers('click', 'track', LogEvent);
        SetAllHandlers('mouse', 'cancel', Cancel);
        SetAllHandlers('pointer', 'cancel', Cancel);
        SetAllHandlers('mouse', 'stop', Stop);
        SetAllHandlers('pointer', 'stop', Stop);
        SetHandlers('pointerdown', 'capture', Capture);
        SetHandlers('click', 'end', EndTest);
        console.log("Setup finished");
        setupFinished();
      }

    </script>
    <div id="outer" class="track size40 grey">
      <div id="top" class="track size20 blue">
        <span id="top_one" class="track size10 cyan"></span>
        <span id="top_two" class="track size10 purple"></span>
        *A*
        <span id="top_three" class="track size10 yellow"></span>
        *B*
        <span id="top_four" class="track capture size10 grey"></span>
        <span id="top_five" class="track size10 green"></span>
        <span id="top_six" class="track size10 cyan"></span>
      </div>
      <div id="bottom" class="track size20 green">
        <span id="bottom_one" class="track stop size10 cyan"></span>
        <span id="bottom_two" class="track stop size10 purple"></span>
        *A*
        <span id="bottom_three" class="track cancel size10 yellow"></span>
        *B*
        <span id="bottom_four" class="track cancel capture size10 grey"></span>
        <span id="bottom_five" class="track cancel size10 blue"></span>
        <span id="bottom_six" class="track size10 cyan"></span>
      </div>
      <div id="end" class="end track size10 blue">
      </div>
  </body>
</html>
