function initialize() {
  if (GBrowserIsCompatible()) {
    window.map = new GMap2(document.getElementById("map_canvas"));
	window.geocoder = new GClientGeocoder();
    window.map.setUIToDefault();
  }
}

function citiesAjax(city, housing, region) {

	
	var this_item = 0
	window.cities = []
	
	$.ajax({

		type: "GET",
		url: "/static/cache/cities.xml",
		dataType: "xml",
		success: function(xml) {
			
			$(xml).find('item').each(function(){

				this_item++;

				var listing = new Object();

				listing.id = this_item
				listing.href = $(this).find('link').text()
				listing.name =  $(this).find('name').text()
				listing.subdomain =  $(this).find('subdomain').text()
				listing.regions = []
				$(this).find("region").each(function()
				  {
					var region = new Object();
					region.regionname = $(this).find('regionname').text()
					region.regionlink = $(this).find('regionlink').text()
					listing.regions.push(region)
				  });
				
				
				$("#form_city").append("<option value='"+listing.id+"'>"+listing.name+"</option>")

				
				window.cities[listing.id] = listing
				
			}); //close each(

		},
		error: function(data){
			$("#test").html( "<br/><br/><center><h1 class='title'>Oops! Something bad happened. Try, try again!</h1></center>" ).slideDown("slow");
		}

	}); //close $.ajax(

	if (city) {
		//alert(city)
		//alert($("#form_city").val())
		//$("#form_city").val=city
		//$("#form_city").val(city).attr("selected", "selected");
		//alert($("#form_city").val())
		//$("#form_city").val=city
	}
	else {
	
	}
}

 function onSelectChange(){  
     var selected = $("#form_city option:selected");       
     var output = "";  
     if(selected.val() != 0){  
         output = "You Selected " + selected.text();  
     }  
     $("#output").html(output);  
}

function doAjax() {
	
	var this_item = 0;
	var timeout = 3000;
	var city =""
	var state=""
	
	$.ajax({
		
		type: "GET",
		url: "/xml/?rss="+window.rss_url,
		dataType: "xml",
		success: function(xml) {
			$("#loading").hide().fadeOut("slow");
			$(xml).find('item').each(function(){
				
				this_item++;
				
				var listing = new Object();
				
				listing.id = this_item
				listing.listing_id = "listing"+this_item
				listing.location =  $(this).find('address').text() + ", " + $(this).find('city').text() + ", " + $(this).find('state').text() + ", " + $(this).find('country').text()
				listing.price = $(this).find('price').text()
				listing.bedrooms = $(this).find('bedrooms').text()
				listing.title = $(this).find('title').text()
				listing.date = $(this).find('date').text()
				listing.description = ($(this).find('description').text())
				listing.address = $(this).find('address').text()
				listing.city = $(this).find('city').text()
				listing.state = $(this).find('state').text()
				listing.link = $(this).find('link').text()
				
				listing.name_text = createText(listing);
				listing.bubble = createBubble(listing);
				window.listings[this_item] = listing
				
				window.setTimeout(function (a,b,c) {
				  showAddressLocations(a, 0, b, c)
				}, (timeout*listing.id), listing.location, listing.bubble, listing);
				
				window.setTimeout(function (a) {
				  appendText(a)
				}, (timeout*listing.id), listing.name_text);
				
				city = $(this).find('city').text()
				state = $(this).find('state').text()

			}); //close each(
			
			showAddressLatLng(city + ", " + state + ', US', 1)
			
		},
		error: function(data){
			$("#test").html( "<br/><br/><center><h1 class='title'>Oops! Something bad happened. Try, try again!</h1></center>" ).slideDown("slow");
		}
		
	}); //close $.ajax(
	
}

function selectRegions(id) {
	
	$("#form_region").html('<option value="">--Select a Region--</option>')
	$("#form_region").append('<option value="">all</option>')
	
	var obj = window.cities[id]
	
	if (obj.regions) {
		
		for (var this_region = 0; this_region < obj.regions.length; this_region++) {
			var select_value = "<option value='"+obj.regions[this_region].regionlink+"'>"+obj.regions[this_region].regionname+"</option>"
			//$("#stuff").append("<pre>"+select_value+"</pre>")
			$("#form_region").append(select_value)
		}
	}
	
}

function assemble() {
	var obj = window.cities[$("#form_city").val()]
	var region = $("#form_region").val()
	var housing = $("#form_housing").val()
	var url = ""
	if (region) {
		//alert("region ("+region+")")
		url = "/reg/" + obj.href +"/"+ housing + region
	}
	else {
		url = "/map/" + obj.href +"/"+ housing + "/"
	}
	window.location.href=url
}

function addAddressToMap(response, address, bubble, obj) {

  if (!response || response.Status.code != 200) {
	addressNotFound(address, obj, response.Status.code)
  } else {
    place = response.Placemark[0];
    point = new GLatLng(place.Point.coordinates[1],
                        place.Point.coordinates[0]);

    addPointToMap(point, place.address, bubble, obj);
	addressFound(point, address)
	//addPano(point)
	window.listings[obj.id].point = point
	listingIconShow(obj)
	
	return obj
  }

}

function addPano(point) {
	panoramaOptions = { latlng:point };
	var myPano = new GStreetviewPanorama(document.getElementById("pano"), panoramaOptions);
}

function showAddressLocations(address, center, bubble, obj) {

	window.geocoder.getLocations(
		address,
		function(point) {
	
			if (!point) {
				addressNotFound(obj)
			} 
			else {
				listing = addAddressToMap(point, address, bubble, obj)
			}
		}
	);
	
}

function showAddressLatLng(address, center, bubble) {
	
	window.geocoder.getLatLng(
		address,
		function(point) {
	
			if (!point) {
				
				addressNotFound(address)
			} 
			else {
		
				if (center) {
					window.map.setCenter(point, 13);
				}
				else {
					addressFound(point, address)
					addPointToMap(point, address, bubble);
				}
		
			}
		}
	);

}

function addressNotFound(address, obj, code) {
	//$("#errors").append(" (not found)");
	listingNotFoundIconShow(obj, code)
}

function addressFound(point, address) {
	//$("#errors").append("  (found) ");
}

function createMarker(point, data, bubble, number) {
	var marker = new GMarker(point);
	marker.value = number;
	window.map.addOverlay(marker);
	GEvent.addListener(marker, "click", function() {
		window.map.openInfoWindowHtml(point, bubble);
	});
	return marker;
}

function addPointToMap(point, data, bubble, obj) {
	createMarker(point, data, bubble, obj.id)
}

function appendText(text) {
	$("#errors").append(text + "<br/>")
}

function appendDesc(text) {
	$("#desc").append(text)
}

function showListing(obj) {
	var listing_id = "#listing"+obj.id
	$(listing_id).slideDown("slow");
	addPano(obj.point)
	map.setCenter(obj.point,14);
	listingIconHide(obj)
	window.location.href='#goto'+obj.id
}

function listingNotFoundIconShow(obj, code) {
	var html = ' <img src="/static/images/icons/cross.png" border="0"></a><!--('+code+')-->&nbsp;&nbsp;'+obj.id+'. ';
	$("#icon"+obj.id).html(html)
}

function listingIconShow(obj) {
	var html = ' <a href="javascript:void(0);" onclick="showListing(window.listings['+obj.id+'])"><img src="/static/images/icons/zoom.png" border="0"></a>&nbsp;&nbsp;'+obj.id+'. ';
	$("#icon"+obj.id).html(html)
}

function hideListing(obj) {
	var listing_id = "#listing"+obj.id
	$(listing_id).slideUp("slow");
	listingIconShow(obj)
}

function listingIconHide(obj) {
	var html = ' <a href="javascript:void(0);" onclick="hideListing(window.listings['+obj.id+'])"><img src="/static/images/icons/zoom_out.png" border="0"></a>&nbsp;&nbsp;'+obj.id+'. ';
	$("#icon"+obj.id).html(html)
}

function createText(obj) {
	var name_text = "<a name='goto" + obj.price + "'></a>"
	var desc = ""
	var bubble = "$" + obj.price + " (" + obj.bedrooms + "br) " + " - " + obj.location;
	
	name_text += '<span id="icon'+obj.id+'"></span>';
	
	name_text += "$" + obj.price + " (" + obj.bedrooms + "br) - " + obj.location;
	
	desc += '<div id="'+ obj.listing_id +'" style="display:none; background-color: #fff; margin-top: 10px; padding: 5px;" class="border">';
	desc +=  '<strong><a href="'+ obj.link +'" target="_new">'+ bubble +'</a></strong><br/><br/>'
	desc += obj.description + '<br/><br/>'
	desc +=  '<span class="small">Posted: '+ obj.date +'</span>'
	desc += '</div>'
	appendDesc(desc)
	
	return name_text
}

function createBubble(obj) {
	var bubble = ""
	
	bubble += ' <a href="javascript:void(0);" onclick="showListing(window.listings['+obj.id+'])"><img src="/static/images/icons/eye.png" border="0"></a>&nbsp;&nbsp;'+obj.id+'. ';
	
	bubble += "$" + obj.price + " (" + obj.bedrooms + "br) " + " - " + obj.location;
	
	return bubble
}