var PWCNews = {};
PWCNews.getSpotlightItems = function(limit, callback) {
	limit = limit || 5;
	if (!this.connection) { this.connection = new PWCNews.Connector(); }
	this.connection.get("http://actueel.nl.pwc.com/SpotlightItemsAsJSON.jsp?limit=" + limit + "&time=" + (new Date().getTime()), callback);
}
PWCNews.newsItemsToLinkedListItems = function(newsitems) {
	var i, newsitem, li, a, listitems;
	if (newsitems.length == 0) { throw("Empty newsitems array passed."); }
	listitems = [];
	for (i = 0; i < newsitems.length; i++) {
		newsitem = newsitems[i];
		li = document.createElement("li");
		a = document.createElement("a");
		a.setAttribute("href", newsitem.url);
		a.setAttribute("title", newsitem.title);
		a.appendChild(document.createTextNode(newsitem.title));
		li.appendChild(a);
		listitems.push(li);
	}
	return listitems;
}
PWCNews.newsItemsToLinkList = function(newsitems) {
	var listitems = PWCNews.newsItemsToLinkedListItems(newsitems);
	var list = document.createElement("ul");
	for (var i = 0; i < listitems.length; i++) {
		list.appendChild(listitems[i]);
	}
	return list;
}

PWCNews.Connector = function() {
	// private
	var scriptCounter = 0;
	var head = document.getElementsByTagName("head")[0];
	var self = this;
	// public
	this.id = "PWCNewsConnector" + Math.round(Math.random() * 1000);
	
	// private
	var createScriptNode = function(url) {
		var scriptId = self.id + 'PWCNewsScript' + scriptCounter++;
		var script = document.createElement("script");

		script.setAttribute("type", "text/javascript");
		script.setAttribute("src", url);
		script.setAttribute("id", scriptId);
		
		head.appendChild(script);
	}
	
	// public
	this.get = function(url, callback) {
		callback = callback.toString();
		if (callback.indexOf("function ") > -1) {
			callback = callback.substring("function ".length, callback.indexOf("("));
		}
		createScriptNode(url + (url.indexOf("?") > -1 ? "&" : "?") + "callback=" + callback);
	}
}
