var _ValidateEmailStripRegExp;
var agt         = navigator.userAgent.toLowerCase();
var is_major    = parseInt(navigator.appVersion);
var is_minor    = parseFloat(navigator.appVersion);
var is_ie       = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie3      = (is_ie && (is_major < 4));
var is_ie4      = (is_ie && (is_major == 4) && (agt.indexOf("msie 5") == -1) );
var is_ie4up    = (is_ie  && (is_major >= 4));
var is_ie5      = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0") !=-1) );
var is_ie5_5    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
var is_ie6      = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.0") !=-1) );
var is_ie6up    = (is_ie6);
var is_ie5up    = (is_ie6up || (is_ie  && !is_ie3 && !is_ie4));
var is_ie5_5up  = (is_ie6up || (is_ie && !is_ie3 && !is_ie4 && !is_ie5));
var is_win      = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_mac      = (agt.indexOf("mac")!=-1);
var is_gecko    = (agt.indexOf('gecko') != -1);
if (((is_mac) && (!is_gecko)) || ((is_win) && (is_ie) && (!is_ie5_5up))) {
	_ValidateEmailStripRegExp = new RegExp('^(([^"\]|\.)*("([^"\]|\.)*"([^"\]|\.)*)*)\(([^()\]|\.)*\)');
} else {
	_ValidateEmailStripRegExp = new RegExp('^((?:[^"\]|\.)*(?:"(?:[^"\]|\.)*"(?:[^"\]|\.)*)*)\((?:[^()\]|\.)*\)');
}
var _ValidateEmailString = '';
function __ValidateEmail() {
	if (((is_mac) && (!is_gecko)) || ((is_win) && (is_ie) && (!is_ie5_5up))) {
		// macIE does not support a full set of regex
		var lwsp = '((\\r\\n)?[ \\t])';
		var specials = '()<>@,;:\\\\".\\[\\]';
		var controls = '\\000-\\031';
		var dtext = '[^\\[\\]\\r\\\\]';
		var domain_literal = '\\[(' + dtext + '|\\\\.)*\\]' + lwsp + '*';
		var quoted_string = '"([^\\\"\\r\\\\]|\\\\.|' + lwsp + ')*"' + lwsp + '*';
		var atom = '[^' + specials + ' ' + controls + ']+(' + lwsp + '+)';
		var word = '(' + atom + '|' + quoted_string + ')';
		var localpart = word + '(\\.' + lwsp + '*' + word + ')*';
		var sub_domain = '(' + atom + '|' + domain_literal + ')';
		var domain = sub_domain + '(\\.' + lwsp + '*' + sub_domain + ')*';
		var addr_spec = localpart + '\@' + lwsp + '*' + domain;
		var phrase = word + '*';
		var route = '(\@' + domain + '(,\@' + lwsp + '*' + domain + ')*:' + lwsp + '*)';
		var route_addr = '\\<' + lwsp + '*' + route + '?' + addr_spec + '\\>' + lwsp + '*';
		var mailbox = '(' + addr_spec+ '|' + phrase + route_addr + ')';
		var group = phrase + ':' + lwsp + '*(' + mailbox + '(,\\s*' + mailbox + ')*)?;\\s*';
		var address = '(' + mailbox + '|' + group + ')';
		return lwsp + '*' + address;
	} else {
		var lwsp = '(?:(?:\\r\\n)?[ \\t])';
		var specials = '()<>@,;:\\\\".\\[\\]';
		var controls = '\\000-\\031';
		var dtext = '[^\\[\\]\\r\\\\]';
		var domain_literal = '\\[(' + dtext + '|\\\\.)*\\]' + lwsp + '*';
		var quoted_string = '"(?:[^\\\"\\r\\\\]|\\\\.|' + lwsp + ')*"' + lwsp + '*';
		var atom = '[^' + specials + ' ' + controls + ']+(?:' + lwsp + '+|(?=[\\["' + specials + ']))';
	// should have been
	//	var atom = '[^' + specials + ' ' + controls + ']+(?:' + lwsp + '+|\\Z|(?=[\\["' + specials + ']))';
	// except ECMAscript v3 does not support \Z - it should not give any problems in real life...
		var word = '(?:' + atom + '|' + quoted_string + ')';
		var localpart = word + '(?:\\.' + lwsp + '*' + word + ')*';
		var sub_domain = '(?:' + atom + '|' + domain_literal + ')';
		var domain = sub_domain + '(?:\\.' + lwsp + '*' + sub_domain + ')*';
		var addr_spec = localpart + '\@' + lwsp + '*' + domain;
		var phrase = word + '*';
		var route = '(?:\@' + domain + '(?:,\@' + lwsp + '*' + domain + ')*:' + lwsp + '*)';
		var route_addr = '\\<' + lwsp + '*' + route + '?' + addr_spec + '\\>' + lwsp + '*';
		var mailbox = '(?:' + addr_spec+ '|' + phrase + route_addr + ')';
		var group = phrase + ':' + lwsp + '*(?:' + mailbox + '(?:,\\s*' + mailbox + ')*)?;\\s*';
		var address = '(?:' + mailbox + '|' + group + ')';
		return lwsp + '*' + address;
	}
}
_ValidateEmailString = __ValidateEmail();
var _ValidateEmailStringRegExp = new RegExp(_ValidateEmailString);
function _ValidateEmailStrip(value) {
	var counter = 0;
	while ((counter < 100) && (value.match(_ValidateEmailStripRegExp))) {
		counter++;
		if (value == RegExp.$1) {
			counter = 100;
		} else {
			value = value.replace(RegExp.$1);
		}
	}
	return value;
}
function ValidateForm(formelement, headfield, namefield, emailfield) {
	var head;
	var name;
	var email;
	if (formelement[headfield]) {
		head  = formelement[headfield].value;
	}
	if (formelement[namefield]) {
		name  = formelement[namefield].value;
	}
	if (formelement[emailfield]) {
		email = formelement[emailfield].value;
	}
	head  =  head.replace(/^\s+/, '');
	head  =  head.replace(/\s+$/, '');
	name  =  name.replace(/^\s+/, '');
	name  =  name.replace(/\s+$/, '');
	email = email.replace(/^\s+/, '');
	email = email.replace(/\s+$/, '');
	email = _ValidateEmailStrip(email);
	var error  = false;
	var errstr = '';
	if (head == '') {
		error = true;
		errstr = errstr + 'Du mangler at indtaste en overskrift.\n';
	}
	if (name == '') {
		error = true;
		errstr = errstr + 'Du mangler at indtaste dit navn.\n';
	}
	if (!(email.match(_ValidateEmailStringRegExp))) {
		error = true;
		errstr = errstr + 'Du mangler at indtaste en gyldig email adresse.\n';
	}
	if (error) {
		alert(errstr);
		return false;
	} else {
		return true;
	}
}
