
var protocol= (('https:' == document.location.protocol) ? 'https:' : 'http:');



$(document).ready(function() {

    var latlng = new google.maps.LatLng(40.82, -97.47);
    var myOptions = {
      zoom: 4,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

   var map = new google.maps.Map($("div#coverage_mapper").get(0), myOptions);

    var mcOptions = {gridSize: 30, maxZoom: 8};
    var mc = new MarkerClusterer(map, [], mcOptions);

    var listurl = protocol +"//"+chartServer+"/altos/app?service=listcitystates&rf=jsonp&apiv=1";

    function refreshMap( bounds ) {
        if (typeof(bounds) == "undefined") {
               return;
         } else {
               listurl = protocol +"//"+chartServer+"/altos/app?service=listcitystates&rf=jsonp&apiv=1" + "&nelat="+bounds.getNorthEast().lat()+"&nelng="+bounds.getNorthEast().lng()+"&swlat="+bounds.getSouthWest().lat()+"&swlng="+bounds.getSouthWest().lng()
        }
        $.ajax({
        url: listurl,
        dataType: 'jsonp',
        success: function(data) {
            if ( data.responseCode == 500 ||  data.resultCount == 0  ) {
                $("div#coverage_mapper").attr('style', 'color:white;text-align:center;vertical-align: bottom; height: 400px; width: 690px;background: url(/altos/img/no-locations.png) no-repeat center #233040;');
                $("div#coverage_mapper").html('<p><br/><br/>Looks like some malicious gerbils ate your map.<br/><br/>Please try again later.</p>');
                return;
            }

            var count = data.response.resultCount;
            if ( count == 0 ) return;

            var markers = [];

            $.each(data.list, function(i,item) {
                var location = ""; var title = "";
                location = item.state + "/" + item.cityName+ "<br/>";
                title = "" + item.cityName + ", " + item.state + "";
                var lat = new Number(item.latitude);
                var lng = new Number( item.longitude);

                if ( lat != 0.0 && lng != 0.0 ) {
                    var myLatlng = new google.maps.LatLng( lat, lng  );
                    var priceChartImgUrl = protocol +"//" + chartServer + "/altos/app?service=chart&pai=552" +
                            "&ts=e&sz=b&ra=c&rt=sf&q=a&s=median_price&st="+ item.state + "&c=" + item.cityName+"&z=a";
                    var contentString = '<div class="marker_box" style="margin:0;text-align:center;width:185px;height:125px"><a href="'+item.url+'"><img style="background: url('+protocol +"//" + chartServer+'/altos/img/spinner.gif) no-repeat center center;width:180px;height:120px;"src="'+ priceChartImgUrl + '"/></a>'+
                            '</div>';
                    var infowindow = new google.maps.InfoWindow({
                        content: contentString
                    });

                    var marker = new google.maps.Marker({
                          position: myLatlng,
                          icon: '/altos/img/red-dot.png',
                          title: title
                    });

                    google.maps.event.addListener(marker, 'click', function() {
                        window.location = "" + item.url + "";
                    });

                    markers.push(marker);

                }

            });

            mc.clearMarkers();
            mc.addMarkers(markers);


        }
    });

    }


         google.maps.event.addListener(map, 'idle', function() {
            refreshMap(map.getBounds());
         });

    refreshMap(map.getBounds());


});

