function mailafriend(url)
{
	win = window.open(url,'mailfriend','top=100, left=100, height=400, width=500, status=no,toolbar=no,location=no,menu=no,resizeable=no,scrollbars=no');
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

		var _FilterFields = new Object;
		var _ValidateFormErrorHeader = 'Der var fejl i din indtastning:\n\n';
		var _ValidateFormErrorTail = '\nRet i din indtastning og pr' + String.fromCharCode(248) + 'v igen';
		var _ValidateFormErrorIncorrect = ' er ikke udfyldt korrekt\n';
		var _ValidateFormErrorTooFew = ' er der ikke valgt nok af\n';
		var _ValidateFormErrorTooMany = ' er der valgt for mange af\n';
		function _ValidateForm(form) {
			var names = new Object;
			for (var i = 0; i < form.elements.length; i++) {
				if (form.elements[i].name) {
					names[form.elements[i].name] = form.elements[i];
				}
			}
			var errors = new Array;
			for (var name in names) {
				var content = _FieldContent(names[name]);
				if (_FilterFields[name]) {
					var min = _FilterFields[name].min;
					var max = _FilterFields[name].max;
					var filter = _FilterFields[name].filter;
					if ((min > 0) && (content.length < min)) {
						errors[errors.length] = {field: name, error: 1};
					} else if ((max > 0) && (content.length > max)) {
						errors[errors.length] = {field: name, error: 2};
					} else if ((filter) && (!(_ValidateField(filter, content)))) {
						errors[errors.length] = {field: name, error: 3, filter: filter};
					}
				}
			}
			if (errors.length) {
				var text = _ValidateFormErrorHeader;
				for (var i = 0; i < errors.length; i++) {
					if (errors[i].error == 1) {
						text = text + _FilterFields[errors[i].field].name + _ValidateFormErrorTooFew;
					} else if (errors[i].error == 2) {
						text = text + _FilterFields[errors[i].field].name + _ValidateFormErrorTooMany;
					} else if (errors[i].error == 3) {
						text = text + _FilterFields[errors[i].field].name + _ValidateFormErrorIncorrect;
					}
				}
				text = text + _ValidateFormErrorTail;
				alert(text);
				return false;
			} else {
				return true;
			}
		}
		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 _ValidateField(filter, content) {
			var value = content[0];
			value = value.replace(/^\s+/, '');
			value = value.replace(/\s+$/, '');
			if (filter == 1) {
				// e-mail address
				value = _ValidateEmailStrip(value);
				if (value.match(_ValidateEmailStringRegExp)) {
					return true;
				} else {
					return false;
				}
			} else if (filter == 2) {
				// number
				var testValue = parseFloat(value);
				if (isNaN(testValue)) {
					return false;
				} else if (testValue != value) {
					return false;
				} else {
					return true;
				}
			} else if (filter == 3) {
				// integer
				var testValue = parseInt(value, 10);
				if (isNaN(testValue)) {
					return false;
				} else if (testValue != value) {
					return false;
				} else {
					return true;
				}
			} else if (filter == 4) {
				// length = 2
				if (value.length == 2) {
					return true;
				} else {
					return false;
				}
			} else if (filter == 5) {
				// length = 4
				if (value.length == 4) {
					return true;
				} else {
					return false;
				}
			} else if (filter == 6) {
				// length = 8
				if (value.length == 8) {
					return true;
				} else {
					return false;
				}
			} else {
				return true;
			}
		}
		function _FieldContent(field) {
			var content = new Array;
			if ((field.type == 'text') || (field.type == 'textarea')) {
				if ((field.value != "") && (field.value.match(/\S/))) {
					content[0] = field.value;
				}
			} else if (field.type == 'checkbox') {
				var name = field.name;
				var form = field.form;
				for (var i = 0; i < form.elements.length; i++) {
					var element = form.elements[i];
					if ((element.name == name) && (element.type == 'checkbox')) {
						if (element.checked) {
							content[content.length] = element.value;
						}
					}
				}
			} else if (field.type == 'radio') {
				var name = field.name;
				var form = field.form;
				for (var i = 0; i < form.elements.length; i++) {
					var element = form.elements[i];
					if ((element.name == name) && (element.type == 'radio')) {
						if (element.checked) {
							content[content.length] = element.value;
							i = form.elements.length;
						}
					}
				}
			} else if (field.type == 'select-one') {
				if (field.selectedIndex > -1) {
					for (var i = field.selectedIndex; i < field.options.length; i++) {
						var option = field.options[i];
						if (option.selected) {
							content[content.length] = option.value;
							i = field.options.length;
						}
					}
				}
			} else if (field.type == 'select-multiple') {
				if (field.selectedIndex > -1) {
					for (var i = 0; i < field.options.length; i++) {
						var option = field.options[i];
						if (option.selected) {
							content[content.length] = option.value;
						}
					}
				}
			}
			return content;
		}
		function _ShowRadioSubFields(element, list, otherlist) {
			for (var i = 0; i < otherlist.length; i++) {
				var subfield = document.getElementById(otherlist[i]);
				if (subfield) {
					subfield.style.display = 'none';
				}
			}
			if (element.checked) {
				for (var i = 0; i < list.length; i++) {
					var subfield = document.getElementById(list[i]);
					if (subfield) {
						subfield.style.display = 'inline';
					}
				}
			}
		}
		function _ShowCheckboxSubFields(element, list, otherlist) {
			for (var i = 0; i < otherlist.length; i++) {
				var subfield = document.getElementById(otherlist[i]);
				if (subfield) {
					subfield.style.display = 'none';
				}
			}
			if (element.checked) {
				for (var i = 0; i < list.length; i++) {
					var subfield = document.getElementById(list[i]);
					if (subfield) {
						subfield.style.display = 'inline';
					}
				}
			}
		}
