<!DOCTYPE html>

<!-- Copyright 2016 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file. -->

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Full Screen</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
</head>
<body>

<p>Rugby world cup winners:</p>
<ul>
  <li>1987: New Zealand (vs France, 29-9)</li>
  <li>1991: Australia (vs England 12-6)</li>
  <li>1995: South Africa (vs New Zealand 15-12)</li>
  <li>1999: Australia (vs France 35-12)</li>
  <li>2003: England (vs Australia 20-17)</li>
  <li>2007: South Africa (vs England 15-6)</li>
  <li>2011: New Zealand (vs France 8-7)</li>
  <li>2015: tbd New Zealand vs Australia</li>
</ul>

<p>Six Nations winners:</p>
<ul>
  <li>2000: England</li>
  <li>2001: England</li>
  <li>2002: France</li>
  <li>2003: England</li>
  <li>2004: France</li>
  <li>2005: Wales</li>
  <li>2006: France</li>
  <li>2007: France</li>
  <li>2008: Wales</li>
  <li>2009: Ireland</li>
  <li>2010: France</li>
  <li>2011: England</li>
  <li>2012: Wales</li>
  <li>2013: Wales</li>
  <li>2014: Ireland</li>
  <li>2015: Ireland</li>
</ul>

<p>An alphabetized subset of soccer players:</p>
<ul>
  <li>Alfredo Di Stefano</li>
  <li>Ferenc Puskas</li>
  <li>Franz Beckenbauer</li>
  <li>Johan Cruyff</li>
  <li>Lionel Messi</li>
  <li>Maradona</li>
  <li>Michel Platini</li>
  <li>Pele</li>
</ul>

<p>Some soccer teams:</p>
<ul>
  <li>Brazil 1958-62</li>
  <li>Brazil 1970-73</li>
  <li>Brazil 2002-06</li>
  <li>France 1982-86</li>
  <li>France 1998-2001</li>
  <li>Hungary 1951-54</li>
  <li>Italy 1934-38</li>
  <li>Netherlands 1974-78</li>
  <li>Spain 2007-10</li>
  <li>West Germany 1970-76</li>
</ul>

<p>Tornado gold medals</p>
<ul>
  <li>1976, Reginald White, John Osborn, GBR</li>
  <li>1980, Lars Sigurd Bjorkström, Alexandre Welter, BRA</li>
  <li>1984, Rex Sellers, Chris Timms, NZL</li>
  <li>1988, Jean Le Deroff, Nicolas Hénard, FRA</li>
  <li>1992, Yves Loday, Nicolas Hénard, FRA</li>
  <li>1996, Fernando León, José Luis Ballester, ESP</li>
  <li>2000, Roman Hagara, Hans Peter Steinacher, AUT</li>
  <li>2004, Roman Hagara, Hans Peter Steinacher, AUT</li>
  <li>2008, Antón Paz, Fernando Echavarri, ESP</li>
</ul>

<script type="text/javascript">
// Parse the html GET arguments.
var paramsString = window.location.search.substr(1).split("&");
var params = {};
for (var i = 0; i < paramsString.length; ++i) {
    var tmpArgument = paramsString[i].split("=");
    params[tmpArgument[0]] = tmpArgument[1];
}
if (params["fullscreen"] === "true") {
  // Request full screen by scrolling to (0, 1) after the document is loaded.
  var goFullScreen = function() {
    window.setTimeout(function() {window.scrollTo(0, 1);}, 200);
  };
  if (document.readyState === 'loaded' || document.readyState === 'complete')
    goFullScreen();
  else
    window.addEventListener('load', goFullScreen);
}
if ("repeat" in params) {
  jump = function() {
    window.scrollTo(0, Math.random() * 300);
  };
  window.setInterval(jump, params["repeat"]);
}

</script>

</body>
</html>
