<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Transition Events</title>
  <style type="text/css" media="screen">
    #box1 {
      position: relative;
      width: 100px;
      height: 100px;
      margin: 10px;
      background-color: blue;
      z-index: 0;
      -webkit-transition-property: left;
      -webkit-transition-duration: 2s;
      left: 0px;
    }

    #box2 {
      position: relative;
      width: 100px;
      height: 100px;
      margin: 10px;
      background-color: red;
      z-index: 0;
      -webkit-transition-property: left;
      -webkit-transition-duration: 2s;
      left: 0px;
    }

    #log {
      position: absolute;
      width: 90%;
      height: 200px;
      overflow: scroll;
      border: 1px solid black;
    }
  </style>
  <script type="text/javascript" charset="utf-8">

    var switch1 = true;
    var switch2 = false;
    
    document.addEventListener('webkitTransitionEnd', function(e) {
      var id = "1";
      if (switch1) {
        id = "2";
      }
      var offset = 200;
      if (switch2) {
        offset = 0;
      }
      var box = document.getElementById("box" + id);
      box.style.left = "" + offset + "px";
      switch1 = !switch1;
      if (!switch1) switch2 = !switch2;
      logTransition(event);
    }, false);

    function doClick(obj)
    {
      var box1 = document.getElementById("box1");
      box1.style.left = "200px";
    }

    function logTransition(event)
    {
      var log = document.getElementById('log');
      log.innerHTML = log.innerHTML + '<br>Property: ' + event.propertyName + ' Time: ' + event.elapsedTime;
    }
  </script>
</head>
<body>
  <h2>Transition Events</h2>
  <p>Click to start transitions. Once started, transition end events should keep
    things moving forever.</p>
  <div id="container" onclick="doClick(this)">
    <div id="box1">
    </div>
    <div id="box2">
    </div>
  </div>

  <div id="log">
    
  </div>
</body>
</html>
