
if(typeof NICK == "undefined" || !NICK) var NICK = {};
NICK.namespace("schedule");
NICK.schedule.weekDays={Sun:"Sunday",Mon:"Monday",Tue:"Tuesday",Wed:"Wednesday",Thu:"Thursday",Fri:"Friday",Sat:"Saturday"};
NICK.schedule.months ={Jan:"January" , Feb: "February", Mar:"March",Apr:"April",May:"May",Jun:"June", Jul:"July",Aug:"August",Sep:"September",Oct:"October",Nov:"November", Dec:"December"};
NICK.schedule.seriesID="";

$(document).ready(function() {
	if ($("#on-now").length != 0) {
		NICK.schedule.getWhatsOn();
	}
	if ($("#next-on").length != 0) {
		NICK.schedule.getNextOn();
	}
});

NICK.schedule.getWhatsOn = function(){
	var nick_url = NICK.utils.getNickDomain();
	var dataURL = "http://"+ nick_url + "/sbcom/data/json/whats_on.jhtml";
	NICK.utils.doLog("Get Whats On");

	if(NICK.config.CHANNEL_ID){
		var channel = NICK.config.CHANNEL_ID;
	}else{
		var channel = "11";
	}	
	
	NICK.request.doRequest({
		dataType:"jsonp",
		url: dataURL,
		data: {channelID:channel},
		onSuccess: function(response) {
			NICK.schedule.displayWhatsOn(response.data);
		},
		onFail: function(errors) {
			for(var error in errors) {
				NICK.utils.doLog("JSON Response: Error: "+error+" - "+errors[error]);
				$("#current-tv-show").remove();
			}
		}				
	});
}

NICK.schedule.getNextOn = function(){
	if(NICK.config.CHANNEL_ID){
		var channel = NICK.config.CHANNEL_ID;
	}else{
		var channel = "11";
	}		
	
	var nick_url = NICK.utils.getNickDomain();
	var dataURL = "http://"+ nick_url + "/sbcom/data/json/next-on.jhtml?channelID=" + channel + "&seriesID="+NICK.schedule.seriesID;
	NICK.utils.doLog("Get Whats On"+dataURL);
	NICK.request.doRequest({
		dataType:"jsonp",
		url: dataURL,
		onSuccess: function(response) {
			NICK.schedule.displayNextOn(response.data.schedule);
		},
		onFail: function(errors) {
			for(var error in errors) {
				NICK.utils.doLog("JSON Response: Error: "+error+" - "+errors[error]);
				
			}
		}				
	});
}

NICK.schedule.displayWhatsOn = function(schedData){
	NICK.utils.doLog("Display Whats On");
	var timeZone = NICK.utils.getTimezone();
	var whatsOn = schedData[0];
	var showTime = new Date(Date.parse(whatsOn.CalendarAirTime));
	
	if(timeZone == "east"){	
		NICK.schedule.displayOnNow(schedData);
	}else{
		NICK.schedule.whatsOnWest(showTime);
	}
}

NICK.schedule.displayNextOn = function(schedData){
	var htmlOutput = "";
	var counter=0;
	for (var loopID in schedData) {
		var scheduleData = schedData[loopID];
		
		showTime = new Date(Date.parse(scheduleData.CalendarAirTime));
		htmlOutput += "<li>"+NICK.schedule.formatDateText(scheduleData.CalendarAirTime)+ ", " + NICK.schedule.convertTime(showTime) + "</li>";
		if(loopID == 3){
			break;
		}
	}
	
		$("#next-on").html(htmlOutput);
	
	
}

NICK.schedule.displayOnNow = function(schedData){
	var whatsOn;
	var htmlOutput = "";
	for (var loopID in schedData) {
		var scheduleData = schedData[loopID];
		showTime = new Date(Date.parse(scheduleData.CalendarAirTime));
		htmlOutput += "<li><span>"+ NICK.schedule.convertTime(showTime) +"</span><h3>" + scheduleData.seriesName + "</h3></li>";
		if(loopID == 3){
			break;
		}
	}
		$("#on-now").html(htmlOutput);
}

NICK.schedule.whatsOnWest = function(eastTime){
	NICK.schedule.eastTime = eastTime;
	var nick_url = NICK.utils.getNickDomain();
	var westTime = new Date(eastTime.getTime() - (3*60*60*1000) );
	var startDate = westTime.getFullYear() + "-" + (westTime.getMonth()+1) + "-" + westTime.getDate() + " " + westTime.getHours() + ":" + westTime.getMinutes()+":00.0";
	
	var westTimePlus = new Date(eastTime.getTime() + (2*60*60*1000) );
	var endDate = westTimePlus.getFullYear() + "-" + (westTimePlus.getMonth()+1) + "-" + westTimePlus.getDate() + " " + westTimePlus.getHours() + ":" + westTimePlus.getMinutes()+":00.0";
	
	var dataURL = "http://" + nick_url + "/sbcom/data/json/schedule-range.jhtml";
	NICK.request.doRequest({
		dataType:"jsonp",
		url: dataURL,
		data: {channelID:11, startDate:startDate ,endDate:endDate },
		onSuccess: function(response) {
			//NICK.schedule.displayWest(response.data);
			NICK.schedule.displayOnNow(response.data);
		},
		onFail: function(errors) {
			for(var error in errors) {
				NICK.utils.doLog("JSON Response: Error: "+error+" - "+errors[error]);
			}
		}				
	});	
}

NICK.schedule.formatDateText = function(date){
	/*Format a date from javascript date into a format Weekday MM/DD */
	var format = NICK.schedule.weekDays[date.substr(0,3)]+" "+ NICK.schedule.months[date.substr(4,3)]+" "+NICK.schedule.formatDateDay(date.substr(8,2));
	return format;
}

NICK.schedule.formatDateDay = function(num){
	var day = (num.substr(0,1)==0)?num.substr(1,1):num;
	switch(day){
		case "1":
			day+="<span class='lowercase'>st</span>";
			break;
		case "2":
			day+="<span class='lowercase'>nd</span>";
			break;
		case "3":
			day+="<span class='lowercase'>rd</span>";
			break;
		default:
			day+="<span class='lowercase'>th</span>";
			break;
	}
	return day;
}

NICK.schedule.convertTime = function(date){
	/*
	 * Convert a time from javascript date to a viewable HH:MM AM/PM format
	 */
	var realHour = date.getHours();
	var minutes = date.getMinutes();
	if (minutes < 10){
		minutes = "0" + minutes
	}
	var amPm = '';
	if(realHour > 11){
		amPm = " PM";
	} else {
		amPm = " AM";
	}
	if (realHour > 12) {
		realHour = realHour -12
	}
	if(realHour < 1){realHour = 12;}
	var timeText = realHour + ":" + minutes + amPm;
	return timeText
}