﻿var differenceTime;
var timerReset; 
var timerCheckForResetEnd;
    
//Function called on body load of master pages.
function StartCountToReset()
{

    var clientTime = new Date();
    var clientHour = clientTime.getHours();
    var clientMinute = clientTime.getMinutes();
      
    //serverHour = 2;
    //serverMinute = 0;
    //clientHour = 1;
    //clientMinute = 15;

      differenceTime = (parseInt(serverHour)*60 + parseInt(serverMinute)) - (clientHour*60 + clientMinute)
      if(differenceTime < 0)
      {
        differenceTime += 24*60;
      }

    UpdateResetLabel();
}
 
//Function executed on every 30 seconds in order to update the label (lblReset)
//in which is displayed the time left to web site's resetting.
function UpdateResetLabel()
{
      var arrHours = resetHours.split(",");
      var currentClientTime = new Date();
      
       var currentServerTime = (currentClientTime.getHours()*60 + currentClientTime.getMinutes()) + differenceTime;
       //var currentServerTime = (1*60 + 15) + differenceTime;
       if(currentServerTime > 24*60)
       {
            currentServerTime -= 24*60;
       }
      
      var currentServerHour = 0;
      var currentServerMinutes = 0;
      if (currentServerTime > 0)
      {
           currentServerHour = Math.floor(currentServerTime/60);
           currentServerMinutes = currentServerTime%60;
      }
      else if (currentServerTime < 0)
      {
           currentServerHour = Math.floor(currentServerTime/60);
           currentServerMinutes = currentServerTime%60;
      }
    
      var nextResetHour;
      for (i=0; i<arrHours.length; i++)
      {
            if ((parseInt(arrHours[i]) > currentServerHour) || (parseInt(arrHours[i]) == currentServerHour && currentServerMinutes == 0))
            {
                nextResetHour = arrHours[i];
                break;
            }
      }
      
      var hoursLeft;
      var minutesLeft;
      var minutesLeftText = "";
      
      if (currentServerMinutes == 0)
      {
        hoursLeft = nextResetHour - currentServerHour;
        minutesLeft = 0;
        minutesLeftText = minutesLeft + " minutes";
      }
      else if (currentServerMinutes == 59)
      {
        hoursLeft = nextResetHour - currentServerHour - 1;
        minutesLeft = 1;
        minutesLeftText = minutesLeft + " minute";
      }
      else
      {
        hoursLeft = nextResetHour - currentServerHour - 1;
        minutesLeft = 60 - currentServerMinutes;
        minutesLeftText = minutesLeft + " minutes";
      }
      
      var leftTime = "";
      if (hoursLeft != 0)
      {
        if (hoursLeft == 1)
        {
            leftTime = "1 hour " + minutesLeftText;
        }
        else
        {
            leftTime = hoursLeft + " hours " + minutesLeftText;
        }
      }
      else
      {
            leftTime = minutesLeftText;
      }

      if(hoursLeft == 0 && minutesLeft == 0)
      //if (currentServerHour == 14 && currentServerMinutes == 28)
      {
        //Reset on web site starts.
        clearTimeout(timerReset);
        
        document.location.href= serverURL + "Admin/ResetInfo.aspx"; //Display ResetInfo.aspx page.
        return;
      }  

      var lblReset = document.getElementById("lblReset");
      if (lblReset != null)
      {
        lblReset.innerHTML = leftTime;
      }
      timerReset = setTimeout("UpdateResetLabel()",30000); //Update on every 30 seconds.
}

//Function called from Reset.aspx page.
function WaitForResetEnd()
{
    var oXHP = zXmlHttp.createRequest();
    oXHP.open("get","../Default.aspx",false);
    oXHP.send(null);    

    if (oXHP.status == 200)
    {
        if (timerCheckForResetEnd != null)
        {
            clearTimeout(timerCheckForResetEnd);
        }
        document.location.href="../Default.aspx";
    }
    else if (oXHP.status == 404)
    {
        timerCheckForResetEnd = setTimeout("WaitForResetEnd()",60000); //Update on every 1 minute.
    }
}
