<script type="text/javascript">
var objStartDay = null;
var objEndDay = null;
var arrDays = new Array();
var objToday = null;
function InitCalendars(){
var objHolder = document.getElementById( "calendars" );
var arrTBody = objHolder.getElementsByTagName( "tbody" );
var arrTD = null;
var intI, intJ;
for (intI = 0 ; intI < arrTBody.length ; intI++){
arrTD = arrTBody[ intI ].getElementsByTagName( "td" );
for (intJ = 0 ; intJ < arrTD.length ; intJ ++){
InitTD( arrTD[ intJ ] );
}
}
}
function InitTD( objTD ){
objTD.dayIndex = arrDays.length;
arrDays[ arrDays.length ] = objTD;
objTD.baseClassName = objTD.className;
if (objTD.className == "today"){
objToday = objTD;
}
objTD.onclick = function(){
SetDay( this );
}
}
function SetDay( objTD ){
if (objTD.className == "othermonth"){
return;
}
if (objTD == objStartDay){
objStartDay = objEndDay;
objEndDay = null;
} else if (objTD == objEndDay){
objEndDay = null;
} else {
if (objStartDay && objEndDay){
if (objTD.dayIndex < objStartDay.dayIndex){
objStartDay = objTD;
} else {
objEndDay = objTD;
}
} else if (objStartDay){
if (objStartDay.dayIndex < objTD.dayIndex){
objEndDay = objTD;
} else {
objEndDay = objStartDay;
objStartDay = objTD;
}
} else {
objStartDay = objTD;
}
}
RenderCalendar();
}
function RenderCalendar(){
var intDay = null;
for (intDay = 0 ; intDay < arrDays.length ; intDay++){
if (arrDays[ intDay ].className == "othermonth"){
continue;
}
if (
objStartDay &&
objEndDay &&
(objStartDay.dayIndex <= arrDays[ intDay ].dayIndex) &&
(objEndDay.dayIndex >= arrDays[ intDay ].dayIndex)
){
arrDays[ intDay ].className = (
( (arrDays[ intDay ] == objToday) ? "today" : "" ) +
"selected"
);
} else if (
(arrDays[ intDay ] == objStartDay) ||
(arrDays[ intDay ] == objEndDay)
){
arrDays[ intDay ].className = (
( (arrDays[ intDay ] == objToday) ? "today" : "" ) +
"selected"
);
} else {
arrDays[ intDay ].className = arrDays[ intDay ].baseClassName;
}
}
}
</script>