
function getListingsUsingXML(postalLookupCode) {
	var url = '/maps/scripts/getContractorsAsXML.aspx?postal=' + postalLookupCode;

	$.ajax({
		type: "POST",
		url: url,
		data:"",
		success: processListingsXMLData
	});
}

function processListingsXMLData(msg) {
	var objXML;
	var strResults = "";
	var id, company;
	var add1, add2, city, state, zip, phone, email, url, info, lat, lng, distance, certTechs;
	var moreInfo, specialOffer, certPercent
	//alert(msg);
	//alert(msg.documentElement.getElementsByTagName('result').length)
	objXML = msg.documentElement;
	try {
	    var elementsLength = objXML.getElementsByTagName('result').length;
	    var printedItems = 0;
		strResults = "";	
		for (var i = 0; i < elementsLength; i++) {
			id = getXMLTagData(objXML, 'C3Num', i);  
			company = getXMLTagData(objXML, 'Company', i);			
			add1 = getXMLTagData(objXML, 'Address1', i);
			add2 = getXMLTagData(objXML, 'Address2', i);
			city = getXMLTagData(objXML, 'City', i);
			state = getXMLTagData(objXML, 'State', i);
			zip = getXMLTagData(objXML, 'ZipCode', i);
			phone = getXMLTagData(objXML, 'Phone', i);
			email = getXMLTagData(objXML, 'Email', i);
			url = getXMLTagData(objXML, 'Web', i);
			info = getXMLTagData(objXML, 'C3Desc', i);
			certPercent = getXMLTagData(objXML, 'C3Pert', i);
			lat = getXMLTagData(objXML, 'varLat', i); 
			lng = getXMLTagData(objXML, 'varLong', i);
			distance = getXMLTagData(objXML, 'Distance', i);
			certTechs = getXMLTagData(objXML, 'C3Cert', i);
			moreInfo = getXMLTagData(objXML, 'C3More', i);
			specialOffer = getXMLTagData(objXML, 'C3Offer', i);
			//alert(company);
			//alert(company);
			//alert(add1 + add2 + city + state + zip );
			//alert(phone);
			//alert(email);
			//alert(url);
			//alert(info);
			//alert(lat);
			//alert("certPercent = " + certPercent);
			//alert(certPercent >= 50);
			if (certPercent >= 50) {
			    printedItems += 1;
				if (certPercent >= 80){
				    addPointToMarkerList(arrAllPins, qualityGroupID, 'quality', lat, lng, id, company, add1, add2, city, state, zip, phone, email, url, info, certPercent, distance, certTechs, moreInfo, specialOffer);
				} else{
				addPointToMarkerList(arrAllPins, certifiedGroupID, 'certified', lat, lng, id, company, add1, add2, city, state, zip, phone, email, url, info, certPercent, distance, certTechs, moreInfo, specialOffer);
				}
				//Save our minimum and maximum bounding box
				if (lat < minGroupLat){
					minGroupLat = lat;
				}			
				if (lat > maxGroupLat){
					maxGroupLat = lat;
				}			
				if (lng < minGroupLng){
					minGroupLng = lng;
				}			
				if (lng > maxGroupLng){
					maxGroupLng = lng;
				}			
	
				strResults += company + "<br>";
            }
        }
        
        //Check if we need to run it again
        var radius = objXML.getElementsByTagName('params')[0].firstChild.attributes.getNamedItem("radius").nodeValue;
        var postal = objXML.getElementsByTagName('params')[0].firstChild.attributes.getNamedItem("postal").nodeValue;
        //alert(radius); alert(postal);
        if (printedItems <= 0 && radius < 200) {
            getListingsUsingXML(eval(parseInt(radius) + 50), postal);
		    return;
		}

		//Initialize the map by setting an initial center so we have a live map object to work with
		map.setCenter(new GLatLng(intClientLat, intClientLng), 5);
		
		addMarkerGroupToMap(arrAllPins, qualityGroupID);
		addMarkerGroupToMap(arrAllPins, certifiedGroupID);
		
		populateContractorList(arrAllPins);
		
		//Add NATE to map
		addPointToMarkerList(arrAllPins, NATEGroupID, 'NATE', intClientLat, intClientLng, "0", "NATE", "2111 Wilson Boulevard", "#510", "Arlington", "VA", "22201", "(877) 420-NATE", "", "http://www.natex.org", "", "1", "0", "0", "", "")
		addMarkerGroupToMap(arrAllPins, NATEGroupID);

		//Display number found
		document.getElementById("intro").style.display = "block";
		document.getElementById("numFound").innerHTML = arrAllPins[qualityGroupID].markers.length + arrAllPins[certifiedGroupID].markers.length;

		//For all the pushpins on the map get the bounding box and zoom to the mid point
		//I am doing this here because I know the markers have been populated by this point
		centerMapOnBoundingMinMaxLatLngs(minGroupLat, maxGroupLat, minGroupLng, maxGroupLng);



    } catch (e) {

        //Display number found
        document.getElementById("intro").style.display = "block";
        document.getElementById("numFound").innerHTML = 0;
		
        alert("We are unable to process your request. Please verify your ZIP/postal code or try again later.");
        
		//alert(e);
	}
}

function getXMLTagData(objXML, name, arrValue){
	var strData = "";
	if (objXML.getElementsByTagName(name)[arrValue] != undefined && objXML.getElementsByTagName(name)[arrValue].firstChild != null){
		strData = objXML.getElementsByTagName(name)[arrValue].firstChild.data;
	}
	return strData;
}

