// Listing Search Form
$.ui.form.subclass('ui.listing_search_form', {
	
	hasListingRegionalBoardFieldObject: function() {return (this.getListingRegionalBoardFieldObject().length > 0) ? true : false;}, 
	getListingRegionalBoardFieldObject: function() {return this.formFieldSet.find('.listing-regional-board-code-form-field');}, 
	getListingRegionalBoardFieldWidgetObject: function() {return this.getListingRegionalBoardFieldObject().find('select');}, 
	setListingRegionalBoardValue: function(value) {this.getListingRegionalBoardFieldWidgetObject().val(value);}, 
	getListingRegionalBoardValue: function() {return this.getListingRegionalBoardFieldWidgetObject().val();}, 

	getListingCountyFieldObject: function() {return this.formFieldSet.find('.listing-county-form-field');}, 
	getListingCountyFieldWidgetObject: function() {return this.getListingCountyFieldObject().find('select');}, 
	setListingCountyValue: function(value) {this.getListingCountyFieldWidgetObject().val(value);}, 
	getListingCountyValue: function() {return this.getListingCountyFieldWidgetObject().val();}, 

	getListingCityFieldObject: function() {return this.formFieldSet.find('.listing-city-form-field');}, 
	getListingCityFieldWidgetObject: function() {return this.getListingCityFieldObject().find('select');}, 
	setListingCityValue: function(value) {this.getListingCityFieldWidgetObject().val(value);}, 
	getListingCityValue: function() {return this.getListingCityFieldWidgetObject().val();}, 

	onListingCountyChange: function(object) {
		var query = '/reload/index/listing-county/' + String(object.val());
		if (this.hasListingRegionalBoardFieldObject())  
			query += '/listing-regional-board-code/' + String(this.getListingRegionalBoardValue());
		this.post(this.submitHandler, query);
	}, 

	onListingRegionalBoardChange: function(object) {
		this.post(this.submitHandler, '/reload/index/listing-regional-board-code/' + String(object.val()));
	}, 

	createFieldSet: function() {
		this._super();
		var self = this;
		this.getListingRegionalBoardFieldWidgetObject().each(function() {
			$(this).unbind('change');
			$(this).bind('change', function() {self.onListingRegionalBoardChange($(this));});
		});
		this.getListingCountyFieldWidgetObject().each(function() {
			$(this).unbind('change');
			$(this).bind('change', function() {self.onListingCountyChange($(this));});
		});
	}, 
	destroyFieldSet: function() {
		this._super();
		this.getListingRegionalBoardFieldWidgetObject().each(function() {$(this).unbind('change');});
		this.getListingCountyFieldWidgetObject().each(function() {$(this).unbind('change');});
	}
});
// Listing Search Panel
$.ui.panel.subclass('ui.listing_search_panel', {

	createBody: function() {
		this._super();
		this.panelBody.show();
		this.createListingSearchForm();
	}, 
	destroyBody: function() {
		this._super();
		this.destroyListingSearchForm();
	}, 
	// Listing Search Form
	getListingSearchFormObject: function() {
		return this.panelBody.find(this.options.listingSearchForm.selector);
	}, 
	callListingSearchForm: function(method, params) {
		return $.plugin(this.getListingSearchFormObject(), this.options.listingSearchForm.widget, method, params);
	}, 
	createListingSearchForm: function() {
		var config = {parent: {widget: this.options.widget, object: this.panel}};
		this.callListingSearchForm(config);
	}, 
	destroyListingSearchForm: function() {
		this.callListingSearchForm('destroy');
	}
});
$.ui.listing_search_panel.defaults.extend(
	{
		widget: 'listing_search_panel', 
		listingSearchForm: {
			widget: 'listing_search_form', 
			selector: '#listing-search-form'
		}
	}
);