<svg version="1.1" baseProfile="basic" id="svg-root"
  width="100%" height="100%" viewBox="0 0 480 360"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <!--======================================================================-->
  <!--=  SVG 1.1 2nd Edition Test Case                                     =-->
  <!--======================================================================-->
  <!--=  Copyright 2009 World Wide Web Consortium, (Massachusetts          =-->
  <!--=  Institute of Technology, European Research Consortium for         =-->
  <!--=  Informatics and Mathematics (ERCIM), Keio University).            =-->
  <!--=  All Rights Reserved.                                              =-->
  <!--=  See http://www.w3.org/Consortium/Legal/.                          =-->
  <!--======================================================================-->
  <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
    template-version="1.4" reviewer="SVGWG" author="Vincent Hardy" status="accepted"
    version="$Revision: 1.7 $" testname="$RCSfile: script-handle-03-b.svg,v $">
    <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/script.html#EventHandling">
      <p>
        Tests basic mouse event handlers.
      </p>
      <p>
        The test shows a target that can be used to generate the various
        kinds of mouse events supported in SVG. Below the
        target, the list of events is shown with red markers next to each.
      </p>      
      <p>
        If the test passes, all the markers should have turned to green
        after the events have been triggered on the target. If any event
        has not triggered, its marker will remain red.
      </p>
    </d:testDescription>
    <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">      
      <p>Load the test.  Click on the gray circle.</p>
    </d:operatorScript>
    <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
      <p>The test passes if, after clicking the gray circle, the three rectangles are green.</p>
    </d:passCriteria>
  </d:SVGTestCase>
  <title id="test-title">$RCSfile: script-handle-03-b.svg,v $</title>
  <defs>
    <font-face font-family="SVGFreeSansASCII" unicode-range="U+0-7F">
      <font-face-src>
        <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
      </font-face-src>
    </font-face>
  </defs>
  <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">

    <!-- Displayed Title -->
    <text x="100" y="40" fill="black" font-size="24">
      Mouse event handlers test.
    </text>

    <!-- The test defines a target and defines all the handlers for the target -->
    <!-- There are legends for each handler that are modified after the handler-->
    <!-- has been invoked                                                      -->

    <g id="targetGroup" transform="translate(60, 140)">
      <text x="-40" y="-50" font-size="32">Target</text>
      <text x="60" y="7" font-size="24">Use the target to trigger events</text>
      <!-- The target has all the event handlers defined -->
      <!-- Use this <g> instead -->
      <g id="target" onmousedown="onEvent(evt, 'onmousedown')" onmouseup="onEvent(evt, 'onmouseup')" onclick="onEvent(evt, 'onclick')">

        <circle cx="0" cy="0" r="30" fill="#cccccc" stroke="black"/>
        <line x1="-30" y1="0" x2="30" y2="0"/>
        <line x1="0" y1="-30" x2="0" y2="30"/>
      </g>
    </g>
    <!-- targetGroup -->

    <g id="labels">
      <g id="mouseEvents" transform="translate(65, 190)">
        <g id="mouseEventsLabels">
          <text x="10" y="20" font-size="32">onmousedown</text>
          <text x="10" y="50" font-size="32">onmouseup</text>
          <text x="10" y="80" font-size="32">onclick</text>
        </g>
        <g id="mouseEventsTestIndicators">
          <!-- onmousedown -->
          <rect x="-15" y="2" width="20" height="20" fill="green"/>
          <rect id="onmousedown" x="-15" y="2" width="20" height="20" fill="red"/>

          <!-- onmouseup -->
          <rect x="-15" y="32" width="20" height="20" fill="green"/>
          <rect id="onmouseup" x="-15" y="32" width="20" height="20" fill="red"/>

          <!-- onclick -->
          <rect x="-15" y="62" width="20" height="20" fill="green"/>
          <rect id="onclick" x="-15" y="62" width="20" height="20" fill="red"/>

        </g>
      </g>
      <!-- Mouse Events -->
    </g>

    <script type="text/ecmascript"><![CDATA[

      function onEvent(evt, indicatorId){
      // Get Document
      var target = evt.target;
      var doc = target.ownerDocument;

      // Mark test as passed
      var testPassed = doc.getElementById(indicatorId);
      testPassed.setAttribute('visibility', 'hidden');
      }
    ]]></script>

  </g>
  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
    <text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.7 $</text>
  </g>
  <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
  <!-- comment out this watermark once the test is approved -->
  <!--<g id="draft-watermark">
    <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
    <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
      text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
  </g>-->
</svg>
