function Guide(initialized, gurl, channelId)
{
	var m_initialized = false;
	if(initialized!=null)
		m_initialized = initialized;
	var m_currentProgram = null;
	var m_focusToCurrentHour = true;
	var m_focusToLastHour = false;
	
	this.guideurl = "guide";
	if(gurl!=null)
		this.guideurl = gurl;
	
	this.display = function()
		{
			if(!m_initialized)
			{
				this.getChannels();
				m_initialized = true;
			}
			_console.lastReloadComponent = this;
		}
	
	this.lastId = channelId;
	this.reload = function()
		{
			this.refreshGuideForChannel(this.lastId);
		}
	
	this.getGuide = function(date, focusToCurrentHour, focusToLastHour)
		{
			var args = "";
			if(date!=null)
				args = "date="+date;
			if(focusToCurrentHour==null)
				focusToCurrentHour = true;
			if(focusToLastHour==null)
				focusToLastHour = false;
			this.m_focusToCurrentHour = focusToCurrentHour;
			this.m_focusToLastHour = focusToLastHour;
			_console.getComponentContent(this.guideurl, args, this.getGuideCallback);
		}
		
	this.getGuideCallback = function(result)
		{
			document.getElementById("content_Guide").innerHTML = result;
			var ch = document.getElementById("guide_currentHour");
			if(_guide.m_focusToCurrentHour && ch!=null)
			{
				document.getElementById("guidetimediv").scrollLeft = ch.parentNode.offsetLeft;
				document.getElementById("guidematrixdiv").scrollLeft = ch.parentNode.offsetLeft;
			}
			else if(_guide.m_focusToLastHour)
			{
				document.getElementById("guidetimediv").scrollLeft = document.getElementById("guidetimediv").scrollWidth;
				document.getElementById("guidematrixdiv").scrollLeft = document.getElementById("guidetimediv").scrollLeft;
			}
			
			var div = document.getElementById("guide_channelguidediv");
			var l = -(div.firstChild.offsetWidth - div.offsetWidth);
			div.style.overflowX = "visible";
			div.style.left = l + "px";
		}
	
	this.getGuideForChannel = function(date, cid, publishPoint)
		{
			var args = new Object();
			if(date!=null)
				args.date = date;
			args.cid = cid;
			_console.getComponentContent(this.guideurl, args, this.getGuideForChannelCallback);
			_console.playVideo(Console.VIDEO_CHANNEL,cid,publishPoint);
			_util.cancelEvt(window.event);
		}
	
	this.refreshGuideForChannel = function(cid)
		{		
			var args = new Object();
			args.cid = cid;
			this.lastId = cid;
			if(Console.MODE_LARGE==_console.m_consoleMode)
				args.large = "true"
			_console.getComponentContent(this.guideurl, args, this.getGuideForChannelCallback);
		}
	
	this.getGuideForChannelCallback = function(result)
		{
			document.getElementById("content_Guide").innerHTML = result;
			_guide.focusToCurrentBroadcast();
		}
		
	this.focusToCurrentBroadcast = function()
		{
			var obj = document.getElementById("channel_currentBroadcast");
			if(obj!=null)
				obj.scrollIntoView();
		}
	
	this.programClick = function(td, type, pid, publishPoint, formats)
		{
			if(this.m_currentProgram!=null)
				this.m_currentProgram.className = "channelprogram";
			td.className = "channelprogramsel";
			this.m_currentProgram = td;
			_console.playVideo(type,pid,publishPoint,formats);
		}
	
	this.getChannels = function()
		{
			_console.getComponentContent(this.guideurl, "channels=true", this.getChannelsCallback);
		}
	
	this.getChannelsCallback = function(result)
		{
			document.getElementById("content_Guide").innerHTML = result;
		}
}

function guidescroll(right, up)
{
	if(right)
	{
		var scrollunit = 45;
		if(up)
			scrollunit *= -1;
		var gtd = document.getElementById("guidetimediv");
		if(gtd.scrollLeft+scrollunit<0)
		{
			_guide.getGuide(document.getElementById("guide_prevDate").value, false, true);
		}
		else if(gtd.scrollLeft+scrollunit+gtd.offsetWidth>gtd.scrollWidth)
		{
			_guide.getGuide(document.getElementById("guide_nextDate").value, false);
		}
		else
		{
			gtd.scrollLeft += scrollunit;
			document.getElementById("guidematrixdiv").scrollLeft = gtd.scrollLeft;
		}
	}
	else
	{
		var scrollunit = 29;
		if(up)
			scrollunit *= -1;
		var gcd = document.getElementById("guidechanneldiv");
		gcd.scrollTop += scrollunit;
		document.getElementById("guidematrixdiv").scrollTop = gcd.scrollTop;
	}
}

function guideprogramover(event, div)
{
	var d = document.getElementById("guide_programDetails");
	d.innerHTML = div.getAttribute("details");
	d.style.top = (event.clientY - event.offsetY + div.offsetHeight) + "px";
	var l = (event.clientX - event.offsetX);
	d.style.left = l + "px";
	d.style.display = "";
	if(l + d.offsetWidth > document.body.offsetWidth)
	{
		l = document.body.offsetWidth - d.offsetWidth - 10;
		d.style.left = l + "px";
	}
	else if(div.parentNode.offsetLeft<document.getElementById("guidematrixdiv").scrollLeft)
	{
		l += document.getElementById("guidematrixdiv").scrollLeft - div.parentNode.offsetLeft;
		d.style.left = l + "px";
	}
}

function guideprogramout(event, div)
{
	var d = document.getElementById("guide_programDetails");
	d.style.display = "none";
}
