    var today = new Date();
    var baseyyyy=today.getFullYear()+1;
    var basemm=11;
    var previouslyselectedobj = null;
    var previouslyselectedcolor = "";
    var basedd=2;
    var eventnamedata = new Array(31);
    var eventdescdata = new Array(31);
    var eventnum = new Array(31);
    var instance = 0;
    for (var j=0;j<31;j++)
    {
        eventnamedata[j] = "";
        eventdescdata[j] = "";
        eventnum[j] = -1;
    }
    function searchfor() 
    {
        // create query
        var filter = document.getElementById("searchfilter").value;
        var query = "SELECT eventname, eventdesc, eventdate FROM calendarevents WHERE eventname like '%" + filter + "%' OR eventdesc like '%" + filter + "%' OR eventlocation like '%" + filter + "%'";
        var t = new Date();
        var url = "../../VB/queryRunner.aspx?query=" + query + "&t="+t.getTime();
//alert(url);
        loadXMLDoc(url, "processsearch","processsearch");
    }
    function processsearch() {
        if (xmlhttparray["processsearch"].readyState == 4) {// 4 = "loaded"
        //alert(xmlhttparray["processsearch"].responseText);
            if (xmlhttparray["processsearch"].status == 200) {// 200 = "OK"
                //alert(xmlhttparray["processsearch"].responseText);
                var data = xmlhttparray["processsearch"].responseText;
                var i1 = data.indexOf("myheaders+=");
                var i2 = data.indexOf("//headerend");
                var i3 = data.indexOf("myrowdata+=");
                var i4 = data.indexOf("//rowsend");
                var i5 = data.indexOf("//finalrowcount=");
                var i6 = data.indexOf("//endfinalrowcount");

                var headerdata = data.substring(i1 + 13, i2 - 1);
                var columnheadings = headerdata.split(",");
                var rowdata = data.substring(i3 + 13, i4 - 1);
                //alert(rowdata);
                var columndata = rowdata.split(", ");
                var numtimestoloop = (columndata.length / 3) - 1;
                for (var i23 = 0; i23 < numtimestoloop; i23++) {
                    var baseindex = i23 * 3;
                    //alert(baseindex);
                    var i1 = columndata[baseindex + 2].indexOf(" ");
                    //alert(i1)
                    var tdate = columndata[baseindex + 2].substring(0, i1);
                    var tdatearray = tdate.split("/");

                    i1 = parseInt(tdatearray[1]);
                    var month = tdatearray[0];
                    var year = tdatearray[2];
                    //alert("month = "+month+" year="+year);
                    eventnamedata[i1] = " " + columndata[baseindex + 0];
                    //alert("eventnamedata["+i1+"]="+eventnamedata[i1]);
                    eventdescdata[i1] = " " + columndata[baseindex + 1];

                    var idstr = "calendarcell" + i1;
                    //alert(idstr);
                    var obj = document.getElementById("putcalendarhere");
                    try {
                        var tmm1 = parseInt(basemm) + 1;
                        var url = "events.shtm?startdate=" + month + "/1/" + year + "&enddate=" + month + "/" + daysinmonth[basemm] + "/" + year;

                        var currentname = "<a href='" + url + "'>";

                        currentname += eventnamedata[i1] + " " + eventdescdata[i1];
                        currentname += "</a>"
                        //alert(currentname);
                        obj.innerHTML = currentname;
                    }
                    catch (e) {
                        // catch the exception in case we try to get 31 in a month with less
                    }
                }
            }
        }
        else {
            //alert("Problem retrieving data:" + xmlhttparray["processsearch"].statusText);
        }
    }
    function state_Change()
    {

        if (xmlhttparray["state_Change"].readyState==4)
        {// 4 = "loaded"
//alert(xmlhttparray["state_Change"].responseText);
            if (xmlhttparray["state_Change"].status==200)
            {// 200 = "OK"
                //alert(xmlhttparray["state_Change"].responseText);
                var data = xmlhttparray["state_Change"].responseText;
                var i1 = data.indexOf("myheaders+=");  
                var i2 = data.indexOf("//headerend");
                var i3 = data.indexOf("myrowdata+=");
                var i4 = data.indexOf("//rowsend");
                var i5 = data.indexOf("//finalrowcount=");
                var i6 = data.indexOf("//endfinalrowcount");
                
                var headerdata = data.substring(i1+13,i2-1);
                var columnheadings = headerdata.split(",");
                var rowdata = data.substring(i3+13,i4-1);
                //alert(rowdata);
                var columndata = rowdata.split(", ");
                var numtimestoloop = (columndata.length/3) - 1;
                for (var i23=0; i23<numtimestoloop; i23++)
                {
                    var baseindex = i23*4;
                    //alert(baseindex);
                    var i1 = columndata[baseindex+2].indexOf(" ");
                    //alert(i1)
                    var tdate = columndata[baseindex+2].substring(0,i1);
                    var tdatearray = tdate.split("/");
                    
                    i1 = parseInt(tdatearray[1]);
                    eventnamedata[i1] = " "+columndata[baseindex+0];
                    //alert("eventnamedata["+i1+"]="+eventnamedata[i1]);
                    eventdescdata[i1] = " "+columndata[baseindex+1];
                    eventnum[i1] = columndata[baseindex+3];
                    
                    var idstr = "calendarcell"+i1;
                    //alert(idstr);
                    var obj = document.getElementById(idstr);
                    try
                    {
                        var currentname = "";
                        if (listview == false)
                        {
                            currentname += obj.innerHTML;
                            currentname += "<br><a href='javascript:showdetail(";
                            currentname += eventnum[i1]+")'>"+eventnamedata[i1]+"</a>";
                        }
                        else
                        {
                            currentname += "<table><tr><td>"+obj.innerHTML;
                            currentname += "</td><td><a href='javascript:showdetail("+eventnum[i1]+")'>"+eventnamedata[i1]+"</a>";
                            currentname += "</td></tr></table>"
                        }
                        //alert(currentname);
                        obj.innerHTML = currentname;
                    }
                    catch (e)
                    {
                        // catch the exception in case we try to get 31 in a month with less
                    }
                }
            }
        }
        else
        {
            //alert("Problem retrieving data:" + xmlhttparray["state_Change"].statusText);
        }
    }
    function showdetail(num)
    {
        var t = new Date();
        document.location.href = "eventdetail.shtm?eventnum="+num+"&t="+t.getTime();
    }
    function prevmonth()
    {
        var tmm1 = parseInt(""+basemm) - 1;
        var yyyyval = parseInt(baseyyyy);
        if (tmm1 < 0)
        {
            tmm1 = 11;
            yyyyval = yyyyval - 1;
        }
        if (yyyyval % 4 == 0)
        {
            daysinmonth[1] = 29;
        }
        else
        {
            daysinmonth[1] = 28;
        }
        var temptmm1 = tmm1+1;
        var t = new Date();
        var url = "events.shtm?startdate="+temptmm1+"/1/"+yyyyval+"&enddate="+temptmm1+"/"+daysinmonth[tmm1]+"/"+yyyyval+"&t="+t.getTime();
        //alert(url);
        document.location.href=url;
    }
    function nextmonth()
    {
        var tmm1 = parseInt(basemm) + 1 ;
        var yyyyval = parseInt(baseyyyy);
        if (tmm1 > 11)
        {
            tmm1 = 0;
            yyyyval = yyyyval + 1;
        }
        if (yyyyval % 4 == 0)
        {
            daysinmonth[1] = 29;
        }
        else
        {
            daysinmonth[1] = 28;
        }
        var temptmm1 = tmm1+1;
        var t = new Date();
        var url = "events.shtm?startdate="+temptmm1+"/1/"+yyyyval+"&enddate="+temptmm1+"/"+daysinmonth[tmm1]+"/"+yyyyval+"&t="+t.getTime();
        //alert(url);
        document.location.href=url;
    }
    var daysinmonth = new Array(12);
    daysinmonth[0] = 31;
    daysinmonth[1] = 28;
    daysinmonth[2] = 31;
    daysinmonth[3] = 30;
    daysinmonth[4] = 31;
    daysinmonth[5] = 30;
    daysinmonth[6] = 31;
    daysinmonth[7] = 31;
    daysinmonth[8] = 30;
    daysinmonth[9] = 31;
    daysinmonth[10] = 30;
    daysinmonth[11] = 31;
    var prettymonth = new Array(12);
    prettymonth[0] = "January";
    prettymonth[1] = "February";
    prettymonth[2] = "March";
    prettymonth[3] = "April";
    prettymonth[4] = "May";
    prettymonth[5] = "June";
    prettymonth[6] = "July";
    prettymonth[7] = "August";
    prettymonth[8] = "September";
    prettymonth[9] = "October";
    prettymonth[10] = "November";
    prettymonth[11] = "December";
    var prettyday = new Array(7);
    prettyday[0] = "SUN";
    prettyday[1] = "MON";
    prettyday[2] = "TUE";
    prettyday[3] = "WED";
    prettyday[4] = "THU";
    prettyday[5] = "FRI";
    prettyday[6] = "SAT";
    var tdate = new Date();
    var tyyyy = tdate.getFullYear();
    if (tyyyy%4 == 0)
    {
        daysinmonth[1] = 29;
    }
    function selectme(obj)
    {
        if (previouslyselectedobj != null)
        {
            if (previouslyselectedcolor != "")
            {
                previouslyselectedobj.bgColor = previouslyselectedcolor;
            }
            previouslyselectedcolor = obj.bgColor;
            previouslyselectedobj = obj;
        }
        else
        {
            previouslyselectedobj = obj;
            previouslyselectedcolor = obj.bgColor;
        }
        obj.bgColor = "#196E63";
        var i1str = obj.id.substring(12);
        var i1 = parseInt(i1str);
        var currentname = obj.innerHTML;
        //currentname += "<br>"+eventnamedata[i1];
        //obj.innerHTML = currentname;
        if (eventdescdata[i1] != "")
        {
            document.getElementById("eventdescriptionhere").innerHTML = currentname + ":  "+eventdescdata[i1];
        }
        else
        {
            document.getElementById("eventdescriptionhere").innerHTML = "";
        }
    }
    var listview = true;
    function togglecalendarview()
    {
        listview = false;
        draw();
    }
    function togglelistview()
    {
        listview = true;
        draw();
    }
    function jumptodate()
    {
        var mmval = document.getElementById("newmonth").value;
        var tmm1 = parseInt(mmval) + 1;
        var yyyyval = document.getElementById("newyear").value;
        if (yyyyval % 4 == 0)
        {
            daysinmonth[1] = 29;
        }
        else
        {
            daysinmonth[1] = 28;
        }
        var t = new Date();
        var url = "events.shtm?startdate="+tmm1+"/1/"+yyyyval+"&enddate="+tmm1+"/"+daysinmonth[tmm1-1]+"/"+yyyyval+"&t="+t.getTime();
        //alert(url);
        document.location.href=url;
    }
    var targetid="";
    function loadEventCalendar(id)
    {
        targetid = id;
        draw();
    }
    function draw()
    {
        var urlin = document.location.href;

        var i1 = urlin.indexOf("startdate=");
        var i2 = urlin.indexOf("&enddate=");
	var i3 = urlin.indexOf("&t=");

        var startdate = "";
        var enddate = "";
        if (i1 != -1 && i2 != -1 && i3 != -1)
        {
	    startdate = urlin.substring(i1+10,i2);
            enddate = urlin.substring(i2+9,i3);
        }
        

        var startdateobj = new Date();
                
        if (startdate != "")
        {
          var startdatearray = startdate.split("/");
          var tmm = parseInt(startdatearray[0]) - 1;
          startdateobj.setFullYear(startdatearray[2],tmm,startdatearray[1]);
        }

        var yyyy = startdateobj.getFullYear();
        var mm = startdateobj.getMonth();
        var dd = startdateobj.getDate();
        baseyyyy = yyyy;
        basemm = mm;
        basedd = dd;
        var tmm = basemm + 1;
        startdate = ""+tmm+"/1/"+baseyyyy;
        enddate = ""+tmm+"/"+daysinmonth[basemm]+"/"+baseyyyy;
        
        var query = "SELECT eventname, eventdesc, eventdate, eventnum FROM calendarevents WHERE eventdate >= '"+startdate+"' and eventdate < '"+enddate+"'";
        var url = "/VB/queryRunner.aspx?query="+query+"&t="+startdateobj.getTime();
        loadXMLDoc(url, "state_Change","state_Change");
        
        // create calendar based on start date
        calendarhtml = "<table style='font-size:10; font-face:Arial; font-weight:normal;'>";
        var currentdateobj = new Date();
        var selectmonthhtml = "<select id='newmonth'>";
        for (var j=0; j<12; j++)
        {
            selectmonthhtml += "<option value='"+j+"'";
            if (j == basemm)
            {
                selectmonthhtml += " selected";
            }
            selectmonthhtml += ">"+prettymonth[j]+"</option>";
        }
        selectmonthhtml += "</select>";
 
        var selectyearhtml = "<select id='newyear'>";
        var ty = baseyyyy-1;
        for (var i=0; i<6; i++)
        {
            ty = ty + 1;
            selectyearhtml += "<option ";
            if (ty == baseyyyy)
            {
                selectyearhtml += " selected";
            }
            selectyearhtml += " value='"+ty+"'>"+ty+"</option>";
        }
        selectyearhtml += "</select><input type='button' value='GO' onclick='jumptodate()' />";
        
        currentdateobj = startdateobj;
        
        calendarhtml += "<tr height='30px'><td align='left'>Search: <input type='text' id='searchfilter' value='' size='10'><input type='button' value='GO' onclick='searchfor()'></td><td align='center' style='font-size:16px;font-weight:bold;'>" + prettymonth[currentdateobj.getMonth()] + " " + baseyyyy + "</td><td width='230px'></td></tr>";
        calendarhtml += "<tr height='30px'><td align='left'><a href='javascript:prevmonth()'><<<<</a></td><td width='400px' align='center'>"+selectmonthhtml+selectyearhtml+"</td><td align='right'><a href='javascript:nextmonth()'>>>>></a></td></td></tr>";
        if (listview == false)
        {
            calendarhtml += "</table><table style='font-size:10; font-face:Arial; font-weight:normal;'>";
            calendarhtml += "<tr height='30px'><td width='80px' align='center'>SUN</td><td width='80px' align='center'>MON</td><td width='80px' align='center'>TUE</td><td width='80px' align='center'>WED</td><td width='80px' align='center'>THU</td><td width='80px' align='center'>FRI</td><td width='80px' align='center'>SAT</td></tr>";
        }
        calendarhtml += "</table><table style='font-size:10; font-face:Arial; font-weight:normal;'>";
        var thismonth=true;
        // set the current date obj to the date of the Sunday prior to the start of the month
        currentdateobj.setDate(1);
        if (listview == false)
        {
            dd = 1;
            var targetMonth = currentdateobj.getMonth();
            if (currentdateobj.getDay() != 0)
            {
                while (currentdateobj.getDay() != 0)
                {
                    dd -= 1;
                    if (dd == 0)
                    {
                        mm -= 1;
                        if (mm < 0)
                        {
                            mm = 11;
                            yyyy = yyyy - 1;
                        }
                        dd = daysinmonth[mm];
                    }
                    currentdateobj.setFullYear(yyyy,mm,dd);
                }
            }
        }
        var x=0;
        if (mm > 11)
        {
            mm = mm - 12;
        }
        if (listview)
        {
            while (x < daysinmonth[mm])
            {
                x++;
                dd = x;
                currentdateobj.setMonth(mm,dd);
                if (currentdateobj.getDay() == 0 || currentdateobj.getDay() == 6)
                {
                    calendarhtml += "<tr><td width='580px' id='calendarcell"+currentdateobj.getDate()+"' onclick='selectme(this)' bgcolor='#AABFBA' align='left' style='word-break:break-all;'><table><tr><td width='30px'>"+prettyday[currentdateobj.getDay()]+"</td><td>"+currentdateobj.getDate()+"</td></tr></table></td></tr>";
                }
                else
                {
                    calendarhtml += "<tr><td width='580px' id='calendarcell"+currentdateobj.getDate()+"' onclick='selectme(this)' bgcolor='#D0DCD9' align='left' style='word-break:break-all;'><table><tr><td width='30px'>"+prettyday[currentdateobj.getDay()]+"</td><td>"+currentdateobj.getDate()+"</td></tr></table></td></tr>";
                }
                if (dd > daysinmonth[mm])
                {
                    dd = 1;
                    mm++;
                    if (mm > 11)
                    {
                        mm = 0;
                    }
                    if (mm == targetMonth+1 || mm == targetMonth - 11)
                    {
                        thismonth = false;
                    }
                }
            }
            calendarhtml += "</table>";
            calendarhtml += "<table><tr><td><div id='eventdescriptionhere'></div></td></tr></table>";
            document.getElementById(targetid).innerHTML = calendarhtml;            
        }
        else
        {
            while (thismonth && x < 10)
            {
                x++;
                calendarhtml += "<tr height='40px' valign='top'>";
                for (var i=0; i<7; i++)
                {
                    if (mm == targetMonth)
                    {
                        calendarhtml += "<td width='80px' id='calendarcell"+currentdateobj.getDate()+"' onclick='selectme(this)' bgcolor='#D0DCD9' align='left' style='word-break:break-all;'>"+currentdateobj.getDate()+"</td>";
                    }
                    else
                    {
                        calendarhtml += "<td width='80px' id='calendarcelloff"+currentdateobj.getDate()+"' onclick='selectme(this)' bgcolor='#AABFBA' align='left' style='word-break:break-all;'>"+currentdateobj.getDate()+"</td>";
                    }
                    dd++;
                    if (dd > daysinmonth[mm])
                    {
                        dd = 1;
                        mm++;
                        if (mm > 11)
                        {
                            mm = 0;
                        }
                        if (mm == targetMonth+1 || mm == targetMonth - 11)
                        {
                            thismonth = false;
                        }
                    }
                    currentdateobj.setMonth(mm,dd);
                }
                calendarhtml += "</tr>";
            }
            calendarhtml += "</table>";
            calendarhtml += "<table><tr><td><div id='eventdescriptionhere'></div></td></tr></table>";
            document.getElementById(targetid).innerHTML = calendarhtml;
        }
    }