// JavaScript Document
if(!window.console) {
  window.console = new function() {
    this.log = function(str) {
		//alert('Console: '+str); 
	};
    this.dir = function(str) { 
		//alert('Console: '+str); 
	};
  };
}
window.addEvent('domready', function() {
	enhanceFormFields();
	if($(document.body).getElement('div#carroucel')!=null) {
		enableCarroucel($(document.body).getElement('div#carroucel'));
	}
});
/*
 * EnhanceFormFields - Geef de input velden een standaard waarde uit het title attribuut, maak leeg onfocus.
 * 
 */
var enhanceFormFields = function() {
	$each($(document.body).getElements('form input[type=text]').combine($(document.body).getElements('form textarea')), function(el){
		if(el.get('value')==el.get('defaultValue')) {
			el.set('defaultValue', el.get('title'));
		}
		el.addEvent('focus', function(){ 
			this.value=(this.value==this.defaultValue)?'':this.value;
			this.addClass('modified');
		});
		el.addEvent('blur', function(){ 
			this.value=(this.value=='')?this.defaultValue:this.value;
			if (this.value!='' && this.value!=this.defaultValue) {
				this.addClass('modified');
			} else {
				this.removeClass('modified');
			}
		});
	});
};
/*
 * Checkform - controleerd formulier op basis van css classnames.
 * 
 */
var checkForm = function(form) {
	checkFormResult = true;
	$each($(form).getElements('input[type=text]').combine($(form).getElements('textarea')), function(el){
		if(el.hasClass('required') || el.get('value').lenght>0) {
			var testResult = true;
			var patern = '';
			if(el.hasClass('email')) {
				pattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
			} else if(el.hasClass('url')) {
				patern = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
			} else {
				pattern = /(.)+/;
			}
			if(el.get('value')!=el.get('defaultValue')) {
				testResult = pattern.test(el.get('value'));
			} else {
				testResult = false;
			}
			if (testResult) {
				el.getParent('div.formrule').removeClass('validate-error');
				el.getParent('div.formrule').addClass('validate-ok');
			} else {
				el.getParent('div.formrule').removeClass('validate-ok');
				el.getParent('div.formrule').addClass('validate-error');
				checkFormResult = false;
			}
		}
	});
	if(!checkFormResult) {
		if (form.getElement('div.validateMsgBox')==null) {
			var msgBox = new Element('div', {'id':form.id+'MsgBox', 'class':'validateMsgBox'});
			msgBox.set('html', '<h3>Fout in formulier</h3><p>Het formulier kon nog niet worden verzonden omdat niet alle verplichte onderdelen zijn ingevuld. Controleer de gemarkeerde velden.</p>');
			msgBox.inject(form, 'top');
			location.hash = form.id;
		}
	} else if (form.getElement('div.validateMsgBox')!=null) {
		form.getElement('div.validateMsgBox').destroy();
	}
	return checkFormResult;
};
/*
 * Carroucel - wisselende beelden op de homepage.
 * Beelden roteren om de 12 seconden. Rotatie stopt onmouseover en gaat weer verder onmouseout.
 */
var enableCarroucel = function(el) {
	var carroucelItems = $(document.body).getElements('div#carroucel div.carroucelitem');
	$each(carroucelItems, function(carroucelItem) {
		carroucelItem.setStyles({
			'visibility':'hidden',
			'opacity':0
		});
	});
	jumpCarroucel($(document.body).getElement('div.carroucelfooter div.nav a.active'));
	
	// jump links
	var carroucelJumpLinks = $(el).getElements('div.carroucelfooter div.nav a');
	$each(carroucelJumpLinks, function(carroucelJumpLink) {
		carroucelJumpLink.addEvent('click', function(event) {
			event.preventDefault();
			jumpCarroucel(this)
		});
	});
	// rotate links
	$(el).getElement('div.carroucelheader a.previous').addEvent('click', function(event) {
		event.preventDefault();
		rotateCarroucel(-1);
	});
	$(el).getElement('div.carroucelheader a.next').addEvent('click', function(event) {
		event.preventDefault();
		rotateCarroucel(1);
	});
	// timer
	var timeout = 1000 * 12;
	var carroucelIntervalID = rotateCarroucel.periodical(timeout, null, 1);
	$(el).addEvent('mouseover', function(event) {
		event.preventDefault();
		$clear(carroucelIntervalID);
	});
	$(el).addEvent('mouseout', function(event) {
		event.preventDefault();
		$clear(carroucelIntervalID);
		carroucelIntervalID = rotateCarroucel.periodical(timeout, null, 1);
	});
};
var rotateCarroucel = function(direction) {
	var activeItem = $(document.body).getElement('div.carroucelfooter div.nav a.active');
	if (direction==1) {
		jumpCarroucel((activeItem.getNext('a')!=null)?activeItem.getNext('a'):activeItem.getParent('div.nav').getChildren()[0]);
	} else if (direction==-1) {
		jumpCarroucel((activeItem.getPrevious('a')!=null)?activeItem.getPrevious('a'):activeItem.getParent('div.nav').getChildren()[4]);
	} else {
		// do nothing
	}
};
var jumpCarroucel = function(target) {
	var carroucelItems = $(document.body).getElements('div#carroucel div.carroucelitem');
	$each(carroucelItems, function(carroucelItem) {
		//carroucelItem.addClass('hidden');
		carroucelItem.fade(0);
	});
	//$(document.body).getElement(target.get('href'));
	$(document.body).getElement(target.get('href')).removeClass('hidden').fade(1);
	var carroucelLinks = $(document.body).getElements('div#carroucel div.carroucelfooter div.nav a');
	$each(carroucelLinks, function(carroucelLink) {
		carroucelLink.removeClass('active');
	});
	$(target).addClass('active');
};