转的.
<html>
<head>
<style>
.body{
background-color:white;
}
.calendar table{
width:100%;
height:100%;
position:relative;
border-collapse:collapse;
}
.calendar table th.first{
height:25px;
background-color:maroon;
font-family: arial, helvetica;
font-size:15px;
color:white;
border-right:1px solid white;
border-left:1px solid maroon;
}
.calendar table th.mid{
height:25px;
background-color:maroon;
font-family: arial, helvetica;
font-size:15px;
color:white;
border-right:1px solid white;a
}
.calendar table th.last{
height:25px;
background-color:maroon;
font-family: arial, helvetica;
font-size:15px;
color:white;
border-right:1px solid maroon;
}
.calendar table td {
width:14%;
border:1px solid maroon;
padding:0px;
}
.calendar table.tdborder{
width:100%;
height:100%;
position:relative;
}
.calendar table td.tdborderNormal{
border:1px solid transparent;
width:100%;
height:100%;
position:relative;
padding:0px;
}
.calendar table td.tdborderOnfocus {
border:1px solid red;
width:100%;
height:100%;
position:relative;
padding:0px;
}
.calendar table td.caltitle_p {
height:25px;
font-family: arial, helvetica;
font-size:20px;
color:maroon;
border:0px;
text-align:center;
cursor:pointer;
}
.calendar table td.caltitle_m {
height:25px;
font-family: arial, helvetica;
font-size:20px;
color:maroon;
border:0px;
text-align:center;
}
.calendar table td.caltitle_m_lr {
height:25px;
font-family: arial, helvetica;
font-size:11px;
color:maroon;
border:0px;
text-align:left;
cursor:pointer;
}
.calendar table td.caltitle_l {
height:25px;
font-family: arial, helvetica;
font-size:20px;
color:maroon;
border:0px;
text-align:center;
cursor:pointer;
}
.calendar table td.quarter {
height:25px;
font-family: arial, helvetica;
font-size:14px;
color:maroon;
border:0px;
text-align:center;
}
.calendar table td.quartermonth {
height:25px;
font-family: arial, helvetica;
font-size:12px;
color:maroon;
border:0px;
text-align:center;
cursor:pointer;
}
.calendar div.dateTitle{
width:98%;
height:15px;
position:relative;
font-family: arial, helvetica;
font-size:13px;
text-align:right;
}
.calendar div.dateContext{
width:100%;
height:90%;
position:relative;
font-family: arial, helvetica;
font-size:12px;
text-align:left;
position:relative;
border-top:1px dashed maroon;
}
.calendar tabel td.now{
font-family: arial, helvetica;
font-size:11px;
cursor:hand;
position:relative;
}
</style>
<script>
var currentDate = new Date();
Date.prototype.getMonthDays = function(month,year){
var nextMonthFiristDay = new Date();
nextMonthFiristDay.setDate('1');
var nowMonthFiristDay = new Date();
nowMonthFiristDay.setDate('1');
if(year){
nowMonthFiristDay.setFullYear(year);
nextMonthFiristDay.setFullYear(year);
}
if(month){
nextMonthFiristDay.setMonth(month);
nowMonthFiristDay.setMonth(month-1);
}else{
nextMonthFiristDay.setMonth(nextMonthFiristDay.getMonth()+1);
}
return Number((nextMonthFiristDay - nowMonthFiristDay)/1000/60/60/24).toFixed(0);
}
Date.prototype.getFirstDayOfMonthInWeek = function(month,year){
var today = new Date();
today.setDate('1');
if(year){
today.setFullYear(year);
}
if(month){
today.setMonth(month-1);
}
return today.getDay();
}
function addRow(tbody,strings,ishead){
var tds = new Array();
var texts = new Array();
var _tr = document.createElement("tr");
tbody.appendChild(_tr);
for(var i=0;i<7;i++){
if(ishead){
tds[i] = document.createElement("th");
if(i==0){
tds[i].className = 'first';
}else if(i==6){
tds[i].className = 'last';
}else{
tds[i].className = 'mid';
}
}else{
tds[i] = document.createElement("td");
}
_tr.appendChild(tds[i]);
if(strings){
texts[i] = document.createTextNode(strings[i]);
tds[i].appendChild(texts[i]);
}
}
}
function mapMonthNum(month){
var monthStr = new Number();
switch (month)
{
case 'Jan':
monthStr = 0
break
case 'Feb':
monthStr = 1
break
case 'Mar':
monthStr = 2
break
case 'Apr':
monthStr = 3
break
case 'May':
monthStr = 4
break
case 'Jun':
monthStr = 5
break
case 'Jul':
monthStr = 6
break
case 'Aug':
monthStr = 7
break
case 'Sep':
monthStr = 8
break
case 'Oct':
monthStr = 9
break
case 'Nov':
monthStr = 10
break
case 'Dec':
monthStr = 11
break
}
return monthStr;
}
function mapMonth(month){
var monthStr = new Object();
switch (month)
{
case 0:
monthStr = 'Jan'
break
case 1:
monthStr = 'Feb'
break
case 2:
monthStr = 'Mar'
break
case 3:
monthStr = 'Apr'
break
case 4:
monthStr = 'May'
break
case 5:
monthStr = 'Jun'
break
case 6:
monthStr = 'Jul'
break
case 7:
monthStr = 'Aug'
break
case 8:
monthStr = 'Sep'
break
case 9:
monthStr = 'Oct'
break
case 10:
monthStr = 'Nov'
break
case 11:
monthStr = 'Dec'
break
}
return monthStr;
}
function addTitleMonth(td,strings,calendar,calendar_context){
var quarter1table = document.createElement("table");
var quarter1tbody = document.createElement("tbody");
var quarter1tr = document.createElement("tr");
td.appendChild(quarter1table);
quarter1table.appendChild(quarter1tbody);
quarter1tbody.appendChild(quarter1tr);
var quarter1tds = new Array();
for(var i=0;i<strings.length;i++){
quarter1tds[i] = document.createElement("td");
quarter1tds[i].monthvalue = mapMonthNum(strings[i]);
quarter1tds[i].appendChild(document.createTextNode(strings[i]));
quarter1tr.appendChild(quarter1tds[i]);
quarter1tds[i].className = 'quartermonth';
quarter1tds[i].onclick = function(){
currentDate.setMonth(this.monthvalue);
calendar.removeChild(calendar_context);
initCal();
}
}
}
function initCal(){
var calendar = document.getElementById("calendar");
var calendar_context = document.createElement("table");
calendar.appendChild(calendar_context);
var _tbody = document.createElement("tbody");
calendar_context.appendChild(_tbody);
var days = currentDate.getMonthDays(currentDate.getMonth()+1,currentDate.getFullYear());
var cells = new Array();
var cellDivs = new Array();
var cellDivTbodys = new Array();
var cellDivTrs = new Array();
var cellDivTds = new Array();
var handleDates = new Array();
var txtNodes = new Array();
//create table;
var calendar_title_tr = document.createElement("tr");
var calendar_title_td_p = document.createElement("td");
calendar_title_td_p.className = 'caltitle_p';
calendar_title_td_p.appendChild(document.createTextNode("<"));
calendar_title_td_p.onclick=function(){
currentDate.setMonth(currentDate.getMonth()-1);
calendar.removeChild(calendar_context);
initCal();
}
var calendar_title_td_m = document.createElement("td");
calendar_title_td_m.className = 'caltitle_m';
var calendar_title_td_m_table = document.createElement("table");
var calendar_title_td_m_tbody = document.createElement("tbody");
var calendar_title_td_m_tr = document.createElement("tr");
var calendar_title_td_m_tdl = document.createElement("td");
var calendar_title_td_m_tdm = document.createElement("td");
var calendar_title_td_m_tdr = document.createElement("td");
calendar_title_td_m.appendChild(calendar_title_td_m_table);
calendar_title_td_m_table.appendChild(calendar_title_td_m_tbody);
calendar_title_td_m_tbody.appendChild(calendar_title_td_m_tr);
calendar_title_td_m_tr.appendChild(calendar_title_td_m_tdl);
calendar_title_td_m_tr.appendChild(calendar_title_td_m_tdm);
calendar_title_td_m_tr.appendChild(calendar_title_td_m_tdr);
calendar_title_td_m_tdm.className = 'caltitle_m';
calendar_title_td_m_tdl.className = 'caltitle_m';
calendar_title_td_m_tdr.className = 'caltitle_m_lr';
calendar_title_td_m_tdm.appendChild(document.createTextNode(mapMonth(currentDate.getMonth()) + ',' + currentDate.getFullYear()));
var txtNow = document.createTextNode('[Now]');
calendar_title_td_m_tdr.appendChild(txtNow);
calendar_title_td_m_tdr.onclick=function(){
currentDate = new Date();
calendar.removeChild(calendar_context);
initCal();
}
if(currentDate.getFullYear() == new Date().getFullYear() && currentDate.getMonth() == new Date().getMonth()){
if(txtNow){
calendar_title_td_m_tdr.removeChild(txtNow);
}
}
var calendar_title_td_l = document.createElement("td");
calendar_title_td_l.className = 'caltitle_l';
calendar_title_td_l.appendChild(document.createTextNode(">"));
calendar_title_td_l.onclick=function(){
currentDate.setMonth(currentDate.getMonth()+1);
calendar.removeChild(calendar_context);
initCal();
}
calendar_title_tr.appendChild(calendar_title_td_p);
var quarter1 = document.createElement("td");
quarter1.className = 'quarter';
var quarter2 = document.createElement("td");
quarter2.className = 'quarter';
calendar_title_tr.appendChild(quarter1);
var monthTitles1 = ['Jan','Feb','Mar'];
addTitleMonth(quarter1,monthTitles1,calendar,calendar_context);
calendar_title_tr.appendChild(quarter2);
var monthTitles2 = ['Apr','May','Jun'];
addTitleMonth(quarter2,monthTitles2,calendar,calendar_context);
calendar_title_tr.appendChild(calendar_title_td_m);
var quarter3 = document.createElement("td");
quarter3.className = 'quarter';
var quarter4 = document.createElement("td");
quarter4.className = 'quarter';
calendar_title_tr.appendChild(quarter3);
var monthTitles3 = ['Jul','Aug','Sep'];
addTitleMonth(quarter3,monthTitles3,calendar,calendar_context);
calendar_title_tr.appendChild(quarter4);
var monthTitles4 = ['Oct','Nov','Dec'];
addTitleMonth(quarter4,monthTitles4,calendar,calendar_context);
calendar_title_tr.appendChild(calendar_title_td_l);
_tbody.appendChild(calendar_title_tr);
//create title;
var calTitles = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
addRow(_tbody,calTitles,true);
//create first row;
addRow(_tbody);
var startPoint = [2,currentDate.getFirstDayOfMonthInWeek(currentDate.getMonth()+1,currentDate.getFullYear())];
var contextDates = new Array();
for(var i=0;i<days;i++){
//alert("rows:" + startPoint[0] + ", cells:" + startPoint[1]);
cells[i] = calendar_context.rows[startPoint[0]].cells[startPoint[1]];
cellDivs[i] = document.createElement("table");
cellDivs[i].className='tdborder';
cellDivTbodys[i] = document.createElement("tbody");
cellDivs[i].appendChild(cellDivTbodys[i]);
cellDivTrs[i] = document.createElement("tr");
cellDivTbodys[i].appendChild(cellDivTrs[i]);
cellDivTds[i] = document.createElement("td");
cellDivTds[i].className='tdborderNormal';
cellDivTrs[i].appendChild(cellDivTds[i]);
cellDivTds[i].onmouseover = function(){
this.className = 'tdborderOnfocus';
}
cellDivTds[i].onmouseout = function(){
this.className = 'tdborderNormal';
}
cells[i].appendChild(cellDivs[i]);
handleDates[i] = document.createElement("div");
handleDates[i].className='dateTitle';
contextDates[i] = document.createElement("div");
contextDates[i].className='dateContext';
cellDivTds[i].appendChild(handleDates[i]);
cellDivTds[i].appendChild(contextDates[i]);
txtNodes[i] = document.createTextNode(i+1);
handleDates[i].appendChild(txtNodes[i]);
var cellsPoint = startPoint[1]++;
if(cellsPoint == 6){
startPoint[0]++;
startPoint[1]=0;
if(i != days-1){
addRow(_tbody);
}
}
}
}
window.onload = function(){
initCal();
}
</script>
</head>
<body>
<div id='calendar' class='calendar'/>
</body>
</html>