//
// Submit an HTTP Request for a PropertyList XML file
//

var req;
var propArray = new Array();
var properties = new Array();
var parentCallback = null;
var cog = new Array();
var cat = new Array();

function xmlRequest( city, state, area, callback ) {
   // alert("city["+city+"] state["+state+"] area["+area+"]");
   var url = virtualDir + "/pl/" + state + "/" + city
   if ( area != "" )
       url = url + "/Area/" + area
   if (typeof XMLHttpRequest != "undefined") {
       req = new XMLHttpRequest();
   } else if (window.ActiveXObject) {
       req = new ActiveXObject("Microsoft.XMLHTTP");
   }
   parentCallback = callback;
   req.open("GET", url, true);
   req.onreadystatechange = xmlCallback;
   req.send(null);
}

function xmlCallback() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        var nProps = req.responseXML.getElementsByTagName("total")[0].childNodes[0].nodeValue;
        if ( nProps > 0 ) {
            // alert(req.responseText);
            var countyName = req.responseXML.getElementsByTagName("county")[0].childNodes[0].nodeValue;
            var cityName   = req.responseXML.getElementsByTagName("city")[0].childNodes[0].nodeValue;
            var stateCode  = req.responseXML.getElementsByTagName("state")[0].childNodes[0].nodeValue;
            var props      = req.responseXML.getElementsByTagName("pl");
            for ( var i=0; i<props.length; i++ ) {
                var propStr = props[i].childNodes[0].nodeValue;
                var p       = propStr.split(",");
                p[0] = delquote(p[0]);
                p[1] = cityName + ", " + stateCode;
                p[2] = delquote(p[2]);
                propArray[i] = p;
                properties[i] = new Property(propArray[i]);
            }
            //
            // Get Center of Gravity for property list
            cog[0] = 0.0;
            cog[1] = 0.0;
            var nLocated = 0;
            for ( var i=0; i<properties.length; i++ ) {
                var p = properties[i];
                if ( p.p_lat == 0.0 || p.p_long == 0.0 )
                    continue;
		    //
		    // NH   42.6 -> 45.2    -72.5 -> -70.5
		    // MA   41.2 -> 42.7    -73.5 -> -69.7
		    if ( p.p_lat < 41.2 || p.p_lat > 45.2 || p.p_long < -73.5 || p.p_long > -69.7 )
			  continue;
		    //
                cog[0] += Number(p.p_lat);
                cog[1] += Number(p.p_long);
                nLocated++;
            }
            if ( nLocated > 0 )
            {
                cog[0] /= nLocated;
                cog[1] /= nLocated;
            }
            //
            // Get Category Counts
            for ( var i=0; i<14; i++ )
                cat[i] = 0;
            for ( var i=0; i<properties.length; i++ ) {
                var p = properties[i];
                if ( p.p_cat.indexOf( "A" ) >= 0 ) cat[0]++;
                if ( p.p_cat.indexOf( "B" ) >= 0 ) cat[1]++;
                if ( p.p_cat.indexOf( "C" ) >= 0 ) cat[2]++;
                if ( p.p_cat.indexOf( "D" ) >= 0 ) cat[3]++;
                if ( p.p_cat.indexOf( "E" ) >= 0 ) cat[4]++;
                if ( p.p_cat.indexOf( "F" ) >= 0 ) cat[5]++;
                if ( p.p_cat.indexOf( "G" ) >= 0 ) cat[6]++;
                if ( p.p_cat.indexOf( "H" ) >= 0 ) cat[7]++;
                if ( p.p_cat.indexOf( "I" ) >= 0 ) cat[8]++;
                if ( p.p_cat.indexOf( "J" ) >= 0 ) cat[9]++;
                if ( p.p_cat.indexOf( "K" ) >= 0 ) cat[10]++;
                if ( p.p_cat.indexOf( "L" ) >= 0 ) cat[11]++;
                if ( p.p_cat.indexOf( "M" ) >= 0 ) cat[12]++;
                if ( p.p_cat.indexOf( "N" ) >= 0 ) cat[13]++;
            }
            // var elm_a = document.getElementById("cc_a"); elm_a.innerHTML = cat[0] + '';
            var elm_b = document.getElementById("cc_b"); elm_b.innerHTML = cat[1] + '';
            var elm_c = document.getElementById("cc_c"); elm_c.innerHTML = cat[2] + '';
            var elm_d = document.getElementById("cc_d"); elm_d.innerHTML = cat[3] + '';
            var elm_e = document.getElementById("cc_e"); elm_e.innerHTML = cat[4] + '';
            var elm_f = document.getElementById("cc_f"); elm_f.innerHTML = cat[5] + '';
            var elm_g = document.getElementById("cc_g"); elm_g.innerHTML = cat[6] + '';
            var elm_h = document.getElementById("cc_h"); elm_h.innerHTML = cat[7] + '';
            var elm_i = document.getElementById("cc_i"); elm_i.innerHTML = cat[8] + '';
            var elm_j = document.getElementById("cc_j"); elm_j.innerHTML = cat[9] + '';
            var elm_k = document.getElementById("cc_k"); elm_k.innerHTML = cat[10] + '';
            // var elm_l = document.getElementById("cc_l"); elm_l.innerHTML = cat[11] + '';
            // var elm_m = document.getElementById("cc_m"); elm_m.innerHTML = cat[12] + '';
            // var elm_n = document.getElementById("cc_n"); elm_n.innerHTML = cat[13] + '';
            //
            // Property Type subtotals
            var csf = Number(req.responseXML.getElementsByTagName("csf")[0].childNodes[0].nodeValue);
            var cmf = Number(req.responseXML.getElementsByTagName("cmf")[0].childNodes[0].nodeValue);
            var ccc = Number(req.responseXML.getElementsByTagName("ccc")[0].childNodes[0].nodeValue);
            var cld = Number(req.responseXML.getElementsByTagName("cld")[0].childNodes[0].nodeValue);
            filter.setSubTotals(csf, cmf, ccc, cld);
        }
        //
        // Parent Callback
        if ( parentCallback != null )
            parentCallback();
      }
    }
}

function delquote(str){return (str=str.replace(/["']{1}/gi,""));}
