var iefix = false;
var cal = null;
var bookopen = null;
var bookclosed = null;

function createElement(e) {
	if (typeof document.createElementNS != 'undefined')
		return document.createElementNS('http://www.w3.org/1999/xhtml', e.toLowerCase());
	if (typeof document.createElement != 'undefined')
	    return document.createElement(e);
	return false;
}

function findPos(e) {
	var x = 0, y = 0;
	while (e.offsetParent) {
		x += e.offsetLeft;
		y += e.offsetTop;
		e = e.offsetParent;
	}
	return [x, y];
}

function getScrollOffset() {
	if (self.pageYOffset)
		return [self.pageXOffset, self.pageYOffset];
	else if (document.documentElement && document.documentElement.scrollTop)
		return [document.documentElement.scrollLeft, document.documentElement.scrollTop];
	else if (document.body)
		return [document.body.scrollLeft, document.body.scrollTop];
	else
		return [0, 0];
}

function getWindowDim() {
	if (self.innerHeight)
		return [self.innerWidth, self.innerHeight];
	else if (document.documentElement && document.documentElement.clientHeight)
		return [document.documentElement.clientWidth, document.documentElement.clientHeight];
	else if (document.body)
		return [document.body.clientWidth, document.body.clientHeight];
	else
		return [0, 0];
}

function sec_to_time(sec) {
	sec = parseInt(sec, 10);
	var m = Math.floor(sec / 60);
	sec %= 60;
	var h = Math.floor(m / 60);
	m %= 60;
	if (sec < 10) sec = '0' + sec;
	if (m < 10) m = '0' + m;
	if (h < 10) h = '0' + h;
	return h + ':' + m + ':' + sec;
}

function table_alternate(table) {
	var i, j, k, t;
	k = 0;
	for (i = 0; i < table.tBodies.length; i++) {
		t = table.tBodies[i].rows;
		for (j = 0; j < t.length; j++) {
			if ((k & 1) == 0)
				t[j].className = '';
			else
				t[j].className = 'alt';
			k++;
		}
	}
}

function ugly_date(td) {
	var result = 'jan feb mar apr may jun jul aug sep oct nov dec '.indexOf(td.substring(3, 6) + ' ') / 4 + 1;
	if (result < 10) result = '0' + result;
	return (td.substring(7, 11) +  result + td.substring(0, 2) + td.substring(11));
}

/************************************************************************/
/* http://www.quirksmode.org/quirksmode.js */

function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = '; expires=' + date.toGMTString();
	} else var expires = '';
	//var ppath = window.location.pathname.substring(1, window.location.pathname.lastIndexOf('/'));
	document.cookie = name + '=' + value + expires + '; path=/lokiwoe';
}

function readCookie(name) {
	var nameEQ = name + '=';
	var ca = document.cookie.split(';');
	for(var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) == ' ') c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name, '', -1);
}

/************************************************************************/
/* simple table sorting */

function table_sort() {
	var ary, i, result;
	var td = this.parentNode;
	var col = td.className.match(/\bsortcol([0-9]+)\b/);
	if (col)
		col = parseInt(col[1], 10);
	else
		col = td.cellIndex;

	var table = td.parentNode.parentNode.parentNode;
	var sortasc = (table.tHead.sortasc[col] = !table.tHead.sortasc[col]);

	if (col == table.firstcol && sortasc == true) {
		eraseCookie(table.id + '_sortby');
		eraseCookie(table.id + '_sortdir');
	} else {
		createCookie(table.id + '_sortby', col, 7);
		createCookie(table.id + '_sortdir', sortasc ? 'asc' : 'desc', 7);
	}
	if (table.sortby == col) {	// already sorted by this column, so just reverse rows
		ary = new Array();
		for (i = 0; i < table.tBodies[0].rows.length; i++)
			ary[i] = table.tBodies[0].rows[i];
		for (i = ary.length - 1; i >= 0; i--)
			table.tBodies[0].appendChild(ary[i]);
		if (table.className.match(/\bzebra\b/)) table_alternate(table);
		this.src = this.src.replace(/sort_[^.]+/, 'sort_' + (sortasc ? 'up' : 'down'));
		return;
	}

	ary = new Array();
	for (i = 0; i < table.tBodies[0].rows.length; i++)
		eval('ary[ary.length] = [' + table.id +
			'_getsortkey(table.tBodies[0].rows[i].cells[col], col), table.tBodies[0].rows[i]];');
	ary.sort(function(a, b) {
		if (a[0] == b[0]) return 0;
		if (a[0] < b[0]) return -1;
		return 1;
	});
	if (!sortasc) ary.reverse();

	for (i = 0; i < ary.length; i++)
		table.tBodies[0].appendChild(ary[i][1]);

	if (table.sortby != null)
		table.tHead.sortptr[table.sortby].src =
			table.tHead.sortptr[table.sortby].src.replace(/sort_[^.]+/, 'sort_none');
	table.sortby = col;
	this.src = this.src.replace(/sort_[^.]+/, 'sort_' + (sortasc ? 'up' : 'down'));
	if (table.className.match(/\bzebra\b/)) table_alternate(table);
}

function table_makeunsortable(table) {
	var blah, e, i, j;
	e = table.tHead.getElementsByTagName('th');
	for (i = 0; i < e.length; i++) {
		blah = e[i].getElementsByTagName('img');
		for (j = 0; j < blah.length; j++) {
			if (blah[j].className.match(/\bsortbutton\b/))
				blah[j].onclick = null;
		}
	}
}

function table_makesortable(table) {
	var blah, col, e, i, j;

	table.firstcol = 1024;
	table.sortby = null;
	if (!table.tHead) table.tHead = table.getElementsByTagName('thead')[0];
	e = table.tHead.getElementsByTagName('th');
	table.tHead.sortasc = new Array();
	table.tHead.sortptr = new Array();
	for (i = 0; i < e.length; i++) {
		blah = e[i].getElementsByTagName('img');
		for (j = 0; j < blah.length; j++) {
			if (!(blah[j].className.match(/\bsortbutton\b/))) continue;
			blah = blah[j];
			col = blah.parentNode.className.match(/\bsortcol([0-9]+)\b/);
			if (col) col = parseInt(col[1], 10);
			else col = blah.parentNode.cellIndex;
			if (col < table.firstcol) table.firstcol = col;
			table.tHead.sortptr[col] = blah;
			table.tHead.sortasc[col] = false;
			blah.src = blah.src.replace(/sort_[^.]+/, 'sort_none');
			blah.onclick = table_sort;
			blah.style.cursor = 'pointer';
			break;
		}
	}
	e = readCookie(table.id + '_sortdir');
	blah = ((e == 'asc') ? false : true);
	e = readCookie(table.id + '_sortby');
	if (e) {
		e = parseInt(e, 10);
		if (typeof table.tHead.sortasc[e] == 'boolean') {
			table.tHead.sortasc[e] = blah;
			table.tHead.sortptr[e].onclick();
		}
	}
}

/************************************************************************/

window.onunload = function() {
	if (document.addEventListener) {
		document.removeEventListener("DOMContentLoaded", core_init, false);
	}
	var ary, j;
	var tables = document.getElementsByTagName('table');
	for (var i = 0; i < tables.length; i++) {
		if (tables[i].className.match(/\bsortable\b/)) table_makeunsortable(tables[i]);
		if (tables[i].className.match(/\baccordion\b/)) {
			ary = tables[i].getElementsByTagName('img');
			for (j = 0; j < ary.length; j++)
				if (ary[j].className.match(/\bbook\b/))
					ary[j].onclick = null;
		}
	}
	var e = document.getElementById('datetext');
	if (e) e.onfocus = null;
	if (cal) cal.cleanup();
	if (self.exit) exit();
}

// Dean Edwards/Matthias Miller/John Resig
function core_init() {
	// quit if this function has already been called
	if (arguments.callee.done) return;

	// flag this function so we don't do the same thing twice
	arguments.callee.done = true;

	// kill the timer
	if (_timer) {
		clearInterval(_timer);
		_timer = null;
	}
//////////////////////////////////////////////////
	if (!document.createElement || !document.getElementsByTagName)
		return;

	var ary, blah, e, i, j, table;
	var accordionflag = false;
	var tables = document.getElementsByTagName('table');
	for (i = 0; i < tables.length; i++) {
		if (tables[i].className.match(/\bsortable\b/)) table_makesortable(tables[i]);
		if (tables[i].className.match(/\baccordion\b/)) {
			if (!accordionflag) {
				bookopen = new Image();
				bookopen.src = '/lokiwoe/img/woe_book_open.gif';
				bookclosed = new Image();
				bookclosed.src = '/lokiwoe/img/woe_book_closed.gif';
				accordionflag = true;
			}
			table = tables[i];
			if (!table.tHead)
				table.tHead = table.getElementsByTagName('thead')[0];
			ary = table.tHead.getElementsByTagName('img');
			for (j = 0; j < ary.length; j++) {
				if (!(ary[j].className.match(/\bbook\b/))) continue;
				table.redbutton = ary[j];
				ary[j].onclick = function() {
					var ary, i, j, k;
					var tr = this.parentNode.parentNode;
					var table = tr.parentNode.parentNode;
					var trs = table.rows;
					if (this.src == bookopen.src) {
						eraseCookie(table.id + '_expand');
						this.src = bookclosed.src;
						j = 'none';
					} else {
						createCookie(table.id + '_expand', 'yes', 7);
						this.src = bookopen.src;
						j = 'inline';
					}
					for (i = 0; i < trs.length; i++) {
						if (trs[i] == tr) continue;
						ary = trs[i].getElementsByTagName('img');
						for (k = 0; k < ary.length; k++) {
							if (ary[k].className.match(/\bbook\b/)) {
								ary[k].src = this.src;
								break;
							}
						}
						ary = trs[i].getElementsByTagName('span');
						for (k = 0; k < ary.length; k++)
							if (ary[k].className.match(/\bhidden\b/))
								ary[k].style.display = j;
					}
				};
				break;
			}
			ary = table.tBodies[0].rows;
			for (j = 0; j < ary.length; j++) {
				blah = ary[j].getElementsByTagName('img');
				for (e = 0; e < blah.length; e++) {
					if (!(blah[e].className.match(/\bbook\b/))) continue;
					blah[e].onclick = function() {
						var ary, i, j;
						var tr = this.parentNode.parentNode;
						if (this.src == bookopen.src) {
							this.src = bookclosed.src;
							j = 'none';
						} else {
							this.src = bookopen.src;
							j = 'inline';
						}
						ary = tr.getElementsByTagName('span');
						for (i = 0; i < ary.length; i++)
							if (ary[i].className.match(/\bhidden\b/))
								ary[i].style.display = j;
					};
					break;
				}
			}
			if (table.redbutton) {
				if (readCookie(table.id + '_expand') === 'yes')
					table.redbutton.onclick();
			}
		}
	}

	e = document.getElementById('datetext');
	if (e) {
		cal = new Calendar(e, woe_min_year, woe_min_month, woe_min_day, woe_max_year, woe_max_month, woe_max_day);
		e.onfocus = function() {
			if (cal.showing()) return;
			cal.show();
			this.select();
		}
	}

	if (self.init) init();

	// disable link to current page
	e = document.getElementById('n' + document.getElementsByTagName('body')[0].getAttribute('id').substring(1));
	if (e) {
		e.getElementsByTagName('a')[0].onclick = function() { return false; };
	}
}

/* for Mozilla/Opera9 */
if (document.addEventListener) {
	document.addEventListener("DOMContentLoaded", core_init, false);
}

/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
	document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
	var script = document.getElementById("__ie_onload");
	script.onreadystatechange = function() {
		if (this.readyState == "complete") {
			core_init(); // call the onload handler
		}
	};
/*@end @*/

/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
	var _timer = setInterval(function() {
		if (/loaded|complete/.test(document.readyState)) {
			core_init(); // call the onload handler
		}
	}, 10);
}

/* for other browsers */
window.onload = core_init;

