﻿var months = new Array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь');
function relPosX(which) { var elem = document.getElementById(which); var pos = elem.offsetLeft; while (elem.offsetParent != null) { elem = elem.offsetParent; pos += elem.offsetLeft; if (elem.tagName == 'BODY') break; } return pos; }
function relPosY(which) { var elem = document.getElementById(which); var pos = elem.offsetTop; while (elem.offsetParent != null) { elem = elem.offsetParent; pos += elem.offsetTop; if (elem.tagName == 'BODY') break; } return pos; }
function showCalendar() { var calendar = document.getElementById('calendar'); var calendarImage = document.getElementById('calendarImage'); if (calendar && calendarImage) { calendar.style.left = relPosX('calendarImage') + 'px'; calendar.style.top = relPosY('calendarImage') + 'px'; calendar.style.visibility = 'visible'; } }
function hideCalendar() { var calendar = document.getElementById('calendar'); if (calendar) calendar.style.visibility = "hidden"; }
function updDates() { prvDate = new Date(curDate.getFullYear(), curDate.getMonth() - 1, 1); nxtDate = new Date(curDate.getFullYear(), curDate.getMonth() + 1, 1); }
function rusWDay(d) { var wD = d.getDay(); if (wD == 0) { wD = 7; } wD--; return wD; }
function makeCal(yr, mn, exceptions) {
    var Dt = new Date(yr, mn, 1);
    var mon = Dt.getMonth();
    var i;
    var calStr = '';
    var dateStr = '';
    var tmpStr = '';
    var now = new Date();
    var nextMonthStart;
    var showLink = false;

    calStr += '<table cellpadding=0 cellspacing=0 border=0 class="calendarheader"><tr><td>';
    if (exceptions.indexOf('.p.') != -1) calStr += '<a href="' + url + '" onclick="move2past();return false;"><img src="/images2/icon-calendar-left.gif" height=9 width=18 border=0></a>'; else calStr += '<img src="/images/dot.gif" height=9 width=18 border=0>';
    calStr += '</td><td style="text-align:center;width:96px;vertical-align:middle"><b>' + months[mon] + '&nbsp;' + Dt.getFullYear() + '</b></td><td>';
    if (exceptions.indexOf('.n.') != -1) calStr += '<a href="' + url + '" onclick="move2future();return false;"><img src="/images2/icon-calendar-right.gif" height=9 width=18 border=0></a>'; else calStr += '<img src="/images/dot.gif" height=9 width=18 border=0>';
    calStr += '</td></tr></table>';

    calStr += '<table border=0 cellspacing=0 cellpadding=0 class=calendar style="width:154px;margin:2px 6px 2px 0px">';
    calStr += '<tr><td>Пн</td><td>Вт</td><td>Ср</td><td>Чт</td><td>Пт</td><td style="color:red">Сб</td><td style="color:red">Вс</td></tr>';

    while (Dt.getMonth() == mon) {
        calStr += '<tr>';
        for (i = 0; i < 7; i++) {
            calStr += '<td>';
            showLink = false;
            if (rusWDay(Dt) > 4) showLink = (exceptions.indexOf('.' + Dt.getDate() + '.') != -1);
            else showLink = (exceptions.indexOf('.' + Dt.getDate() + '.') == -1);
            if ((rusWDay(Dt) == i) && (Dt.getMonth() == mon)) {
                if (showLink) {
                    dateStr = '';
                    tmpStr = Dt.getFullYear() + '/';
                    dateStr += tmpStr;
                    tmpStr = '0' + (Dt.getMonth() + 1);
                    tmpStr = tmpStr.substring(tmpStr.length - 2) + '/';
                    dateStr += tmpStr;
                    tmpStr = '0' + Dt.getDate();
                    tmpStr = tmpStr.substring(tmpStr.length - 2);
                    dateStr += tmpStr + '/';
                    if (url.substr(url.length - 1) != "/") calStr += '<a href="' + url + '/' + dateStr + '">';
                    else calStr += '<a href="' + url + dateStr + '">';
                    calStr += '<b>';
                    calStr += Dt.getDate();
                    calStr += '</b>';
                    calStr += '</a>';
                }
                else {
                    calStr += Dt.getDate();
                }
                Dt.setDate(Dt.getDate() + 1);
            }
            calStr += '</td>';
        }
        calStr += '</tr>';
    }
    calStr += '</table>';
    return calStr;
}
function getCalendar(yr, mn, proc) { AL.WebServices.DatesOfDocs.GetDocsDates(fid, yr, mn, proc); }

function updCurr(result, eventArgs) {
    curCal = makeCal(curDate.getFullYear(), curDate.getMonth(), result); divCal.innerHTML = curCal;
    if (result.indexOf('.p.') != -1) getCalendar(prvDate.getFullYear(), prvDate.getMonth() + 1, updPrev);
    if (result.indexOf('.n.') != -1) getCalendar(nxtDate.getFullYear(), nxtDate.getMonth() + 1, updNext);
}

function updPrev(result, eventArgs) { prvCal = makeCal(prvDate.getFullYear(), prvDate.getMonth(), result); }
function updNext(result, eventArgs) { nxtCal = makeCal(nxtDate.getFullYear(), nxtDate.getMonth(), result); }

function move2past() {
    nxtCal = curCal;
    curCal = prvCal; divCal.innerHTML = curCal;
    curDate = new Date(prvDate.getFullYear(), prvDate.getMonth(), prvDate.getDate()); updDates();
    prvCal = makeCal(prvDate.getFullYear(), prvDate.getMonth(), '');
    getCalendar(prvDate.getFullYear(), prvDate.getMonth() + 1, updPrev);
}
function move2future() {
    prvCal = curCal;
    curCal = nxtCal; divCal.innerHTML = curCal;
    curDate = new Date(nxtDate.getFullYear(), nxtDate.getMonth(), nxtDate.getDate()); updDates();
    nxtCal = makeCal(nxtDate.getFullYear(), nxtDate.getMonth(), '');
    getCalendar(nxtDate.getFullYear(), nxtDate.getMonth() + 1, updNext);
}
