var calendars = new Array();
var coordinate = new Object();

function RegisterCalendar(name)
{
	calendars.push(name);
}

function LocateCalendar(object)
{
	var dimensions = CalculateCoordinate(object);

	coordinate.x = dimensions[0];
	coordinate.y = dimensions[1];
}

function ShowCalendar(name,mode,yearStart,yearEnd,offsetMonth,offsetYear)
{
	var object = document.getElementById('calendar[' + name + ']');

	mode || (mode = (object.style.visibility == 'hidden') ? 1 : -1);
	
	switch (mode)
	{
		case 1:
			for (var i=0;i<calendars.length;i++) ShowCalendar(calendars[i],-1);

			selectedDate = GetSelectedDate(name);

			object.style.left = coordinate.x + 20 + 'px';
			object.style.top = coordinate.y + 'px';
			object.style.visibility = 'visible';
			object.innerHTML = MakeCalendar(name,yearStart,yearEnd,offsetMonth,offsetYear);

			break;
		case -1:
			object.style.visibility = 'hidden';
			object.innerHTML = "";

			break;
	}
}

function MakeCalendar(name,yearStart,yearEnd,offsetMonth,offsetYear)
{
	var firstDate = GetDate(selectedDate,offsetMonth,offsetYear,1);
	var today, loopDate, content = "", offset = firstDate.getDay(), currentDate = new Date();
	var monthName = new Array("jan", "feb", "maa", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec");
	var dayName = new Array("zo", "ma", "di", "wo", "do", "vr", "za");

	content += "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 CLASS='borderCalendar'>";
	content += "<TR><TD COLSPAN=7 HEIGHT=22>";
	content += "<TABLE BORDER=0 WIDTH=152 CELLPADDING=0>";
	content += "<TR>";
	content += "<TD WIDTH=12><A HREF=\"javascript: void 0;\" onClick=\"" + (GetDate(firstDate,0,-1,1).getFullYear() >= yearStart ? "ShowCalendar('" + name + "',1," + yearStart + "," + yearEnd + "," + offsetMonth + "," + (offsetYear - 1) + ")" : "void 0") + ";\"><<</A></TD>";
	content += "<TD WIDTH=8><A HREF=\"javascript: void 0;\" onClick=\"" + (GetDate(firstDate,-1,0,1).getFullYear() >= yearStart ? "ShowCalendar('" + name + "',1," + yearStart + "," + yearEnd + "," + (offsetMonth - 1) + "," + offsetYear + ")" : "void 0") + ";\"><</A></TD>";
	content += "<TD WIDTH=100 ALIGN=center>" + monthName[firstDate.getMonth()] + "</TD>";
	content += "<TD WIDTH=32 ALIGN=center>" + firstDate.getFullYear() + "</TD>";
	content += "<TD WIDTH=8 ALIGN=right><A HREF=\"javascript: void 0;\" onClick=\"" + (GetDate(firstDate,1,0,1).getFullYear() <= yearEnd ? "ShowCalendar('" + name + "',1," + yearStart + "," + yearEnd + "," + (offsetMonth + 1) + "," + offsetYear + ")" : "void 0") + ";\">></A></TD>";
	content += "<TD WIDTH=12 ALIGN=right><A HREF=\"javascript: void 0;\" onClick=\"" + (GetDate(firstDate,0,1,1).getFullYear() <= yearEnd ? "ShowCalendar('" + name + "',1," + yearStart + "," + yearEnd + "," + offsetMonth + "," + (offsetYear + 1) + ")" : "void 0") + ";\">>></A></TD>";
	content += "</TR>";
	content += "</TABLE>";
	content += "</TD></TR>";

	content += "<TR CLASS='headerCalendar'><TD ALIGN=right HEIGHT=16>" + dayName.join("</TD><TD ALIGN=right>") + "</TD></TR>";
	content += "<TR>";

	for (var i=1;i<=42;i++)
	{
		loopDate = GetDate(selectedDate,offsetMonth,offsetYear,i - offset);
		today = loopDate.getDate() == currentDate.getDate() && loopDate.getMonth() == currentDate.getMonth() && loopDate.getFullYear() == currentDate.getFullYear();

		content += "<TD ALIGN=right WIDTH=18 HEIGHT=18" + (today ? " CLASS='todayCalendar'" : "") + " onMouseOver=\"return false; this.className = 'hoverCalendar';\" onMouseOut=\"this.className = " + (today ? "'todayCalendar'" : "null") + ";\">" + (loopDate.getMonth() == firstDate.getMonth() ? "<A HREF=\"javascript: void 0;\" onClick=\"SetDate('" + name + "'," + loopDate.getTime() + "); ShowCalendar('" + name + "',-1," + yearStart + "," + yearEnd + ",0,0);\"><SPAN CLASS='" + (loopDate.getTime() == selectedDate.getTime() ? "active" : "normal") + "dayCalendar'>" + loopDate.getDate() + "</SPAN></A>" : "<SPAN CLASS='inactivedayCalendar'>" + loopDate.getDate() + "</SPAN>") + "</TD>";

		i%7 || (content += "</TR><TR>");
	}

	content += "</TR>";
	content += "</TABLE>";

	return content;
}

function GetSelectedDate(name)
{
	var date;
	var dateStr = document.getElementById(name).value;
	var year = dateStr.substring(8, 4);
	var month = dateStr.substring(3, 2);
	var day = dateStr.substring(0, 2);

	if (day + month + year/1 > 0)
	{
		date = new Date(year,month - 1,day,0,0,0,0);
	}
	else
	{
		date = new Date();
	}

	return date;
}

function SetDate(name,time)
{
	var object, date = new Date(time);
	
	object = document.getElementById(name);
	var mday = '' + date.getDate();
	if (mday.length == 1) {
		mday = '0'+mday;
	}
	var month = '' + (date.getMonth() + 1);
	if (month.length == 1) {
		month = '0'+month;
	}
	object.value = mday + '-' + month + '-' + date.getFullYear();
}

function GetDate(thisDate,offsetMonth,offsetYear,offsetDay)
{
	return new Date(thisDate.getFullYear() + offsetYear,thisDate.getMonth() + offsetMonth,offsetDay);
}

function GetIndex(object,value)
{
	var index;

	for (var i=0;i<object.options.length;i++) object.options[i].value == value && (index = i);

	return index;
}

