// =============================== //
// Popup Calendar                  //
// v1.1 - Mar 1, 2005              //
// ------------------------------- //
// Written by Lloyd Hassell        //
// Website: lloydhassell.com       //
// Email: lloydhassell@hotmail.com //
// =============================== //

// INITIALIZATION:

var popupCalendar = {}; // new Object();

// CONFIGURATION: 

popupCalendar.windowWidth = 230;
popupCalendar.windowHeight = 260;

//Inserted 
popupCalendar.windowTop = (screen.availHeight - popupCalendar.windowHeight) / 2;  
popupCalendar.windowLeft = (screen.availWidth  - popupCalendar.windowWidth) / 2;  
/*
alert(screen.availWidth +' '+ popupCalendar.windowWidth
+' ' +screen.availHeight + ' ' + popupCalendar.windowHeight
+' top ' + popupCalendar.windowTop + ' left '  +popupCalendar.windowLeft)
*/
//--------

popupCalendar.windowBgColor = '#FFFFFF';

popupCalendar.dayCellFontColor = '#000000';
popupCalendar.dayCellFontFace = 'verdana,arial';
popupCalendar.dayCellFontSize = 2;
popupCalendar.dayCellBgColor = '#FFFFFF';

popupCalendar.dateCellFontColor = '#000000';
popupCalendar.dateCellFontFace = 'verdana,arial';
popupCalendar.dateCellFontSize = 2;
popupCalendar.dateCellWeekdayBgColor = '#CCCCCC';
popupCalendar.dateCellWeekendBgColor = '#BBBBBB';
popupCalendar.dateCellTodayBgColor = '#FF0000';

popupCalendar.firstYear = 1970;
popupCalendar.lastYear = 2050;
popupCalendar.firstDayOfWeek = 0;

// MAIN:

popupCalendar.monthList = [];
popupCalendar.monthList.push(
   'January','February','March','April','May','June',
   'July','August','September','October','November','December');
popupCalendar.dayList = [];
popupCalendar.dayList.push(
   'Sunday','Monday','Tuesday','Wednesday',
   'Thursday','Friday','Saturday');

popupCalendar.isOpen = false;
//------------------------------

function writeCalendar(STARTYEAR,STARTMONTH) 
{
   var yearMonthStr;   
   if (arguments[2] != null) {
      yearMonthStr = arguments[2];
      STARTYEAR = parseInt(yearMonthStr.substring(0,yearMonthStr.indexOf(',')),10);
      STARTMONTH = parseInt(yearMonthStr.substring(yearMonthStr.indexOf(',') + 1),10);
   }
   popupCalendar.nextMonthMonth = STARTMONTH + 1;
   popupCalendar.nextMonthYear = STARTYEAR;
   if (popupCalendar.nextMonthMonth == 12) {
      popupCalendar.nextMonthMonth = 0;
      popupCalendar.nextMonthYear = STARTYEAR + 1;
   }
   popupCalendar.previousMonthMonth = STARTMONTH - 1;
   popupCalendar.previousMonthYear = STARTYEAR;
   if (popupCalendar.previousMonthMonth == -1) {
      popupCalendar.previousMonthMonth = 11;
      popupCalendar.previousMonthYear = STARTYEAR - 1;
   }
   
   var todayDateTime = new Date();
   var todayYear = todayDateTime.getFullYear();
   var todayMonth = todayDateTime.getMonth();
   var todayDate = todayDateTime.getDate();
   var calendarMonthDateTime = new Date(STARTYEAR,STARTMONTH);
   var calendarMonthStartDay = calendarMonthDateTime.getDay();
   var calendarMonthStartDayOffset = calendarMonthStartDay - popupCalendar.firstDayOfWeek;
   if (calendarMonthStartDayOffset < 0) 
     { calendarMonthStartDayOffset += 7; }
   
   var calendarMonthDays = 31;
   if (STARTMONTH == 3 || STARTMONTH == 5 || STARTMONTH == 8 || STARTMONTH == 10) 
     { calendarMonthDays = 30; }
   if (STARTMONTH == 1 && STARTYEAR % 4 == 0) 
     { calendarMonthDays = 29; }
   if (STARTMONTH == 1 && STARTYEAR % 4 != 0) 
      { calendarMonthDays = 28; }
   
   var dateCellText = [], dateCellPos;
   for (dateCellPos = 0; 
        dateCellPos < calendarMonthStartDayOffset; 
        dateCellPos++) 
     { dateCellText[dateCellPos] = ' '; }
   for (dateCellPos = calendarMonthStartDayOffset; 
        dateCellPos < calendarMonthDays + calendarMonthStartDayOffset; 
        dateCellPos++) 
     { dateCellText[dateCellPos] = dateCellPos - calendarMonthStartDayOffset + 1; }
   for (dateCellPos = calendarMonthStartDayOffset + calendarMonthDays; 
        dateCellPos < 42; 
        dateCellPos++) 
     { dateCellText[dateCellPos] = ' '; }
   
   var windowHtml = '<html><head><title>' + popupCalendar.monthList[STARTMONTH] + ' ' + STARTYEAR + '</title></head>\r'
                  + '<body bgcolor="' + popupCalendar.windowBgColor 
                  + '" link="' + popupCalendar.dateCellFontColor 
                  + '" vlink="' + popupCalendar.dateCellFontColor 
                  + '" alink="' + popupCalendar.dateCellFontColor 
                  + '" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">\r'
                  + '<form>\r'
                  + '<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">'
                  + '<tr><td align="center" valign="middle">\r'
                  + '<table cellpadding="3" cellspacing="0" border="0"><tr>\r'
                  + '<td valign="middle"><input type="button" value=" < "'
                  + ' onClick="javascript:window.opener.writeCalendar(' 
                  + popupCalendar.previousMonthYear + ',' + popupCalendar.previousMonthMonth + ');"></td>\r'
                  + '<td valign="middle"><select onChange="javascript:window.opener.writeCalendar(null,null,this.value);">\r';
   
   var monthOptionLength = (popupCalendar.lastYear - popupCalendar.firstYear + 1) * 12;
   for (var monthOption = 0; monthOption < monthOptionLength; monthOption++) {
      var optionYear = Math.floor(monthOption / 12) + popupCalendar.firstYear;
      var optionMonth = monthOption % 12;
      windowHtml += (optionYear == STARTYEAR && optionMonth == STARTMONTH) ? '<option selected ' : '<option ';
      windowHtml += 'value="' + optionYear + ',' 
                 + optionMonth + '">' + popupCalendar.monthList[optionMonth] 
                 + ' ' + optionYear + '</option>\r';
      } // end for
   windowHtml += '</select></td>\r'
              +  '<td valign="middle"><input type="button" value=" > "'
              +  ' onClick="javascript:window.opener.writeCalendar(' + popupCalendar.nextMonthYear 
              +  ',' + popupCalendar.nextMonthMonth + ');"></td>\r'
              +  '</tr></table>\r'
              +  '<table cellpadding="5" cellspacing="1" border="0">\r'
              +  '<tr>\r';
   
   var posLoop, dayLoop;
   for (posLoop = popupCalendar.firstDayOfWeek; 
        posLoop < 7 + popupCalendar.firstDayOfWeek; 
        posLoop++) {
     dayLoop = posLoop;
     if (dayLoop > 6) 
       { dayLoop -= 7; }
     windowHtml += '<td bgcolor="' + popupCalendar.dayCellBgColor 
                + '" align="center" valign="middle"><font color="' + popupCalendar.dayCellFontColor 
                + '" face="' + popupCalendar.dayCellFontFace + '" size="' 
                + popupCalendar.dayCellFontSize + '"><b>' 
                + popupCalendar.dayList[dayLoop].charAt(0) 
                + '</b></font></td>\r';
   } // end for
   
   windowHtml += '</tr>\r';
   for (posLoop = 0; posLoop < 42; posLoop++) {
     if (posLoop % 7 == 0) 
       { windowHtml += '<tr>\r'; }
     
     var cellBgColor = posLoop % 7 + popupCalendar.firstDayOfWeek;
     if (cellBgColor > 6) 
       { cellBgColor -= 7; }
     cellBgColor = (cellBgColor == 0 || cellBgColor == 6) 
                 ? popupCalendar.dateCellWeekendBgColor 
                 : popupCalendar.dateCellWeekdayBgColor;
     
     if (   todayYear == STARTYEAR && todayMonth == STARTMONTH 
         && todayDate == dateCellText[posLoop]) 
       { cellBgColor = popupCalendar.dateCellTodayBgColor; }
     
     windowHtml += '<td bgcolor="' + cellBgColor + '" align="center" valign="middle">'
                +  '<font color="' + popupCalendar.dateCellFontColor 
                +  '" face="' + popupCalendar.dateCellFontFace 
                +  '" size="' + popupCalendar.dateCellFontSize + '">\r';
     windowHtml += dateCellText[posLoop] + '</font></td>\r';
     
     if (posLoop % 7 == 6) 
       { windowHtml += '</tr>\r'; }
   } // end for
   windowHtml += '</tr>\r'
              + '</table>\r'
              + '</td></tr></table>\r'
              + '</form></body></html>\r';      
   
   popupCalendar.winObj.document.write(windowHtml);
   popupCalendar.winObj.document.close();
   popupCalendar.winObj.focus();
}
//------------------------------  

function openPopupCalendar(STARTYEAR,STARTMONTH)
{
   var currentDate = new Date();
   if (STARTYEAR == null) 
     { STARTYEAR = currentDate.getFullYear(); }
   if (STARTMONTH == null) 
     { STARTMONTH = currentDate.getMonth(); }
   if (!popupCalendar.isOpen) { 
   	popupCalendar.winObj = window.open('','calendarWin'
                             ,  'width='   + popupCalendar.windowWidth 
                             + ',height=' + popupCalendar.windowHeight 
                             + ',location=no,menubar=no,resizable=yes'
                             + ',scrollbars=no,status=no,toolbar=no'
                             + ',left=' + popupCalendar.windowLeft
                             + ',top='  + popupCalendar.windowTop  
                               );
   } // end if
   popupCalendar.winObj.document.bgColor = popupCalendar.windowBgColor;
   writeCalendar(STARTYEAR,STARTMONTH);
}
//------------------------------