﻿/// <reference name="MicrosoftAjax.js" />
/// <reference path="~/includes/calendar.js" />
/// <reference path="~/includes/calendar-setup.js" />
/// <reference path="~/includes/MiscUtilities.js" />
/// <reference path="~/WebServices/Framework.asmx" />

Sys.Application.add_load(function() { ShurWeb.Framework.set_defaultFailedCallback(defaultFailedCallback); });

function defaultFailedCallback(error, userContext, methodName) {
  alert("Method Name: " + methodName + "\n\r\n\r"
        + "User Context: " + userContext + "\n\r\n\r"
        + "Error Message: " + error._message + "\n\r\n\r"
        + "Stack Trace: " + error._stackTrace);
}

/* System Test */

function ShowSystemTest() {
  var complete = function(result) {
    var popupWindow = $get("genPopup");
    popupWindow.innerHTML = result;
    var adminPopup = new AdminPopup();
    adminPopup.Show("System Test");
  }
  var adminPopup = new AdminPopup();
  adminPopup.ShowLoading("System Test");
  ShurWeb.Framework.GetSystemTestHTML(_currentAssetID, complete, onFailure);
}

function RequestSystemTest() {
  var completed = function(result) {
    var element = $get("systemTestRequestResponse");
    element.innerHTML = result;
  }
  ShurWeb.Framework.RequestSystemTest(completed, onFailure);
}

/* End System Test */

/* Send Voucher */

function ShowSendVoucher() {
  var complete = function(result) {
    var popupWindow = $get("genPopup");
    popupWindow.innerHTML = result;
    var adminPopup = new AdminPopup();
    adminPopup.Show("Send Voucher");
  }
  var adminPopup = new AdminPopup();
  adminPopup.ShowLoading("Send Voucher");
  ShurWeb.Framework.GetSendVoucherHTML(complete, onFailure);
}

function SendVoucher() {
  var voucherPIN = $get("SendVoucherPIN").value;
  var completed = function(result) {
    alert(result);
    var adminPopup = new AdminPopup();
    adminPopup.Hide();
  }
  ShurWeb.Framework.SendVoucher(voucherPIN, completed, onFailure);
}

/* End Send Voucher */

/* Settings Request */

function ShowSettingsRequest() {
  var complete = function(result) {
    var popupWindow = $get("genPopup");
    popupWindow.innerHTML = result;
    var adminPopup = new AdminPopup();
    adminPopup.Show("Settings Download Request");
  }
  var adminPopup = new AdminPopup();
  adminPopup.ShowLoading("Settings Download Request");
  ShurWeb.Framework.GetSettingsRequestHTML(complete, onFailure);
}

function SettingsRequest() {
  var completed = function(result) {
    alert(result);
    var adminPopup = new AdminPopup();
    adminPopup.Hide();
  }
  ShurWeb.Framework.InitiateSettingsTransfer(completed, onFailure);
}

/* End Settings Request */

/* Reset Unit */

function ShowResetSettings() {
  var complete = function(result) {
    var popupWindow = $get("genPopup");
    popupWindow.innerHTML = result;
    var adminPopup = new AdminPopup();
    adminPopup.Show("Send Settings Reset Request");
  }
  var adminPopup = new AdminPopup();
  adminPopup.ShowLoading("Send Settings Reset Request");
  ShurWeb.Framework.GetResetSettingsRequestHTML(complete, onFailure);
}

function ResetSettingsRequest() {
  var completed = function(result) {
    alert(result);
    var adminPopup = new AdminPopup();
    adminPopup.Hide();
  }
  ShurWeb.Framework.SendUnitResetRequest(completed, onFailure);
}

/* End Reset Unit */

/* ShowSendAPNSettings */

function ShowSendAPNSettings() {
  var complete = function(result) {
    var popupWindow = $get("genPopup");
    popupWindow.innerHTML = result;
    var adminPopup = new AdminPopup();
    adminPopup.Show("Send APN Settings to Unit");
  }
  var adminPopup = new AdminPopup();
  adminPopup.ShowLoading("Send APN Settings to Unit");
  ShurWeb.Framework.GetResetSettingsRequestHTML(complete, onFailure);
}

function SendAPNSettingsRequest() {
  var completed = function(result) {
    alert(result);
    var adminPopup = new AdminPopup();
    adminPopup.Hide();
  }
  ShurWeb.Framework.SendUnitResetRequest(completed, onFailure);
}

/* End ShowSendAPNSettings */

/* Reboot Unit */

function ShowRebootUnit() {
  var complete = function(result) {
    var popupWindow = $get("genPopup");
    popupWindow.innerHTML = result;
    var adminPopup = new AdminPopup();
    adminPopup.Show("Send Unit Reboot Request");
  }
  var adminPopup = new AdminPopup();
  adminPopup.ShowLoading("Send Unit Reboot Request");
  ShurWeb.Framework.GetRebootUnitRequestHTML(complete, onFailure);
}

function RebootUnitsRequest() {
  var completed = function(result) {
    alert(result);
    var adminPopup = new AdminPopup();
    adminPopup.Hide();
  }
  ShurWeb.Framework.InitiateUnitReboot(completed, onFailure);
}
/* End Reboot Unit */


/* Clear Unit Memory */

function ShowClearMemory() {
  var complete = function(result) {
    var popupWindow = $get("genPopup");
    popupWindow.innerHTML = result;
    var adminPopup = new AdminPopup();
    adminPopup.Show("Send Clear Logged Data Request");
  }
  var adminPopup = new AdminPopup();
  adminPopup.ShowLoading("Send Clear Logged Data Request");
  ShurWeb.Framework.GetClearMemoryRequestHTML(complete, onFailure);
}

function ClearMemoryRequest() {
  var completed = function(result) {
    alert(result);
    var adminPopup = new AdminPopup();
    adminPopup.Hide();
  }
  ShurWeb.Framework.SendEraseLoggedDataRequest(completed, onFailure);
}
/* End Clear Unit Memory */

/* Username Checker */
var usernameCheckerTimer;

function usernameChecker(username) {
  var userAvailabilitySpan = $get("userAvailability");
  clearTimeout(usernameCheckerTimer);
  userAvailabilitySpan.className = "";
  if (username.length == 0)
    userAvailabilitySpan.innerHTML = "";
  else {
    userAvailabilitySpan.innerHTML = "checking...";
    usernameCheckerTimer = setTimeout("checkUsernameUsage('" + username + "');", 750);
  }
}

function checkUsernameUsage(username) {
  // initiate the ajax pagemethod call
  // upon completion, the OnSucceded callback will be executed
  ShurWeb.Framework.IsUserNameAvailable(username, OnIsUserAvailableSucceeded);
}

// Callback function invoked on successful completion of the page method.
function OnIsUserAvailableSucceeded(result, userContext, methodName) {
  var userAvailabilitySpan = $get("userAvailability");
  if (methodName == "IsUserNameAvailable") {
    if (result == true) {
      userAvailabilitySpan.innerHTML = "Available";
      userAvailabilitySpan.className = "available";
    }
    else {
      userAvailabilitySpan.innerHTML = "Unavailable";
      userAvailabilitySpan.className = "taken";
    }
  } 
}

/* IMEI Number Checker */

var imeiNumberCheckerTimer;

function imeiNumberChecker(imeiNumber) {
  var imeiNumberValiditySpan = $get("imeiNumberValidity");
  clearTimeout(imeiNumberCheckerTimer);
  imeiNumberValiditySpan.className = "";
  if (imeiNumber.length == 0)
    imeiNumberValiditySpan.innerHTML = "";
  else {
    imeiNumberValiditySpan.innerHTML = "checking...";
    imeiNumberCheckerTimer = setTimeout("checkIMEINumberValidity('" + imeiNumber + "');", 750);
  }
}

function checkIMEINumberValidity(imeiNumber) {
  // initiate the ajax pagemethod call
  // upon completion, the OnSucceded callback will be executed
  ShurWeb.Framework.IsIMEINumberValid(imeiNumber, OnIsIMEINumberValidSucceeded);
}

// Callback function invoked on successful completion of the page method.
function OnIsIMEINumberValidSucceeded(result, userContext, methodName) {
  var imeiNumberValiditySpan = $get("imeiNumberValidity");
  if (methodName == "IsIMEINumberValid") {
    if (result == true) {
      imeiNumberValiditySpan.innerHTML = "Available";
      imeiNumberValiditySpan.className = "available";
    }
    else {
      imeiNumberValiditySpan.innerHTML = "Unavailable";
      imeiNumberValiditySpan.className = "taken";
    }
  }
}

/* IMEI PIN Checker */

var imeiPINCheckerTimer;

function imeiPINChecker(imeiNumber, imeiPIN) {
  var imeiPINValiditySpan = $get("imeiPINValidity");
  clearTimeout(imeiPINCheckerTimer);
  imeiPINCheckerTimer.className = "";
  if (imeiNumber.length == 0 || imeiPIN.length ==0)
    imeiPINCheckerTimer.innerHTML = "";
  else {
    imeiPINCheckerTimer.innerHTML = "checking...";
    imeiPINCheckerTimer = setTimeout("checkIMEIPINValidity('" + imeiNumber + "', '" + imeiPIN + "');", 750);
  }
}

function checkIMEIPINValidity(imeiNumber, imeiPin) {
  // initiate the ajax pagemethod call
  // upon completion, the OnSucceded callback will be executed
  ShurWeb.Framework.IsIMEINumberPINValid(imeiNumber, imeiPin, OnIsIMEINumberPINValidSucceeded);
}

// Callback function invoked on successful completion of the page method.
function OnIsIMEINumberPINValidSucceeded(result, userContext, methodName) {
  var imeiPINCheckerTimer = $get("imeiPINValidity");
  if (methodName == "IsIMEINumberPINValid") {
    if (result == true) {
      imeiPINCheckerTimer.innerHTML = "Correct";
      imeiPINCheckerTimer.className = "available";
    }
    else {
      imeiPINCheckerTimer.innerHTML = "Invalid";
      imeiPINCheckerTimer.className = "taken";
    }
  }
}

