var tvCategory = 1;
var tvSliding = true;
var tvSlideWidth = 275;
var tvSlideView = 3;
var tvSlidePos = 0;
var tvSlideNum = 3;

var tvSlides = Array();

var tvSearchTitle = "";
var tvSearchGenre = "";
var tvSearchDate = "";
var tvSearchPeriod = "";

function tvSlideLoadCategory(category)
{
	$('loader').style.background = 'url(./tpl/images/tvguide/spinner.gif) no-repeat 405px 4px';
	$('tvguideInner').innerHTML = '<br /><br /><br />';
	$('tvguideInner').style.left = 0;
	tvSlidePos = 0;

	var tvSlideLoadCategoryComplete = function(t) {
		arr_split = t.responseText.split("|SPLITHERE|");
		tvSlides = Array();
		eval(arr_split[0]);
		$('loader').style.background = 'url(./tpl/images/trans.gif) no-repeat';
		$('tvguideInner').innerHTML = arr_split[1];
		tvSearch();
	}

	var tvSlideLoadCategoryFailure = function(t) {
		$('tvguideInner').innerHTML = 'Error ' + t.status + ' : ' + t.statusText;
	}

	new Ajax.Request(
		'./index.php',
		{
			parameters:'mod=tvguide&op=loadCategory&cat=' + category + '',
			onSuccess:tvSlideLoadCategoryComplete,
			onFailure:tvSlideLoadCategoryFailure
		}
	);
}

function tvSlideLoadChannels(id, channels)
{
	if (!$('slide_' + id) && !$('slide_' + id + '_inner'))
		return;

	$('loader').style.background = 'url(./tpl/images/tvguide/spinner.gif) no-repeat 405px 4px';
	$('slide_' + id + '_inner').innerHTML = '';
	$('slide_' + id + '_inner').style.display = 'none';

	var tvSlideLoadChannelComplete = function(t) {
		if (!$('slide_' + id) && !$('slide_' + id + '_inner'))
			return;

		$('loader').style.background = 'url(./tpl/images/trans.gif) no-repeat';
		$('slide_' + id + '_inner').innerHTML = t.responseText;
		new Effect.Appear('slide_' + id + '_inner', { duration: 0.3, delay: 0.3 });
	}

	var tvSlideLoadChannelFailure = function(t) {
		if (!$('slide_' + id) && !$('slide_' + id + '_inner'))
			return;

		$('loader').style.background = 'url(./tpl/images/trans.gif) no-repeat';
		$('slide_' + id + '_inner').innerHTML = 'Error ' + t.status + ' : ' + t.statusText;
	}

	var query = '';
	if ($('tvguide_title') && $('tvguide_title').value)
		query += '&title=' + encodeURIComponent($('tvguide_title').value);
	if ($('tvguide_genre') && $('tvguide_genre').value)
		query += '&genre=' + encodeURIComponent($('tvguide_genre').value);
	if ($('tvguide_date') && $('tvguide_date').value)
		query += '&date=' + encodeURIComponent($('tvguide_date').value);
	if ($('tvguide_period') && $('tvguide_period').value)
		query += '&period=' + encodeURIComponent($('tvguide_period').value);

	new Ajax.Request(
		'./index.php',
		{
			parameters:'mod=tvguide&op=loadChannels&ids=' + channels + query,
			onSuccess:tvSlideLoadChannelComplete,
			onFailure:tvSlideLoadChannelFailure
		}
	);
}

function tvSlideStatus(sliding)
{
	if (sliding == true)
	{
		$('tvguide_title').disabled = true;
		$('tvguide_genre').disabled = true;
		$('tvguide_date').disabled = true;
		$('tvguide_period').disabled = true;
		$('tvguide_programs').disabled = true;
		$('tvguide_submit').disabled = true;
		$('tvguide_channel_prev').disabled = true;
		$('tvguide_channel_next').disabled = true;
		$('tvguide_channel_prev_bott').disabled = true;
		$('tvguide_channel_next_bott').disabled = true;
		$('tvguide_date_prev').disabled = true;
		$('tvguide_date_next').disabled = true;

		$('tvguide_submit').src = "./tpl/images/sog_but_of.gif";
		$('tvguide_channel_prev').src = "./tpl/images/prev_channel_of.gif";
		$('tvguide_channel_next').src = "./tpl/images/next_channel_of.gif";
		$('tvguide_channel_prev_bott').src = "./tpl/images/prev_channel_of.gif";
		$('tvguide_channel_next_bott').src = "./tpl/images/next_channel_of.gif";
		$('tvguide_date_prev').src = "./tpl/images/prev_day_of.gif";
		$('tvguide_date_next').src = "./tpl/images/next_day_of.gif";

		tvSliding = true;
	}
	else
	{
		$('tvguide_title').disabled = false;
		$('tvguide_genre').disabled = false;
		$('tvguide_date').disabled = false;
		$('tvguide_period').disabled = false;
		$('tvguide_programs').disabled = false;
		$('tvguide_submit').disabled = false;

		$('tvguide_submit').src = "./tpl/images/sog_but.gif";

		if (tvSlidePos != 0)
		{
			$('tvguide_channel_prev').disabled = false;
			$('tvguide_channel_prev_bott').disabled = false;

			$('tvguide_channel_prev').src = "./tpl/images/prev_channel.gif";
			$('tvguide_channel_prev_bott').src = "./tpl/images/prev_channel.gif";
		}
		if (Math.round(tvSlidePos+tvSlideNum) < tvSlides.length)
		{
			$('tvguide_channel_next').disabled = false;
			$('tvguide_channel_next_bott').disabled = false;

			$('tvguide_channel_next').src = "./tpl/images/next_channel.gif";
			$('tvguide_channel_next_bott').src = "./tpl/images/next_channel.gif";
		}
		if ($('tvguide_date').value != 0)
		{
			$('tvguide_date_prev').disabled = false;

			$('tvguide_date_prev').src = "./tpl/images/prev_day.gif";
		}
		if ($('tvguide_date').value != 6)
		{
			$('tvguide_date_next').disabled = false;

			$('tvguide_date_next').src = "./tpl/images/next_day.gif";
		}

		tvSliding = false;
	}
}

function tvSlideNext()
{
	if ((tvSlidePos+tvSlideNum) < tvSlides.length && tvSliding == false)
	{
		var channelIds = "";
		tvSlidePos = (tvSlidePos + tvSlideNum);
		tvSlideStatus(true);
		tvMoveBy('tvguideInner', 0, -tvSlideWidth*tvSlideNum);
		//new Effect.MoveBy('tvguideInner', 0, -tvSlideWidth*tvSlideNum);
		setTimeout('tvSlideStatus(false)', 1000);

		for (i=0;i<tvSlideNum;i++)
		{
			if (tvSlides[tvSlidePos+i] && tvSlides[tvSlidePos+i]['loaded'] == false)
			{
				tvSlides[tvSlidePos+i]['loaded'] = true;
				//tvSlideLoadChannel((tvSlidePos+i+1), tvSlides[tvSlidePos+i]['id']);
				channelIds += tvSlides[tvSlidePos+i]['id'] + ",";
			}
		}

		if (channelIds)
		{
			tvSlideLoadChannels((tvSlidePos+i), channelIds);
		}
	}
}

function tvSlidePrev()
{
	if ((tvSlidePos) > 0 && tvSliding == false)
	{
		var channelIds = "";
		tvSlidePos = (tvSlidePos - tvSlideNum);
		tvSlideStatus(true);
		tvMoveBy('tvguideInner', 0, tvSlideWidth*tvSlideNum);
		//new Effect.MoveBy('tvguideInner', 0, tvSlideWidth*tvSlideNum);
		setTimeout('tvSlideStatus(false)', 1000);

		for (i=0;i<tvSlideNum;i++)
		{
			if (tvSlides[tvSlidePos-i+tvSlideNum-1] && tvSlides[tvSlidePos-i+tvSlideNum-1]['loaded'] == false)
			{
				tvSlides[tvSlidePos-i+tvSlideNum-1]['loaded'] = true;
				//tvSlideLoadChannel(tvSlidePos-i+tvSlideNum, tvSlides[tvSlidePos-i+tvSlideNum-1]['id']);
				channelIds = tvSlides[tvSlidePos-i+tvSlideNum-1]['id'] + "," + channelIds;
			}
		}

		if (channelIds)
		{
			tvSlideLoadChannels((tvSlidePos+tvSlideNum), channelIds);
		}
	}
}


function tvInitChannels()
{
	var channelIds = "";
	var channelChk = 0;
	for (i=0;i<tvSlideNum;i++)
	{
		if (tvSlides[tvSlidePos+i] && tvSlides[tvSlidePos+i]['loaded'] == false)
		{
			tvSlides[tvSlidePos+i]['loaded'] = true;
			//tvSlideLoadChannel((tvSlidePos+i+1), tvSlides[tvSlidePos+i]['id']);
			channelIds += tvSlides[tvSlidePos+i]['id'] + ",";
			channelChk++;
		}
	}

	if (channelChk != 0)
	{
		tvSlideLoadChannels((tvSlidePos+i), channelIds);
	}
}

function tvSearch()
{
	var initChannels = false;
	var arr_split = $('tvguide_programs').value.split(":|:");

	tvSlideStatus(true);
	setTimeout('tvSlideStatus(false)', 2000);

	if (arr_split[0] != tvCategory)
	{
		tvCategory = arr_split[0];

		tvSlideLoadCategory(tvCategory);
	}
	else
	{
		if (tvSearchTitle != $('tvguide_title').value)
		{
			initChannels = true;
		}
		else if (tvSearchGenre != $('tvguide_genre').value)
		{
			initChannels = true;
		}
		else if (tvSearchDate != $('tvguide_date').value)
		{
			initChannels = true;
		}
		else if (tvSearchPeriod != $('tvguide_period').value)
		{
			initChannels = true;
		}

		if (initChannels == true)
		{
			tvSearchTitle = $('tvguide_title').value;
			tvSearchGenre = $('tvguide_genre').value;
			tvSearchDate = $('tvguide_date').value;
			tvSearchPeriod = $('tvguide_period').value;

			for (i=0;i<tvSlides.length;i++)
			{
				if ($('slide_' + (i+1) + '_inner'))
				{
					$('slide_' + (i+1) + '_inner').innerHTML = "";
				}

				tvSlides[i]['loaded'] = false;
			}
		}

		if (arr_split[1] >= tvSlidePos+tvSlideView && (arr_split[0] != 0 && arr_split[1] != 0))
		{
			var i = Math.round(arr_split[1]-1);
			var s = 0;
			while (i >= tvSlidePos+tvSlideView)
			{
				i = Math.round(i-tvSlideNum);
				s = Math.round(s+tvSlideNum)
			}

			tvSlidePos = (tvSlidePos+s);
			tvSlideStatus(true);
			tvMoveBy('tvguideInner', 0, -tvSlideWidth*s);
			//new Effect.MoveBy('tvguideInner', 0, -tvSlideWidth*s);
			setTimeout('tvSlideStatus(false)', 1000);
			setTimeout('tvInitChannels();', 1000);
		}
		else if (arr_split[1] < tvSlidePos && (arr_split[0] != 0 && arr_split[1] != 0))
		{
			var i = tvSlidePos;
			var s = 0;
			while (Math.round(arr_split[1]-1) < i)
			{
				i = Math.round(i-tvSlideNum);
				s = Math.round(s+tvSlideNum)
			}

			tvSlidePos = (tvSlidePos-s);
			tvSlideStatus(true);
			tvMoveBy('tvguideInner', 0, tvSlideWidth*s);
			//new Effect.MoveBy('tvguideInner', 0, tvSlideWidth*s);
			setTimeout('tvSlideStatus(false)', 1000);
			setTimeout('tvInitChannels();', 1000);
		}
		else
		{
			tvInitChannels();
		}
	}
}

function tvMoveBy(element, top, left)
{
	var agt=navigator.userAgent.toLowerCase();

    if(agt.indexOf("safari") != -1)
	{
		newpos = $(element).style.left;
		newpos = newpos.substr(0, newpos.indexOf("p"));
		newpos = (!newpos) ? 0 : newpos;
		var newpos = Math.round(Math.round(newpos) + Math.round(left));
		$(element).style.left = newpos + "px";
	}
	else
	{
		new Effect.MoveBy(element, top, left, { duration: 0.7, delay: 0.2 });
	}
}

window.onerror = function (msg, url, lno) {
	if ($('debug'))
	{
		$('debug').innerHTML = msg + " - " + url + " - " + lno;
	}

	return true;
}

function tvDayNext()
{
	var i = 0;
	var f = false;
	while (i < $('tvguide_date').length && f == false)
	{
		if ($('tvguide_date')[i].selected == true && $('tvguide_date')[i].value < 6)
		{
			$('tvguide_date')[Math.round(i+1)].selected = true;
			f = true;
		}

		i++;
	}

	if (f == true)
	{
		tvSearch();
	}
}

function tvDayPrev()
{
	var i = 0;
	var f = false;
	while (i < $('tvguide_date').length && f == false)
	{
		if ($('tvguide_date')[i].selected == true && $('tvguide_date')[i].value >= 1)
		{
			$('tvguide_date')[Math.round(i-1)].selected = true;
			f = true;
		}

		i++;
	}

	if (f == true)
	{
		tvSearch();
	}
}

function tvInit()
{
	tvSlideStatus(true);

	tvSearchTitle = $('tvguide_title').value;
	tvSearchGenre = $('tvguide_genre').value;
	tvSearchDate = $('tvguide_date').value;
	tvSearchPeriod = $('tvguide_period').value;

	new Ajax.Autocompleter(
								"tvguide_title",
								"tvguide_title_choices",
								"./index.php?mod=tvguide&op=autocomplete",
								{
									paramName: "tvguide_title",
									minChars: 2,
									frequency: 0.5,
									//updateElement: addItemToList,
									indicator: 'tvguide_title_indicator'
								}
							);

	tvSlideLoadCategory(tvCategory);
}

function tvDateChange()
{
	$('tvDatePrint').innerHTML = $('tvDatePrintHidden' + $('tvguide_date').value).innerHTML;
}