// JavaScript Document

var box;
var div;
var box_id;
var div_id;
var bigDate;
	
function clearCal(value) {
	div.innerHTML = '';
	
	if (value != '')
		box.value = value;
	
	box = undefined;
	div = undefined;
	box_id = undefined;
	div_id = undefined;
}

function updateDate(date) {

	var month = bigDate.getMonth() + 1;
	var year = bigDate.getFullYear();

	if (month < 10)
		month = "0" + month;
	if (date < 10)
		date = "0" + date;

	clearCal(year + "-" + month + "-" + date);
}

function init(mbox, mdiv) {	
	if (box_id)
		clearCal('');
		
	box = mbox;
	div = mdiv;
	box_id = mbox.id;
	div_id = mdiv.id;
	bigDate = new Date();
	showCal();
}

function changeMonth(change) {
	bigDate.setMonth(bigDate.getMonth() + change);
	showCal();
}

function getMonth(m) {
	var m_array = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
	
	return m_array[m];
}

function getMonthLength(m) {
	var d_array = [31,28,31,30,31,30,31,31,30,31,30,31];
	var year = bigDate.getFullYear();
	if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
		d_array[1] = 29;
	
	return d_array[m];
}

function firstOfMonth(d) {
	d.setDate(1);

	return d.getDay();
}

function drawTable(firstOfMonth, numberDays, month) {
	var today = new Date();
	var count = 0;
	var table = '<table class="small_calendar_table" cellpadding="0" cellspacing="0">';
	
	table += '<tr class="month">';
	table += '<td onclick="changeMonth(-1);"><a href="javascript: changeMonth(-1);">&lt;</a></td><td colspan="5" align="center">' + month + "&nbsp;" + bigDate.getFullYear() + '</td><td onclick="changeMonth(1);"><a href="javascript: changeMonth(1);">&gt;</a></td></tr>';
	
	table += '<tr class="week"><td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td></tr>';
	
	for (var i = 0; i < Math.ceil((numberDays + firstOfMonth) / 7); i++) {
		table += '<tr>';
		for (var j = 0; j < 7; j++) {
			if (firstOfMonth <= 7*i+j)
				count++;

			table += '<td';
			if (count > 0 && count <= numberDays)
				table += ' onclick="updateDate(' + count + ');"';	
				
			if ((7*i+j) % 2 == 0)
				table += ' class="darkbg"'; 
				
			table += (today.getFullYear() == bigDate.getFullYear() && today.getDate() == count && today.getMonth() == bigDate.getMonth()) ? ' style="font-weight: bold">' : '>';
			
			if (count > 0 && count <= numberDays)
				table += '<a href="javascript: updateDate(' + count + ');">' + count + '</a>';
			table += '</td>';
		}
		table += '</tr>';
	}

	table += '<tr><td colspan="7" onclick="clearCal(\'\');"><a href="javascript: clearCal(\'\');">Close</a></td></tr>';
	table += '</table>';

 	return table;
}

function showCal() {
	var month = bigDate.getMonth();

	var monthName = getMonth(month);
	var monthLength = getMonthLength(month);
	var first = firstOfMonth(bigDate);	

	var table = drawTable(first, monthLength, monthName);	
	var elem = document.getElementById(div_id);
	elem.innerHTML = table;	
}// JavaScript Document
