ShadeReservationSystem = new function() {

  var self = this;

  this.setup = function() {
    $('#btn_reserve').click(function() {
      var obj = {};
      obj['type'] = "shade-reservation";
      obj['username'] = $('#txt_username').val();
      obj['email'] = $('#txt_email').val();
      obj['ts'] = Math.round(new Date().getTime() / 1000);
      obj['hostname'] = location.hostname;
      if (self.validate_account(obj)) self.reserve_account(obj);
    });
  };

  this.validate_account = function(obj) {
    var ul = obj['username'].length;
    var valid = 0;

    if (ul > 2 && ul < 16) {
      valid += 1;
    } else {
      alert("Please enter a username between 3 and 15 characters.");
    }

    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

    if (obj['email'].match(re)) {
      valid += 1;
    } else {
      alert("Please enter another email address.");
    }

    if (valid== 2) return true; else return false;

  };

  this.reserve_account = function(obj) {
    var d = new Object();
    d.site = "qbx";
    d.db = "inbox";
    d.doc = obj;
    $('#btn_reserve').fadeOut(500);
    S9.request("sub9.db.create_doc", JSON.stringify(d), function(data) {
      if (data['ok'] != true) {
        alert("Shade is temporarily broken, please try again later!");
      } else {
        $('#txt_username').val('');
        $('#txt_email').val('');
        alert("Your reservation request has been saved, we'll email you soon with more info.");
      }
      $('#btn_reserve').fadeIn(1500);
    });
  };

};

$(document).ready(function() {
  ShadeReservationSystem.setup();
});

