/* Replace all occurances of a string
  (Parameters) totalValue:'complete string' 
		oldValue:'value to be replaced' newValue:'value used for replace' */

function Replace(totalValue,oldValue,newValue)
{
	while(totalValue.indexOf(oldValue) > -1)
		totalValue=totalValue.replace(oldValue,newValue);
			return totalValue;
}

/* Get XML Node
   (Parameters) TagName:'XML Element' node:'Element row number' */

function getNode(TagName, node)
{
	var currentNode = (node == null) ? xmlDoc.responseXML.getElementsByTagName(TagName) :
					items[node].getElementsByTagName(TagName);
	if(currentNode.length > 0)
		return currentNode[0].firstChild.nodeValue;
}

/* Load XML Object
   (Parameters) rssFeed:'RSS File' Body:'Layer for RSS Body' Title:'Layer for RSS Title' */
var xmlDoc;

function loadXMLDoc(url, Body, Title) {
	xmlDoc = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
    	try {
			xmlDoc = new XMLHttpRequest();
        } catch(e) {
			xmlDoc = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	xmlDoc = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		xmlDoc = false;
        	}
		}
    }
	if(xmlDoc) {
		xmlDoc.onreadystatechange = ReadRSS;
		xmlDoc.open("GET", url, true);
		xmlDoc.send("");
	}
}

function ReadRSS()
{
	rssTitle = document.getElementById('rssTitleTemplate');
	rssBody = document.getElementById('rssBodyTemplate');
         // only if req shows "loaded"
    if (xmlDoc.readyState == 4) {
        // only if "OK"
        if (xmlDoc.status == 200) {
             document.getElementById('hidden_until_loaded').style.display="";
            // ...processing statements go here...
            items=xmlDoc.responseXML.getElementsByTagName('item');
            SetRSSTemplates();
        } else {
            alert("There was a problem retrieving the XML data:\n" + xmlDoc.statusText);
        }
    }
}

/* Set HTML Template
	Did it this way to make the look and feel of the feed easy customizable, dont like mixing
	layout with code. */

function SetRSSTemplates()
{
	if (rssBody)
	{
		var buffer = "";
		for(var i=0; i< items.length; i++)
		//for(var i=0; i< 3; i++)
		{
			var output = (document.all) ? Replace(rssBody.innerHTML,"(::Link::)",getNode('link',i))
									   : Replace(rssBody.innerHTML,"%28::Link::%29",getNode('link',i));
			var temp;
			temp = getNode('title',i);
                        if (temp.length > 25) temp=temp.slice(0,23)+'...';
                        output = Replace(output,"(::Title::)", temp);
			//output = Replace(output,"(::Pubdate::)",getNode('pubDate',i));
			//output = Replace(output,"(::Description::)",getNode('description',i));
			buffer+=output;
		}
		rssBody.innerHTML = buffer+buffer+buffer+buffer+buffer+buffer+buffer+buffer+buffer+buffer+buffer+buffer+buffer+buffer+buffer+buffer;
	}

	if (rssTitle)
	{
		var output = Replace(rssTitle.innerHTML,"(::Title::)",getNode('title'));
		output = (document.all) ? Replace(output,"(::Link::)",getNode('link'))
							   : Replace(output,"%28::Link::%29",getNode('link'));
		//output = Replace(output,"(::Description::)",getNode('description'));
		output = Replace(output,"(::Items::)",getNode('title'));
		rssTitle.innerHTML = output;
	}
	enableScrolling( $( '#flyscreenDemo div.section ul.feeds' ), '48', 1000, 3000 );
}
