﻿var isXIE = (document.all);

Date.prototype.getBarDateString = function()
{
	var days = new Array(12);
	days[0] = "Sun";
	days[1] = "Mon";
	days[2] = "Tue";
	days[3] = "Wed";
	days[4] = "Thu";
	days[5] = "Fri";
	days[6] = "Sat";
	
	var day = this.getDate();
	if (day < 10)
		day = "0" + day.toString();
	
	return days[this.getDay()] + " " + (this.getMonth() + 1).toString() + "/" + day.toString();
};

Date.prototype.getBarTimeString = function()
{
	var sTime = "";
	
	var hour = this.getHours()
	if (hour > 12) 
		hour = hour - 12; 
	if (hour == 0)
		hour = 12;
	sTime += hour + ":";

	var min = this.getMinutes();
	if (min < 10)
		sTime += "0";
	sTime += min

	var ampm = " AM";
	if (this.getHours() >= 12)
		ampm = " PM";
	sTime += ampm;
	
	return sTime;
};

var objRawData = null;
var objScheduleData = null;
var bXShowAlert = false;

function fnXRefreshSchedule()
{
	document.getElementById("ScrollableContentLayerDiv").innerHTML = "<div id=\"DivXLoad\" style=\"width:500px; height: 400px; text-align: center; vertical-align: middle;\"><img src=\"" + sLoadingImage + "\" alt=\"Loading...\"></div>";
	
	fnXBeginGetUserSchedules();
}

function fnXBeginSaveToMyScheduleChart(sId, bShowAlert)
{
	bXShowAlert = bShowAlert;
	var dt = new Date();
	var sUrl = sUserSchedules + "?userkey=" + escape(iUserKey) + "&visionId=" + sId + "&tz=" + escape(sTimeZone.replace("+", "!").replace(/&/g, "^")) + "&rnd=" + dt.getTime();
	
	//prompt("", sUrl);

	var oXmlHttp = zXmlHttp.createRequest();
	if (isXIE)
		oXmlHttp.open("post", sUrl, true);
	else
		oXmlHttp.open("get", sUrl, true);
	oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oXmlHttp.onreadystatechange = function () 
	{	
		if (oXmlHttp.readyState == 4) 
		{
			if (bXShowAlert)
				f_DisplayDivAlert("Added to My Schedule!", 302);
		}
	};
	oXmlHttp.send(null);
}

function fnXAddToScheduleChart(e, sId, bShowAlert)
{
	fnXBeginSaveToMyScheduleChart(sId, bShowAlert);

	fnXAlreadySaved(e);
}

function fnXAlreadySaved(e)
{
	e.innerHTML = "<img src=\"images/MySchedule/SchedulePlusS.gif\" border=0 title=\"Already saved to My Schedule\" />";
	
	e.onclick = function()
	{
		alert("Already saved to My Schedule");
	}
}

function fnXBeginSaveToMySchedule(sTitle, sEpisodeTitle, sAirDate, sChannel, bShowAlert)
{
	bXShowAlert = bShowAlert;
	var dt = new Date();
	var sUrl = sUserSchedules + "?userkey=" + escape(iUserKey) + "&title=" + escape(sTitle) + "&episodetitle=" + escape(sEpisodeTitle) + "&airdate=" + escape(sAirDate) + "&channel=" + sChannel + "&visionId=0&tz=" + escape(sTimeZone.replace("+", "!").replace(/&/g, "^")) + "&rnd=" + dt.getTime();
	
	//prompt("", sUrl);

	var oXmlHttp = zXmlHttp.createRequest();
	if (isXIE)
		oXmlHttp.open("post", sUrl, true);
	else
		oXmlHttp.open("get", sUrl, true);
	oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oXmlHttp.onreadystatechange = function () 
	{	
		if (oXmlHttp.readyState == 4) 
		{
			if (bXShowAlert)
				f_DisplayDivAlert("Added to My Schedule!", 302);
		}
	};
	oXmlHttp.send(null);
}

function fnXAddToSchedule(e, sTitle, sEpisodeTitle, sAirDate, sChannel, bShowAlert)
{
	fnXBeginSaveToMySchedule(sTitle, sEpisodeTitle, sAirDate, sChannel, bShowAlert);
	
	fnXAlreadySaved(e);
}

function fnXGetMySchedulePlus(sId, iChannelId, dAirDate, sTitle, sEpisodeTitle)
{
	if ((sTitle != "Data Unavailable") && (sTitle != "Sports TBD"))
	{
		var sHTML_N = "<a href=\"#\" onclick=\"return fnXAddToScheduleChart(this, " + sId + ", true);\" id=\"lnkSchedule" + sId + "\"><img src=\"images/MySchedule/SchedulePlusN.gif\" border=0 title=\"Save to My Schedule\" /></a>&nbsp;"
		var sHTML_S = "<img src=\"images/MySchedule/SchedulePlusS.gif\" border=0 title=\"Already saved to My Schedule\" />&nbsp;"
		
		for (var i = 0; i < objScheduleData.length; i++)
		{
			var oChannelId		= parseInt(objScheduleData[i][0]);
			var oAirDate		= fnXParseDate(objScheduleData[i][1]);
			var oTitle			= objScheduleData[i][2];
			var oEpisodeTitle	= objScheduleData[i][3];
	//		
	//		if (oTitle == "Bones")
	//		{
	//		alert(oChannelId == iChannelId);
	//		alert(oAirDate.toString() == dAirDate.toString());
	//		alert(oTitle == sTitle);
	//		alert(oEpisodeTitle == sEpisodeTitle);
	//		}
			
			if ((oChannelId == iChannelId) && (oAirDate.toString() == dAirDate.toString()) && (oTitle == sTitle) && (oEpisodeTitle == sEpisodeTitle))
			{
				return sHTML_S;
			}
		}
		
		return sHTML_N;
	}
	else
		return "";
}

function fnXBeginGetUserSchedules()
{
	var dt = new Date();
	var sUrl = sUserSchedules + "?userkey=" + escape(iUserKey) + "&rnd=" + dt.getTime();
	
	//prompt("", sUrl);

	var oXmlHttp = zXmlHttp.createRequest();
	if (isXIE)
		oXmlHttp.open("post", sUrl, true);
	else
		oXmlHttp.open("get", sUrl, true);
	oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oXmlHttp.onreadystatechange = function () 
	{	
		if (oXmlHttp.readyState == 4) 
		{
			fnXProcessScheduleData(oXmlHttp.responseText);
			
			if (isXIE)
				objRawData = null;
		}
	};
	oXmlHttp.send(null);
}

function fnXBeginSchedule()
{	
	var dt = new Date();
	var sUrl = sChartData + "?day=" + escape(dStartDate.toShortDateString()) + "&tz=" + escape(sTimeZone.replace("+", "!").replace(/&/g, "^")) + "&rnd=" + dt.getTime();
	
	//prompt("", sUrl);
	
	var oXmlHttp = zXmlHttp.createRequest();
	if (isXIE)
		oXmlHttp.open("post", sUrl, true);
	else
		oXmlHttp.open("get", sUrl, true);
	oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oXmlHttp.onreadystatechange = function () 
	{	
		if (oXmlHttp.readyState == 4) 
		{
			fnXProcessData(oXmlHttp.responseText);
			fnXDrawSchedule();
			
			if (sPostDataChangeJSCall != "")
			{
				try
				{
					var args = new Object();
					args.Date = dStartDate.toShortDateString();
					args.TimeZone = sTimeZone;
					eval(sPostDataChangeJSCall + "(args)");
				}
				catch (e) {}
			}
			
			if (isXIE)
			{
				objRawData = null;
				objScheduleData = null;
			}
		}
	};
	oXmlHttp.send(null);
}

function fnXAddScheduleFavorite()
{
	var sUrl = fnXGetCurrentUrl();
	var sTitle = "myAFN.net - Schedule - " + dStartDate.toShortDateString();
	
	if (window.sidebar) 
	{
		// Mozilla Firefox Bookmark
		window.sidebar.addPanel(sTitle, sUrl, "");
	} 
	else if (window.external) 
	{
		// IE Favorite
		window.external.AddFavorite(sUrl, sTitle); 
	}
}

function fnXGetCurrentUrl()
{
	var sUrl = location.href;
	if (sUrl.indexOf("?") > -1)
		sUrl = sUrl.substr(0, sUrl.indexOf("?"));
		
	sUrl += "?day=" + escape(dStartDate.toShortDateString()) + "&TimeZone=" + escape(sTimeZone);
	
	return sUrl;
}

function fnXChangeSettings(newTZ, newDate)
{
	sTimeZone = newTZ;
	var dtVals = newDate.split("/");
	dtStartDate = new Date(
		parseInt(newDate[2], 10), 
		parseInt(newDate[0], 10), 
		parseInt(newDate[1], 10) - 1, 
		0, 0, 0);
	
	fnXRefreshSchedule();
}

function fnXGoToDay(n)
{
	dStartDate.addDays(n);
	
	document.getElementById("PreviousDayLink").style.display = "";
	document.getElementById("NextDayLink").style.display = "";
	
	var dtCheck = new Date(dStartDate.valueOf());
	dtCheck.addDays(n);
	
	var dtCurrent = new Date();
	
	if (n > 0)
	{
		var diff = dtCheck.getTime() - dtCurrent.getTime();
		var days = diff / (1000 * 60 * 60 * 24);
		if (days >= 60)
			document.getElementById("NextDayLink").style.display = "none";
	}
	else
	{
		var diff = dtCurrent.getTime() - dtCheck.getTime();
		var days = diff / (1000 * 60 * 60 * 24);
		if (days >= 7)
			document.getElementById("PreviousDayLink").style.display = "none";
	}
	
	fnXRefreshSchedule();
}

function fnXProcessScheduleData(d)
{
	try
	{
		objRawData = d.split("\n");
		
		objScheduleData = new Array();
		for (var i = 0; i < objRawData.length; i++)
		{
			if (objRawData[i].length > 0)
			{
				objScheduleData.push(objRawData[i].split('\t'));
			}
		}
	}
	catch(err){}
	
	if (objRawData.length < 1)
	{
		alert("Error retrieving data");
		return;
	}
	
	fnXBeginSchedule();
}

function fnXProcessData(d)
{
	try
	{
		objRawData = d.split("\n");
	}
	catch(err){}
	
	if (objRawData.length < 1)
	{
		alert("Error retrieving data");
		return;
	}
}

function fnXParseDate(sDate)
{
	try
	{
		var f = sDate.split(",");
		
		var year = parseInt(f[0], 10);
		var month = parseInt(f[1], 10) - 1;
		var day = parseInt(f[2], 10);
		var hour = parseInt(f[3], 10);
		var min = parseInt(f[4], 10);
		var sec = parseInt(f[5], 10);
		
		var dt = new Date(
			year, 
			month, 
			day, 
			hour, 
			min, 
			sec
			);
			
		return dt;
	}
	catch (e)
	{
		//alert(sDate);
	}
}

function fnXScrollToDate(m)
{
	var d = Math.floor(m / iGridDivHours);
	var m = (d * iGridDivHours) * 60;
	var c = (m * iMinuteWidth);

	document.getElementById("Div0" + c).scrollIntoView();
}

function fnXDrawSchedule()
{
	var sHtml = "";
	var dCurrentDateTime = new Date();
	
	var sDateHtml1 = fnXDrawDateGrid(0);
	var sTimeHtml1 = fnXDrawTimeGrid(18, dCurrentDateTime);
	var sScheduleHtml = fnXDrawScheduleGrid();
	var sTimeHtml2 = fnXDrawTimeGrid((aChannelColors.length * iRowHeight) + iTimeRowHeight + iDateRowHeight + 2, dCurrentDateTime);
	var sDateHtml2 = fnXDrawDateGrid((aChannelColors.length * iRowHeight) + iTimeRowHeight + iDateRowHeight + iTimeRowHeight + 3);
	
	sHtml = sDateHtml1 + sTimeHtml1 + sScheduleHtml + sTimeHtml2 + sDateHtml2;
	
	document.getElementById("ScrollableContentLayerDiv").innerHTML = sHtml;
}

function fnXDrawTimeGrid(iTop, dCurrentDateTime)
{
	
	var iCurrTime = 0;
	var dDisplayTime = new Date(dStartDate.getFullYear(), dStartDate.getMonth(), dStartDate.getDate(), 0, 0, 0);
	var dEndTime = new Date(dDisplayTime.valueOf());
	var diffFromStart = dStartDate.getTime() - dDisplayTime.getTime();
	
	var dCheckTime = new Date(dCurrentDateTime.getFullYear(), dCurrentDateTime.getMonth(), dCurrentDateTime.getDate(), 0, 0, 0);
	
	iCurrTime = diffFromStart / (1000 * 60 * 60);
	dEndTime.setHours(dDisplayTime.getHours() + (iNoOfDays * 24));
	
	var sHtml = "";
	
	while (dDisplayTime.getTime() < dEndTime.getTime())
	{
		var sBGColor = "#d3d3d3";
		var dCheckTimePlus30 = new Date(dCheckTime.valueOf());
		dCheckTimePlus30.addMinutes(30);
		
		var sCss = sTimeClass;
		
		if ((dCurrentDateTime.getTime() >= dCheckTime.getTime()) && (dCurrentDateTime.getTime() <= dCheckTimePlus30.getTime()))
		{
			sBGColor = "#ffffff";
			sCss = sTimeClassActive;
		}
			
		var iLeft = fnXLeftPosition(dDisplayTime);
	
		sHtml += "<div style=\"top:" + iTop.toString() + "px; left:" + iLeft.toString() + "px; width:" + parseInt(30 * iMinuteWidth - 1, 10).toString() + "px; ";
		sHtml += "max-width: " + parseInt(30 * iMinuteWidth - 1, 10).toString() + "px; height:" + iTimeRowHeight.toString() + "px; max-height:" + iTimeRowHeight.toString() + "px; ";
		sHtml += "position:absolute; overflow:hidden; border-color:Gray; border-style:solid; border-top-width:0px; border-right-width:0px; border-left-width:1px; border-bottom-width:1px; "
		if (sCss == "")
			sHtml += "background-color:" + sBGColor + "; " 
		if (navigator.userAgent.indexOf(' MSIE ') > -1)
			sHtml += "font-size:12px; ";
		else
			sHtml += "font-size:0.8em; ";
		sHtml += "text-align:left;\" class=\"" + sCss + "\">"
		sHtml += "&nbsp;" + dDisplayTime.getBarTimeString();
		sHtml += "</div>";
		
		var dDisplayTimeMinus30 = new Date(dDisplayTime.valueOf());
		dDisplayTimeMinus30.addMinutes(-30);
		
		dDisplayTime.addMinutes(30);
		dCheckTime.addMinutes(30);
		
		if (dDisplayTimeMinus30.getTime() == dDisplayTime.getTime())
		{
			dDisplayTime.addMinutes(120);
		}
	}
	
	return sHtml;
}

function fnXDrawDateGrid(iTop)
{
	var iCurrTime = 0;
	var dDisplayTime = new Date(dStartDate.getFullYear(), dStartDate.getMonth(), dStartDate.getDate(), 0, 0, 0);
	var dEndTime = new Date(dDisplayTime.valueOf());
	var diffFromStart = dStartDate.getTime() - dDisplayTime.getTime();
	
	iCurrTime = diffFromStart / (1000 * 60 * 60);
	dEndTime.setHours(dDisplayTime.getHours() + (iNoOfDays * 24));
	
	var sBarDate = dStartDate.getBarDateString();
	
	var sHtml = "";
	while (dDisplayTime.getTime() < dEndTime.getTime())
	{
		var iLeft = fnXLeftPosition(dDisplayTime);
		
		sHtml += "<div id=\"Div" + iTop.toString() + iLeft.toString() + "\" style=\"top:" + iTop.toString() + "px; left:" + iLeft.toString() + "px; width:" + parseInt(iGridDivHours * 60 * iMinuteWidth - 1, 10).toString() + "px; ";
		sHtml += "max-width: " + parseInt(iGridDivHours * 60 * iMinuteWidth - 1, 10).toString() + "px; height:" + iDateRowHeight.toString() + "px; max-height:" + iDateRowHeight.toString() + "px; ";
		sHtml += "position:absolute; overflow:hidden; border-color:Gray; border-style:solid; border-top-width:0px; border-right-width:0px; border-left-width:1px; border-bottom-width:1px; "
		sHtml += "background-color:#ffffff; font-size:0.8em; text-align:left;\">"
		sHtml += "&nbsp;" + sBarDate;
		sHtml += "</div>";
		
		dDisplayTime.addHours(iGridDivHours);
	}
	
	return sHtml;
}

function fnXOverlib(e)
{
	var sHeader = e.header;
	var sBody = e.body;
	var sDuration = e.duration;
	
	var sValue = "<b>" + sHeader + "</b><br>" + sBody + "<br><i>" + sDuration + "</i>";
	
	overlib(sValue);
}

function fnXOverlib2(iId)
{
	var sValue = "";
	
	if (objRawData.length > 0)
	{
		var objRowData = null;
		var iCurrentId = 0;
		
		for (var i = 0; i < objRawData.length; i++)
		{
			if (objRawData[i].length > 0)
			{
				objRowData = objRawData[i].split("\t");
				
				var sId				= objRowData[0];
				var dAirDate		= fnXParseDate(objRowData[2]);
				var iDuration		= parseInt(objRowData[3]);
				var sTitle			= objRowData[4];
				var sEpisodeTitle	= objRowData[5];
				
				if (parseInt(sId, 10) == iId)
				{
					var divHeader = sTitle;
					if ((dAirDate.getMinutes() != 0) && (dAirDate.getMinutes() != 30))
						divHeader += " (" + dAirDate.toShortTimeString() + ")";
					
					var sMins = "(" + iDuration.toString() + " mins)";
					var sDuration = "Duration: " + sMins;
					sValue = "<b>" + divHeader.replace(/'/g, "`") + "</b><br>" + sEpisodeTitle.replace(/'/g, "`") + "<br><i>" + sDuration + "</i>"
				
					break;
				}
			}
		}
	}
	
	overlib(sValue);
}

function fnXDrawScheduleGrid()
{
	var sBodyHTML = "";
	
	if (objRawData.length > 0)
	{
		var objRowData = null;
		var iCurrentId = 0;
		var iChannelIndex = -1;
		
		for (var i = 0; i < objRawData.length; i++)
		{
			if (objRawData[i].length > 0)
			{
				objRowData = objRawData[i].split("\t");
				
				var sId				= objRowData[0];
				var iChannelId		= parseInt(objRowData[1]);
				var dAirDate		= fnXParseDate(objRowData[2]);
				var iDuration		= parseInt(objRowData[3]);
				var sTitle			= objRowData[4];
				var sEpisodeTitle	= objRowData[5];
				
				var iWidth = (iDuration * iMinuteWidth);
				var iMaxWidth = (iNoOfDays * 48 * 30 * iMinuteWidth);
				var bShowMinutes = false;
				var sMins = "";
				
				var divHeader = sTitle;
				var divBody = sEpisodeTitle;
				var divDuration = "";
				
				var sPlusInfo = fnXGetMySchedulePlus(sId, iChannelId, dAirDate, sTitle, sEpisodeTitle)
				
				var sBGColor = sBackgroundColor;
				
				//alert(objRawData + " -- " + dAirDate);
				
				var iLeftPosition = fnXLeftPosition(dAirDate);
				
				if ((iLeftPosition + iWidth) > iMaxWidth)
				{
					iWidth = iMaxWidth - iLeftPosition;
					bShowMinutes = true;
				}
				sMins = "(" + iDuration.toString() + " mins)";
				divDuration = "Duration: " + sMins;
				
				if (bShowBGColor && (iChannelId != iCurrentId))
				{
					iCurrentId = iChannelId;
					iChannelIndex++;
				}
				sBGColor = aChannelColors[iChannelIndex];
				
				if ((dAirDate.getMinutes() != 0) && (dAirDate.getMinutes() != 30))
					divHeader += " (" + dAirDate.toShortTimeString() + ")";
					
				if (iLeftPosition <= iMaxWidth)
				{
					var iMidWidth = iWidth;
					var iLeftPos = iLeftPosition;;
					
					if (iLeftPosition < 0)
					{
						iMidWidth += iLeftPosition;
						iLeftPos = 0;
					}
						
					if (bShowMinutes)
					{
						divHeader += sMins;
						bShowMinutes = false;
					}
					
					try //if ((i + 1) < objRawData.length)
					{
						var objNextRowData = objRawData[i + 1].split("\t");
						var dTempAirDate = fnXParseDate(objNextRowData[2]);
						var iTempChannelId = parseInt(objNextRowData[1]);
						
						var sDiv = "";

						if ((dAirDate.getTime() == dTempAirDate.getTime()) && (iCurrentId == iTempChannelId))
						{
							var iHeight = parseInt((iRowHeight - 1) / 2);
							var iTop = (iChannelIndex * iRowHeight + iTimeRowHeight + iDateRowHeight + 2);
							sDiv = fnXDrawScheduleGridCell(sId, iLeftPos, iMidWidth, sBGColor, iHeight - 1, divHeader, divBody, divDuration, dAirDate, iTop, sPlusInfo)
							
							iTop += iHeight;
							sId				= objNextRowData[0];
							iChannelId		= parseInt(objNextRowData[1]);
							dAirDate		= fnXParseDate(objNextRowData[2]);
							iDuration		= parseInt(objNextRowData[3]);
							sTitle			= objNextRowData[4];
							sEpisodeTitle	= objNextRowData[5];
							
							sPlusInfo = fnXGetMySchedulePlus(sId, iChannelId, dAirDate, sTitle, sEpisodeTitle)
							
							iWidth = (iDuration * iMinuteWidth);
							iMaxWidth = (iNoOfDays * 48 * 30 * iMinuteWidth);
							bShowMinutes = false;
							sMins = "";
							
							divHeader = sTitle;
							divBody = sEpisodeTitle;
							divDuration = "";
							
							sBGColor = sBackgroundColor;
							
							//alert(objRawData + " -- " + dAirDate);
							
							iLeftPosition = fnXLeftPosition(dAirDate);
							
							if ((iLeftPosition + iWidth) > iMaxWidth)
							{
								iWidth = iMaxWidth - iLeftPosition;
								bShowMinutes = true;
							}
							sMins = "(" + iDuration.toString() + " mins)";
							divDuration = "Duration: " + sMins;

							sBGColor = aChannelColors[iChannelIndex];
							
							if ((dAirDate.getMinutes() != 0) && (dAirDate.getMinutes() != 30))
								divHeader += " (" + dAirDate.toShortTimeString() + ")";
							
							if (parseInt(sId) == 0)
								sDiv += fnXDrawScheduleGridCellBlank(sId, iLeftPos, iMidWidth, sBGColor, iHeight, divHeader, divBody, divDuration + " (DST)", dAirDate, iTop)
							else
								sDiv += fnXDrawScheduleGridCell(sId, iLeftPos, iMidWidth, sBGColor, iHeight, divHeader, divBody, divDuration + " (DST)", dAirDate, iTop, sPlusInfo)
							
							i++;	// Increment the row counter
						}
						else
						{
							//sDiv = fnXDrawScheduleGridCell(sId, iLeftPos, iMidWidth, sBGColor, (iRowHeight - 1), divHeader, divBody, divDuration, dAirDate, (iChannelIndex * iRowHeight + iTimeRowHeight + iDateRowHeight + 2))
							if (parseInt(sId) == 0)
							{
								sDiv = fnXDrawScheduleGridCell(sId, iLeftPos, iMidWidth, sBGColor, iHeight - 1, divHeader, divBody, divDuration, dAirDate, iTop, sPlusInfo)
								sDiv += fnXDrawScheduleGridCellBlank(sId, iLeftPos, iMidWidth, sBGColor, (iRowHeight - 1), divHeader, divBody, divDuration, dAirDate, (iChannelIndex * iRowHeight + iTimeRowHeight + iDateRowHeight + 2))
							}
							else
								sDiv = fnXDrawScheduleGridCell(sId, iLeftPos, iMidWidth, sBGColor, (iRowHeight - 1), divHeader, divBody, divDuration, dAirDate, (iChannelIndex * iRowHeight + iTimeRowHeight + iDateRowHeight + 2), sPlusInfo)
						}
					}
					catch (e)
					{
						sDiv = fnXDrawScheduleGridCell(sId, iLeftPos, iMidWidth, sBGColor, (iRowHeight - 1), divHeader, divBody, divDuration, dAirDate, (iChannelIndex * iRowHeight + iTimeRowHeight + iDateRowHeight + 2), sPlusInfo)
					}
					
					sBodyHTML += sDiv;
				}
				else
				{
					bShowMinutes = false;
				}
			}
		}
		
		objRowData = null;
	}
	
	return sBodyHTML;
}

function fnXDrawScheduleGridCell(sId, iLeftPos, iMidWidth, sBGColor, iHeight, divHeader, divBody, divDuration, dAirDate, iTop, sPlusInfo)
{
	var sDiv = "\n";
	sDiv += "<div id=\"Div" + sId.toString() + "\" style=\"color: #000000; border-color: Gray; border-style: Solid; border-top-width: 0px; border-right-width: 0px; ";
	sDiv += "border-left-width: 1px; border-bottom-width: 1px; position: absolute; overflow: hidden; ";
	sDiv += "top: " + iTop.toString() + "px; ";
	sDiv += "left: " + iLeftPos.toString() + "px; ";
	sDiv += "width: " + iMidWidth.toString() + "px; "
	sDiv += "max-width: " + iMidWidth.toString() + "px; ";
	sDiv += "background-color: " + sBGColor + "; ";
	sDiv += "height: " + iHeight.toString() + "px; ";
	if (navigator.userAgent.indexOf(' MSIE ') > -1)
		sDiv += "font-size:12px; ";
	else
		sDiv += "font-size:0.8em; ";
	sDiv += "\" ";
	if (isXIE)
	{
		divHeader = divHeader.replace(/ /g, "&nbsp;").replace(/\'/g, "`");
		divBody = divBody.replace(/ /g, "&nbsp;").replace(/\'/g, "`").replace(/\n/g, "");
		divDuration = divDuration.replace(/ /g, "&nbsp;").replace(/\'/g, "`");
		
		sDiv += "header=\"" + divHeader + "\" body=\"" + divBody + "\" duration=\"" + divDuration + "\" airdate=\"" + dAirDate.toDotNetString() + "\" ";
		sDiv += "onmouseover=\"return fnXOverlib(this);\" ";
		sDiv += "onmouseout=\"return nd();\" ";
	}
	else
	{
		sDiv += "onmouseover=\"return fnXOverlib2(" + sId.toString() + ");\" ";
		sDiv += "onmouseout=\"return nd();\" ";
	}
	sDiv += ">\n";
	//divHeader = "top:" + (iChannelIndex * iRowHeight + iTimeRowHeight + iDateRowHeight).toString() + "; left:" + iLeftPosition.toString() + "; width:" + iWidth.toString();
	
	var sTable = "<table style=\"text-align: left; width: 100%; border-width: 0px; background-color: " + sBGColor + "\" ";
	sTable += "cellpadding=0 cellspacing=0 align=\"left\">";
	sTable += "<tr style=\"text-align: left;\">";
	sTable += "<td style=\"width: 5px;\">&nbsp;</td>";
	sTable += "<td style=\"text-align: left\">";
	sTable += sPlusInfo;
	sTable += "<a href=\"#\" style=\"text-align: left; text-decoration: none; background-color: " + sBGColor + "\" ";
	sTable += "onclick=\"return fnXViewRecord(" + sId.toString() + ");\" ";
	sTable += ">";
	if (navigator.userAgent.indexOf(' MSIE ') > -1)
		sTable += "<span style=\"font-size:11px; text-wrap: normal; width: " + iMidWidth.toString() + "px;\">";
	sTable += divHeader;
	if (navigator.userAgent.indexOf(' MSIE ') > -1)
		sTable += "</span>";
	sTable += "</a>";
	sTable += "</td>";
	sTable += "</tr>";
	sTable += "</table>";
	
	sDiv += sTable;
	sDiv += "</div>";
	
	return sDiv;
}

function fnXDrawScheduleGridCellBlank(sId, iLeftPos, iMidWidth, sBGColor, iHeight, divHeader, divBody, divDuration, dAirDate, iTop)
{
	var sDiv = "\n";
	sDiv += "<div id=\"Div" + sId.toString() + "\" style=\"color: #000000; border-color: Gray; border-style: Solid; border-top-width: 0px; border-right-width: 0px; ";
	sDiv += "border-left-width: 0px; border-bottom-width: 0px; ";
	sDiv += "position: absolute; overflow: hidden; ";
	sDiv += "top: " + iTop.toString() + "px; ";
	sDiv += "left: " + iLeftPos.toString() + "px; ";
	sDiv += "width: " + iMidWidth.toString() + "px; "
	sDiv += "max-width: " + iMidWidth.toString() + "px; ";
	sDiv += "background-color: #FFFFFF; ";
	sDiv += "height: " + iHeight.toString() + "px; ";
	if (navigator.userAgent.indexOf(' MSIE ') > -1)
		sDiv += "font-size:12px; ";
	else
		sDiv += "font-size:0.8em; ";
	sDiv += "\" ";
//	if (isXIE)
//	{
//		divHeader = divHeader.replace(/ /g, "&nbsp;").replace(/\'/g, "`");
//		divBody = divBody.replace(/ /g, "&nbsp;").replace(/\'/g, "`").replace(/\n/g, "");
//		divDuration = divDuration.replace(/ /g, "&nbsp;").replace(/\'/g, "`");
//		
//		sDiv += "header=\"" + divHeader + "\" body=\"" + divBody + "\" duration=\"" + divDuration + "\" airdate=\"" + dAirDate.toDotNetString() + "\" ";
//		sDiv += "onmouseover=\"return fnXOverlib(this);\" ";
//		sDiv += "onmouseout=\"return nd();\" ";
//	}
//	else
//	{
//		sDiv += "onmouseover=\"return fnXOverlib2(" + sId.toString() + ");\" ";
//		sDiv += "onmouseout=\"return nd();\" ";
//	}
	sDiv += ">\n";
	//divHeader = "top:" + (iChannelIndex * iRowHeight + iTimeRowHeight + iDateRowHeight).toString() + "; left:" + iLeftPosition.toString() + "; width:" + iWidth.toString();
	
//	var sTable = "<table style=\"text-align: left; width: 100%; border-width: 0px; background-color: " + sBGColor + "\" ";
//	sTable += "cellpadding=0 cellspacing=0 align=\"left\">";
//	sTable += "<tr style=\"text-align: left;\">";
//	sTable += "<td style=\"width: 5px;\">&nbsp;</td>";
//	sTable += "<td style=\"text-align: left\">";
//	sTable += "<a href=\"#\" style=\"text-align: left; text-decoration: none; background-color: " + sBGColor + "\" ";
//	sTable += "onclick=\"return fnXViewRecord(" + sId.toString() + ");\" ";
//	sTable += ">";
//	if (navigator.userAgent.indexOf(' MSIE ') > -1)
//		sTable += "<span style=\"font-size:11px; text-wrap: normal; width: " + iMidWidth.toString() + "px;\">";
//	sTable += divHeader;
//	if (navigator.userAgent.indexOf(' MSIE ') > -1)
//		sTable += "</span>";
//	sTable += "</a>";
//	sTable += "</td>";
//	sTable += "</tr>";
//	sTable += "</table>";
//	
//	sDiv += sTable;
	sDiv += "</div>";
	
	return sDiv;
}

function fnXLeftPosition(startTime)
{
	var tmpStartTime = new Date(1900, 1, 1, startTime.getHours(), startTime.getMinutes(), startTime.getSeconds());
	if (startTime.getDate() != dStartDate.getDate())
		tmpStartTime = new Date(1899, 12, 31, startTime.getHours(), startTime.getMinutes(), startTime.getSeconds());

	var tmpDate = new Date(1900, 1, 1, 0, 0, 0);
	tmpDate.addDays(iDaysBack);
	
	//alert(startTime + " -- " + tmpDate)
	
	var diffFromStart = tmpStartTime.getTime() - tmpDate.getTime();
	
	var diff_mins = diffFromStart / (1000 * 60);
	
	return diff_mins * iMinuteWidth;
}

function fnXDateError()
{
	var s = "Selected date can not be less than 7 days back, and selected date can not be more than 60 days ahead. Thank you.";
	
	alert(s);
}

function fnXViewRecord(iId) 
{
	//title, scheduleId, airdate, timeZone
	var sAScheduleId = iId.toString();
	var sATitle = ""
	var sAAirDate = "";
	if (isXIE)
	{
		var oDiv = document.getElementById("Div" + iId.toString());
		sATitle = oDiv.header;
		sAAirDate = oDiv.airdate;
	}
	else
	{
		if (objRawData.length > 0)
		{
			var objRowData = null;
			var iCurrentId = 0;
			
			for (var i = 0; i < objRawData.length; i++)
			{
				if (objRawData[i].length > 0)
				{
					objRowData = objRawData[i].split("\t");
					
					var sId				= objRowData[0];
					var dAirDate		= fnXParseDate(objRowData[2]);
					var sTitle			= objRowData[4];
					
					if (parseInt(sId, 10) == iId)
					{
						var divHeader = sTitle;
						if ((dAirDate.getMinutes() != 0) && (dAirDate.getMinutes() != 30))
							divHeader += " (" + dAirDate.toShortTimeString() + ")";
						
						sATitle = divHeader;
						sAAirDate = dAirDate.toDotNetString();
					
						break;
					}
				}
			}
		}
	}
	
	if (sPopupPage.length > 0)
	{
		if (document.all) 
			var xMax = screen.width, yMax = screen.height; 
		else 
			if (document.layers) 
				var xMax = window.outerWidth, yMax = window.outerHeight; 
			else 
				var xMax = 640, yMax=480; 
		                   
		var xOffset = (xMax - 200)/2, yOffset = (yMax - 200)/2; 
		                   
		var features = 
			'width=480'        + 
			',height=360'      +  
			',directories=no' +  
			',location=no'    +  
			',menubar=no'     +  
			',scrollbars=no'  +  
			',status=no'      +  
			',toolbar=no'     +  
			',resizable=no'   +  
			',screenX='     + xOffset + 
			',screenY='     + yOffset +  
			',top='         + yOffset + 
			',left='        + xOffset; 
		                           
		var theURL = sPopupPage + '?t=' + escape(sATitle) + '&s=' + sAScheduleId + '&a=' + escape(sAAirDate) + '&tb=' + sTimeZone.replace("+", "!").replace(/&/, "^") + '&tr=1&ss=' + bPopupSearch.toString() + '&sss=True'; 
		theWindow = window.open(theURL, 'PopUpWindow', features); 
		theWindow.focus(); 
	}
	
	return false;
}





