window.addEventListener('load', function() {
	
	// Globals
	var board = document.getElementById('board');
	
	// Helper Function
	function addMsg(msg) {
		var para = document.createElement('p');
		para.appendChild(document.createTextNode(msg));
		board.appendChild(para);
	}
	
	// Listener
	window.addEventListener('storage', function(e) {
		console.log(e);
		if ( e.storageArea === localStorage ) {
		
			// Message
			if ( e.key == "tab_msg" ) {
				console.log( e.newValue );
				addMsg( e.newValue );
			}
		
			// New Tab
			else if ( e.key == "tabs" ) {
				// console.log( e.oldValue );
				// console.log( e.newValue );
			}
		
			// Ignored
			else {
				console.log( "Ignoring: " + e.key );
			}
		
		}
	}, true);
	
	// Purger - clean out tabs that died for 15 seconds
	window.setInterval(function() {
		console.log("purging");
		var now = +(new Date()),
		    tabs = localStorage.tabs;
		if ( tabs !== undefined ) {
			var toRemove = [], toKeep = [];
			tabs = tabs.split(/,/);
			for (var i=0, len=tabs.length; i<len; i++) {
				var tabId = tabs[i],
				    tabLatest = parseInt( localStorage.getItem("tab"+tabId+"_latest") );
				( (now-tabLatest)>=15000 ? toRemove : toKeep ).push(tabId);
			}
			localStorage.tabs = toKeep.join(',');
			for (var i=0, len=toRemove.length; i<len; i++) {
				var tabId = toRemove[i],
				    tabLatest = parseInt( localStorage.getItem("tab"+tabId+"_latest") ),
				    tabStart = parseInt( localStorage.getItem("tab"+tabId+"_start") ),
				    time = (tabLatest-tabStart)/1000;
				addMsg( "Tab " + tabId + " Closed after " + time + " seconds!" );
			}
		}
		
	}, 5000);

}, true);
