﻿//для отображения тикующих часов 
var isOnFocus;
var divNewDate;
var divNewTime;
var valDate;
var valTime;
var hours;
var minutes;
var secs;
var myRequest;
var getData;
var timeOutToUpdate;
var tickTimeInterval;
var servak;
var timeToUpdate;
var divPageBack;
var secondTime;

function getById(id) {
    try {
        return document.getElementById(id);
    } catch (e) { showError(); }
}

function UpdateTime() {
    try {
        if (isOnFocus == 1) sendRequest();
        else { timeToUpdate = 1; showError(); } //divNewTime.style.visibility = "hidden"; }
    } catch (e) { showError(); }
}

function StartUpdateTime(url) {
    try {
        secondTime = 0;
        try {myRequest = new window.XMLHttpRequest();}
        catch(e) { try { myRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { myRequest = new ActiveXObject("Microsoft.XMLHTTP"); } }

        divNewDate = getById('newDate');
        divNewTime = getById('newTime');

        if (!url == "") servak = "?ASID=" + url;
        else servak = "";

        $('#page-back').mouseenter(function() {
            isOnFocus = 1;
            if (timeToUpdate == 1) {
                sendRequest();
                timeToUpdate = 0;
            }
            //divNewTime.style.visibility = "visible";
        }).mouseleave(function() {
            isOnFocus = 0;
        });

        sendRequest();
        //UpdateTime();
    } catch (e) { showError(); }
}

function TickTime() {
    try {
        secs = secs + 1;
        if (secs >= 60) {
            secs = 0;
            minutes = minutes + 1;
            if (minutes >= 60) {
                minutes = 0;
                hours = hours + 1;
                if (hours >= 24) {
                    hours = 0;
                    sendRequest();
                }
            }
        }
        divNewTime.innerHTML = addHole(hours) + ':' + addHole(minutes) + ':' + addHole(secs);
    } catch (e) { showError(); }
}

function addHole(num) {
    try {
        return parseInt(num) > 9 ? num : '0' + num.toString();
    } catch (e) { showError(); }
}


function sendRequest() {
    var ret = 0;
    try {
        var sendstring = "/HttpHandlers/GetDatetime44.ashx" + servak;
        myRequest.open("POST", sendstring, true);
        myRequest.onreadystatechange = getResponse;
        myRequest.send(null);
        ret = 1;
    } catch (e) { showError(); }
    return ret;
}

function getResponse() {
    try {
        var ret = 0;
        if (myRequest.readyState == 4) {
            if (myRequest.status == 200) {
                timeToUpdate = 0;

                var responseText = myRequest.responseText;
                if (responseText.length < 20) {
                    if (!secondTime == 1) {
                        window.clearInterval(tickTimeInterval);
                        tickTimeInterval = window.setInterval('TickTime()', 1000);
                        secondTime = 1;
                    }

                    var divError = getById('timeError');
                    divError.innerHTML = "";

                    var t = responseText.split(" ");
                    valDate = t[0];
                    valTime = t[1];
                    t = valTime.split(":");
                    hours = parseInt(t[0], 10);
                    minutes = parseInt(t[1], 10);
                    secs = parseInt(t[2], 10);


                    if (valTime.length == 7) valTime = "0" + valTime;
                    divNewDate.innerHTML = valDate;
                    divNewTime.innerHTML = valTime;
                    ret = 1;
                }
                else { showError(); }
            }
            else { showError(); }
            
            window.clearTimeout(timeOutToUpdate);
            //timeOutToUpdate = window.setTimeout('UpdateTime()', 60 * 1000);
			timeOutToUpdate = window.setTimeout('UpdateTime()', 300000);
        }
        return ret;
    } catch (e) { showError(); }
}

function showError() {
    try {
        var divError = getById('timeError');
        divError.innerHTML = "*";
        //divNewTime.innerHTML = "";
    } catch(e) { }
}
