
/* ************************************************************************** */
/* *** Header declarations ************************************************** */
/* ************************************************************************** */

if (typeof(d) != "function") {
	eval("function d() { return }")
}

if (typeof(var_out) != "function") {
	eval("function var_out() {return }")
}

/* ************************************************************************** */
/* *** Extending standard objects ******************************************* */
/* ************************************************************************** */

/* ************************************************************************** */
/* *** Custom contents ****************************************************** */
/* ************************************************************************** */

function buildFromArray(anArray, separator, startIndex, endIndex) {
	var r = ""
	startIndex = startIndex ? startIndex : 0
	endIndex = endIndex ? endIndex : (anArray.length - 1)
	// d("bfa: Composing " + anArray.length + " items from " + startIndex + " to " + endIndex, false)
	if (startIndex > endIndex)
		return r
	for (var i = startIndex; i <= endIndex; i++) {
		r += anArray[i]
		if (i < endIndex)
			r += separator
	} // for
	return r
} // buildFromArray

function namedItem(newName, newValue) {
	this.name = newName
	this.value = newValue
} // namedItem

function feedLinkParser(feedDocument) {

	d("Parsing feed document for channel link")
	if (feedDocument.documentElement.localName == "feed") { // google items
		d("Document begins with 'feed' keyword")
		return evaluateSimpleXPath("feed/link/@href", feedDocument.documentElement)
	} else if (feedDocument.documentElement.localName == "rss") {
		d("Document begins with 'rss' keyword")
		return evaluateSimpleXPath("rss/channel/link", feedDocument.documentElement)
	} else {
		d("Unable to determine type of feed")
		return
	}

} // feedLinkParser
		
function feedContentParser(feedDocument) {
	
	//feedDocument.normalize()
	d("Parsing feed document for feed items")
	var result= new Array()
	var itemName = "", titleXPath = "", linkXPath = ""
	
	if (feedDocument.documentElement.localName == "feed") { // for google shared items
		d("Document element is 'feed'")
		itemName = "entry"
		titleXPath = itemName + "/title"
		linkXPath = itemName + "/link[@rel='alternate']/@href"
	} else if (feedDocument.documentElement.localName == "rss") {
		d("Document element is 'rss'")
		itemName = "item"
		titleXPath = itemName + "/title"
		linkXPath = itemName + "/link"
	} else {
		d("Unable to determine the type of feed")
		result = null
	} // if
	
	if (!itemName)
		return result
	
	var t = feedDocument.getElementsByTagName(itemName)
	d("Found " + t.length + " items")
	for (var i = 0; i < t.length; i++) {
		title = evaluateSimpleXPath(titleXPath, t[i])
		d("title length is " + title.length)

		link = evaluateSimpleXPath(linkXPath, t[i])
		d("link length is " + link.length)
		
		if (title && link)
			result.push(new namedItem(title, link))
	} // for i
	
	return result
	
} // feedContentParser
