
$(document).ready(function()
{
	// Login and Logoff with F9
	$(document).keyup(function(evt)
	{
		if (evt.keyCode == 120)
		{
			window.location = ($('input#_hx_login').val());
		}
	});
	
	// Submenu tonen / verbergen
	$('div#menu ul.mainmenu li').hover
	(
		function(evt)
		{
			// $('div#menu ul.submenu').hide();
			$(evt.target).children('ul.submenu').show();
		},
		function(evt) { $(evt.target).children('ul.submenu').hide(); }
	);
	$('div#menu ul.mainmenu li a').hover
	(
		function(evt) { $(evt.target).parent().children('ul.submenu').show(); },
		function(evt) {}
	);
	$('div#menu ul.submenu').hover
	(
		function(evt) { $(evt.target).show(); },
		function(evt) { $(evt.target).hide(); }
	);
	
	// div#footerspace groter maken in pagina's met weinig inhoud, om footer onderaan window te houden.
	adjustFooterspace();
	$(window).resize(adjustFooterspace);
	
	// Begin zoekopdracht d.m.v. klik op Zoeken of enter toets in zoekterm veld
	$('div#search a.search-button').click(startSearch);
	$('div#search input.search-input').keydown(checkSearchEnter);
	
	// Instelling zoek dropdowns
	cookieToSearchoptions();  // doet aanroep rubriekChange()


	// Dropdowns met subset-filters voor zoekopdrachten tonen/verbergen
	$('div#search select.rubriek').change(rubriekChange);
	// $('div#search select.thema').change(getHitCounts);
	
	// Print functie aktiveren.
	$('div.pagefunctions a.afdrukken').click(printInhoud);
	
	// "Mail Redactie" functie aktiveren (mogelijk niet in alle skins gedefinieerd).
	if(typeof(openReactie) != "undefined")
	{
		$('div.pagefunctions a.mailredactie').click(openReactie);
	}
	
	// "Pagina doorsturen" functie aktiveren.
	$('div.pagefunctions a.doorsturen').click(paginaDoorsturen); 
	
	// Groter/kleiner aktiveren.
	setFontSize();
	$('div.pagefunctions a.groter').click( increaseFontSize );
	$('div.pagefunctions a.kleiner').click( decreaseFontSize );
	
	// Klik op lees verder link in thema pagina.
	$('a.leesverder').click(leesVerder);

	// Aanpassing sorteervolgorde
	$("div#search-sort input[name='search-sort']").change(changeSearchSort);
	$("div#search-sort input[name='search-sort']").click(changeSearchSort);

	// focus naar zoekterm op de zoekresultaten pagina
	if ($('div#search-sort').length > 0) {
		$('div#search input.search-input').focus();
	}
});


// Aanpassing hoogte div#footerspace bij pagina's met weinig inhoud om footer onderaan pagina te plaatsen.
// Door verandering hoogte div#footerspace wordt een nieuw resize event veroorzaakt, die tot een nieuwe
// aanroep van adjustFooterspace() leidt. Bij deze tweede aanroep wordt de hoogte van div#footerspace gelijk
// ingesteld als vorige keer, en wordt geen resize event veroorzaakt.
function adjustFooterspace()
{
	var windowheight = $(window).height();
	var contentheight = $('div#pageframe').height() - $('div#footerspace').height() + $('div#pagefooter').height();
	
	if (windowheight - contentheight > 0)
	{
		$('div#footerspace').height(windowheight - contentheight);
	}
	else
	{
		$('div#footerspace').height(12);
	}
}

function startSearch(evt)
{
	evt.preventDefault();
	searchoptionsToCookie();
	// use the tabid=xxx notation because otherwise the querystring is messed up on ww97 (in need of a fixpack?)
	var url = '/Default.aspx?tabid=2081&'
		+ $('div#search input.search-input, div#search select:visible').serialize();

	document.location = url;
}

function checkSearchEnter(evt)
{
	if (evt.keyCode == 13)
	{
		evt.stopPropagation();
		startSearch(evt);
	}
}

// Wijzig sortering en herhaal de zoekopdracht.
function changeSearchSort(evt)
{
	var sort = $("div#search-sort input[name='search-sort']:checked").val();
	var url = '/Default.aspx?tabid=2081&sort=' + sort + '&'
		+ $('div#search input.search-input, div#search select:visible').serialize();
	document.location = url;
}

// Zoekfilter dropdown opties bewaren met cookie voordat nieuwe zoekopdacht verstuurd wordt
function searchoptionsToCookie()
{
	var searchoptions =
		$('div#search select.rubriek').val() + '|' +
		$('div#search select.thema').val();
	
	$.cookie('searchOptions', searchoptions, { expires: 7, path: '/' });
}

// Zoekfilter dropdown opties vanuit cookie instellen bij laden pagina
function cookieToSearchoptions()
{
	var searchoptions = $.cookie('searchOptions');
	if (searchoptions)
	{
		searchoptions = searchoptions.split('|');
		
		$('div#search select.rubriek').val(searchoptions[0]);
		$('div#search select.thema').val(searchoptions[1]);
		
		rubriekChange();
	}
}


// Aanpassing zichtbaarheid zoekfilter dropdowns
function rubriekChange(evt)
{
	var rubriek = $('div#search select.rubriek').val();

	if (rubriek)
	{
		$('div#search *.thema').show();
	}
	else
	{
		$('div#search *.thema').hide();
	}
	// if (evt) getHitCounts(evt);
}

/*
function getHitCounts(evt)
{
	// Voor elke select, neem elke option value in combinatie met
	// de geselecteerde values van de andere selects
	
	// todo: rekening houden met zichtbaarheid van selects

	var queries = {};
	var trefwoord = $('div#search input.search-input').val();
	
	// doorloop de selects
	var selects = $('div#search select');
	for (var i = 0; i < selects.length; i++)
	{
		var currentselect = selects.eq(i);
	
		// doorloop de opties van de huidige select
		var options = currentselect.find('option');
		for (var j = 0; j < options.length; j++)
		{
			var currentoption = options.eq(j);
		
			// doorloop voor elke optie de andere selects
			// dit snap ik niet meer ... ik moet toch voor elke optie van de huidige select 1 query maken voor de combinatie met de andere zichtbare selects???
			var otherselects = selects.not(currentselect[0]);
			for (var k = 0; k < otherselects.length; k++)
			{
				var query = '';
				if (currentoption.attr('value'))
				{
					query = currentselect.attr('name') + ':' + currentoption.attr('value');
				}
				if (query != '') query += ' AND ';
				query += otherselects.eq(k).attr('name') + ':' + otherselects.eq(k).val();
				if (trefwoord) query += ' AND Content:' + trefwoord;
				queries[currentselect.attr('class') + '#' + currentoption.val()] = query;
			}
		}
	}
	
	$.ajax({
		url: "/Portals/hbo/controls/search-count.aspx",
		type: "POST",
		data: (queries),
		dataType: "json",
		success: ajaxSuccess,
		error: ajaxError
	});
}


function ajaxSuccess(data, status, xmlhttpreq)
{
	var countpattern = /\s\(\d+?\)/g;
	for (var i = 0; i < data.length; i++)
	{
		var elmts = data[i].selectoption.split('#');
		var option = $('div#search select.' + elmts[0] + ' option[value=' + elmts[1] + ']');
		var optiontext = option.text();
		if (optiontext.search(countpattern) > 0)
		{
			optiontext = optiontext.replace(countpattern, ' (' + data[i].count + ')');
		}
		else
		{
			optiontext = optiontext + ' (' + data[i].count + ')';
		}
		option.text(optiontext);
		
		if (data[i].count > 0)
		{
			option.removeAttr('disabled');
		}
		else
		{
			option.attr('disabled', 'true');
		}
	}
}

function ajaxError(xmlhttpreq, status, error)
{
	alert(error);
}
*/

// Afdrukken van de pagina-inhoud m.b.v. een nieuw window waar het inhoud-deel van de huidige
// pagina naar toe wordt gekopieerd.
// todo: overwegen om speciaal printlogo.png maken (kleinere versie ...)
function printInhoud(evt)
{
	evt.preventDefault();

	var html = "";
	var elmtlist = $('div#pageframe div.contentpane')
		.children()
		.not('div#browsecontainerTop')
		.not('a');
	for (i = 0; i < elmtlist.length; i++)
	{
		if (elmtlist[i].nodeName == 'H1')
			html += '<h1>' + elmtlist.eq(i).html() + '</h1>';
		else
			html += elmtlist.eq(i).html();
	}
	
	elmtlist = $('div#pageframe div.rightpane')
		.children().not('div#search').not('div.search-nav');
	for (i = 0; i < elmtlist.length; i++)
	{
		html += elmtlist.eq(i).html();
	}

	// neem inhoud van contentpane en rightpane
	// plaats inhoud in html context met stylesheet
	html = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
		+ "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
		+ "<head>"
		+   "<title>" + document.title + "</title>\n"
		+   "<style type='text/css'> \n"
		+     "@import '/Portals/hbo/Skins/hbo/print.css'; \n"
		+   "</style>\n"
		+   "<script type='text/javascript' src='/js/jquery-1.2.6.pack.js'></script>\n"
		+   "<script type='text/javascript' src='/Portals/hbo/Skins/hbo/print.js'></script>\n"
		+ "</head>\n"
		+ "<body class='fontsize" + fontSizeIndex + "'>\n"
		+   "<div id='printbar'>\n"
		+     "<img src='/Portals/hbo/Skins/hbo/images/logo-print.png' />\n"
		+     "<a href='' class='sluiten'>Sluiten</a> <a href='' class='afdrukken'>Afdrukken</a> \n"
		+   "</div>\n"
		+   "<div id='pageframe'>"
		+     "<div class='contentpane'>" + html + "</div>"
		+   "</div>\n"
		+ "</body>\n"
		+ "</html>";

	if (html.length)
	{
		// open popup window, schrijf print-inhoud erin en open print dialog
		var args = "height=500, width=700, resizable=yes, scrollbars=yes, directories=no, location=no, menubar=no, toolbar=no";
		var printwindow = window.open("", "printwindow", args);
		printwindow.document.write(html);
		printwindow.document.close(); // (flush buffer met in window geschreven html)
	}
}


function paginaDoorsturen(evt)
{
	evt.preventDefault();
	var $popup = $('div#paginadoorsturen-popup');
	if ($popup.length > 0)
	{
		$('div#paginadoorsturen-popup .validatie').remove();
		$('div#paginadoorsturen-popup div.paginaverstuurd').hide();
		$('div#paginadoorsturen-popup img.loader').hide();
		$('div#paginadoorsturen-popup div.invoer').show();
		$popup.show();
	}
	else
	{
		var tabid = $('input#_hx_tabid').val();
		var popuphtml = "<div id='paginadoorsturen-popup'>"
			+ "<div class='titelbalk'>"
			+ "<strong>Pagina doorsturen:</strong> " + document.title
			+ "<a class='sluitknop sluitknop-x' href='' title='Sluiten'>"
			+ "<img src='/Portals/hbo/Skins/hbo/images/sluitknop-voorgrond.gif' alt='Sluiten' border='0' /></a>"
			+ "</div>"
			+ "<div class='invoer'>"
			+ "<input type='hidden' name='tabid' value='" + tabid + "' />"
			+ "<label for='ontvanger'>Aan (E-mail):</label>"
			+ "<input name='ontvanger' id='ontvanger' class='frmveld' type='text' /><br />"
			+ "<label for='afzender'>Naam afzender:</label>"
			+ "<input name='afzender' id='afzender' class='frmveld' type='text' />"
			+ "<label for='afzenderadres'>E-mail afzender:</label>"
			+ "<input name='afzenderadres' id='afzenderadres' class='frmveld' type='text' />"
			+ "<p>&nbsp;</p>"
			+ "<div>Bericht:</div><label for='bericht'></label>"
			+ "<div><textarea name='bericht' id='bericht' class='bericht'></textarea></div>"
			+ "<div class='knoppen'>"
			+ "<a class='verzendknop' href=''>Verzenden</a>&nbsp;&nbsp;"
			+ "<a class='sluitknop' href=''>Annuleren</a>"
			+ "<img class='loader' src='/Portals/hbo/Skins/hbo/images/ajax-loader.gif' alt='' />"
			+ "</div>"
			+ "</div>";
		$('div#pageframe').append(popuphtml);

		$('div#paginadoorsturen-popup a.sluitknop').click(function($evt)
		{
			$evt.preventDefault();
			$('div#paginadoorsturen-popup').hide();
			var x = $('div#paginadoorsturen-popup div.paginaverstuurd')
			if (x.length) $('div#paginadoorsturen-popup').remove();
		});
		
		$('div#paginadoorsturen-popup a.verzendknop').click(function($evt)
		{
			$evt.preventDefault();
			$('div.invoer div.knoppen img.loader').show();
			$('div#paginadoorsturen-popup .validatie').remove();
			// todo: maak verzend knop disabled
			var input = $('div#pageframe div.invoer input, div#pageframe div.invoer textarea').serialize();

			$.getJSON('/Portals/hbo/controls/PaginaDoorsturen.aspx', input, function(result)
			{
				if (result.success)
				{
					var ontvanger = $('div.invoer input#ontvanger').val();
					$('div#paginadoorsturen-popup img.loader').hide();
					$('div#paginadoorsturen-popup div.invoer').hide().after(
						"<div class='paginaverstuurd'>"
						+ "<p>Uw bericht is met een link naar deze pagina verstuurd naar</p>"
						+ "<span class='ontvanger'>" + ontvanger + "</span>."
						+ "<div class='knoppen'><a class='sluitknop' href='" + document.location + "'>Sluiten</a></div>"
						+ "</div>");
				}
				else if (result.errors)
				{
					$('div.invoer div.knoppen img.loader').hide();
					for (var i = 0; i < result.errors.length; i++)
					{
						var lbl = $('div#paginadoorsturen-popup label[for=' + result.errors[i].field + ']');
						lbl.before("<div class='validatie'>" + result.errors[i].msg + "</div>");
					}
				}
				else
				{
					$('div.invoer').hide().after(
						"<div class='foutmelding'>"
						+ "<p>Er is een fout opgetreden, uw bericht kon niet verstuurd worden.</p>"
						+ "<div class='knoppen'><a class='sluitknop' href='" + document.location + "'>Sluiten</a></div>"
						+ "</div>");
				}
			});
		});
	}
}



var fontSizeIndex = 1;
var fontSizeList = ['x-small', 'small', 'medium', 'large'];

function setFontSize()
{
	var cookie = $.cookie('fontSizeIndex');
	
	if (cookie)
	{
		fontSizeIndex = new Number(cookie);
		if (isNaN(fontSizeIndex)) fontSizeIndex = 1;
		$('body').css('font-size', fontSizeList[fontSizeIndex]);
	}
}

function increaseFontSize(evt)
{
	evt.preventDefault();
	if (fontSizeIndex >= fontSizeList.length) return;
	fontSizeIndex += 1;
	$('body').css('font-size', fontSizeList[fontSizeIndex]);
	$.cookie('fontSizeIndex', fontSizeIndex, { expires: 7, path: '/' });
}

function decreaseFontSize(evt)
{
	evt.preventDefault();
	if (fontSizeIndex == 0) return;
	fontSizeIndex -= 1;
	$('body').css('font-size', fontSizeList[fontSizeIndex]);
	$.cookie('fontSizeIndex', fontSizeIndex, { expires: 7, path: '/' });
}


function leesVerder(evt)
{
	evt.preventDefault();
	var target = $(evt.target);
	if (target.text() == 'Lees verder')
	{
		target.next().show();
		target.text('Tekst verbergen');
	}
	else
	{
		target.next().hide();
		target.text('Lees verder');
	}
}
