function buildCal(m, y, cM, cH, cDW, cD, brdr, sDay, action){
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];

if(sDay<1 || sDay>7)sDay=1;

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

var tmpod=oD.od-sDay;
if(tmpod<0)tmpod=7+tmpod;
oD.od=tmpod+1;

var wkstr="SMTWTFS".substr(sDay-1,"SMTWTFS".length)+"SMTWTFS".substr(0,sDay-1);

var todaydate=new Date() //DD
var scanfortoday=(y==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD

dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;
var t='<div class="'+cM+'"><table class="'+cM+'" cellpadding="0" border="'+brdr+'" cellspacing="0">';
t+='<tr align="center"><td colspan="7" align="center" class="'+cH+'">'+mn[m-1]+' - '+y+'</td></tr>';
t+='<tr align="center">';
for(s=0;s<7;s++)t+='<td class="'+cDW+'">'+wkstr.substr(s,1)+'</td>';
t+='</tr><tr align="center">';
for(i=1;i<=42;i++){
var x=( (i-oD.od>=0) && (i-oD.od<dim[m-1]) )? '<div style="width:100%" '+((action!='')? 'onmouseup="'+action+'('+m+','+(i-oD.od+1)+','+y+')':(i-oD.od+1))+'">'+(i-oD.od+1)+'</div>' : '&nbsp;';
if (i-oD.od+1==scanfortoday)x='<span id="today" class="'+cD+'">'+x+'</span>' //DD
t+='<td width="14.28%" class="'+cD+'">'+x+'</td>';
if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';
}
t+='</tr></table></div>';
return t;
}




var mnth=new Date().getMonth()+1;
var year=new Date().getFullYear();
var strtD=1;

function adjM(I){
if(I){
mnth=(mnth==12)?1:mnth+1;
}else{
mnth=(mnth==1)?12:mnth-1;
}
changeHTML();
}

function adjY(I){
if(I){
year=(year==2030)?1970:year+1;
}else{
year=(year==1970)?2030:year-1;
}
changeHTML();
}

function adjD(){
strtD=(strtD==7)?1:strtD+1;
document.forms["f"].daybut.value="Day 1 = "+["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][strtD-1];
changeHTML();
}

//FUNCTION TO FIND NESTED NN4 LAYERS BY MIKE HALL OF WWW.BRAINJAR.COM
function findlayer(name,doc){
var i,layer;
for(i=0;i<doc.layers.length;i++){
layer=doc.layers[i];
if(layer.name==name)return layer;
if(layer.document.layers.length>0)
if((layer=findlayer(name,layer.document))!=null)
return layer;
}
return null;
}

function changeHTML(){
var el=(document.layers)?findlayer("dyncal",document):(document.all)?document.all["dyncal"]:document.getElementById("dyncal");
var html=buildCal(mnth,year,"calmain","calmonth","caldaysofweek","caldays",1,1,'updateField');
if(document.layers){
el.document.open();
el.document.write('<div class="abc">'+html+'</div>');
el.document.close();
}else el.innerHTML=html;
}

function zfill(n){
return (n.toString().length<2)?"0"+n:""+n;
}

function updateField(mm,dd,yy){
document.f.dtfld.value=zfill(mm)+'/'+zfill(dd)+'/'+yy;
}
