<html>
<head>
  <title>range-sel-sk demo</title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
  <script src="/res/common/js/common.js"></script>
  <script src="/res/imp/bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <link rel="stylesheet" href="/res/common/css/md.css">
  <link rel="import" href="/res/imp/bower_components/polymer/polymer.html">
  <link rel="import" href="rangesel.html">
  <style type="text/css" media="screen">
    range-sel-sk {
      display: block;
      margin-bottom: 2em;
    }
  </style>
</head>
<body>
  <h1>Range</h1>

  <range-sel-sk begin=15 end=50 id=range></range-sel-sk>

  <table>
    <tr><th>begin</th><td id=vbegin></td></tr>
    <tr><th>end</th><td id=vend></td></tr>
  </table>

  <h2>Events</h2>
  <p>
    <h3>range-change</h3> <pre id=event></pre>
  </p>

  <p>
    <h3>range-change-end</h3> <pre id=end-event></pre>
  </p>

  <button id=restore>Restore</button>

  <script type="text/javascript" charset="utf-8">
    (function () {
      $$$('#range').addEventListener('range-change', function(e) {
        $$$('#vbegin').textContent = e.detail.begin;
        $$$('#vend').textContent = e.detail.end;
        $$$('#event').textContent = JSON.stringify(e, null, 2);
      });

      $$$('#range').addEventListener('range-change-end', function(e) {
        $$$('#end-event').textContent = JSON.stringify(e, null, 2);
      });

      $$$('#restore').addEventListener('click', function(e) {
        $$$('#range').begin = 15;
        $$$('#range').end = 50;
      });
    })();
  </script>

</body>
</html>
