﻿$(function() {
    $("#AjaxLoadingAnimation").ajaxStart(function() {
        $(this).show();
    });

    $("#AjaxLoadingAnimation").ajaxComplete(function() {
        $(this).hide();
    });
});
function ValidateInput(Description)
    {
       
        if (event.keyCode != null)
        {
            // Need to prevent Enter key.
            if (event.keyCode == 13)
            {
                alert('Line breaks are not permitted in this description.');
                event.returnValue = false;
                return false;
            }
        }
    }
function textCounter(field,maxlimit)
     {
          if (field.value.length > maxlimit) // if too long...trim it!
          field.value = field.value.substring(0, maxlimit);
  }

  function ShowCriteriaSelection(launcher, selectionWindow) {
      // If the user clicks on the link a second time it should just close the window
      if (selectionWindow.is(":visible")) {
          selectionWindow.jqmHide();
          return;
      }

      $(".CriteriaWindow").jqmHide();

      var pos = launcher.offset();

      var left = pos.left;
      if (pos.left + selectionWindow.width() > ($(window).width() - 25)) {
          left -= (pos.left + selectionWindow.width()) - ($(window).width() - 25);
      }

      selectionWindow.css({
          position: 'absolute',
          zIndex: 5000,
          left: left,
          top: pos.top + 25
      });

      selectionWindow.jqm({ modal: false, overlay: false, onShow: function(hash) { hash.w.show("slide", { direction: "up" }, 500); }, onHide: function(hash) { hash.w.hide("slide", { direction: "up" }, 500) } });
      selectionWindow.jqmShow();
  }  

  //*****************************************************************************************
  //* Utility Methods
  //*****************************************************************************************
  function HandleException(errorMessage) {
      $.unblockUI();
      alert(errorMessage); // Just display javascript message for now
  }

  //*****************************************************************************************
  //* Enumerations
  //*****************************************************************************************
  var AjaxResult = { OK: 0, Error: 1 }

  var BaseClass = {
      Create: function() {
          return function(options) {
              if (this.Initialize) {
                  this.Root = "/";
                  if (options != null) {
                      if (options.Root != null)
                          this.Root = options.Root;
                  }
                  this.Initialize();
              }
          }
      }
  }



  var ApplicationGroup = BaseClass.Create();
  ApplicationGroup.prototype = {
      Initialize: function() {

      },
      IsGroupAvailable: function(groupid, clientid, requestedgroupid, callback) {
          $.ajax({
              url: "/ApplicationGroup/IsGroupAvailable",
              data: { groupid: groupid, clientid: clientid, requestedgroupid: requestedgroupid },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult.Result);
              },
              error: function() {
                  HandleException("Unable to lookup group Id");
              },
              type: "POST",
              dataType: "json"
          });
      },
      ApplicationGroupList: function(callback) {
          $.ajax({
              url: "/HR/ApplicationGroupList",
              data: {},
              success: function(htmlResult, message, xmlObject) {
                  callback(htmlResult);
              },
              error: function() {
                  HandleException("Unable to load Application Groups");
              },
              type: "POST",
              dataType: "html"
          });
      },
      UpdateApplicationListContext: function(filterOnName, filterOnType, callback) {
          $.ajax({
              url: "/HR/UpdateApplicationGroupListContext",
              data: { filterOnName: filterOnName, filterOnType: filterOnType },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult.Result);
              },
              error: function() {
                  HandleException("Unable to update Application Group List");
              },
              type: "POST",
              dataType: "json"
          });
      },
      ApplicationGroupListInformation: function(callback) {
          $.ajax({
              url: "/HR/ContextInformation",
              data: {},
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult.FilterOnName, jsonResult.FilterType, jsonResult.FilterTypeDescription);
              },
              error: function() {
                  HandleException("Unable to load Application Group List information");
              },
              type: "POST",
              dataType: "json"
          });
      },
      LoadApplicationGroupApplicants: function(callback) {
          $.ajax({
              url: "/HR/LoadApplicationGroupApplicants",
              data: {},
              success: function(htmlResult, message, xmlObject) {
                  callback(htmlResult);
              },
              error: function() {
                  HandleException("Unable to load applicants");
              },
              type: "POST",
              dataType: "html"
          });
      },
      UpdateCurrentApplication: function(applicationid, callback) {
          $.ajax({
              url: "/HR/UpdateApplication",
              data: { applicationId: applicationid },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult);
              },
              error: function() {
                  HandleException("Unable to update application");
              },
              type: "POST",
              dataType: "json"
          });
      },
      DeleteApplications: function(applicants, callback) {
          $.ajax({
              url: "/HR/DeleteApplications",
              data: { applicants: applicants },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult);
              },
              error: function() {
                  HandleException("Unable to delete applications");
              },
              type: "POST",
              dataType: "json"
          });
      },
      ArchiveApplications: function(applicants, callback) {
          $.ajax({
              url: "/HR/ArchiveApplications",
              data: { applicants: applicants },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult);
              },
              error: function() {
                  HandleException("Unable to archive applications");
              },
              type: "POST",
              dataType: "json"
          });
      },
      UpdateGroupDetailStatus: function(status, callback) {
          $.ajax({
              url: "/HR/UpdateGroupDetailStatus",
              data: { status: status },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult);
              },
              error: function() {
                  HandleException("Unable to update status");
              },
              type: "POST",
              dataType: "json"
          });
      },
      LoadGeneratePacketOptions: function(callback) {
          $.ajax({
              url: "/HR/LoadGeneratePacketOptions",
              data: {},
              success: function(htmlResult, message, xmlObject) {
                  callback(htmlResult);
              },
              error: function() {
                  HandleException("Unable to load packet options");
              },
              type: "POST",
              dataType: "html"
          });
      },
      GeneratePacket: function(applicants, fileOption, existingPacketId, callback) {
          $.ajax({
              url: "/HR/GeneratePacket",
              data: { applicants: applicants, packetFileMode: fileOption, existingPacketId: existingPacketId },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult);
              },
              error: function() {
                  HandleException("Unable to generate packet");
              },
              type: "POST",
              dataType: "json"
          });
      },
      DeleteApplicants: function(applicants, callback) {
          $.ajax({
              url: "/HR/DeleteApplicants",
              data: { applicants: applicants },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult);
              },
              error: function() {
                  HandleException("Unable to delete applicants");
              },
              type: "POST",
              dataType: "json"
          });
      },
      TerminateApplicants: function(applicants, callback) {
          $.ajax({
              url: "/HR/TerminateApplicants",
              data: { applicants: applicants },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult);
              },
              error: function() {
                  HandleException("Unable to terminate applicants");
              },
              type: "POST",
              dataType: "json"
          });
      },
      DeleteGroup: function(groupId, callback) {
          $.ajax({
              url: "/HR/DeleteGroup",
              data: { groupId: groupId },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult);
              },
              error: function() {
                  HandleException("Unable to delete group");
              },
              type: "POST",
              dataType: "json"
          });
      },
      ToggleTerminated: function(applicantId, terminated, callback) {
          $.ajax({
              url: "/HR/ToggleTerminated",
              data: { applicantId: applicantId, terminated: terminated },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult);
              },
              error: function() {
                  HandleException("Unable to toggle termination");
              },
              type: "POST",
              dataType: "json"
          });
      },
      UnarchiveApplication: function(universalId, formId, callback) {
          $.ajax({
              url: "/HR/UnarchiveForm",
              data: { universalForm: universalId, formId: formId },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult);
              },
              error: function() {
                  HandleException("Unable to unarchive application");
              },
              type: "POST",
              dataType: "json"
          });
      },
      LoadManageLinks: function(callback) {
          callback("");
      }
  }

  var FormPacketQueue = BaseClass.Create();
  FormPacketQueue.prototype = {
      Initialize: function() {

      },
      Delete: function(packetid, callback) {
          $.ajax({
              url: "/HR/DeletePacket",
              data: { packetId: packetid },
              success: function(jsonResult, message, xmlObject) {
                  callback(jsonResult);
              },
              error: function() {
                  HandleException("Unable to delete packet");
              },
              type: "POST",
              dataType: "json"
          });
      },
      LoadByApplication: function(callback) {
          $.ajax({
              url: "/HR/LoadPackets",
              data: {},
              success: function(htmlResult, message, xmlObject) {
                  callback(htmlResult);
              },
              error: function() {
                  //HandleException("Unable to load packets");
              },
              type: "POST",
              dataType: "html"
          });
      }
  }      
