/**
 * Javascript to control django_rets.forms.PropertySearchForm
 * frontend behaviour. Requires jQuery.
 */
var FADE_SPEED = 'normal';

jQuery.fn.fadeOutThenFadeIn = function (object, options) {
	options = options || {};
	var speed = options.speed || FADE_SPEED;
	return $(this).fadeOut(speed, (function (object, speed) {
		if (!options.dontFadeInIf){
			object.fadeIn(speed);
		}
	})(object, speed));
};
jQuery.fn.label = function (string) {
	return $(this).find('label').text(string);
};
$(document).ready(function () {
	var property_type_field = $('#id_property_type');
	var transaction_type_field = $('#id_transaction_type_0').parents('tr');
	transaction_type_field.find('th').hide();
	var selected_transaction_type = $(
							 'input[name="transaction_type"][checked]');
	var for_lease_input = $('input#id_transaction_type_0');
	var for_sale_input = $('input#id_transaction_type_1');
	var comm_types_field = $('#id_commercial_types_0').parents('tr');
	var land_types_field = $('#id_land_types_0').parents('tr').hide();
	var size_field = $('#id_size_0').parents('tr');
	var alternative_size_field = $('#id_alternative_size_0').parents('tr').hide();
	var year_built_field = $('#id_year_built_0').parents('tr');
	var price_range_field = $('#id_price_range_0').parents('tr');
	var monthly_rent_field = $('#id_monthly_rent_0').parents('tr').hide();
	size_field.find('label').text('Square Feet:');

    function leaseOrSale(fade) {
        if (!fade) {
            fade = FADE_SPEED;
		}
        if (for_lease_input[0].checked) {
            var label = 'Price range (per square foot per year)';
            price_range_field.label(label);
            monthly_rent_field.fadeIn(fade);
        } else if (for_sale_input[0].checked) {
            price_range_field.label('Price range:');
            monthly_rent_field.fadeOut(fade).find(
											 'input').attr('value', '');
        }
        selected_transaction_type = $(this);
    }

    function propertyType(select,fade) {
        if (!fade) {
            fade = FADE_SPEED;
        }
		var selected_option = select.options[select.selectedIndex];
		if (selected_option.value == 'Commercial') {
            // Commercial

			transaction_type_field.fadeIn(fade);
			size_field.label('Square Feet:').fadeIn(fade);
			year_built_field.fadeIn(fade);
            alternative_size_field.fadeOut(fade);
			land_types_field.fadeOutThenFadeIn(comm_types_field).find(
									    'input').attr('checked', false);
			selected_transaction_type.attr('checked', true);
            leaseOrSale();
		} else {
            // Multi-family and Land

			transaction_type_field.fadeOut(fade).find('input').attr(
													  'checked', false);
			comm_types_field.fadeOutThenFadeIn(land_types_field, {
						 dontFadeInIf: (selected_option.value != 'Land')
			}).find('input').attr('checked', false);
			monthly_rent_field.fadeOut(fade);
			price_range_field.label('Price range:');
			if (selected_option.value == 'Land') {
                // Land

				size_field.label('Acres:').fadeIn(fade);
                alternative_size_field.fadeIn(fade);
				year_built_field.fadeOut(fade).find(
											 'input').attr('value', '');
			} else {
                // Multi-family

				land_types_field.fadeOut(fade).find('input').attr(
													  'checked', false);
				size_field.fadeOut(fade).find(
											 'input').attr('value', '');
				year_built_field.fadeIn(fade);
                alternative_size_field.fadeOut(fade);
			}
		}
	}

	property_type_field.change(function () { propertyType(this); });
    propertyType(property_type_field[0], '0');

    leaseOrSale('0');

    for_lease_input.click(leaseOrSale);
    for_sale_input.click(leaseOrSale);

    // auto update acres from sq ft
    for( i=0; i<2; i++ ){
        (function(){
            var n = i;
            $('#id_alternative_size_'+n).change( function(){
                var acres = $(this).attr('value') / 43560.0;
                var acres_rounded = Math.round( acres*100 ) / 100;
                $('#id_size_'+n).attr( 'value', acres_rounded );
            });
        })();
    }

    // auto update sq ft from acres
    for( i=0; i<2; i++ ){
        (function(){
            var n = i;
            $('#id_size_'+n).change( function(){
                var sqft = $(this).attr('value') * 43560.0;
                var sqft_rounded = Math.round( sqft*100 ) / 100;
                $('#id_alternative_size_'+n).attr( 'value', sqft_rounded );
            });
        })();
    }
});

