$(function() {
// Read in values from the URL query string (redirected from news portal)
var queryString = window.location.search.length > 1 ? window.location.search.substring(1, window.location.search.length).split("&") : null;
if(queryString)
	{
	for(var i=0; i < queryString.length; i++)
		{
		if(queryString[i].indexOf("=")>-1)
			{
			if(queryString[i].split("=")[0] == "c") { parameters.category="&c="+decodeURIComponent(queryString[i].split("=")[1]); }
			else if(queryString[i].split("=")[0] == "query") { parameters.query="&"+queryString[i]; $("#moreover_query_term").val(decodeURIComponent(queryString[i].split("=")[1].replace(/\+/g," "))); }
			}
		}
	}

// do search type radio buttons (also updates parameters.sourceRank since source rank is dependent on search type)
$("input[name=search_type]:radio").click(function() {
	searchType = $("input[name=search_type]:radio:checked")[0].value;
	parameters.sourceRank = sourceRankAlias[searchType][$("#slider_source_rank").slider("value")];
	setChannelDropdown();
	getPreview();
	});
searchType = $("input[name=search_type]:radio:checked")[0].value;

// do source rank slider
$("#slider_source_rank").slider({
	value:2,
	min:0,
	max:4,
	step:1,
	slide: function(event, ui) {
		parameters.sourceRank = sourceRankAlias[searchType][ui.value];
		getPreview();
		} 
	});
parameters.sourceRank = sourceRankAlias[searchType][$("#slider_source_rank").slider("value")];

// do relevance slider
$("#slider_relevance").slider({
	value:2,
	min:0,
	max:4,
	step:1,
	slide: function(event, ui) { 
		parameters.relevance = relevanceAlias[ui.value];
		getPreview();
		} 
	});
parameters.relevance = relevanceAlias[$("#slider_relevance").slider("value")];

// populate channel and category dropdowns and select selected options
setChannelDropdown();

// set value of search box to current search term
$("#moreover_query_term").keydown(function(event) { if(event.keyCode==13) getPreview(); });

// reload when new category selected
$("#input_cluster").change(function() { getPreview(); });

// run search upon initialisation
getPreview();
});

// the following objects house the various search parameter name=value pairs and their default values
var parameters = { query:"", category:"", relevance:"&relf=2", sourceRank:"&r=1|2|3" };

// search type and sliders parameters
var searchType = "news";
var sourceRankAlias = { news: ["", "&r=1|2|3|4", "&r=1|2|3", "&r=1|2", "&r=1"], ugc: ["", "&r=1|2|3|4", "&r=1|2|3", "&r=1|2", "&r=1"] };
var relevanceAlias = ["","&relf=1","&relf=2","&relf=3","&relf=4"];

// Add "All articles" to list of categories called category_array
category_array.unshift(new category("All articles","","All articles","All"));

// Declare miscellaneous variables
var channel_array;
var article = 0;
var timeout;

function setChannelDropdown()
{
// are current cluster and channel in lookup list?
var startChannel = "All articles";
var startCategory = "All articles";
$.each(category_array, function(j,val)
	{
	if(val.apply_to=="All" || val.apply_to.toLowerCase()==searchType)
		{
		if(parameters.category=="&"+decodeURIComponent(val.feed_name))
			{
			startChannel = val.channel_name;
			startCategory = val.full_name;
			}
		}
	});

// generate set of channels for given searchType
$("#input_channel").html("");
channel_array = [category_array[0].channel_name];
for(var i=1;i<category_array.length;i++) { if(category_array[i].channel_name != category_array[i-1].channel_name && (category_array[i].apply_to=="All" || category_array[i].apply_to.toLowerCase()==searchType)) channel_array.push(category_array[i].channel_name); }
$.each(channel_array, function(i,val)
	{
	$("#input_channel").append("<option value=\"" + val + "\">"+val+"</option>");
	if(val == startChannel) $("#input_channel").val(startChannel);
	});

setClusterDropdown(startChannel,startCategory);
}


function setClusterDropdown(channelName,clusterName)
{
$("#input_cluster").html("");
$.each(category_array, function(j,val)
	{
	if (val.channel_name == channelName)
		{
		$("#input_cluster").append("<option value=\"" + val.feed_name.substring(2) + "\">"+val.full_name+"</option>");
		if(val.full_name == clusterName) $("#input_cluster").val(clusterName);
		}
	});
}

function createHeadlines()
{
this.url = decodeURIComponent(this.url.replace(/&o=js/,"&o=rss002"));
var queryTerm = /.*&b?query=([^&]+).*/.test(this.url) ? this.url.replace(/.*&b?query=([^&]+).*/,"$1") : "all articles";
var categoryTerm = /.*&b?c=([^&]+).*/.test(this.url) ? " in " + this.url.replace(/.*&b?c=([^&]+).*/,"$1") : "";
if (article.length > 0)
	{
	var div = document.createElement("div");
	$("#headlines").html("<span class=\"feed_header\">Search results for: "+queryTerm+categoryTerm+"</span><br /><br />");
	$.each(article, function(i,val) {
		if(i>=20) return false; 
		$("#headlines").append("<a href=\""+val.url+"\" class=\"feed_headline\" target=\"1234\">"+val.headline_text+"</a><br />");
		$("#headlines").append("<a href=\""+val.document_url+"\" class=\"feed_source\" target=\"1234\">"+val.source+"</a><span class=\"feed_source\"> - "+val.harvest_time+"</span><br /><br />");
		});
	$("#addto").html("<a href=\""+encodeURI(this.url)+"\" class=\"getrss\">Get RSS</a> <a href=\""+encodeURI(this.url)+"\" class=\"rss_button\"><img src=\"../images/icon_feed.png\" alt=\"Get RSS\" /></a> or ");
	$("#addto").append("<select id=\"addto_select\" class=\"addto_select\">");
	$("#addto_select").append("<option value=\"\">Add to:</option>");
	$("#addto_select").append("<option value=\"http://www.google.com/ig/add?feedurl="+escape(this.url)+"\">- Google</option>");
	$("#addto_select").append("<option value=\"http://www.bloglines.com/sub/"+this.url+"\">- Bloglines</option>");
	$("#addto_select").append("<option value=\"http://feeds.my.aol.com/add.jsp?url="+escape(this.url)+"\">- My AOL</option>");
	$("#addto_select").append("<option value=\"http://add.my.yahoo.com/rss?url="+escape(this.url)+"\">- My Yahoo\!</option>");
	$("#addto_select").append("<option value=\"http://www.netvibes.com/subscribe.php?url="+escape(this.url)+"\">- Netvibes</option>");
	$("#addto_select").append("<option value=\"http://www.newsgator.com/ngs/subscriber/subext.aspx?url="+escape(this.url)+"\">- Newsgator</option>");
	$("#addto_select").append("<option value=\"http://www.pageflakes.com/subscribe.aspx?url="+escape(this.url)+"\">- Pageflakes</option>");
	$("#addto_select").append("<option value=\"http://www.wikio.com/subscribe?url="+escape(this.url)+"\">- Wikio</option>");
	$("#addto_select").append("<option value=\"http://www.live.com/?add="+escape(this.url)+"\">- Windows Live</option>");
	$("#addto").append("<span id=\"addto_button\" class=\"go_button\"><img src=\"../images/btn-go2.png\" alt=\"Go\" /></span>");
	$("#addto_button").click(function() { if($("#addto_select").val()) window.location = $("#addto_select").val(); });
  	}
else { $("#headlines").append("<span class=\"feed_header\">No Results Found</span>"); }
}

function getPreview()
{
// only do search if no search in progress
if($("#headlines").text()!="Loading...")
	{
	timeout = setTimeout(function() {
		// figure out query and category parameters here because they're complicated!
		if(searchType=="ugc") parameters.query = "&bquery="+$("#moreover_query_term").val();
		else if($("#moreover_query_term").val()) parameters.query = "&query="+$("#moreover_query_term").val();
		else parameters.query = "";
		if($("#input_cluster").val()) parameters.category = "&c=" + $("#input_cluster").val();
		else parameters.category="";
		// empty list of articles
		var article = 0;
		$("#headlines").html("<span class=\"feed_header\">Loading...</span>");
		$("#addto").html("");
		// construct url and send it via jquery ajax
		var url = "http://p.moreover.com/page?dh=earliest&wiz=2390512&o=js";
		for(var parameter in parameters) { url += parameters[parameter]; }
		var test = $.ajax({ type:"GET", url:url, dataType:"script", complete:createHeadlines });
		},500);
	}
}