// (c) 2006 -- 2007 Kim-Ming Lau, Ph.D.
// All right reserved.

var storiesDB = new Array();

function Story(storyNode) {
	var slist = storyNode.childNodes;
	for (var j=0; j < slist.length; ++j) {
		var n = slist[j];
		if (n.nodeName == "title") {
			this.title = n.firstChild.nodeValue;
		} else if (n.nodeName == "uri") {
			this.uri = n.firstChild.nodeValue;
		} else if (n.nodeName == "isNew") {
			this.isNew = true;
		}
	}
}

function getStories(cat) {
	return storiesDB[cat];
}

function initDB(onFinished) {
	var req;
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	req.onreadystatechange = function() {
		if (req.readyState == 4 ) {
			var catNodes = req.responseXML.getElementsByTagName("category");
			for (var i=0; i < catNodes.length; ++i) {
				processCategory(catNodes[i]);
			}
			if (onFinished != null) onFinished();
		}
	};
	req.open ("GET", "stories.xml");
	req.send(null);
}

function processCategory(catNode) {
	var catName = catNode.getAttribute("name");
	var nlist = catNode.getElementsByTagName("story");
	var data = new Array();
	for (var i=0; i < nlist.length; ++i) {
		data.push(new Story(nlist[i]));
	}
	storiesDB[catName] = data;
}

function emitPlayer (divId, catName, storyId) {
	var story = getStories(catName)[storyId];

	var html = "<b>Now Playing</b>:<br>" + story.title + "<br>\n";
	html += "<embed width='140' height='70' autostart='true' type='audio/mpeg' src='" + story.uri + "'></embed>";
	document.getElementById(divId).innerHTML = html;
}

function emitStoryList (divId, catName, num, playerDivId) {
	var stories = getStories(catName);
	var n = stories.length;
	if (num > 0 && n > num) {
		n = num;
	}

	var html = "";
	for (var i=0; i < n; ++i) {
		var s = stories[i];
		html += "<a href='javascript:emitPlayer(\"" + playerDivId + "\", \"" + catName + "\", "
			+ i + ")'>" + s.title + "</a><br>\n";
	}
	document.getElementById(divId).innerHTML = html;
}

function emitStoryListMultiColumns (divId, catName, num, playerDivId, numColumns) {
	var stories = getStories(catName);
	var n = stories.length;
	if (num > 0 && n > num) {
		n = num;
	}

	var html = "";
	var c = 0;
	for (var i=0; i < n; ++i) {
		var s = stories[i];
		if (c == 0) html += "<tr>";
		html += "<td><a href='javascript:emitPlayer(\"" + playerDivId + "\", \"" + catName + "\", "
			+ i + ")'>" + s.title + "</a>";
		if (s.isNew) html += " <sup><b><i>new</i></b></sup>";
		html += "</td>";
		c++;
		if (c >= numColumns) {
			html += "</tr>\n";
			c = 0;
		}
	}
	if (c > 0) html += "</tr>";

	document.getElementById(divId).innerHTML = "<table>\n" + html + "</table>";
}
