		//setMessage("Looking up legislators. Please wait...");


	function addJsonSponsors() {
		setMessage("Mapping legislators.");
		gOpen = false;	//reset status of info div
		
		var info;
		var clickdo;
		var count = -1;
		var mcount = 0;	//non mappables - should not be an issue here
		var ourIndex//count is messed up by non mappables, this straightens that out.
		var msb = document.getElementById("map_sidebar");
		msb.innerHTML = "<center><h2>Legislators</h2></center>";
		gMap.closeInfoWindow();
		gMap.clearOverlays();
		gMarkers = new Array();
		
		setMessage("Mapping legislators..");

		for( i = 0; i< sponsors.length; i++ )
		{
			//most photos go to sunlight, some will not. Add sunlight url where necessary
			if( sponsors[i].photo.substr(0,4) !="http" )
				sponsors[i].photo = "http://sunlightlabs.com/widgets/popuppoliticians/resources/images/" + sponsors[i].photo;
			
			if( sponsors[i].district == 0 )
				sponsors[i].district = "At-Large";
		
			if( sponsors[i].lat != 777.7 )	//our marker for no lat
				info = setAndPushSponsorMarker(sponsors[i]);
		//--------------------now add the sidebar link --------------
		count++;
		if( sponsors[i].lat != 777.7 )	//different actions if not on map
		{
			ourIndex = count-mcount;
			clickdo = "javascript:gMarkers[" + ourIndex + "].openInfoWindowHtml(\"" + info + "\");";
			clickdo += " showhideinfo('e_info_" + count + "', true);";
		}
		else
		{
			mcount++;
			clickdo = "javascript:gMap.closeInfoWindow(); showhideinfo('e_info_" + count + "', true);";
		}
		
		setMessage("Mapping legislators...");
		addSponsorToSidebar(sponsors[i], clickdo, count );

		}
		setMessage("Mapping legislators....");
		centerTheMap();
		setMessage("Click on either a map marker or a name to the left for more information.");

	}

	function centerTheMap() {
        if( gMarkers[0] )	//do we have at least one?
		{

			for( count=0; count < gMarkers.length; count++ )
				gMap.addOverlay( gMarkers[count] );
				gMap.setCenter(gMarkers[0].getPoint(), 6);	//local map, centered on first marker
			
		}
		else
		{
			gMap.setCenter(new GLatLng(38.971667, -95.235), 3);//generic us, centered
		}
			
	}
	
	function hideOffmapMarkers()
	{
		var bounds = gMap.getBounds();
		var end2= new Array();
		//gather all that fall on the current map
		for( var i = 0; i<sponsors.length; i++ )
		{
			if( bounds.contains( new GLatLng(sponsors[i].lat, sponsors[i].lng) ) )
				end2.push( sponsors[i] );
		}
		sponsors = end2;
		setMessage("" + sponsors.length + " results found near " + document.getElementById("stInput").value + ".");
	
	}

	function switchSearchMessage()
	{
		switch ( getSearchBy() )
		{
			case "citystate":
				setMessage( "Enter a city and state abbreviation separated by a comma. e.g. Louisville,KY.");
				break;
			case "zip":
				setMessage("Enter a five digit zip code.");
				break;
			case "lastname":
				setMessage("Enter the last name (or a part of the last name) of a Representative.");
				break;
		}

	}
	function ucwords(str) {
		var tmp;
		var ray = str.split(" ");
		for( var i=0; i<ray.length; i++ )
		{
			tmp = ray[i].charAt(0).toUpperCase() + ray[i].substr(1).toLowerCase();
			ray[i] = tmp;
		}
		return ray.join(" ");
	}
	
	function showhideinfo(inf, doShow) {
		if( doShow )
		{
			if( gOpen )	//close if something's already open
			{
				document.getElementById( gOpen ).style.display="none";
				//if they reclicked the link, presumably hoping it would close,
				//then just reset and exit after closing.
				if( gOpen == inf )
				{
					gMap.closeInfoWindow();
					gOpen=false;
					return;
				}
			}
			document.getElementById(inf).style.display="block";
			gOpen = inf;
		}
		else
		{
			document.getElementById(inf).style.display="none";
			gOpen = false;
		}
	}

	function findAndSetCenter(address) {
	var geocoder = new GClientGeocoder();
	
	  geocoder.getLatLng(
		address,
		function(point) {
		  if (!point) {
			alert("Unable to locate latitude and longitude for " + address + ".");
		  } else {
			gMap.setCenter(point, 6);	//don't change zoom
		  }
		}
	  );
}

	function setAndPushSponsorMarker( sponsor )
	{			
		var spons = ( sponsor.support == "none") ? false: true;
		var badStyle = "style='background-color:#f99;text-align:left;padding-right:5px;padding-left:5px;margin-top:2px;'";
		var goodStyle = "style='background-color:#9f9;text-align:left;padding-right:5px;padding-left:5px;margin-top:2px;'";
		var info = "" + "<div";
		if( !spons )
		{
			info += " style='width:200px;height:210px;border:1px solid #f99; padding-top:2px;'";
			info += "><img src='http://kyhealthcare.org/maps/images/icon_error.png' width='16' height='16' alt='Needs to be encouraged to support HR676' align='left' />&nbsp;&nbsp;<strong>";
		}
		else
		{
			info += " style='width:200px;height:180px;border:1px solid #9f9; padding-top:2px;'";
			info += "><img src='http://kyhealthcare.org/maps/images/icon_status.png' width='16' height='16' alt='Supports HR676!' align='left' />&nbsp;&nbsp;<strong>";
		}
		info += sponsor.name + "</strong><br />&nbsp;&nbsp;&nbsp;(" + sponsor.party + "&nbsp;";
		info += sponsor.state + "-" + sponsor.district + ")";
		if( !spons )
		{
			info += "<div ";
			info += badStyle + " >";
			info += "<img src='" + sponsor.photo + "' align='left' height='50' />";
			info += sponsor.title + " " + sponsor.name + " has not yet co-sponsored ";
			info += "HR676.<br />If this is your representative, please encourage him or her to co-sponsor this important legislation.</div>";
			info += getEmail(sponsor);
			if( sponsor.phone != "" )
				info += "<br />Phone: " + sponsor.phone;
		}
		else if( sponsor.support == "co-sponsor" )
		{
			info += "<div "; 
			info += goodStyle + " >";
			info += "<img src='" + sponsor.photo + "' align='left' height='50' />";
			info += sponsor.title + " " + sponsor.name + " has co-sponsored  this important legislation.";
			info += "</div>";
		}
		else if( sponsor.support == "sponsor" )
		{
			info += "<div "; 
			info += goodStyle + " >";
			info += "<img src='" + sponsor.photo + "' align='left' height='50' />";
			info += sponsor.title + " " + sponsor.name + " wrote this important legislation and has been steadily pushing for its passage.";
			info += "</div>";
		}
		//only send to websites of cosponsors who have sites
		if( sponsor.website != "" && spons)
		{
			info += "<br />";
			info += getWebsite( sponsor );
		}
		info += "</div>";
	
		gMarkers.push(createMarker(new GLatLng(sponsor.lat, sponsor.lng), sponsor.name,info, spons));
		return info;
	}

	function addSponsorToSidebar( sponsor, clickdo, count )
	{

		var msb = document.getElementById("map_sidebar");
		var anode = document.createElement("div");

		if( count %2 == 0 )
		{	//darker - red or green
			bgcol= (sponsor.support == "none") ? "#f99" : "#9f9";
		}
		else
		{	//lighter - red or green
			bgcol= (sponsor.support == "none" ) ? "#fbb" : "#bfb";
		}
		
		anode.setAttribute("style", "background-color:" + bgcol + ";padding-top:2px;padding-bottom:1px;");
		var	sblink = document.createElement("a");
		sblink.href = clickdo;
		var anode2 = document.createTextNode(sponsor.name);
		sblink.appendChild(anode2);
		anode.appendChild(sblink);
		//----create popup div
		var ddiv = document.createElement("div");
		ddiv.setAttribute("style", "display:none;");

		ddiv.id = "e_info_" + count;
		if( sponsor.lat == 777.7 )	//no coordinates marker
		{
		ddiv.appendChild(document.createTextNode("No mappable coordinates available for this legislator."));
		ddiv.appendChild(document.createElement("br"));
		ddiv.appendChild(document.createTextNode("Location: " + sponsor.state + "-" + sponsor.district));
		}
		else
			ddiv.appendChild(document.createTextNode("Location: " + sponsor.state + "-" + sponsor.district));
		var pic = document.createElement("img");
		pic.setAttribute('src', sponsor.photo);
		pic.setAttribute("align", "left");
		pic.setAttribute("width", "50");
		ddiv.appendChild( pic );
		if( sponsor.support == "none" )
		{
			ddiv.appendChild(document.createElement("br"));
			ddiv.appendChild(document.createTextNode( sponsor.name + " has not yet co-sponsored HR676. If this is your legislator, please encourage him or her to co-sponsor this important legislation."));
			ddiv.appendChild(document.createElement("br"));
			ddiv.appendChild(document.createTextNode("Contact: "));
			anode2 = document.createElement("a");
			if( sponsor.email.substr(0,4) == "http" )	//new window if it's a form
			{
				anode2.href = sponsor.email;
				anode2.appendChild(document.createTextNode("Contact form"));
				anode2.setAttribute('target', '_blank');
			}
			else
			{
				anode2.href = "mailto:" + sponsor.email + "?subject=Please co-sponsor HR 676";
				anode2.appendChild(document.createTextNode("Email"));
			}
			ddiv.appendChild(anode2);
		}
		else if( sponsor.email != "" )
		{
			ddiv.appendChild(document.createElement("br"));
			if( sponsor.support == "sponsor" )
				ddiv.appendChild(document.createTextNode( sponsor.name + " is the sponsor HR676."));
			else
			ddiv.appendChild(document.createTextNode( sponsor.name + " has co-sponsored HR676."));
			ddiv.appendChild(document.createTextNode(" If this is your legislator, please write and share your appreciation for their support on this important legislation."));
			ddiv.appendChild(document.createElement("br"));
			ddiv.appendChild(document.createTextNode("Contact: "));
			anode2 = document.createElement("a");
			if( sponsor.email.substr(0,4) =="http" )	//new window if it's a form
			{
				anode2.href = sponsor.email;
				anode2.appendChild(document.createTextNode("Contact form"));
				anode2.setAttribute('target', '_blank');
			}
			else
			{
				anode2.href = "mailto:" + sponsor.email + "?subject=Thank you for co-sponsoring HR 676";
				anode2.appendChild(document.createTextNode("Email"));
			}
			ddiv.appendChild(anode2);
		}

		anode.appendChild(ddiv);
		//-----now append
		msb.appendChild(anode);
		//msb.appendChild(document.createElement("br"));
	}
	
	function getWebsite( sponsor )
	{
		if( sponsor.website == ""  ||  sponsor.website == null )
			return "";
		var info = "<a href=\'";
			info += sponsor.website;
			info += "\' target=\'_blank\'>";
			info += "Website</a>";
			return info;
	
	}
	
	function getEmail( sponsor )
	{
		if( sponsor.email == ""  ||  sponsor.email == null )
			return "";
		var webform = false;
		if( sponsor.email.substr(0,4) == "http" )
			webform = true;
			
		var info = "<a href=\'";
		if( ! webform )
			info += "mailto:";
		info += sponsor.email;
		if( webform )	//new window if it's a form
			info += "\' target=\'_blank\'";
		else
			info += "?subject=Please co-sponsor HR 676\'"
		info += ">";
		if( webform )
			info += "Contact via web form";
		else
			info += "Send email";
		info += "</a>";	
		return info;
	}
	
function addslashes(str) {
str=str.replace(/\'/g,'\\\'');
str=str.replace(/\"/g,'\\"');
str=str.replace(/\\/g,'\\\\');
str=str.replace(/\0/g,'\\0');
return str;
}
function stripslashes(str) {
str=str.replace(/\\'/g,'\'');
str=str.replace(/\\"/g,'"');
str=str.replace(/\\\\/g,'\\');
str=str.replace(/\\0/g,'\0');
return str;
}

function trim (str) {
        //str = this != window? this : str;
        return str.replace(/^\s+/, '').replace(/\s+$/, '');
}

function dispNone( el )
{
	document.getElementById(el).style.display = "none";
}
function dispBlock( el )
{
	document.getElementById(el).style.display = "block";
}
function dispToggle( el )
{
	if(document.getElementById(el).style.display == "block")
		document.getElementById(el).style.display = "none";
	else
		document.getElementById(el).style.display = "block";
}
