﻿//============================================================================================ TRY
// USER ACCOUNT LOAD
//============================================================================================ TRY
function widgetUserAccountLoad(suppliedroot, widgetName) {

          //root
          var root = "";
          if (suppliedroot == "Nothing") { root = ""; } else { root = suppliedroot };

          buildAccountTabs(root, suppliedroot, widgetName);
          $("#tableuseraccount").appendTo("#AccountTabs-page-useraccount");


};



// ==============================================================================================================================
// BUILD ACCOUNT TABS
// ==============================================================================================================================

// Build ------------------------------------------------------------------------------------------------------------------------------
function buildAccountTabs(root, suppliedroot, widgetName) {

          //Tab and page containers
          $("<div>").attr("id", "AccountTabs-tabsContainer").addClass("tabsContainer").appendTo("#AccountTabs");
          //clear
          $("<div>").addClass("clear").appendTo("#AccountTabs");
          $("<div>").attr("id", "AccountTabs-pagesContainer").addClass("pagesContainer").appendTo("#AccountTabs");

          //add tabs
          addAccountTab(root, suppliedroot, widgetName, "useraccount", "Account Details");
          addAccountTab(root, suppliedroot, widgetName, "orders", "Previous Orders");
          addAccountTab(root, suppliedroot, widgetName, "reward", "Reward Points");
          addAccountTab(root, suppliedroot, widgetName, "information", "Information");

          //Select start tab
          selectAccountTabs("useraccount");
};

// Add Tabs------------------------------------------------------------------------------------------------------------------------------
function addAccountTab(root, suppliedroot, widgetName, id, tabtext) {

          $("<div>").attr("id", "AccountTabs-tab-" + id).html(tabtext).addClass("tab").click(function () { selectAccountTabs(id); }).appendTo("#AccountTabs-tabsContainer");
          $("<div>").attr("id", "AccountTabs-page-" + id).addClass("page").appendTo("#AccountTabs-pagesContainer");

};

// Select Tabs------------------------------------------------------------------------------------------------------------------------------
function selectAccountTabs(tabId) {
          $("#[id^='AccountTabs-tab-']").removeClass("tabselected");
          $("#AccountTabs-tab-" + tabId).addClass("tabselected");
          $("#[id^='AccountTabs-page-']").hide();
          $("#AccountTabs-page-" + tabId).show();

};


// ==============================================================================================================================
// USER LOG ON
// ==============================================================================================================================

// USER LOG ON =========================================================================================
function userLogOn(GUID, destination) {
          if (validateUserLogOn(GUID)) {
                    var username = "", password = "";
                    try { username = $("#UserName_" + GUID).val(); } catch (e) { };
                    try { password = $("#Password_" + GUID).val(); } catch (e) { };
                    ws_2g_Core.WSUserLogOn(GUID, username, password, destination,
                                userLogOn_SucceededCallback, TimeoutCallback, FailedCallback);
          };
};

// USER LOG IN SUCCEEDED
function userLogOn_SucceededCallback(result) {
          var GUID = result.GUID
          //clear any message after delay
          if (result.Success == false) {
                    jAlert(result.ErrorMessage, appname);
          } else {
                    //show success message and clear the original message
                    $("#AccountLogIn").hide();
                    $("#AccountLogInText").hide();
                    $("#AccountSummary").html(result.HTMLString).show();
                    $("#RewardSummary").html(result.HTMLString2).show();

                    switch (result.HTMLTarget) {
                              case "ACCOUNT":
                                        try {
                                                  pageAccount();
                                        } catch (e) { };
                                        break;

                              case "CHECKOUT":
                                        try {
                                                  //reload basket and display the checkout tab
                                                  $("#result_displaypage5").load("Content/Widgets/widgetBasket.aspx", { "displayText": "Basket And Checkout" }, function () { selectCheckOutTabs("checkout"); });
                                        } catch (e) { };
                                        break;

                    };
          };
};

// VALIDATE LOG ON
function validateUserLogOn(GUID) {
          //Set initial conditions
          var errormessage = "", returnvalue = true;

          //Form Fields
          var username = $("#UserName_" + GUID);
          var password = $("#Password_" + GUID);

          var allFields = $([]).add(username, password);

          //Validate Form Fields
          if (checkLength(username, 1, 10000)) {
                    username.removeClass("errorhighlight");
          } else {
                    username.addClass("errorhighlight");
                    errormessage += "Please enter your user name.";
                    returnvalue = false;
          };

          if (checkLength(password, 1, 10000)) {
                    password.removeClass("errorhighlight");
          } else {
                    password.addClass("errorhighlight");
                    errormessage += "Please enter your password.";
                    returnvalue = false;
          };

          //Display or clear errors
          if (returnvalue == false) {
                    jAlert(errormessage, appname);
          } else {
                    allFields.removeClass("errorhighlight");
          };

          return returnvalue;
};

// ==============================================================================================================================
// END USER LOG ON
// ==============================================================================================================================

// ==============================================================================================================================
// UPDATE USER ACCOUNT
// ==============================================================================================================================

// UPDATE USER ACCOUNT =========================================================================================
function updateUserAccount(GUID) {
          if (validateUpdateUserAccount(GUID)) {
                    var title = "", firstname = "", lastname = "", telephone = "", emailaddress = "", password = ""; password2 = "";
                    try { title = $("#Title_" + GUID).val(); } catch (e) { };
                    try { firstname = $("#FirstName_" + GUID).val(); } catch (e) { };
                    try { lastname = $("#LastName_" + GUID).val(); } catch (e) { };
                    try { telephone = $("#Telephone_" + GUID).val(); } catch (e) { };
                    try { emailaddress = $("#EmailAddress_" + GUID).val(); } catch (e) { };
                    try { password = $("#Password_" + GUID).val(); } catch (e) { };
                    try { password2 = $("#Password2_" + GUID).val(); } catch (e) { };

                    ws_2g_Core.WSUpdateUserAccount(GUID, title, firstname, lastname, telephone, emailaddress, password,
                                updateUserAccount_SucceededCallback, TimeoutCallback, FailedCallback);
          };
};

// UPDATE USER ACCOUNT SUCCEEDED
function updateUserAccount_SucceededCallback(result) {
          var GUID = result.GUID
          $("#Password_" + GUID).val("");
          $("#Password2_" + GUID).val("");
          //clear any message after delay
          if (result.Success == false) {
                    jAlert(result.ErrorMessage, appname);
          } else {
                    jAlert(result.HTMLString, appname);
          };
};

// VALIDATE UPDATE USER ACCOUNT
function validateUpdateUserAccount(GUID) {
          //Set initial conditions
          var errormessage = "", returnvalue = true;

          //Form Fields
          var title = $("#Title_" + GUID);
          var firstname = $("#FirstName_" + GUID);
          var lastname = $("#LastName_" + GUID);
          var telephone = $("#Telephone_" + GUID);
          var emailaddress = $("#EmailAddress_" + GUID);
          var password = $("#Password_" + GUID);
          var password2 = $("#Password2_" + GUID);

          var allFields = $([]).add(title, firstname, lastname, telephone, emailaddress, password, password2);

          //Validate Form Fields
          if (checkLength(title, 1, 10000)) {
                    title.removeClass("errorhighlight");
          } else {
                    title.addClass("errorhighlight");
                    errormessage += "Please enter your title (Mr, Mrs, Dr etc).<br/>";
                    returnvalue = false;
          };

          if (checkLength(firstname, 1, 10000)) {
                    firstname.removeClass("errorhighlight");
          } else {
                    firstname.addClass("errorhighlight");
                    errormessage += "Please enter your first name.<br/>";
                    returnvalue = false;
          };

          if (checkLength(lastname, 1, 10000)) {
                    lastname.removeClass("errorhighlight");
          } else {
                    lastname.addClass("errorhighlight");
                    errormessage += "Please enter your last name.<br/>";
                    returnvalue = false;
          };

          if (checkRegexp(emailaddress, /\b[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b/)) {
                    emailaddress.removeClass("errorhighlight");
          } else {
                    emailaddress.addClass("errorhighlight");
                    errormessage += "Please enter a valid email address.<br/>";
                    returnvalue = false;
          };

          var passwordtext = password.val();
          var password2text = password2.val();
          if (passwordtext == password2text) {
                    password.removeClass("errorhighlight");
                    password2.removeClass("errorhighlight");
          } else {
                    password.addClass("errorhighlight");
                    password2.addClass("errorhighlight");
                    errormessage += "Entered passwords do not match.<br/>";
                    returnvalue = false;
          };

          //Display or clear errors
          if (returnvalue == false) {
                    jAlert(errormessage, appname);
          } else {
                    allFields.removeClass("errorhighlight");
          };

          return returnvalue;
};

// ==============================================================================================================================
// END UPDATE USER ACCOUNT
// ==============================================================================================================================




