var settings = {
	"feedhubUrl":"http://maps.eniro.com/feedhub/service?feedURL=",
	"reviewUrl":"http://api.eniro.com/feeds/review/search?",
	"postfix":"..."
};
var Settings = {
	getSetting : function(id){
		return settings[id];
	}
}
function removeTags(text){
	return text.replace(/<\/?[^>]+(>|$)/g, "");
}

function display(json) {
	var wrapperArray = $$('[id*="feed-wrapper-"]');
	var titleArray = $$('[id*="feed-title-"]');
	var contentArray = $$('[id*="feed-content-"]');
	var linkArray = $$('[id*="feed-link-"]');
	var ratingArray = $$('[id*="feed-rating-"]');
	var elements = Math.max(titleArray.size(), Math.max(contentArray.size(), Math.max(linkArray.size(), ratingArray.size())))
	var maxElements = Math.max(elements, wrapperArray.size());
	var wrapper = wrapperArray.size()>0;
	var i=0;
	for(; i<json.features.length && i<elements; i++)
	{
		var o = json.features[i];
		if (o.properties['title'] && i<titleArray.size()) {
			var title = o.properties['title'];
			if (typeof getTitleMaxLength != "undefined") {
				var l = getTitleMaxLength();
				title = removeTags(title);
				if (l<title.length) {
					title = title.substring(0, l)+Settings.getSetting('postfix');
				}
			}
			titleArray[i].update(title);
			if (!wrapper) {
				titleArray[i].show();
			}
		}
		if (o.properties['content'] && i<contentArray.size()) {
			var content = o.properties['content'];
			if (typeof getContentMaxLength != "undefined") {
				var l = getContentMaxLength();
				content = removeTags(content);
				if (l<content.length) {
					content = content.substring(0, l)+Settings.getSetting('postfix');
				}
			}
			contentArray[i].update(content);
			contentArray[i].show();
			if (!wrapper) {
				titleArray[i].show();
			}
		}
		if (o.properties['href'] && i<linkArray.size()) {
			linkArray[i].writeAttribute("href", o.properties['href']);
			linkArray[i].show();
			if (!wrapper) {
				titleArray[i].show();
			}
		}
		if (o.properties['e:rating'] && i<ratingArray.size()) {
			var rating = o.properties['e:rating'];
			ratingArray[i].update(rating);
			ratingArray[i].addClassName("active-rate"+rating);
			ratingArray[i].show();
			if (!wrapper) {
				ratingArray[i].show();
			}
		}
		if (wrapper) {
			wrapperArray[i].show();
		}
	}
	for(;i<maxElements;i++)
	{
		if (wrapper) {
			wrapperArray[i].hide();
		}
		else
		{
			if (i<titleArray.size()) { titleArray[i].hide(); }
			if (i<contentArray.size()) { contentArray[i].hide(); }
			if (i<linkArray.size()) { linkArray[i].hide(); }
			if (i<ratingArray.size()) { ratingArray[i].hide(); }
		}
	}
}
function update() {
	if (typeof getFeedUrl != "undefined") {
		var url = Settings.getSetting('feedhubUrl') + encodeURIComponent(getFeedUrl().replace("?&","?")) + '&callback=display';
		var script = new Element('script', {'id':'feed-loader', 'src':url})
		script.onload = function() {
			script.remove();
			script = null;
		};
		$$('head')[0].appendChild(script);
	}
	
}
document.observe('dom:loaded', function() {
	update();
	var interval = getUpdateInterval();
	new PeriodicalExecuter(update, interval);
}.bind(this));
