// Lee Adcock
// ladcock@mediageneral.com
// Mar 15 2006
// 
// This javascript file is used when implementing RSS feeds on HTML pages.  It's general
// purpose is to provide easy ways to load RSS js files, and provide built-in functions
// for manipulating and outputing that data.
// 

var rss_alttitle = "";
var rss_altdate = "";
var rss_altcopyright = "";

var rss_feedtitle = true;
var rss_title = true;
var rss_dolink = false;
var rss_dolinkdescr = false;
var rss_date = false;
var rss_copyright = false;
var rss_descr = false;
var rss_max = 3;
var rss_descrmax = 200;
var rss_linktarget ="_new";

var rss_feedcount = 0;
var rss_feedlist = new Array(500);

//
// Get the list of currently avaliable feeds (not loaded, but loadable).  Number is returned in 
// variable "rss_avaliable" and the array is "rss_avaliable_list".
//
// rss_getAvaliable()
//
function rss_getAvaliable()
{
	rss_loadFeed("rssfeedlist");
}

//
// Update the AP feeds to use the template associated with a specicific AP account
//
// rss_setAPUser("VARIT");
//
function rss_setAPUser(User)
{
	for (var feedi = 0; feedi < rss_feedcount; feedi++)
		for (var feedk = 0; feedk < eval(rss_feedlist[feedi]+"_size"); feedk++)
			eval(rss_feedlist[feedi]+"_link["+feedk+"]="+rss_feedlist[feedi]+"_link["+feedk+"].replace('?SITE=VARIT&','?SITE="+User+"&');")
}

//
// Load an rss feed for use on the page.  List multiple feeds to 
// load several at once
//
// rss_loadFeed("outdoors","aboutCamping");
//
function rss_loadFeed()
{
	for (var feedi = 0; feedi < arguments.length; feedi++) 
		document.write('<SCRIP'+'T LANGUAGE=\"JavaScript\" SRC=\"http://media.mgnetwork.com/rss/'+arguments[feedi]+'.js\"><\/SCRIP'+'T>');
}

//
// Draws the feed or feeds listed as parameters in a nice easy to 
// customzie format.  Uses several CSS classes.  List multiple feeds
// to print one-after-the- other within the same output box.
//
// rss_drawFeed("outdoors","aboutCamping");
//
function rss_drawFeed()
{
	document.write("<table cellspacing=0 cellpadding=0 class=\"rsstable\">");
	
	var feedName = arguments[0];

	var rss_thisfeedtitle = eval(feedName);
	if(rss_alttitle.length>0) rss_thisfeedtitle = rss_alttitle;

	var rss_thisfeeddate = eval(feedName+"_updated");
	if(rss_altdate.length>0) rss_thisfeeddate = rss_altdate;

	var rss_thisfeedcopyright = eval(feedName+"_copyright");
	if(rss_altcopyright.length>0) rss_thisfeedcopyright = rss_altcopyright;


	if(rss_feedtitle) 
		document.write("<tr><td class=\"rssfeedtitle\">"+rss_thisfeedtitle+"</td></tr>");

	if(rss_date) 
		document.write("<tr><td class=\"rssdate\">"+rss_thisfeeddate+"</td></tr>");

	if(rss_copyright)
		document.write("<tr><td class=\"rsscopyright\">"+rss_thisfeedcopyright+"</td></tr>");

	for (var feedi = 0; feedi < arguments.length; feedi++) {
		feedName = arguments[feedi];

		var k;
		var upto=eval(feedName+"_size");
		if(upto>rss_max && rss_max!=-1) upto=rss_max;

		for(k=0;k<upto;k++)
		{
			if(rss_title)
			{
				
				if(rss_dolink)
					document.write('<tr><Td class=\"rssarticletitle\"><a target=\"'+rss_linktarget+'\" class=\"rssarticletitle\" href=\"'+eval(feedName+"_link["+k+"]")+'\">'+eval(feedName+"_title["+k+"]")+'</a></td></tr>');
				else
					document.write('<tr><Td class=\"rssarticletitle\">'+eval(feedName+"_title["+k+"]")+'</font></td></tr>');			
			}
			var rss_thisfeeddescr = eval(feedName+"_descr["+k+"]");
			if(rss_descrmax!=-1)
			{
				if(rss_thisfeeddescr.length>rss_descrmax)
				{
					rss_thisfeeddescr = rss_thisfeeddescr.substring(0, rss_descrmax);
					if(rss_thisfeeddescr.lastIndexOf('.')>-1)
					{
						rss_thisfeeddescr = rss_thisfeeddescr.substring(0, rss_thisfeeddescr.lastIndexOf('.')+1);
					} else if(rss_thisfeeddescr.lastIndexOf('?')>-1) {
						rss_thisfeeddescr = rss_thisfeeddescr.substring(0, rss_thisfeeddescr.lastIndexOf('?')+1);
					} else if(rss_thisfeeddescr.lastIndexOf('!')>-1) {
						rss_thisfeeddescr = rss_thisfeeddescr.substring(0, rss_thisfeeddescr.lastIndexOf('!')+1);
					} else {
						if(rss_thisfeeddescr.lastIndexOf(' ')>-1)
							rss_thisfeeddescr = rss_thisfeeddescr.substring(0, rss_thisfeeddescr.lastIndexOf(' '));
						rss_thisfeeddescr+='...';
					}
				}

			}
			if(rss_descr) 
			{
				if(rss_dolinkdescr)
					document.write('<tr><td class=\"rssdescr\"><a target=\"'+rss_linktarget+'\" class=\"rssdescr\" href=\"'+eval(feedName+"_link["+k+"]")+'\">'+rss_thisfeeddescr+'</a></font></td></tr>');
				else
					document.write('<tr><td class=\"rssdescr\">'+rss_thisfeeddescr+'</font></td></tr>');
			}
		}

	}

	document.write("</table>");

	rss_alttitle="";
	rss_altdate = "";
	rss_altcopyright = "";	
}

//
// Combines multiple feeds (by name) and returns an array formated
// with all of their content combined.
//
// rss_combineFeeds("outdoors","aboutCamping");
//
function rss_combineFeeds()
{
	var feedSize = 0;
	var feedIndex = 0;
	for (var feedi = 0; feedi < arguments.length; feedi++)
		feedSize += eval(arguments[feedi]+"_size");

	var combineFeeds_link = new Array(feedSize);
	var combineFeeds_title = new Array(feedSize);
	var combineFeeds_descr = new Array(feedSize);

	for (var feedi = 0; feedi < arguments.length; feedi++)
	{
		for(var y = 0; y<eval(arguments[feedi]+"_size"); y++)
		{
			combineFeeds_link[feedIndex] = eval(arguments[feedi]+"_link["+y+"]");
			combineFeeds_title[feedIndex] = eval(arguments[feedi]+"_title["+y+"]");
			combineFeeds_descr[feedIndex] = eval(arguments[feedi]+"_descr["+y+"]");
			feedIndex++
		}
	}

	var retVal = new Array(3);
	retVal[0] = combineFeeds_link;
	retVal[1] = combineFeeds_title;
	retVal[2] = combineFeeds_descr;
	retVal[3] = feedSize;

	return retVal;
}


//
// Randomizes the order a feed is listed in.
// Can be called either by passing the name of a feed, or 
// by passing an array of feed values.
//
// rss_randomize("feed","aboutCamping");
//
// rss_randomize("array",myFeed);
//

function rss_randomize()
{
	if(arguments[0]=="feed")
	{
		var temp;
		var feed = arguments[1];

		for (var i = 0; i < eval(feed+"_size"); i++) {
			var newnumber = (Math.random() * eval(feed+"_size")-1) + 1
			newnumber = parseInt(newnumber, 10)

			eval("temp="+feed+"_title["+i+"]");
			eval(feed+"_title["+i+"] = " +feed+"_title["+newnumber+"]");
			eval(feed+"_title["+newnumber+"]=temp");

			eval("temp="+feed+"_link["+i+"]");
			eval(feed+"_link["+i+"] = " +feed+"_link["+newnumber+"]");
			eval(feed+"_link["+newnumber+"]=temp");

			eval("temp="+feed+"_descr["+i+"]");
			eval(feed+"_descr["+i+"] = " +feed+"_descr["+newnumber+"]");
			eval(feed+"_descr["+newnumber+"]=temp");
		}
	}

	if(arguments[0]=="array") {

		var comb_link = arguments[1][0];
		var comb_title = arguments[1][1];
		var comb_descr = arguments[1][2];
		var comb_size = arguments[1][3];

		var temp;
		for (var i = 0; i < comb_size; i++) {
			var newnumber = (Math.random() * comb_size-1) + 1
			newnumber = parseInt(newnumber, 10)

			temp = comb_title[i];
			comb_title[i] = comb_title[newnumber];
			comb_title[newnumber] = temp;

			temp = comb_descr[i];
			comb_descr[i] = comb_descr[newnumber];
			comb_descr[newnumber] = temp;

			temp = comb_link[i];
			comb_link[i] = comb_link[newnumber];
			comb_link[newnumber] = temp;
		}

		var retVal = new Array(3);
		retVal[0] = comb_link;
		retVal[1] = comb_title;
		retVal[2] = comb_descr;
		retVal[3] = comb_size;
		return retVal;

	}
	return;
}
