
new Event.observe(document,'dom:loaded',function(){
	/* Verberg alle CMB's */
	$$('.callmeback').invoke('hide');
	
	/* Tabs */
	var tabs = $$('ul.tabs li');
	if(tabs.length > 0){
		tabs.each(function(tab){
			$(tab).on('click','a',function(){
				tabs.invoke('removeClassName','actief');
				tab.addClassName('actief');
				
				$$('div.tabContent').invoke('hide');
				$('tabContent-'+tab.id.split('-')[1]).show();
				return false;
			});
		});
	}
	
	/* Zit er een tab in de window.location-hash */
	if(window.location.hash.length > 0){
		var h = window.location.hash;
		if(h.search('tab')!=-1){
			var id = h.split('-')[1];
			$$('ul.tabs li').invoke('removeClassName','actief');
			$('tabHeader-'+id).addClassName('actief');
			$$('div.tabContent').invoke('hide');
			$('tabContent-'+id).show();
		}
	}
	
	/* Omgevingen bovenin */
	var omg = $$('ul.omgevingen li');
	if(omg.length > 0){
		var loc = window.location.href;
		omg.each(function(om){
			if(loc.search(om.down('a').href)!=-1){
				om.addClassName('actief');
			}
		});
	}
	
	/* Uitvaartkosten */
	var slider = $('slider');
	if(slider){
	    var slideControl = new Control.Slider(slider.down('.handle'), slider, {
			range: $R(500,10000),
			step: 1,
			sliderValue: parseInt($F('kapitaal')),
			width:185,
			onSlide: function(value) {
				$('kapitaal').value = Math.round(value/50)*50;
				$('uitvaartkostenBannerKapitaal').update('&euro; '+valuta($('kapitaal').value)+',-');
			},
			onChange: function(value) { 
				$('kapitaal').value = Math.round(value/50)*50;
				$('uitvaartkostenBannerKapitaal').update('&euro; '+valuta($('kapitaal').value)+',-');
			}
	    });
	}
	
	/* Zoekvenster bovenin */
	$('zoekTermTop').setAttribute('value','Zoekterm(en)');
	$('zoekTermTop').addClassName('zoekInactief');
	$('zoekTermTop').on('focus',function(){
		if($F('zoekTermTop')=='Zoekterm(en)'){
			$('zoekTermTop').setAttribute('value','');
			$('zoekTermTop').removeClassName('zoekInactief');
		}
	});
	$('zoekTermTop').on('blur',function(){
		if($F('zoekTermTop')==''){
			$('zoekTermTop').setAttribute('value','Zoekterm(en)');
			$('zoekTermTop').addClassName('zoekInactief');
		}
	});	
	
	/* Call me back */
	//if($('callmeback')){
		initCallmeback();
	//}
	
	/* Check ECHO */
	checkEcho();
	
	/* Eigen lightbox */
	initBox();
	
	/* Tooltips */
	initTooltips();
});

// Bootstrap functies

/* Zoek een ID */
function get_id(id) {
	// geef van een naam als lijst_cat_2882 alleen het nummer 2882 terug
	var ar = id.split("_");
	return ar[ar.length-1];
}

/* Rot 13 - encode email */
function email_decode(a,s){
	var email = Rot13.convert(s);	
	a.href = 'mailto:'+email;
}

/* Toon een tooltip */
function showTooltip(a,tooltip){
	var tt = $(tooltip);
	
	// positie
	var hoogte = tt.getHeight() - 15;
	tt.style.top = '-'+Math.round(hoogte/2)+'px';
	
	// laten sluiten bij onclick
	tt.onclick = function(){
		new Effect.Fade(this,{duration:0.3});
	}
	
	// alle andere elementen sluiten
	var tts = $$('.tooltip');
	tts.each(function(t){
		if(t.id != tt.id){
			new Effect.Fade(t,{duration:0.3});
		}
	});
	new Effect.toggle(tt,'appear',{duration:0.3});
}

/* Tooltips */
function initTooltips() {
	var tts = $$('.tooltip2 img');
	tts.each(function(tt){
		var tooltip = false
		tt.observe('mouseenter',function(event){
			if(!tooltip){
				var pos = tt.cumulativeOffset();
				tooltip = new Element('div',{'class':'tooltipWindow'});
				tooltipInner = new Element('div').update(tt.getAttribute('title'));
				tooltip.appendChild(tooltipInner);
				tooltip.setStyle({
					'position':'absolute',
					'left':pos.left+12+'px',
					'top':pos.top+'px'
				});
				tt.setAttribute('title','');

				document.getElementsByTagName('body')[0].appendChild(tooltip);
				var h = tooltip.getHeight();
				tooltip.setStyle({'top':(pos.top + 8 - Math.round(h/2))+'px'});
			}else{
				if(!tooltip.visible()){
					tooltip.show();
				}
			}
		});
		tt.observe('mouseleave',function(event){
			if(tooltip.visible()){
				tooltip.hide();
			};
		});
	});
}

/* Laad boxes met externe inhoud */
function initBox(){
	var boxes = $$('.box');
	var b = false;
	var ss = false;
	var source,target, close, inner, preloader;
	var slideID = 0;
	boxes.each(function(box){
		box.observe('click',function(event){
			event.stop();
			$(document.body).addClassName('boxed');
			
			// box laten zien
			if(b){
				target.hide();
				preloader.show();
				b.show();
			}else{
				b = new Element('div',{'id':'box','class':'box'});
				inner = new Element('div',{'id':'box-inner','class':'box-inner'});
				target = new Element('div',{'id':'box-target','class':'box-target'}).hide();
				preloader = new Element('div',{'id':'box-preloader','class':'box-preloader'});
				
				// overlay sluiten
				close = new Element('div',{'id':'box-close','class':'box-close'}).observe('click',function(){
					b.hide();
					
					// formulierhints verwijderen
					$$('.hintWindow').invoke('remove');
				});
				
				// insluiten
				inner.appendChild(target);
				inner.appendChild(close);
				inner.appendChild(preloader);
				b.appendChild(inner);
				document.body.appendChild(b);
				
			}
			
			// data laden via ajax
			source = box.getAttribute('data-source');
			if(source){
				new Ajax.Request(source,{
					method: 'post',
					onLoading: function(){
					},
					onSuccess: function(transport){
						var json = transport.responseText.evalJSON();
						if(json.success){
							target.update(json.html);
							
							// formulier beluisteren
							var form = $('form_auto')
							form.observe('submit',function(event){
								event.stop();
								initBoxSubmitForm();
							});
							
							// custom breedte
							var width = box.getAttribute('data-boxwidth');
							if(width){
								new Effect.Morph(inner,{
									'style':'width:'+width+';',
									'duration':0.5,
									afterFinish:function(){
										preloader.hide();
										target.show();
									}
								});
							}else{
								preloader.hide();
								target.show();
							}
						}
						
					}
				});
			}
			
			// slideshow
			slideshow = box.getAttribute('data-slideshow');
			if(slideshow){
				if(!ss){
					var sl = slides;
					var pad = slides_pad;
					var width = box.getAttribute('data-boxwidth');
					var height = box.getAttribute('data-boxheight');
					
					// html opbouwen
					ss = new Element('div',{'id':'box-slideshow'});
					var container = new Element('div',{'id':'box-slideshow-container'})
					container.setStyle({'height':height});
					var img = new Element('img',{'id':'box-slideshow-image'});
					container.appendChild(img);
	
					var bijschrift = new Element('div',{'id':'box-slideshow-bijschrift'});
					var vorige = new Element('a',{'id':'box-slideshow-vorige','title':'Vorige slide'});
					var volgende = new Element('a',{'id':'box-slideshow-volgende','title':'Volgende slide'});
					var prel = new Element('div',{'id':'box-slideshow-preloader'}).hide();
	
					var titel = new Element('div',{'id':'box-slideshow-header'});
					var counter = new Element('div',{'id':'box-slideshow-counter'});
					var h3 = new Element('h3',{'id':'box-slideshow-titel'});
					titel.appendChild(h3);
					titel.appendChild(counter);
	
					ss.appendChild(prel);
					ss.appendChild(titel);
					ss.appendChild(container);
					ss.appendChild(bijschrift);
					ss.appendChild(vorige);
					ss.appendChild(volgende);
					target.appendChild(ss);
					
					// volgende en vorige
					volgende.observe('click',function(event){
						event.stop();
						slideID++;
						slideshowItem();
					});
					vorige.observe('click',function(event){
						event.stop();
						slideID--;
						slideshowItem();
					});
				}
				
				// vullen met eerste
				//slideshowItem();

				// de boel tonen
				new Effect.Morph(inner,{
					'style':'width:'+width+';',
					'duration':0.5,
					afterFinish:function(){
						preloader.hide();
						target.show();
						slideshowItem();
						//preloader.hide();
						//target.show();
					}
				});
			}
		});
	});
	
	/* Formulier opnieuw tonen */
	var initBoxSubmitForm = function(){
		target.hide();
		preloader.show();
		var form = $('form_auto');
		form.setAttribute('action',source);
		form.request({
			onComplete: function(transport){
				var json = transport.responseText.evalJSON();
				target.update(json.html);
				
				var form = $('form_auto');
				if(form){
					form.observe('submit',function(event){
						event.stop();
						initBoxSubmitForm();
					});
				}
								
				preloader.hide();
				target.show();
			}
		});	
	}
	
	/* Door slideshow navigeren */
	var slideshowItem = function(){
		slide = slides[slideID];
		var src = slides_pad+slide.afbeelding;
		var img = $(new Image);
		var loader = $('box-slideshow-preloader');
		loader.show();
		$('box-slideshow-image').hide();
		loader.show();
		img.observe('load',function(){
			$('box-slideshow-image').setAttribute('src',img.src);
			$('box-slideshow-titel').update(slide.titel);
			$('box-slideshow-bijschrift').update(slide.bijschrift);
			
			// counter
			$('box-slideshow-counter').update((slideID+1)+' / '+slides.length);
			
			// vorige en volgende eventueel verbergen?
			if(slideID == 0) {
				$('box-slideshow-vorige').hide();
			}else{
				$('box-slideshow-vorige').show();
			}
			if(slideID >= slides.length-1) {
				$('box-slideshow-volgende').hide();
			}else{
				$('box-slideshow-volgende').show();
			}
			
			// boel tonen
			loader.hide();
			new Effect.Appear($('box-slideshow-image'));

		});
		img.src = src;
		

	}
}

/* Echo - Toon de conservatrix.nl/echo switch? */
function checkEcho(){
	var checkUrl = 'check.php?c='+window.location;
	new Ajax.Request(checkUrl, { 
		method: 'get', 
		onSuccess: function(transport){
			var json = transport.responseText.evalJSON(true);
			
			// Call me back
			if(json.cmb != 1){	
				$$('.callmeback').invoke('hide');
			}else{
				$$('.callmeback').invoke('show');
			}
			
			// Intranet switch
			if(json.check==1){
				var sw = new Element('div',{
					'id': 'echoSwitch'
				});
				
				// link conservatrix.nl
				var a1 = new Element('a',{
					'href': json.siteUrl,
					'class': (!json.echo ? 'current' : '')
				}).update('Conservatrix.nl');
				
				// streepje
				var span = new Element('span').update('&nbsp;| ');
				
				// echo
				var a2 = new Element('a',{
					'href': json.echoUrl,
					'class': (json.echo ? 'current' : '')
				}).update('ECHO');
			
				// alles bij elkaar
				sw.appendChild(a1);
				sw.appendChild(span);
				sw.appendChild(a2);
				$$('ul.header')[0].appendChild(sw);
			}

			// CMS
			//LazyLoader.load('site/styles/cms.css');
			if(json.cms == 1){				
				// laad een extra css- en js-bestand
				LazyLoader.load('site/js/cms.js', function(){
				   laadCMSfrontend();
				});
			}
			
		}
	});
}

/* Call me back functies */
var cmbAlowed = false;
var cmb;
var cmbLoaded = false;
function initCallmeback(){
	var inner;
	var target;
	var content;
	var header;
	var dur = 0.3;
	var topx = 576;
	var topy = 35;
	var rightx = 400;
	
	// random afbeelding bij klantenservice?
	$$('div.klantenservice').each(function(ks){
		var r = Math.floor(Math.random()*2+1);
		ks.addClassName('klantenservice'+r);
	});
	
	// call me back links
	$$('.callmeback').each(function(blok){
		blok.observe('click',function(){					
			// is het top of right?
			var top = blok.up('ul').hasClassName('header-contact');
			//console.log(top);
			
			// positie
			if(!top){
				var pos = blok.positionedOffset();
			}
		
			if(!cmbLoaded){
				// controle-js laden
				LazyLoader.load('site/assets/plugins/formulier/formulier.js');
				
				// standaard html opbouwen
				cmb = new Element('div',{'id':'cmb'}).hide();
				inner = new Element('div',{'id':'cmbTarget'});
				cmb.appendChild(inner);
				
				header = new Element('div',{'id':'cmbHeader'}).update('Bel mij terug (gratis)');
				inner.appendChild(header);
				
				content = new Element('div',{'id':'cmbContent'}).update('Even geduld, het formulier wordt geladen');
				inner.appendChild(content);
				
				$$('div.container')[0].appendChild(cmb);
				
				// handlers op header
				header.observe('click',function(){
					//new Effect.Fade(cmb,{duration:dur});
					cmb.hide();
				});
				
				// formulier laden
				var pad = 'ajaxServices.php?mode=callmeback&do=formulier';
				new Ajax.Request(pad,{
					'onSuccess': function(transport){
						var json = transport.responseText.evalJSON();
						// formulier plaatsen
						content.update(json.html);
						
						// knop om te sluiten
						$('cmbSluiten').observe('click',function(){
							//new Effect.Fade(cmb,{duration:dur});
							cmb.hide();
						});
						
						// focus op eerste veld
						$('cmbNaam').focus();
						
						// listener op formulier
						$('cmbForm').onsubmit = function(){return false};
						$('cmbForm').observe('submit',function(){
							var fout = false;
							
							if(!formCheckTelefoon($F('cmbTelefoonnummer'))){
								$('cmbTelefoonnummer').addClassName('fout');
								fout = true;
							}else{
								$('cmbTelefoonnummer').removeClassName('fout');						
							}
	
							if($F('cmbNaam').strip().length == 0){
								$('cmbNaam').addClassName('fout');
								fout = true;	
							}else{
								$('cmbNaam').removeClassName('fout');						
		
							}
							
							if(fout){
								if(!$('cmbError').visible()){
									new Effect.SlideDown($('cmbError'),{duration:dur});
								}						
							}else{
								if($('cmbError').visible()){
									new Effect.SlideUp($('cmbError'),{duration:dur});
								}	
								
								// formulier versturen
								var serialized = $('cmbForm').serialize();
								content.update('<div class="cmbPreloader">Even geduld, uw aanvraag wordt verstuurd.</div>');	
								
								var pad = 'ajaxServices.php?mode=callmeback&do=verwerk&'+serialized;
								new Ajax.Request(pad,{
									'onSuccess': function(transport){
										var json = transport.responseText.evalJSON();	
										if(json.success){
											content.update('<div class="cmbEnd">'+json.message+'</div>');
											
											// knop om te sluiten
											$('cmbSluiten').observe('click',function(){
												//new Effect.Fade(cmb,{duration:dur});
												cmb.hide();
											});
										}else{
											content.update('<div class="cmbEnd">Uw aanvraag kan niet verstuurd worden. Probeert u het op een later moment nog eens.</div>');
										}
									}
								});										
							}
						});
					}
				});
				
				// indien rechts herpositioneren
				if(!top){
					new Effect.ScrollTo('blok-klantenservice');
					cmb.addClassName('klantenservice');
					cmb.setStyle({'left':rightx+'px','top':(pos.top-20)+'px'});
				}else{
					cmb.removeClassName('klantenservice');
					cmb.setStyle({'left':topx+'px','top':topy+'px'});
				}
				
				// ballon tonen
				//new Effect.Appear(cmb,{'duration':dur});
				//cmb.removeClassName('hidden');
				cmb.show();
				
				// maar eenmaal laden
				cmbLoaded = true;
			}else{
				if(cmb.visible()){
					//new Effect.Fade(cmb,{duration:dur});
					cmb.hide();
					//cmb.addClassName('hidden');
				}else{

					if(!top){
						new Effect.ScrollTo('blok-klantenservice');
						cmb.addClassName('klantenservice');
						cmb.setStyle({'left':rightx+'px','top':(pos.top-20)+'px'});
					}else{
						cmb.removeClassName('klantenservice');
						cmb.setStyle({'left':topx+'px','top':topy+'px'});
					}
					
					//new Effect.Appear(cmb,{duration:0});
					//cmb.show();
					cmb.setStyle({'display':'block'});
					//cmb.removeClassName('hidden');
				}
			}
		});
	});
}

/* Input radio */
function $RF(el){
	return $$('input:checked[type="radio"][name="'+el+'"]').pluck('value');
};

/* Herschrijf valuta */
function valuta(val){
	val = val+"";
	if(val >= 10000){
		val = val.substr(0,2)+'.'+val.substr(2,3);
	}else if(val >= 1000){
		val = val.substr(0,1)+'.'+val.substr(1,3);
	}
	return val;
}

/* Rot 13 object */
Rot13 = {
    map: null,

    convert: function(a) {
        Rot13.init();

        var s = "";
        for (i=0; i < a.length; i++) {
            var b = a.charAt(i);
            s += ((b>='A' && b<='Z') || (b>='a' && b<='z') ? Rot13.map[b] : b);
        }
        return s;
    },

    init: function() {
        if (Rot13.map != null)
            return;
              
        var map = new Array();
        var s   = "abcdefghijklmnopqrstuvwxyz";

        for (i=0; i<s.length; i++)
            map[s.charAt(i)] = s.charAt((i+13)%26);
        for (i=0; i<s.length; i++)
            map[s.charAt(i).toUpperCase()] = s.charAt((i+13)%26).toUpperCase();

        Rot13.map = map;
    },

    write: function(a) {
        document.write(Rot13.convert(a));
    }
}

/** 
*  Script lazy loader 0.5
*  Copyright (c) 2008 Bob Matsuoka
*
*  This program is free software; you can redistribute it and/or
*  modify it under the terms of the GNU General Public License
*  as published by the Free Software Foundation; either version 2
*  of the License, or (at your option) any later version.
*/
 
var LazyLoader = {}; //namespace
LazyLoader.timer = {};  // contains timers for scripts
LazyLoader.scripts = [];  // contains called script references
LazyLoader.load = function(url, callback) {
        // handle object or path
        var classname = null;
        var properties = null;
        try {
                // make sure we only load once
                if ($A(LazyLoader.scripts).indexOf(url) == -1) {
                		// javascript of css?
                		var css = url.indexOf('.css') != -1;
                		
                        // note that we loaded already
                        LazyLoader.scripts.push(url);
                        
                        if(!css){
                        	// JS
	                        var script = document.createElement("script");
	                        script.src = url;
	                        script.type = "text/javascript";
						}else{
							// CSS
							var script = document.createElement('link');
							script.href = url;
							script.type = "text/css";
							script.rel = "stylesheet";
							script.media = "screen";
						}
                        $$("head")[0].appendChild(script);  // add script/css tag to head element
                       
                        // was a callback requested
                        if (callback) {    
                                // test for onreadystatechange to trigger callback
                                script.onreadystatechange = function () {
                                        if (script.readyState == 'loaded' || script.readyState == 'complete') {
                                                callback();
                                        }
                                }                            
                                // test for onload to trigger callback
                                script.onload = function () {
                                        callback();
                                        return;
                                }
                                // safari doesn't support either onload or readystate, create a timer
                                // only way to do this in safari
                                if ((Prototype.Browser.WebKit && !navigator.userAgent.match(/Version\/3/)) || Prototype.Browser.Opera) { // sniff
                                        LazyLoader.timer[url] = setInterval(function() {
                                                if (/loaded|complete/.test(document.readyState)) {
                                                        clearInterval(LazyLoader.timer[url]);
                                                        callback(); // call the callback handler
                                                }
                                        }, 10);
                                }
                        }
                } else {
                        if (callback) { callback(); }
                }
        } catch (e) {
                alert(e);
        }
}

