$(function() {	
	// Set up all the buttons and ui
	$("#house_age_radio").buttonset();
	$("#house_fuel_radio").buttonset();
	$("#rotate_left").button();
	$("#rotate_right").button();
	$("#find_house").button();
	$("#proposal").button();
	$('#find_house').button();
	$('#proposal_submit').button();
	
	// Set up form interactions
	$("#dogwood_form").submit(function(submit) {
		if (submit === null) {
			var address;
			address = $("#address").val() + ', ' + $("#zipcode").val();
			updateAddress(address);	
			return false;
		}
	});
	$('#proposal_submit').click(function() {
		$('#dogwood_form').submit(true);
	});
	$("#find_house").click(function() {
		var address;
		address = $("#address").val() + ', ' + $("#zipcode").val();
		updateAddress(address);
	});
	
	$('#square_foot_slider').slider({
	    range: 'min',
		min: 1200,
		max: 7500,
		step: 10,
		value: 1200,
		slide: function(event,ui) { $('#square_foot').val(ui.value); },
		stop: function(event,ui) { getCosts(); }
	});
	$('#cooling_adjustment_slider').slider({
	    range: 'min',
		min: -50,
		max: 50,
		step: 1,
		value: 0,
		slide: function(event,ui) { $('#cooling_adjustment').val(ui.value); },
		stop: function(event,ui) { getCosts(); }
	});
	$('#heating_adjustment_slider').slider({
	    range: 'min',
		min: -50,
		max: 50,
		step: 1,
		value: 0,
		slide: function(event,ui) { $('#heating_adjustment').val(ui.value); },
		stop: function(event,ui) { getCosts(); }
	});
	$('#house_age_radio input:radio').click(function(){ getCosts(); });
	$('#house_fuel_radio input:radio').click(function(){ getCosts(); });
	$('#house_info input').change(function(){ getCosts(); });
	
	// Move from Step 1 to Step 2
	function step2() {
		$('#step1').hide();
		$("#controls").show();
		$("#graphs").show();
		$('#progress_bar').removeClass().addClass('step2');
		getCosts();
	}
	
	// Google maps stuff
	var myLatlng = new google.maps.LatLng(39, -98);
	var myOptions = {
		zoom: 3,
		center: myLatlng,
		disableDefaultUI: true,
		mapTypeId: google.maps.MapTypeId.SATELLITE
	};
	
	var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
	var geocoder = new google.maps.Geocoder();
	
	function updateAddress(address) {
		// Zillow
		getZillow($("#address").val(), $("#zipcode").val());
		
		// Google maps
		geocoder.geocode({'address': address}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				map.setZoom(18);
				map.panTo(results[0].geometry.location);
				new google.maps.Marker({
					position: results[0].geometry.location, 
					map: map
				});
				
				
				setTimeout(step2, 3000);
			} else {
				alert("Your address could not be found. Please try again");
			}
		});
	}
	
	// Zillow stuff
	function getZillow(address, zipcode) {
		$.get($('#zillow_link').attr('href'), {address: address, zipcode: zipcode},
		function(house_info) {
			year = parseInt(house_info.year_built, 10);
			if (year < 1990) {
				$("#house_lt_10").attr("checked", true);
			} else if (year < 2000) {
				$("#house_bt_10_20").attr('checked', 'checked');
			} else {
				$("#house_gt_20").attr('checked', 'checked');
			}
			$("#house_age_radio").buttonset("refresh");
			$("#square_foot").val(house_info.square_foot);
			$("#square_foot_slider").slider("value", house_info.square_foot);
		});
	}
	
	
	// Graphs and savings stuff
	function getCosts() {
		var age = $('#house_age_radio input:radio:checked').val();
		var fuel = $('#house_fuel_radio input:radio:checked').val();
		$('#address_display').html($('#address').val() + ', ' + $('#zipcode').val());
		$.ajax({
			url: $('#costs_link').attr('href'),
			data: $('#dogwood_form').serialize() + '&age=' + age + '&fuel=' + fuel,
			dataType: 'json',
			success: function(data) {
			    // Set house ID
			    $('#house_id').val(data.house_id);
			    $('#lead_id').val(data.lead_id);
			    
			    $('#cooling_load').val(data.cooling_load);
			    $('#heating_load').val(data.heating_load);
				
				$('#current_costs').val('$' + data.current_costs);
				$('#new_costs').val('$' + data.new_costs);
				$('#cooling_dollar_savings').html(data.displayable_savings.cooling.financial);
				$('#cooling_co2_savings').html(data.displayable_savings.cooling.co2);
				$('#heating_dollar_savings').html(data.displayable_savings.heating.financial);
				$('#heating_co2_savings').html(data.displayable_savings.heating.co2);
				$('#water_dollar_savings').html(data.displayable_savings.water.financial);
				$('#water_co2_savings').html(data.displayable_savings.water.co2);
				savings = parseFloat(data.current_costs) - parseFloat(data.new_costs);
				
				// Unit images
				var layout = $('#layout').val();
				$('#cooler_image').attr('src', 'http://virtualhvac.com/img/' + layout + '/' + data.unit.cooler.picture);
				if (data.unit.heater.picture == data.unit.cooler.picture) {
				    $('#heater_image').hide();
				} else {
				    $('#heater_image').show();
				}
				$('#heater_image').attr('src', 'http://virtualhvac.com/img/' + layout + '/' + data.unit.heater.picture);
			
				//Charts
				coolingLoadChart.series[0].setData(eval(data.hc_cooling_monthly));
				coolingLoadChart.series[1].setData(eval(data.hc_heating_monthly));
				costsBreakdownChart.series[0].setData(eval(data.cost_breakdown));
				newCostsBreakdownChart.series[0].setData(eval(data.new_cost_breakdown));
			}
		});
	}

	if ($('#address').val() !== '' && $('#zipcode').val() !== '') {
	    $("#find_house").click();
    }
});
