origpos = [0,0];
subnav = '';
// this runs at onload
window.onload = function() {
	//shiftEvents(new Date());
	menuHandler();
}


function shiftEvents(curtime) {
	var months = getElementsByClass("month", document.getElementById("calendar"));
	var definemonths = { january:0,february:1,march:2,april:3,may:4,june:5,july:6,august:7,september:8,october:9,november:10,december:11 };
	var pastevents = document.getElementById("pastevents").getElementsByTagName("ol")[0];
	for(var i = 0; i < months.length; i++) {
		var thismonth = definemonths[months[i].id];
		if(thismonth < curtime.getMonth()) {
			removeClass(document.getElementById("nav_sub").lastChild, "hidden");
			removeClass(pastevents.parentNode, "hidden");
			pastevents.appendChild(months[i]);
		}
		else if(thismonth == curtime.getMonth()) {
			removeClass(document.getElementById("nav_sub").lastChild, "hidden");
			removeClass(pastevents.parentNode, "hidden");
			var obj = months[i].cloneNode(true);
			obj.id += "new";
			pastevents.appendChild(obj);
			var freshmonth = document.getElementById(obj.id).getElementsByTagName("ol")[0];
			freshmonth.innerHTML = "";
			
			var lieval = document.getElementById(months[i].id).getElementsByTagName("li");
			for(var j = 0; j < lieval.length; j++) {
				var datearray = getElementsByClass("date",lieval[j],"span")[0].innerHTML.split(" ");
				var datestring = datearray[2]
				datestring = datestring.replace(/(st|nd|rd|th)+$/, "");
				
				var alttime = new Date();
				alttime.setMonth(thismonth);
				alttime.setDate(datestring);
				if(alttime < curtime) {
					freshmonth.appendChild(lieval[j]);
					j--;
				}
			}
		}
	}
}


function menuHandler() {
	subnav = document.getElementById("nav_sub");
	origpos = findPos(subnav);
	wrapx = findPos(document.getElementById("wrapper"))[0];
	// fixes an element to the top of the window as it scrolls off the top,
	// sets it free when it would scroll back on
	window.onscroll = function() {
		if(origpos[1] <= document.documentElement.scrollTop) {
			addClass(subnav, "fixattop");
			subnav.style.right = (wrapx-1) + "px";
		}
		else {
			removeClass(subnav, "fixattop");
			subnav.style.right = "0px";
		}
	}
}





// finds X,Y position of element in the document
// from http://www.quirksmode.org/js/findpos.html
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
		}
		while (obj = obj.offsetParent);
		return [curleft,curtop];
	}
}

// cross-browser event listeners
// from http://www.quirksmode.org/js/eventSimple.html
function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}

function removeEventSimple(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
}



// Class manipulation functions
// http://www.openjs.com/scripts/dom/class_manipulation.php
function hasClass(ele,cls) {
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
function addClass(ele,cls) {
	if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}
function removeClass(ele,cls) {
	if (hasClass(ele,cls)) {
		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}

// from http://www.dustindiaz.com/getelementsbyclass/
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}