/**
* Filename.......: calendar.js
* Project........: Popup Calendar
* Last Modified..: $Date$
* CVS Revision...: $Revision$
* Copyright......: 2001, 2002 Richard Heyes
*/
dynCalendar_layers = new Array();
dynCalendar_mouseoverStatus = true;
dynCalendar_mouseX = 0;
dynCalendar_mouseY = 0;
/**
* The calendar constructor
*
* @access public
* @param string objName Name of the object that you create
* @param string callbackFunc Name of the callback function
* @param string OPTIONAL Optional layer name
* @param string OPTIONAL Optional images path
*/
function dynCalendar(objName, callbackFunc, targetID)
{
this.targetID=targetID;
// Todays date
this.today = new Date();
this.date = this.today.getDate();
this.month = this.today.getMonth();
this.year = this.today.getFullYear();
this.objName = objName;
this.callbackFunc = callbackFunc;
this.imagesPath = arguments[3] ? arguments[3] : 'images/';
this.defDate = arguments[4] ? arguments[4] : function() { return [this.year,this.month,this.date]; };
this.layerID = arguments[5] ? arguments[5] : 'dynCalendar_layer_' + dynCalendar_layers.length;
this.offsetX = 5;
this.offsetY = 5;
this.useMonthCombo = true;
this.useYearCombo = true;
this.yearComboRange = 5;
this.currentMonth = this.month;
this.currentYear = this.year;
/**
* Public Methods
*/
this.show = dynCalendar_show;
this.writeHTML = dynCalendar_writeHTML;
// Accessor methods
this.setOffset = dynCalendar_setOffset;
this.setOffsetX = dynCalendar_setOffsetX;
this.setOffsetY = dynCalendar_setOffsetY;
this.setImagesPath = dynCalendar_setImagesPath;
this.setMonthCombo = dynCalendar_setMonthCombo;
this.setYearCombo = dynCalendar_setYearCombo;
this.setCurrentMonth = dynCalendar_setCurrentMonth;
this.setCurrentYear = dynCalendar_setCurrentYear;
this.setYearComboRange = dynCalendar_setYearComboRange;
/**
* Private methods
*/
// Layer manipulation
this._getLayer = dynCalendar_getLayer;
this._hideLayer = dynCalendar_hideLayer;
this._showLayer = dynCalendar_showLayer;
this._setLayerPosition = dynCalendar_setLayerPosition;
this._setHTML = dynCalendar_setHTML;
// Miscellaneous
this._getDaysInMonth = dynCalendar_getDaysInMonth;
this._mouseover = dynCalendar_mouseover;
/**
* Constructor type code
*/
dynCalendar_layers[dynCalendar_layers.length] = this;
this.writeHTML();
}
function dynCalendar_show()
{
// Variable declarations to prevent globalisation
var month, year, monthnames, numdays, thisMonth, firstOfMonth;
var ret, row, i, cssClass, linkHTML, previousMonth, previousYear;
var nextMonth, nextYear, prevImgHTML, prevLinkHTML, nextImgHTML, nextLinkHTML;
var monthComboOptions, monthCombo, yearComboOptions, yearCombo, html;
this.currentMonth = month = arguments[0] != null ? arguments[0] : this.currentMonth;
this.currentYear = year = arguments[1] != null ? arguments[1] : this.currentYear;
// monthnames = new Array('Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December');
monthnames = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
// Main body of calendar
// var wds= '
H
K
Sz
Cs
P
Sz
V
';
var wds= '
Mo
Tu
We
Th
Fr
Sa
Su
';
var r2=new Array();
//var thisMonth=new Array();var ret=new Array();
var y2=year; var m2=month-1; if (m2==-1) { y2--; m2=11; } var ms=3;
while (ms>0) {
numdays = this._getDaysInMonth(m2, y2);
thisMonth = new Date(y2, m2, 1);
firstOfMonth = thisMonth.getDay();
// First few blanks up to first day
ret= new Array(new Array());
var fd=firstOfMonth-1; if (fd<0) fd+=7;
for(var i=0; i ';
}
var DD=this.defDate();
row = 0;
i = 1;
while(i <= numdays){
if(ret[row].length == 7){
ret[++row] = new Array();
}
var ad=(fd+i)%7; if (ad==0) ad=7;
cssClass = (i==DD[2] && m2==DD[1]-1 && y2==DD[0]) ? 'dynCalendar_today' : (ad>5? 'dynCalendar_weekend':'dynCalendar_weekday'); var linkJS=sprintf('%s(%s, %s, %s); %s._hideLayer();', this.callbackFunc, i, Number(m2) + 1, y2, this.objName);
linkHTML = i++;
var mOver="this.oCN=this.className; this.className='dynCalendar_day_over';";
var mOut="this.className=this.oCN;";
ret[row][ret[row].length] = sprintf('
%s
', mOver, mOut, linkJS, cssClass, linkHTML);
}
for(var i=0; i