//<script>

var redirects=new Object();
var checks={quoterequest:{},hx_formmail_0:{},};
var submitter = new Object(), xh;

function hxformmail(form) {
	//	return true;
	setLoadingDisplay(form,true);
	submitter.disabled=true;
	var e=getFormErrors(form);
	showErrors(form,e);
	if(e.length) {
		return false;
	}
	try {xh=new XMLHttpRequest()}
	catch(e) {
		try {xh=new ActiveXObject('Msxml2.XMLHTTP')}
		catch(e) {
			try {xh=new ActiveXObject('Microsoft.XMLHTTP')}
			catch(e) {
				return true;
			}	
		}
	}
	xh.open("POST",'/hx/modules/formmail.php?hx_fm=ajax',true);
	xh.onreadystatechange=checkReadyState;
	xh.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh.send(buildPostBody(form));
	return false;
}

function checkReadyState() {
	if(xh.readyState!=4) return false;
	var r=xh.responseText;
	//alert(r);
	if(!r.match(/\n/)) {
		formSuccess(r.replace(/(^\s+|\s+$)/,''));
	} else {
		var lines=r.split("\n");
		var form=document.getElementById(lines[0]);
		if(lines[1]) var iv=lines[1].split(',');
		var e=lines[2].split('|');
		showErrors(form,e);
		//for(f in checks[form.getAttribute('id')]) setInvalidClass(f,false);
		if(iv) for(var i=0;i<iv.length;i++) setInvalidClass(iv[i],true);
	}
}

function formSuccess(formname) {
	setLoadingDisplay(document.getElementById(formname),false);
	var resp=document.getElementById(formname+'_response');
	if(resp) {
		resp.style.display='';
		document.getElementById(formname+'_main').style.display='none';	
	} else if(redirects[formname]) document.location=redirects[formname];
}

function showErrors(form,e) {
	if(e.length) {
		setLoadingDisplay(form,false);
		submitter.disabled=false;
	}
	var ediv=document.getElementById(form.getAttribute('id')+'_errors');
	if(ediv) {
		ediv.style.display=e.length?'':'none';
		var list=document.getElementById(form.getAttribute('id')+'_errorlist');
		list.innerHTML='';
		for(var i=0;i<e.length;i++) {
			list.innerHTML+='<li>'+e[i]+'</li>';
		}
	} else if(e.length)  alert(e.join("\n"));	
}

function getFormErrors(form) {
	var e=Array(), ret=Array();
	var fields=checks[form.getAttribute('id')];
	for(f in fields) {
		var r = fields[f].match(/^.(.+)[^a-z]([a-z]*)$/i);
		var v = form[f].value.match(new RegExp(r[1],r[2]));
		if(!v) e[e.length]=f;
		setInvalidClass(f,!v);
	}
	if(e.length) {
		for(var i=0;i<e.length;i++) e[i]=getLabel(form[e[i]]);
		var last=e[e.length-1];
		var msg;
		e.length--;
		if(e.length) msg='The '+e.join(', ')+' and '+last+' fields are invalid.';
		else msg = 'The '+last+' field is invalid';
		ret[0]=msg;
	}
	return ret;
}

function getLabel(element) {
	var labels=document.getElementsByTagName('label');
	for(var i=0;i<labels.length;i++) if(labels[i].getAttribute('for')==element.getAttribute('id')) return labels[i].innerHTML.replace(/(^\s+|[-:;,.=\s]*$)/,'');
	return element.name;
}

function buildPostBody(form) {
	var ret='';
	var tags = ['input','select','textarea'];
	for(var t=0;t<tags.length;t++) {
		var n=form.getElementsByTagName(tags[t]);
		for(i=0;i<n.length;i++) {
			type=n[i].getAttribute('type');
			if(type) {
				type=type.toLowerCase();
				if(!type.match(/(checkbox|radio|submit|reset)/i)||n[i].checked)
					ret+='&'+n[i].name+'='+encodeURIComponent(n[i].value);
			} else ret+='&'+n[i].name+'='+encodeURIComponent(n[i].value);
		}
	}
	if(ret) ret=ret.substr(1);
	return ret;
}
function reloadCaptcha(img) {
	if(!submitter.disabled) img.src = img.src.replace(/(^|&|&amp;)r=\d{7}(?=&|$)/ig, "$1r="+Math.floor(1000000+Math.random()*9000000));
}
function setInvalidClass(name,invalid) {
	if(!name) return false;
	var items=Array();
	var inputs=document.getElementsByName(name);
	for(var i=0;i<inputs.length;i++) items[i]=inputs[i];
	var labels=document.getElementsByTagName('label');
	for(i=0;i<labels.length;i++) if(labels[i].getAttribute('for')==items[0].getAttribute('id')) items[items.length]=labels[i];
	for(i=0;i<items.length;i++) {
		var c=Array(), n=Array();
		if(items[i].className) c=items[i].className.split(' ');
		var found=false;
		for(var j=0;j<c.length;j++) {
			if(c[j].toLowerCase()=='invalid') {
				found=true;
				if(invalid) n[n.length]='invalid';	
			} else n[n.length]=c[j];
		}
		if(invalid&&!found) n[n.length]='invalid';
		items[i].className=n.join(' ');
	}
}
function setLoadingDisplay(element,loading) {
	var all=element.getElementsByTagName('*');
	for(var i=0;i<all.length;i++) if(all[i].className) {
		if		(all[i].className.match(/(^|\s)loading(\s|$)/i))	all[i].style.display=loading?'':'none';
		else if	(all[i].className.match(/(^|\s)notloading(\s|$)/i))	all[i].style.display=loading?'none':'';
	}
}

// </script> 