<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
  <title>Slack Invite for OpenWhisk</title>
  <!-- Latest compiled and minified CSS -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
    crossorigin="anonymous">

  <!-- Optional theme -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp"
    crossorigin="anonymous">

  <!-- Latest compiled and minified JavaScript -->

  <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
    crossorigin="anonymous"></script>

  <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
  <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
  <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->

<style>
.splash {
  width: 500px;
  margin: 200px auto;
  font-family: "Helvetica Neue", Helvetica, Arial
}

@media (max-width: 500px) {
  .splash {
      margin-top:100px
  }
}
</style>
</head>

<body>
<div class="splash">
<img src="https://s23.postimg.org/oy3kv2uxn/skitch.png" style="height: 60px; margin-left: 100px;"/>
<p>Join the OpenWhisk Community to discuss the project in realtime.</p>
<ul>
  <li><strong>Talk</strong> to the core devs and the OpenWhisk community.</li>
  <li><strong>Learn</strong> from others and ask questions.</li>
  <li><strong>Share</strong> your work and demos.</li>
</ul>
<form class="form-inline">
  <div class="form-group">
    <label for="exampleInputEmail2">Email:</label>
    <input type="email" class="form-control" id="exampleInputEmail2" placeholder="jane.doe@example.com">
  </div>
  <button type="button" class="btn btn-primary">Send invitation</button>
</form>
<p>Please be nice, respectful and inclusive of others!</p>
<p id="result"></p>
<p>Fork on github <a href="https://github.com/csantanapr/openwhisk-slackinvite" target="blank">csantanapr/openwhisk-slackinvite</a></p>
</div>

<script type="text/javascript">
  var btn = $("button");
  var res = $("#result");
  function handler() {
    var email = $("input")[0].value;
    $.get("https://545303d4-dd03-4cfc-a553-4253f7929dfd-gws.api-gw.mybluemix.net/openwhisk-team/slackinvite", { email: email })
      .done(function (data) {
        btn.addClass("btn-success");
        btn.html("WOOT. CHECK YOUR EMAIL!");
        res.html(data.message);
      })
      .fail(function (err) {
        res.html(err.statusText + ":Your invitation didn't work :-( ");
        btn.addClass("btn-error");
      });
  }
  btn.click(handler); 
</script>
</body>

</html>