/* EPG Program Object */

function EPG_Program(pgName,pgKey,pgScheduleId,pgLink,pgShortDesc,pgLongDesc,pgStartTime,pgEndTime,pgDuration,pgChannel){
	this.programName = pgName;
	this.programKey = pgKey;
	this.programLink = pgLink;
	this.programShortDesc = pgShortDesc;
	this.programLongDesc = pgLongDesc;
	this.programStartTime = pgStartTime;
	this.programEndTime = pgEndTime;
	this.programDuration = pgDuration;
	this.scheduleId = pgScheduleId
	this.detailsLoaded = false;	
	this.parentObj = pgChannel;
	this.seriesID = null;
	this.detailsVisible = false;
	this.isGapProgram = false;
}

EPG_Program.prototype.isDetailsLoaded = function() {
	if(this.detailsLoaded == true)
		return true;
	else
		return false;
}

EPG_Program.prototype.showTooltip = function() {
    if(!$('tooltip')) newelement('tooltip');
    var lixlpixel_tooltip = $('tooltip');
    lixlpixel_tooltip.innerHTML = $('program-' + this.scheduleId + '-tooltip').innerHTML;
    lixlpixel_tooltip.style.display = 'block';    
    document.onmousemove = getmouseposition;

	$(this.scheduleId + '-program-cell').style.background = "url('/images/epg/bkgd/channel-bg-selected.gif')";  
}

EPG_Program.prototype.exitTooltip = function() {
    $('tooltip').style.display = 'none';
    
    if (!(this.detailsVisible))
	   	$(this.scheduleId + '-program-cell').style.background = "#FFFFFF";
}


EPG_Program.prototype.getProgramDetails = function(div_id) {


	var obj = this;
	
	parent_div = document.getElementById(div_id);

	var handlerFunc = function(t) {
		var JSON_string = t.responseText;
		var myObject = eval('(' + JSON_string + ')');
		obj.programLongDesc = myObject.program.description;
		obj.isGapProgram = myObject.program.isGapProgram;

		if(typeof myObject.program.series != "undefined")
			obj.seriesID = myObject.program.series.programGroupId;

		if(typeof myObject.program.showPageLink != "undefined") 
			obj.programLink = myObject.program.showPageLink.url;
			
		obj.printDetails(div_id);
		this.detailsLoaded = true;
	}
	
	var errFunc = function(t) {
	    alert('Error ' + t.status + ' -- ' + t.statusText);
	}

	new Ajax.Request('/epg.program_details.xmc', {parameters:'programId=' + this.programKey, onSuccess:handlerFunc, onFailure:errFunc});
	
}


EPG_Program.prototype.printDetails = function(div_id) {


	parent_div = document.getElementById(div_id);
	
	parent_div.innerHTML = '';
	parent_div.style.backgroundColor = '';
	document.getElementById(this.scheduleId + '-program-cell').style.background = "url('/images/epg/bkgd/channel-bg-selected.gif')";    
	
	program_details_topline = document.createElement('span');
	program_details_topline.className = 'program_details_topline';
	parent_div.appendChild(program_details_topline);
	
	detailsTitle = document.createElement('span');
	detailsTitle.innerHTML = this.programName;
	
	
	pipe = document.createElement('span');
	pipe.innerHTML = ' | ';
	
	channelLink = document.createElement('a');
	channelLink.href = this.parentObj.channelLink;	
	channelLink.innerHTML = this.parentObj.channelNumber + ' ' + this.parentObj.channelName;
	
	
	pipe2 = document.createElement('span');
	pipe2.innerHTML = ' | ';
	
	timeDuration = document.createElement('span');
	timeDuration.innerHTML = '';
	
	programStartTime = this.programStartTime;
	programEndTime = this.programEndTime;
	
	
	var adjustTime = 1000 * 60 * 60 * this.parentObj.parentObj.timezoneOffset;

	var parsedProgramStartTime = new Date(programStartTime.substring(0,4),(programStartTime.substring(5,7)-1),programStartTime.substring(8,10),programStartTime.substring(11,13),programStartTime.substring(14,16));
	
	parsedProgramStartTime.setTime(parsedProgramStartTime.getTime() - adjustTime);
	formattedProgramStartTime = parsedProgramStartTime.formatDate("g:i A");


		

	var parsedProgramEndTime = new Date(programEndTime.substring(0,4),(programEndTime.substring(5,7)-1),programEndTime.substring(8,10),programEndTime.substring(11,13),programEndTime.substring(14,16));
	parsedProgramEndTime.setTime(parsedProgramEndTime.getTime() - adjustTime);	
	formattedProgramEndTime = parsedProgramEndTime.formatDate("g:i A");
	
	timeDuration.innerHTML += formattedProgramStartTime + ' to ' + formattedProgramEndTime;
	timeDuration.innerHTML += ' (' + converte_m2h((Math.round(this.programDuration/3600000*10)/10) * 60) + ')';
	
	hideDetails = document.createElement('span');
	hideDetails.className = 'hide-details';
	clickevent = "document.getElementById('" + div_id + "').style.display = 'none'; unselectCells();";	
	hideDetails.innerHTML = '<img onClick="' + clickevent + '" src="/images/epg/btn/x.jpg">';
	hideDetails.src="/images/epg/btn/details-arrow.gif";
	
	program_details_topline.appendChild(detailsTitle);	
	program_details_topline.appendChild(pipe);	
	program_details_topline.appendChild(channelLink);
	program_details_topline.appendChild(pipe2);				
	program_details_topline.appendChild(timeDuration);	
	parent_div.appendChild(hideDetails);	

	
	detailsInfo = document.createElement('p');
	detailsInfo.className = 'details-info';
	detailsInfo.innerHTML = this.programLongDesc;
	parent_div.appendChild(detailsInfo);

	detailsNav = document.createElement('p');
	detailsNav.className = 'details-nav';
	
	pipe = document.createElement('span');
	pipe.innerHTML = ' | ';

	addFav = document.createElement('span');



	if(this.isGapProgram == false) {
		if((isFavoriteShow(this.scheduleId)) || (isFavoriteSeries(this.seriesID))) {
			if($("schedule_tab"))
				addFav_html = '<span>Already a Favorite: <a onclick="switchMainTab(\'favorites\')">View My Favorite Shows</a></span>';
			else
				addFav_html = '<span>Already a Favorite: <a href="/onxm/index.xmc?view=favorites">View My Favorite Shows</a></span>';
		} else {
			addFav_html = '<span><a onClick="showAddFavoriteShow(' + this.parentObj.channelNumber + ',' + this.scheduleId + ');">Add to My Favorite Shows</a></span>';
		}
	}
	
	parent_div.appendChild(detailsNav);
	
	if (this.programLink != undefined && this.programLink != '') {
		viewShowPage = document.createElement('a');
		viewShowPage.innerHTML = 'View Show Page';
		viewShowPage.href = this.programLink;
			
		detailsNav.appendChild(viewShowPage);
		detailsNav.appendChild(pipe);	
	}
	detailsNav.innerHTML += addFav_html;
	
	var scrollValue = document.getElementById('epg_grid_scroll').scrollTop;	

	if((parent_div.offsetTop - scrollValue) >= 150) {
		document.getElementById('epg_grid_scroll').scrollTop = scrollValue + ((parent_div.offsetTop - scrollValue) - 150);
	}
	
}


EPG_Program.prototype.showDetails = function(div_id) {

	hideAllChannels();
	 unselectCells();
	
	parent_div = document.getElementById(div_id);
	parent_div.style.display = 'block';
	parent_div.innerHTML = '<center><img src="/images/epg/60x51_loading.gif"></center>';
	parent_div.style.backgroundColor = '#333';
	if (this.isDetailsLoaded() == false)
		this.getProgramDetails(div_id);
	else
		this.printDetails(div_id);

	this.detailsVisible = true;

}