//<![CDATA[  
function load() {
 if (GBrowserIsCompatible()) {
var polys = [];
var labels = [];
var dpfs = [];

var states = [];
states["Alabama"] = "AL-Alabama";
states["Alaska"] = "AK-Alaska";
states["Arizona"] = "AZ-Arizona";
states["Arkansas"] = "AR-Arkansas";
states["California"] = "CA-California";
states["Colorado"] = "CO-Colorado";
states["Connecticut"] = "CT-Connecticut";
states["Delaware"] = "DE-Delaware";
states["District Of Columbia"] = "DC-District Of Columbia";
states["Florida"] = "FL-Florida";
states["Georgia"] = "GA-Georgia";
states["Hawaii"] = "HI-Hawaii";
states["Idaho"] = "ID-Idaho";
states["Illinois"] = "IL-Illinois";
states["Indiana"] = "IN-Indiana";
states["Iowa"] = "IA-Iowa";
states["Kansas"] = "KS-Kansas";
states["Kentucky"] = "KY-Kentucky";
states["Louisiana"] = "LA-Louisiana";
states["Maine"] = "ME-Maine";
states["Maryland"] = "MD-Maryland";
states["Massachusetts"] = "MA-Massachusetts";
states["Michigan"] = "MI-Michigan";
states["Minnesota"] = "MN-Minnesota";
states["Mississippi"] = "MS-Mississippi";
states["Missouri"] = "MO-Missouri";
states["Montana"] = "MT-Montana";
states["Nebraska"] = "NE-Nebraska";
states["Nevada"] = "NV-Nevada";
states["New Hampshire"] = "NH-New Hampshire";
states["New Jersey"] = "NJ-New Jersey";
states["New Mexico"] = "NM-New Mexico";
states["New York"] = "NY-New York";
states["North Carolina"] = "NC-North Carolina";
states["North Dakota"] = "ND-North Dakota";
states["Ohio"] = "OH-Ohio";
states["Oklahoma"] = "OK-Oklahoma";
states["Oregon"] = "OR-Oregon";
states["Pennsylvania"] = "PA-Pennsylvania";
states["Rhode Island"] = "RI-Rhode Island";
states["South Carolina"] = "SC-South Carolina";
states["South Dakota"] = "SD-South Dakota";
states["Tennessee"] = "TN-Tennessee";
states["Texas"] = "TX-Texas";
states["Utah"] = "UT-Utah";
states["Vermont"] = "VT-Vermont";
states["Virginia"] = "VA-Virginia";
states["Washington"] = "WA-Washington";
states["West Virginia"] = "WV-West Virginia";
states["Wisconsin"] = "WI-Wisconsin";
states["Wyoming"] = "WY-Wyoming";

// === Algorithm from http://alienryderflex.com/polygon/ 
GPolygon.prototype.Contains = function(point) { 
var j=0;
var oddNodes = false; 
var x = point.lng();
var y = point.lat(); 
for (var i=0; i < this.getVertexCount(); i++) {
 j++;
 if (j == this.getVertexCount()) {j = 0;}
if (((this.getVertex(i).lat() < y) && (this.getVertex(j).lat() >= y))
 || ((this.getVertex(j).lat() < y) && (this.getVertex(i).lat() >= y))) {
  if ( this.getVertex(i).lng() + (y - this.getVertex(i).lat()) 
 /  (this.getVertex(j).lat()-this.getVertex(i).lat())
*  (this.getVertex(j).lng() - this.getVertex(i).lng())<x ) {
 oddNodes = !oddNodes
}
}
}
return oddNodes;
}
var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.addControl(new GOverviewMapControl(),
               new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(5, 5)));
scale = new GScaleControl();
map.addControl(scale);
map.setCenter(new GLatLng(37.60,-93.72),4);

var prePolys = null;
GEvent.addListener(map, "click", function(overlay,point) {
if (point) {
for (var i=0; i<polys.length; i++) {
if (polys[i].Contains(point)) {
// here you can add your own html code
// labels[i] is the state name coming from xml
// dpfs[i] is some message in the xml, you can change it yourself
// if you want more infomation from the xml, just add it
// and add a new array for it with javascript
//var style = new GPolyStyleOptions;
//style.color = '#000000';
var style = new Object;

// hightlight
if (prePolys == null || prePolys != polys[i]) {
	style.color = '#00ff00'; // highlight color
	polys[i].setStrokeStyle (style);
}

// resore the previous one
if (prePolys != null && prePolys != polys[i]) {
	style.color = '#333399'; // resore color, must be same as previous, see below
	prePolys.setStrokeStyle (style);
}
prePolys = polys[i];
map.openInfoWindowHtml(point, "<strong>"+labels[i]+" Minimum Insurance Requirements&nbsp;&nbsp;&nbsp;<\/strong><br \/>"+dpfs[i]+"<p>Learn more about: <a href='/state/"+states[labels[i]]+"/car-insurance.php'>"+labels[i]+" Car Insurance<\/a><br \/>Enter your zip code above to compare car insurance rates in "+labels[i]+".<\/p>",{maxWidth:450});
           }
       }
   }
});

// please add your own url here, for example: http://..../states.xml
var request = GXmlHttp.create();
request.open("GET", "usmap.xml", true);
     request.onreadystatechange = function() {
        if (request.readyState == 4) {
           var xmlDoc = GXml.parse(request.responseText);
          var states = xmlDoc.documentElement.getElementsByTagName("state");
          for (var a = 0; a < states.length; a++) {
            var label  = states[a].getAttribute("name");
            var dpf = states[a].getAttribute("dpf");
            var points = states[a].getElementsByTagName("point");
			// here you can add you own codes for new element
            var pts = [];
            for (var i = 0; i < points.length; i++) {
               pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")),
                                   parseFloat(points[i].getAttribute("lng")));
            }
			
            var poly = new GPolygon(pts,"#333399",1,1,"",0.9, {clickable:false});
            polys.push(poly);
            labels.push(label);
            dpfs.push(dpf);
            map.addOverlay(poly);
}
                                   }
      }
      request.send(null);
   }
else {
alert("Sorry, Google Maps is not compatible with this browser.");
   }
}
//]]>
