<p>This test verifies that a right mousebutton click generates a mousedown, context and mouseup event.</p>

</p>
<p>If the test passes, you'll see a PASS message below.
</p>

<p>To run this test in Safari:
<ol>
    <li>Right mouse down inside the box.</li>
    <li>Right mouse up.</li>
</ol>
</p>
<hr>
<style id="mystyle">
  .test-box {
    border: solid;
  }
</style>
<div class="test-box" id="click_target-1">box</div>
<pre id="log"></pre>

<script id="cody">

/**
 * Base namespace for test
 */
var rlightclickbug = rlightclickbug || {}; 

/**
 * Swallows an event.
 */
rlightclickbug.swallow = function(event) {
  event.preventDefault && event.preventDefault();
  event.stopImmediatePropagation && event.stopImmediatePropagation();
  event.stopPropagation && event.stopPropagation();
  event.preventBubble && event.preventBubble();
  return false;
};

/**
 * Dumps out a single line summary of a mouse event
 */
rlightclickbug.dumpShortEvent = function(event) {
  var values = []
  var keys = ['type', 'button'];
  for (var i = 0; i < keys.length; i++) {
    values.push(keys[i]);
    values.push(': ');
    values.push(event[keys[i]]);
    values.push(', ');
  }
  return values.join('');
};

/**
 * Writes a log message to the screen.
 */
rlightclickbug.logme = function(m) {
  var loggy = document.getElementById('log');
  loggy.innerHTML += ('\n' + m);
};

var _captureMouseEvents = function(event) {
  rlightclickbug.logme(rlightclickbug.dumpShortEvent(event));
  return rlightclickbug.swallow(event);
};


function main()
{
  var targetBox = document.getElementById('click_target-1');
  
  targetBox.addEventListener("mouseup", _captureMouseEvents, false);
  targetBox.addEventListener("mousedown", _captureMouseEvents, false);
  targetBox.addEventListener("click", _captureMouseEvents, false);
  targetBox.addEventListener("contextmenu", _captureMouseEvents, false);
    
  if (window.testRunner)
      testRunner.dumpAsText();
      
  if (window.eventSender) {
      // Confirm that left button works properly     
      eventSender.mouseMoveTo(targetBox.offsetLeft + 5,
          targetBox.offsetTop + 5); // in box
      eventSender.mouseDown();
      eventSender.mouseUp();
      
      // Confirm that right button works properly
      eventSender.mouseDown(2);
      eventSender.mouseUp(2);
      
      // Confirm that moving mouse while down outside of box 
      // does not fire a mouseup event.
      eventSender.mouseDown(2);
      eventSender.mouseMoveTo(0, 0); // outside of box
      eventSender.mouseUp(2);

      // order in IE is mousedown contextmenu mouseup
  }
}


main();
</script>
