var ZOOMLEVEL = 7;
var MAPTYPE = G_NORMAL_MAP;
var CCOLOR = ['#00FF00','#00FF00','#00FF00'];
var COUNTY = [];

var baseIcon = new GIcon();
baseIcon.shadow = "http://maps.re-data.org/images/pin_home.png";
baseIcon.iconSize = new GSize(16, 16);
baseIcon.shadowSize = new GSize(16, 16);
baseIcon.iconAnchor = new GPoint(9, 16);       
baseIcon.infoWindowAnchor = new GPoint(9, 2);  
baseIcon.infoShadowAnchor = new GPoint(16, 16);

var map;
var mgr;
var startPoint = new GLatLng(LATITUDE,LONGITUDE);

function LoadMap() {
    if (GBrowserIsCompatible()) {
    
    
	map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GScaleControl()) ;
//        map.addControl(new GOverviewMapControl()) ;
        map.setCenter(startPoint, ZOOMLEVEL);                     


/*	var request = GXmlHttp.create();	
	request.open("GET", "data/Clackamas.xml", true);
        request.onreadystatechange = function() 
        {
    	    if (request.readyState == 4)
    	    {
    		var xmlDoc = request.responseXML ;
    		try
    		{
    		    var polylines = xmlDoc.documentElement.getElementsByTagName("polyline") ;
    		    var points = [] ;
    		    for (var i = 0; i < polylines.length; i++)
    		    {
    			points.push( new GLatLng(parseFloat(polylines[i].getAttribute("lat")),parseFloat(polylines[i].getAttribute("lng"))) ) ;
    		    }
    		    map.addOverlay( new GPolyline(points,"#ff0000", 3, 1) );
    		}
    		catch(e)
    		{
    		    alert("Some error occured during program processing:" + e) ;
                } 
    	    }
        }
        request.send('');
*/        
    }
}

function createMarker(point, index) {
  var icon = new GIcon(baseIcon);
  var marker = new GMarker(point, icon);

  GEvent.addListener(marker, "click", function() {
//    marker.openInfoWindowHtml("Marker <b>" + index + "</b>");


	GDownloadUrl("details.pl?id="+index, function(data, responseCode) {
    	    var xml = GXml.parse(data);
	    var m = xml.documentElement.getElementsByTagName("marker");

	    var labels = ['Summary','More','Directions'];

				var info = [];

				info[0] = "<style>.text{font-size:11px;}</style>";
				info[0] = info[0] + "<table width=320 border=0 class=text><tr><td width=160 valign=top><table cellspacing=0 cellpadding=1 bgcolor=black><tr><td><img width=150 height=120 src='"+
				m[0].getAttribute("photo") + "' onError=\"this.src='http://www.re-maps.com/nophoto150.jpg'\" " +
				"></td></tr></table></td><td width=160 valign=top>" +
				"<b>MLS\#</b> " + m[0].getAttribute("listing_id") + "<br>\n" +
				"<b>Price:</b> \$" + m[0].getAttribute("price") + "<br>\n";
				info[0] = info[0] + "<b>Location:</b> " + m[0].getAttribute("street") + "<br>\n";
				info[0] = info[0] + "<b>City:</b> " + m[0].getAttribute("city") + "<br>\n" + 
				"<b>Zip:</b> " + m[0].getAttribute("zip") + "<br>\n";

				if (m[0].getAttribute("bedrooms"))
				{
					info[0] = info[0] + "<b>Beds/Baths:</b> " + (m[0].getAttribute("bedrooms")||'na') + "/" + (m[0].getAttribute("baths_tot")||'na')  + "<br>\n";
				}
				if (m[0].getAttribute("lot_size"))
				{
					info[0] = info[0] + "<b>Lot Size:</b> " + m[0].getAttribute("lot_size") + "<br>\n";
				}
				info[0] = info[0] + "<a href='http://www.bobzawaski.com/mls.html?id="+m[0].getAttribute("listing_id")+"&class="+m[0].getAttribute("class")+"' target='_blank' class='more'>more information</a><BR>\n";
				info[0] = info[0] + "</td></tr>";
				info[0] = info[0] + "</table>\n";

				info[1] = '<div class="marker-text" style="overflow:auto; width:320px;height:150px;">'+m[0].getAttribute("remarks_public")+'</div>\n';

    				    info[2] = "<div class=text>";
				    info[2] = info[2] + "<form action='http://maps.google.com/maps' method='get' target='_blank'>";
				    info[2] = info[2] + "<i>Your address</i>: <br /><input type=text name=saddr value='' size=20><br />";
				    info[2] = info[2] + "<input type=hidden name=daddr value='" + m[0].getAttribute("street") + "," + m[0].getAttribute("city") + "," + m[0].getAttribute("zip") + "' class=text>";
				    info[2] = info[2] + "<input type=submit value='Directions' class=text></form>"; 
				    info[2] = info[2] + "</div>";

				if (info.length > 2) {
					info[0] = '<div style="width:'+info.length*88+'px">' + info[0] + '</div>';
				}
				var tabs = [];
				for (var j=0; j<info.length; j++) {
					tabs.push(new GInfoWindowTab(labels[j],info[j]));
				}

				marker.openInfoWindowTabsHtml(tabs);

	    
	});


  });
  return marker;
}

function showMarkers () {
    map.clearOverlays();
    show_counties('county');
    if (document.getElementById('neighborhood').value) {
	map.setZoom(13);
	showHood (document.getElementById('neighborhood').value, '#FF0000');
    }
    
    GDownloadUrl("data.pl", function(data, responseCode) {
	var xml = GXml.parse(data);
	var markers = xml.documentElement.getElementsByTagName("marker");
	mgr = new GMarkerManager(map);
	var batch = [];
	for (var i = 0; i < markers.length; i++) {
	    var id = markers[i].getAttribute("id");
	    var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
				    parseFloat(markers[i].getAttribute("lng")));
	    
	    batch.push(createMarker(point, id));
	}
	mgr.addMarkers(batch, 8);
	mgr.refresh();
    });
}

function showCounty (name, color) {
    var n = 0;
    if (name == 'Multnomah') n = 1;
    if (name == 'Washington') n = 2;

    if (COUNTY[n]) {    
	map.addOverlay(COUNTY[n]);
    }
    else {
	GDownloadUrl("data/"+name+".xml", function(data, responseCode) {
	    var xml = GXml.parse(data);
	    var polyline = xml.documentElement.getElementsByTagName("polyline");
	    var batch = [];
	    for (var i = 0; i < polyline.length; i++) {
		var point = new GLatLng(parseFloat(polyline[i].getAttribute("lat")),
				    parseFloat(polyline[i].getAttribute("lng")));
		batch.push(point);
	    }
	    COUNTY[n] = new GPolyline(batch, color, 4, 1);//, color, 0.3);
	    map.addOverlay(COUNTY[n]);
	});
    }
}

function showHood (name, color) {
	GDownloadUrl("hoods/"+name+".xml", function(data, responseCode) {
	    var xml = GXml.parse(data);
	    var points = xml.documentElement.getElementsByTagName("point");
	    var batch = [];
	    for (var i = 0; i < points.length; i++) {
		var point = new GLatLng(parseFloat(points[i].getAttribute("lat")),
				    parseFloat(points[i].getAttribute("lng")));
		batch.push(point);
	    }
	    map.addOverlay(new GPolyline(batch, color, 2, 1));
	});
}

function show_counties (div) {
	var c = document.getElementById(div);
	for (var i = 0; i < c.length; i++) {
		if (c[i].selected) {
			showCounty (c[i].value, CCOLOR[i]);
		}
	}
}

