<?xml version="1.0"?>
<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" onload="m();">
	<title>Testcase for dynamic switch changes</title>
	<!-- From https://bugzilla.mozilla.org/show_bug.cgi?id=409383 -->
	<script>
		function m() {
		var svgns = "http://www.w3.org/2000/svg";

		var rect1 = document.getElementById("rect1");
		rect1.parentNode.removeChild(rect1);

		var rect2a = document.createElementNS(svgns, "rect");
		rect2a.setAttribute("x", "200");
		rect2a.setAttribute("y", "100");
		rect2a.setAttribute("width", "50");
		rect2a.setAttribute("height", "50")
		rect2a.setAttribute("fill", "lime");
		var rect2b = document.getElementById("rect2b");
		rect2b.parentNode.insertBefore(rect2a, rect2b);

		var rect3a = document.getElementById("rect3a");
		var rect3b = document.getElementById("rect3b");
		rect3a.parentNode.insertBefore(rect3a, rect3b);

		var rect4a = document.getElementById("rect4a");
		rect4a.setAttribute("systemLanguage", "foo");
		}
	</script>
	
	<rect width="100%" height="100%" fill="lime"/>
	
	<switch>
        <!-- test removing first child -->
		<rect id="rect1" x="50" y="100" width="50" height="50" fill="red"/>
		<rect x="50" y="100" width="50" height="50" fill="lime"/>
		<rect x="50" y="100" width="50" height="50" fill="red"/>
	</switch>
	<switch>
		<!-- test adding first child -->
		<rect id="rect2b" x="200" y="100" width="50" height="50" fill="red"/>
	</switch>
	<switch>
		<!-- test change child order -->
		<rect id="rect3b" x="50" y="200" width="50" height="50" fill="red"/>
		<rect id="rect3a" x="50" y="200" width="50" height="50" fill="lime"/>
	</switch>
	<switch>
		<!-- test change child attribute -->
		<rect id="rect4a" x="200" y="200" width="50" height="50" fill="red"/>
		<rect x="200" y="200" width="50" height="50" fill="lime"/>
	</switch>
</svg>
