
function buildCal(m, y , myid , formid , show ){


if(show) var showstyle = 'block';
else var showstyle = 'none';

var todayid = '';
var available = '';
var mn=['January','February','March','April','May','June','July','August','September','October','November','December'];
var dim=[31,0,31,30,31,30,31,31,30,31,30,31];

var oD = new Date(y, m-1, 1); //DD replaced line to fix date bug when current day is 31st
oD.od=oD.getDay()+1; //DD replaced line to fix date bug when current day is 31st

dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;


var todaydate=new Date() //DD added
var scanfortoday=(y==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added




// Links for next and previous
	var nextmonthlink =  (mn[(m<12?m:0)].substr(0,3));
	var nextyearlink = (y+1);
	var prevmonthlink = (mn[(m-2>-1?m-2:11)].substr(0,3));
	var prevyearlink = (y-1);

	var nextmonthlink = '&raquo;';
	var nextyearlink = '&raquo;&raquo;';
	var prevmonthlink = '&laquo;';
	var prevyearlink = '&laquo;&laquo;';
	var nowlink = '&bull;';

	var firstMonth = FirstMonth();
	var lastMonth = LastMonth();
	var fY = firstMonth.substr(0,4);
	var fM = firstMonth.substr(4,2);
	var lY = lastMonth.substr(0,4);
	var lM = lastMonth.substr(4,2);

	var prevMonth = m-1;
	var prevYear = y;
	if(prevMonth<1) { prevMonth = 12; prevYear--; }
	if(prevMonth<10) prevMonth = '0'+prevMonth;
	var nextMonth = m+1;
	var nextYear = y;
	if(nextMonth>12) { nextMonth = 1; nextYear++; }
	if(nextMonth<10) nextMonth = '0'+nextMonth;

	prevDate = ''+prevYear+prevMonth;
	nextDate = ''+nextYear+nextMonth;
	
	if(firstMonth>0&&prevDate<firstMonth) prevmonthlink = '';
	if(lastMonth>0&&nextDate>lastMonth) nextmonthlink = '';
	if(firstMonth>0&&y-1<fY) prevyearlink = '';
	if(lastMonth>0&&y+1>lY) nextyearlink = '';

var t='<div class="minical" id="'+myid+'" style="display:'+showstyle+';"><table class="cal" cols="7">';


//t+='<tr><td colspan="7">'+prevDate+' | '+firstMonth+'</td></tr>';
//t+='<tr><td colspan="7">'+nextDate+' | '+lastMonth+'</td></tr>';
//t+='<tr><td colspan="7">'+prevMonth+'|'+fM+'</td></tr>';
//t+='<tr><td colspan="7">'+prevYear+'|'+fY+'</td></tr>';
//t+='<tr><td colspan="7">'+nextMonth+'|'+lM+'</td></tr>';
//t+='<tr><td colspan="7">'+nextYear+'|'+lY+'</td></tr>';


t+='<tr>';
t+='<td align="center" colspan="7" class="monthyear">';
t+='<a href="#" onclick="return changecal('+(m)+','+(y-1)+', \''+myid+'\', \''+formid+'\' );">' + prevyearlink + '</a>&nbsp;';
t+='<a href="#" onclick="return changecal('+(m-1)+','+y+', \''+myid+'\', \''+formid+'\' );">' + prevmonthlink + '</a>&nbsp;';
t+='<a href="#" onclick="return changecal('+(todaydate.getMonth()+1)+','+(todaydate.getFullYear())+', \''+myid+'\', \''+formid+'\' );">' + nowlink + '</a>&nbsp;';
t+='<a href="#" onclick="return changecal('+(m+1)+','+y+', \''+myid+'\', \''+formid+'\' );">' + nextmonthlink + '</a>&nbsp;';
t+='<a href="#" onclick="return changecal('+(m)+','+(y+1)+', \''+myid+'\', \''+formid+'\' );">' + nextyearlink + '</a>';
t+='</td></tr><tr align="center">';


t+='<td colspan="7" align="center" class="monthyear">'+mn[m-1]+' '+y+'</td></tr><tr align="center">';
for(s=0;s<7;s++)t+='<td class="daysofweek">'+"SMTWTFS".substr(s,1)+'</td>';
t+='</tr><tr align="center">';
for(i=1;i<=42;i++){
var available='';
var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
var testtoday=x;
if (testtoday==scanfortoday) { todayid = ' class="today" '; } else { todayid = ''; }

var dateString = ( "" + y + (m<10?"0"+m:m) + (x<10&&x!="&nbsp;"?"0"+x:x) + "" );

if ( x!='&nbsp;' && TestDate( dateString ) ) { available = ' style="background:pink;" '; }

var thisday = new Date(y,m-1,x);
if ( x!='&nbsp;' && TestDay( thisday.getDay() ) ) { available = ' style="background:pink;" '; }


if(x!='&nbsp;'&&available=='') x='<a href="#" onclick="document.getElementById(\''+formid+'\').value=\''+y+'-'+(m<10?'0'+m:m)+'-'+(x<10?'0'+x:x)+'\'; return false;" '+todayid+'>'+x+'</a>';

t+='<td ' + available + ' class="'+( (Math.round(i/2)==(i/2))?'even':'odd' )+'">'+x+'</td>';
if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';
}
t+='</tr>';
t+='<tr align="right"><td colspan="7"><a href="#" onclick="toggle(\''+formid+'_dd\');return toggle(\''+formid+'_cal\');">close</a></td></tr>';


//t+='<tr><td colspan="7">'+fM+', '+fY+' '+lM+', '+lY+' '+prevMonth+', '+prevYear+' '+nextMonth+', '+nextYear+'</td></tr>';


t+='</table></div>';


return t;
}

function changecal(themonth,theyear,myid,formid)
{
	if(themonth>12) { themonth = 1; theyear++; }
	if(themonth<1) { themonth = 12; theyear--; }
	if(theyear<curyear-5) theyear = curyear-5;
	if(theyear>curyear+5) theyear = curyear+5;
	if(theyear<curyear-5) theyear = curyear-5;
	var calendarstr=buildCal(themonth,theyear, myid, formid , true )
	if (document.getElementById)
	document.getElementById(myid).innerHTML=calendarstr;
	document.getElementById(myid).style.display='block';
	return false;
}

