/**
 * Standard form validator...
 *
 * @author	Bobo Wieland bobo@plucera.se
 * @version 1.0b 2006-04-05
 **/

function Validator() {


	function valueSet(str){
		str = str.trim();
		return (str.length) ? true : false;
	} this.valueSet = valueSet;

	function isEmail(str){
		var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
		var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.(com|net|org|edu|biz|gov|info|aero|cat|coop|int|jobs|mil|mobi|museum|name|pro|tel|travel|[a-z]{2}|[0-9]{1,3})(\]?)$/;
		return (!reg1.test(str) && reg2.test(str)) ? true : false;
	} this.isEmail = isEmail;

	function isPhone(pn) {
		var reg = /[^0-9\-\[\]\(\)]+/;
		var pref = '';
		pn = pn.replace(/(\s*)/g, "");
		if (pn.charAt(0) == '+') {
			pn = pn.substr(1,pn.length-1);
			pref = '+';
		}
		return (pn.length && !reg.test(pn)) ? pref+pn : false;
	} this.isPhone = isPhone;

};

String.prototype.trim = function() {
	a = this.replace(/^\s+/, '');
	return a.replace(/\s+$/, '');
};

function validate(f) {
	var v = new Validator();
	var errors = "";

	f.name.className = f.email.className = f.phone.className = "field";
	f.question.className = "";

	if (!v.valueSet(f.name.value)) {
		errors += "- Du har inte angivit något namn eller företag\n";
		f.name.className += " error";
	}
	var vphone = v.isPhone(f.phone.value);
	if (!vphone) {
		errors += "- Telefonnr. är ej korrekt.\n";
		f.phone.className += " error";
	}
	else {
		f.phone.value = f.phone.value.trim();
	}
	var vemail = v.isEmail(f.email.value);
	if (!vemail) {
		errors += "- Mailadress är ej korrekt.\n";
		f.email.className += " error";
	}
	else {
		f.email.value = f.email.value.trim();
	}
	if (!v.valueSet(f.question.value)) {
		errors += "- Du har inte skrivit något meddelande\n";
		f.question.className += " error";
	}

	if (errors.length) {
		alert("Följande fel påträffades i formuläret:\n\n" + errors);
		var rtn = false;
	}
	else {
		var rtn = true;
	}
	return rtn;
}
