/* ******************* */
/* global js-functions */
/* ******************* */

function refreshClock() {
	var now = new Date();
	var hour = now.getHours();
	var minutes = now.getMinutes();
	if(hour < 10) hour = "0" + hour;
	if(minutes < 10) minutes = "0" + minutes;
	$('.time').html(hour + ":" + minutes);	
};

function moveTimeCursor() {
	var now = new Date();
	var hour = now.getHours();
	var minutes = now.getMinutes();
	var leftPos = (hour * 420 + minutes * 7) - 2520; /* 6h offset */
	var leftPos = leftPos - 2; /* styling issues (width, border) */
	if(hour < 10) hour = "0" + hour;
	if(minutes < 10) minutes = "0" + minutes;
	$('#gridTimeCursor').css('left',leftPos);
	$('#gridTimeCursor').attr('title',hour + ':' + minutes);
	setBgDiv();
};

function setBgDiv() {

	$('.gridRow div').each(function(){
		var lowerBound = $(this).position().left;
		var upperBound = parseInt($(this).position().left) + parseInt($(this).css('width').replace('px',''));
		var posTimeCur = parseInt($('#gridTimeCursor').css('left').replace('px',''));
		if (posTimeCur >= lowerBound && posTimeCur < upperBound) {
			$(this).css('background-color',$('.color_actual').css('color'));
		} else {			
			$(this).css('background-color','#fff');
		}
	});
};

/* onChange hack for jquery.selectbox-0.5.js */
function onchangeSelectbox(SelectboxId) {
	
	if (SelectboxId=='region_select') {goToPage(SelectboxId);};
	if (SelectboxId=='daytime_select') {toggleProgram(SelectboxId);};
	if (SelectboxId.substr(0,12)=='search_genre') {genreSearchTrigger(SelectboxId);};
	if (SelectboxId.substr(0,15)=='search_extended') {extendedSearchTrigger();};
	if (SelectboxId=='pagecounter_select') {goToPage(SelectboxId);};

};

function goToPage(SelectboxId) {
	
	var selectedUri = $('#' + SelectboxId + ' option:selected').val(); 
	document.location.href = selectedUri;
	
};

function toggleProgram(SelectboxId) {
	
	/* toggle program day sections */
	
	$('#programlist tr[id*="changer"]').not('.changer, .teaser').css('display','none');
	
	$('#programlist tr[id*="changer"]').not('#changer_01').find('td').each(function(){
		$(this).removeClass('clicked');
	});
	
	$('#programlist ' + changerId + '[class="changer"]').find('td').each(function(){
		$(this).addClass('clicked');
	});
	
	var changerId = 'changer_' + $(':selected','#' + SelectboxId).val();
	var hour = $(':selected','#' + SelectboxId).val();
	
	if (hour=='now') {
		var now = new Date();
		var hour = now.getHours();
		if(hour >= 6 && hour < 12) hour = "06";
		if(hour >= 12 && hour < 18) hour = "12";
		if(hour >= 18 && hour < 24) hour = "18";
		if(hour >= 24) hour = "00";
	}
	
	$('.changer td').triggerHandler('click',['changer_'+hour]);
	
	/* scroll to day sections in grid */
	var hour = $(':selected','#' + SelectboxId).val();
	var minutes = 0;
	if (hour=='00') {hour='24'};
	if (hour=='now') {
		var now = new Date();
		var hour = now.getHours();
		var minutes = now.getMinutes();
	};
	var leftP = (hour * 420 + minutes * 7) - 2520; /* 6h offset */
	var the = $('#rowview').scrollLeft(leftP - 100);
	
};

function extendedSearchTrigger() {
	
	var ResultString = '';
	
	if ($('#adv_search_form #txt_free_search').val()!='') {
		ResultString = $('#adv_search_form #txt_free_search').val() + ', ';
	};
	
	$('#adv_search_form option:selected').each(function() {
		if (!$(this).hasClass('blind')) {
			ResultString = ResultString + ', ' + $(this).text();
		};
		if ($(this).hasClass('mcid')) {
			//alert($(this).text() + ' theval: ' + $(this).val());
			$(this).parent('select').attr('name','mcid');
		};
	});
	
	$('#adv_search_form [type=checkbox]:checked').each(function() {
		ResultString = ResultString + ', ' + $(this).attr('title');
	});
	
	ResultString = ResultString.replace(', ','');
	//alert(ResultString);
	$('#search_text').html(ResultString);
	$('#search_text_hidden').val(ResultString);
};

function genreSearchTrigger(SelectboxId) {
	
	if ($('#' + SelectboxId + ' option:selected').hasClass('mcid')) {
		$('#' + SelectboxId).attr('name','mcid');
	};
	
	var firstOptionText = $('#' + SelectboxId + ' option:first').text();
	var selectedOptionText = $('#' + SelectboxId + ' option:selected').text();
	
	$('#genre_search_summary').val(firstOptionText + ' - ' + $.trim(selectedOptionText));
	$('#genre_search_form').submit();
};

function clearAll() {
	
	$('#adv_search_form #txt_free_search').val('');
	
	$('#adv_search_form select').each(function () {
		$(this).selectbox({ kill:true });
		$(this).children('option:first').attr('selected','selected');
		$(this).selectbox();
	});
	
	$('#adv_search_form [type=checkbox]:checked').each(function() {
		$(this).removeAttr("checked");
	});
	
	$('#search_text').html('...');
	$('#search_text_hidden').val('');
};

function showBookmarkDetail(elementId) {
	if ($('#' + elementId).css('display')=='none') {
		$('#' + elementId + 'teaser').css('background-color','#ddd');
		$('#' + elementId + 'teaser').css('border-bottom','1px solid #ddd');
		$('#' + elementId).css('display','block');
	} else {
		$('#' + elementId + 'teaser').css('background-color','#fff');
		$('#' + elementId + 'teaser').css('border-bottom','1px solid #ccc');
		$('#' + elementId).css('display','none');
	};
};

function toggleBookmark(elementId,onlyStyle) {
	
	var action = "";
	
	if ($('.bookmark_' + elementId).hasClass('clicked')) {
		$('.bookmark_' + elementId).removeClass('clicked');
		$('.bookmark_' + elementId).parent('div').parent('div[class~="searchResultRow"]').css('background-color','');
		$('.bookmark_' + elementId).parent('div').parent('div[class~="searchResultRow"]').find('*').css('color','');
		var action = "remove";
	} else {
		$('.bookmark_' + elementId).addClass('clicked');
		$('.bookmark_' + elementId).parent('div').parent('div[class~="searchResultRow"]').css('background-color',$('.color_actual').css('color'));
		$('.bookmark_' + elementId).parent('div').parent('div[class~="searchResultRow"]').find('*').css('color',$('.color_active').css('color'));
		var action = "add";
	};
	
	if (!onlyStyle) {
		
		var uri = joblistUrl + elementId;
		//alert(action + " :: " + uri);
		$.ajax({
			url: uri,
			data: 'action=' + action,
			cache: false,
			type: 'POST'
		});
		
	};
	
};

function clearAllBookmarks(jQuestion,jTitle,jOK,jCancel) {
	
	$.alerts.okButton = '&nbsp;' + jOK + '&nbsp;';
	$.alerts.cancelButton = '&nbsp;' + jCancel + '&nbsp;';
	
	jConfirm(jQuestion, jTitle, function(r) {
		
		if (r) {
			$('a[class*="bookmark"]').removeClass('clicked');
			
			var uri = joblistUrl + 'all';
			$.ajax({
				url: uri,
				data: 'action=remove',
				cache: false,
				type: 'POST'
			});
		}
				
	});
	
};

function forceBookmarkState(elementId) {
	
	var uri = joblistUrl + elementId;
	
	var xhReq = $.ajax({
		url: uri,
		cache: false,
		type: 'GET',
		complete: function() {
			//alert(uri + " :: " + xhReq.status);
			if (xhReq.readyState != 4) { return; }
			if (xhReq.status=='200') {jQuery('.bookmark_' + elementId).addClass('clicked')}
			else {jQuery('.bookmark_' + elementId).removeClass('clicked');}			
		}
	
	});
	
};

function clearText(thefield) {
	if (thefield.value == thefield.defaultValue) {
		thefield.value = "";
	}
	else if (thefield.value == '') {
		thefield.value = thefield.defaultValue;
	}
};

function toggleDiv(actualTab) {
	
	var lastTab = $('#' + actualTab).parent().find('li[class="activated"]');
	
	lastTab.removeClass('activated');
	$('#' + actualTab).addClass('activated');
	
	$('#' + lastTab.attr('id') + '_content').css('display','none');
	$('#' + actualTab + '_content').css('display','block');
};

function adjustHeaderHeight() {
	var height = $('#fixedHeader').css('height');
	$('#programlist').css('top',height);
};


function submitForm(thisForm, errorText) {
	
	if (thisForm=='adv_search_form') {
		if ($('#search_text_hidden').val()!='') {
			$('#' + thisForm).submit();
		} else {
			alert(errorText);
		};
	};
};

function checkCurrentTab() {
	
	if (document.URL.search('/search/')!=-1) {
		toggleDiv('tab_search');
	};
	
};

function socialBookmark(childId, childTitle, faceBook) {
	
	shareUri = location.protocol + '//' + location.host	+ relativeUrl
		+ '/tips?detail=' + childId + '&title=' + encodeURI(childTitle.replace(/ /g,'+'));
	
	if (faceBook) {
		window.open('http://www.facebook.com/sharer.php?u=' + escape(shareUri));
	} else {
		window.open('http://twitter.com/home?status=' + escape(shareUri));	
	};
	
};

function openDetailbox(contentUri){
	
	if (typeof(ShadowboxLoaded)!="undefined") {
		Shadowbox.open({
			player: 'iframe',
			content: contentUri,
			height: 600,
			width: 500
		});
	} /*else {alert('Ruhig Brauner, gaaanz ruhig!');}*/
	
};

/* cookies handling - begin */
function setCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
};

function getCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
};

function deleteCookie(name) {
	setCookie(name,"",-1);
};

function checkCookieability() {
	setCookie('rnxjhjrgjjntnbustlkjh','rnxjhjrgjjntnbustlkjh');
	if(getCookie('rnxjhjrgjjntnbustlkjh')=='rnxjhjrgjjntnbustlkjh'){return true}else{return false};
};
/* cookies handling - end */

/* browser back button hack for jQuery selectboxes */
var beforeLoaded = false;

$(window).bind('pageshow',function(){
	if (beforeLoaded) {
		$('.jquery_selectbox').selectbox({ kill:true });
		$('.jquery_selectbox').selectbox();
	};
	beforeLoaded = true;
});

window.onload = function(){
	
	window.Shadowbox.cramCloseValue(closeText);
	
	Shadowbox.init({
		autoplayMovies:		false,
		continuous:			true,
		handleOversize:		"drag",
		handleUnsupported:	"remove"
	}, function(){
		ShadowboxLoaded = true;
	});
	
	if (typeof(detailsUrl)!="undefined") {
		openDetailbox(detailsUrl);
	};
	
	
	$('a[class*="bookmark"]').each(function(){
		var elementId = $(this).attr('class');
		elementId = elementId.substr(elementId.indexOf('bookmark_')+9);
		forceBookmarkState(elementId);
		
		if ($(this).hasClass('clicked')) {
			$(this).parent('div').parent('div[class~="searchResultRow"]').css('background-color',$('.color_actual').css('color'));
			$(this).parent('div').parent('div[class~="searchResultRow"]').find('*').css('color',$('.color_active').css('color'));			
		};
		
	});
	
};

$(document).ready(function() {
	
	/* *************************** */
	/* initialize functions - begin */
	/* *************************** */
	
	/* if(!checkCookieability()){jAlert('Your browser do not allow cookies!','Attention')}; */
	
	if (getCookie('tvguide')=='clicked') {
		$('#col_view_label').css('display','none');
		$('#row_view_label').css('display','inline');
		$('#rowview').css('display','block');
		$('#colview').css('display','none');
		$('#boxheader').css('background-color','#ddd');
		$('#change_view').addClass('clicked');
	} else {
		$('#col_view_label').css('display','inline');
		$('#row_view_label').css('display','none');
		$('#colview').css('display','block');
		$('#rowview').css('display','none');
		$('#boxheader').css('background-color','#fff');
		$('#change_view').removeClass('clicked');
	};
	
	adjustHeaderHeight();
	checkCurrentTab();
	setInterval("refreshClock()",10000);
	setInterval("moveTimeCursor()",60000);
	refreshClock();
	moveTimeCursor();
	
	// initialize selectboxes
	$('.jquery_selectbox').selectbox();
	
	// listener change-event (extended search)
	$('#adv_search_form').change(function() {
		extendedSearchTrigger();
	});
	
	/* ************************* */
	/* initialize functions - end */
	/* ************************* */
	
	// onclick functions
	$('.changer td').click(function(event, param) {
		
		if (param) {
			var currentTr = $('#'+param);
		} else {
			var currentTr = $(this).parent('tr');
		}
		
		if (currentTr.next().css('display')!='none') {
			currentTr.siblings('#' + currentTr.attr('id')).css('display','none');
			currentTr.find('td').each(function(){
				$(this).removeClass('clicked');
			});
		} else {
			currentTr.siblings('#' + currentTr.attr('id')).css('display','');
			currentTr.find('td').each(function(){
				$(this).addClass('clicked');
			});
		};
	
	});
	
	$('#change_view').click(function() {
		
		if ($(this).hasClass('clicked')) {
			$('#col_view_label').css('display','inline');
			$('#row_view_label').css('display','none');
			$('#colview').css('display','block');
			$('#rowview').css('display','none');
			$('#boxheader').css('background-color','#fff');
			$(this).removeClass('clicked');
			deleteCookie('tvguide');
		} else {
			$('#col_view_label').css('display','none');
			$('#row_view_label').css('display','inline');
			$('#rowview').css('display','block');
			$('#colview').css('display','none');
			$('#boxheader').css('background-color','#ddd');
			$(this).addClass('clicked');
			moveTimeCursor();
			setCookie('tvguide','clicked');
		}
		
		toggleProgram('daytime_select');
		
	});
	
	// catch scroll events
	$('#colview').scroll(function () { 
		var topP = -1 * ($('#programlist').position().top - $('#programlist').css('top').replace('px',''));
		//alert($('#programlist').css('top'));
		$('#fixedHeader').css('top',topP);
	});
	
	$('#rowview').scroll(function () { 
		var leftP = -1 * ($('#gridProgram').position().left - $('#gridProgram').css('left').replace('px',''));
		//alert(leftP);
		$('#gridSender').css('left',leftP);
		
		var topP = -1 * ($('#gridProgram').position().top - $('#gridProgram').css('top').replace('px',''));
		$('#gridTimeLine').css('top',topP);
		$('#gridSpacer').css('top',topP);
	});
	
	// mouseenter (hover) functions
	$('.broadcast_group li').mouseenter(function() {
		var broadcastText = $(this).children('span').html();
		//broadcastText.replace(/^s+/g, '').replace(/s+$/g, '');
		//if (broadcastText.length > 70) {broadcastText = broadcastText.substr(0,70) + ' ...';}
		$('#broadcast_list').html(broadcastText);
	});
	
	$('.broadcast_group li').mouseleave(function() {
		$('#broadcast_list').html('...');
	});
	
	// tooltip functions
	$(".tooltipgrid").tooltip({
		position: 'top left',
		offset: [5, 120],
		predelay: 500,
		onBeforeShow: function(event, position) {
			this.getTip().appendTo(document.body);
			var leftPosTrigger = this.getTrigger().parent().offset().left;
			var leftPosContainer = $('#rowview').position().left;
			if (leftPosTrigger-leftPosContainer+10<$('#gridProgram').css('left').replace('px',''))
				{return false;}
			else
				{return true;};			
		}
	});
	
	toggleProgram('daytime_select');
	
});

