var ajaxRequest = null;
var ajaxLoading = false;
var ajaxTimer = null;
var hasMoreResults = true;
var pixelsFromBottom = 450;
$j(document).ready(function() {
	setInterval("checkScrolling()", 1000);
	
	$j('ul.pagination').hide();
	$j('div#loadingMoreResults').show();
	$j('div#searchRecordCount').show();
	
	$j('div.checkedSelect').each(function(i) {
		$j(this).children('h4').css('cursor','pointer').click(toggleCheckedSelect);
		$j(this).children('ul').children('li').contents(':checkbox').click(checkCheckedSelect);
		$j(this).children('h4').click();
	});
	
	$j('input#vilIsGated').bind("change", toggleGated);
	toggleGated();
	
	$j('input#pageNum').val(eval($j('input#pageNum').val())+1);
	$j('form#refineSearch :input').not('.noBind').bind("change", updateFilters);
	$j('div#featuredListingOnly').children('a').bind("click", toggleFeatured);
	$j('div#featuredListingAll').children('a').bind("click", toggleFeatured);
	$j('form#refineSearch input:submit[value="SEARCH"]').hide();
	$j('form#refineSearch input#saveSearch').bind("click", saveSearch);
	
	// Reload page from back button
	if(location.hash.length > 6 && location.hash.substring(0,6) == '#page_'){
		if ((location.hash.substring(6)-0) > 1) {
			$j('input#pageNum').val(location.hash.substring(6)-0);
			getSearchResults(true);
		} else updateFilters();
	}
});

function checkScrolling() {
	if (!ajaxLoading && hasMoreResults && $j('#loadingMoreResults').position().top <= $j(window).height() + $j(window).scrollTop() + pixelsFromBottom) {
		ajaxLoading = true;
		getSearchResults();
	}
}

function getSearchResults(catchup) {
	var searchURL = '/homes/ajaxSearchResults.cfm';
	ajaxLoading = true;
	if(catchup == true) searchURL = searchURL + '?catchup=1';
	ajaxRequest = $j.ajax({
	  type: "GET",
	  url: searchURL,
	  data: $j('form#refineSearch').serialize(),
		cache: false,
		dataType: "html", 
		
		success: function(data, textStatus){
			location.hash = 'page_' + $j('input#pageNum').val();
			$j('input#pageNum').val(eval($j('input#pageNum').val())+1);
			$j('ul#searchResults').append(data);
			ajaxLoading = false;
			ajaxRequest = null;
		},
		
		error: function(XMLHttpRequest, textStatus, errorThrown){
			alert('Request Failed\n Text: ' + textStatus + '\nError: ' + errorThrown);
			ajaxLoading = false;
			ajaxRequest = null;
		}
	});
}

function updateFilters() {
	ajaxLoading = true;
	if(ajaxRequest != null) ajaxRequest.abort();
	ajaxRequest = null;
	$j('div#loadingMoreResults').show();
	hasMoreResults = true;
	$j('input#pageNum').val("1");
	$j('ul#searchResults').html("");
	getSearchResults();
}

function toggleCheckedSelect() {
	if($j(this).next('ul:visible').length == 0) {
		$j(this).children('span').hide();
		$j(this).next('ul').slideDown();
	} else {
		$j(this).next('ul').slideUp();
		var myValues = '';
		$j(this).next('ul').find('input').each(function(i) {
			if(this.checked && !this.disabled) myValues = myValues + ', ' + $j(this).attr('title');
		});
		$j(this).children('span').html(myValues.substring(2));
		$j(this).children('span').show();
	}
}

function toggleFeatured() {
	if($j('form#refineSearch input[name="homIsFeatured"]').val() == 0){
		$j('form#refineSearch input[name="homIsFeatured"]').val('1');
	} else {
		$j('form#refineSearch input[name="homIsFeatured"]').val('0');
	}
	updateFilters();
	$j('div#featuredListingAll').toggle();
	$j('div#featuredListingOnly').toggle();
	return false;
}

function toggleGated() {
	if($j('input#vilIsGated:checked').length > 0){
		$j("input[name='vilID']").each(function(i){
			if($j(this).attr("gated") != '1') $j(this).attr("disabled", "disabled"); 
		});
	} else {
		$j("input[name='vilID']").each(function(i){
			$j(this).removeAttr("disabled"); 
		});
	}
	$j("input[name='vilID']:first").parents('ul').show();
	$j("input[name='vilID']").parents('div.checkedSelect').children('h4').click();
	return false;
}

function checkCheckedSelect(event){
	checkbox = event.target;
	if(!$j(checkbox).checked && $j(checkbox).parents('li:first').siblings('li').contents(':checkbox').filter(':checked').length == 0) {
		$j(checkbox).parents('li:first').siblings('li').contents(':checkbox').attr('checked', 'checked');
	} else return true;
}

function saveSearch() {
	ajaxSubmit($j('form#refineSearch'), '/homes/ajaxSaveSearch.cfm');
	return false;
}
