ContentWidgetXssMagic = new function() {
	var BASE_URL = 'http://www.circos.com/';
	var STATIC_URL = 'http://static.circos.com/widgets/content/';
	var STYLESHEET = STATIC_URL + 'css/widget.css';
	var IMAGE_URL = STATIC_URL + 'images/';
	var CONTENT_URL = BASE_URL + 'widget/';
	var TRURL = BASE_URL + 'static_media/widgets/content/images/tr.gif';

	function requestStylesheet(stylesheet_url, param) {
		var stylesheet_file;
		
		if (param.theme == '')
			param.theme = 'Graphical';
			
		theme_id = param.theme.toLowerCase().replace(' - ', '_').replace(' ', '_');
		
		stylesheet_file =	stylesheet_url.replace(".css", "_"+theme_id+".css");
		stylesheet = document.createElement("link");
		stylesheet.rel = "stylesheet";
		stylesheet.type = "text/css";
		stylesheet.href = stylesheet_file;
		stylesheet.media = "all";
		document.lastChild.firstChild.appendChild(stylesheet);
	}

	function initWidget(widget_slot, param) {

		var div = document.getElementById(widget_slot);

		var theme_css_classes = param.theme.toLowerCase().replace('/[ ]/', '_').replace('_-_', ' '); 
		var header_id = widget_slot + '_header';
		var results_id = widget_slot + '_results';
		var footer_actions_id = widget_slot + '_footer_actions';
			
		var html =
			'<div class="circos_content_widget"><img src="' + TRURL + '" border="0" />' +
				'<div class="' + theme_css_classes +'">' +
					'<div class="widget_box">' +
						'<div class="widget_box_head"><h3 id="'+header_id+'">Topic Widget</h3></div>' +
						'<div class="widget_box_body"><div class="results"><ol id="'+results_id+'"></ol></div>'+ 
							'<div class="logo"><a href="'+BASE_URL+'"><img src="'+IMAGE_URL+'circos_small.png"/></a></div>' +
							'<div class="widget_box_foot"><div class="actions" id="'+footer_actions_id+'">Loading &hellip</div></div>' +  
						'</div>' + // widget_box_body
					'</div>' + // widget_box
				'</div>' +
			'</div>'; // circos_content_widget

		div.innerHTML = html;
		}
		
	function requestContent( widget_slot, param ) {
		var script = document.createElement('script');
		var vertical = (param.vertical =='') ? 'Restaurants' : param.vertical;		
		script.src = CONTENT_URL + vertical + '/' + param.query + '/content.js?slot=' + widget_slot;
		/*
		script.src = CONTENT_URL + vertical + '/content.js?slot=' + widget_slot;
		if (param.query)
			script.src = script.src + '&query='+param.query;
		 */
		if (param.items)
			script.src = script.src + '&items='+param.items;
		if (param.testimonials) 
			script.src = script.src + '&testimonials='+param.testimonials;
		if (param.theme) 
			script.src = script.src + '&theme='+param.theme;
		
		document.getElementsByTagName('head')[0].appendChild(script);
	}

	this.init = function(widget_slot, param) {

		this.serverResponse = function(data) {
			if (!data) return;

			var div = document.getElementById(data.slot);
			var header_id = data.slot + '_header';
			var results_id = data.slot + '_results';
			var footer_actions_id = data.slot + '_footer_actions';
			
			var header_tag = document.getElementById(header_id);
			var results_tag = document.getElementById(results_id);
			var footer_actions_tag = document.getElementById(footer_actions_id);
			
			if (data.header) {
				header = data.header.replace(/((Books|Movies)( )?){2}/gi, "$1");
				header_tag.innerHTML = header;
			}

			results_html = ''
			if (data.results) {
				for (var i = 0; i < data.results.length; i++) {
					var result = data.results[i];

					item_html =	'<li class="'+ ((i % 2)?'odd':'even')+'">';
					item_html = (result.brand_url == '') ? 
						item_html + '<div class="brand-name"><h4>'+result.brand_name+'</h4></div>' :
						item_html + '<div class="brand-name"><h4><a href="'+result.brand_url+'">'+result.brand_name+'</a></h4></div>';
					if (result.snippet) {
						item_html = item_html +	
							'<p>&ldquo;&hellip;	'+ result.snippet + ' &hellip;&rdquo; ' +
							'said ' + ((result.author_url != '') ? '<a href="'+result.author_url+'">'+result.author_name+'</a>' : result.author_name) + 
							'</p>';
					}
					item_html = item_html + '</li>';
					results_html = results_html + item_html;
				}
			}
			if (results_html == '') {
				results_html = '0 result found.';
			}
			results_tag.innerHTML = results_html;
			
			footer_actions_tag.innerHTML =  
				'<a href="'+data.see_all_url+'">See All</a>'+
				'<a href="'+data.add_to_site_url+'&summary=' + data.header +'">Add to my site</a>';	
		}
		
		var div = document.getElementById(widget_slot);
		
		requestStylesheet(STYLESHEET, param);
		requestContent(widget_slot, param);
		initWidget(widget_slot, param);
		
		var no_script = document.getElementById('no_script');
		if (no_script) { no_script.style.display = 'none'; }
	}
}

function showContentWidget(eleid, param) {
	ContentWidgetXssMagic.init(eleid, param);
}