var programTvSettings = {
	programName: 'polsat_sport',
	defaultHash: '#sport',
	nowImg: 'trwa.gif',
	programTypeExt: 'png',
	programTab: 0
};


function open_tab(id)
{
    var name = getProgramNames ();
	location.href='#' + name[id];
	programTvSettings.programTab = id;
}

/*
function getRenderTime() {
	renderTime = new Date(2011,2,30,20,9,0,0,'+0200');   
	return renderTime;
}

function getProgramUrls() {
	urls = new Array();
	urls[0] = '/x.node?id=5841&page=0';
	urls[1] = '/x.node?id=5841&page=1';
	urls[2] = '/x.node?id=5841&page=2';
	urls[3] = '/x.node?id=5841&page=3';
	urls[4] = '/x.node?id=5841&page=4';
	urls[5] = '/x.node?id=5841&page=5';
	urls[6] = '/x.node?id=5841&page=6';
	urls[7] = '/x.node?id=5841&page=7';
	return urls;
}
*/
function getProgramNames() {
	var name = new Array();
	name[0] = 'sport';
	name[1] = 'sport_extra';
	name[2] = 'sport_futbol';
	name[3] = 'sport_hd';
	name[4] = 'sport_news';
	return name;
}

function getTime(fromdate, zone_diff) {
	var hours = fromdate.getHours();
	hours += zone_diff;
	hours %= 24;
	if (hours < 0) hours += 24;
	var minutes = fromdate.getMinutes();
	if (minutes < 10)
		minutes = "0" + minutes;
	return hours + ':' + minutes;
}
		
function getDate(fromdate) {
	var day = fromdate.getDate();
	var month = fromdate.getMonth() + 1;
	var year = fromdate.getFullYear();
	return day + '.' + month + '.' + year;
}
		
function getProgDiv(program,zone_diff) {
	result = '<div id="activeprogram' + program.id + '" class="active" style="display:none">' +
			 '<img src="/templates/' + programTvSettings.programName + '/gfx/program/' + programTvSettings.nowImg +'"  alt="" />' +
			 '<div class="stime">od ' + getTime(program.emissionDate,zone_diff) + '</div>' +
			 '</div>' +
			 '<div id="program' + program.id + '" class="time" style="display:block">' + getTime(program.emissionDate,zone_diff) +'</div>';
			 // +' '
	return result;
}
		
function getProgDetail(channel, program, zone_diff) {
	html = '<div class="details">';
	if(program.progDescription)
		html += '<a href="#" class="name_' + program.id + '">' + program.title+'</a> '; 
	else 
		html += '<span class="name">' + program.title + '</span>';
	html += '<br />';
	if(program.preview) html+=program.preview;
	else if(program.type == 1 && program.description) 
		html += program.description ;
	else if (program.type == 5 && program.progDescription)
		html += program.progDescription;
	else 
		html += '<br />';
	html += '</div>';
	
	if(program.description || program.progDescription) {
		html += '<div class="details_name_' + program.id + ' det_cloud" style="display:none;">' +
					'<div class="wrap">' +
						'<div class="head">' +
							'<h3>' + program.title + '</h3>' +
							'<span class="hr">godz. ' + getTime(program.emissionDate,zone_diff) + '</span>' +
							'<span class="dt">' + getDate(program.emissionDate) + ' ' + channel.title + '</span>'+
						'</div>';
						
						if (program.miniImageUrl != null && program.miniImageUrl != '')
							html += '<div class="image"><img src="'+program.miniImageUrl+'" alt="" width="329" /></div>';
	
	
	html += '<div class="desc">';
	if(program.type == 1) {
		if(program.progDescription) {
			html += program.progDescription;
		} else if  (program.description) {
			html += program.description;
		}
	}	else if(program.description) {
		html += program.description;
		}	else if (program.progDescription) {
			html += program.progDescription;
		}
	html += '</div>';
	html += '</div>';
	html += '<div class="bottBg"></div>';
	html += '<div class="arr"></div>';			
	html += '</div>';
	}
	
	html += '</div>';
	html += '</div>';
	html += '</div>';
	html += '</div>';
	return html;
}
		
var channels = new Array();

function createProgramTypeImgSrc(n, s){
	var tmp='';	if(s==1) tmp='_l';
	return '/templates/' + programTvSettings.programName + '/gfx/program/program_type_'+n+tmp+ '.' + programTvSettings.programTypeExt;
}
		
function isSetProgramType(n) {
	return $('#genre_img_'+n).attr("src") == createProgramTypeImgSrc(n, 1);
}

function setProgramType(n,s) {
	$('#genre_img_'+n).attr({src: createProgramTypeImgSrc(n, s)});
	if(s==0) {
		if($('#program_table_wrapper .genre_'+n).hasClass('genre_'+n+'_selected'))
			$('#program_table_wrapper .genre_'+n).removeClass('genre_'+n+'_selected');
	}
	else {
		if(!$('#program_table_wrapper .genre_'+n).hasClass('genre_'+n+'_selected'))
			$('#program_table_wrapper .genre_'+n).addClass('genre_'+n+'_selected');
	}
}

function SwitchProgramType(n){
	if(isSetProgramType(n)){ //
		setProgramType(n,0);
	}else{
		setProgramType(n,1);
	}
	//$('#program_table_wrapper .genre_'+n).toggleClass('genre_'+n+'_selected');
}

function RefreshProgramType(){
	for(i=0;i<3;i++){
		if(isSetProgramType(i)) { //
			setProgramType(i,1);
		} else {
			setProgramType(i,0);
		}
	}
}

function UnswitchProgramType(){
	for(i=0;i<3;i++){
		setProgramType(i,0);
	}
}

function initSliderOnProgram(){
	$('#program_our_channels a').click(function(){
		setSliderTo($(this).attr('href'));
	});
	$('#program_our_channels .next-ch').click(function(){
		nextPrevSlide(1);
	});
	$('#program_our_channels .prev-ch').click(function(){
		nextPrevSlide(-1);
	});	
	$('#pr-headers .next-ch').click(function(){
		nextPrevSlide(1);
	});
	$('#pr-headers .prev-ch').click(function(){
		nextPrevSlide(-1);
	});		
	
}
 /* */
function setSliderTo(hsh){
	if (hsh == '') hsh = programTvSettings.defaultHash;
	if(hsh){
		switch (hsh){
			case '#sport': 
				$('#channels_frame').animate({left:'136px',width:'125px'},'fast');
				$('#pr-headers .wrap').animate({marginLeft:'0px'},'fast');
				$('#program_table_wrapper table').animate({marginLeft:'0px'},'fast');
				$('#content .prev-ch').hide();
				$('#content .next-ch').show();
				firstSlide = 1;
			break;
			case '#sport_extra': 
				$('#channels_frame').animate({left:'172px',width:'125px'},'fast');
				$('#pr-headers .wrap').animate({marginLeft:'0px'},'fast');
				$('#program_table_wrapper table').animate({marginLeft:'0px'},'fast');
				$('#content .prev-ch').show();
				$('#content .next-ch').show();				
				firstSlide = 2;				
			break;
			case '#sport_futbol': 
				$('#channels_frame').animate({left:'208px',width:'125px'},'fast');
				$('#pr-headers .wrap').animate({marginLeft:'0px'},'fast');	
				$('#program_table_wrapper table').animate({marginLeft:'0px'},'fast');			
				$('#content .prev-ch').show();
				$('#content .next-ch').show();				
				firstSlide = 3;				
			break;
			case '#sport_hd': 
				$('#channels_frame').animate({left:'243px',width:'145px'},'fast');
				$('#pr-headers .wrap').animate({marginLeft:'0px'},'fast');
				$('#program_table_wrapper table').animate({marginLeft:'0px'},'fast');			
				$('#content .prev-ch').show();
				$('#content .next-ch').show();
				firstSlide = 4;				
			break;
			case '#sport_news': 
				$('#channels_frame').animate({left:'278px',width:'177px'},'fast');
				$('#pr-headers .wrap').animate({marginLeft:'0px'},'fast');
				$('#program_table_wrapper table').animate({marginLeft:'0px'},'fast');
				$('#content .prev-ch').show();
				$('#content .next-ch').show();				
				firstSlide = 5;
			break;
			
			case '#polsat2': 
				$('#channels_frame').animate({left:'313px',width:'200px'},'fast');
				$('#pr-headers .wrap').animate({marginLeft:'-1200px'},'fast');
				$('#program_table_wrapper table').animate({marginLeft:'-1200px'},'fast');				
				$('#content .prev-ch').show();
				$('#content .next-ch').show();				
				firstSlide = 6;
			break;			
			case '#cafe': 
				$('#channels_frame').animate({left:'352px',width:'222px'},'fast');
				$('#pr-headers .wrap').animate({marginLeft:'-1440px'},'fast');
				$('#program_table_wrapper table').animate({marginLeft:'-1440px'},'fast');					
				$('#content .prev-ch').show();
				$('#content .next-ch').hide();				
				firstSlide = 7;
			break;
			case '#news': 
				$('#channels_frame').animate({left:'278px',width:'177px'},'fast');
				$('#pr-headers .wrap').animate({marginLeft:'-960px'},'fast');
				$('#program_table_wrapper table').animate({marginLeft:'-960px'},'fast');				
				$('#content .prev-ch').show();
				$('#content .next-ch').show();				
				firstSlide = 5;
			break;
			case '#play': 
				$('#channels_frame').animate({left:'313px',width:'200px'},'fast');
				$('#pr-headers .wrap').animate({marginLeft:'-1200px'},'fast');
				$('#program_table_wrapper table').animate({marginLeft:'-1200px'},'fast');				
				$('#content .prev-ch').show();
				$('#content .next-ch').show();				
				firstSlide = 6;
			break;
			case '#film': 
				$('#channels_frame').animate({left:'352px',width:'222px'},'fast');
				$('#pr-headers .wrap').animate({marginLeft:'-1440px'},'fast');
				$('#program_table_wrapper table').animate({marginLeft:'-1440px'},'fast');				
				$('#content .prev-ch').show();
				$('#content .next-ch').hide();				
				firstSlide = 7;
			break;							

			default:
				$('#channels_frame').animate({left:'278px',width:'177px'},'fast');
				$('#pr-headers .wrap').animate({marginLeft:'0px'},'fast');
				$('#program_table_wrapper table').animate({marginLeft:'0px'},'fast');
				$('#content .prev-ch').show();
				$('#content .next-ch').show();
				firstSlide = 1;

		}
	}
	else{	
		$('#channels_frame').animate({left:'243px',width:'145px'},'fast');
		$('#pr-headers .wrap').animate({marginLeft:'-720px'},'fast');
		$('#program_table_wrapper table').animate({marginLeft:'-720px'},'fast');
		$('#content .prev-ch').show();
		$('#content .next-ch').show();
		firstSlide = 4;
	}					
}/* */

function nextPrevSlide(dir){
	firstSlide = firstSlide+parseInt(dir);	
	switch (firstSlide) {
		case 1: 
			setSliderTo('#sport');
			window.location.hash = '#sport';
		break;
		case 2: 
			setSliderTo('#sport_extra');
			window.location.hash = '#sport_extra';
		break;
		case 3: 
			setSliderTo('#sport_futbol');
			window.location.hash = '#sport_futbol';			
		break;
		case 4: 
			setSliderTo('#sport_hd');
			window.location.hash = '#sport_hd';			
		break;
		case 5: 
			setSliderTo('#sport_news');
			window.location.hash = '#sport_news';			
		break;
		case 6: 
			setSliderTo('#polsat2');
			window.location.hash = '#polsat2';			
		break;
		case 7: 
			setSliderTo('#cafe');
			window.location.hash = '#cafe';			
		break;			
	}
}

var firstSlide = 1;
var current_zone = 'z_6';
var zone_diff = 0;
var firstDay = 0;

function fixPosition(){

	var scroll_y = GetScrollPos() + 5;
	var window_h = GetWindowHeight() - 10;
	var detail_h = $("#det_lay").height();
	var detail_pos = $("#det_lay").offset().top;
	var compare_a = scroll_y + window_h;
	var compare_b = detail_h + detail_pos;
	if(compare_b > compare_a){
		var c_top = parseInt($('#det_lay').css('top'));
		var diff = (compare_b - compare_a) + 7;
		var d_new = c_top - diff;
		var arr_new = 8 + diff;
		$('#det_lay').css({'top':d_new});
		$('#det_lay .arr').css({'top':arr_new});
	}
}

function GetScrollPos(){var scroll_top = document.body.scrollTop;if(scroll_top == 0){if(window.pageYOffset){scroll_top = window.pageYOffset;}else{scroll_top = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;}}return scroll_top;}
function GetWindowHeight(){if(window.innerHeight){win_h = window.innerHeight;}else{win_h = (document.documentElement) ? document.documentElement.clientHeight : document.body.clientHeight;};return win_h;}




var currentDay = -1;
    
	function SwitchDayOn(n, serverTime) {
		if (n != null) {
		if (currentDay != n) {
			if (n == firstDay)
				showDay(n,serverTime);
			else
				showDay(n,null);
			currentDay = n;
		}
		
	}
		
    $('#tb_day_selector a.day').removeClass('selected');
    $('#day_'+n).addClass('selected');
    $('#tb_day_selector_sh a.day').removeClass('selected');
    $('#day_sh_'+n).addClass('selected');
	}
	
	function SwitchDay(n){
		serverTime = getServerTime(); 
		SwitchDayOn(n,serverTime);
	}

    var serverTime = new Date();
    var renderTime = null;

    function getTimeFromRender(serverTime) {
    	renderTime = getRenderTime().getDate();
    	var days = Math.round((serverTime.getDate()-renderTime)) + 1;
    	if (serverTime.getHours() < 5 && days > 1) days--;
    	return days;
    }    

	var activeProgs = Array();
	var hiddenTime = Array();
	
    function hideActive() {
		for (i=0; i<activeProgs.length; i++) {
			if (activeProgs[i]) activeProgs[i].hide();
		}
		for (i=0; i<hiddenTime.length; i++) {
			if (hiddenTime[i])
				hiddenTime[i].show();		
		}
		
		activeProgs = new Array();
		hiddenTime = new Array();
		
		
    }

function showActualInChannel(index, channel, actualTime) {	
		var nextEmission = 0;
		var programs = channel.programs;
		var programsArrayIds = new Array();
		for (var index in programs) {
			programsArrayIds.push(index);
		}

		var found = 0;
		var founded = false;
		var last = 0;
		for (var index = 0; index < programsArrayIds.length; index++) {
			var program = programs[programsArrayIds[index]];
			var d = new Date(program.emissionDate);
			var last = index;
			nextEmission = program.emissionDate;
			if (actualTime < program.emissionDate) {
				if (!founded) {
					found = index;
					founded = true;
					break;
				}
			}			
		}
		
		if (!founded) {
			founded = true;
			found = last;
		} else {
			found--;
		}		
		
		actual = programs[programsArrayIds[found]];
		if (actual) {
			query = '#program' + actual.id;
			hiddenTimeObj = jQuery(query);
			hiddenTime.push(hiddenTimeObj);
			hiddenTimeObj.hide();
			
			query = '#activeprogram' + actual.id;
			activeObj = jQuery(query);
			activeProgs.push(activeObj);
			activeObj.show();
			return nextEmission.getTime() - actualTime.getTime();
		} else
			return 0;
		
	}
	
	function showActualProgs(serverTime) {
		var maxRunAfter = 1000*60*60*24;
		hideActive();
		if (!serverTime)
			serverTime = new getServerTime();
		var nextRunAfter = maxRunAfter;
		for (var index in channels) {
			channel = channels[index];
			next = showActualInChannel(index,channel, serverTime);
			if (next < nextRunAfter && next > 0)
				nextRunAfter = next;
		}
		
		if (nextRunAfter > 0 && nextRunAfter < maxRunAfter) {
			setTimeout(function() {showActualProgs();},nextRunAfter + 10);
		}
		
	}

    function generateDayLink(idpreffix, day, dayOfWeek, days) {
    	return '<a href="javascript:SwitchDay(' + day + ')" class="day" id="'+ idpreffix + day +'">' + days[dayOfWeek] + '</a>';
    }

    function generateDaySelector(serverTime) {
    	var one_day=1000*60*60*24;
    	dayStart = getTimeFromRender(serverTime);
    	days = ["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota","Dziś","Jutro"];
    	i = 0;
    	htmlMain = '';
    	htmlSh = '';
    	dayDate = new Date(serverTime);
    	if(dayDate.getHours()<5) {
    	    weekDay = (dayDate.getDay() + 2 -1 ) % 7;
    	} else {
    	    weekDay = (dayDate.getDay() + 2) % 7;
    	}
    	day = dayStart;
    	if (day < 7) {
    		htmlMain += generateDayLink('day_',day,7,days);
    		htmlSh += generateDayLink('day_sh_',day,7,days);
    	}
		day++;
		if (day < 7) {
			htmlMain += generateDayLink('day_',day,8,days);
			htmlSh += generateDayLink('day_sh_',day,8,days);
		}
		day++;
	if($('#tb_day_selector').parent().parent().attr('id')=='tool') {
	    for (i= day; i<7; i++) {
    		htmlMain += generateDayLink('day_',i,weekDay,days);
    		htmlSh += generateDayLink('day_sh_',i,weekDay,days);
    		weekDay = (weekDay + 1) % 7;
    	    }
    	}
    	$('#tb_day_selector').html('<span>PROGRAM NA:</span>' + htmlMain);
    	$('#tb_day_selector_sh').html('<label>PROGRAM NA:</label>' + htmlSh);
    	
    }

    function getCurrentHour(serverTime) {
    	return serverTime.getHours();
    }

	function SwitchDayview(d) {    			
		serverTime = getServerTime();
		SwitchDayview(d, serverTime);
	}
	
    function SwitchDayview(d, serverTime){    			
		if (!serverTime) serverTime = getServerTime();
		currentDay = getTimeFromRender(serverTime);
		query = '#program_table_wrapper table tr';
		SwitchDayOn(currentDay, serverTime);
		$(query).hide();		
		if(d==1){//teraz
				$('#dayview_now').addClass('sel');
    			$('#dayview_morning').removeClass('sel');
    			$('#dayview_evening').removeClass('sel');
    			hour = getCurrentHour(serverTime);
    			if (hour < 5) hour+=24;
    			for (i = hour-1 ; i < hour + 24; i++) {
    				$(query +'.h_' + i).show();
    			}
    			
    	}else if(d==0){//wieczór
    			$('#dayview_now').removeClass('sel');
    			$('#dayview_morning').removeClass('sel');
    			$('#dayview_evening').addClass('sel');
    			for (i=16; i<35;i++)
					$(query + '.h_' + i).show();
    	}else if (d == 2) { //ranek
    			$('#dayview_now').removeClass('sel');
    			$('#dayview_morning').addClass('sel');
    			$('#dayview_evening').removeClass('sel');	
    			for (i=5; i<16;i++)
					$(query + '.h_' + i).show();
    	}
    }

	function rollZone(){
		$('#time_zone div.zones').toggleClass('sel');
		$('#time_zone ul.list').toggle();
	}

var timesCache = new Array();
var playTimesCache = new Array();

function cacheTimes() {
	timesCache = new Array();
	playTimesCache = new Array();
	elements = document.getElementsByTagName('div');
	for (i=0;i<elements.length;i++){
		obj = elements[i];
		className = elements[i].className;
		if (className =='time')
			timesCache[timesCache.length] = obj;
		if (className =='stime')
			playTimesCache[playTimesCache.length] = obj;
	}
}

function selectZone(id){
	$('.selected_zone span.zone_label').text(programzones[id].name);
	$('#time_zone div.zones').removeClass('sel');
	$('#time_zone ul.list').hide();
	zone_diff = programzones[id].offset - programzones[current_zone].offset;
	if (timesCache.length == 0)
		cacheTimes();
	
	for (i =0; i<timesCache.length; i++) {
		var obj = timesCache[i];
		text = obj.innerHTML;
		h = (parseInt(text.split(':')[0],10)+parseInt(zone_diff,10)+24)%24; 
		m = text.split(':')[1];
	 	progtime = h+':'+m;
		obj.innerHTML = progtime;
		playObj = playTimesCache[i];
		playObj.innerHTML = 'od ' + progtime;
	}
	current_zone = id;	
	setZoneCookie(current_zone);
}

function setZoneCookie(val){
 	var exdate=new Date();
	exdate.setDate(exdate.getDate()+365);
	document.cookie="TIMEZONE="+escape(val)+";expires="+exdate.toGMTString();
}
function getZoneCookie(){

    if (document.cookie.length>0) {
        var c_name="TIMEZONE";
        var c_start=document.cookie.indexOf(c_name + "=");
        if (c_start!=-1) { 
            c_start=c_start + c_name.length+1; 
            var c_end=document.cookie.indexOf(";",c_start);
            if (c_end==-1) c_end=document.cookie.length;
            return unescape(document.cookie.substring(c_start,c_end));
        } 
    }
    return "";
}

function checkZoneCookie(){
	var tzcookie=getZoneCookie();
	if (tzcookie!=""){
		return tzcookie;
	}else{
		return false;
	}
}


function toolCO(n){
	if(n==1){
		$('#toolbar').hide();
		$('#time_zone').hide();
		$('#toolbar-mini').show();		
	}else{
		$('#toolbar').show();
		$('#time_zone').show();
		$('#toolbar-mini').hide();				
	}
	
}
	
/*	function generateHtml(channels, sortedProgs) {
		if (!sortedProgs) {
		    return;
		}
		row = 0;
		html = '';
			for (i=5; i< sortedProgs.length + 5; i++) {
				html += '<tr class="h_' + i;
				if (row % 2 == 0) html += ' even';
				html += '">';
				chIndex = 0;
				for (var ch in channels) {
					var channel = channels[ch];
					html += '<td class="ch_'+chIndex+'">';
					if (sortedProgs[i]) {
						progs = sortedProgs[i][channel.id];
						if (progs && progs.length > 0)  {
							for (k=0; k<progs.length; k++) {
								prog = progs[k];
								if (!prog) continue;
								html += '<div class="item';
								if(prog.type<7) html += ' genre_' + prog.type;
								html +='">';
								html += getProgDiv(prog,zone_diff);
								html += getProgDetail(channel,prog,zone_diff);
								html += '</div>';
							} 
						} else {
							html += '<div class="item"></div>';
						}
					}
					html += '</td>';
					chIndex++;
				}
				html += '</tr>';
				row++;
			}
		return html;
	}
*/	

function generateHtml(channels, sortedProgs) {
	if (!sortedProgs) { return;}
	var name = getProgramNames();
	html = '';
	var chIndex = 0;
	for (var ch in channels) {
		row = 0;
		html += '<div id="' + name[chIndex] + '"><table><tbody>';
		var channel = channels[ch];
		for (i=5; i< sortedProgs.length + 5; i++) { //po godz.
			if (sortedProgs[i]) {
				progs = sortedProgs[i][channel.id];
				if (progs && progs.length > 0)  {
					for (k=0; k<progs.length; k++) {
						html += '<tr class="h_' + i;
						if (row % 2 == 0) html += ' even';
						html += '">';
						html += '<td class="ch_'+chIndex+'">';
						prog = progs[k];
						if (!prog) continue;
						html += '<div class="item';
						if(prog.live) html += ' genre_1';
						else if(prog.hd) html += ' genre_2';
						else html += ' genre_0';
						html +='">';
						html += getProgDiv(prog,zone_diff);
						html += getProgDetail(channel,prog,zone_diff);
						html += '</div>';
						html += '</td>';
						html += '</tr>';
						row++;
					}
				} 
				//else {
				//	html += '<div class="item"></div>';
				//}
			}
		}
		chIndex++;
		html += '</tbody></table></div>';
	}
	return html;
}

	var channels4Day = new Array();
	
	function loadChannels(day) {
		if (day >=0 && day <=7) {
			programUrl = getProgramUrls()[day];
			if (!channels4Day[day]) {
				url = programUrl;
				result = jQuery.ajax({
				url: url, 
				async:   false,
				dataType: 'json',
				cache: false
				}).responseText;
				if (typeof(result)=="undefined" || result=='') return null;
				data = $.evalJSON(result);
				channels4Day[day] = data.channels;
				return data.channels;
			} else
				return channels4Day[day];
		}
		return null;
		 
	}
	
	function sortChannels(channels) {
		if (!channels) return;
		var sortedProgs = new Array();
		for (var ch in channels) {
			var channel = channels[ch];
			var programs = channel.programs;

			for (var pointer in programs) {
				prog = programs[pointer];
				
				emissionDate = new Date(prog.emissionDate);
				prog.emissionDate = emissionDate;
				attachedDate = new Date(prog.attachedDate);
				
				hour = emissionDate.getHours();
				if (attachedDate.getDate() != emissionDate.getDate())
					hour = hour + 24;
				if (!sortedProgs[hour]) sortedProgs[hour] = new Array();
				if (!sortedProgs[hour][channel.id]) sortedProgs[hour][channel.id] = new Array();
				sortedProgs[hour][channel.id].push(prog);
				
			}
		  }
		return sortedProgs;
	}
	
	function showDay(day,serverTime) {
		channels = loadChannels(day);
		if (!channels) return;
		sortedProgs = sortChannels(channels);
		html = generateHtml(channels, sortedProgs);
		$('#program_table_wrapper').html('' + html + '');
		
		$('#program_table_wrapper .details a').hover(
		function(){ /* HOVER */
			
			var off = $(this).parent().parent().offset();
		
			prHov = parseInt($(this).parent().parent().parent().attr("class").replace('ch_',''));
						
			if(prHov <= firstSlide){	
				var pleft = parseInt(off.left) + 228;
				var ptop = parseInt(off.top) - 3;			
			}else{
				$('#det_lay .ins').addClass('inverse');
				var pleft = parseInt(off.left) - 360;
				var ptop = parseInt(off.top) - 3;	
			}
			$('#det_lay').css({'left':pleft,'top':ptop});	
			/* <img src="$portal.path/x.image?id=$program.fkMImgImagesId&version=mini" alt="" width="329" /> */			
			html = $('.details_'+$(this).attr('class')).html();
			$('#det_lay .ins').html(html);
			$('#det_lay').show();			
			fixPosition();			
			},
		function(){ /* OUT */
			$('#det_lay').hide();			
			$('#det_lay .ins').html('');
			$('#det_lay .ins').removeClass('inverse');			
			} 
		);
		
		//initSliderOnProgram();
		setSliderTo(window.location.hash);
		
		if (day == firstDay && serverTime) {
			showActualProgs(serverTime);
			SwitchDayview(1,serverTime);
		}
		$('#pr-headers').smartTab({selected: programTvSettings.programTab});
		//open_tab(programTvSettings.programTab)
		RefreshProgramType();
	}
	
	function generateProgramTv() {
		serverTime = getServerTime();
		daysFromRender = getTimeFromRender(serverTime);
		if (serverTime.getHours() == 4) {
			
			if (firstDay != daysFromRender) {
				timeDiff = (60*60*1000) - (serverTime.getMinutes()*60*1000 + (serverTime.getSeconds() * 1000));
				setTimeout(function() {generateProgramTv();},timeDiff);
			}
		}		
		firstDay = daysFromRender;
		generateDaySelector(serverTime);		
		SwitchDayOn(daysFromRender, serverTime);
	}
	
	function initProgramTv() {
		generateProgramTv();
		initSliderOnProgram();
		//showDay(daysFromRender, serverTime);		
		var ccz = checkZoneCookie();
		if(ccz != false){selectZone(ccz);}
	
		$('.selected_zone .zone_label').show();
	
		$('#toolbar-mini span.open').click(function(){toolCO(0);});
		$('#toolbar span.close').click(function(){toolCO(1);});
	
	}
	
	function debugProgram() {
		timeManager.changeTime();
		showActualProgs();
	}
	
    $(document).ready(function() {		
		initProgramTv();
		if(window.location.hash=='#live') setProgramType(1,1);
		if(window.location.hash=='#hd') setProgramType(2,1);
	});
