﻿function membershipController() {
  this.CurrentMember = null;
  this.errList = "";
  this.loginType = "";

  this.loginPanel = $("#divTopLogin");

  this.loginControls = {}
  this.loginControls.Email = $("#txtLEmail");
  this.loginControls.Pass = $("#txtLPass");

  this.initialize = function() {
    this.getCurrentMember();
  }

  this.login = function () {
    $("#loginMsg").val("");
    if (!this.validateLoginForm()) { this.showAlerts(); return; }
    PCA.Services.Membership.login(gMemberController.loginControls.Email.val(), gMemberController.loginControls.Pass.val(), this.loginType, gMemberController.respondToLogin, gMemberController.failed);
  }

  this.respondToLogin = function (loginResponse) {
    gMemberController.CurrentMember = loginResponse;
    gMemberController.loginPanel.hide("slide", { direction: "up" });
    if (loginResponse != null && gMemberController.loginType != "" && (gMemberController.loginType == "P" || gMemberController.loginType == "T")) {
      window.location.replace(gMemberController.loginType == "P" ? loginResponse.PartnerURL : loginResponse.TrainerURL);
    }
  }

  this.validateLoginForm = function () {
    gMemberController.errList = "";
    var valid = true;
    if (gMemberController.loginControls.Email.val().length == 0) { valid = false; gMemberController.errList += "Email is required.\r\n"; }
    if (gMemberController.loginControls.Pass.val().length == 0) { valid = false; gMemberController.errList += "Password is required.\r\n"; }
    return valid;
  }

  this.getCurrentMember = function () {
    PCA.Services.Membership.getCurrentMember(gMemberController.respondToGetCurrentMember, gMemberController.failed);
  }

  this.respondToGetCurrentMember = function (getResponse) {
    gMemberController.CurrentMember = getResponse;
    if (getResponse && getResponse.WebMemberID != 0) {
      $("#lnkSubHome").attr("href", getResponse.CurrentHomeLink);
      $("#lnkSubHome").text(getResponse.CurrentHomeName);
      $("#divLogoutTab").show();
      $("#divLoginTab").hide();
    }
  }

  this.logout = function () {
    PCA.Services.Membership.logout(null);
    gMemberController.CurrentMember = null;
    window.location.replace("/default.aspx");
  }

  this.showAlerts = function () {
    if (gMemberController.errList == "") return;
    $("#loginMsg").html(gMemberController.errList);
    gMemberController.errList = "";
  }

  this.failed = function (exception, userContext, methodName) {
    gMemberController.errList += exception._message;
    gMemberController.showAlerts();
  }
}
