$(function() {	
	
	// swap sale tab
	$('.searchbox .tabs .sale').click(function() {
		$('.searchbox .tabs .rent').removeClass('active');
		$('.searchbox .tabs .sale').addClass('active');
		$('.searchbox .forms .rent').removeClass('active');
		$('.searchbox .forms .sale').addClass('active');
		return false;
	});
	
	// swap rent tab
	$('.searchbox .tabs .rent').click(function() {
		$('.searchbox .tabs .sale').removeClass('active');
		$('.searchbox .tabs .rent').addClass('active');
		$('.searchbox .forms .sale').removeClass('active');
		$('.searchbox .forms .rent').addClass('active');
		return false;
	});
	
	// toggle advanced search options
	$('.searchbox .advanced').click(function (){
		var label_txt = 'Show Advanced Options';
		if ($(this).attr('text') == 'Show Advanced Options') label_txt = 'Hide Advanced Options';
		$(this).text(label_txt);
		$(this).siblings('.advanced_options').slideToggle('fast');
		return false;
	});
	
	// toggle search views
	$('#searchviews .list a').click(function() {
	 	toggle_view($(this).attr("href"), 'map', 'list');
		return false;
	});
	$('#searchviews .map a').click(function() {
	 	toggle_view($(this).attr("href"), 'list', 'map');
		return false;
	});
		
	// find all the input elements with title attributes
	$('input[title!=""]').hint();

	// setup ui sliders
	$('.sale_price_range select').selectToUISlider({
		labels: 0,
		tooltipSrc: 'text',
		labelSrc: 'text',
		sliderOptions: {
			change:function(e, ui) {
				set_rangelbl('.sale .price');
			}
		}
	});
	$('.sale_beds_range select').selectToUISlider({
		labels: 0,
		tooltipSrc: 'text',
		labelSrc: 'text',
		sliderOptions: {
			change:function(e, ui) {
				set_rangelbl('.sale .beds');
			}
		}
	});
	$('.sale_baths_range select').selectToUISlider({
		labels: 0,
		tooltipSrc: 'text',
		labelSrc: 'text',
		sliderOptions: {
			change:function(e, ui) {
				set_rangelbl('.sale .baths');
			}
		}
	});
	$('.sale_lotsize_range select').selectToUISlider({
		labels: 0,
		tooltipSrc: 'text',
		labelSrc: 'text',
		sliderOptions: {
			change:function(e, ui) {
				set_rangelbl('.sale .lotsize');
			}
		}
	});
	$('.sale_sqft_range select').selectToUISlider({
		labels: 0,
		tooltipSrc: 'text',
		labelSrc: 'text',
		sliderOptions: {
			change:function(e, ui) {
				set_rangelbl('.sale .sqft');
			}
		}
	});
	$('.rent_price_range select').selectToUISlider({
		labels: 0,
		tooltipSrc: 'text',
		labelSrc: 'text',
		sliderOptions: {
			change:function(e, ui) {
				set_rangelbl('.rent .price');
			}
		}
	});
	$('.rent_beds_range select').selectToUISlider({
		labels: 0,
		tooltipSrc: 'text',
		labelSrc: 'text',
		sliderOptions: {
			change:function(e, ui) {
				set_rangelbl('.rent .beds');
			}
		}
	});
	$('.rent_baths_range select').selectToUISlider({
		labels: 0,
		tooltipSrc: 'text',
		labelSrc: 'text',
		sliderOptions: {
			change:function(e, ui) {
				set_rangelbl('.rent .baths');
			}
		}
	});
	$('.rent_lotsize_range select').selectToUISlider({
		labels: 0,
		tooltipSrc: 'text',
		labelSrc: 'text',
		sliderOptions: {
			change:function(e, ui) {
				set_rangelbl('.rent .lotsize');
			}
		}
	});
	$('.rent_sqft_range select').selectToUISlider({
		labels: 0,
		tooltipSrc: 'text',
		labelSrc: 'text',
		sliderOptions: {
			change:function(e, ui) {
				set_rangelbl('.rent .sqft');
			}
		}
	});
	
	// hide select boxes for ranges
	$('.slider .space').hide();
	$('.slider select').hide();
	
	// set initial range labels
	set_rangelbl('.sale .price');
	set_rangelbl('.sale .beds');
	set_rangelbl('.sale .baths');
	set_rangelbl('.sale .lotsize');
	set_rangelbl('.sale .sqft');
	set_rangelbl('.rent .price');
	set_rangelbl('.rent .beds');
	set_rangelbl('.rent .baths');
	set_rangelbl('.rent .lotsize');
	set_rangelbl('.rent .sqft');
	
	$('.sliderswap').toggle(function() {
	  	$('.ui-slider').hide();
		$('.slider .space').fadeIn('fast');
		$('.slider select').fadeIn('fast');
		$(this).text('Use range sliders');
	}, function() {
		$('.slider .space').hide();
		$('.slider select').hide();
	  	$('.ui-slider').fadeIn('fast');
		$(this).text('Use range select boxes');
	});
	
	// location search autocomplete
	$("#agentname").autocomplete(
		"/agents/picker",
		{
			mustMatch:false,
			delay:10,
			minChars:2
		}
	);	
	$("#agentname").result(function(event, data, formatted) {
		if (data) $(this).parent().find("#agent_id").val(data[1]);
	});
	
	// search help
	$(".searchbox .help").attr("href", $(".searchbox .help").attr('href')).colorbox({
		width:600,
		scrolling:false,
		opacity:.50
	});
	
	$('.sortform .sortselect').change(function() {
		var actionurl = $('.sortform').attr('action');
		window.location = actionurl + $(this).val();
	});
	
});

// toggle current search view
function toggle_view(linkref, currentview, newview) {

	// load map if needed
	if (newview == 'map') {
		if ($('#mapview #map').attr("src") == null || $('#mapview #map').attr("src") == '') {
			$('#mapview #map').attr("src",linkref);
		}
	}
	
	// toggle pagers
	if (newview == 'map') {
		$('.pager').slideUp('fast');
	} else {
		$('.pager').slideDown('fast');
	}
	
	// hide current view
	$('#searchviews .'+currentview+' a').removeClass('active');
	$('#'+currentview+'view').hide();
	
	// show new view
	$('#searchviews .'+newview+' a').addClass('active');
	$('#'+newview+'view').show();
	
	// ajax call to set search view session var
	$.ajax({type: "POST", url: "/properties/search_view", data: "view=" + linkref});
}

// sets range labels for search sliders
function set_rangelbl(filter) {
	var label = $(filter + "_range label span");
	var minval = $(filter + "_min").val();
	var min = $(filter + "_min option:selected").text();
	var maxval = $(filter + "_max").val();
	var max = $(filter + "_max option:selected").text();
	if (minval > 0 && maxval > 0) {
		label.text(min + " to " + max);
	} else if (minval > 0) {
		label.text(min + " or More")
	} else if (maxval > 0) {
		label.text(max + " or Less")
	} else {
		label.text("Any")
	}
}
