
// functions to be called when items clicked.
// actions will be mostly based on the value of targetid
function returnFunction(targetid,sourceid, y,m,d)
{ 
	var now = new Date();
	monthAbbreviations = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	var error=false;
	if (now.getFullYear() > y)
	{
		error=true;	
	}
	else if(now.getFullYear()==y)
	{
		if(now.getMonth()+1 == m)
		{
			if(now.getDate() > d)
			{
				error=true;	
			}
		}
		else if (now.getMonth()+1 > m)
		{
			error=true;	
		}
	}

	if (error)
	{
		document.getElementById(elemid+'_message').innerHTML="The date you picked is not valid.";
		document.getElementById(elemid+'_message').style.display="block";
	}
	else
	{
		document.getElementById(targetid).value= monthAbbreviations[m-1] + " " + d + " " + y;
		document.getElementById(elemid+'_message').style.display="none";
		document.getElementById(targetid).style.border='1px solid #888';
		switch(targetid)
		{
			case "event_date" :
				fold_unfold('event_calendar',  - document.getElementById('event_calendar').offsetWidth + 16, document.getElementById('event_date').offsetTop, 0, document.getElementById('event_date').offsetTop);
			break;
		}
	}
}

/*
Generate a string containing all the calendar code to be displayed.
you give the element id of the destination element as first parameter, and the code will be put in there.
Second parameter is the input id where the clicked date should be sent.  
The generated calendar will be set on today's date, unless you provide a month and a year as extra parameters.
This is actually how the "next month" button works, it just generate a new calendar using next month as parameter. 
Calendar uses its own CSS file 
*/
function getCalendar()
{
	elemid=arguments[0];
	targetid=arguments[1];
	var now = new Date();

	monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	dayHeaders = new Array("S","M","T","W","T","F","S");
	monthAbbreviations = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

	var result = "";
	result += '<center>';
	result += '<TABLE CLASS="cpBorder" WIDTH=144 BORDER=1 BORDERWIDTH=1 CELLSPACING=0 CELLPADDING=1>\n';
	result += '<TR>\n';
	// Code for DATE display
	// -------------------------------
	if (arguments.length > 2)
	{
		var month = arguments[2];
	}
	else
	{
		var month = now.getMonth()+1;
	}
	if (arguments.length > 3 && arguments[3]>0 && arguments[3]-0==arguments[3])
	{
		var year = arguments[3];
	}
	else
	{
		var year = now.getFullYear();
	}
	var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
	if ( ( (year%4 == 0)&&(year%100 != 0) ) || (year%400 == 0) )
	{
		daysinmonth[2] = 29;
	}
	var current_month = new Date(year,month-1,1);
	var display_year = year;
	var display_month = month;
	var display_date = 1;
	var weekday= current_month.getDay();
	var offset = 0;
		
	offset = (weekday >= 0) ? weekday : 7+weekday ;
	if (offset > 0)
	{
		display_month--;
		if (display_month < 1)
		{ 
			display_month = 12; display_year--;
		}
		display_date = daysinmonth[display_month]-offset+1;
	}
	var next_month = month+1;
	var next_month_year = year;
	if (next_month > 12)
	{
		next_month=1; next_month_year++;
	}
	var last_month = month-1;
	var last_month_year = year;
	if (last_month < 1)
	{
		last_month=12; last_month_year--;
	}
	var date_class;
	if( year == now.getFullYear() && month == now.getMonth()+1)
	{
		result += '<TD CLASS="cpMonthNavigation" WIDTH="22">&nbsp;&nbsp;</TD>\n';
	}
	else
	{
		result += '<TD CLASS="cpMonthNavigation" WIDTH="22"><A CLASS="cpMonthNavigation" onClick="getCalendar(\''+elemid+'\',\''+targetid+'\','+last_month+','+last_month_year+');">&lt;&lt;</A></TD>\n';
	}
	result += '<TD CLASS="cpMonthNavigation" WIDTH="100"><SPAN CLASS="cpMonthNavigation">'+monthNames[month-1]+' '+year+'</SPAN></TD>\n';
	result += '<TD CLASS="cpMonthNavigation" WIDTH="22"><A CLASS="cpMonthNavigation" onClick="getCalendar(\''+elemid+'\',\''+targetid+'\','+next_month+','+next_month_year+');">&gt;&gt;</A></TD>\n';
	result += '</TR></TABLE>\n';
	result += '<TABLE WIDTH=140 BORDER=0 CELLSPACING=0 CELLPADDING=1 ALIGN=CENTER>\n';
	result += '<TR>\n';
	for (var j=0; j<7; j++)
	{
		result += '<TD CLASS="cpDayColumnHeader" WIDTH="14%"><SPAN CLASS="cpDayColumnHeader">'+dayHeaders[j]+'</TD>\n';
	}
	result += '</TR>\n';
	for (var row=1; row<=6; row++)
	{
		result += '<TR>\n';
		for (var col=1; col<=7; col++)
		{
			var dateClass = "";
			if ((display_month == now.getMonth()+1) && (display_date==now.getDate()) && (display_year==now.getFullYear()))
			{
				dateClass = "cpCurrentDate";
				if(targetid=="listing_post_date")
				{
				  document.getElementById(targetid).value= monthAbbreviations[display_month-1] + " " + display_date + " " + display_year;
				}
			}
			else if (display_month == month)
			{
				dateClass = "cpCurrentMonthDate";
			}
			else
			{
				dateClass = "cpOtherMonthDate";
			}
			var selected_date = display_date;
			var selected_month = display_month;
			var selected_year = display_year;
			result += '	<TD CLASS="'+dateClass+'"><A onClick="returnFunction(\''+targetid+'\',\''+elemid+'\','+selected_year+',\''+selected_month+'\','+selected_date+');" CLASS="'+dateClass+'">'+display_date+'</A></TD>\n';
			display_date++;
			if (display_date > daysinmonth[display_month])
			{
				display_date=1;
				display_month++;
			}
			if (display_month > 12)
			{
				display_month=1;
				display_year++;
			}
		}
		result += '</TR>';
	}
	var current_weekday = now.getDay();
	if (current_weekday < 0)
	{
		current_weekday += 7;
	}
	result += '<TR>\n';
	result += '	<TD COLSPAN=7 ALIGN=CENTER>\n';
	result += '		<SPAN id="'+elemid+'_message" CLASS="cpWrongDay">The date you picked is not valid.</SPAN>\n';
	result += '</TD></TR></TABLE>\n';
	result += '</center>';
	document.getElementById(elemid).innerHTML = result;
}
