var xmlHttp=null;

function GetXmlHttpObject() {
    if (xmlHttp != null)
    {
    return xmlHttp;
    }

    try {
	// Firefox, Opera 8.0+, Safari
	xmlHttp=new XMLHttpRequest();
    }
    catch (e) {
	// Internet Explorer
	try {
	    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e) {
	    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
    }
    return xmlHttp;
}
function number_as_dollars(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return "$" + x1 + x2;
}


function createYahooMarker(geopoint, obj) {
    var myImage = new YImage();
//    myImage.src = 'http://www.homevalence.com/images/hv_map_icon_red.gif';

	var flagcolor = obj.change;

	if (flagcolor <= -5.01)	{
	myImage.src = 'http://www.homevalence.com/images/hv_map_icon_red.gif';
	}
	if ((flagcolor < 0) && (flagcolor >=-5))	{
	myImage.src = 'http://www.homevalence.com/images/hv_map_icon_ltred.gif'
	}
			
	if (flagcolor == 0)	{
	myImage.src = 'http://www.homevalence.com/images/hv_map_icon.gif';
	}
	
	if ((flagcolor > 0) && (flagcolor <= 5))	{
	myImage.src = 'http://www.homevalence.com/images/hv_map_icon_ltgreen.gif';
	}

	if (flagcolor >= 5.01)	{
	myImage.src = 'http://www.homevalence.com/images/hv_map_icon_green.gif';
	}
	
    myImage.size = new YSize(20,20);
    myImage.offsetSmartWindow = new YCoordPoint(0,0);
    var marker = new YMarker(geopoint,myImage, obj.zip);
     var swtext = '<div class="sw_title" >#' + obj.rank +':&nbsp;' + obj.city + ',&nbsp;' + obj.state + '</div>'+
                  '<div class="data"> <br>Annual Rate: ' + obj.change + 
		  '%<br/><p><center><a href ="http://www.homevalence.com/cgi-local/cbsa_annual.pl?q=' + obj.cbsa + 
		  '">Annual</a>&nbsp;<b>|</b>&nbsp;<a href ="http://www.homevalence.com/cgi-local/cbsa_quarterly.pl?q=' + obj.cbsa + 
		  '">Quarterly<p>'+"<img src = 'http://www.homevalence.com/images/hv_chart_sm.png' border ='0'></center></a><br>" +
		  '<a target = "new"  href=http://www.trulia.com/validate.php?tst=h&search=' + escape(obj.city) + '&state=' + obj.state + ">Search for homes in " + obj.city + ',&nbsp;' + obj.state + "</a><br/>" +
		  '<a href=http://www.trulia.com/' + " target = new><img src = 'http://www.homevalence.com/images/trulia_logo_70x42.jpg' border = '0'></a></div>";

/*     var trulia_link     /*
    var swtext = '<div id="60646_sw" ><font size="-2" face="verdana,geneva,sans-serif"><a href ="http://www.homevalence.com/cgi-local/zip_codes.pl/' + obj.zip + '">' + obj.title + "<a><br><br>";
    swtext += '<a href = "#"> View&nbsp;Annual</a>&nbsp;|&nbsp;<a href = "#">Quarterly&nbsp;Appreciation</a><br>';
    swtext += '<a href = "http://factfinder.census.gov/servlet/SAFFFacts?_event=Search&_street=&_county=&_cityTown=&_zip=' + obj.zip + '&_lang=en&_sse=on&ActiveGeoDiv=geoSelect&_useEV=&pctxt=fph&pgsl=860&_submenuId=factsheet_1&ds_name=DEC_2000_SAFF&_ci_nbr=null&qr_name=null&reg=null%3Anull&_keyword=&_industry="> Census stats for ' + obj.zip + '</a><br><br>';
    swtext += '</font></div>';
    */
    var label= "<img src=http://us.i1.yimg.com/us.yimg.com/i/us/ls/gr/" +
	obj.zip + ".gif>";
    //marker.addLabel(label);
    var trulia_url='get_trulia_data.pl?function=getCityStats&city=' + obj.city + '&state=' + obj.state;
    YEvent.Capture(marker,EventsList.MouseClick,
	    function() {
	        if (marker.final_smart_window_text == null)   //  We do not have the remote data yet
		    {
		    xmlHttp = GetXmlHttpObject();
		    if (xmlHttp==null){
			alert ("Your browser does not support AJAX!");
			marker.openSmartWindow(swtext);
			return;
		    }
		    var trulia_text = '<hr><div class = "data" style="float: left;"><img src = "spinner.gif"/>' +
		                      '&nbsp;Retrieving&nbsp;trulia&nbsp;data...</div>.';
		    marker.openSmartWindow(swtext + trulia_text);

		    xmlHttp.open("GET",trulia_url, true);
		    xmlHttp.onreadystatechange=function(){
			if (xmlHttp.readyState == 4 /*complete*/)
			{
			    var trulia_data = eval ('(' + xmlHttp.responseText + ')');
			    var prices_all;
			    var listing_stats = trulia_data.TruliaWebServices.response.TruliaStats.listingStats.listingStat;
			    if (listing_stats.length) //testing for array
			    {
				prices_all = listing_stats[0].listingPrice.subcategory[0];
				prices_1br = listing_stats[0].listingPrice.subcategory[1];
				prices_2br = listing_stats[0].listingPrice.subcategory[2];
				prices_3br = listing_stats[0].listingPrice.subcategory[3];
			    }
			    else
			    {
				prices_all = listing_stats.listingPrice.subcategory[0];
				prices_1br = listing_stats.listingPrice.subcategory[1];
				prices_2br = listing_stats.listingPrice.subcategory[2];
				prices_3br = listing_stats.listingPrice.subcategory[3];
			    }
			    trulia_text= '<table class="data"><tr class = "header_row"><td></td><td>Type</td><td>Qty.</td><td>Average</td><td>Median</td>';
			    //trulia_text+= '<tr><td rowspan="4">' + trulia_link + '</td><td>All</td><td>' +  prices_all.numberOfProperties + "</td><td>" + number_as_dollars(prices_all.averageListingPrice) + "</td><td>" +number_as_dollars( prices_all.medianListingPrice) + "</td></tr>";
			    trulia_text+= '<tr><td rowspan="4">'  + '</td><td>All</td><td>' +  prices_all.numberOfProperties + "</td><td>" + number_as_dollars(prices_all.averageListingPrice) + "</td><td>" +number_as_dollars( prices_all.medianListingPrice) + "</td></tr>";
			    trulia_text+= "<tr><td>1BR</td><td>" +  prices_1br.numberOfProperties + "</td><td>" + number_as_dollars(prices_1br.averageListingPrice) + "</td><td>" +number_as_dollars( prices_1br.medianListingPrice) + "</td></tr>";
			    trulia_text+= "<tr><td>2BR</td><td>" +  prices_2br.numberOfProperties + "</td><td>" + number_as_dollars(prices_2br.averageListingPrice) + "</td><td>" +number_as_dollars( prices_2br.medianListingPrice) + "</td></tr>";
			    trulia_text+= "<tr><td>3BR</td><td>" +  prices_3br.numberOfProperties + "</td><td>" + number_as_dollars(prices_3br.averageListingPrice) + "</td><td>" +number_as_dollars( prices_3br.medianListingPrice) + "</td></tr>";
			    trulia_text+= '</table>';
			}
			marker.closeSmartWindow();
			marker.final_smart_window_text = swtext + trulia_text;
			marker.openSmartWindow(marker.final_smart_window_text);
		    }
		    xmlHttp.send(null);
		    }
		    else  //We have already gotten the remote data, so lets display it
		    {
			marker.openSmartWindow(marker.final_smart_window_text);
		    }
		});
    return marker;
}

function marker_callback()
{
    if (xmlHttp.readyState == 4)
    {
    var response_data = eval('(' + xmlHttp.responseText + ')');
    var response_data = response_data.hv_data_list;
    for (var i = 0; i <response_data.length-1; i++)
    {
	var myPoint = new YGeoPoint(response_data[i].lat, response_data[i].lng);
	var marker = createYahooMarker(myPoint,response_data[i]);
	map.addOverlay(marker);
    }
    var time = new Date().getTime();
    map.drawZoomAndCenter(new YGeoPoint("41.682536", "-87.847010"), 14);
//    var time2 = new Date().getTime();
//    alert("Done loading "+ response_data.length + " markers in " + (time2 - time)/100 + "sec");
    //map.removeMarkersAll();
    time = new Date().getTime();
    //alert("Done unloading markers in " + (time - time2) + "ms");
    }
    else
    {
    //alert("Ready State is " + xmlHttp.readyState);
    }

}
// Create a map object
var map = new YMap(document.getElementById('mapContainer'));
GetXmlHttpObject();
xmlHttp.onreadystatechange=marker_callback;
//xmlHttp.open("GET","hv_json.js", false);
xmlHttp.open("GET","jason_382.js", true);
//xmlHttp.open("GET","spaces.js", true);
xmlHttp.send(null);

// Display the map centered on given address
//map.drawZoomAndCenter('60614', 9);
//map.drawZoomAndCenter(new YGeoPoint("41.682536", "-87.847010"), 14);

// Overlay data from GeoRSS file
//map.addOverlay(new YGeoRSS('http://www.cuforrent.com/hv/sample.xml'));
//map.addOverlay(new YGeoRSS('http://www.cuforrent.com/hv/hv_community.xml'));

/*
for (var i = 0; i <hv_data.length-1; i++)
{
var myPoint = new YGeoPoint(hv_data[i].lat, hv_data[i].lng);
//map.drawZoomAndCenter(myPoint, 3);
//map.drawZoomAndCenter(myPoint, 16);
var marker = createYahooMarker(myPoint,hv_data[i]);
  //map.addOverlay(marker);
  }
map.drawZoomAndCenter(new YGeoPoint("41.682536", "-87.847010"), 14);
*/

// Add a slider zoom control
map.addZoomLong();

// Add map type control
map.addTypeControl();

// Set map type to either of: YAHOO_MAP_SAT YAHOO_MAP_HYB YAHOO_MAP_REG
map.setMapType(YAHOO_MAP_REG);

//Get valid map types, returns array [YAHOO_MAP_REG, YAHOO_MAP_SAT, YAHOO_MAP_HYB]
//var myMapTypes = map.getMapTypes();
