var boxArray = [[
    new google.maps.LatLng(35.52059407327961, -84.6110215078125),
    new google.maps.LatLng(35.52059407327961, -83.2377304921875),
    new google.maps.LatLng(36.40978056591319, -83.2377304921875),
    new google.maps.LatLng(36.40978056591319, -84.6110215078125)
  ]];

var areaArray = [[
    new google.maps.LatLng(35.590000, -84.530000),
    new google.maps.LatLng(35.590000, -83.320000),
    new google.maps.LatLng(36.350000, -83.320000),
    new google.maps.LatLng(36.350000, -84.530000)
  ]];


var poly = new google.maps.Polygon();
var mlspoly = new google.maps.Polygon();

var map;
var geocoder;
var infoWindow = new google.maps.InfoWindow();
var totalBounds = new google.maps.LatLngBounds();
var startPoint = new google.maps.LatLng(35.966439, -83.924376);

var swMlsBounds = new google.maps.LatLng(35.52059407327961, -84.6110215078125);
var neMlsBounds = new google.maps.LatLng(36.40978056591319, -83.2377304921875);
var mlsBounds = new google.maps.LatLngBounds(swMlsBounds,neMlsBounds)


var mlsareaArray = [[
    new google.maps.LatLng(37.72466504391536, -86.67095803125),
    new google.maps.LatLng(34.16817266618658, -86.67095803125),
    new google.maps.LatLng(34.16817266618658, -81.17779396875),
    new google.maps.LatLng(37.72466504391536, -81.17779396875)
  ], [
    new google.maps.LatLng(36.40978056591319, -83.2377304921875),
    new google.maps.LatLng(35.52059407327961, -83.2377304921875),
    new google.maps.LatLng(35.52059407327961, -84.6110215078125),
    new google.maps.LatLng(36.40978056591319, -84.6110215078125)
  ]];


  var latlng = new google.maps.LatLng(35.966439, -83.924376);
  var addr = "Entire Knoxville Tennessee Area";
  var searchType = '';
  var formValues = '';

jQuery(document).ready(function(){ 

	  /*geocoder = new google.maps.Geocoder();*/ 


	  var myOptions = {
	    zoom: 9,
scrollwheel: false,
	    navigationControl: true,
	    navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
	    mapTypeControl: false,
	    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
	    center: latlng,
	    mapTypeId: google.maps.MapTypeId.ROADMAP
	  }

	  map = new google.maps.Map(document.getElementById("map"), myOptions);

	  google.maps.event.addListener(map, 'click',function(me){

	    if (mlsBounds.contains(me.latLng)) {
	      codeLatLng(me.latLng);
	    }

	  });

	  google.maps.event.addListener(map, 'bounds_changed',function(me){

	    /*start(); */  

	    var zoomIs = map.getZoom();
	    /*jQuery("#mapBounds").html("zoom: "+zoomIs);*/ 

	    if (zoomIs < 8) {
	      map.setZoom(8);
	    }

	  });


	  mlspoly = new google.maps.Polygon({
	    paths: mlsareaArray,
	    strokeColor: "#334d66",
	    strokeOpacity: 1.0,
	    strokeWeight: 1,
	    fillColor: '#1a2633',
	    fillOpacity: 0.5
	  });

	  /*mlspoly.setMap(map); */   
      
      jQuery("#searchAreaIs").html(addr);

});


function setMap() {
mlspoly.setMap(map);
}

function start() {


  var mapBounds = map.getBounds();

  var boxNorthEast = mapBounds.getNorthEast();
  var boxSouthWest = mapBounds.getSouthWest();

  var neCorner = boxNorthEast.lat()+", "+boxNorthEast.lng();
  var nwCorner = boxNorthEast.lat()+", "+boxSouthWest.lng();
  var swCorner = boxSouthWest.lat()+", "+boxSouthWest.lng();
  var seCorner = boxSouthWest.lat()+", "+boxNorthEast.lng();

  var mstr = "";
  mstr += swCorner;
  mstr += seCorner;
  mstr += nwCorner;
  mstr += neCorner;

  /*jQuery("#mapBounds").html(mstr);*/ 

}

function setLatLng(lat, lng) {
var latlng = new google.maps.LatLng(lat, lng);
codeLatLng(latlng);
}


function codeLatLng(latlng) {

  if (geocoder) {
    geocoder.geocode({'latLng': latlng}, function(results, status) {

    if (status == google.maps.GeocoderStatus.OK) {
      /*jQuery("#lat").html("<strong>Lat:</strong> "+latlng.lat());*/ 
      /*jQuery("#lng").html("<strong>Lng:</strong> "+latlng.lng())*/ 

      var str = "<br />";

      var mapBounds = map.getBounds();

      str += mapBounds+"<br /><br />";

      var street = '';
      var city = '';
      var zip = '';
      var county = '';


	var addyParts0 = results[0].address_components;
	  jQuery.each(addyParts0, function(){
	    if ( this.types[0] == "route" &&  street == "" ) { street = this.long_name; }
	    if ( this.types[0] == "locality" &&  city == "" ) { city = this.long_name; }
	    if ( this.types[0] == "postal_code" &&  zip == "" ) { zip = this.long_name; }
	    if ( this.types[0] == "administrative_area_level_2" &&  county == "" ) { county = this.long_name; }
	  });

	var addyParts1 = results[1].address_components;
	  jQuery.each(addyParts1, function(){
	    if ( this.types[0] == "route" &&  street == "" ) { street = this.long_name; }
	    if ( this.types[0] == "locality" &&  city == "" ) { city = this.long_name; }
	    if ( this.types[0] == "postal_code" &&  zip == "" ) { zip = this.long_name; }
	    if ( this.types[0] == "administrative_area_level_2" &&  county == "" ) { county = this.long_name; }
	  });

	var addyParts2 = results[2].address_components;
	  jQuery.each(addyParts2, function(){
	    if ( this.types[0] == "route" &&  street == "" ) { street = this.long_name; }
	    if ( this.types[0] == "locality" &&  city == "" ) { city = this.long_name; }
	    if ( this.types[0] == "postal_code" &&  zip == "" ) { zip = this.long_name; }
	    if ( this.types[0] == "administrative_area_level_2" &&  county == "" ) { county = this.long_name; }
	  });

	var addyParts3 = results[3].address_components;
	  jQuery.each(addyParts3, function(){
	    if ( this.types[0] == "route" &&  street == "" ) { street = this.long_name; }
	    if ( this.types[0] == "locality" &&  city == "" ) { city = this.long_name; }
	    if ( this.types[0] == "postal_code" &&  zip == "" ) { zip = this.long_name; }
	    if ( this.types[0] == "administrative_area_level_2" &&  county == "" ) { county = this.long_name; }
	  });
 

	// str += "<b>Street:</b> " + street+"<br />";

formValues = '';

	var state = '';
	  if(document.getElementById("searchCity").checked){
	    if (city != "") {state = ", TN";}
	    str += "<b>City:</b> " + city + state + "<br />";
	    addr = city + state;
	    geocode(addr);  
	    searchType = "City";
jQuery("input#searchType").val("CITY");
jQuery("input#listingCity_f").val(city);
	  }
	  if(document.getElementById("searchZip").checked){
	    str += "<b>Zip:</b> " + zip+"<br />";
	    addr = zip;
	    geocode(addr);  
	    searchType = "Zip";
jQuery("input#searchType").val("ZIP");
jQuery("input#listingZip_f").val(zip);
	  }
	  if(document.getElementById("searchCounty").checked){
	    if (county != "") {state = " County, TN";}
	    str += "<b>County:</b> " + county + state + "<br />";
	    addr = county + state;
	    geocode(addr); 
	    searchType = "County";

jQuery("input#searchType").val("MAP");

/*jQuery("input#listingCountyArea_f").val(county);*/ 


/*jQuery("input#listingCountyArea_f").val('Knox County');*/  

jQuery("#listingCountyArea_f").val(county + ' County'); 

/*jQuery('[name=listingCountyArea_f]').val('Knox County');*/ 

var cis = jQuery('#listingCountyArea_f').val();

/*addr += " ..." + cis + "";*/ 

	  }



	jQuery("#areaValues").html(formValues);  

	jQuery("#searchAreaIs").html(addr);


                            jQuery.each(results, function(){
                                str += "<h4>"+this.formatted_address+"</h4>";
                                str += "types: "+this.types.join(", ")+"<br />";
                                str += "address components: <ul>"
                                jQuery.each(this.address_components, function(){
                                    str +="<li>"+this.types.join(", ")+": "+this.long_name+"</li>";
                                });
                                str +="</ul>";
                            });


	/*jQuery("#geocode_info").html(str);*/ 

	} else {
          alert("Geocoder failed due to: " + status);
        }
      });
    }
  }








function clearOverlays(){

	poly.setMap(null); 
 	mlspoly.setMap(map);  
	map.setZoom(9);
	map.panTo(latlng);
	addr = "Entire Knoxville Tennessee Area";

jQuery("input#searchType").val("MAP");
jQuery("input#listingCountyArea_f").val("");
/*jQuery("input#searchCounty")[0].checked = true;*/ 
jQuery('input[name="searchArea"]')[2].checked = true;

jQuery("#listingCountyArea_f").val(''); 

      jQuery("#searchAreaIs").html(addr);
}


function resetMap(){

	poly.setMap(null); 
 	mlspoly.setMap(map);  
	map.setZoom(9);
	map.panTo(latlng);
	addr = "Entire Knoxville Tennessee Area";

jQuery("input#searchType").val("MAP");
jQuery("input#listingCountyArea_f").val("");
/*jQuery("input#searchCounty")[0].checked = true;*/ 
/*jQuery('input[name="searchArea"]')[2].checked = true;*/ 

jQuery("#listingCountyArea_f").val(''); 

      jQuery("#searchAreaIs").html(addr);
}


function showAll(){
  map.fitBounds(totalBounds);
  infoWindow.close();
}
 

geocoder = new google.maps.Geocoder();
geocoder.responseIndex = 0;
geocoder.responseSet = []; 


function geocode(addr) {


  geocoder.geocode({'address': addr}, geocodeResult);

  function geocodeResult(response, status) {
    if (status == google.maps.GeocoderStatus.OK && response[0]) {
      geocoder.responseSet.push(response); // we save them all
      makeBox(0, geocoder.responseIndex);
      geocoder.responseIndex++;
    } else {
      alert("Sorry, Geocoder Failed!  Search Type: " + searchType + "  --  Try zooming in and click again.");
	jQuery("#searchAreaIs").html("<span style=\"color:red;\">Try zooming in and click again.</span>");
    }
  }
}

   
    
function makeBox(ind, setIndex){

/*mlspoly.setMap(null); */ 
poly.setMap(null); 


  var results = geocoder.responseSet[setIndex];
  var box = results[ind].geometry.bounds;
  var color = "blue-box";
  var str1 = "<br />";

  /*map.fitBounds(box);*/ 

  var boxNorthEast = box.getNorthEast();
  var boxSouthWest = box.getSouthWest();

  var neCorner = boxNorthEast.lat()+", "+boxNorthEast.lng();
  var nwCorner = boxNorthEast.lat()+", "+boxSouthWest.lng();
  var swCorner = boxSouthWest.lat()+", "+boxSouthWest.lng();
  var seCorner = boxSouthWest.lat()+", "+boxNorthEast.lng();

  areaArray = [[
    new google.maps.LatLng(boxSouthWest.lat(),boxSouthWest.lng()),
    new google.maps.LatLng(boxNorthEast.lat(),boxSouthWest.lng()),
    new google.maps.LatLng(boxNorthEast.lat(),boxNorthEast.lng()),
    new google.maps.LatLng(boxSouthWest.lat(),boxNorthEast.lng())
  ]];

  var joinedArray = boxArray.concat(areaArray);
 

  var latSpan = ((boxNorthEast.lat() - boxSouthWest.lat())/2) +  boxSouthWest.lat();
  var lngSpan = ((boxSouthWest.lng() - boxNorthEast.lng())/2) +  boxNorthEast.lng();

  var newCenter = new google.maps.LatLng(latSpan, lngSpan);


  /*map.setCenter(newCenter);*/ 
  map.panTo(newCenter); 

    poly = new google.maps.Polygon({
      paths: joinedArray,
      strokeColor: "#334d66",
      strokeOpacity: 1.0,
      strokeWeight: 1,
      fillColor: '#ffffff',
      fillOpacity: 0.7
    });
 
    poly.setMap(map);

    /*jQuery("#searchAreaIs").html(newCenter);*/ 


}