// begin: main inform page methods;
function splitTopicsAndEntities() {
	var copies = new Array() ;
	var clones = new Array() ;
	var hasTopics = false ;
	var hasEntities = false ;

	var dl = document.getElementsByTagName('dl')[0] ;
	var topic_dt = dl.getElementsByTagName('dt')[0] ;
	var dds = dl.getElementsByTagName('dd') ;

	// make copies and clones of the 'entity' dds
	for ( var i=0; i<dds.length; i++ ) {
		var dd = dds[i] ;
		if ( dd.className.match(/entity/) ) {
			hasEntities = true;
			copies[copies.length] = dd;
			clones[clones.length] = dd.cloneNode(true);
		}
		else if ( !hasTopics && dd.className.match(/topic/) ) {
			hasTopics = true;
		}
	}

	// remove the 'entity' dds using copies
	for ( var i=0; i<copies.length; i++ ) {
		var dd = copies[i];
		if ( dd.className.match(/entity/) ) {
			dl.removeChild(dd);
		}
	}

	// append the 'entity' dds from clones
	if ( hasEntities ) {
		var dt = document.createElement('dt') ;
		dt.innerHTML = 'Related Entities' ;
		dl.appendChild(dt);
		for ( var i=0; i<clones.length; i++ ) {
			var dd = clones[i];
			dl.appendChild(dd);
		}
	}

	// remove the topic heading if there are no topics
	if ( !hasTopics ) {		
		dl.removeChild(topic_dt);
	}
}
function fixNoResults() {
	var magic_string = "," ;
	var dts = document.getElementsByTagName('dt') ;
	for ( var i=0; i < dts.length; i++ ) {
		var dt = dts[i] ;
		magic_string += dt.innerHTML+"," ;
	}

	addHeading(magic_string,'subjects','Related Subjects');
	addHeading(magic_string,'subjects','Related Entities');
	addHeading(magic_string,'webcontent','Related Articles');
	addHeading(magic_string,'webcontent','Related Blogs');
	addHeading(magic_string,'webcontent','Related Video');
	addHeading(magic_string,'webcontent','Related Audio');
}

function addHeading(string,column,content) {
	var i ;
	if ( column == 'subjects' )
		i=0;
	else if ( column == 'webcontent' )
		i=1;

	if ( !string.match(content) ) {
		if ( document.getElementsByTagName('dl').length > i ) {
			// get the right dl
			var dl = document.getElementsByTagName('dl')[i] ;
			// create dt
			var dt = document.createElement('dt');
			dt.innerHTML = content;
			// create dd
			var dd = document.createElement('dd');
			dd.className = "no_bullets"
			dd.innerHTML = "No Results.";

			dl.appendChild(dt);
			dl.appendChild(dd);
		}
	}
}
function fixHeadings() {
	var dts = document.getElementsByTagName('dt') ;
	for ( var i=0; i < dts.length; i++ ) {
		var dt = dts[i] ;
		if ( dt.innerHTML.match(/Related Subjects/) )
			dt.innerHTML = "Related Topics" ;
		else if ( dt.innerHTML.match(/Related Articles/) )
			dt.innerHTML = "Related Articles On The Web" ;
	}
}
function fixSubjects() {
	var dl = document.getElementsByTagName('dl')[0] ;
	var dds = dl.getElementsByTagName('dd') ;
	for ( var i=0; i < dds.length; i++ ) {
		var dd = dds[i] ;
		var as = dd.getElementsByTagName('a') ;
		for ( var j=0; j < as.length; j++ ) {
			var a = as[j] ;
			var attribute = a.getAttribute('href').split('/') ;
			attribute = attribute[attribute.length-1] ;
			if ( attribute ) {
				var node = "" ;
				if ( typeof commercialNode != "undefined" )
					node = commercialNode ;
				a.setAttribute("href","http://www.washingtonpost.com/ac2/related/topic/"+attribute+"?node="+node + "&tid=informline");
			}
		}
	}
}
function fixWebContent() {
	var dl = document.getElementsByTagName('dl')[1] ;
	var dds = dl.getElementsByTagName('dd') ;
	for ( var i=0; i < dds.length; i++ ) {
		var dd = dds[i] ;
		fixAnchorTags(dd.getElementsByTagName('a'));
		var spans = dd.getElementsByTagName('span') ;
		for ( var j=0; j < spans.length; j++ ) {
			var span = spans[j] ;
			if ( span.className == "publication" ) {
				if ( span.innerHTML.match(/(.*)\s\((.*)\)/) ) {
					span.innerHTML = RegExp.$1+' - '+RegExp.$2
				}
				span.innerHTML = "("+span.innerHTML+")" ;
			}
		}
	}
}
function fixAnchorTags(anchors) {
	for ( var i=0; i < anchors.length; i++ ) {
		var a = anchors[i] ;
		a.setAttribute("rel","nofollow");
	}
}
// end: main inform page methods;
// begin: subject page
function fixWPArticles4Subject(text) {
	// Related Articles -> Articles on washingtonpost.com
	if ( text.match(/Related Articles/) ) {
		text = text.replace("Related Articles","Articles on washingtonpost.com");
	}

	// "More results" link
	text += '<div id="newssearch-box"><a href="http://www.washingtonpost.com/ac2/wp-dyn/NewsSearch?st='+subject+'" id="newssearch-link">More search results on washingtonpost.com &raquo;</a></div>' ;
	return text ;
}
function fixWebContent4Subject(text) {
	// Related Articles -> Articles on the Web
	if ( text.match(/Related Articles/) ) {
		text = text.replace("Related Articles","Articles on the Web");
	}

	// put parens around sources
	var items = '' ;
	var text_to_be_parsed = text ;
	while ( text_to_be_parsed.match(/(.*?<span class="publication">(.*?)<.span>)(.*)/) ) {
		var item = RegExp.$1 ;
		var original = RegExp.$2 ;
		var source = original ;
		text_to_be_parsed = RegExp.$3 ;
		if ( source.match(/(.*)\s\((.*)\)/) ) {
			source = RegExp.$1+' - '+RegExp.$2
		}
		source = '('+source+')' ;
		items += item.replace(original,source);
	}
	text = items + text_to_be_parsed ;
	
	// add "No Results." where appropriate
	if (! text.match(/>Related Blogs</) ) {
		if ( text.match('</dl>') ) {
			text = text.replace('</dl>','<dt>Related Blogs</dt><dd class="no_bullets">No Results.</dd></dl>') ;
		}
	}
	if (! text.match(/>Related Video</) ) {
		if ( text.match('</dl>') ) {
			text = text.replace('</dl>','<dt>Related Video</dt><dd class="no_bullets">No Results.</dd></dl>') ;
		}
	}
	if (! text.match(/>Related Audio</) ) {
		if ( text.match('</dl>') ) {
			text = text.replace('</dl>','<dt>Related Audio</dt><dd class="no_bullets">No Results.</dd></dl>') ;
		}
	}

	return text;
}
function fixNoResponseForSubject(requestType) {
	var dl = document.createElement('dl') ;
	dl.setAttribute('id','inform-results');
	var dt = document.createElement('dt') ;
	var dd = document.createElement('dd') ;
	dd.className = "no_bullets" ;
	dd.innerHTML = "No Results." ;

	if ( requestType == 'WPArticles4Subject') {
		var dt1 = dt.cloneNode(false) ;
		dt1.innerHTML = 'Articles on washingtonpost.com' ;
		dl.appendChild(dt1) ;
		dl.appendChild(dd.cloneNode(true)) ;

		var div = document.createElement('div');
		div.setAttribute('id','newssearch-box');
		var a = document.createElement('a');
		a.setAttribute('href','http:\/\/www.washingtonpost.com/ac2/wp-dyn/NewsSearch?st='+subject);
		a.setAttribute('id','newssearch-link');
		a.innerHTML = 'Search results on washingtonpost.com &raquo;' ;
		div.appendChild(a) ;

		if ( document.getElementById(requestType+"Id") ) {
			var base = document.getElementById(requestType+"Id") ;
			base.appendChild(dl);
			base.appendChild(div);
		}
	} else if ( requestType == 'WPNIArticles4Subject') {
		dl.setAttribute('id','wpni-results');
		var dt1 = dt.cloneNode(false) ;
		dt1.innerHTML = 'Articles on washingtonpost.com' ;
		dl.appendChild(dt1) ;
		dl.appendChild(dd.cloneNode(true)) ;

		var div = document.createElement('div');
		div.setAttribute('id','newssearch-box');
		var a = document.createElement('a');
		a.setAttribute('href','http:\/\/www.washingtonpost.com/ac2/wp-dyn/NewsSearch?st='+subject);
		a.setAttribute('id','newssearch-link');
		a.innerHTML = 'Search results on washingtonpost.com &raquo;' ;
		div.appendChild(a) ;

		if ( document.getElementById(requestType+"Id") ) {
			var base = document.getElementById(requestType+"Id") ;
			base.appendChild(dl);
			base.appendChild(div);
		}
	} else if ( requestType == 'WebContent4Subject' ) {
		var dt1 = dt.cloneNode(false) ;
		dt1.innerHTML = 'Related Articles on the Web' ;
		var dt2 = dt.cloneNode(false) ;
		dt2.innerHTML = 'Related Blogs' ;
		var dt3 = dt.cloneNode(false) ;
		dt3.innerHTML = 'Related Video' ;
		var dt4 = dt.cloneNode(false) ;
		dt4.innerHTML = 'Related Audio' ;

		dl.appendChild(dt1) ;
		dl.appendChild(dd.cloneNode(true)) ;
		dl.appendChild(dt2) ;
		dl.appendChild(dd.cloneNode(true)) ;
		dl.appendChild(dt3) ;
		dl.appendChild(dd.cloneNode(true)) ;
		dl.appendChild(dt4) ;
		dl.appendChild(dd.cloneNode(true)) ;

		if ( document.getElementById(requestType+"Id") ) {
			var base = document.getElementById(requestType+"Id") ;
			base.appendChild(dl);
		}

	}
}

function getResult(requestType, requestValue, updateElementName,includeScript)
{
	var debug = 0;
	var url = '/ac2/related/proxy';

	var searchValue = (typeof(requestValue) == "undefined" || requestValue == null) ? $F('searchValue') : requestValue;
	var searchType = (typeof(requestType) == "undefined" || requestType == null) ? $F('searchType') : requestType;
	var updateElement = (typeof(updateElementName) == "undefined" || updateElementName == null) ? "searchResult" : updateElementName;
	includeScript = (includeScript != null || typeof(includeScript) != "undefined") ? includeScript: true;

	if(searchValue.length > 0 && searchType.length > 0) 
	{
		var params = 'searchValue=' + searchValue + '&searchType=' + searchType;

		var ajax = new Ajax.Request(
			url,
			{
				onSuccess : function(resp) 
				{
					if (debug) alert("Success.");
					var responseText = resp.responseText;
					responseText = (includeScript) ? responseText : responseText.stripScripts();

					if ( requestType == 'WPArticles4Subject' || requestType == 'WPNIArticles4Subject')
					{
						responseText = fixWPArticles4Subject(responseText) ;
					} else if ( requestType == 'WebContent4Subject' ) {
						responseText = fixWebContent4Subject(responseText) ;
					}

					$(updateElement).innerHTML = responseText;
					$(updateElement.toString().concat("Label")).style.display="block";
					$(updateElement).style.display="block";
				},
				onFailure : function(resp) 
				{
					if (debug) alert("Oops, there's been an error.");
					fixNoResponseForSubject(requestType) ;
					$(updateElement.toString().concat("Label")).style.display="none";
					$(updateElement).style.display="none";
				},
				parameters : params
			}
		);
	}
}


function getJSONResult(requestType, requestValue, updateElementName,numResults,resultStyle,includeTitle)
{
	var debug = 0;
	var url = '/ac2/related/proxy';

	var searchValue = (typeof(requestValue) == "undefined" || requestValue == null) ? $F('searchValue') : requestValue;
	var searchType = (typeof(requestType) == "undefined" || requestType == null) ? $F('searchType') : requestType;
	var updateElement = (typeof(updateElementName) == "undefined" || updateElementName == null) ? "searchResult" : updateElementName;
	includeScript = true
	includeTitle = (includeTitle != null || typeof(includeTitle) != "undefined") ? includeTitle: true;

	if(searchValue.length > 0 && searchType.length > 0)
	{
		var params = 'searchValue=' + searchValue + '&searchType=' + searchType + '&format=JSON';

		var ajax = new Ajax.Request(
			url,
			{
				onSuccess : function(resp) 
				{
					if (debug) alert("Success." + resp.responseText);
					var responseText = resp.responseText;
					var result = eval('(' + responseText + ')');;
				        if (result != null)
				    	{
						$(updateElement).innerHTML = formatResult(result,numResults,resultStyle,includeTitle);
						$(updateElement.toString().concat("Label")).style.display="block";
						$(updateElement).style.display="block";
				    	}
				},
				onFailure : function(resp) 
				{
					if (debug) alert("Oops, there's been an error.");
					fixNoResponseForSubject(requestType) ;
					$(updateElement.toString().concat("Label")).style.display="none";
					$(updateElement).style.display="none";
				},
				parameters : params
			}
		);
	}
}


function toHTML(element)
{
	var html="";
	var dd_prefix="<dd class='article'>";
	var dd_suffix="</dd>";
	var a_prefix="<a href='";
	var a_suffix="</a>";

	html += dd_prefix;
	html += a_prefix;
	html+=element.url;
	html+="'>";
	html+=element.headline;
	html+= a_suffix;
	if (element.publication)
	{
		html +=" <span class='publication'>(";
		html += element.publication;
		html +=")</span> ";
	}
	if (element.date)
	{
		html +="<span class='date'>";
		html += element.date;
		html +="</span>";
	}
	html +=dd_suffix;

	return html;
}

function formatResult(result,numResults,resultStyle,includeTitle)
{
	var displayText="<dl id='";
	displayText +=resultStyle;
	displayText +="'>";

	if (includeTitle)
	{
		if (result.title != null)
		{
			displayText +="<dt>";
			displayText +=result.title;
			displayText +="</dt>";
		}
		else
		{
			displayText +="<dt>Articles on washingtonpost.com</dt>";
		}
	}

	var resultsToDisplay = result.results.length;
	if (numResults && numResults >= 0 && numResults<resultsToDisplay)
	{
		resultsToDisplay=numResults;
	}

	for (var i=0;i<resultsToDisplay;i++)
	{
	         displayText+=toHTML(result.results[i]);
    	}

	displayText +="</dl>";

	return displayText;
}


// end: subject page
// begin: bottom strip methods;
function placeInformBox() {
	if ( document.getElementById("inform-results") && document.getElementById("inform-box") ) {
		document.getElementById("inform-box").style.display = 'block' ;
		var dl = document.getElementById("inform-results") ;
		var dt = dl.getElementsByTagName("dt")[0] ;
		if ( dt ) {
			// dt.innerHTML = 'More on washingtonpost.com' ;
			var children = dt.childNodes;
			for (var i=0; i < children.length; i++) {
				dt.removeChild(children[i]);
			}
			var text = document.createTextNode("More on washingtonpost.com");
			dt.appendChild(text);
		}
	} else if ( document.getElementById("inform-alternative-box") ) {
		document.getElementById("inform-alternative-box").style.display = 'block' ;
		// hide the inform-alternative-box if it sneaked in inappropriately
		try {
			if ( typeof thisItem != 'undefined' ) {
				eval( 'if ( document.getElementById(\'story-relatedlinks-'+thisItem.story_active.id+'-beacon\') ) { document.getElementById(\'inform-alternative-box\').style.display = \'none\' }' );
			}
		} catch(e) {}
	}
}
function placeHotContentBoxDeprecated(m) {
		var output = "";
		output += '<dl id="hotcontent-results">' ;
		if ( m[0].type.match(/Galleries/) )
			output += '<dt style="font:bold 12px arial; color:#333;">Most Viewed Galleries</dt>' ;
		else
			output += '<dt style="font:bold 12px arial; color:#333;">Most Viewed '+m[0].name+' Articles</dt>' ;
		for (i=0; i < m[0].content.length && i < 4; i++)
		{
	 output += '<dd class="article">' ;
	 output += '<a href="'+m[0].content[i].url+'tmv" target="_top">'+m[0].content[i].linkText+'</a>' ;
	 output += '</dd>' ;
		}
		output += '</dl>' ;
		document.write(output);
}
function showChildren(id,max) {
	if ( document.getElementById(id) ) {
		var children = document.getElementById(id).childNodes ;

		if ( max == 0 && document.getElementById("inform-results") && document.getElementById("inform-box") ) {
			var dl = document.getElementById("inform-results") ;
			var dt = dl.getElementsByTagName("dt")[0] ;
			if ( dt ) {
				dt.style.display = 'none' ;
			}
		}

		for(var i=0; i<children.length; i++) {
	 var child = children[i] ;
	 if ( i >= max) {
		 child.style.display = 'none' ;
	 }
		}
	}
}
function showChildren2(id,max) {
	if ( document.getElementById(id) ) {
		var children = document.getElementById(id).childNodes ;

		for(var i=0; i<children.length; i++) {
	 		var child = children[i] ;
	 		if ( i > max) {
		 		child.style.display = 'none' ;
	 		}
		}
	}
}
function setInformImagePadding(id_left,id_right,id_target) {
	if ( document.getElementById(id_left) && document.getElementById(id_right) && document.getElementById(id_target) ) {
		var h_left = document.getElementById(id_left).offsetHeight + 3 ;
		var h_right = document.getElementById(id_right).offsetHeight ;
		var padding_top = h_right - h_left ;
		if ( padding_top > 0 ) 
	 document.getElementById(id_target).style.paddingTop = padding_top + 'px' ;
	}
}
// end: bottom strip methods;
// start: Most Viewed and Aggregate Knowledge Methods for OTTO test
function placeHotContentBox(m) {
	var output = "";
	output += '<dl id="hotcontent-results">' ;
	if ( m[0].type.match(/Galleries/) )
		output += '<dt style="font:bold 12px arial; color:#333;">Most Viewed Galleries</dt>' ;
	else
		output += '<dt style="font:bold 12px arial; color:#333;">Most Viewed '+m[0].name+' Articles</dt>' ;
	for (i=0; i < m[0].content.length && i < 4; i++)
	{
		output += '<dd class="article">' ;
		output += '<a href="'+m[0].content[i].url+'tmv'+getHotContentBoxParameter()+'" target="_top">'+m[0].content[i].linkText+'</a>' ;
		output += '</dd>' ;
	}
	output += '</dl>' ;
	document.write(output);
}
function placeHotContentBoxDefault(m) {
	if ( typeof mv_position == "undefined" || mv_position == "bottom_strip" ) {
		placeHotContentBox(m);
	}
}
function placeHotContentBoxRightColumn(m) {
	if ( typeof mv_position != "undefined" && mv_position == "right_column" ) {
		placeHotContentBox(m);
	}
}
function placeHotContentBoxContentColumn(m) {
	if ( typeof mv_position != "undefined" && mv_position == "content_column" ) {
		placeHotContentBox(m);
	}
}
function getHotContentBoxParameter() {
	var output = "" ;
	if ( typeof wp_related_content_recipe != "undefined" ) {
		output += "&mv=" ;
		if ( typeof mv_position == "undefined" || mv_position == "bottom_strip" ) {
			output += "bottom" ;
		} else if ( mv_position == "content_column" ) {
			output += "sidebar" ;
		} else if ( mv_position == "right_column" ) {
			output += "right" ;
		}
	}
	return output ;
}
function initHotContent() {
	document.write("<style>\n");
	document.write("dl#hotcontent-results { display:block; }\n");
	if ( typeof mv_position == "undefined" || mv_position == "bottom_strip" ) {
		document.write("#hotcontent-box-bottom_strip { display:block; }\n");
	} else {
		document.write("#hotcontent-box-bottom_strip { display:none; }\n");
	}
	document.write("</style>\n");
}
function initHotContentRightColumn() {
	document.write("<style>\n");
	document.write("dl#hotcontent-results { display:block; }\n");
	if ( typeof mv_position != "undefined" && mv_position == "right_column" ) {
		document.write("#hotcontent-box-right_column { display:block; }\n");
	} else {
		document.write("#hotcontent-box-right_column { display:none; }\n");
	}
	document.write("</style>\n");
}
function initHotContentContentColumn() {
	document.write("<style>\n");
	document.write("dl#hotcontent-results { display:block; }\n");
	if ( typeof mv_position != "undefined" && mv_position == "content_column" ) {
		document.write("#hotcontent-box-content_column { display:block; }\n");
	} else {
		document.write("#hotcontent-box-content_column { display:none; }\n");
	}
	document.write("</style>\n");
}
function hideContentColumnTools() {
	if ( typeof hide_content_column_tools != "undefined" && hide_content_column_tools ) {
		document.write('<style>#content_column_tools {display:none;}</style>');
	}
}
function targetAggregateKnowledge() {
	if ( typeof ak_position != "undefined" ) {
		if (document.getElementById("akAPI")
			&& document.getElementById("aggregate-knowledge-box")
			&& document.getElementById("akAPI-"+ak_position)
			&& document.getElementById("aggregate-knowledge-box-"+ak_position)
		) {
			var ak1 = document.getElementById("akAPI") ;
			var ak1_box = document.getElementById("aggregate-knowledge-box") ;
			var ak2 = document.getElementById("akAPI-"+ak_position) ;
			var ak2_box = document.getElementById("aggregate-knowledge-box-"+ak_position) ;

			ak1.setAttribute("id","akAPI-off");
			ak1_box.setAttribute("id","aggregate-knowledge-box-off");
			ak2.setAttribute("id","akAPI");
			ak2_box.setAttribute("id","aggregate-knowledge-box-bullseye");
		}
	}
}
function showAggregateKnowledge() {
	if ( document.getElementById("aggregate-knowledge-box-bullseye") ) {
		var akRTCnt = 0 ;
		var akRT = setInterval( function(){
			if ( document.getElementById("akResultsTable") ) {
				var ak1 = document.getElementById("aggregate-knowledge-box-bullseye") ;
				ak1.setAttribute("id","aggregate-knowledge-box");
				clearInterval(akRT);
			} else if ( akRTCnt > 20 ) {
				clearInterval(akRT);
			} else {
				akRTCnt++ ;
			}
		},100);
	}
}
function fixAggregateKnowledgeLinks() {
	if ( document.getElementById("akResultsTable") ) {
		var akb = document.getElementById("akResultsTable") ;
		var akb_links = akb.getElementsByTagName("a") ;
		for ( var i=0; i<akb_links.length; i++ ) {
			var akb_link = akb_links[i] ;
			akb_link.href = akb_link.href.replace(/.html/,".html"+getAggregateKnowledgeBoxParameter()) ;
		}
	}
}
function getAggregateKnowledgeBoxParameter() {
	var output = "" ;
	if ( typeof wp_related_content_recipe != "undefined" ) {
		output += "%3Fak=" ;
		if ( typeof ak_position == "undefined" ) {
			output += "bottom" ;
		} else if ( ak_position == "content_column" ) {
			output += "sidebar" ;
		} else if ( ak_position == "right_column" ) {
			output += "right" ;
		}
	}
	return output ;
}
// end: Most Viewed and Aggregate Knowledge Methods for OTTO test

