function sendMail() {
	var serr = '';
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	var telPattern = /^\d{6,}$/
	var strippedPhone = document.qrf.telephone.value.replace(/[\(\)\.\-\ +]/g, '')
	var messagePattern = /.{2,}\ .{1,}/

	if (!document.qrf.contact.value && !document.qrf.company.value) serr += document.qrf.errorCompany.value+'<BR>';
	if (!emailPattern.test(document.qrf.email.value)) serr += document.qrf.errorEmail.value+'<BR>';
	if (!telPattern.test(strippedPhone)) serr += document.qrf.errorPhone.value+'<BR>';
	if (!messagePattern.test(document.qrf.message.value)) serr += document.qrf.errorMessage.value+'<BR>';
	
	if (serr!='') {
		// set title, content and close image for message
		document.getElementById('confirmtitle').innerHTML = document.qrf.errorSend.value;
		document.getElementById('confirmcontent').innerHTML = serr;
		document.getElementById('closeimg').src = '/ERROR.gif';
		
		// display error block for 5 seconds
		document.getElementById('confirm').style.display = 'block';
		setTimeout("document.getElementById('confirm').style.display = 'none'", 5000)
		return false;
	} else {
		// validate email existence and email
		if (document.qrf.optin.checked||document.qrf.optin.type=="hidden") {
			optin = 1
		} else {
			optin = 0;
		}

		var message = '';
		var mob = document.qrf.message
		if (!mob.type) {
			for (i=0;i<mob.length;++ i) {
				message+=getMessage(mob[i])
			}
		} else {
			message+=getMessage(mob)
		}

		// get site and page from url
		var purl = document.referrer.replace(/http:\/\//i, "").replace(/www./i, "");
		var site = Left(purl, purl.indexOf('/'));
		var page = purl.replace(site, '');
		
		var req = Spry.Utils.loadURL('POST', 
		'/send.asp', 
		false, 
		emailOK,
		{ postData: 'page='+page+
			'&site='+site+
			'&useripaddress='+document.qrf.useripaddress.value+
			'&company='+encodeURIComponent(document.qrf.company.value)+
			'&contact='+encodeURIComponent(document.qrf.contact.value)+
			'&language='+document.qrf.language.value+
			'&email='+encodeURI(document.qrf.email.value)+
			'&telephone='+encodeURIComponent(document.qrf.telephone.value)+
			'&address='+encodeURIComponent(document.qrf.address.value)+
			'&message='+encodeURIComponent(message)+
			'&optin='+optin+
			'&isclient=0'+
			'&title='+encodeURI(document.qrf.title.value)+
			'&office='+encodeURI(document.qrf.office.value)+
			'&mailserver='+encodeURI(document.qrf.mailserver.value)+
			'&hexmailcheck='+encodeURI(document.qrf.hexmailcheck.value)+
			'&mailto='+encodeURI(document.qrf.mailto.value)+
			'&odbdsn='+encodeURI(document.qrf.odbdsn.value),
		headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, errorCallback: emailError });
		return true;
	}
}

function emailOK() {
	document.getElementById('confirmtitle').innerHTML = document.qrf.successSend.value;
	document.getElementById('confirmcontent').innerHTML = document.qrf.successReason.value;
	document.getElementById('closeimg').src = '/OK.gif';
	document.getElementById('confirm').style.display = 'block';
	setTimeout("document.getElementById('confirm').style.display = 'none'", 5000)
	
	// clear formfields
	document.qrf.company.value = '';
	document.qrf.contact.value = '';
	document.qrf.email.value = '';
	document.qrf.telephone.value = '';
	document.qrf.message.value = '';
	document.qrf.optin.checked = false;
	
}

function emailError() {
	document.getElementById('confirmtitle').innerHTML = document.qrf.errorSend.value;
	document.getElementById('confirmcontent').innerHTML = document.qrf.errorReason.value;
	document.getElementById('closeimg').src = '/ERROR.gif';
	document.getElementById('confirm').style.display = 'block';
	setTimeout("document.getElementById('confirm').style.display = 'none'", 5000)
}

function Left(str, n) {
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

function getMessage(mo) {
	var msg='';
	switch (mo.type) {
		case 'text' :
			if (mo.value.length>0) {msg+=mo.value+'\n'}
			break
		case 'textarea' :
			if (mo.value.length>0) {msg+=mo.value+'\n'}
			break
		case 'radio' :
			if (mo.checked) {msg+=mo.value+'\n'}
			break
		case 'checkbox' :
			if (mo.checked) {msg+=mo.value+'\n'}
			break
		case 'select-one' :
			if (mo.value.length>0) {msg+=mo.options[mo.selectedIndex].text+'\n';}
			break
		case 'select-multiple' :
			for (var j = 0; j < mo.length; j++) {
				if (mo.options[j].selected) {msg+=mo.options[j].text+'\n'}
			}
			break
		case 'hidden' :
			if (mo.value.length>0) {msg+=mo.value+'\n'}
			break
		case 'image' :
			if (mo.src.length>0) {msg+=mo.src+'\n'}
			break
		case 'file' :
			if (mo.value.length>0) {msg+=mo.value+'\n'}
			break
	}
	return msg
}