
// declare film4rssListingss variables
var film4rssListingsXmlDoc;
var film4rssListingsXmlDocContainer;
var film4rssListingsXmlDocDivContainer = 'film4ListingsContainerContent'; //insert your div id here
var film4rssListingsArray = new Array();
var film4rssListingsMax = 99; //maximum items to list, use 99 to ignore the limit
var film4rssListingsFeedLinkUrl = "http://www.channel4.com/apps26/syndication/film/todays_listings/rss.xml";  //http://www.channel4.com/apps26/syndication/film/todays_listings/rss.xml
var film4rssListingsDateFormat = "g:i"; //like in php http://www.php.net/manual/en/function.date.php

var listingShowFromDate = new Date();
listingShowFromDate.setHours(18);
listingShowFromDate.setMinutes(00); 
var listingShowToDate = new Date();
listingShowToDate.setHours(23);
listingShowToDate.setMinutes(01); 

var film4rssListingsUpdaterTime = 0; //seconds
var film4rssListingsUpdaterDecay = 0; //seconds
var film4rssListingsUpdaterInt;
var film4rssListingsUpdaterIntCounter = 0;
/*
// all variables from the film4rssListings nodes will be replaced, when they are inserted like %nodeName%
var film4rssListingsItemHtmlObject = '<div class="rssTopMoviesItemContainer">';
film4rssListingsItemHtmlObject += 	'	<div class="rssTopMoviesItemContainerTitle">';
film4rssListingsItemHtmlObject += 	'		<a href="%link%" title="%title%">%title%</a>';
film4rssListingsItemHtmlObject += 	'	</div>';
//film4rssListingsItemHtmlObject += 	'	<div class="film4rssListingsItemContainerDate">';
//film4rssListingsItemHtmlObject += 	'		%pubDate%';
//film4rssListingsItemHtmlObject += 	'	</div>';
film4rssListingsItemHtmlObject += 	'	<div class="rssTopMoviesItemContainerDescription">';
film4rssListingsItemHtmlObject += 	'		%description%';
film4rssListingsItemHtmlObject += 	'	</div>';
film4rssListingsItemHtmlObject += 	'</div>';
*/
// all variables from the listing nodes will be replaced, when they are inserted like %nodeName%
var film4rssListingsItemHtmlObject = '<div id="listingItemContainer">';

film4rssListingsItemHtmlObject += 	'	<div class="listingItemContainerProgrammeTitle">';
film4rssListingsItemHtmlObject += 	'		<div class="bill_time"><a href="%link%" title="%title%">%pubDate%</a></div> <div class="bill_title"><a href="%link%" title="%title%">%title%</a></div>';
film4rssListingsItemHtmlObject += 	'	</div>';
film4rssListingsItemHtmlObject += 	'</div>';

function stripHTML(htmlString) {
	var re= /<\S[^>]*>/g; 
	return htmlString.replace(re,"");
}

// load xml film4rssListingss doc
function film4rssListingsXmlDocLoad()
{
	//var url = '/proxy?url=' + encodeURIComponent('http://www.google.com/search?q=Prototype');
	// notice the use of a proxy to circumvent the Same Origin Policy.
	
	// code for IE, dry etc
	if (window.ActiveXObject)
	{
		film4rssListingsXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		film4rssListingsXmlDoc.async=false;
		film4rssListingsXmlDoc.load(film4rssListingsFeedLinkUrl);
		film4rssListingsXmlDocParse();
	}
	// code for Mozilla, Firefox, Safari, Opera, etc.
	else if (DOMParser)
	{
		new Ajax.Request(film4rssListingsFeedLinkUrl, {
			method: 'get',
			// Jackanory!
			onSuccess: function(transport) {
			
				// code for Mozilla, Firefox, Safari, Opera, etc.
				var parser = new DOMParser();
				var feedData = transport.responseText
				feedData = feedData.replace("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>","")
				feedData = feedData.replace("<?xml-stylesheet type=\"text/xsl\" href=\"/media/xsl/rss/rss.xsl\"?>","")
				film4rssListingsXmlDoc = parser.parseFromString(feedData,"text/xml");
				film4rssListingsXmlDocParse();
				
			},
			// Handle 404
			on404: function(t) {
				alert('Error 404: location "' + t.statusText + '" was not found.');
			},
			// Handle other errors
			onFailure: function(t) {
				alert('Error ' + t.status + ' -- ' + t.statusText);
			}
		}); 
	}
	else
	{
		alert('Your browser cannot handle this script');
	}
	
}
// parse xml film4rssListingss doc
function film4rssListingsXmlDocParse()
{
	
	var rootNode;
	film4rssListingsArray = new Array();
	
	startNode = film4rssListingsXmlDoc.documentElement
	for(var i=0; i<startNode.childNodes.length; i++){
		if(startNode.childNodes[i].nodeName == "channel"){
			rootNode = startNode.childNodes[i]
		} 
	}
	
	if(rootNode.childNodes.length > 0){
		
		for(var i=0; i<rootNode.childNodes.length; i++){
			
			if(rootNode.childNodes[i].nodeName == "item"){
				
				var film4rssListingssNode = rootNode.childNodes[i]
				var listNode = new Object();
				
				var title = film4rssListingssNode.getElementsByTagName("title")[0].childNodes[0].nodeValue;
				
				listNode.title = title.substr(6);
				
				
				var listingTime = new Date();
				listingTime.setHours( title.substr(0,2) );
				listingTime.setMinutes( title.substr(3,2) ); 
				
				// Date Format
				var pubDate = new Date(film4rssListingssNode.getElementsByTagName("pubDate")[0].childNodes[0].nodeValue);
				
				listNode.pubDate = title.substr(0,2)+":"+title.substr(3,2);//listingTime.dateFormat(film4rssListingsDateFormat);
				
				//listNode.pubDate = pubDate.getDay()+" "+pubDate.getDate()+" "+pubDate.getMonth()+" "+pubDate.getFullYear()+" "+pubDate.getHours()+"pm";
				
				listNode.link = film4rssListingssNode.getElementsByTagName("link")[0].childNodes[0].nodeValue;
				listNode.guid = film4rssListingssNode.getElementsByTagName("guid")[0].childNodes[0].nodeValue;
				listNode.description = stripHTML(film4rssListingssNode.getElementsByTagName("description")[0].childNodes[0].nodeValue);
				
				
				//if( ( listingTime.getTime() >= listingShowFromDate.getTime() && listingTime.getTime() <= listingShowToDate.getTime() ) ){
					film4rssListingsArray.push(listNode)
				//}
				
			}
		}
				
	}else{
		
		alert('no data found');
		
	}
	
	film4rssListingsXmlDocDisplay()
}

function film4rssListingsXmlDocDisplay()
{
	// output html
	var HtmlString = "";
	
	for(var i=0; i<film4rssListingsArray.length; i++){
		var firstShowTitle = film4rssListingsArray[i].programme_title
		var firstShowTime = film4rssListingsArray[i].bill_time
		var HtmlObject = film4rssListingsItemHtmlObject;
		for(var obj in film4rssListingsArray[i]){
			HtmlObject = HtmlObject.split('%'+obj+'%').join(film4rssListingsArray[i][obj])
		}
		HtmlString += HtmlObject;
	}
	// put html output in container
	film4rssListingsXmlDocContainer.innerHTML = HtmlString;
	
	// auto update
	if(film4rssListingsUpdaterTime > 0){
		film4rssListingsUpdaterInt = setTimeout("film4rssListingsXmlDocInit()",(film4rssListingsUpdaterTime*1000)+((film4rssListingsUpdaterDecay*1000)*film4rssListingsUpdaterIntCounter))
	}
	film4rssListingsUpdaterIntCounter++
		
}
function film4rssListingsXmlDocInit()
{
	if(document.getElementById(film4rssListingsXmlDocDivContainer)){
		film4rssListingsXmlDocContainer = document.getElementById(film4rssListingsXmlDocDivContainer)
		film4rssListingsXmlDocLoad()
	}else{
		alert('no output container ('+film4rssListingsXmlDocDivContainer+') found');
	}
}

function addEvent(obj, type, fn){
	if(obj.addEventListener){
		obj.addEventListener(type, fn, false);
	}
	else if(obj.attachEvent){
		obj["e" + type + fn] = fn;
		obj[type + fn] = function(){
				obj["e" + type + fn](window.event);
			}
		obj.attachEvent("on" +type, obj[type+fn]);
	}
}

addEvent(window, "load", film4rssListingsXmlDocInit);
