function validate(formname, table, domain) {
	//initialize variables
	var docform = document.getElementById(formname);
	var msg = "";
	
	//fetch variable values from form
	var zip = docform.zipCode.value;
	var sid = docform.sid.value;
	var curl = docform.curl.value;
	var from = docform.from.value;
	var psv = docform.psv.value;
	
	//fetch vendor by pinging checkzip.php
	//set alert message if 'Invalid' is returned
	if (window.XMLHttpRequest) {
		xhttp=new XMLHttpRequest()
	} else {
		xhttp=new ActiveXObject("Microsoft.XMLHTTP")
	}
	var url = "/quotelistings/checkzip.php?zipcode=" + zip;
	url = url + "&table=" + table;
	url = url + "&sid=" + sid;
	url = url + "&curl=" + curl;
	url = url + "&from=" + from;
	url = url + "&psv=" + psv;
	if (docform.c2) {
		url = url + "&c2=" + docform.c2.value;
	}
	if (docform.c3) {
		url = url + "&c3=" + docform.c3.value;
	}
	if (domain) {
		url = url + "&domain=" + domain;
	}
	xhttp.open("GET",url,false);
	xhttp.send("");
	xmlDoc=xhttp.responseXML;
	var state = xmlDoc.getElementsByTagName("state")[0].childNodes[0].nodeValue;
	var sidvalue = xmlDoc.getElementsByTagName("sidvalue")[0].childNodes[0].nodeValue;
	var urlpath = unescape(xmlDoc.getElementsByTagName("url")[0].childNodes[0].nodeValue);
	var destination = unescape(xmlDoc.getElementsByTagName("destination")[0].childNodes[0].nodeValue);
	var vendor = unescape(xmlDoc.getElementsByTagName("vendor")[0].childNodes[0].nodeValue);
	if (state == 'Invalid') {
		var msg = "Please enter a valid zipcode. \n";
	}
	
	//pass or fail the form		
	if (msg != "") { //if msg is set then validation has failed. Pop msg and retun false.
		alert(msg);			
		return false;				
	} else { //if msg is blank, then validation has passed. Open LRS window and return true.
		if (urlpath != 'NA') {
			window.open(urlpath);
		}
		docform.vendor.value = vendor;
		docform.destination.value = destination;
		docform.sid.value = sidvalue;
	}		
}
