<?php
	$baseURL = "http://ajax.googleapis.com/ajax/libs/";
	$libraries = array(
		"Dojo" => array(
			"versions" => array( "1.1.1", "1.2.0", "1.2.3", "1.3.0", "1.3.1", "1.3.2", "1.4.0", "1.4.1", "1.4.3", "1.5.0" ),
			"url" => "dojo/XYZ/dojo/dojo.xd.js"
		),
		"ExtCore" => array(
			"versions" => array( "3.0.0", "3.1.0" ),
			"url" => "ext-core/XYZ/ext-core.js"
		),
		"jQuery" => array(
			"versions" => array( "1.2.3", "1.2.6", "1.3.0", "1.3.1", "1.3.2", "1.4.0", "1.4.1", "1.4.2", "1.4.3", "1.4.4", "1.5.0" ),
			"url" => "jquery/XYZ/jquery.min.js"
		),
		"jQueryUI" => array(
			"versions" => array( "1.5.2", "1.5.3", "1.6.0", "1.7.0", "1.7.1", "1.7.2", "1.7.3", "1.8.0", "1.8.1", "1.8.2", "1.8.4", "1.8.5", "1.8.6", "1.8.7", "1.8.8", "1.8.9" ),
			"url" => "jqueryui/XYZ/jquery-ui.min.js"
		),
		"MooTools" => array(
			"versions" => array( "1.1.1", "1.1.2", "1.2.1", "1.2.2", "1.2.3", "1.2.4", "1.2.5", "1.3.0" ),
			"url" => "mootools/XYZ/mootools-yui-compressed.js"
		),
		"Prototype" => array(
			"versions" => array( "1.6.0.2", "1.6.0.3", "1.6.1.0", "1.7.0.0" ),
			"url" => "prototype/XYZ/prototype.js"
		),
		"scriptaculous" => array(
			"versions" => array( "1.8.1", "1.8.2", "1.8.3" ),
			"url" => "scriptaculous/XYZ/scriptaculous.js"
		),
		"SWFObject" => array(
			"versions" => array( "2.1", "2.2" ),
			"url" => "swfobject/XYZ/swfobject.js"
		),
		"YUI" => array(
			"versions" => array( "2.6.0", "2.7.0", "2.8.0r4", "2.8.1", "2.8.2", "3.3.0" ),
			"url" =>    "yui/XYZ/build/yui/yui-min.js"
		)
	);

	if( count($_POST) ) {
		$includes = array();
		foreach( $_POST as $name => $ver ){
			$url = $libraries[ $name ][ "url" ];
			if( $name == "YUI" && $ver[0] == "2" ) {
				$url = str_replace( "/yui", "/yuiloader", $url, $count = 2 );
			}
			$include = "<script src='$baseURL".str_replace("XYZ", $ver, $url, $count = 1)."'></script>\n";
			if( $lib == "prototype" ) { // prototype must be included first
				array_unshift( $includes, $include );
			} else {
				array_push( $includes, $include );
			}
		}

		$includes = implode( "\n", $includes );
		$suite = file_get_contents( "index.html" );
		echo str_replace( "<!-- Includes -->", $includes, $suite );
		exit;
	}
?>
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<title>Run jQuery Test Suite Polluted</title>
	<style type="text/css">
		.otherlibs fieldset {
			width: 400px
		}
		.otherlibs label{
			margin: 5px 0px 5px 20px;
		}
	</style>
</head>

<body id="body">
	<h1 id="header">jQuery Test Suite</h1>
	<h2 id="banner" class="fail"></h2>
	<h2 id="userAgent">Choose other libraries to include</h2>

	<form class="otherlibs" action="./polluted.php" method="POST">
		<?php
			foreach( $libraries as $name => $data ) {
				echo "<fieldset><legend>$name</legend>";
				$i = 0;
				foreach( $data[ "versions" ] as $ver ) {
					$i++;
					echo "<label><input type='radio' name='$name' value='$ver' />$ver</label>";
					if( !($i % 4) ) echo "<br />";
				}
				echo "</fieldset>";
			}
		?>
		<input type="submit" value=" Run " class="submit" />
	</form>
</body>
</html>
