
	
function displayProgrammesDropdown(){
	var dropdown = $('topNavProgrammesDropDown');
	if (dropdown.getStyle('display') == 'none') {
		$('topNavProgrammesButton').addClass('on');
		if ($('topNavExtrasDropDown').getStyle('display') == 'block') {clearExtrasDropdown();}
		var top = $('topNav').getPosition().y + $('topNav').getCoordinates().height;
		dropdown.setStyles({'position':'absolute','top':top,'right':7, 'visibility':'hidden','overflow':'hidden','display':'block', 'height':'auto'});
		var height = dropdown.getCoordinates().height;
		dropdown.setStyles({'height':0,'visibility':'visible'});
		dropdown.set('tween',{duration: 400, onComplete:function(){this.setStyle('overflow','visible');}.bind(dropdown)}).tween('height', [0,height]);
	}
}

function clearProgrammesDropdown(){
	$('topNavProgrammesButton').removeClass('on');
	var dropdown = $('topNavProgrammesDropDown');
	dropdown.setStyle('overflow','hidden');
	var height = dropdown.getCoordinates().height;
	dropdown.set('tween',{duration: 200, onComplete:function(){this.setStyles({'visibility':'hidden', 'display':'none'});}.bind(dropdown)}).tween('height', [height,0]);
}

function displayExtrasDropdown(){
	var dropdown2 = $('topNavExtrasDropDown');
	if (dropdown2.getStyle('display') == 'none') {
		$('topNavExtrasButton').addClass('on');
		if ($('topNavProgrammesDropDown').getStyle('display') == 'block') {clearProgrammesDropdown();}
		var top = $('topNav').getPosition().y + $('topNav').getCoordinates().height;
		var left = $('topNavExtrasButton').getPosition().x - $('topNav').getPosition().x + 13;
		dropdown2.setStyles({'position':'absolute','top':top,'left':left, 'visibility':'hidden','overflow':'hidden','display':'block', 'height':'auto'});
		var height = dropdown2.getCoordinates().height;
		dropdown2.setStyles({'height':0,'visibility':'visible'});
		dropdown2.set('tween',{duration: 400, onComplete:function(){this.setStyle('overflow','visible');}.bind(dropdown2)}).tween('height', [0,height]);
	}
}

function clearExtrasDropdown(){
	$('topNavExtrasButton').removeClass('on');
	var dropdown2 = $('topNavExtrasDropDown');
	dropdown2.setStyle('overflow','hidden');
	var height = dropdown2.getCoordinates().height;
	dropdown2.set('tween',{duration: 200, onComplete:function(){
		this.setStyles({'visibility':'hidden', 'display':'none'});}.bind(dropdown2)
	}).tween('height', [height,0]);
}

function toggle24hrs(channel) {
	var el = $('tvListingsTime');
	if (el.get('html') == "+ 24 hours") {
		el.set('html', "- 24 hours");
		var dt = new Date();
		dt.setDate(dt.getDate()+1);
		renderTVListings(channel, dt, 1);
	}
	else {
		el.set('html', "+ 24 hours");
		renderTVListings(channel, new Date(), 1);
	}
}

function toggleListings() {
	if (fullView == true) {
		fullView = false;
		$('tvListingsView').set('html', '+ Expanded View');
		$$('.tvListing').each( function (listing, index) { 
			closeListing(listing);
		});
	}
	else {
		fullView = true;
		$('tvListingsView').set('html', '- Compact View');
		$$('.tvListing').each( function (listing, index) { 
			openListing(listing);    
		});
	}
}

function openListing(el) {
	el.setStyle('padding','6px 12px 6px 12px');
	el.set('tween', {duration:300}).tween('height',el.getScrollSize().y-3);
	el.setStyle('border-bottom','1px solid #dddddd');
}

function closeListing(el) {
	el.setStyle('border-bottom','0px solid #dddddd');
	el.set('tween', {duration:300}).tween('height',16);
	el.setStyle('padding','6px 12px 0px 12px');
}

	

function formatDate(d) {
	var date = d.getDate();
	var month = d.getMonth()+1;
	var year = d.getFullYear();
	var hour = d.getHours();
	var minute = d.getMinutes();
	var second = d.getSeconds();
	return date+"/"+month+"/"+year+" "+d.toTimeString().substring(0, 9);
}

function formatDate1(d) {
	var d_names = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
	var m_names = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	var date = d.getDate();
	var dayNum = d.getDay();
	var day = d_names[dayNum];
	var monthNum = d.getMonth();
	var month = m_names[monthNum];
	return day+" "+date+" "+month;
}

function formatDateISO(d) {
	var date = d.getDate();
	date = (date < 10 ? '0' : '') + date;
	var month = d.getMonth()+1;
	month = (month < 10 ? '0' : '') + month;
	var year = d.getFullYear();
	var hour = d.getHours();
	var minute = d.getMinutes();
	var second = d.getSeconds();
	return year+"-"+month+"-"+date+"T"+d.toTimeString().substring(0, 8);
}


function dateToInt(d) {
	var str = '';
	if (typeof d == 'object') {
		var date = d.getDate() < 10 ? "0" + d.getDate() : d.getDate();
		var month = d.getMonth()+1;
		month = month  < 10 ? "0" + month  : month ;
		var year = d.getFullYear();
		var hour = d.getHours() < 10 ? "0" + d.getHours() : d.getHours();
		var minute = d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes();
		str = ''+year+month+date+hour+minute;
	}
	else if (typeof d == 'string') {
		var date = d.substring(8, 10);
		var month = d.substring(5, 7);
		var year = d.substring(0, 4);
		var hour = d.substring(11,13);
		var minute = d.substring(14,16);
		str = ''+year+month+date+hour+minute;
	}
	return(parseInt(str));
}

function strToDate(d) {
	var dt = new Date();
	dt.setMonth(parseInt(d.substring(5, 7),10)-1);
	dt.setDate(parseInt(d.substring(8, 10),10));
	dt.setYear(parseInt(d.substring(0, 4),10));
	dt.setHours(parseInt(d.substring(11,13),10));
	dt.setMinutes(parseInt(d.substring(14,16),10));
	dt.setSeconds(0);
	return(dt);
}

function renderTVListings(channel, date, days) {
	var holder = $('tvListings');
	holder.set('html', '');
	new Element ('img', {'src':'/images/ajax-loader.gif', 'class':'tvListingsLoader'}).inject(holder);

	var chan = (typeof channel=='undefined') ? "RTE 1" : channel;
	var from = (typeof date=='undefined') ? new Date() : new Date(date.getTime());
	from.setSeconds(0);
	from.setMilliseconds(0)
	from.setMinutes(0);


	var to = (typeof date=='undefined') ? new Date() : new Date(date.getTime());
	to.setSeconds(0);
	to.setMilliseconds(0)
	to.setMinutes(0);
	var numDays = (typeof days=='undefined') ? 1 : days;
	to.setDate(to.getDate()+numDays);



	/*var feedUrl = "http://www.rte.ie/guide/tvlistingJSON?channel="+chan+"&fromdate="+formatDate(from)+"&todate="+formatDate(to);*/

	var _channel = chan.replace(' ', '_');
	var feedUrl = "http://www.rte.ie/tv_listing/"+formatDateISO(from)+"/"+formatDateISO(to)+"/"+_channel+".json";



	try {
		var jsonRequest = new Request.JSON({
			url : feedUrl,
			method : "get",
			secure : false,
			async : false,
			headers : {'X-Request': 'JSON'},
			onComplete : function(obj, text) {
							if (holder) {
								holder.set('html', '');
								if (obj.listings && obj.listings.length > 0) {
									var channelName;
									if (chan == 'RTE 1') channelName = 'RTÉ One';
									else if (chan == 'RTE 2') channelName = 'RTÉ Two';
									else channelName = chan;
									new Element ('h2', {'html':channelName +" - "+formatDate1(date)}).inject(holder);
									obj.listings.each( function (el, index) { 
										var _class = 'tvListing';
										if (el.DATE.substring(11, 13) == '19' || el.DATE.substring(11, 13) == '20' || el.DATE.substring(11, 13) == '21') {_class += " primetime";}
										var listingHolder = new Element ('div', {'class':_class}).inject(holder);
										if (fullView == false) {listingHolder.setStyles({'height':16, 'border-bottom':'0px solid #dddddd', 'padding':'2px 12px'});}
										var time = new Element ('div', {'class':'tvListingTime', 'html':el.DATE.substring(11, 16)}).inject(listingHolder);
										var title = (el.PROGRAMM+"").replace("RTE", "RTÉ");

										var h3 = new Element ('h3', {'html':title}).inject(listingHolder);
										var para = new Element ('p', {'html':el.EPISODE}).inject(listingHolder);
										var icons = new Element ('p', {'class':'tvListingIcons'}).inject(time);
										if (el.VIDEOPLUS && el.VIDEOPLUS != '' && el.VIDEOPLUS.indexOf('Subtitles') >= 0 ) {
											var link = new Element ('img', {'src':'images/listing_icon_subtitles.png'}).inject(icons);
										}
										if (el.VIDEOPLUS && el.VIDEOPLUS != '' && el.VIDEOPLUS.indexOf('Premiere') >= 0 ) {
											var link = new Element ('img', {'src':'images/listing_icon_new.png'}).inject(icons);
										}
										if (el.VIDEOPLUS && el.VIDEOPLUS != '' && (el.VIDEOPLUS.indexOf('Shown earlier') >= 0 ||el.VIDEOPLUS.indexOf('Shown yesterday') >= 0 ||el.VIDEOPLUS.indexOf('Repeat') >= 0) ) {
											var link = new Element ('img', {'src':'images/listing_icon_repeat.png'}).inject(icons);
										}
										if (el.VIDEOPLUS && el.VIDEOPLUS != '' && el.VIDEOPLUS.indexOf('Widescreen') >= 0) {
											var link = new Element ('img', {'src':'images/listing_icon_widescreen.png'}).inject(icons);
										}
										if (el.WEBPAGE && el.WEBPAGE != '') {var link = new Element ('a', {'class':'tvListingWebsite', 'href':el.WEBPAGE, 'html':'website'}).inject(h3);}
									});
								
								}
								else {
									holder.set('html', "No Listings Available");
								}
							}
						},
			onFailure : function (e) {},
			onException : function (e) {}
		}).send();
	}
	catch(e) {}
}

	
function homePlayerChange(num) {
	var array = $('tvHomePlayerButtons').getElements('a');
	for (i=0; i<array.length; i++) {
		array[i].removeClass('on');
		$('homePlayerBlock'+(i+1)).setStyle('display', 'none')
	};

	$('tvHomePlayerButtons'+num).addClass('on')
	$('homePlayerBlock'+num).setStyle('display', 'block')
}




var onProgrammesDropdown = false;
var onExtrasDropdown = false;
var onProgrammesButton = false;
var onExtrasDropButton = false;
window.addEvent('domready', function() {			
	//if ($('homeListingsScroll')) {var playerScrollBox = new MooScroll({selector:'#homeListingsScroll'});}
	
	if ($('homeListingsRte1Col') && $('homeListingsRte2Col')) renderHomePageListings();

	if($('topNavProgrammesButton') && $('topNavProgrammesDropDown')) {
		$('topNavProgrammesButton').addEvent('mouseenter', function(){						   
			onProgrammesButton = true;
			displayProgrammesDropdown();
		});
		$('topNavProgrammesButton').addEvent('mouseleave', function(){						   
			window.setTimeout(function() {if (!onProgrammesDropdown) clearProgrammesDropdown();},50);
			onProgrammesButton = false;
		});
		$('topNavProgrammesDropDown').addEvent('mouseenter', function(){
			onProgrammesDropdown = true;
		});	
		$('topNavProgrammesDropDown').addEvent('mouseleave', function(){
			window.setTimeout(function() {if (!onProgrammesButton) clearProgrammesDropdown();},50);
			onProgrammesDropdown = false;
		});	
	}

	if($('topNavExtrasButton') && $('topNavExtrasDropDown')) {
		$('topNavExtrasButton').addEvent('mouseenter', function(){						   
			displayExtrasDropdown();
		});
		$('topNavExtrasButton').addEvent('mouseleave', function(){						   
			window.setTimeout(function() {if (!onExtrasDropdown) clearExtrasDropdown();},50);
		});
		$('topNavExtrasDropDown').addEvent('mouseenter', function(){
			onExtrasDropdown = true;
		});	
		$('topNavExtrasDropDown').addEvent('mouseleave', function(){
			clearExtrasDropdown();
			onExtrasDropdown = false;
		});	
	}

});		

function addOffsetItem(holder, arr, time, i) {
	/* adds item to div between arr[i] and time */
	var dt = strToDate(arr[i].DATE);
	var t1 = dt.getTime();
	var t2 = time.getTime();
	var mins = Math.round((t1 - t2)/60000);
	
	if (mins > 0) {
		h = Math.round(((mins/5)*12)-1);
		var cl = (mins  < 16) ? (mins < 10 ? ((mins < 5) ? 'tiny' : 'small') : 'mid') : '';
		var title = '';
		var rel = '';
		if (i>0) {title = arr[i-1].DATE.substring(11, 16)+" "+(arr[i-1].PROGRAMM+"").replace("RTE", "RTÉ");}
		if (i>0) {rel = arr[i-1].EPISODE;}
		var div = new Element ('div', {'html':((mins < 5) ? '' : title), 'title':title, 'rel':rel, 'style':'height:'+h+'px', 'class':cl}).inject(holder);
		addHoverEffect(div);
	}
}

function addHoverEffect (el) {
	el.addEvent('mouseenter', function(){this.addClass('hover');}.bind(el));
	el.addEvent('mouseleave', function(){this.removeClass('hover');}.bind(el));
	new Tips(el, {className: 'listingsTip', offsets:{'x':16, 'y':0}, fixed:false, 
		onShow: function(el){
			el.setStyles({'opacity':'0', 'z-index':'1000000'});
	    	el.fade(1);
		},
		onHide: function(el){
	    	el.fade(0);
		}
	});
}

function renderHomePageListings() {
	
	var timeHolder = $('homeListingsTimeCol');
	var RTE1holder = $('homeListingsRte1Col');
	var RTE2holder = $('homeListingsRte2Col');

	var from = new Date();
	from.setSeconds(0);
	if (from.getMinutes() > 29) {from.setMinutes(30);}
	else {from.setMinutes(0);}
	var to = new Date();
	to.setSeconds(0);
	if (to.getMinutes() > 29) {to.setMinutes(30);}
	else {to.setMinutes(0);}
	to.setHours(from.getHours()+12);
	
	var timeCol = $('homeListingsTimeCol');
	var time = new Date();
	time.setSeconds(0);
	if (time.getMinutes() > 29) {time.setMinutes(30);}
	else {time.setMinutes(0);}
	for (i=0;i<25;i++) {
		t = (time.getHours() < 10 ? '0' : '') + time.getHours()+'.'+(time.getMinutes() < 10 ? '0' : '') + time.getMinutes();
		new Element ('div', {'html':t}).inject(timeCol);
		time.setMinutes(time.getMinutes()+30);
	}

/*	var RTE1FeedUrl = "http://www.rte.ie/guide/tvlistingJSON?channel=RTE%201&fromdate="+formatDate(from)+"&todate="+formatDate(to);
	var RTE2FeedUrl = "http://www.rte.ie/guide/tvlistingJSON?channel=RTE%202&fromdate="+formatDate(from)+"&todate="+formatDate(to); */
	var RTE1Listings;
	var RTE2Listings;

	var RTE1FeedUrl = "http://www.rte.ie/tv_listing/"+formatDateISO(from)+"/"+formatDateISO(to)+"/RTE_1.json";
	var RTE2FeedUrl = "http://www.rte.ie/tv_listing/"+formatDateISO(from)+"/"+formatDateISO(to)+"/RTE_2.json";


	try {
		var jsonRequest = new Request.JSON({
			url : RTE1FeedUrl,
			method : "get",
			secure : false,
			async : false,
			headers : {'X-Request': 'JSON'},
			onComplete : function(obj, text) {
							if (obj.listings && obj.listings.length > 0) RTE1Listings = obj.listings;
						},
			onFailure : function (e) {},
			onException : function (e) {}
		}).send();
	}
	catch(e) {}


	try {
		var jsonRequest = new Request.JSON({
			url : RTE2FeedUrl,
			method : "get",
			secure : false,
			async : false,
			headers : {'X-Request': 'JSON'},
			onComplete : function(obj, text) {
							if (obj.listings && obj.listings.length > 0) RTE2Listings = obj.listings;
						},
			onFailure : function (e) {},
			onException : function (e) {}
		}).send();
	}
	catch(e) {} 
	
	var start = dateToInt(from);
	var first;
	
	if (RTE1Listings && RTE1Listings.length > 0 && RTE1holder) {
		first = false;
		for (i=0; i<RTE1Listings.length; i++) {
			if (dateToInt(RTE1Listings[i].DATE) >= start) { 
				if (first == false) {addOffsetItem(RTE1holder, RTE1Listings, from, i);first=true;} 
				var h = Math.round(((RTE1Listings[i].DURATION/5)*12)-1);
				var cl = (RTE1Listings[i].DURATION  < 16) ? (RTE1Listings[i].DURATION < 10 ? ((RTE1Listings[i].DURATION < 5) ? 'tiny' : 'small') : 'mid') : '';
				var t = (RTE1Listings[i].PROGRAMM + "").replace("RTE", "RTÉ");
				var title = ((RTE1Listings[i].DURATION < 5) ? '' : t);
				var div = new Element ('div', {'html':title, 'title':RTE1Listings[i].DATE.substring(11, 16)+" "+t, 'rel':RTE1Listings[i].EPISODE, 'style':'height:'+h+'px', 'class':cl}).inject(RTE1holder);
				addHoverEffect(div);
			}
		}
	}
	
	if (RTE2Listings && RTE2Listings.length > 0 && RTE2holder) {
		first = false;
		for (i=0; i<RTE2Listings.length; i++) { 
			if (dateToInt(RTE2Listings[i].DATE) >= start) { 
				if (first == false) {addOffsetItem(RTE2holder, RTE2Listings, from, i);first=true;} 
				var h = Math.round(((RTE2Listings[i].DURATION/5)*12)-1);
				var cl = (RTE2Listings[i].DURATION  < 16) ? (RTE2Listings[i].DURATION < 10 ? ((RTE2Listings[i].DURATION < 5) ? 'tiny' : 'small') : 'mid') : '';
				var t = (RTE2Listings[i].PROGRAMM + "").replace("RTE", "RTÉ");
				var title = ((RTE2Listings[i].DURATION < 5) ? '' : t);
				var div = new Element ('div', {'html':title, 'title':RTE2Listings[i].DATE.substring(11, 16)+" "+t, 'rel':RTE2Listings[i].EPISODE, 'style':'height:'+h+'px', 'class':cl}).inject(RTE2holder);
				addHoverEffect(div);
			}
		}
	}
	
	if (RTE2Listings && RTE2Listings.length > 0 && RTE2holder && RTE1Listings && RTE1Listings.length > 0 && RTE1holder) {
		$('homeListingsLoader').setStyle('display','none');
		$('homeListings').setStyles({'visibility':'visible', 'opacity':'0'});
		$('homeListings').set('tween',{duration: 300}).tween('opacity', [0,1]);
	}
	
}


function writePlayerStrip(programme) {
	document.write("<div id=\"player_bug\"></div>");
	var programmeTitle = programme;
	var feedUrl = "http://www.rte.ie/vodfeeds/feedgenerator/json/programme/";
	try {
		var jsonRequest = new Request.JSON({
			url : feedUrl + "?id=" + programmeTitle,
			method : "get",
			secure : false,
			async : false,
			headers : {'X-Request': 'JSON', 'Last-Modified' : 'Sat, 1 Jan 2005 05:00:00 GMT'},
			onComplete : function(obj, text) {
							if (obj.length > 0 && obj[0].pk) {
								holder = $('player_bug');
								holder.setStyle('display','block');
								holder.setStyle('border-width','1px');
								holder.setStyle('height','33px');
								var link = new Element("a", {
									"class": "watch",
									"href": "/player/#v=" + obj[0].pk
								}).inject(holder);
								var link = new Element("p", {
									"html": obj.length + " episode" + (obj.length > 1 ? "s" : "") + " available"
								}).inject(holder);
							}
						},
			onFailure : function () {},
			onException : function () {}
		}).send();
	}
	catch(e) {}
}


function writePlayerBox() {
	var programmeTitle = $('btnplayerTitle').get('html');
	var feedUrl = "http://www.rte.ie/vodfeeds/feedgenerator/json/programme/";
	try {
		var jsonRequest = new Request.JSON({
			url : feedUrl + "?id=" + programmeTitle,
			method : "get",
			secure : false,
			async : false,
			headers : {'X-Request': 'JSON', 'Last-Modified' : 'Sat, 1 Jan 2005 05:00:00 GMT'},
			onComplete : function(obj, text) {
							var link = $('btnplayerLink');
							link.setStyle('opacity',0)
							if (link) {
								if (obj.length > 0 && obj[0].pk) {
									link.set('html', obj.length + " Episode" + (obj.length > 1 ? "s" : "") + " Available to Watch");
									link.set('href', "/player/#v=" + obj[0].pk);
								}
								else {
									link.set('html', "No Episodes Available to Watch");
								}
								link.set('tween',{duration: 300}).tween('opacity', [0,1]);
							}
						},
			onFailure : function () {},
			onException : function () {}
		}).send();
	}
	catch(e) {}
}




