/* 

tracking.js
Matt Montag
9:09 AM 9/29/2008, 11/19/2008

Very simple recently-viewed tracking for Midwestern news pages 
Uses cookies to store and display recently visited articles

Usage: 
	<ul id="recently-viewed-ul"></ul>
	<script src="js/tracking.js"></script>
	<script type="text/javascript"> 
		var pageID = "385"; // pass the internal page id
		var pageTitle = "Stem Cell Research at Midwestern"; // pass the internal page title
		var pageURL = "news/x385.xml"; // pass the internal page url
		showRecent();
		registerRecent(pageID, pageTitle, pageURL, timestamp);
	</script>

TODO: limit the number of recent items tracked/displayed

*/

var max_entries = 5;

var ulElementID = 'recently-viewed-ul';
var d = new Date();
var timestamp = Date.UTC(d.getFullYear(), d.getMonth(), d.getDay(), d.getHours(), d.getMinutes(), d.getSeconds());
var recent = new Array(); 

recent = unserializeRecent(getCookie("recent"));
//recent = Array(Array('0', 'This Page', 'sdfsdf/blabla.html', 2342352389));

function showRecent() {
	if(recent.length > 0)
		$('recently-viewed').style.display = "block";
	var recentHtml = '';
	for(var i = 0; i < recent.length; i++) {
		recentHtml = recentHtml + "<li><a href='" + recent[i][2] + "'>" + recent[i][1] + "</a></li>\r\n";
	}
	$(ulElementID).innerHTML = recentHtml;
}

function registerRecent(pageID, pageTitle, pageURL, timestamp) {
	//if any variables are undefined, exit
	if((pageID && pageTitle && pageURL && timestamp) == false) return false; 
	
	var thisPageArr = new Array(pageID, pageTitle, pageURL, timestamp);
	
	for(var i = 0; i < recent.length; i++) {
		if (recent[i][0] == pageID)
			//if the list already contains this ID, exit
			return false;
	}
	
	recent.push(thisPageArr);
	while(recent.length > max_entries){ recent.shift() };
	setCookie("recent", serializeRecent(recent), 1);
}

function serializeRecent(arr) {
	for(var i = 0; i < arr.length; i++) {
		var item = arr[i];
		arr[i] = item.join("###");
	}
	var str = arr.join("%%%");
	return str;
}

function unserializeRecent(str) {
	var arr = new Array();
	var list = str.split("%%%");
	for(var i = 0; i < list.length; i++) {
		if(list[i] != '') {
			var item = list[i].split("###");
			arr.push(item);
		}
	}
	return arr;
}