function buildCal(m, y, cM, cH, cDW, cD, brdr, appendTo){
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

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

var last_month = ""
var next_month = ""
if(m == 1) {
    last_month = "dec"
    next_month = "feb"
    last_year = y-2001
    next_year = y
}
else if(m == 12) {
    last_month = "nov"
    next_month = "jan"
    last_year = y
    next_year = y-1999
}
else {
    last_month = getMonthWord(last_month-1)
    next_month = getMonthWord(next_month+1)
    last_year = y
    next_year = y
}

var back_link = ""
var front_link = ""

//special case
if(m == 12 && y == 2007) {
    back_link = "events_nov07.php";
    front_link = "events.php?m=jan&y=08"
}
else {
    back_link = "events.php?m="+last_month+"&y="+last_year;
    front_link = "events.php?m="+next_month+"&y="+next_year;
}

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

var mainDiv = document.createElement('DIV')
mainDiv.className = cM
var mainTable = document.createElement('TABLE')
mainTable.className = cM
mainTable.cellPadding = "3"
mainTable.border = brdr
mainTable.cellSpacing = "0"
var mainTbody = document.createElement('TBODY')
var tr1 = document.createElement('TR')
tr1.align = "center"
var td1 = document.createElement('TD')
td1.className = cH
var a1 = document.createElement('A')
a1.className = "plain_black"
a1.href = back_link
var backText = document.createTextNode("<<")
a1.appendChild(backText)
td1.appendChild(a1)
tr1.appendChild(td1)
var td2 = document.createElement('TD')
td2.colSpan = "5"
td2.align = "center"
td2.className = cH
var middleText = document.createTextNode(mn[m-1]+' '+y)
td2.appendChild(middleText)
tr1.appendChild(td2)
var td3 = document.createElement('TD')
td3.className = cH
var a2 = document.createElement('A')
a2.className = "plain_black"
a2.href = front_link
var frontText = document.createTextNode(">>")
a2.appendChild(frontText)
td3.appendChild(a2)
tr1.appendChild(td3)
mainTbody.appendChild(tr1)
var tr2 = document.createElement('TR')
tr2.align = "center"
for(s=0;s<14;s+=2) {
    var tempTd = document.createElement('TD')
    tempTd.className = cDW
    var tempB = document.createElement('B')
    var tempText = document.createTextNode("SuMoTuWeThFrSa".substr(s,2))
    tempB.appendChild(tempText)
    tempTd.appendChild(tempB)
    tr2.appendChild(tempTd)
}
mainTbody.appendChild(tr2)
var daysWritten = 0
var firstDay = new Date(y, m, 1)
var blankDays = firstDay.getDay()
for(i=0; (i<7 && daysWritten<dim[m]); i++) {
    var tempTr = document.createElement('TR')
    if(i == 0) {
        for(j=0; j<blankDays; j++) {
            var tempTd = document.createElement('TD')
            tempTd.className = cD
            tempTr.appendChild(tempTd)
        }
        for(j=0; j<(7-blankDays); j++) {
            var tempTd = document.createElement('TD')
            tempTd.className = cD
            var tempText = document.createTextNode(++daysWritten)
            tempTd.appendChild(tempText)
            tempTr.appendChild(tempTd)
        }
    }
    else {
        // 2nd, 3rd, 4th, etc. week in the month, making sure not to go over dim[m]
        for(j=0; j<7; j++) {
            if(daysWritten == dim[m]) {
                // blank TD
                var tempTd = document.createElement('TD')
                tempTd.className = cD
                tempTr.appendChild(tempTd)
            }
            else {
                var tempTd = document.createElement('TD')
                tempTd.className = cD
                var tempText = document.createTextNode(++daysWritten)
                tempTd.appendChild(tempText)
                tempTr.appendChild(tempTd)
            }
        }
    }
    mainTbody.appendChild(tempTr)
}
var lastTr = document.createElement('TR')
var lastTd = document.createElement('TD')
lastTd.colSpan = "7"
lastTd.class = cH
var lastP = document.createElement('P')
lastP.className = "short"
var lastText = document.createTextNode("Please note: All events at the Nasher Museum of Art are free with admission and open to the public, unless otherwise noted.")
lastP.appendChild(lastText)
lastTd.appendChild(lastP)
lastTr.appendChild(lastTd)
mainTbody.appendChild(lastTr)
mainTable.appendChild(mainTbody)
mainDiv.appendChild(mainTable)
appendTo.appendChild(mainDiv)


//for(i=1;i<=42;i++) {
//    var tempTr = document.createElement('TR')
//    var x = ((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
//    var tempTd =
//    if(x == scanfortoday) {
//        x = '<span id="today">'+x+'</span>' //DD added
//    }
//    t += '<td class="'+cD+'">'+x+'</td>';
//    if(((i)%7==0)&&(i<36)) t+= '</tr><tr align="center">';
//}
//var t='<div class="'+cM+'"><table class="'+cM+'" cols="7" cellpadding="3" border="'+brdr+'" cellspacing="0"><tr align="center">';
//t+='<td class="'+cH+'"><a class=\"plain_black\" href="'+back_link+'"><font size=\"2\">&lt;&lt;</font></a></td><td colspan="5" align="center" class="'+cH+'">'+mn[m-1]+' //'+y+'</td><td class="'+cH+'"><a class=\"plain_black\" href="'+front_link+'"><font size=\"2\">&gt;&gt;</font></a></td></tr><tr align="center">';
//for(s=0;s<14;s+=2)t+='
//<td class="'+cDW+'"><b>'+"SuMoTuWeThFrSa".substr(s,2)+'</b></td>';
//t+='</tr><tr align="center">';
//for(i=1;i<=42;i++){
//var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
//if (x==scanfortoday) //DD added
//x='<span id="today">'+x+'</span>' //DD added
//t+='<td class="'+cD+'">'+x+'</td>';
//if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';
//}
//t+="<tr><td colspan=\"7\" class=\""+cH+"\"><p class=\"short\">Please note: All events at the Nasher Museum of Art are free with admission and open to the public, unless //otherwise noted.</p></td></tr>";
//return t+='</tr></table></div>';
}

