		var map;
		var xml;
		var state_xml;
		var a;
		var markers = new Array();
		var words = new Array();
		var find = new Array();
		var result = 0;
		var count;	
	
        var baseIcon = new GIcon();
		baseIcon.image = "32_marker_cc00cc.png";
		baseIcon.shadow = "http://maps.google.com/mapfiles/ms/icons/msmarker.shadow.png";
        baseIcon.iconSize = new GSize(32,32);
		baseIcon.shadowSize = new GSize(59, 32);
        baseIcon.iconAnchor = new GPoint(15, 32);
        baseIcon.infoWindowAnchor = new GPoint(15, 9);
        baseIcon.infoShadowAnchor = new GPoint(15, 25);	

        var icon = new GIcon(baseIcon);
		var newIcon = MapIconMaker.createMarkerIcon({width: 36, height: 36, primaryColor: "#C6AD4E", cornerColor: "#F6DD8E"});
		

		function load_search(count){//load markers and panel with most word matches first
			var stateid;
			var bgcolor;
			var party;
			var panel_html='';
			for(var h=count;h>0;--h){
				var match = 0;
				for (var i = 0; i < xml.documentElement.getElementsByTagName("member").length; i++) {
					if(find[i] == h){
						match = 1;				
						for(var j = 0; j < state_xml.documentElement.getElementsByTagName("state").length; j++) {
							var state_district = xml.documentElement.getElementsByTagName("member")[i].getAttribute("state");
							var c = 0;
							for (var k=0; k<state_district.length; k++) {
								if (state_district.charAt(k) == ',') var end = c;
								else c++;
							}
							var state_name = state_district.substring(0,end);
							if(state_xml.documentElement.getElementsByTagName("state")[j].childNodes[0].nodeValue == state_name)
								stateid = j;
						}
						panel_html += '<div onmouseover="show_infowindow('+stateid+',\''+state_name+'\');" style="border-bottom:1px dashed #eee;padding:5px;background:#C6AD4E"><a class="link" target="_blank" href="'+xml.documentElement.getElementsByTagName("member")[i].getAttribute("website")+'" onmouseover="show_infowindow('+stateid+',\''+state_name+'\');">'+xml.documentElement.getElementsByTagName("member")[i].getAttribute("name")+'</a><br><span class="text3"><B>'+xml.documentElement.getElementsByTagName("member")[i].getAttribute("state")+'</B></span></div>';	
					}
				}
				document.getElementById('panel').innerHTML += panel_html;
				if (match == 1 && k != 1) {// add spacer between results
					document.getElementById('panel').innerHTML += '<div style="border-bottom:1px dashed #888;padding:4px;"></div>';
				}	
			}
		}
		
		function search_node(node_value, count, i){//find number of word match in a node
			var word_start = 0;
			var word_end = 0;
			var word;
			var found = 0;
			find[i]= 0;
			for(var k=0;k<count;k++){//compare xml word with all search words
				word_start = 0;
				for (var j=0;j<node_value.length+1;j++){//seperate words in xml
					if ((node_value.charAt(j) == " ") || (node_value.charAt(j) == "\"") || (node_value.charAt(j) == ".") || (node_value.charAt(j) == ":") || (node_value.charAt(j) == "'") || (node_value.charAt(j) == ",") || j == node_value.length){
						word_end = j;
						word = node_value.substring(word_start,word_end);
						word = word.toLowerCase();
						if (words[k] == word)	{
							result = 1;
							find[i] = ++found; //no. of search words found in a node
							j = node_value.length + 1; //if one word match found in node, then move to next word search in the node
						}
						word_start = j + 1;
					}	
				}
			}
		}
		
		function search_xml(count){
			result = 0;
			var party;
			var xml_string;
			for (var i = 0; i < xml.documentElement.getElementsByTagName("member").length; i++) {//search node, if found in node move to next		
				xml_string = xml.documentElement.getElementsByTagName("member")[i].getAttribute("name") + ' ' + xml.documentElement.getElementsByTagName("member")[i].getAttribute("state") ;
				search_node(xml_string, count, i);
			}
			load_search(count);
			if (!result) {
				document.getElementById('panel').innerHTML = '<center class="text1">Search not found...<a href="#" onclick="document.getElementById(\'panel\').innerHTML = load_sidebar();" >show all</a><center>';
			}	
		}
		
		function search(string){			
//			map.clearOverlays();
			document.getElementById('panel').innerHTML = '';
			var string_start = 0;
			var string_end = 0;
			count = 0;
			for (var j=0;j<string.length+1;j++){//seperate words in search string and store in array
				if((string.charAt(j) == " ") || j == string.length){ //seperate words in search
					string_end = j; //alert (string_start);
					if(string_end - string_start != 0){//if not blank or space
						words[count] = string.substring(string_start,string_end); 
						words[count] = words[count].toLowerCase();//alert(words[count]);
						count++;
					}
					string_start = j + 1;
				}
			}//alert (count);
			if (string.length == 0){//if empty search, show all
				document.getElementById('panel').innerHTML = '<span align="center" class="text1">Search not found...<a href="#" onclick="document.getElementById(\'panel\').innerHTML = load_sidebar();" >show all</a><span>';
			}
			else{//if search string has words
				search_xml(count);	
			}
			return false;
		}

		function show_infowindow(state_id, state_) {
		//	var info_html = '';
			var info_html = '<center><b class="text2">'+state_xml.documentElement.getElementsByTagName("state")[state_id].childNodes[0].nodeValue+' Representatives</b></center><div style="overflow:auto;max-height:160px;">';
			for (var i = 0; i < xml.documentElement.getElementsByTagName("member").length; i++) {
					var state_district = xml.documentElement.getElementsByTagName("member")[i].getAttribute("state");
					var c = 0;
					for (var k=0; k<state_district.length; k++) {
						if (state_district.charAt(k) == ',') var end = c;
						else c++;
					}
					var state_name = state_district.substring(0,end);			
			
				if (state_ == state_name) {
					info_html += '<div style="border:1px solid #eee;padding:5px;background:#C6AD4E"><a class="link" href="'+xml.documentElement.getElementsByTagName("member")[i].getAttribute("website")+'" target="_blank" title="house.gov webpage">'+xml.documentElement.getElementsByTagName("member")[i].getAttribute("name")+'</a><br><span class="text3"><B>'+xml.documentElement.getElementsByTagName("member")[i].getAttribute("state")+'</B></span></div>';	
				}
			}
			markers[state_id].openInfoWindowHtml(info_html + '</div>');
		}			
		
		function load_state_marker(i){
			var statename = state_xml.documentElement.getElementsByTagName("state")[i].childNodes[0].nodeValue
			markers[i] = new GMarker(new GLatLng(state_xml.documentElement.getElementsByTagName("state")[i].getAttribute("lat"), state_xml.documentElement.getElementsByTagName("state")[i].getAttribute("lng")),{icon:newIcon, title: state_xml.documentElement.getElementsByTagName("state")[i].childNodes[0].nodeValue} );
			map.addOverlay(markers[i]);
			GEvent.addListener(markers[i], "click", function() { 
				show_infowindow(i, statename);
			});
		}
		
		function load_sidebar () {
			var stateid;
			var panel_html = '';
			var bgcolor;
			var party;		
			for (var i = 0; i < xml.documentElement.getElementsByTagName("member").length; i++) {
				for(var j = 0; j < state_xml.documentElement.getElementsByTagName("state").length; j++) {
					var state_district = xml.documentElement.getElementsByTagName("member")[i].getAttribute("state");
					var c = 0;
					for (var k=0; k<state_district.length; k++) {
						if (state_district.charAt(k) == ',') var end = c;
						else c++;
					}
					var state_name = state_district.substring(0,end);
					if(state_xml.documentElement.getElementsByTagName("state")[j].childNodes[0].nodeValue == state_name)
						stateid = j;
				}
				panel_html += '<div onmouseover="show_infowindow('+stateid+',\''+state_name+'\');" style="border-bottom:1px dashed #eee;padding:5px;background:#C6AD4E"><a class="link" target="_blank" href="'+xml.documentElement.getElementsByTagName("member")[i].getAttribute("website")+'" onmouseover="show_infowindow('+stateid+',\''+state_name+'\');">'+xml.documentElement.getElementsByTagName("member")[i].getAttribute("name")+'</a><br><span class="text3"><B>'+xml.documentElement.getElementsByTagName("member")[i].getAttribute("state")+'</B></span></div>';	
			}
			return panel_html;		
		}
		
		function load_map(sidebar) {
			GDownloadUrl("state_ext_geocode.xml", function(data, responseCode) {
				state_xml = GXml.parse(data);
				GDownloadUrl("houseofrep.xml", function(data, responseCode) {
					xml = GXml.parse(data);				
					for(var i = 0; i < state_xml.documentElement.getElementsByTagName("state").length; i++) {				
						load_state_marker(i);	
					}
					if(sidebar) {
						document.getElementById('panel').innerHTML = load_sidebar();
					}	
				});		
			});		
		}
		
		function load() {
		  if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map")); 
			map.addControl(new GSmallZoomControl());
			map.setCenter(new GLatLng(39,-96), 4); 

			document.getElementById("panel").style.height = (document.getElementById("win").offsetHeight - 500);
			document.getElementById("panel").style.overflow = "auto";
			
			document.getElementById('panel').innerHTML = "<center>Loading...</center>";
			load_map(1);
			
//			var adsOptions = {maxAdsOnMap:10, minZoomLevel:2, channel:"4299003002"};
//			var ads = new GAdsManager(map,"ca-pub-2773616400896769", adsOptions);
//			ads.enable();
			}
		}
			
		function load_demo() {
		  if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map")); 
			map.addControl(new GSmallZoomControl());
			map.setCenter(new GLatLng(39,-96), 3);
		
			load_map(1);

			document.getElementById("panel").style.height = (document.getElementById("control").offsetHeight - 155);
			document.getElementById("panel").style.overflow = "auto";
			
			var adsOptions = {maxAdsOnMap:10, minZoomLevel:2, channel:"2129529019"};
			var ads = new GAdsManager(map,"ca-pub-2773616400896769", adsOptions);
			ads.enable();
			}
		}
		
		function load_open() {
		  if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map")); 
			map.addControl(new GSmallZoomControl());
			map.setCenter(new GLatLng(39,-96), 3);

			load_map(1);

			document.getElementById("panel").style.height = (document.getElementById("control").offsetHeight - 155);
			document.getElementById("panel").style.overflow = "auto";
			
			var adsOptions = {maxAdsOnMap:10, minZoomLevel:2, channel:"1152560923"};
			var ads = new GAdsManager(map,"ca-pub-2773616400896769", adsOptions);
			ads.enable();
			}			
		} 
		
		function load_gadget() {
		  if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map")); 
			map.addControl(new GSmallZoomControl());
			map.setCenter(new GLatLng(39,-96), 3); 

			load_map(1);

			document.getElementById("panel").style.height = (document.getElementById("control").offsetHeight - 155);
			document.getElementById("panel").style.overflow = "auto";
			
			var adsOptions = {maxAdsOnMap:10, minZoomLevel:2, channel:"1138988402"};
			var ads = new GAdsManager(map,"ca-pub-2773616400896769", adsOptions);
			ads.enable();
			}			
		} 	