﻿// JScript File
function DrawCalendar(ControlName, nDaysCount, nDayOfWeek, nNewsId, nYear, nMonth, sType, sView, sQueryString){
    var pContainer = document.getElementById(ControlName + "Container");
    var pPosition = document.getElementById(ControlName + "Position");

    var pCalendarTable = document.getElementById(ControlName + "_Calendar" );
    nCellsCount = nDaysCount + nDayOfWeek - 1;
    nLinesCount = (nCellsCount - nCellsCount%7)/7 + 1;
    nCurrentDay = 0;
    for(i = 1; i <= 6; i++){
        var pLine = document.getElementById(ControlName + "_" + "line" + i);
        if((nCurrentDay < nDaysCount) && (pLine.style.display == 'none')){
            if(navigator.appName == 'Microsoft Internet Explorer')
                pLine.style.display = 'inline';
            else
                pLine.style.display = 'table-row';
        }
        if((nCurrentDay > nDaysCount) && 
        (pLine.style.display == 'table-row' || pLine.style.display == 'inline' || pLine.style.display == '')){
            pLine.style.display = 'none';
        }
        for(j = 1; j <= 7; j++){
            if((nCurrentDay == 0 && j < nDayOfWeek) || (nCurrentDay >= nDaysCount)){
                var pCell = document.getElementById(ControlName + "_cell" + i + "_" + j);
                pCell.innerHTML = "";
                if(nCurrentDay >= nDaysCount){
                    nCurrentDay++;
                }
            }
            else{
                nCurrentDay++;
                var pCell = document.getElementById(ControlName + "_cell" + i + "_" + j);
                var pNews = document.getElementById(ControlName + "_" + nYear+ "_" + nMonth + "_" + nCurrentDay);
                if(pNews == null)
                    pCell.innerHTML = nCurrentDay;
                else
                    if(sView == 'page'){
                        if(pContainer && pPosition){
                            str = sQueryString.replace('{0}', nYear).replace('{1}', nMonth);
                            str = str + '&' + pContainer.value + "y" + pPosition.value + "=" + nYear;
                            str = str + '&' + pContainer.value + "m" + pPosition.value + "=" + nMonth;
                            str = str + '&' + pContainer.value + "d" + pPosition.value + "=" + nCurrentDay;
                            pCell.innerHTML = "<a class='headerS' href='" + str + "'>" + nCurrentDay + "</a>";
                        }
                    }
                    else
                        pCell.innerHTML = "<a class='headerS' target='viewer' href='viewer.aspx?obj=" + sType + "&ri=" + nNewsId  + "&y=" + nYear + "&m=" + nMonth + "&d=" + nCurrentDay + "'>" + nCurrentDay + "</a>";
            }
        }
    }
}

function DaysInMonth(nMonth, nYear){
    switch(nMonth){
        case 1:
            return 31;
        case 2:
            if(nYear % 4 == 0)
                return 29;
            else
                return 28;
        case 3:
            return 31;
        case 4:
            return 30;
        case 5:
            return 31;
        case 6:
            return 30;
        case 7:
            return 31;
        case 8:
            return 31;
        case 9:
            return 30;
        case 10:
            return 31;
        case 11:
            return 30;
        case 12:
            return 31;
    }
}

function MonthName(nMonth){
    switch(nMonth){
        case 1:
            return g_sLang == 'rus' ? "Январь" : "January";
        case 2:
            return g_sLang == 'rus' ? "Февраль" : "February";
        case 3:
            return g_sLang == 'rus' ? "Март" : "March";
        case 4:
            return g_sLang == 'rus' ? "Апрель" : "April";
        case 5:
            return g_sLang == 'rus' ? "Май" : "May";
        case 6:
            return g_sLang == 'rus' ? "Июнь" : "June";
        case 7:
            return g_sLang == 'rus' ? "Июль" : "July";
        case 8:
            return g_sLang == 'rus' ? "Август" : "August";
        case 9:
            return g_sLang == 'rus' ? "Сентябрь" : "September";
        case 10:
            return g_sLang == 'rus' ? "Октябрь" : "October";
        case 11:
            return g_sLang == 'rus' ? "Ноябрь" : "November";
        case 12:
            return g_sLang == 'rus' ? "Декабрь" : "December";
    }
}

function PrevMonth(ControlName, nMinYear, nMaxYear, nNewsId, sType, sView, sQueryString){
    pMonth = document.getElementById(ControlName + "_month");
    nMonth = parseInt(pMonth.value);
    pYear = document.getElementById(ControlName + "_year");
    nYear = parseInt(pYear.value);
    pDayOfWeek = document.getElementById(ControlName + "_day");
    nDayOfWeek = parseInt(pDayOfWeek.value);
    
    if(nMonth == 1){
        nMonth = 12;
        nYear = nYear - 1;
    }
    else
        nMonth = nMonth - 1;
    nDaysInMonth = DaysInMonth(nMonth, nYear);
    nDayOfWeek = nDayOfWeek - (nDaysInMonth % 7);
    if(nDayOfWeek <= 0)
        nDayOfWeek = 7 + nDayOfWeek;
    DrawCalendar(ControlName, nDaysInMonth, nDayOfWeek, nNewsId, nYear, nMonth, sType, sView, sQueryString);
    
    pMonth.value = nMonth;
    pYear.value = nYear;
    pDayOfWeek.value = nDayOfWeek;
    
    pMonthName = document.getElementById(ControlName + "_month_name");
    pMonthName.innerHTML = "<b>" + MonthName(nMonth) + "</b>";
    pYearName = document.getElementById(ControlName + "_year_name");
    pYearName.innerHTML = "<b>" + nYear + (g_sLang == 'rus' ? " год" : " year") + "</b>";
    
    if(nYear == nMinYear){
        pImg = document.getElementById(ControlName + "_prev_year");
        pImg.style.display = "none";
        pImg = document.getElementById(ControlName + "_prev_year_empty");
        pImg.style.display = "inline";
        if(nMonth == 1){
            pImg = document.getElementById(ControlName + "_prev_month");
            pImg.style.display = "none";
            pImg = document.getElementById(ControlName + "_prev_month_empty");
            pImg.style.display = "inline";
        }
    }
    if(nYear == parseInt(nMaxYear) - 1){
        pImg = document.getElementById(ControlName + "_next_year");
        pImg.style.display = "inline";
        pImg = document.getElementById(ControlName + "_next_year_empty");
        pImg.style.display = "none";
    }
    if(nMonth == 11){
        pImg = document.getElementById(ControlName + "_next_month");
        pImg.style.display = "inline";
        pImg = document.getElementById(ControlName + "_next_month_empty");
        pImg.style.display = "none";
    }

}

function NextMonth(ControlName, nMinYear, nMaxYear, nNewsId, sType, sView, sQueryString){
    pMonth = document.getElementById(ControlName + "_month");
    nMonth = parseInt(pMonth.value);
    pYear = document.getElementById(ControlName + "_year");
    nYear = parseInt(pYear.value);
    pDayOfWeek = document.getElementById(ControlName + "_day");
    nDayOfWeek = parseInt(pDayOfWeek.value);
    
    nDaysInMonth = DaysInMonth(nMonth, nYear);
    if(nMonth == 12){
        nMonth = 1;
        nYear = nYear + 1;
    }
    else
        nMonth = nMonth + 1;
    nDayOfWeek = nDayOfWeek + (nDaysInMonth % 7);
    if(nDayOfWeek > 7)
        nDayOfWeek = nDayOfWeek - 7;
    nDaysInMonth = DaysInMonth(nMonth, nYear);
    DrawCalendar(ControlName, nDaysInMonth, nDayOfWeek, nNewsId, nYear, nMonth, sType, sView, sQueryString);

    pMonth.value = nMonth;
    pYear.value = nYear;
    pDayOfWeek.value = nDayOfWeek;
    
    pMonthName = document.getElementById(ControlName + "_month_name");
    pMonthName.innerHTML = "<b>" + MonthName(nMonth) + "</b>";
    pYearName = document.getElementById(ControlName + "_year_name");
    pYearName.innerHTML = "<b>" + nYear + (g_sLang == 'rus' ? " год" : " year") + "</b>";
    
    if(nYear == nMaxYear){
        pImg = document.getElementById(ControlName + "_next_year");
        pImg.style.display = "none";
        pImg = document.getElementById(ControlName + "_next_year_empty");
        pImg.style.display = "inline";
        if(nMonth == 12){
            pImg = document.getElementById(ControlName + "_next_month");
            pImg.style.display = "none";
            pImg = document.getElementById(ControlName + "_next_month_empty");
            pImg.style.display = "inline";
        }
    }
    if(nYear == parseInt(nMinYear) + 1){
        pImg = document.getElementById(ControlName + "_prev_year");
        pImg.style.display = "inline";
        pImg = document.getElementById(ControlName + "_prev_year_empty");
        pImg.style.display = "none";
    }
    if(nMonth == 2){
        pImg = document.getElementById(ControlName + "_prev_month");
        pImg.style.display = "inline";
        pImg = document.getElementById(ControlName + "_prev_month_empty");
        pImg.style.display = "none";
    }

}

function PrevYear(ControlName, nMinYear, nMaxYear, nNewsId, sType, sView, sQueryString){
    pMonth = document.getElementById(ControlName + "_month");
    nMonth = parseInt(pMonth.value);
    pYear = document.getElementById(ControlName + "_year");
    nYear = parseInt(pYear.value);
    pDayOfWeek = document.getElementById(ControlName + "_day");
    nDayOfWeek = parseInt(pDayOfWeek.value);
    
    nYear = nYear - 1;
    nDaysInMonth = DaysInMonth(nMonth, nYear);
    if(nYear%4 == 0 && nMonth < 3 || (nYear + 1)%4 == 0 && nMonth > 2)
        nDayOfWeek = nDayOfWeek - 2;
    else
        nDayOfWeek = nDayOfWeek - 1;       
    if(nDayOfWeek <= 0)
        nDayOfWeek = 7 + nDayOfWeek;
    DrawCalendar(ControlName, nDaysInMonth, nDayOfWeek, nNewsId, nYear, nMonth, sType, sView, sQueryString);
    
    pMonth.value = nMonth;
    pYear.value = nYear;
    pDayOfWeek.value = nDayOfWeek;
    
    pMonthName = document.getElementById(ControlName + "_month_name");
    pMonthName.innerHTML = "<b>" + MonthName(nMonth) + "</b>";
    pYearName = document.getElementById(ControlName + "_year_name");
    pYearName.innerHTML = "<b>" + nYear + " год</b>";
    
    if(nYear == nMinYear){
        pImg = document.getElementById(ControlName + "_prev_year");
        pImg.style.display = "none";
        pImg = document.getElementById(ControlName + "_prev_year_empty");
        pImg.style.display = "inline";
        if(nMonth == 1){
            pImg = document.getElementById(ControlName + "_prev_month");
            pImg.style.display = "none";
            pImg = document.getElementById(ControlName + "_prev_month_empty");
            pImg.style.display = "inline";
        }
    }
    if(nYear == parseInt(nMaxYear) - 1){
        pImg = document.getElementById(ControlName + "_next_year");
        pImg.style.display = "inline";
        pImg = document.getElementById(ControlName + "_next_year_empty");
        pImg.style.display = "none";
        if(nMonth == 12){
            pImg = document.getElementById(ControlName + "_next_month");
            pImg.style.display = "inline";
            pImg = document.getElementById(ControlName + "_next_month_empty");
            pImg.style.display = "none";
        }
    }
}

function NextYear(ControlName, nMinYear, nMaxYear, nNewsId, sType, sView, sQueryString){
    pMonth = document.getElementById(ControlName + "_month");
    nMonth = parseInt(pMonth.value);
    pYear = document.getElementById(ControlName + "_year");
    nYear = parseInt(pYear.value);
    pDayOfWeek = document.getElementById(ControlName + "_day");
    nDayOfWeek = parseInt(pDayOfWeek.value);
    
    nYear = nYear + 1;
    nDaysInMonth = DaysInMonth(nMonth, nYear);
    if((nYear - 1)%4 == 0 && nMonth < 3 || nYear%4 == 0 && nMonth > 2)
        nDayOfWeek = nDayOfWeek + 2;
    else
        nDayOfWeek = nDayOfWeek + 1;       
    if(nDayOfWeek > 7)
        nDayOfWeek = nDayOfWeek - 7;
    DrawCalendar(ControlName, nDaysInMonth, nDayOfWeek, nNewsId, nYear, nMonth, sType, sView, sQueryString);
    
    pMonth.value = nMonth;
    pYear.value = nYear;
    pDayOfWeek.value = nDayOfWeek;
    
    pMonthName = document.getElementById(ControlName + "_month_name");
    pMonthName.innerHTML = "<b>" + MonthName(nMonth) + "</b>";
    pYearName = document.getElementById(ControlName + "_year_name");
    pYearName.innerHTML = "<b>" + nYear + " год</b>";
    
    if(nYear == nMaxYear){
        pImg = document.getElementById(ControlName + "_next_year");
        pImg.style.display = "none";
        pImg = document.getElementById(ControlName + "_next_year_empty");
        pImg.style.display = "inline";
        if(nMonth == 12){
            pImg = document.getElementById(ControlName + "_next_month");
            pImg.style.display = "none";
            pImg = document.getElementById(ControlName + "_next_month_empty");
            pImg.style.display = "inline";
        }
    }
    if(nYear == parseInt(nMinYear) + 1){
        pImg = document.getElementById(ControlName + "_prev_year");
        pImg.style.display = "inline";
        pImg = document.getElementById(ControlName + "_prev_year_empty");
        pImg.style.display = "none";
        if(nMonth == 1){
            pImg = document.getElementById(ControlName + "_prev_month");
            pImg.style.display = "inline";
            pImg = document.getElementById(ControlName + "_prev_month_empty");
            pImg.style.display = "none";
        }
    }
}

