///////////////////////////////////////////
// Calendar v1.0.0                       //
// (c) 2001 by Flying/DR/HRz             //
///////////////////////////////////////////
// Contact me: flying@dom.natm.ru        //
// if you want to use this script        //
// or need something else for your site. //
///////////////////////////////////////////

var months = new Array('january','february','march','april','may','june','july','august','september','october','november','december');
var dayNames = new Array('mo','tu','we','th','fr','sa','su');
var sundayFirst = true;
var charSet = 'iso-8859-1';
var agentcss = '+agent+';
var calnrimg ='+kalenderimg+';
var curMonth = 1;
var curYear = 2001;

var NS4 = false;
var userFunc = null;
var win = null;
// Function returns an array with month and year of previons month
function getPrevMonth(month, year)
{
    return((month==1)?new Array(12,year-1):new Array(month-1,year));
};

// Function returns an array with month and year of next month
function getNextMonth(month, year)
{
    return((month==12)?new Array(1,year+1):new Array(month+1,year));
};

// Function returns number of days within given month and year
function getDaysNum(month, year)
{
    var numDays = new Array(31,0,31,30,31,30,31,31,30,31,30,31);
    if (numDays[month-1]!=0)
        return(numDays[month-1]);
    else
        return((isLeapYear(year))?29:28);
};

// Function returns TRUE if given year ia leap, FALSE otherwise
function isLeapYear(year)
{
    return(((year % 4)==0) && !(((year % 100)==0) && ((year % 400)!=0)));
};

// Display calendar table for current month and year
function displayCalendar()
{
// Create array of days, being displayed for current month
    var days = new Array();
    var curDay = 0;
    var date = new Date(curYear,curMonth-1,1);
    var fDay = date.getDay();
    if (!sundayFirst)
    {
        if (--fDay<0)
            fDay+=7;
        fDay = fDay % 7;
    };
    if (fDay!=0)
    {
        var pMonth = getPrevMonth(curMonth,curYear);
        var numDays = getDaysNum(pMonth[0],pMonth[1]);
        for (i=fDay;i>0;i--)
            days[curDay++] = numDays-i+1;
    };
    var numDays = getDaysNum(curMonth,curYear);
    for (i=1;i<=numDays;i++)
        days[curDay++] = i;
    var day = 1;
    while((curDay % 7)!=0)
        days[curDay++] = day++;

    // Create HTML code for diplaying calendar
    if (typeof(special_months) != "undefined" && typeof(special_months[curMonth-1]) == "string") momo = special_months[curMonth-1];
    else momo = months[curMonth-1];

    var html = '<html><head><title>calendar</title><meta http-equiv="Content-Type" content="text/html; charset='+charSet+'">\n';
    var font = 'font-family: Arial, Helvetica, sans-serif; font-size: 11px; font-weight: normal; text-decoration: none; text-align: center; ';
    if (!NS4)
        html = html+'<style type="text/css"><!-- .rahmen {margin: 3px 1px 1px;border: 2px solid #666666;}\n.nav {'+font+'color: #003399}\n .aDay {font-family: Arial, Helvetica, sans-serif;font-size: 11px;font-weight: bold;text-decoration: none;color: #000000}\n .day {font-size: 11px;font-weight: normal;color: #999999;text-decoration: line-through;}\n .month {'+font+
                    'color: #000000}\n .dayName {'+font+'color: #000000;background-color: ##ffffff;border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #999999;}\n .curDay {'+font+'color: #990000;border: 1px solid #990000;height: 15px;width: 20px;text-align: center;vertical-align: middle;}\n .tdmonth {font-family: Arial, Helvetica, sans-serif;font-size: 11px;font-weight: bold;color: #FFFFFF;letter-spacing: 2px;background-color: #808080;border-top-width: 1px;border-right-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-top-style: solid;border-right-style: solid;border-bottom-style: solid;border-left-style: solid;border-top-color: #000000;border-right-color: #FFFFFF;border-bottom-color: #000000;border-left-color: #FFFFFF;}\n .tdday {background-color: #e1e1e1;}\n .tdright {border: 1px solid #000000;background-color: #808080;}\n .tdleft {border: 1px solid #000000;background-color: #808080;}\n --></style>\n';
    html = html+'<link rel="stylesheet" type="text/css" href="'+agent+'/winglob.css" ></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">\n';
    html = html+'<div align="center"><table class="rahmen" width="95%" height="95%" border="0" cellspacing="0" cellpadding="'+((NS4)?1:2)+'" align="center">\n';
    html = html+'<tr ><td class="tdtop" height="22" align="center"><a href="#" class="textkopf" onClick="return(window.opener.prevMonth())"><img src="'+kalenderimg+'/prevMonth.gif" border="0"></a></td>'+
                '<td class="tdtop" colspan="5" align="center" nowrap><span class="textkopf">'+momo+' '+curYear+
                '</span></td><td class="tdtop"><a href="#" class="nav" onClick="return(window.opener.nextMonth())"><img src="'+kalenderimg+'/nextMonth.gif" border="0"></a></td></tr>\n';

    html = html+'<tr>\n';
    if (typeof(firstWeekDay)== "undefined") {
        var index = (sundayFirst)?6:0;
    } else {
        index = parseInt(firstWeekDay);
        index = (index>=0 && index <=6)?index:6;
    }
    for (var i=0;i<7;i++)
    {
        if (typeof(special_dayNames) != "undefined" && typeof(special_dayNames[index]) == "string") {
            html = html+'<td class="tdmi">'+special_dayNames[index]+'</td>\n';
        } else {
            html = html+'<td class="tdmi">'+dayNames[index]+'</td>\n';
        }
        index++;

        index = index % 7;
    };
    html = html+'</tr>\n';
    date = new Date();
    day = ((date.getMonth()==(curMonth-1)) && ((date.getFullYear()==curYear)))?date.getDate():-1;
    curDay = 0;
    var isCurMonth = false;
    while(curDay<days.length)
    {
        if ((curDay % 7)==0)
            html = html+'<tr>\n';
        if (days[curDay]==1)
            isCurMonth = !isCurMonth;
        dayHTML = ((days[curDay]==day) && (NS4))?"<font color=\"#FF0000\"><b>"+days[curDay]+"</b></font>":days[curDay];
        if (isCurMonth)
            html = html+'<td align="center"><a href="#" class="'+((days[curDay]==day)?'curDay':'aDay')+
                        '" onClick="return(window.opener.setDate('+days[curDay++]+'))">'+dayHTML+'</a></td>\n';
        else
            html = html+'<td align="center" class="day">'+days[curDay++]+'</td>\n';
        if ((curDay % 7)==0)
            html = html+'</tr>\n';
    };
    html = html+'</table></div>\n</body>\n</html>';
    win.document.open();
    win.document.write(html);
    win.document.close();
};

function prevMonth()
{
    var pMonth = getPrevMonth(curMonth,curYear);
    curMonth = pMonth[0];
    curYear = pMonth[1];
    displayCalendar();
    return(false);
};

function nextMonth()
{
    var nMonth = getNextMonth(curMonth,curYear);
    curMonth = nMonth[0];
    curYear = nMonth[1];
    displayCalendar();
    return(false);
};

function setDate(day)
{
    win.close();
    win = null;
    eval(userFunc+"("+day+","+curMonth+","+curYear+")");
    return(false);
};

// This function must be called to get calendar to work.
// At enter:
//   month        - default month (0..11) or NULL to use current month
//   year         - default year or NULL to use current year
//   callbackFunc - name of user function being called to provide selected date
//   winX         - X position of calendar window on screen (optional)
//   winY         - Y position of calendar window on screen (optional)
function getDate(month,year,callbackFunc)
{
    NS4 = ((navigator.appName.indexOf('Netscape')!=-1) && (parseInt(navigator.appVersion)==4));
    var date = new Date();
//    curMonth = (month)?parseInt(month):date.getMonth()+1;
//    curYear = (year)?parseInt(year):date.getFullYear();
    winX = (getDate.arguments[3])?"left="+getDate.arguments[3]+",":"";
    winY = (getDate.arguments[4])?"top="+getDate.arguments[4]+",":"";
    userFunc = callbackFunc;
    win = window.open("","","location=0,toolbar=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,"+winX+winY+"width=175,height=170");
    displayCalendar();
    return(false);
};