/*
	shared.js
	v1.0 - 07/jan/2007 - Bob Kersten - Initial version.
	(C) Copyright 2007 Fellownet.
	All rights reserved.

	Usefull urls:
	- http://www.sergiopereira.com/articles/prototype.js.html
	- http://wiki.script.aculo.us/scriptaculous/show/CoreEffects
	- http://blogs.ebusiness-apps.com/jordan/pages/Prototype%20Library%20Info.htm
	- http://www.onjava.com/pub/a/onjava/2005/10/26/ajax-handling-bookmarks-and-back-button.html
*/


var position = 0;
var speed = 0;
var executer = false;
var width = 440;

function slideshowMover(direction_, action_) {
	// actions: click over out
	switch (action_) {
		case 'out':
			speed = 0;
			break;
		case 'over':
			speed = (direction_ == 'right' ? -2 : 2);
			break;
		case 'click':
			speed = 0;
			position = (direction_ == 'right' ? -(div_width) + width : 0);
			break;
	}
	if (! executer) executer = new PeriodicalExecuter(function() {
		if (div_width < width) return;
		position += speed;
		if (position > 0) position = 0;
		if (position < -(div_width) + width) position = -(div_width) + width;
		$('slideshow_inner').style.marginLeft = position + 'px';
	}, 0.03);
}

function slideshowClick(which_, element_) {
	var elements = $A(document.getElementsByClassName('slidesel'));
	element_.addClassName('slidesel');
	elements.each( function(el_) {
		Element.removeClassName(el_, 'slidesel');
	} );
	$('img_selected').src = ar_images[which_];
	$('p_footer').innerHTML = ar_footers[which_];
	location.href = '#imgtop';
}

function onContactFormSubmit() {
	/**	
	 * This function is executed whenever the user tries to submit the contact form. We're going
	 * to submit the contact form using ajax techniques.
	 */
	var fields = $A(document.getElementsByClassName('field_error'));
	fields.each( function(el_) {
		Element.removeClassName(el_, 'field_error');
	} );
	$('txt_error').style.display = 'none';
	$('txt_notice').style.display = 'none';
	new Ajax.Request(
		$('form_contact').getAttribute('action'), {
			method:'post',
			parameters:Form.serialize('form_contact'),
			onComplete:function(req_) {
				// This function is executed whenever the server returns the contact form result.
				if ((result = req_.responseText).indexOf('|') > -1) {
					var parts = result.split('|');
					var errors = $A(parts[1].split(';'));
					errors.each( function(el_) {
						Element.addClassName(el_, 'field_error');
					} );
					$('txt_error').innerHTML = parts[0];
					$('txt_error').style.display = 'block';
					Form.enable('form_contact');
				} else {
					$('txt_notice').innerHTML = result;
					$('txt_notice').style.display = 'block';
					Form.disable('form_contact');
				}
			}
		}
	);
	return false;
}

function onReactieFormSubmit() {
	/**	
	 */
	var fields = $A(document.getElementsByClassName('field_error'));
	fields.each( function(el_) {
		Element.removeClassName(el_, 'field_error');
	} );
	$('txt_error').style.display = 'none';
	$('txt_notice').style.display = 'none';
	new Ajax.Request(
		$('form_reactie').getAttribute('action'), {
			method:'post',
			parameters:Form.serialize('form_reactie'),
			onComplete:function(req_) {
				// This function is executed whenever the server returns the reactie form result.
				if ((result = req_.responseText).indexOf('|') > -1) {
					var parts = result.split('|');
					var errors = $A(parts[1].split(';'));
					errors.each( function(el_) {
						Element.addClassName(el_, 'field_error');
					} );
					$('txt_error').innerHTML = parts[0];
					$('txt_error').style.display = 'block';
					Form.enable('form_reactie');
				} else {
					$('txt_notice').innerHTML = result;
					$('txt_notice').style.display = 'block';
					Form.disable('form_reactie');
				}
			}
		}
	);
	return false;
}
