	var monthsList = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	var fillBox;
	function daysInMonth(month,year) { return 32-new Date(year,month,32).getDate(); }
	function setupCalendar(fillIn, obj)
	{
		if(fillIn==fillBox)
		{
			closeCalendar();
		}
		else
		{
			fillBox = fillIn;

			var box = document.getElementById("box");
			if(!box)
			{
				var box = document.createElement("div");
				box.className="calendarBox"; box.id="box";
				document.body.appendChild(box);
			}
			var boxPos = findPos(obj);
			box.style.display="block";
			box.style.position="absolute";
			box.style.left=(parseInt(boxPos[0])+25)+"px";
			box.style.top=boxPos[1];
			generateCalendar(new Date().getMonth(), new Date().getFullYear());
		}
	}

	function findPos(obj) 
	{
		var curleft = curtop = 0;
		if (obj.offsetParent) 
		{
			curleft = obj.offsetLeft
			curtop = obj.offsetTop
			while (obj = obj.offsetParent) 
			{
				curleft += obj.offsetLeft
				curtop += obj.offsetTop
			}
		}
		return [curleft,curtop];
	}

	function passBack(day,month,year)
	{
		if(day<10) day = '0'+day;
		month = month+1;
		if(month<10) month = '0'+month;
		document.getElementById(fillBox).value=year+'-'+month+'-'+day;
		closeCalendar();
	}

	function closeCalendar()
	{
		document.getElementById("box").style.display="none";
		fillBox = null;
	}

	function generateCalendar(month,year)
	{
		var prevMonth = month-1;
		if(prevMonth<0) { prevMonth+=12; prevYear=year-1; } else { prevYear=year; }
		var nextMonth = month+1;
		if(nextMonth>11) { nextMonth-=12; nextYear=year+1; } else { nextYear=year; }
		
		var box = document.getElementById("box");
		box.style.display="block";
		box.innerHTML = "";
		
		var headerText = '<table class="calendarTable"><tr><td colspan="7" class="calHeader"><span class="closeButton"><a href="#" onClick="javascript:closeCalendar();return false;">x</a></span> <a href="#" onClick="javascript:generateCalendar('+prevMonth+','+prevYear+');return false;">&laquo;</a> '+monthsList[month]+' '+year+' <a href="#" onClick="javascript:generateCalendar('+nextMonth+','+nextYear+');return false;">&raquo;</a></td></tr>';
		headerText += '<tr><td class="dayHeader">S</td><td class="dayHeader">M</td><td class="dayHeader">T</td><td class="dayHeader">W</td><td class="dayHeader">T</td><td class="dayHeader">F</td><td class="dayHeader">S</td></tr>';

		var currentMonth, today;
		if(month== new Date().getMonth() && year== new Date().getFullYear()){currentMonth=1; today = new Date().getDate();}
		var daysThisMonth = daysInMonth(month,year);
		var dayRow='<tr>';
		for(var i=0;i!=new Date(year,month,1).getDay();i++)
		{
			dayRow+='<td></td>';
		}
		for(var j=1;j<=daysThisMonth;j++)
		{
			if(i==7)
			{
				i=0;
				dayRow+='</tr><tr>';
			}

			var dateTagSt = '<a href="#" onClick="javascript:passBack('+j+','+month+','+year+');return false;">'+j+'</a>';
			if(!currentMonth) dayRow+='<td class="dayDisplay">'+dateTagSt+'</td>';
			else if(currentMonth&&j<today) dayRow+='<td class="dayElapsed">'+dateTagSt+'</td>';
			else if(currentMonth&&j==today) dayRow+='<td class="dayToday">'+dateTagSt+'</td>';
			else dayRow+='<td class="dayDisplay">'+dateTagSt+'</td>';
			i++;
		}
		for(;i!=7;i++)
		{
			dayRow+='<td></td>';
		}
		dayRow+='</tr>';
		var endText = '</table>';

		box.innerHTML = headerText+dayRow+endText;
	}