var agt=navigator.userAgent.toLowerCase();

var is_safari = agt.indexOf("safari") != -1;
var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_mac    = (agt.indexOf("mac")!=-1);
var is_ie6     = ((agt.indexOf("msie 6") != -1) && (agt.indexOf("opera") == -1));
			
	
var ajaxbox = new Object();
var formbox = new Object();
var msgbox = new Object();

if(is_ie6){
	window.onresize = window.onscroll = function(){
		var availableHeight = document.documentElement.clientHeight;
		var scrollTop = document.documentElement.scrollTop;
		var height = availableHeight + 'px';
		var top = scrollTop + 'px';
		$(".masker").css('height' , height).css('top',top);
	}
}

$(document).ready(function(){
	links_blur();
	init_forms();
	
	var accIndex = 0;
	if(location.hash){
		var hash = location.hash;
		var target = $(hash)[0];
		if(target){
			accIndex =  target.getAttribute("index");
		}
	}
		
	/* dt-dd constructie om nieuwsblokken te togglen*/
	var links = document.getElementsByTagName("dt");
	for (i=0; i<links.length; i++) {
		if(links[i].className.indexOf('expanded') != -1 || links[i].className.indexOf('collapsed') != -1 ){	
			var link = links[i];
			link.onclick = expand_collapse;
		}
	}
	
	if(is_ie ) $('.masker').css('filter', 'alpha(opacity=30)');
	
	if(is_ie6){
		window.onresize();
	}
	
	$('#popup-masker').click (function(){ajaxbox.close();});
	$('#popup-closer').click (function(){ajaxbox.close();});
	
	$('.popup-print').click (function(){ajaxbox.print();});
	$('.popup-previous').click (function(){ajaxbox.showPrevious();});
	$('.popup-next').click (function(){ajaxbox.showNext();});
	
	$('.popup-reageren').click (function(){formbox.display('reactieformulier');});
	$('.popup-mail-a-friend').click (function(){formbox.display('mail-a-friend');});
	
	var maps =$('a.google-maps');
	maps.click (function(){return formbox.display('google-maps',this.maps);});
	maps.each(function(){
	   this.maps = this.href;
	   this.href = 'javascript:void(0);';
	});
	
	$('#popup-form .scrollbox > *').hide();

	$('#popup-form-masker').click (function(){formbox.close();});
	$('#popup-form-closer').click (function(){formbox.close();});

	$('#msgbox-closer').click (function(){msgbox.close();});
	$('#msgbox-masker').click (function(){msgbox.close();});

	
	$("#AJAX_MESSAGE").click(function(){$(this).hide()});

	$("table.select input").change(function(e){
		onCheckBoxChange(e);
	});
	if(is_ie6){
		
		$('#menu ul li').hover(
		  function () {
			$(this).addClass('hover');
		  }, 
		  function () {
			$(this).removeClass('hover');
		  }
		);
		
		$('.expolijst div').hover(
		  function () {
			$(this).addClass('hover');
		  }, 
		  function () {
			$(this).removeClass('hover');
		  }
		);
		
	}
	var slideshow =  $('.slideshow');
	if(slideshow){
		slideshow.cycle({
			fx: 'scrollLeft',
			speed:  2000, 
			nowrap:  1, 
			continuous: 1 /*,
			easeIn : "easeinout",
			easeOut : "easeinout"*/
		});
	}
	
}); 

function links_blur(){
	var links = document.getElementsByTagName("a");
	for (i=0; i<links.length; i++) {
		var link = links[i];
		link.onfocus = blur;
	}
}

function blur(){
	this.blur();
}

function init_forms(){
	var forms = document.getElementsByTagName("form");
	for (i=0; i<forms.length; i++) {
		var form = forms[i];
		if(form.getAttribute('method') == "ajax"){
			document.AJAXFORM = form;
			form.onsubmit = AJAXFORM_SUBMIT;
			
			for(var e = 0; e <= form.elements.length ; e++){
				var element = form.elements[e];
				if(element){
					element.onchange = function(){
						AJAXFORM_SUBMIT();
					}
				}
			}
			AJAXFORM_SUBMIT();			
		}
		else if(form.target == "ajax"){
			form.onsubmit = mailform_submit;
		}
		else{
			form.onsubmit = form_submit;
		}
	}
}

function AJAXFORM_SUBMIT(moveto){
	$('#loader').fadeIn(100);

	$("#lijst").find("dt").unbind("click");				
	
	var query = $(document.AJAXFORM).serialize() + '&moveto=' + (moveto ? moveto : 'first');
	var url = document.AJAXFORM.action;
	$("#AJAXLIST_TARGET").html("");	
	$("#AJAXFORM_TARGET").load(url, query, AJAXFORM_CALLBACK);
	
	$('#RSSLINK')[0].href = url + '?rss&' + query;
	return false;
}


function AJAXFORM_CALLBACK(){
	$('#loader').fadeOut(100);
	var data = $('#AJAXFORM_DATA')[0];
	var recordcount = parseInt(data.getAttribute('recordcount'));
	var pagecount = parseInt(data.getAttribute('pagecount'));
	var page = parseInt(data.getAttribute('page'));
	
	
	if (recordcount){
		var settings = $('#AJAXFORM_SETTINGS')[0].value;
		
		var obj = jQuery.parseJSON(settings);
		var cb = $('table.select input[type=checkbox]');
		
		for(var i = 0; i < cb.length; i++){
			var input = cb[i];
			var q = input.name.replace("query[","").replace("][]","") + '_' + input.value;
			if(obj[q]){
				var label = input.getAttribute('label') + "<sup>" + obj[q].value + "</sup>";
			}
			else{
				var label = input.getAttribute('label');
			}
			$(input.nextSibling).html(label);
		};

	
		$('#AJAXFORM_PAGEINFO').html('pagina ' + page + ' van ' + pagecount);
		
		$('#AJAXFORM_RECORDCOUNT').html(' (' + recordcount + ')');
		$('.transport').each(function(){pageControl(this,page,pagecount)});
		
		var firstChild = data.firstChild;
//		if(recordcount ==1 ){
		var uidPos = location.href.indexOf(firstChild.getAttribute('uid'));
		if(uidPos != -1 && recordcount == 1) {
			document.basehref = location.href.substring(0,uidPos);
			firstChild.onclick(firstChild);
		}
	}
	else{
		$('#AJAXFORM_PAGEINFO').html(' - ');
		$('#AJAXFORM_RECORDCOUNT').html(' (0)');
	}	

	if(is_ie6){
		$('#lijst tr').hover(
		  function () {
			$(this).addClass('hover');
		  }, 
		  function () {
			$(this).removeClass('hover');
		  }
		);
	}

}

function pageControl(elem, currentPage, pageCount){
	$(elem).html('');

	if(pageCount == 1){
		$(elem).hide();
		return;
	}
	else{
		$(elem).show();			
	}
	
	var newNode=document.createElement("label");
	$(newNode).html('pagina');
	elem.appendChild(newNode);

	var newNode=document.createElement("span");
	$(newNode).html('&lt;');
	$(newNode).addClass('prev');
	newNode.title='vorige pagina';
	newNode.pageIndex = Math.max(1,currentPage - 1);
	$(newNode).click(function(){AJAX_LIST_GOTO_PAGE(this);});
	elem.appendChild(newNode);
	
	var offset = 5;
	var leftOffset = currentPage <= offset ? 2 * offset : offset;
	var rightOffset = currentPage > pageCount - offset ? 2 * offset : offset;

	for(var i=1;i<=pageCount;i++){
		if(i==1 || i == pageCount || (i <= leftOffset && currentPage <= offset) || (i > pageCount - rightOffset && currentPage > pageCount - offset) || ( i > currentPage - offset &&  i < currentPage + offset)){
			var newNode=document.createElement("span");
			$(newNode).html(i);
			if(i == 1) $(newNode).addClass('first');
			if(i == pageCount) $(newNode).addClass('last');
			if(i==currentPage) $(newNode).addClass('active');
			newNode.pageIndex = i;
			newNode.title='pagina ' + i + (i==pageCount ? ' (laatste)' : '' );
			$(newNode).click(function(){AJAX_LIST_GOTO_PAGE(this);});
			elem.appendChild(newNode);			
		}
	}
	
	var newNode=document.createElement("span");
	$(newNode).html('&gt;');
	$(newNode).addClass('next');
	newNode.title='volgende pagina';
	newNode.pageIndex = Math.min(pageCount, currentPage + 1);
	$(newNode).click(function(){AJAX_LIST_GOTO_PAGE(this);});
	elem.appendChild(newNode);

}

function AJAX_LIST_GOTO_PAGE(elem){
	AJAXFORM_SUBMIT(elem.pageIndex);
}

function AJAXLIST_SUBMIT(elem){
	$('#loader').fadeIn(100);
	
	if(	elem.parentNode.activeItem ) {
		$(elem.parentNode.activeItem).removeClass('selected');
		$(elem.parentNode.activeItem.firstChild).removeClass('selected');
	}
	elem.parentNode.activeItem = elem;
	$(elem).addClass('selected');
	$(elem.firstChild).addClass('selected');
	
	var ID = elem.getAttribute('uid');
	var query = 'ID=' + ID;
	var url = document.AJAXFORM.action;
	$("#reactieformulier input[name='ID']")[0].value = ID;
	$("#AJAXLIST_TARGET").load(url, query, AJAXLIST_CALLBACK);
	return false;
}

function AJAXLIST_CALLBACK(){

	var data = document.getElementById('AJAXFORM_DATA');
	var firstChild = data.firstChild;
	
	ajaxbox.display();
	$("#AJAXLIST_TARGET")[0].parentNode.scrollTop = 0;
	
	
	$("#reactie").find("form").submit(function(){
		if(! form_validate(this)){
			return false;
		}
	});
	$('#loader').fadeOut(100);
}

function AJAXMESSAGE_CALLBACK(){
	$("#AJAX_MESSAGE").show();
}

function responseCallback(){
	this.onload=null;
	if(is_ie){
		var body = 	this.document.getElementsByTagName('body')[0];
	}
	else{
		var body = 	this.contentDocument.getElementsByTagName('body')[0];
	}
	var msg = body.innerHTML;
	this.src = '';
	msgbox.display(msg);
}

show_hide_anders = function(elem){
	if(elem.value =='anders'){
		$('#input-anders').show();
	}
	else{
		$('#input-anders').hide();
	}
}

function onInputFocus(input){
	if(input.className.indexOf('filled') == -1){
		input.initialValue = input.value;
		input.value = '';
	}
}
function onInputBlur(input){
	if(input.value == ''){
		input.value = input.initialValue;
		input.className = input.className.replace(/filled/g, '');
	}
	else if(input.className.indexOf('filled') == -1){
		input.className += ' filled';
	}
}


				 

function onCheckBoxChange(e){
	elem = e.currentTarget;
	if(elem.tagName.toLowerCase() == "input"){
		var label = elem.parentNode;
		if(elem.checked){
			label.className = 'checked';
		}
		else{
			label.className = '';
		}
	}
	elem.blur();
}

mailform_submit = function(){
	if(form_validate(this)){
		var query = $(this).serialize();
		var url = this.action + '?responsemode=ajax';
		$('#msgbox .popup-content').load(url, query);
		$('#msgbox').fadeIn(250);
		$('#msgbox-masker').show();
	}
	return false;
}

form_submit = function(){
	if(! form_validate(this)) return false;
}

form_validate = function(form){
	this.valid = true;
	
	var elems = form.elements;
	for(n=0; n<elems.length && this.valid; n++){
		elem = elems[n];
		
		var required = elem.getAttribute("required");
		var vartype = elem.getAttribute("vartype");
		var message = elem.name;
		var caption = "Formulier-fout";
		if(required != null){
			switch(required){
				case "true":
					if (vartype == "email"){
						if(is_email(elem.value)){
							this.valid = false;
							elem.select();
							var msg = "Het veld '" + message + "' is niet of niet correct ingevuld.";
							msgbox.display(msg,caption);
						}						
					}
					else if(elem.value.trim().length == 0){
						this.valid = false;
						elem.select();
						var msg= "Het veld '" + message + "' is niet of niet correct ingevuld.";
						msgbox.display(msg,caption);
					}
					break;
		
				default:
					if(test = elem.form.elements[required]){
						if(test.value != elem.value){
							this.valid = false;
							elem.select();
							var msg = "De waarden van de velden '" + required + "' komen niet overeen.";
							msgbox.display(msg,caption);
						}
					}
					break;				
			}
		}
	}
	
	return this.valid;
}


function is_email(email){
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
	return ! (!r1.test(email) && r2.test(email));	
}

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };


ajaxbox.showPrevious = function(){
	var details = $('#details')[0];
	var previous = details.getAttribute('previous');
	this.show(previous);
}

ajaxbox.showNext = function(){
	var details = $('#details')[0];
	var next = details.getAttribute('next');
	this.show(next);
}

ajaxbox.show = function(id){
	$('#loader').fadeIn(100);
	
	var query = 'ID=' + id;
	$("#reactieformulier input[name='ID']")[0].value = id;
	var url = document.AJAXFORM.action;
	$("#AJAXLIST_TARGET").load(url, query, AJAXLIST_CALLBACK);
	return false;	
}

ajaxbox.print = function(){
	window.print();
}

ajaxbox.display = function(){
	if(is_ie6){
		var availableHeight = document.documentElement.clientHeight;
		var top = document.documentElement.scrollTop + 40 + 'px' ;
		var height = (availableHeight - 145) + 'px';
		$("#popup").css('top',top);
		$("#popup .scrollbox").css('height' , height);
	}
	
	$('#popup').show();
	$('#popup-masker').fadeIn(250);
};

ajaxbox.close = function(){
	$('#popup').hide();
	$('#popup-masker').fadeOut(500);
	
};
		
formbox.display = function(id,href){

	var popup = $('#popup-form')[0];
	var activeItem = $('#' + id);
	if(is_ie6){
		var top = document.documentElement.scrollTop + 80 + 'px' ;
		$('#popup-form').css('top',top);
	}

	if(	popup.activeItem ) {
		$(popup.activeItem).hide();
	}
	
	popup.activeItem = activeItem[0];
	activeItem.show(0);	
	if(href){
		var iframe = $("#google-maps")[0];
		iframe.src = href;
	}
	popup.className = id;
	
	$('#popup-form').fadeIn(250);
	$('#popup-form-masker').fadeIn(250);
	
	return false;
};

formbox.close = function(){
	$('#popup-form-masker').fadeOut(500);
	$('#popup-form').fadeOut(500);
};
		
msgbox.display = function(msg,caption){
	if(caption) caption = "<h3>" + caption + "</h3>";
	msg = caption + "<p>" + msg + "</p>";
	$('#msgbox .popup-content').html(msg);
	
	if(is_ie6){
		var top = document.documentElement.scrollTop + 80 + 'px' ;
		$('#msgbox').css('top',top);
	}
	$('#msgbox').fadeIn(250);
	$('#msgbox-masker').show();
};

msgbox.close = function(){
	$('#msgbox').fadeOut(500);
	$('#msgbox-masker').hide();
	
};



function expand_collapse(){

	target = $(this).next('dd')[0];
	
	var dt= document.getElementsByTagName("dt");
	var dd= document.getElementsByTagName("dd");
	
	if(this.className.indexOf("collapsed") != -1){
		for (var i=0; i<dd.length; i++){
			dt[i].className = dt[i].className.replace(/expanded/g, 'collapsed');
			dd[i].className = dd[i].className.replace(/expanded/g, 'collapsed');
		}
		
		if(target.innerHTML.length){
			target.className = target.className.replace(/collapsed/g, 'expanded');
			this.className = this.className.replace(/collapsed/g, 'expanded');
		}
	}
	else{
		target.className = target.className.replace(/expanded/g, 'collapsed');
		this.className = this.className.replace(/expanded/g, 'collapsed');
	}
} 