Função Calendário
Publicado por Fernando Rodrigo Bilinski 30/01/2004
[ Hits: 18.824 ]
Trata-se de uma função orientada ao objeto que retorna o código HTML para o mês ou ano especificado.
/*
* Função calendário:
*
* Retorna o código HTML para montar um calendário de um mês ou ano
*
* Cal.monthCal( [month , year] )
* Cal.yearCal( [year] )
* Cal.setMonth( [month [, year] )
* Cal.setYear( [year] )
*
* month = 0...11 | 'today' | 'next' | 'prev' | 'now'
* year = number | 'today' | 'next' | 'prev' | 'now'
*/
function Calendar(name,year,month){
this.Month = Today.getMonth();
this.Year = Today.Year;
this.ThisDate = 0;
this.weekHeadMonth = new Array("Dom","Seg","Ter","Qua","Qui","Sex","Sab");
this.weekHeadYear = new Array("D","S","T","Q","Q","S","S");
this.monthNames = new Array("Janeiro","Fevereiro","Março","Abril","Maio",
"Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");
this.firstDay = 0;
this.weekColor = "black";
this.weekendColor = "red";
this.bgColor = "";
this.borderMonth = 2;
this.spacingMonth = 1;
this.paddingMonth = 2;
this.borderYear = 3;
this.spacingYear = 2;
this.paddingYear = 7;
this.cellWidth = 0;
this.fontFamily = "arial";
this.fontSize = 3;
this.fontWeight = "plain";
this.todayFontColor = "";
this.todayFontSize = 3;
this.todayFontWeight = "strong";
this.headFontColor = "black";
this.headFontFamily = "arial";
this.headFontSize = 3;
this.headFontWeight = "strong";
this.monthLen = Calendar.monthLen;
this.monthName = Calendar.monthName;
this.setMonthNames = Calendar.setMonthNames;
this.setYearWeek = Calendar.setYearWeek;
this.setMonthWeek = Calendar.setMonthWeek;
this.monthCal = Calendar.monthCal;
this.setMonth = Calendar.setMonth;
this.setYear = Calendar.setYear;
this.yearCal = Calendar.yearCal;
if (!window.calendars) window.calendars = new Array();
this.name = name || "Calendar"+ window.calendars.length;
window.calendars[this.name] = this;
window.calendars[window.calendars.length] = this;
this.setMonth(month,year);
}
Calendar.monthLen = function() {
var len = ((this.Month % 7) % 2 == 1)? 30 : 31;
if (this.Month == 1) len = (this.Year % 4 == 0)? 29 : 28;
return len;
}
Calendar.monthName = function() {
return this.monthNames[this.Month];
}
Calendar.setMonthNames = function() {
var args = Calendar.setMonthNames.arguments;
for (var i = 0; i<args.length; i++)
this.monthNames[i] = args[i];
}
Calendar.setYearWeek = function(su,mo,tu,we,th,fr,sa) {
var args = Calendar.setYearWeek.arguments;
for (var i = 0; i<args.length; i++)
this.weekHeadYear[i] = args[i];
}
Calendar.setMonthWeek = function(su,mo,tu,we,th,fr,sa) {
var args = Calendar.setMonthWeek.arguments;
for (var i = 0; i<args.length; i++)
this.weekHeadMonth[i] = args[i];
}
Calendar.setMonth = function(month, year) {
if (month) {
if(typeof(month) == 'number' && (month >= 0 && month < 12))
this.Month = month;
else if (month == 'today') {
this.Year = Today.Year;
this.Month = Today.getMonth();
}
else if (month == 'prev') {
if (--this.Month == -1) {
this.Month = 11;
--this.Year;
}
}
else if (month == 'next') {
if (++this.Month == 12) {
this.Month = 0;
++this.Year;
}
}
else if (month != 'now')
alert('Unknown month: '+ month);
}
if (typeof(year) != 'undefined') this.setYear(year);
this.ThisDate = (this.Month == Today.getMonth() && this.Year == Today.Year)? Today.getDate() : 0;
}
Calendar.setYear = function(year) {
if(typeof(year) != 'undefined') {
if (typeof(year) == 'number') {
this.Year = (year < 100 && year >= 0)? year + 1900 : year;
}
else if (year == 'today')
this.Year = Today.Year;
else if (year == 'prev')
--this.Year;
else if (year == 'next')
++this.Year;
else if (year != 'now')
alert('Unknown year: '+ year);
}
this.ThisDate = 0;
}
Calendar.monthCal = function(month, year) {
this.setMonth(month, year);
var first = new Date(this.Year,this.Month,1);
var day = 0;
var lastDate = this.monthLen();
var color;
var str = '<TABLE WIDTH='+ (7*this.cellWidth + 8*this.spacingMonth + 14*this.paddingMonth) +' CELLSPACING='+ this.spacingMonth +' CELLPADDING='+ this.paddingMonth +' BORDER='+ this.borderMonth +' BGCOLOR="'+ this.bgColor +'">';
str += '<TR><TH COLSPAN=7>'+ fontTag(this.headFontFamily,this.headFontSize,this.headFontColor,this.headFontWeight) +
this.monthName() +' '+ this.Year +'</FONT></TH></TR>\n<TR ALIGN="center">\n';
for (day=this.firstDay; day<this.firstDay+7; day++)
str += ' <TD WIDTH='+ this.cellWidth +'>'+ fontTag(this.fontFamily,this.fontSize,this.headFontColor,this.headFontWeight) +
this.weekHeadMonth[day%7] +'</FONT></TD>';
day = first.getDay();
if (day != this.firstDay) {
str += '\n</TR>\n<TR ALIGN="center">\n' +
' <TD COLSPAN='+ ((day+7-this.firstDay)%7) +'> </TD>';
}
for (date=1; date <= lastDate; date++, day=(++day)%7) {
if (day == this.firstDay)
str += '\n</TR>\n<TR ALIGN="center">\n';
str += ' <TD WIDTH='+ this.cellWidth +'>';
color = (day==0 || day==6)? this.weekendColor : this.weekColor;
if (date == this.ThisDate) {
color = this.todayFontColor || color;
str += fontTag(this.fontFamily, this.todayFontSize, color, this.todayFontWeight);
} else {
str += fontTag(this.fontFamily, this.fontSize, color, this.fontWeight);
}
str += date +'</FONT></TD>';
}
if ((this.firstDay-day)%7 != 0 )
str += ' <TD COLSPAN='+ ((this.firstDay+7-day)%7) +'> </TD>';
str += '\n</TR>\n</TABLE>\n';
return str;
}
Calendar.yearCal = function (year) {
this.setYear(year);
var saveMonth = this.Month;
var saveBorder = this.borderMonth;
this.borderMonth = 0;
var saveWeekHead = this.weekHeadMonth;
this.weekHeadMonth = this.weekHeadYear;
var str = '<TABLE BORDER="'+ this.borderYear +'" CELLPADDING='+ this.paddingYear +' CELLSPACING="'+ this.spacingYear +' BGCOLOR="'+ this.bgColor +'">\n' +
'<CAPTION><H2>'+ fontTag(this.headFontFamily,'',this.headFontColor,this.headFontWeight) + this.Year +'</H2></CAPTION>\n';
for (var row = 0; row < 4; row++) {
str += '<TR VALIGN=TOP>\n';
for (this.Month = 3*row; this.Month < 3*row + 3; this.Month++)
str += '<TD>'+ this.monthCal() +'</TD>\n';
str += '</TR>\n';
}
str += '</TABLE>\n';
this.Month = saveMonth;
this.borderMonth = saveBorder;
this.weekHeadMonth = saveWeekHead;
return str;
}
function fontTag(family,size,color,weight) {
var font = '<FONT';
if (family) font += ' FACE="'+ family +'"';
if (size) font += ' SIZE="'+ size +'"';
if (color) font += ' COLOR="'+ color +'"';
font += '>'
if (weight && weight != "plain") font += '<'+ weight +'>';
return font;
}
if (!Today) var Today = new Date();
if (!Today.Year) {
Today.Year = Today.getYear() % 100;
Today.Year += (Today.Year < 38) ? 2000 : 1900;
}
Plugin para ordenar, paginar e pesquisar em tabelas HTML
JSOO - Classe Calculadora em JavaScript
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
espelhar monitores nao funciona (1)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (1)
Pendrive Bootable [RESOLVIDO] (5)
Desenvolvi um programa de hot corner (você colocar o mouse nos cantos)... (3)









