var selected = '';
var recentBoxes = new Array();

addLoadEvent(resizePage);
addLoadEvent(loadRecent);

function addLoadEvent(func) {
	var old = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			if (old)
				old();
			func();
		}
	}
}
function addEvent(obj, evtType, fxn) {
	if (obj.addEventListener) {
		obj.addEventListener(evtType, fxn, false);
		return true;
	}
	else if (obj.attachEvent) {
		var ret = obj.attachEvent('on' + evtType, fxn);
		return ret;
	}
	else
		return false;
}
function resizePage() {
	if (document.getElementById('articles')) {
		var divs = document.getElementsByTagName('div');
		for (var x = 0;x < divs.length;x++) {
			if (divs[x].className == 'article') {
				var id = divs[x].id;
				var num = id.substring(id.lastIndexOf('-') + 1, id.length) - 0;
				if (num % 2 == 0) {
					var curr = divs[x].parentNode;
					var prev = document.getElementById('article-' + ((num - 1) + '')).parentNode;
					if (prev.clientHeight > curr.clientHeight)
						curr.style.height = prev.clientHeight + 'px';
					else if (prev.clientHeight < curr.clientHeight)
						prev.style.height = curr.clientHeight + 'px';
				}
			}
		}
		
		var imgs = document.getElementsByTagName('img');
		for (var x = 0;x < imgs.length;x++) {
			if (imgs[x].clientWidth > 340) {
				//keep the image proportionate
				imgs[x].style.height = imgs[x].clientHeight/(imgs[x].clientWidth/340) + 'px';
				imgs[x].style.width = '340px';
			}
		}
	}
	if (document.getElementById('right-bar-nav')) {
		if (document.getElementById('right-bar-nav').clientHeight < document.getElementById('left-bar-nav').clientHeight)
			document.getElementById('right-bar-nav').style.height = document.getElementById('left-bar-nav').clientHeight + 'px';
	}
}
function loadRecent() {
	if (document.getElementById('happenings-box')) {
		var box = document.getElementById('happenings-box');
		for (var x = 0;x < box.childNodes.length;x++) {
			if (box.childNodes[x].tagName.toUpperCase() == 'H3')
				addShowRecent(box.childNodes[x]);
		}
	}
}
function addShowRecent(obj) {
	addEvent(obj, 'click', function(e){showRecent(obj.id);});
	addEvent(obj, 'mouseover', function(e){highlight(obj.id, true);});
	addEvent(obj, 'mouseout', function(e){highlight(obj.id, false);});
	recentBoxes[recentBoxes.length] = obj;
}
function highlight(id, over) {
	if (id != selected)
		document.getElementById(id).className = over ? 'over' : '';
}
function showRecent(id) {
	var boxObj = document.getElementById('happenings-box');
	var detailObj = document.getElementById('happenings-detail');
	var recentObj = document.getElementById(id + '-detail');
	
	
	for (var x = 0;x < detailObj.childNodes.length;x++) {
		if (detailObj.childNodes[x].tagName.toUpperCase() == 'DIV' && detailObj.childNodes[x].id != (id + '-detail'))
			detailObj.childNodes[x].style.display = 'none';
	}
	
	boxObj.style.borderBottom = '0';
	detailObj.style.display = 'block';
	recentObj.style.display = 'block';
	
	selected = id;
	document.getElementById(selected).className = 'selected';
	for (var x = 0;x < recentBoxes.length;x++) {
		if (recentBoxes[x].id != selected)
			recentBoxes[x].className = '';
	}
}
function closeDetail() {
	document.getElementById('happenings-detail').style.display = 'none';
	for (var x = 0;x < recentBoxes.length;x++)
		recentBoxes[x].className = '';
	selected = '';
}
function setTwitterStatus(obj) {
	var id = obj[0].user.id;
	document.getElementById('twitter-status').innerHTML = '<h4>What I\'m Doing</h4><img src="' + obj[0].user.profile_image_url + '" /><div><p>' + obj[0].text + '</p><h5><a href="http://www.twitter.com/' + obj[0].user.screen_name + '" title="Follow me @ Twitter">' + relative_time(obj[0].created_at) + '</a></h5></div>';
}
function relative_time(time_value) {
	var values = time_value.split(" ");
	time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
	
	var parsed_date = Date.parse(time_value);
	var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
	
	var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
	delta = delta + (relative_to.getTimezoneOffset() * 60);

	if (delta < 60)
    	  return 'less than a minute ago';
    	else if (delta < 120)
      		return 'about a minute ago';
	else if (delta < (45*60))
		return (parseInt(delta / 60)).toString() + ' minutes ago';
	else if (delta < (90*60))
		return 'about an hour ago';
	else if (delta < (24*60*60))
		return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
	else if (delta < (48*60*60))
		return '1 day ago';
	else
		return (parseInt(delta / 86400)).toString() + ' days ago';
}