// 0006.js by Kam-Hung Soh copyright 2004.

// In Javascript
// 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, etc. 
// 0 = January, 1 = February, 2 = March, 3 = April, etc.

var aUmlaut = "\u00e4"
var eAcute = "\u00e9"
var uCircum = "\u00fb"

var zhOne = "\u4e00"
var zhTwo = "\u4e8c"
var zhThree = "\u4e09"
var zhFour = "\u56db"
var zhFive = "\u4e94"
var zhSix =  "\u516d"
var zhSeven = "\u6708"
var zhEight = "\u4e03"
var zhNine = "\u516b"
var zhTen = "\u4e5d"
var zhEleven = "\u5341\u4e00"
var zhTwelve = "\u5341\u4e8c"
var zhMonth = "\u6708"
var zhDay = "\u661f\u671f"

var Day = new Array()
Day["de"] = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag")
Day["en"] = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
Day["fr"] = new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi")
Day["la"] = new Array("Solis dies", "Lunae dies", "Martis dies", "Mercuri dies", "Iovis dies", "Veneris dies", "Saturni dies")
Day["ms"] = new Array("Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu")
Day["zh"] = new Array(zhDay + "\u65e5", zhDay + zhOne, zhDay + zhTwo, zhDay + zhThree, zhDay + zhFour, zhDay + zhFive, zhDay + zhSix)

var Month = new Array()
Month["de"] = new Array("Januar", "Februar", "M" + aUmlaut + "rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")
Month["en"] = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
Month["fr"] = new Array("Janvier", "F" + eAcute + "vier", "Mars", "Avril", "Mai", "Juin", "Jullet", "Ao" + uCircum + "t", "Septembre", "Octobre", "Novembre", "D" + eAcute + "cembre")
Month["la"] = new Array("Ianuarius", "Februarius", "Martius", "Aprilis", "Maius", "Iunius", "Iulius", "Augustus", "September", "October", "November", "December")
Month["ms"] = new Array( "Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember")
Month["zh"] = new Array(zhOne + zhMonth, zhTwo + zhMonth, zhThree + zhMonth, zhFour + zhMonth, zhFive + zhMonth, zhSix + zhMonth, zhSeven + zhMonth, zhEight + zhMonth, zhNine + zhMonth, zhTen + zhMonth, zhEleven + zhMonth, zhTwelve + zhMonth)

function initCell(cell, className, vAlign, child) {
	cell.className = className
	cell.vAlign = vAlign
	cell.appendChild(child)
}

function daysOfMonth(language, year) {
	var body = document.body;
	var d = new Date(year, 0)

	for (var month = 0; month < 12; month++) {
		var monthText = document.createTextNode(Month[language][month] + " " + year)
		var monthHeading = document.createElement("h2")
		monthHeading.className = "Month"
		monthHeading.appendChild(monthText)
		body.appendChild(monthHeading)

		var table = document.createElement("table")
		if (month == 11) {
			table.id = "Last"
		}
		table.className = "Month"
		table.border = 1
		body.appendChild(table)
		var thead = table.createTHead()
		var tr = thead.insertRow(0)

		// Column headers
		for (var col = 0; col < 7; col++) {
			var th = tr.insertCell(tr.cells.length)
			initCell(th, "Header", "bottom", document.createTextNode(Day[language][col]))
		}
		tr = table.insertRow(table.rows.length)

		// Leading cells for the first week of the month.
		d.setMonth(month, 1)
		var prevD = new Date(year, 0)
		for (var col = d.getDay() - 1; col >= 0; col--) {
			prevD.setMonth(month, -col)
			var td = tr.insertCell(tr.cells.length)
			initCell(td, "OtherMonth", "top", document.createTextNode("(" + prevD.getDate() + ")"))
		}

		for (var date = 1; date <= 31; date++) {
			d.setMonth(month, date)
			if (d.getMonth() != month) { break }
			var td = tr.insertCell(tr.cells.length)
			initCell(td, "", td.vAlign = "top", document.createTextNode(date))
			if (d.getDay() == 6) {
				tr = table.insertRow(table.rows.length)
			}
		}

		// Trailing cells for the last week of the month.
		d.setMonth(month + 1, 1)
		var date = 1
		if (d.getDay() != 0) {
			for (var col = d.getDay(); col < 7; col++) {
				var td = tr.insertCell(tr.cells.length)
				initCell(td, "OtherMonth", "top", document.createTextNode("(" + date++ + ")"))
			}
		}

	}
}

function deleteCalendar() {
	var body = document.body
	var child = body.firstChild
	while (child) {
		var sibling = child.nextSibling
		// Some children have no className attribute.
		if (child.className && child.className.match("Month")) {
			body.removeChild(child)
		}
		child = sibling
	}
}

// If a function is called by ...
// ... a form "action=", then "this" is equal to "window".
// ... an event, then "this" is equal to the HTMLElement.
function createCalendar() {
	var frm = document.forms["calendar"]
	var year = frm["year"].value
	var language = frm["language"].value
	deleteCalendar()
	daysOfMonth(language, year)
}
