var regexText		= /^[a-zA-Z0-9á-ùÁ-ÙÜÝÞßüýþúûò.,?;:!()-_+=|\/"@#$%& ]*$/;
var regexEmail		= /^([a-z0-9_-]+)(\.[a-z0-9_-]+)*@([a-z0-9_-]+)(\.[a-z0-9_-]+)*[\.]([a-z0-9_-]+)$/i;

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function validateInput(input, pattern, required, minLength) {
	if (required) {
		if (input.value.length<minLength || !pattern.test(input.value)) { return false; }
	} else {
		if (input.value!="") {
			if (input.value.length<minLength || !pattern.test(input.value)) { return false; }
		}
	}
	return true;
}

function validateContactForm(f) {
	var i=document.getElementById('fullname');
	if (!validateInput(i, regexText, true, 12)) {
		alert("Please type your name");
		return false;
	}
	var i=document.getElementById('email');
	if (!validateInput(i, regexEmail, true, 10)) {
		alert("Please type a valid e-mail");
		return false;
	}
	var i=document.getElementById('message');
	i.value=i.value.replace(/<\/?.+?\s?>/gi,"");
	if (!validateInput(i, regexText, true, 10)) {
		alert("Please type your message");
		return false;
	}
	var message="Send the message?";
	if (confirm(message)) {
		var recipient=document.getElementById("recipient");
		var subject=document.getElementById("subject");
		recipient.value=subject.options[subject.selectedIndex].value;
		return true;
	} else {
		return false;
	}
}

function attachContactValidation() {
	var f=document.getElementById('contactForm');
	if (f) {
		f.onsubmit=function() { return validateContactForm(this); }
	}
}

if (document.getElementById && document.getElementsByTagName) {
	window.onload=attachContactValidation;
}
