/* Adding this class makes it possible to hide the submit button */
document.body.className += " js";
/* If javascript enabled, submit when onchange */
(function(){
	if( document.getElementById('langs') ){
		var form = document.getElementById('langs').getElementsByTagName('form')[0];
		var select = document.getElementById('lang');
		var submitform = function(){form.submit()};
		select.onchange = submitform;
	}
})();
/* If javascript enabled, FAQ titles toggle content visibility */
(function(){
	var config = {
		lookFor : 'FAQ',
		toggleElements : 'h3'
	}
	var FAQ = document.getElementById( config.lookFor );
	if ( !FAQ ) { return; }
	var titles = FAQ.getElementsByTagName( config.toggleElements );
	var className = titles[0].parentNode.className;
	// Toggle section visibility
	for( var i = 0; i< titles.length; i++ ){
		titles[i].onclick = function(){
			for( var j = 0; j< titles.length; j++ ){
				if ( titles[j] == this ) { continue; }
				titles[j].parentNode.className = className;
			}
			this.parentNode.className = (this.parentNode.className == className) ? '' : className;
		};
	}
})();
/* Form validation */
(function(){
	var config = {
		errorClass : 'error',
		formClass : 'validate'
	}
	var forms = document.getElementsByTagName('form');
	for( var i = 0; i<forms.length; i++ ){
		if ( forms[i].className == config.formClass ) {
			forms[i].onsubmit = function(){
				var labels = document.getElementsByTagName('label');
				var errors = 0;
				for( var j = 0; j<labels.length; j++){
					var target = labels[j].getAttribute('for') || labels[j].getAttribute('htmlFor');
					// Avoid throwing errors in case target can't be found
					if( !target || !document.getElementById(target) ) {
						continue;
					}
					var input = document.getElementById(target);
					if(
						(input.nodeName.toLowerCase() == 'input' || input.nodeName.toLowerCase() == 'textarea')
						&& input.value == ''
					){
						errors++;
						labels[j].parentNode.className = config.errorClass;
					} else {
						labels[j].parentNode.className = '';
					}
					if( input.nodeName.toLowerCase() == 'input' && input.value != '' && input.className == 'email' ){
						if ( !/^([~._a-z0-9-]+[~._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,4}))$/i.test( input.value ) ) {
							errors++;
							labels[j].parentNode.className = config.errorClass;
						}
					}
				}
				if( errors > 0 ){
					return false;
				}
			}
		}
	}
})();