// JavaScript Document

function RSS2Item(itemxml)
{
	/*window.alert("RSS2Item()");*/
    /*A*/
    /*required properties (strings)*/
    this.title;
    this.link;
    this.description;
    this.pubDate;

    /*B*/
    var properties = new Array("title", "description", "link", "pubDate"); /*dc:creator*/
    var tmpElement = null;
    for (var i=0; i<properties.length; i++)
    {
        tmpElement = itemxml.getElementsByTagName(properties[i])[0];
        if (tmpElement != null)
            eval("this."+properties[i]+"=tmpElement.childNodes[0].nodeValue");
    }

}


function RSS2Channel(rssxml)
{
	/*window.alert("RSS2Channel()");*/
    /*A*/
    this.title;

    /*array of RSS2Item objects*/
    this.items = new Array();

    /*B*/
    var chanElement = rssxml.getElementsByTagName("channel")[0];
    var itemElements = rssxml.getElementsByTagName("item");

    /*C*/
    /*for (var i=0; i<itemElements.length; i++)*/
	for (var i=0; i<4; i++)
    {
        Item = new RSS2Item(itemElements[i]);
        this.items.push(Item);
    }

    /*D*/
    var properties = new Array("title"); 
    var tmpElement = null;
    for (var j=0; j<properties.length; j++)
    {
        tmpElement = chanElement.getElementsByTagName(properties[j])[0];
        if (tmpElement!= null)
            eval("this."+properties[j]+"=tmpElement.childNodes[0].nodeValue");
    }
	/*window.alert("RSS2Channel()-complete");*/

    /*E*/
    //this.image = new RSS2Image(chanElement.getElementsByTagName("image")[0]);
}

function getRSS()
{

    /*A*/
    if (window.ActiveXObject) //IE
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    else if (window.XMLHttpRequest) //other
        xhr = new XMLHttpRequest();
    else
        alert("your browser does not support AJAX");

    /*B*/
    xhr.open("GET","http://www.am1150.ca/_Shared/Channels/Public/RSS/GetXMLDataForRSS.ashx?ChannelID=4295",true);

    /*C*/
    xhr.setRequestHeader("Cache-Control", "no-cache");
    xhr.setRequestHeader("Pragma", "no-cache");

    /*D*/
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4)
        {
            if (xhr.status == 200)
            {
                /*F*/
                if (xhr.responseText != null)
                    processRSS(xhr.responseXML);
                else
                {
                    alert("Failed to receive RSS file from the server - file not found.");
                    return false;
                }
            }
            else
                alert("Error code " + xhr.status + " received: " + xhr.statusText);
        }
    }

    /*E*/
    xhr.send(null);
}


function showRSS(RSS)
{
	/*window.alert("showRSS()");*/
    /*A*/
    var imageTag = "<img id='chan_image'";
	var startList = "<ul id='primarynews'>";
	var endList = "</ul>";
    var startItemTag = "<li id='item'>";
	var endItemTag = "</li>";
    var startTitle = "<div id='item_title'>";
    var startDescription = "<div id='item_description'>";
    var endTag = "</div>";

    /*B*/
	/*channel property output*/
    /*var properties = new Array("title", "lastBuildDate");
    for (var i=0; i<properties.length; i++)
    {
        eval("document.getElementById('chan_"+properties[i]+"').innerHTML = ''"); 
        curProp = eval("RSS."+properties[i]);
        if (curProp != null)
            eval("document.getElementById('chan_"+properties[i]+"').innerHTML = curProp");
    }*/

	var list_html = startList;
    /*D*/
    document.getElementById("chan_items").innerHTML = "";
    for (var i=0; i<RSS.items.length; i++)
    //for (var i=0; i<4; i++)
	{
		var num_chars = 200;
		item_html = startItemTag;
		var img_tag = "";
		
		// look for image for main story only
		if (i==0) {
			// find image source
			var img_start = RSS.items[i].description.indexOf("src=");
			if (img_start != -1) {
				var img_end = RSS.items[i].description.indexOf("\"",(img_start+5));
				img_tag = "<div class='pri-img-cont'><div class='newsimage'><div class='nimage'><img src='" + RSS.items[i].description.substring((img_start+5),(img_end)) + "' /></div></div></div>";
			} else { 
				if (i==0) {
					img_tag = "<div class='pri-img-cont'><div class='newsimage'><div class='nimage'><img src='http://www.am1150.ca/Pics/SiteAssets/240thelatest.jpg' /></div></div></div>";
				} else img_tag = "";
			}
		}
		item_html += (RSS.items[i].link == null) ? "" : "<a href='" + RSS.items[i].link + "'>" +img_tag+ "</a>";
		//if (i>0) item_html += "<br />"; /* linebreak after image if secondary story */
		
		// title
		item_html += (RSS.items[i].link == null) ? "" : "<a href='" + RSS.items[i].link + "'>";
		item_html += (RSS.items[i].title == null) ? "" : startTitle + RSS.items[i].title + endTag + "</a>";
		
		// description
		if (i==0) num_chars = 300;
		var desc_stripped = RSS.items[i].description.replace(/(<([^>]+)>)/ig,"");
		var desc_short = desc_stripped.substring(0,num_chars);
		var desc_pos = desc_short.lastIndexOf(" ");
		var desc_final = desc_short.substring(0,desc_pos) + "...";
		
		// read more link
		var read_more = "<br /><div class='rssmore'><a href='" + RSS.items[i].link + "'>Read more...</a></div>";
		
		// output item
		item_html += (RSS.items[i].description == null) ? "" : startDescription + desc_final + read_more + endTag;
		item_html += endItemTag;
		list_html += item_html;
		if (i==0) list_html += "</ul><ul id='secondarynews'>";
    }
	document.getElementById("chan_items").innerHTML += list_html + endList;

    return true;
}


function processRSS(rssxml)
{
    RSS = new RSS2Channel(rssxml);
    showRSS(RSS);
}

