var astrWeblogDates;
var astrWeblogPerms;

function Document_load() {
	OnThisPage();
	Calendar();
	document.getElementById("SidebarCell").style.visibility = "visible";
	try { PageOnLoad(); } catch(e) {}
}


function OnThisPage() {
	if (!document.getElementById("TOC")) return false;

	var objMain = document.getElementById("Weblog");
	
	// remove whitespaces from Opera and Mozilla (how dumb)
	for (i=0;i<objMain.childNodes.length;i++) {
		if (!objMain.childNodes[i].tagName) {
			objMain.removeChild(objMain.childNodes[i]);
			i--;
		}
	}
	
	var colArticles = objMain.childNodes;
	var intArticles = colArticles.length - 1;
	
	if (intArticles < 1) return false;
	
	var objToc = document.getElementById("TOC");
	var objItem;
	objToc.className = "TOC";
	objItem = document.createElement("DIV");
	objItem.className = "SidebarTitle";
	objItem.innerHTML = "On this page";
	objToc.appendChild(objItem);
	for (i=0;i<intArticles;i++) {
		if (colArticles[i].innerHTML.length > 0) {
			objItem = document.createElement("DIV");
			objItem.className = "WeblogItem";
			objLink = document.createElement("A");
			objLink.href = "#" + colArticles[i].childNodes[0].name;
			objLink.innerHTML = colArticles[i].title;
			colArticles[i].title = ""; // prevent tooltips over entire text of article
			objItem.appendChild(objLink);
			objToc.appendChild(objItem);
		}
	}
	if (document.frmMore) {
		objItem = document.createElement("DIV");
		objItem.className = "WeblogItem MiniMore";
		objItem.style.fontWeight = "normal";
		objLink = document.createElement("A");
		objLink.href = "/before:" + document.frmMore.start.value.replace(/ /g, "_");
		objLink.innerHTML = "more&hellip;";
		objItem.appendChild(objLink);
		objToc.appendChild(objItem);
	}
	/*objItem = document.createElement("DIV");
	objItem.style.fontSize = "12px";
	objItem.style.lineHeight = "13px";
	objItem.style.marginTop = "5px";
	objItem.style.fontWeight = "normal";
	objItem.style.color = "gray";
	objItem.innerText = "These links do not function as permanent links to articles";
	objToc.appendChild(objItem);*/
	
	objItem = document.createElement("BR");
	objToc.appendChild(objItem);
}


function Calendar() {
	var objCell;
	var intDates;
	
	if (document.frmContents) {
		astrWeblogDates = document.frmContents.txtDates.value.split(",");
		astrWeblogPerms = document.frmContents.txtPerms.value.split(",");

		var datFirst = new Date(astrWeblogDates[astrWeblogDates.length - 1]);
		var datLast = new Date(astrWeblogDates[0]);
		var intFirstMonth = (datFirst.getFullYear() * 12) + datFirst.getMonth();
		var intLastMonth = (datLast.getFullYear() * 12) + datLast.getMonth();
		
		for (j=intLastMonth;j>=intFirstMonth;j--) {
			var intCalendarOffset = j - intLastMonth;
			//window.status = intCalendarOffset;
			WriteCalendar(datLast, intCalendarOffset, "WeblogContents");
		}

		intDates = astrWeblogDates.length;

		while (intDates>0) {
			objCell = document.getElementById("d" + (astrWeblogDates[intDates-1]));
			if (objCell) {
				objCell.onclick = DateClick;
				objCell.onmouseover = StatusText;
				objCell.onmouseout = StatusBlank;
				objCell.className = "Weekday DayNote" + astrWeblogPerms[intDates-1];
			}
			intDates--;
		}
	}
}

function DateClick(e) {
	var objCell;
	if (!e) {
		objCell = event.srcElement;
	} else {
		objCell = e.target;
		if (objCell.nodeType && objCell.nodeType==3) {
			objCell = objCell.parentNode;
		}
	}
	location.href = "/weblog/Default.asp?date="+objCell.id.substr(1);
}

function StatusBlank() {
	window.status = "";
}

function StatusText(e) {
	var objCell;
	if (!e) {
		objCell = event.srcElement;
	} else {
		// Why do I ever bother with these Mozilla forks?
		objCell = e.target;
		if (objCell.nodeType && objCell.nodeType==3) {
			objCell = objCell.parentNode;
		}
	}
	var strAddress = location.href;
	strAddress = strAddress.substr(strAddress, strAddress.lastIndexOf("/"));
	window.status = strAddress + "/Default.asp?date=" + objCell.id.substr(1);
}

function WriteCalendar(datToday, intOffset, strContainer) {
	var astrMonth=Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	var astrWeekday=Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
	var tr;
	var td;
	var intRow;
	var datMonthStart;
	var datMonthEnd;
	var objContentsPane;
	var objCalendar;
	var intStartDay;
	var intEndDate;
	var intDay;
	var intBlankDay;
	var strQueryDate = GetQueryString("date");
	
	datMonthStart = new Date(datToday.getFullYear(), datToday.getMonth() + intOffset, 1);
	datMonthEnd = new Date(datToday.getFullYear(), datToday.getMonth() + intOffset, 1);
	datMonthEnd.setMonth(datMonthEnd.getMonth()+1);
	datMonthEnd.setDate(-1);

	objContentsPane = document.getElementById(strContainer);
	objCalendar = document.createElement("TABLE");
	objCalendar.className = "Calendar" + (-1 * intOffset);
	objContentsPane.appendChild(objCalendar);
	objCalendar.cellPadding = 0;
	objCalendar.cellSpacing = 2;
	objCalendar.border = 0;

	try {
	intRow = 0;
	tr = objCalendar.insertRow(intRow++);
	td = tr.insertCell(0);
	td.colSpan = 7;
	td.className = "Month";
	td.innerHTML = astrMonth[datMonthStart.getMonth()]+" "+datMonthStart.getFullYear();

	tr = objCalendar.insertRow(intRow++);
	for (intWeekday=0;intWeekday<astrWeekday.length;intWeekday++) {
		td = tr.insertCell(intWeekday);
		td.className = "Weekday";
		td.innerHTML = '<DIV class="Weekday">'+astrWeekday[intWeekday]+'</DIV>';
	}

	intStartDay = datMonthStart.getDay();
	intEndDate = datMonthEnd.getDate()+1;
	
	intDay = 0;
	intBlankDay = 0;
	while (intDay<intEndDate) {
		tr = objCalendar.insertRow(intRow++);
		while (intDay<intStartDay) {
			intStartDay--;
			td = tr.insertCell(intBlankDay++);
		}
		for (intDayOfWeek=tr.childNodes.length;intDayOfWeek<7;intDayOfWeek++) {
			td = tr.insertCell(intDayOfWeek);
			if (intDay<intEndDate) {
				intDay++;
				td.innerHTML = intDay;
				td.className = "Day";
				td.id = "d" + PadNumber((datMonthStart.getMonth()+1), 2) + "/" + PadNumber(intDay, 2) + "/" + datMonthStart.getFullYear();
				if (td.id == "d" + strQueryDate) {
					td.style.backgroundColor = "white";
					td.style.color = "blue";
					td.style.border = "1px solid blue";
				}
			}
		}
	}
	} catch(e) {
		//Trace(e);
	}
}


function PadNumber(intNumber) {
	if (intNumber < 10) {
		return "0" + intNumber;
	} else {
		return intNumber;
	}
}


function Archive(intYear) {
	if (!document.frmContents) return false;
	astrWeblogDates = document.frmContents.txtDates.value.split(",");
	astrWeblogPerms = document.frmContents.txtPerms.value.split(",");
	
	intYear = (intYear<2002) ? 2002 : intYear;
	var astrMonth = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	var astrColor = Array("red", "blue", "yellow", "green", "purple", "orange", "white", "black", "pink", "brown", "gold", "silver");

	var objParentDiv = document.getElementById("Archive");
	var objCalendarTable = document.createElement("TABLE");
	objParentDiv.appendChild(objCalendarTable);
	objCalendarTable.cellPadding = 0;
	objCalendarTable.cellSpacing = 0;
	objCalendarTable.border = 0;

	var intCell = 0;
	var intRow = 0;
	var td;
	var div;

	while (intRow<4) {
		var tr = objCalendarTable.insertRow(intRow);
		while (intCell<3) {
			td = tr.insertCell();
			td.id = astrMonth[(intRow*3)+intCell];
			td.style.verticalAlign = "top";

			if (intCell < 2) {
				td = tr.insertCell();
				div = document.createElement("DIV");
				td.appendChild(div);
				div.className = "CalColSpace";
			}
			intCell++;
		}
		intRow++;
		intCell = 0;
	}

	for (intMonth=0;intMonth<12;intMonth++) {
		WriteCalendar(new Date(intYear, intMonth, 1), 0, astrMonth[intMonth]);
	}

	if (astrWeblogDates) {
		var intDates = astrWeblogDates.length;
		while (intDates>0) {
			var objCell = document.getElementById("d" + astrWeblogDates[intDates-1]);
			objCell.onclick = DateClick;
			objCell.className = "DayNote" + astrWeblogPerms[intDates-1];
			intDates--;
		}
	}
}
