﻿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="" 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="" 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&&(Dt<=now)) {
                    calStr += '<a href="" onclick="hideCalendar();changeQDate(new Date('+Dt.getFullYear()+','+Dt.getMonth()+','+Dt.getDate()+'));return false;">';
					calStr += '<b>'+Dt.getDate()+'</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) {
	getDocsDates(yr, mn, proc);
}

function getDocsDates(yr,mn,proc)
{
	mn--;
	var i,day;
	var res='.p.';
	var now=new Date();
//	now.setMonth(now.getMonth()+1);
//	now.setDate(0);
	var asked=new Date(yr,mn,1);
	var next=new Date(yr,mn+1,1);
	var daysInMonth=new Date(yr,mn+1,0);
	daysInMonth=daysInMonth.getDate();
	if(next<now)res+='n.';
	//debugger;
	for(i=1;i<=daysInMonth;i++)
	{
		day=(new Date(asked.setDate(i))).getDay();
		if(day==0)day=7;
		if(day>5)res+=i+'.';
	}
	res+=yr+'/'+mn+'.';
	//alert(res);
	proc(res);
}

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);
}

