if (!this.validate_string){
	var validate_string = function(){
		return {
			_test: function(input_string, reg){
				if(reg.test(input_string) == false) {
					return false;
				}
				return true;
			},
			az : function(input_string){
				var reg = /^([A-Za-z])+$/;
				return validate_string._test(input_string, reg);
			},
			az_ : function(input_string){
				var reg = /^([A-Za-z ])+$/;
				return validate_string._test(input_string, reg);
			},
			az09 : function(input_string){
				var reg = /^([A-Za-z0-9])+$/;
				return validate_string._test(input_string, reg);
			},
			string_main : function(input_string){
				var reg = /^([A-Za-z0-9 _\-\.\'\(\)\,])+$/;
				return validate_string._test(input_string, reg);
			},
			email : function(input_string){
				var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
				return validate_string._test(input_string, reg);
			},
			phone : function(input_string){
				var reg = /^(\+\d{7,15})$/;
				return validate_string._test(input_string, reg);
			}
		};
	}();
}

function $(element){
	
	return document.getElementById(element);
	
}

function form_error(field, fieldmessage){
	
	alert(fieldmessage);
	$(field).focus();
	return false;
	
}

function invalid_email_domains(emailaddress){
	
	var domains = new Array();
	domains[0] = '@yahoo.';
	domains[1] = '@hotmail.';
	domains[2] = '@msn.';
	domains[3] = '@live.';
	domains[4] = '@gmail.';
	domains[5] = '@amazon.';
	
	for (var i = 0; i < domains.length; i++){
		
		if (emailaddress.indexOf(domains[i]) !== -1){
			return true;
		}
		
	}
	return false;
	
}

function form_send(){
	
	var post_vars = new Object();
	
	post_vars['name'] = $('name').value;
	if (post_vars['name'] == ''){ 
		return form_error('name', 'Please fill in your name');
	}
	if (!validate_string.az_(post_vars['name'])){
		return form_error('name', 'Your name appears to be invalid');
	}
	
	post_vars['hospital'] = $('hospital').value;
	if (post_vars['hospital'] == ''){ 
		return form_error('hospital', 'Please specify the hospital you work for');
	}
	if (!validate_string.string_main(post_vars['hospital'])){
		return form_error('hospital', 'The name of the hospital you work for appears to be invalid');
	}
	
	
	post_vars['country'] = $('country').value;
	if (post_vars['country'] == ''){ 
		return form_error('country', 'Please select the country of the hospital you work for'); 
	}
	
	post_vars['email'] = $('email').value;
	if (post_vars['email'] == ''){ 
		return form_error('email', 'Please fill in your email address');
	}
	if (!validate_string.email(post_vars['email'])){
		return form_error('email', 'Your email address appears to be invalid');
	}
	if (invalid_email_domains(post_vars['email'])){
		return form_error('email', 'Please enter you hospital/company email address');
	}
	
	post_vars['phone'] = $('phone').value;
	if (post_vars['phone'] == ''){ 
		return form_error('phone', 'Please fill in your phone number');
	}
	if (!validate_string.phone(post_vars['phone'])){
		return form_error('phone', 'Your phone number appears to be invalid. Please specify your country code and use only digits.\n\nExample: +31102130220');
	}

	post_vars['subject'] = $('subject').value;
	
	post_vars['contactby'] = ($('contact_phone').checked ? 'phone' : ($('contact_email').checked ? 'email':'no preference'));
	post_vars['text'] = $('text').value;
	
	post_vars['contact_me_captcha'] = $('contact_me_captcha').value;
	if (post_vars['contact_me_captcha'] == ''){
		return form_error('contact_me_captcha', 'Please write the number displayed in digits');
	}
	
	post_vars['request'] = 'contact_me';
	
	var request_object = new Object();
	request_object.method = 'post';
	request_object.url = '/sent/';
	request_object.variables = post_vars;
	
	var response = ajax_call(request_object);
	
	if (response == 'captchaerror'){
		return form_error('contact_me_captcha', 'Please enter the correct verification code');
	}
	else {
		document.getElementById('contactme').innerHTML = response;
	}
	
	return false;
	
}



var Browser = {
  Version: function() {
    var version = 999; // we assume a sane browser
    if (navigator.appVersion.indexOf("MSIE") != -1)
      // bah, IE again, lets downgrade version number
      version = parseFloat(navigator.appVersion.split("MSIE")[1]);
    return version;
  }
}

function get_opacity(element){
	if (Browser.Version() < 999){
		var opacity = element.style.filter.replace('alpha(opacity=','').replace(')','');
		return parseFloat(opacity) / 100;
	}
	
	return element.style.opacity;
}
function set_opacity(element, value){
	value = Math.round(value * 10)/10;
	element.style.opacity = value;
	if (Browser.Version() < 999){
		element.style.filter = "alpha(opacity=" + (value*100) + ")";
	}
	
}

var imagefader_time = 1000; // animation speed
var imagefader_delay = 5000; // adjust to amount of miliseconds to wait inbetween


var imagefader_intervals = new Object;
var imagefader_sequences = 10; // ne pas toucher
var imagefader_currentsrc = '';
var imagefader_timeout = false;
var imagefader_tweening = false;
var imagefader_queue = false;

function imagefader(){
	
	var the_div = document.getElementById('imagefaderholder');
	
	var the_images = the_div.getElementsByTagName('img');
	if (!the_images){ return; }
	for (var i = 0; i < the_images.length; i++){
		if (i == 0){
			the_div.style.backgroundImage = 'url(\''+the_images[i].src+'\')';
			imagefader_currentsrc = the_images[i].src;
			//set_opacity(the_images[i], 1);
		}
		//else {
			set_opacity(the_images[i], 0);
		//}
	}
	
	var the_controls = document.getElementById('imagefadercontrols').getElementsByTagName('div');
	the_controls[0].className = 'active';
	
	imagefader_timeout = setTimeout('imagefader_fade(1)', imagefader_delay);
	
}


function imagefader_fade(next_image_key){
	
	// clear any ongoing or scheduled fades
	
	window.clearTimeout(imagefader_timeout);
	for (key in imagefader_intervals){
		window.clearInterval(imagefader_intervals[key]);
	}
	
	// set the scene properly
	var the_div = document.getElementById('imagefaderholder');
	
	var the_images = the_div.getElementsByTagName('img');
	if (!the_images){ return; }
	for (var i = 0; i < the_images.length; i++){
		if (the_images[i].src == imagefader_currentsrc){
			// current image is our background image, we want to img that
			set_opacity(the_images[i], 1);
			var fade_key = i;
		}
		else {
			set_opacity(the_images[i], 0);
		}
	}
	
	var the_controls = document.getElementById('imagefadercontrols').getElementsByTagName('div');
	for (var i = 0; i < the_controls.length; i++){
		if (i == next_image_key){
			the_controls[i].className = 'active';
		}
		else {
			the_controls[i].className = '';
		}
	}
	// set new backgroundimage to value of img with key = next_image_key
	the_div.style.backgroundImage = 'url(\''+the_images[next_image_key].src+'\')';
	imagefader_currentsrc = the_images[next_image_key].src;
	
	imagefader_intervals[(fade_key)] = setInterval('imagefader_perform_fade('+(fade_key)+')', (imagefader_time / imagefader_sequences));
	imagefader_tweening = true;
	
}

function imagefader_manual_fade(next_image_key){
	
	if (imagefader_tweening){
		imagefader_queue = next_image_key;
	}
	else {
		imagefader_fade(next_image_key);
	}
	
}

function imagefader_perform_fade(image_key){
	
	var the_image = document.getElementById('imagefader'+image_key);
	if (!the_image){
		window.clearInterval(imagefader_intervals[image_key]);	
		return;
	}
	var current_opacity = get_opacity(the_image);
	
	var new_opacity = current_opacity - 0.1;
	if (new_opacity < 0){ new_opacity = 0; }
	
	set_opacity(the_image, new_opacity);
	if (new_opacity == 0){

		imagefader_next(image_key);
		window.clearInterval(imagefader_intervals[image_key]);
		imagefader_tweening = false;
		
	}
	
}

function imagefader_next(image_key){
	
	if (imagefader_queue !== false){
		imagefader_timeout = imagefader_fade(imagefader_queue);
		imagefader_queue = false;
	}
	else {
		var the_div = document.getElementById('imagefaderholder');

		var the_images = the_div.getElementsByTagName('img');
		for (var i = 0; i < the_images.length; i++){
			if (the_images[i].src == imagefader_currentsrc){
				var target_image_key = i+1;
				break;
			}
		}

		if (!document.getElementById('imagefader'+target_image_key)){
			target_image_key = 0;
		}

		imagefader_timeout = setTimeout('imagefader_fade('+target_image_key+')', imagefader_delay);
	}
	
}


function ajax_call(request_object){

	/*
	 * request_object.method		= get or post
	 * request_object.url			= url to connect to
	 * request_object.asynchronous	= true, call callback after finishing request. false, return response immediately
	 * request_object.callback		= only for asynchronous requests, function that handles responseText
	 * request_object.variables		= array with key/value for argument/value
	 */

	if (request_object.url == undefined){
		return false;
	}
	if (request_object.method == undefined){
		request_object.method = 'GET';
	}
	if (request_object.asynchronous == undefined){
		request_object.asynchronous = false;
	}

	if (request_object.asynchronous){
		if (request_object.callback == undefined){
			request_object.callback = function(){};
		}
	}

	if (request_object.variables != undefined){
		var variables = '';
		for (key in request_object.variables){
			request_object.variables[key] = key+'='+encodeURIComponent(request_object.variables[key]);
			variables = variables+'&'+request_object.variables[key];
		}
		// request_object.variables = '?'+request_object.variables.join('&');
		request_object.variables = '?'+variables;
	}

	var xmlhttp = newXMLHttpRequest();
	if (request_object.asynchronous){
		xmlhttp.onreadystatechange = getReadyStateHandler(xmlhttp, request_object.callback);
		xmlhttp.open(request_object.method, request_object.url, true);
		if (request_object.method == 'post'){
			xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
			xmlhttp.send(variables);
		}
		else {
			xmlhttp.send();
		}
		return true;
	}

	else {
		xmlhttp.open(request_object.method, request_object.url, false);
		if (request_object.method == 'post'){
			xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
			xmlhttp.send(variables);
		}
		else {
			xmlhttp.send();
		}
		return xmlhttp.responseText;
	}

  	// req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // what was this?
}


function newXMLHttpRequest() {

	var xmlhttp = false;
	if (window.XMLHttpRequest) {
		xmlhttp = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
    		// Try ActiveX
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e1) {
			// first method failed
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				 // both methods failed
			}
		}
 	}
   	return xmlhttp;

}

function getReadyStateHandler(xmlhttp, responseXmlHandler) {
	return function(){
		if (xmlhttp.readyState == 4){
			if (xmlhttp.status == 200){
				responseXmlHandler(xmlhttp.responseText);
			}
			else {
				alert("ERROR: "+ xmlhttp.status);
      		}
    	}
	}
}


function videobox(url) {
	var request_object = new Object;
	request_object.url = url;
	var response = ajax_call(request_object);
	document.getElementById('innervideo').innerHTML = response;
}
