(function ($) {
	$(function () {
		delete $.fn.displetform.defaults.render_functions.draw_prices;
		delete $.fn.displetform.defaults.render_functions.draw_form_title;
		delete $.fn.displetform.defaults.render_functions.draw_user_fields;
		delete $.fn.displetform.defaults.render_functions.submitForm;
		delete $.fn.displetform.defaults.render_functions.draw_buttons;
		delete $.fn.displetform.defaults.render_functions.draw_area_select;

		$('#displetform').displetform({
			'render_functions': {
				'draw_container': function () {
					var table = $('<table class="displetform rounded3px"></table>')
						.appendTo(this);
					var tbody = $('<tbody></tbody>').appendTo(table);

					this.container = $('<tr></tr>').appendTo(tbody);
				},

				'draw_panels': function () {
					this.leftpanel = $('<td id="leftpanel"></td>')
						.appendTo(this.container);
					this.centerpanel = $('<td id="centerpanel"></td>')
						.appendTo(this.container);
					this.rightpanel = $('<td id="rightpanel"></td>')
						.appendTo(this.container);
				},

				'draw_area_select': function () {
					if (this.params.areas != undefined
						&& this.params.areas != null
						&& this.params.areas.length != 0
						&& this.params.areas != '') {

						$('<label for="area">'
							+ this.params.options.area_label
							+ '</label><br>').appendTo(this.leftpanel);
						var area_select = $('<select name="zip" id="area" class="displetfield"></select>').appendTo(this.leftpanel);
						$('<br>').appendTo(this.leftpanel);
						$('<option disabled="disabled" selected="selected" value="none" >'
							+ this.params.options.area_select
							+ '</option>').appendTo(area_select);

						$.each(this.params.areas, function (k,v) {
							$('<option value="' + v + '">' + k + '</option>')
								.appendTo(area_select);
						});
					}
				},

				'draw_district_select': function () {
					$('<label for="school_district">School District</label><br>')
						.appendTo(this.leftpanel);
					var district_select = $('<select id="school_district" name="school_district" class="displetfield"></select>').appendTo(this.leftpanel);

					$('<option disabled="disabled" selected="selected" value="none">'
						+ this.params.options.district_select
						+ '</option>').appendTo(district_select);

					$.each(this.params.districts, function () {
						$('<option value="' + this + '">' + this + '</option>')
							.appendTo(district_select);
					});

					$('<br>').appendTo(this.leftpanel);
				},

				'draw_subdivision': function () {
					$('<label for="subdivision">Subdivision/Zip Code</label><br>')
						.appendTo(this.leftpanel);
					$('<input type="text" size="10" id="subdivision" name="subdivision" class="displetfield"/><br>')
						.appendTo(this.leftpanel);
				},

				'draw_property_types': function () {
					var that = this;
					$('<span>'
						+ this.params.options.property_label + '</span><br><br>')
						.appendTo(this.centerpanel);
					$.each(this.params.property_types, function (k,v) {
						$('<input type="checkbox" class="displetfield" name="property_type[]" id="' + k +'" value="' + v + '">')
							.appendTo(that.centerpanel);
						$('<label for="' + k + '">' + k + '</label><br>')
							.appendTo(that.centerpanel);
					});
				},

				'draw_prices': function () {
					$('<label>List Price</label><br>').appendTo(this.rightpanel);
					var min_select = $('<select name="minListPrice" id="minListPrice" class="displetfield"></select>')
						.appendTo(this.rightpanel);
					$('<option disabled="disabled" selected="selected" value="none" class="disabled">'
						+ this.params.options.priceMin_select
						+ '</option>').appendTo(min_select);

					for (var price = this.params.options.priceMin;
						price <= this.params.options.priceMax;
						price += this.params.options.priceIncrement) {
						$('<option value="'
							+ (price / 1000) + '">' + (price / 1000) + '</option>')
							.appendTo(min_select);
					}

					$('<span class="suffix">,000</span>').appendTo(this.rightpanel);

					var max_select = $('<select name="maxListPrice" id="maxListPrice" class="displetfield"></select>')
						.appendTo(this.rightpanel);
					$('<option disabled="disabled" selected="selected" value="none" class="disabled">'
						+ this.params.options.priceMax_select
						+ '</option>').appendTo(max_select);

					for (price = this.params.options.priceMin;
						price <= this.params.options.priceMax;
						price += this.params.options.priceIncrement) {
						$('<option value="'
							+ (price / 1000) + '">' + (price / 1000) + '</option>')
							.appendTo(max_select);
					}

					$('<span class="suffix">,000</span>').appendTo(this.rightpanel);

					$('<br>').appendTo(this.rightpanel);
				},

				'draw_beds': function () {
					$('<label for="minBedrooms">'
						+ this.params.options.bedsMin_label + '</label>')
						.appendTo(this.rightpanel);
																													var bed_select = $('<select name="minBedrooms" id="minBedrooms" class="displetfield"></select>')
																														.appendTo(this.rightpanel);
																													$('<option disabled="disabled" selected="selected" value="none" class="disabled">'
						+ this.params.options.bedsMin_select
						+ '</option>').appendTo(bed_select);

					for (var beds = this.params.options.bedsMin;
						beds <= this.params.options.bedsMax;
						beds++) {
						$('<option value="' + beds + '">' + beds + '</option>')
							.appendTo(bed_select);
					}
				},

				'draw_baths': function () {
					$('<label for="minBathrooms">'
						+ this.params.options.bathsMin_label + '</label>')
						.appendTo(this.rightpanel);
					var bath_select = $('<select name="minBathrooms" id="minBathrooms" class="displetfield"></select>')
						.appendTo(this.rightpanel);
					$('<option disabled="disabled" selected="selected" value="none" class="disabled">'
						+ this.params.options.bathsMin_select
						+ '</option>').appendTo(bath_select);

					for (var baths = this.params.options.bathsMin;
						baths <= this.params.options.bathsMax;
						baths++) {
						$('<option value="' + baths + '">' + baths + '</option>')
							.appendTo(bath_select);
					}
					$('<br>').appendTo(this.rightpanel);
				},

				'draw_keywords': function () {
					$('<label for="keyword">'
						+ this.params.options.keywords_label + '</label>')
						.appendTo(this.rightpanel);
					$('<input type="text" name="keyword" class="displetfield" id="keyword" size="10" />')
						.appendTo(this.rightpanel);
					$('<br>').appendTo(this.rightpanel);
				},

				'draw_buttons': function () {
					var listingbutton = $('<a id="listingbutton" title="View Homes" class="rounded3px button" style="float: left">View Homes</a>')
						.appendTo(this.rightpanel);
					var mapbutton = $('<a id="mapbutton" title="Map Homes" class="rounded3px button" style="float: right">Map Homes</a>')
						.appendTo(this.rightpanel);

					listingbutton.click(this.submitFormGet);
					mapbutton.click(this.submitForm);
				}
			},

			'callbacks': {
				'submitForm': function () {
					var url = (function (url) {
						if (url.lastIndexOf('/') != url.length) {
							url += '/';
						}
						url += '#';
						return url;
					})(this.params.options.targetUrl);

					$.each($('.displetform :input:not(input:checkbox)'), function () {
						if (this.value != 'none'
							&& this.value != '') {
							if (this.name != 'subdivision') {
								url += this.name + '=' + this.value + '/';
							}
							else {
								if (this.value.match(/\D/) == null) {
									url += 'zip=' + this.value + '/';
								}
								else {
									url += this.name + '=' + this.value + '/';
								}
							}
						}
					});

					var checked = $('.displetform input:checked');
						if (checked.length != 0) {
							url += 'property_style[]=';
							var property_array = [];

					$.each(checked, function () {
						property_array.push(this.value);
					});

					var string = property_array.join(',');
					url += string;
				}

				// alert(url);
				window.location = url;
			},

			'submitFormGet': function () {
				var inputs = $('.displetform :input').filter(function (index) {
					if (this.value === 'none'
						|| this.value === '') {
						return false;
					}
					else {
						return true;
					}
				});
				var url = this.params.options.targetUrl
					+ '/residentials/results?'
					+ inputs.serialize();

				window.location = url;
			},

			'leave': function () {
			}
		}
		});

		$('#displetform input').addClass('rounded3px');
		$('#displetform td').attr('valign', 'top');


	});
})(jQuery);
