function getPop(theUrl) {
  window.open(theUrl, "pop", "width=400, height=400, scrollbars=yes");
}

// feedThing 
// This script processes the RSS feed
// 
// Load the xml
// Send data to function that will create the layout
// 
var feedLoadError = 'Read <a href="/blog/">Make One Yarns News</a> >>';

// Configuration Parameters
// These are completely configurable by the Control Panel

var maxItems = 4;
var htmlStr = "";


function feedThing(feedUrl,type) {

	try //Internet Explorer
	  {
	  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	  xmlDoc.async=false;
		try {
			xmlDoc.load(feedUrl);
		} catch(e) { // Display error message in case of failure loading XML file
			document.write(feedLoadError);
			return;
		}
	  }
	catch(e)
	  {
	  try //Firefox, Mozilla, Opera, etc.
		{
		var xmlhttp = new window.XMLHttpRequest();
		xmlhttp.open("GET",feedUrl,false);
		xmlhttp.send(null);
		xmlDoc = xmlhttp.responseXML.documentElement;
		}
	  catch(e)
		{
		document.write(feedLoadError);
		return;
		}
	  }

	// Grab all the item nodes and put in an array of objects
	var items = xmlDoc.getElementsByTagName("item");
	
	// Create empty array to hold the tickerItems
	var tickerItems = new Array();
	
	// Next, for each item, create a news "object" that can be sent to the formatting javascript
	// as part of an array of objects.
	// Each object should include the title, link, image url, description

	if(items.length < maxItems) {
		maxItems = items.length;	
	}
	for(i=0; i<maxItems; i++) {
		var title = items[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
		var descr = items[i].getElementsByTagName("description")[0].childNodes[0].nodeValue;
		var linkUrl = items[i].getElementsByTagName("link")[0].childNodes[0].nodeValue;
		// Get and format the publication date
		var pubDate = items[i].getElementsByTagName("pubDate")[0].childNodes[0].nodeValue;

		// create an object with these values
		tickerItems[i] = new TickerItem(title, linkUrl, descr, pubDate);
	}
	// call formatTicker function, using array of tickerItems
	if(type == "home") {
		htmlStr = topNews(tickerItems);
	} else {
		htmlStr = tickerMini(tickerItems);	
	}
	document.write(htmlStr);
}

function topNews(tickerItems) {
	// now that the array of tickerItems has been passed to the formatting function,
	// create the html for an basic headline widget
	
	title = tickerItems[0].title;
	linkUrl = tickerItems[0].linkUrl;
	descr = tickerItems[0].descr;
	pubDate = tickerItems[0].pubDate;
	htmlStr = '<a href="'+linkUrl+'"><b>'+title.toUpperCase()+'</b></a><br /><i>'+formatDate(pubDate)+'</i><p>'+trunc(descr, 250)+'... <a href="'+linkUrl+'">read more >></a></p>';
	return htmlStr;
}


function tickerMini(tickerItems) {
	// now that the array of tickerItems has been passed to the formatting function,
	// create the html for an basic headline widget

	maxItems = 3;
	
	htmlStr = '';
	title = tickerItems[0].title;
	linkUrl = tickerItems[0].linkUrl;
	descr = tickerItems[0].descr;
	pubDate = tickerItems[0].pubDate;
	htmlStr += '<a href="'+linkUrl+'" class="leftnav"><strong>'+title+' >></strong></a><br /><i>'+formatDate(pubDate)+'</i><p>'+trunc(descr, 100)+'... </p>';

	// Create the short text links for the remaining items, up to 3
	for(i=1; i<tickerItems.length && i<maxItems; i++) {
		title = tickerItems[i].title;
		pubDate = tickerItems[i].pubDate;
		linkUrl = tickerItems[i].linkUrl;
		htmlStr += '<p><strong><a href="' + linkUrl + '" class="leftnav">' + title + ' >></a></strong><br/><i>' + formatDate(pubDate) + '</i></p>';
	}
	return htmlStr;
}

TickerItem = function(title, linkUrl, descr, pubDate) {
	this.title = title;
	this.linkUrl = linkUrl;
	this.descr = descr;
	this.pubDate = pubDate;
}

// formatDate is a custom function to work with the date string from the RSS feed:
// 2007-12-15T12:00:00Z
// It reformats and creates a Date object from it

function formatDate(pubDateStr) {
	pubDateStr = pubDateStr.substr(0, pubDateStr.indexOf(':')-2);
	return pubDateStr;
}

function trunc(str, maxLen) {
	if(maxLen < str.length) {
		str = str.substr(0,maxLen);
	}
	return str;
}
// Quote function takes a string, escapes problematic characters, and returns it.
// From http://javascript.crockford.com/remedial.html

String.prototype.quote = function () {
    var c, i, l = this.length, o = '';
    for (i = 0; i < l; i += 1) {
        c = this.charAt(i);
        if (c >= ' ') {
            if (c === '\\' || c === '"') {
                o += '\\';
            }
            o += c;
        } else {
            switch (c) {
            case '\b':
                o += '\\b';
                break;
            case '\f':
                o += '\\f';
                break;
            case '\n':
                o += '\\n';
                break;
            case '\r':
                o += '\\r';
                break;
            case '\t':
                o += '\\t';
                break;
            default:
                c = c.charCodeAt();
                o += '\\u00' + Math.floor(c / 16).toString(16) +
                    (c % 16).toString(16);
            }
        }
    }
    return o;
};
