var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x<0||x>9?"":"0")+x}

function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["NNN"]=MONTH_NAMES[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
		}
	return result;
	}

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function writeCalendar(dates, curMonth, curYear, town) {
	var day_of_week = new Array('S','M','T','W','T','F','S');
	var month_of_year = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
	var prevMonth = curMonth - 1;
	var prevYear = curYear;
	if (prevMonth < 1)
	{
		prevMonth = 12;
		prevYear = curYear - 1;
	}
	
	var nextMonth = curMonth + 1;
	var nextYear = curYear;
	if (nextMonth > 12)
	{
		nextMonth = 1;
		nextYear = nextYear + 1;
	}

	var Calendar = new Date();
	
	var year = curYear;	    // Returns year
	var month = curMonth - 1;    // Returns month (0-11)
	var today = Calendar.getDate();    // Returns day (1-31)
	var weekday = Calendar.getDay();    // Returns day (1-31)
	
	var DAYS_OF_WEEK = 7;
	var DAYS_OF_MONTH = 31;
	var cal;
	
	aDates = new Array();
	aDates = dates.split(",");
	
	Calendar.setDate(1);    // Start the calendar day at '1'
	Calendar.setMonth(month);    // Start the calendar month at now
	
	var TR_start = '<tr>';
	var TR_end = '</tr>';
	var highlight_start = '<td class="marked">';
	var highlight_end   = '</td>';
	var TD_start = '<td class="days">';
	var TD_end = '</td>';
	
	// BEGIN CODE FOR CALENDAR
	
	cal =  '<table cellspacing="0" cellpadding="0" border="0"><tr><td>';
	cal += '<table cellspacing="0" cellpadding="2" border="0">' + TR_start;
	cal += '<td colspan="' + DAYS_OF_WEEK + '" class="month">';

	cal += '<img src="/files/images/layout/calendarLeft.gif" id="imgCalendarLeft" class="calendarArrow" onMouseOut="MM_swapImgRestore();" onMouseOver="MM_swapImage(' + "'" + 'imgCalendarLeft' + "'" + ', ' + "'" + "'" + ', ' + "'" + '/files/images/layout/calendarLeft_.gif' + "'" + ',1)" onclick="writeCalendar(' + "'" + dates + "'" + ', ' + prevMonth + ', ' + prevYear + ', ' + town + ');" />  ' + month_of_year[month]  + '   ' + year + '  <img src="/files/images/layout/calendarRight.gif" id="imgCalendarRight" class="calendarArrow" onMouseOut="MM_swapImgRestore();" onMouseOver="MM_swapImage(' + "'" + 'imgCalendarRight' + "'" + ', ' + "'" + "'" + ', ' + "'" + '/files/images/layout/calendarRight_.gif' + "'" + ',1)"  onclick="writeCalendar(' + "'" + dates + "'" + ', ' + nextMonth + ', ' + nextYear +  ', ' + town + ');" />' + TD_end + TR_end;
	cal += '<tr height="4"><td colspan="' + DAYS_OF_WEEK + '" class="month"></td></tr>';
	cal += TR_start;
	
	// LOOPS FOR EACH DAY OF WEEK
	for(index=0; index < DAYS_OF_WEEK; index++)
	{
		cal += TD_start + '<strong>' + day_of_week[index] + '</strong>' + TD_end;
	}
	
	cal += TD_end + TR_end;
	cal += TR_start;
	
	// FILL IN BLANK GAPS UNTIL TODAY'S DAY
	for(index=0; index < Calendar.getDay(); index++)
	cal += TD_start + '  ' + TD_end;
	
	// LOOPS FOR EACH DAY IN CALENDAR
	for(index=0; index < DAYS_OF_MONTH; index++)
	{
	if( Calendar.getDate() > index )
	{
	  // RETURNS THE NEXT DAY TO PRINT
	  week_day =Calendar.getDay();
	  
	  linkDate = (index + 1) + '-' + (month + 1) + '-' + year;
	  // START NEW ROW FOR FIRST DAY OF WEEK
	  if(week_day == 0)
	  cal += TR_start;
	
	  // SET VARIABLE INSIDE LOOP FOR INCREMENTING PURPOSES
	  var day  = Calendar.getDate();
	
	  // HIGHLIGHT ACTIVE DATES
	  var highlighted = 0;
	  for (var j=0; j < aDates.length; j = j + 1)
	  {
		var myDate=new Date();
		var calendarDate=new Date();
		myDate.setFullYear(Left(aDates[j], 4), Right(Left(aDates[j], 7), 2) - 1, Right(aDates[j], 2) - 1);
		calendarDate.setFullYear(year,month,index);
		if (formatDate(calendarDate, 'dd-MM-yyyy') == formatDate(myDate, 'dd-MM-yyyy'))
		{
			highlighted = 1;
	  	}
	  }
	  
	  if (highlighted == 1)
	  	{
			if (town == -1)
			{
				cal += highlight_start + '<a href="/index.cfm/page/204/date/' + linkDate + '">' + day + '</a>' + highlight_end + TD_end;
			} else {
				cal += highlight_start + '<a href="/index.cfm/page/204/town/' + town + '/date/' + linkDate + '">' + day + '</a>' + highlight_end + TD_end;
			}
		}
	  else
	 	{ 
			if (town == -1)
			{
				cal += TD_start + '<a href="/index.cfm/page/204/date/' + linkDate + '">' + day + '</a>' + TD_end;
			} else {
				cal += TD_start + '<a href="/index.cfm/page/204/town/' + town + '/date/' + linkDate + '">' + day + '</a>' + TD_end;
			}
		}
		
	  // END ROW FOR LAST DAY OF WEEK
	  if(week_day == DAYS_OF_WEEK)
	  cal += TR_end;
	  }
	
	  // INCREMENTS UNTIL END OF THE MONTH
	  Calendar.setDate(Calendar.getDate()+1);
	
	}// end for loop
	
	cal += '</td></tr></table></table>';
	
	//  PRINT CALENDAR
	document.getElementById('calendar').innerHTML = cal;
	
	//  End
}
