// Calendar Popup
// copyright 11Nov2001, 30Sep2006 by Stephen Chapman, Felgall Pty Ltd

var pagebg = '#add9f5';  // pop-up background colour
var headbg = '#cccccc';  // table heading background colour
var todaybg = '#9999cc'; // current day of month background colour

// valid range for yy is 1901 to 2100 inclusive or zero for current year
// valid range for mm is 1 to 12 or zero for current month

// permission is granted to use this javascript provided that the below code is not altered
function monthlength(month,year) 
{
	var dd = new Date(year, month, 0);
	return dd.getDate();
}

function dispCal(yy,mm, sDate,arrBookings, strStartHalf, strEndHalf, strStartHalf1)
{	
	var dow = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
	var moy = ['January','February','March','April','May','June','July','August','September','October','November','December'];
	if (mm < 0 || mm > 12) 
	{
	  alert('month must be between 1 and 12'); 
	  return false;
	} 
	
	if (yy != 0 && (yy < 1901 || yy > 2100)) 
	{  
		alert('year must be after 1900 and before 2101'); 
		return false;
	}
	   
	var calendar = new Date();  
	var today = calendar.getDate(); 
	   
	calendar.setDate(1); 

	if (yy > 1900) 
	   calendar.setFullYear(yy); 

	if (mm > 0) 
	   calendar.setMonth(mm - 1);

	var yy = year = calendar.getFullYear();
	var month = calendar.getMonth();

	calendar.setDate(today); 
	var weekday = calendar.getDay();
	var daysInMonth = monthlength(month+1,year); 
	var hilite_start = '<td width="30" class="booked"><b>';
	var td_headstart = '<td width="30" align="center" class="calhead">';
	var td_start = '<td width="30" align="center" class="unbooked">';
	var td_bookstart = '<td width="30" align="center" class="booked">';
	var td_firsthalfbookstart = '<td width="30" align="center" class="firstbooked">';
	var td_lasthalfbookstart = '<td width="30" align="center" class="lastbooked">';
	var cal = '<div style="border:1pt solid #cccccc;height:160px;width:238px"><table border="0"><tr>';
	   
	if (document.getElementById) 
	{
		var mmb = month; 

		mm = month + 1; 
		var yya = yyb = yy;
		
		if (mmb <1) 
		{
			mmb += 12;
			yyb--;
		}

		var strmmb = new String(mmb);

		if(strmmb.length == 1)
		{
			var prvMn = '0'+strmmb;
			
		}
		else
		{
			var prvMn = strmmb;
		}

		var PrevYearMonth = yyb+ '' +prvMn;

		if(parseInt(PrevYearMonth) >= parseInt(sDate))
		{
			var PrevLink = '<a href="#" onclick="if (cala = dispCal('+yyb+','+mmb+','+sDate+',\''+arrBookings+'\',\''+strStartHalf+'\',\''+strEndHalf+'\',\''+strStartHalf1+'\')) {document.getElementById(\'cal\').innerHTML = cala; return false;}"><<</a>';
		}
		else
		{
			var PrevLink = '';
		}

		var mma = month + 2; 

		if (mma > 12) 
		{
			mma -= 12;
			yya++;
		}
		
		var yb = yy -1; 
		var ya = yy +1; 
		cal += '<td align="right">'+PrevLink+'</td><td></td><td colspan="3" align="center" style="font-size:11px;"><strong>' + moy[month]  + ' ' + year +  '</strong></td><td></td><td align="left"><a href="#" onclick="if (cala = dispCal('+yya+','+mma+','+sDate+',\''+arrBookings+'\',\''+strStartHalf+'\',\''+strEndHalf+'\',\''+strStartHalf1+'\')) {document.getElementById(\'cal\').innerHTML = cala; return false;}">>></a></td></tr><tr>';
	}

	else 
	{
		cal += '<div>';
	}

	for(dex=0; dex < 7; dex++) 
	{
		cal += td_headstart + dow[dex] + '</td>';
	}

	cal += '</tr><tr>'; 
	var day2 = today; 

	for (dex = today; dex > 6; dex -=7) 
		day2 = dex; 

	weekday -= day2 - 1;
	
	while (weekday < 0) 
	   weekday += 7; 
	
	for(dex=0; dex < weekday; dex++) 
	   cal += td_headstart + '</td>'; 

	var start_end = arrBookings.split(',');
	var arrStartHalf = strStartHalf.split(',');
	var arrStartHalf1 = strStartHalf1.split(',');
	var arrEndHalf = strEndHalf.split(',');
	
	for(dex=1; dex <= daysInMonth; dex++) 
	{  
		mmx = new String(mm);
		if(mmx.length == 1)
			mmx = '0'+mmx;
		
		dexx = new String(dex);
		if(dexx.length == 1)
			dexx = '0'+dexx;
		var newDate = yy+'-'+mmx+'-'+dexx;
		var newDate1 = yy+''+mmx+''+dexx;

		if(weekday == 7)
		{
			cal += '</tr><tr>'; 
			weekday = 0;
		} 

		//if in arrStartHalf and in arrEndHalf then full
		if ((strStartHalf.indexOf(newDate) != -1) && (strEndHalf.indexOf(newDate) != -1))
		{
			cal += td_bookstart + dex + '</td>';
		}
		//if in arrStartHalf and not in arrEndHalf then start half
		else if ((strStartHalf.indexOf(newDate) != -1) && (strEndHalf.indexOf(newDate) == -1))
		{
			cal += td_firsthalfbookstart + dex + '</td>';
		}
		//if not in arrStartHalf and in errEndHalf then end half
		else if ((strStartHalf.indexOf(newDate) == -1) && (strEndHalf.indexOf(newDate) != -1))
		{
			cal += td_lasthalfbookstart + dex + '</td>';
		}
		//if in arrStartHalf then full
		else if (arrBookings.indexOf(newDate) != -1)
		{
			cal += td_bookstart + dex + '</td>';
		}
		//else available
		else
		{
			cal += td_start + dex + '</b></td>';
		}

		weekday += 1;
	} 
		
	for(dex=weekday; dex < 7; dex++) 
		cal += td_headstart + ' </td>'; 

	cal += '</tr></table></div>';

	cal += '</div>'; 
	return cal;
		
}
