<html xmlns="http://www.w3.org/1999/xhtml">
<style>
#svgRoot {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

#transformOriginRect {
    fill: green;
    transform: rotate(90deg);
}
</style>

<!--
  Test for bug 79068 - SVG should support transform-origin and relative values.

  You should see 9 green 20x20 rectangles.  Each green rectangle is actually one of a set of about 6, each one
  with a different but equivalent value for the CSS transform-origin property.
-->

<body>
  <svg id="svgRoot" xmlns="http://www.w3.org/2000/svg"></svg>

  <script><![CDATA[
    var svgNS = "http://www.w3.org/2000/svg";

    function addTransformOriginRect(x, y, s)
    {
       var rect = document.createElementNS(svgNS, "rect");
       var transformOrigin = (typeof(s) == "string") ? s :  s[0] + "px " + s[1] + "px";
       rect.setAttribute("id", "transformOriginRect");
       rect.setAttribute("x", x);
       rect.setAttribute("y", y);
       rect.setAttribute("width", 30);
       rect.setAttribute("height", 30);
       rect.setAttribute("style", "transform-box: fill-box; transform-origin: " + transformOrigin + ";");
       document.getElementById("svgRoot").appendChild(rect);
    }

    var equivalentTransformOrigins = [
         ["50% 50%", "center 50%", "50% center", "center", "center center", [15, 15]],
         ["0% 0%", "left 0%", "0% top", "left top", "top left", [0, 0]],
         ["0% 50%", "left 50%", "0% center", "left", "left center", "center left", [0, 15]],
         ["100% 0%", "right 0%", "100% top", "right top", "top right", [30, 0]],
         ["0% 50%", "left 50%", "0% center", "left center", "center left", [0, 15]],
         ["100% 50%", "right 50%", "100% center", "right center", "center right", [30, 15]],
         ["0% 100%", "left 100%", "0% bottom", "left bottom", "left bottom", [0, 30]],
         ["50% 100%", "center 100%", "50% bottom", "bottom", "center bottom", "bottom center", [15, 30]],
         ["100% 100%", "right 100%", "100% bottom", "right bottom", "bottom right", [30, 30]]
     ];

     for (var i = 0; i < equivalentTransformOrigins.length; i++)  {
         var x = 60 + (i %  4) * 60;
         var y = 60 + Math.floor(i / 4) * 60;
         equivalentTransformOrigins[i].map( function(s) { addTransformOriginRect(x, y, s); } );
     }

  ]]></script>
</body>
</html>
