var arrFeedRequests = new Array();
var arrFeedData = new Array();
var strRssName; 
var intRssNumberOfItems;
var blnRssShowTitle;
var blnRssShowLink;
var blnRssShowDescription;
var blnRssShowDate;
var blnRssShowSource;

function fnInsertRSSResource() 
{
	var frm = document.resourceForm;
	var strURI = frm.strURI.value;
	var strName = frm.strName.value;
	var guiID = '';
	var strImage = '/lantern/resourcetypes/rssreader/images/rss_placeholder.jpg'
	var strResourceType = frm.strResourceType.value;
	var objPropertyList = document.getElementById('resourceproperties');
	
	var strInsertHTML = '<img border="0" alt="' + strName 
		+ '" param-name="' + strName 
		+ '" resourcetype="'+ strResourceType 
		+ '" uniqueid="" param-struri="'+ strURI 
		+ '" src="' + strImage + '" ';
	
	//add properties to xml
	if (objPropertyList) 
	{
		for (var i=0; i<objPropertyList.childNodes.length; i++)
		{
			if (objPropertyList.childNodes[i].nodeName=='INPUT') {
				strInsertHTML = strInsertHTML + 'param-' + objPropertyList.childNodes[i].name + '="' + objPropertyList.childNodes[i].value + '" ';
			}
		}
	}
	strInsertHTML = strInsertHTML + ' />';
	opener.editArea.fnInsertHTML(strInsertHTML);
	self.close();
}

function fnRenderRSSResource( name, numberofitems, showTitle, showLink, showDescription, showDate, showSource, pFeeds ) 
{
	strRssName = name;
	intRssNumberOfItems = numberofitems;
	blnRssShowTitle= showTitle;
	blnRssShowLink = showLink;
	blnRssShowDescription = showDescription;
	blnRssShowDate = showDate;
	blnRssShowSource = showSource;

    //debugger;

	var feeds = pFeeds.split(',');
	for( var feedPtr = 0; feedPtr < feeds.length; ++feedPtr ) 
    {
        var newFeed = new Array();
		newFeed['source'] = feeds[feedPtr];
		newFeed['request'] = fnGetXMLHttpRequest();
		newFeed['request'].open( 'GET', '/lantern/resourcetypes/RSSReader/asp/rss2xml.asp?url=' + feeds[feedPtr], true );
		newFeed['request'].onreadystatechange = function() { fnFeedStateChange(); }
		arrFeedRequests[arrFeedRequests.length] = newFeed;
        newFeed['request'].send(null);
	}
}

function fnFeedStateChange( req ) 
{
    //alert('arrFeedRequests.length='+arrFeedRequests.length);
    for( feedPtr = 0; feedPtr < arrFeedRequests.length; ++feedPtr ) {
		if( arrFeedRequests[feedPtr] && arrFeedRequests[feedPtr]!=null && arrFeedRequests[feedPtr]['request'].readyState == 4 && arrFeedRequests[feedPtr]['request'].status == 200 ) {
			fnFeedDataAppend( arrFeedRequests[feedPtr] );
			arrFeedRequests[feedPtr] = null;
		}
	}
}

function fnGetXMLHttpRequest() 
{
	if (window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch (e) {
			req = false;
		}
	} else if (window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				req = false;
			}
		}
	}
	return req;
}

function fnFeedDataAppend( requestObject ) 
{
	var source = requestObject['source'];
	var items = new Array();
    var item;
	
    items = requestObject['request'].responseXML.getElementsByTagName('item');

	//if you remove the var items = new Array(); then this will PARTIALLY work in IE - that is, the referencing by index will start working; a problem remains though.
	//the object returned by repsonseXML is appears to be read only (http://msdn.microsoft.com/en-us/library/ms757066(VS.85).aspx)
	//to work around this, you could create an Msxml2.DomDocument, and using readXml to read in the XML from responseXml.xml. This way it shouldn't be read only.
	//var items = requestObject['request'].responseXML.getElementsByTagName('item');
	
	for( var itemPtr = 0; itemPtr < items.length; ++itemPtr ) {
		// IE 6 is choking here because it cannot grab any child for some unknown reason
		item = items[itemPtr];
		item.setAttribute('source', source);
		arrFeedData[arrFeedData.length] = item;
	}
	arrFeedData.sort( fnFeedSorter );
	fnPopulateRSSContent();
}

function fnPopulateRSSContent() {
	var html = ''; 
    var html2 = ''; 
    var x = navigator;
    var iCount=0;
    var intItemCount = arrFeedData.length;
    for( var itemPtr = 0; (itemPtr < intItemCount && itemPtr < intRssNumberOfItems); ++itemPtr ) 
    {

        html += '<div class="rssReaderItem">';
        
        //debugger;
        // Sadly we  need to determine Broswer type (Look for IE or Netscape)
        if ( x.appName=='Netscape')
        {
            if( blnRssShowTitle ) 
            {
                html += '<div class="rssReaderTitle"><a href="'+arrFeedData[itemPtr].getElementsByTagName('link').item(0).textContent+ '">' + arrFeedData[itemPtr].getElementsByTagName('title').item(0).textContent + '</a></div>';
                if( blnRssShowDate ) html += '<div class="date">(' + arrFeedData[itemPtr].getElementsByTagName('pubDate').item(0).textContent + ')</div>';
            }
            if( blnRssShowDescription ) html += '<div class="description">' + arrFeedData[itemPtr].getElementsByTagName('description').item(0).textContent + '</div>';
            if( blnRssShowSource ) html += '<div class="source"><a href="'+arrFeedData[itemPtr].getElementsByTagName('link').item(0).textContent+ '">' + unescape(arrFeedData[itemPtr].getAttribute('source')) + '</a></div>';
            if( blnRssShowLink ) html += '<div class="link"><a href="'+arrFeedData[itemPtr].getElementsByTagName('link').item(0).textContent+ '">' + arrFeedData[itemPtr].getElementsByTagName('link').item(0).textContent + '</a></div>';
        }
        else
        {
            if( blnRssShowTitle ) 
            {
                html += '<div class="rssReaderTitle"><a href="'+arrFeedData[itemPtr].getElementsByTagName('link').item(0).text + '">'+ arrFeedData[itemPtr].getElementsByTagName('title').item(0).text + '</a></div>';
                if( blnRssShowDate ) html += '<div class="date">(' + arrFeedData[itemPtr].getElementsByTagName('pubDate').item(0).text + ')</div>';
            }
            if( blnRssShowDescription ) html += '<div class="description">' + arrFeedData[itemPtr].getElementsByTagName('description').item(0).text + '</div>';
            if( blnRssShowSource ) html += '<div class="source"><a href="'+arrFeedData[itemPtr].getElementsByTagName('link').item(0).text + '">'+ unescape(arrFeedData[itemPtr].getAttribute('source')) + '</a></div>';
            if( blnRssShowLink ) html += '<div class="link"><a href="'+arrFeedData[itemPtr].getElementsByTagName('link').item(0).text + '">'+ arrFeedData[itemPtr].getElementsByTagName('link').item(0).text + '</a></div>';
        }
		html += '</div>'
        html += '<br />'
        
	}
	
	document.getElementById('rssreaderContent').innerHTML = html;
}

function fnFeedSorter( a, b ) {

    var dateA;
    var dateB;
    var x = navigator;

    
    // Sadly we  need to determine Broswer type (Look for IE or Netscape)
    if ( x.appName=='Netscape')
    {
        dateA = Date.parse( a.getElementsByTagName('pubDate').item(0).textContent );
        dateB = Date.parse( b.getElementsByTagName('pubDate').item(0).textContent );
        if( dateA == dateB ) return 0;
        return( dateA > dateB ) ? -1 : 1; 
    }
    else
    {
        dateA = Date.parse( a.getElementsByTagName('pubDate').item(0).text );
        dateB = Date.parse( b.getElementsByTagName('pubDate').item(0).text );
        if( dateA == dateB ) return 0;
        return( dateA > dateB ) ? -1 : 1; 
    }
}
