/**
 * Custom Javascript functions for PBG website
 */
var pbgJs = Class.create({
	// width of a theme-slider-image in pixels
	sliderImageWidth: 99,
	sliderIsSliding: false,
	showFaqItem: false,
	
	/**
	 * General javascript / website initialisation
	 */
	initialize: function() {
		// Duplicate sliderbar content after loading
		Event.observe(window, 'load', this.initSlider.bindAsEventListener(this), false);
	},
	
	/**
	 * Initialize sliderbar
	 */
	initSlider: function() {
		var themeCount = $$('div#themeSliderBar div');
		var duplicateSliderContent = $('themeSliderBar').innerHTML;
		for ($i=0; $i<10; $i++) {
			duplicateSliderContent = duplicateSliderContent + $('themeSliderBar').innerHTML;
		}
		$('themeSliderBar').innerHTML = duplicateSliderContent;
		$('themeSliderBar').style.left = "-" + (this.sliderImageWidth * themeCount.length * 5) + "px";
	},
	
	/**
	 * Move slidebar to the left
	 */
	themeSlideLeft: function() {
		if (!this.sliderIsSliding) {
			new Effect.Move('themeSliderBar', { x: -this.sliderImageWidth, y: 0, mode: 'relative' });
			this.disableSlider();
		}
	},
	
	/**
	 * Move slidebar to the right
	 */
	themeSlideRight: function() {
		if (!this.sliderIsSliding) {
			new Effect.Move('themeSliderBar', { x: this.sliderImageWidth, y: 0, mode: 'relative' });
			this.disableSlider();
		}
	},
	
	/**
	 * Disable slider (multi-click prevention)
	 */
	disableSlider: function() {
		this.sliderIsSliding = true;
		setTimeout(this.enableSlider.bindAsEventListener(this), 1000);
	},
	
	/**
	 * Enable slider
	 */
	enableSlider: function() {
		this.sliderIsSliding = false;
	},
	
	faqToggle: function(faqElementId) {
		// Toggle image icon
		var faqsrc = $('faqQuestionIcon_' + faqElementId).src;
		if ((faqsrc.toLowerCase().indexOf('faq_arrow_in')) == -1) {
			$('faqQuestionIcon_' + faqElementId).src = '/images/pbg/faq_arrow_in.gif';
		} else {
			$('faqQuestionIcon_' + faqElementId).src = '/images/pbg/faq_arrow_out.gif';
		}
		
		Effect.toggle($('faqAnswer_' + faqElementId), 'slide', { delay: 0.5 });
	},
	
	ultraseekInputBoxFocus: function() {
		if ($F('searchInputBox') == 'zoeken') {
			$('searchInputBox').value = '';
		}
	},
	
	ultraseekInputErrBoxFocus: function() {
		if ($F('err_searchInputBox') == 'zoeken') {
			$('err_searchInputBox').value = '';
		}
	},
	
	validateEmail: function(emailaddress) {
		var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
		if(pattern.test(emailaddress)){
			return true;
		} else {
			return false;
		}
	},
	
	validateReactions: function() {
		var error = 0;
		if ($F('reactionsAuthorField').length == 0) {
			error = error+1;
			$('reactionsAuthorField').setStyle({border: '1px solid #DC5F03'});
		} else {
			$('reactionsAuthorField').setStyle({border: '1px solid #C3C3C3'});
		}
		
		if ($F('reactionsReaction').length == 0) {
			error = error+1;
			$('reactionsReaction').setStyle({border: '1px solid #DC5F03'});
		} else {
			$('reactionsReaction').setStyle({border: '1px solid #C3C3C3'});
		}
		// Captcha is required
		if ($F('reactionsCaptcha').length == 0) {
			error = error+1;
			$('reactionsCaptcha').setStyle({border: '1px solid #DC5F03'});
		} else {
			$('reactionsCaptcha').setStyle({border: '1px solid #C3C3C3'});
		}
		
		if (!this.validateEmail($F('reactionsEmailField'))) {
			error = error+1;
			$('reactionsEmailField').setStyle({border: '1px solid #DC5F03'});
		} else {
			$('reactionsEmailField').setStyle({border: '1px solid #C3C3C3'});
		}
		
		if (error == 0) {
			document.forms['reactionForm'].submit();
		}
	},
	
	externalSiteChange: function(dropdown) {	
		var site = dropdown.options[dropdown.selectedIndex].value;
		if (site != "") {
			window.location.href = site;
		}
	},
	
	mmSubscribeFocus: function() {
		if ($F('mmsubscribeEmailaddress') == 'e-mailadres') {
			$('mmsubscribeEmailaddress').value = '';
		}
	},
	
	mmSubscribe: function() {
		var error = 0;
		
		if ($F('mmsubscribeTerms') != 'on') {
			error = error+1;
			$('mmsubscribeTerms').setStyle({border: '1px solid #DC5F03'});
		} else {
			$('mmsubscribeTerms').setStyle({border: '1px solid #C3C3C3'});
		}
		
		if (!this.validateEmail($F('mmsubscribeEmailaddress'))) {
			error = error+1;
			$('mmsubscribeEmailaddress').setStyle({border: '1px solid #DC5F03'});
		} else {
			$('mmsubscribeEmailaddress').setStyle({border: '1px solid #C3C3C3'});
		}
		
		// Post form
		if (error == 0) {
			document.forms['mmSubscribeForm'].submit();
		}
	}
});

var pbg = new pbgJs();