function calendar()
{
	
	var self = this
	var now = new Date()
	var selectedDate = now
	var events = []
	
	// BUILD TOGGLE LINK --- STEVE EDIT
	var link = document.createElement("A")
	link.className = "toggleCal"	
	link.href = "#toggleCal"
	linkText = document.createTextNode("View Calendar")
	link.appendChild(linkText)
	//
	
	var container = document.createElement("DIV")
	container.className = "calendar"	
	// HIDE CALENDAR //
	container.style.display = "none"
	////
	var next = document.createElement("A")
	next.innerHTML = "Next"
	next.href="javascript:;"
	next.className="next-month"
	next.onclick = function()
	{
		selectedDate.setMonth(selectedDate.getMonth() + 1);
		refresh()
	}

	var prev = document.createElement("A")
	prev.innerHTML = "Prev"
	prev.className="prev-month"
	prev.href="javascript:;"
	prev.onclick = function()
	{
		selectedDate.setMonth(selectedDate.getMonth() - 1);
		refresh()
	}
	
	var monthCaption = document.createElement("SPAN")
	monthCaption.className="current-month"

	var table = document.createElement("TABLE")
	table.border="1"
	table.cellpadding="0"
	table.cellspacing="0"

	var Days = "MTWTFSS"
	var headRow = table.insertRow(-1)
	for (var r=0; r<7; r++)
	{
		var td = headRow.insertCell(-1)
		td.innerHTML = Days.charAt(r)
		td.className = "header"
		
	}

	container.appendChild(prev)
	container.appendChild(next)
	container.appendChild(monthCaption)
	container.appendChild(table)
	
	
	function refresh()
	{
		var selectedYear = selectedDate.getFullYear()
		var selectedMonth = selectedDate.getMonth()
		var currentDay = selectedDate.getDay()
		
		var d = 0
		var firstOfMonth = new Date(selectedYear, selectedMonth,1)
		var firstDayOfMonth = (6+firstOfMonth.getDay()) % 7
		var lastOfMonth = new Date(new Date(selectedYear, selectedMonth+1,1)-1)
		
		var day = new Date(selectedYear, selectedMonth, - firstDayOfMonth+1)
		
		monthCaption.innerHTML = ["January","February","March","April","May","June","July","August","September","October","November","December"][selectedDate.getMonth()] + ' '+ selectedDate.getFullYear()
		
		for (var r=0; r<6; r++)
		{
			var row = table.rows[r+1] || table.insertRow(-1)

			for (var c=0; c<7; c++)
			{
				var cell = row.cells[c] || row.insertCell(-1)
				var className = ""
				var currentDay = day.getDate()
				cell.day = currentDay




				cell.innerHTML = currentDay
				
				if (day.getMonth() != selectedMonth)
				{
					cell.onclick = null
					className = "empty"
				}
				else
				{
					cell.onclick = function() 
					{
						if (self.onclick) self.onclick( selectedYear, selectedMonth+1, this.day ) 
					}
					var o = self.getEvent(selectedYear, selectedMonth+1, currentDay)
					if (o)
					{	
						className = o.className
					}
				}
				
				cell.className = className
				day.setDate(currentDay + 1);
			}
			
			if (day >= lastOfMonth && table.rows[r+1])
			{
				while (table.rows[r+2])
				{
					table.deleteRow(r+2)
				}
				break;
			}
		}
	}
	
	this.getEvent = function( year, month, day )
	{
		if (events[year] && events[year][month] && events[year][month][day])
		{
			return events[year][month][day][0]
		}
		return null
	}
	
	this.addEvent = function( year, month, day, objData )
	{
		if (!events[year]) events[year]=[]
		if (!events[year][month]) events[year][month]=[]
		if (!events[year][month][day]) events[year][month][day]=[]
		events[year][month][day][0] = objData
	}


	this.appendTo = function(elm)
	{
		elm.appendChild( link )
		elm.appendChild( container )
		refresh()
	}

}




