<!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>
</head>

<body>
  <img src="https://s23.postimg.org/oy3kv2uxn/skitch.png" style="height: 60px;"/>
  <p>
    Join the Apache OpenWhisk Slack 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>
  <p>Enter your email to join the OpenWhisk community Slack server:</p>
  <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>

<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 ) {
    alert( "Data Loaded: " + 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>
