
	/*
	JS
	--------------------------------------------------------------------------------------------
	@site			sho.com/movies
	@package		movies
	@file			OnTonight.js
	@author			ncavanagh
	@modified		12.15.09	

	
	/* =:OnTonight
	--------------------------------------------------------------------------------------------*/
	OnTonight = function()
	{	
		var channelData;
		var onTonightData = [];
		var onTonight;
		var SCHEDULE_URL = '/site/movies/tonight-json.do';
		//var params = '?date=12/19/2009&channel=';
		var params = '?channel=';
		var channels = $w('SHO SH2 TMC');
		var count = 0;
		var startTime = 1900;
		var endTime = 2330;
		var limit = 5;
		
		function init()
		{
			if (!$('on-tonight')) return;
			onTonight = $('on-tonight');
			channels.each( function(channel, idx){  
					initSchedule(channel);
					}); 
		}
		
		function initSchedule(channel)
		{	
			onTonight.addClassName('loading');
			
			var req = new Ajax.Request( SCHEDULE_URL + params + channel, {
				onSuccess:onScheduleReady,
				onFailure:function(){
					//alert('a connection error has occurred');
				}
			});
		}
		
		function onScheduleReady(r)
		{ 
			$('on-tonight-container').show();
			channelData = r.responseText.evalJSON() || []; 
			if(channelData.length > 1 )
			{   
				for (i=0; i<channelData.length; i++)
				{ 
					if ((channelData[i].seriesID == 0) && (channelData[i].startTimeMilitary >= startTime) && (channelData[i].startTimeMilitary <= endTime)) {
						onTonightData.push(channelData[i]);  
					}
				}
			}
			count++;
			if (count == channels.length) { drawSchedule(); }
		}
		
		function drawSchedule()
		{ 	
			onTonightData.sort(compareTimes);  
			if (limit == 0 || limit > onTonightData.length ) { limit = onTonightData.length; }
			for (i=0; i<limit; i++)	{   
				var titleLink = new Element ('a', { 'href':'http://www.sho.com/site/schedules/product.do?episodeid='+onTonightData[i].episodeID+'&seriesid=0&seasonid=0'}).update(onTonightData[i].title);
				var scheduleItem = new Element('ul', { 'class':'schedule-item clearfix' }); 
				var airTime = new Element('li', { 'class':'air-time' }).update(onTonightData[i].startTime);
				var title = new Element('li', { 'class':'title' }).update(titleLink);
				var channel = new Element('li', { 'class':'channel' }).update(onTonightData[i].channel);  
				onTonight.appendChild(scheduleItem);
				scheduleItem.appendChild(airTime);
				scheduleItem.appendChild(title);
				scheduleItem.appendChild(channel);  
			}
			
			onTonight.removeClassName('loading');
			
			var scheduleHeight = ($('schedule').getHeight());
			var primaryHeight = ($$('.primary')[0].getHeight());
			
			// .Cosmetics is breaking IE8's scripts; under investigation. until then...
			// also, the core.Utils check for IE8 doesn't seem to be firing, so...
			if(!sho.core.Utils.isIE() || sho.core.Utils.isIE6() || sho.core.Utils.isIE7() ) { 
				sho.core.Cosmetics.snapToFit(); 
			}

			if (scheduleHeight < primaryHeight) {  
				scheduleHeight = $('schedule').style.minHeight.truncate(3, '');
				scheduleHeight = parseInt(scheduleHeight) + 87; 
				$('schedule').setStyle( { minHeight:scheduleHeight+'px'});
			}
			else if (scheduleHeight > primaryHeight) {  
				discussHeight = $('discuss').style.minHeight.truncate(3, '');
				discussHeight = parseInt(discussHeight) + 116; 
				$('discuss').setStyle( { minHeight:discussHeight+'px'});
			}

			sho.movies.InfoBox.init({
				duration:0.3,
				classNames: {
					id:'on-tonight-info',
					set:'.movie-list',
					container:'#on-tonight'
				}
			});
			
			sho.movies.InfoBox.init({
				duration:0.3,
				classNames: {
					id:'on-demand-info',
					set:'.movie-list',
					container:'#on-demand'
				}
			});  
		}
		
		function compareTimes(a, b) { 
			var timeA = a.startTimeMilitary;
			var timeB = b.startTimeMilitary;
			if (timeA < timeB) { return -1; }
			if (timeA > timeB) { return 1;}
			return 0;
		}
	
		
		/* =:Reveal as Public
		----------------------------------------------------------------------------------------*/   
		return {
			init:init
		}
	
	}();
	
	// Add to onload stack
	document.observe("dom:loaded", OnTonight.init );	