// Constants
Canvas8.DEFAULT_NEWS_TEMPLATE = '<ul><li class="date">${dateTime}</li>' +
'<li><h4><a href="${link}" target="_new">${title}</a></h4><p>${description}</p><p>${source}</p></li>' +
'<li class="clear">&nbsp;</li></ul>';
Canvas8.NEWS_INDEX_TEMPLATE = '<div class="newsWrapper"><div class="leftBlock"><ul>' +
'<li><h4><a href="${link}" target="_new">${title}</a></h4><p>${description}</p></li><li class="clear">&nbsp;</li></ul>' +
'</div><div class="rightBlock"><table border="0" cellpadding="0" cellspacing="0" width="300"><tbody><tr class="break">' +
'<td class="title first">Date</td><td class="first"><a href="${link}">${dateTime}</a></td></tr><tr>' +
'<td class="title">Source</td><td><a href="${link}">${source}</a></td></tr>' +
'</tbody></table></div></div><div class="break15"></div>';

Canvas8.NEWS_FEED_URL = 'http://newsdesk.moreover.com/feed?ndfeed=17974&client_id=canvas8_cin_32q7&uid=35746&o=rss002&dh=earliest&exclude=srp&n=100';
Canvas8.NEWS_SEARCH_URL = 'http://ps.moreover.com/page?client_id=canvas8_cin_32q7&o=rss002&dh=earliest&exclude=srp&n=100&rel=1';

/**
 * Parses and displays news feed.
 */
Canvas8.news = {
	params : {start:0,max:8,total:0},
	source : function(url, source) { return (typeof url != 'undefined') ? '<a href="' + url + '" target="_blank">' + C8.string.trunc(source, 30) + '</a>' : ''; },
	format : function(xml) {
		$('#' + C8.news.params['target']).html('');
		var templt = $.template((C8.news.params['format'] != 'index') ? Canvas8.DEFAULT_NEWS_TEMPLATE  : Canvas8.NEWS_INDEX_TEMPLATE);
		try {C8.news.params.start = parseInt(C8.news.params.start);}catch(e){/*no-op*/}
		try {C8.news.params.max = parseInt(C8.news.params.max);}catch(e){/*no-op*/}
		for (var idx = C8.news.params.start; idx < (C8.news.params.start + C8.news.params.max); idx++) {
			if (idx == $("item", xml).length) break;
			var nItem = $("item", xml)[idx];
			$('#' + C8.news.params['target']).append(templt, {
				dateTime:o2s.format(new Date($('pubDate', nItem).text()),'dd/mm/yyyy HH:ii'),
				link:$('link', nItem).text(),
				title:$('title', nItem).text(),
				description:$('description', nItem).text(),
				source:Canvas8.news.source($('link', nItem).text(), $('source', nItem).text())
			});
		}
	},
	_doPaging : function (params) { return typeof params['format'] != 'undefined' && params['format'] == 'index'; },
	_doParams : function (params) { C8.news.params = typeof params.data == 'undefined' ? params : params.data; },
	get : function (params, url) {
		if (typeof C8.news.params.max == 'function') C8.news.params.max = C8.news.params.max.apply();
		if (typeof url == 'undefined') url = C8.util.urlEncode(Canvas8.NEWS_FEED_URL);
		jQuery.ajax({ 
			type: 'GET', 
			url: '/common/xdomain.jsp?contentType=text/xml&expires=300', 
			data: 'url=' + url + '#' + C8.news.params.start, 
			dataType: 'xml', 
			success: function(xml) {
				Canvas8.news.format(xml);
				if (C8.news._doPaging(C8.news.params)) { // Only do pagination for news index.
					C8.news.params.total = $("item", xml).length;
					C8.pagination.init({
						instanceName:'news',
						searchParams:C8.news.params,
						pageNumber:Math.ceil(C8.news.params.start  / C8.news.params.max + 1),
						pageSize:C8.news.params.max,
						total:C8.news.params.total
					});
				}
			}
		});
		return false;
	},
	feed : function (params) {
		C8.news._doParams(params);
		C8.news.params['fn'] = 'C8.news.feed';
		C8.news.get(C8.news.params);
		return false;
	},
	search : function (params) {
		C8.news._doParams(params);
		C8.news.params['fn'] = 'C8.news.search';
		params['format'] = 'index';
		var url = C8.util.urlEncode(Canvas8.NEWS_SEARCH_URL);
		if (typeof C8.news.params['search'] != 'undefined') url += C8.util.urlEncode('&query=' + C8.news.params['search'].replace(/ /g, '+'));
		if (typeof C8.news.params['start'] != 'undefined' && typeof C8.news.params['max'] != 'undefined') url += '&fr=' + C8.news.params['start']; 
		C8.news.get(C8.news.params, url);
		return false;
	}
};
