                                             

//	adds functionality to String object to get # right characters
	String.prototype.right = function(n) {
		if (n <= 0) {return "";}
		else if (n > String(this).length) {return this;}
		else {var l = String(this).length; return String(this).substring(l, l - n);}
	}
//	removes HTML characters from str; condensed from The JavaScript Source, initial script created by: Robert Nyman | http://robertnyman.com/
	var removeHTML = function(str){
		str = str.replace(/&(lt|gt);/g,function(strMatch, p1){return (p1 == 'lt') ? '<' : '>';});
		str = str.replace(/<\/?[^>]+(>|$)/g,'');
		return str;
	}
//	XML HTTP Request array
	var xmlreqs = new Array();
//	create HTTPRequest object
	var createXMLHttpRequest = function(freed) {
		this.freed = freed;
		this.xmlhttp = false;
		if (window.XMLHttpRequest) {
			this.xmlhttp = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
//	check/change ready state, send response back to callback function
	var XMLHttpChange = function(pos) {
		if (typeof(xmlreqs[pos]) != 'undefined' && xmlreqs[pos].freed == 0 && xmlreqs[pos].xmlhttp.readyState == 4) {
			if (xmlreqs[pos].xmlhttp.status == 200 || xmlreqs[pos].xmlhttp.status == 304) {
				if (xmlreqs[pos].url.right(3) == "xml") {
					xmlreqs[pos].callback(pos,xmlreqs[pos].xmlhttp.responseXML.documentElement);
				} else {
					xmlreqs[pos].callback(pos,xmlreqs[pos].xmlhttp.responseText);
				}
			} else {
				return;
			}
			xmlreqs[pos].freed = 1;
		}
	}
//	retrieve feed data
	var getXMLHttpRequest = function(pos) {
		if (xmlreqs[pos].xmlhttp) {
			xmlreqs[pos].freed = 0;
			xmlreqs[pos].xmlhttp.open("GET",xmlreqs[pos].url,true);
			xmlreqs[pos].xmlhttp.onreadystatechange = function() {
				if (typeof(XMLHttpChange) != 'undefined') { XMLHttpChange(pos); }
			}
			if (window.XMLHttpRequest) {
				xmlreqs[pos].xmlhttp.send(null);
			} else if (window.ActiveXObject) {
				xmlreqs[pos].xmlhttp.send();
			}
		}
	}
//	global variable initialization
	var arrFeeds = new Array();
//	function to add feed requests to arrFeeds
	var addFeed = function(c,url) {
		var n = arrFeeds.length;
		arrFeeds[n] = new Array();
		arrFeeds[n].url = url;
		arrFeeds[n].currPeriod = c;
	}
//	request feed file
	var getFeed = function(arrPos,id,callbackFunction) {
		var pos = -1;
		for (var i=0; i < xmlreqs.length; i++) {
			if (xmlreqs[i].freed == 1) { pos = i; break; }
		}
		if (pos == -1) { pos = xmlreqs.length; xmlreqs[pos] = new createXMLHttpRequest(1); }
		xmlreqs[pos].url = arrPos.url;
		xmlreqs[pos].callback = callbackFunction;
		xmlreqs[pos].id = id;
		xmlreqs[pos].arrPos = arrPos;
		getXMLHttpRequest(pos);
	}
//	get the next/previous XML feed, create the next/previous navigation buttons, and place them into the page
	var articleNextPrevNavCallback = function(pos,response) {		
		//var u = location.href.split(',');
		//var id = String(u[2]);
		var id = articleID;
		var items = response.getElementsByTagName('item');
		for (i = 0; i < items.length; i++) {// NOTE: the data file is in descending order
			var link = items[i].getElementsByTagName('link')[0].firstChild.data;
			if (link.indexOf(id) > -1) {
				var nav = '<ul>';
				var p = i-1;
				if (p >= 0) {
					var prevTitle = items[p].getElementsByTagName('title')[0].firstChild.data;
					var prevLink = items[p].getElementsByTagName('link')[0].firstChild.data;
					nav += '<li class="prev"><a href="' +prevLink+ '"><span>Anterior</span><b>' +prevTitle+ '</b></a></li>';
				}
				var n = i+1;
				if (n < items.length) {
					var nextTitle = items[n].getElementsByTagName('title')[0].firstChild.data;
					var nextLink = items[n].getElementsByTagName('link')[0].firstChild.data;
					nav += '<li class="next"><a href="' +nextLink+ '"><span>Siguiente</span><b>' +nextTitle+ '</b></a></li>';
				}
				nav += '</ul>';
				document.getElementById('nextprevpagination').innerHTML = nav;
				document.getElementById('nextprevpagination').className += ' active';
			}
		}
	}
//	initialize Article page's next/previous article links; used on... Article page
	var initializeArticleNextPrevNav = function() {
		if (!document.getElementById) return;
		if (!document.getElementsByTagName) return;
		if (articleIssueID == null || articleIssueID == '') return;
		arrFeeds.length = 0;
		addFeed(articleIssueID,'/pespanol/xml/nextprev/0,31700,' +articleIssueID+ ',00.xml');  // example: /pespanol/xml/nextprev/1,,8708081208,00.xml
		getFeed(arrFeeds[0],'nextprevpagination',articleNextPrevNavCallback);
	}

	
