// wrappers to call list type specific ajax functions from listings.js ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

pageSetUserSignedUp = function ()
{
    eng_schedule_uk_vertical.setUserSignedUp(callback_setUserSignedUp);
}

pageChangeCustomView = function (customviewid)
{

    eng_schedule_uk_vertical.changeCustomView(customviewid, callback_UpdateListings);
}

pageChangeManagedView = function (managedviewid)
{
    eng_schedule_uk_vertical.changeManagedView(managedviewid, callback_UpdateListings);
}

pageDisplayCurrentlyShowing = function ()
{
    eng_schedule_uk_vertical.GetCurrentlyShowing(callback_currentlyShowing);
}

pageUpdateUserInputs = function (setDate, startTime, duration)
{
    eng_schedule_uk_vertical.updateUserInputs(setDate, startTime, duration, callback_UpdateListings);
}

pageUpdateChannel = function (sort, uk_station_id)
{
    eng_schedule_uk_vertical.updateChannel(sort, uk_station_id, callback_UpdateListings);
}

pageAddNewChannel = function (uk_station_id)
{
    eng_schedule_uk_vertical.addNewChannel(uk_station_id, callback_UpdateListings);
}

pageRemoveChannel = function (uk_station_id)
{
    eng_schedule_uk_vertical.removeChannel(uk_station_id, callback_UpdateListings);
}
pageGetCurrentlyShowingForSaveModal = function ()
{
    eng_schedule_uk_vertical.GetCurrentlyShowing(callback_showSaveModal);
}
pageGetCurrentlyShowingForUndoAllChanges = function ()
{
    eng_schedule_uk_vertical.GetCurrentlyShowing(callback_undoAllChanges);
}




//redraw listings from callback ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

callback_UpdateListings = function(res)
{

    //var type = $('listing-type').innerHTML;
    var type = "tv";
    //displayCurrentlyShowing();

    var list = res.value;    
    var tblHdr;
    var trNewRowHdr;
    
    tblHdr = document.getElementById("tblListingsHeader");
    tblHdr.deleteRow(0);
	trNewRowHdr = tblHdr.insertRow(0);
	
	var thHdr;
    var aChannelHdr;
    
    for (var j = 0;j<list.Timespans[0].Channels.length;j++)
    {

        thHdr = document.createElement("th");
        aChannelHdr = document.createElement("a");
        
        thHdr.scope = "col";
        thHdr.id = "th_" + list.Timespans[0].Channels[j].UK_Station_ID
        
//        if (i == list.Timespans[0].Channels.length)
//        {
//        thHdr.className == "last empty";
//        }
        aChannelHdr.id = "th_a_" + list.Timespans[0].Channels[j].SortOrder;
        aChannelHdr.href = "javascript:changeChannel('" + list.Timespans[0].Channels[j].UK_Station_ID + "', '" + list.Timespans[0].Channels[j].Title + "', " + list.Timespans[0].Channels[j].SortOrder + ");";
        aChannelHdr.innerHTML = list.Timespans[0].Channels[j].Title;

        trNewRowHdr.appendChild(thHdr);
        thHdr.appendChild(aChannelHdr);

    }
    var thHdrLast;
    var aChannelChooseHdr;
    var tblList;
    var tblRows; 
    
//    thHdrLast = document.createElement("th");
//    
//    thHdrLast.scope = 'col';
//    thHdrLast.className = 'last empty';
//    trNewRowHdr.appendChild(thHdrLast);
//    
//    aChannelChooseHdr = document.createElement("a");
//    aChannelChooseHdr.href = "javascript:openModalWindow('add-channel');";
//    aChannelChooseHdr.innerHTML = 'Choose Channel';
//    thHdrLast.appendChild(aChannelChooseHdr);
    
	tblList = document.getElementById("tblListings");
	tblRows = tblList.rows; 
	
    while(tblRows.length)
	{
		tblList.deleteRow(tblRows.length-1);
	}
	
	var cntColumns = 0;
    var colClass = "";
    var rowClass = "";
    var blnLastRow = false;
    var blnCurrentRow = false;
    var blnAlternateCol = false;
    var t; //timespans
    var c; //channels
    var p; //programs
    var now = new Date();
    var currentHour = now.getHours();
    
    var tdLastCell;
    var trNewRow;
    var tdScheduleItem;
    var dtProgram;
    var ddProgram;
    var aProgram;
    
	for (var i=0;i<list.Timespans.length;i++)
	{
	    t = list.Timespans[i];
	    
	    cntColumns = 0;
                                    
        blnLastRow = (i == (list.Timespans.length - 1)); 
        blnCurrentRow = (dateFormat(t.SpanStart, "H") == currentHour);
        rowClass = ""; 
        if (blnLastRow && blnCurrentRow) { rowClass = "current last"; } 
        if (blnLastRow && !blnCurrentRow) { rowClass = "last"; } 
        if (blnCurrentRow && !blnLastRow) { rowClass = "current"; } 
	    
	    trNewRow = tblList.insertRow(i);
		trNewRow.id = "tr_" + i;
		if (rowClass != "")
		    trNewRow.className = rowClass;
	    
	    for (var j=0;j<t.Channels.length;j++)
	    {
	        c = t.Channels[j];
	        
            tdScheduleItem = trNewRow.insertCell(j)
            
            blnAlternateCol = (cntColumns % 2 != 0);
            var blnLastCol = (j == (t.Channels.length - 1));
            colClass = "";
            if(blnAlternateCol) {
                if (blnLastCol)
                    colClass = "alternate last";
                else
                    colClass = "alternate";
            } else {
                if (blnLastCol)
                    colClass = "last";
            }
            if (colClass != "")
                tdScheduleItem.className = colClass;

			if (c.ListPrograms.length>=1)
			{
			    var dlPrograms = document.createElement("dl");
			    
			    for (var k = 0;k<c.ListPrograms.length ;k++)
			    {
			        
			        p = c.ListPrograms[k];
			        
			        dtProgram = document.createElement("dt");
			        ddProgram = document.createElement("dd");
			        if (p.UK_Prog_ID.toLowerCase().substring(0, 3) == "mve")
			        {
			            ddProgram.className = "is-film";
			        }
			        aProgram = CreateProgramElement(p, c.Title, t.SpanStart, type);
			        
			        dtProgram.innerHTML = p.DisplayStart;

			        dlPrograms.appendChild(dtProgram);
			        dlPrograms.appendChild(ddProgram);
			        ddProgram.appendChild(aProgram);
			        
			    }
			    tdScheduleItem.appendChild(dlPrograms);
			    
		    } else {
		    
			    tdScheduleItem.innerHTML = "&#160;";
			    
			}
			
			cntColumns++;
			
        }
        
//	    tdLastCell = trNewRow.insertCell(list.Timespans[0].Channels.length)
//	    tdLastCell.innerHTML = "&nbsp;";
//	    tdLastCell.className = "last empty";
    }

    ShowListings();
   
}





//content functions ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

GetProgramTooltip = function (prog)
{
    var res = "";
    if (prog.EpTitle != "")
    {
        res += prog.EpTitle;
        if (prog.Description != "")
            res += " - " + prog.Description;
    }
    else
        res += prog.Description;
        
    if (res=="")
        res += "No further details available";

    return res;

}

getStationIDs = function ()
{
    var stationIDs = "";
    var stationID = "";
    var tblChannels = $("tblListingsHeader");    
    var headers = tblChannels.getElementsByTagName("th");
    for (var i=0; i<headers.length; i++)
    {
        stationID = headers[i].id;
        stationID = stationID.replace("th_", "");
        if (stationID != "")
            stationIDs = stationIDs + stationID + ",";
    }
    stationIDs = stationIDs.substring(0, stationIDs.length-1);
    return stationIDs;

}
