на сайте поставил календарь на java скрипте не знай правильно или может лучше на php не знай, ну так вот, как к ниму прикрутить празднечные дни, дни повторяющиеся и дни только в определённый день типа встричи, и чтоб дни предыдущего и следущего месяца одображались тоже но другим цветои в конце и в начале соответственно, но не так чтоб все а просто для заполнения пустых клеточек в таблице текущего месяца
PHP код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
<style>
table.calendar
{
border: none;
width: 200px
}
tr.calendar
{
cursor: default;
font: 11px;
font-family: Times New Roman;
text-align: center;
height: 11px
}
th.calendar
{
font: 11px;
font-family: Times New Roman;
text-align: center;
height: 20px;
border: 1px solid gray;
height: 16px;
filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#ffffff', endColorStr='#BBBBBB', gradientType='0');
}
td.calendar
{
border: 1px dotted silver;
filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#FFFFFF', endColorStr='#DFDFDF', gradientType='0');
}
td.calendar_today
{
border: 1px dotted silver;
background-color: #FF8B8B;
}
table.calendar_active
{
background-color: #FF8C00;
}
table.calendar_button_0_1
{
font: 11px;
font-family: Times New Roman;
text-align: center;
border: 1px solid gray;
height: 16px;
filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#ffffff', endColorStr='#BBBBBB', gradientType='0');
}
table.calendar_button_1_1
{
font: 11px;
font-family: Times New Roman;
text-align: center;
border: 1px solid gray;
height: 16px;
filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#ffffff', endColorStr='#FF8C00', gradientType='0');
}
</style>
<script>
//var args = window.dialogArguments;
var WeekTitles=new Array('<font color=ff0000>Вс</font>','Пн','Вт','Ср','Чт','Пт','<font color=ff0000>Сб</font>')
var months = new Array('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'); // врезка для написания месяца прописью
function showallweektitles(){
var i,
answer=" <tr>\n"
for(i=0;i<WeekTitles.length;i++)
answer+=" <th CLASS=\"calendar\">"+WeekTitles[i]+"</th>\n"
answer+=" </tr>\n"
return answer
}
function calendar_show(m, d, y){
var sdate= new Date(m+'/1/'+y);
var mdate= new Date(m+'/'+d+'/'+y);
var todaydate= new Date();
var days=dayonmonth(m,y)
var iday=0, day, answer=''
var lmonth=months[sdate.getMonth()]; // врезка для написания месяца прописью
answer+='<table border=0 CLASS="calendar">'
answer+=' <tr CLASS="calendar">'
answer+=' <th CLASS="calendar" colspan=7>'
answer+=' <table width="100%" border=0 cellpadding=0 cellspacing=0 height="100%">'
answer+=' <tr CLASS="calendar">'
answer+=' <td align="left"> '+m+' - '+lmonth+'</td>' //строка показ месяца
answer+=' <td align="right">'+y+' г. </td>' //строка показ года
answer+=' </tr>'
answer+=' </table>'
answer+=' </th>'
answer+=' </tr>'
answer+=' <tr>'
answer+=showallweektitles()
for(day=0;day<sdate.getDay();day++){
iday++
answer+="<td></td>" // сюда пишется дни прошлого месяца
}
for(day=1;day<=days;day++){
iday++
// строка сегоднешнего дня
if((todaydate.getMonth()+1)==m && todaydate.getDate()==day && todaydate.getFullYear()==y)
answer+=" <td CLASS=\"calendar_today\"><table onMouseOver=\"this.className='calendar_active'\" onMouseOut=\"this.className=''\" border=0 cellpadding=0 cellspacing=0 width=\"100%\" height=\"100%\"><tr CLASS=\"calendar\"><td>"+day+"</td></tr></table></td>"
else
answer+=" <td CLASS=\"calendar\"><table onMouseOver=\"this.className='calendar_active'\" onMouseOut=\"this.className=''\" border=0 cellpadding=0 cellspacing=0 width=\"100%\" height=\"100%\"><tr CLASS=\"calendar\"><td>"+day+"</td></tr></table></td>"
if(iday==7){
answer+="</tr><tr>"
iday=0
}
}
answer+=" </tr>"
//кнопки календаря
answer+=' <tr CLASS="calendar">'
answer+=' <th colspan=7>'
answer+='<table CLASS="calendar">'
answer+=' <tr CLASS="calendar">'
answer+=' <td width="25%"><table onClick="calendar_move(\'-\',\'y\','+m+','+d+','+y+')" CLASS="calendar_button_0_1" onMouseOver="this.className=\'calendar_button_1_1\'" onMouseOut="this.className=\'calendar_button_0_1\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr CLASS="calendar"><td>«</td></tr></table></td>'
answer+=' <td width="25%"><table onClick="calendar_move(\'-\',\'m\','+m+','+d+','+y+')" CLASS="calendar_button_0_1" onMouseOver="this.className=\'calendar_button_1_1\'" onMouseOut="this.className=\'calendar_button_0_1\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr CLASS="calendar"><td>‹</td></tr></table></td>'
answer+=' <td width="25%"><table onClick="calendar_move(\'+\',\'m\','+m+','+d+','+y+')" CLASS="calendar_button_0_1" onMouseOver="this.className=\'calendar_button_1_1\'" onMouseOut="this.className=\'calendar_button_0_1\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr CLASS="calendar"><td>›</td></tr></table></td>'
answer+=' <td width="25%"><table onClick="calendar_move(\'+\',\'y\','+m+','+d+','+y+')" CLASS="calendar_button_0_1" onMouseOver="this.className=\'calendar_button_1_1\'" onMouseOut="this.className=\'calendar_button_0_1\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr CLASS="calendar"><td>»</td></tr></table></td>'
answer+=' </tr>'
answer+='</table>'
answer+=' </th>'
answer+=' </tr>'
answer+='</table>'
//self.calendar.innerHTML=answer
document.all.calendar.innerHTML=answer
}
function dayonmonth(m, y){ // Функция, для определения количества дней в месяце
var answer
if(m!=2){ // Если не "Февраль"
var date1=new Date(m+'/31/'+y)
var mm=(m<12)?(m+1):1;
var yy=(m<12)?y:(y+1);
var date2=new Date(mm+'/1/'+yy)
answer=(date1.getDay()==date2.getDay())?'30':'31';
}else{
var date1=new Date(m+'/29/'+y)
var mm=(m<12)?(m+1):1;
var yy=(m<12)?y:(y+1);
var date2=new Date(mm+'/1/'+yy)
answer=(date1.getDay()==date2.getDay())?'28':'29';
}
return answer
}
function calendar_move(to, index, m, d, y){
switch(to){
case('-'):
switch(index){
case('m'):
if(m>1){
m--
}else{
m=1
y--
}
break
case('d'):
var mm=(m>1)?--m:1
var yy=(m>1)?y:--y
var days=dayonmonth(mm, yy)
if(d>1){
d--
}else{
d=days
m=mm
y=yy
}
break
case('y'):
y--
break
}
break
case('+'):
switch(index){
case('m'):
if(m<12){
m++
}else{
m=1
y++
}
break
case('d'):
var mm=(m<12)?++m:1
var yy=(m<12)?y:++y
var days=dayonmonth(m, y)
if(d<days){
d++
}else{
d=1
m=mm
y=yy
}
break
case('y'):
y++
break
}
break
}
calendar_show(m, d, y)
}
//пишет год для отображения
var time=new Date();
var year=time.getYear();
if (year<100) year="19" + time.getYear();
else year=time.getYear();
//пишет месяц для отображения
d=new Date();
mon=d.getMonth()+1;
</SCRIPT>
</head>
<body>
<div id="calendar"></div>
<script>calendar_show(mon,0,year)</script>
</body>
</html>