// JavaScript Document

var searchType = "";

function searchInit(type, category_id, sub_category_id, region_id, district_id, suburb_id, lowPrice, highPrice, bedrooms) {
	
	if (type == "rent") {
		searchType = "rent";
		categories = listing_types[1].children;
		document.searchForm.type[1].checked = true;
	} else {
		searchType = "buy";
		categories = listing_types[0].children;
		document.searchForm.type[0].checked = true;
	}

	var sub_categories = nodeSelectBox (categories, 'category_id', category_id, false, false);
	document.getElementById('category_id').onchange = changeCategory;
	nodeSelectBox (sub_categories, 'sub_category_id', sub_category_id, 'All types', false);

	var districts = nodeSelectBox (regions, 'region_id', region_id, 'All regions', false);
	document.getElementById('region_id').onchange = changeRegion;
	var suburbs = nodeSelectBox (districts, 'district_id', district_id, 'All districts', !region_id);
	document.getElementById('district_id').onchange = changeDistrict;
	nodeSelectBox (suburbs, 'suburb_id', suburb_id, 'All suburbs', (!region_id || !district_id));
	
	setPrices(type, lowPrice, highPrice);
	if (setBedrooms()) document.getElementById('bedrooms').selectedIndex = bedrooms;
}

function changeType() {
	if (getType() != searchType) {
		searchType = getType();
		var categories = new Array ();
		if (searchType == "rent") {
			categories = listing_types[1].children;
		} else {
			categories = listing_types[0].children;
		}
		var sub_categories = nodeSelectBox (categories, 'category_id', false, false, false);
		document.getElementById('category_id').onchange = changeCategory;
		nodeSelectBox (sub_categories, 'sub_category_id', false, 'All types', false);
		setPrices(searchType, false, false);
		setBedrooms ();
	}
}

function changeCategory() {
	var categories = new Array ();
	if (getType() == "rent") {
		categories = listing_types[1].children;
	} else {
		categories = listing_types[0].children;
	}
	var sub_categories = new Array ();
	var category_id = this.options[this.selectedIndex].value;
	var category_name = this.options[this.selectedIndex].text;
	for (var i = 0; i < categories.length; i++) {
		if (categories[i].id == category_id) sub_categories = categories[i].children;
	}
	nodeSelectBox (sub_categories, 'sub_category_id', false, 'All '+category_name, !category_id);
	setBedrooms ();
}

function changeRegion() {
	var districts = new Array ();
	var region_id = this.options[this.selectedIndex].value;
	for (var i = 0; i < regions.length; i++) {
		if (regions[i].id == region_id) districts = regions[i].children;
	}
	var suburbs = nodeSelectBox (districts, 'district_id', false, 'All districts', !region_id);
	document.getElementById('district_id').onchange = changeDistrict;
	nodeSelectBox(suburbs, 'suburb_id', false, 'All suburbs', true);
}

function changeDistrict() {
	var suburbs = new Array ();
	var district_id = this.options[this.selectedIndex].value;
	var region = document.getElementById('region_id');
	var region_id = region.options[region.selectedIndex].value;
	for (var i = 0; i < regions.length; i++) {
		if (regions[i].id == region_id) {
			for (var j = 0; j < regions[i].children.length; j++) {
				if (regions[i].children[j].id == district_id) suburbs = regions[i].children[j].children;
			}
		}
	}
	nodeSelectBox(suburbs, 'suburb_id', false, 'All suburbs', !district_id);
}

function setPrices(type, lowPrice, highPrice) {
	var lowSelect = document.getElementById("price_min");
	var highSelect = document.getElementById("price_max");
	var newLowSelect = $.SELECT({className: "half", id: "price_min", name: "price_min"});
	var newHighSelect = $.SELECT({className: "half", id: "price_max", name: "price_max"});	
	var useValue = new Array();
	var useText = new Array();
	if (type == "buy") { 
		useValue = BuyValue;
		useText = BuyText;
	} else {
		useValue = RentValue;
		useText = RentText;
	}

	newLowSelect.appendChild ($.OPTION({
		text: '0',
		innerText: '0',
		value: 0,
		selected: !lowPrice
	}));
	
	for (var i = 0; i < useValue.length; i++) {
		var lowSelected = (lowPrice && useValue[i] == lowPrice);
		var highSelected = (highPrice && useValue[i] == highPrice);
		newLowSelect.appendChild ($.OPTION({
			text: useText[i],
			innerText: useText[i],
			value: useValue[i],
			selected: lowSelected
		}));
		newHighSelect.appendChild ($.OPTION({
			text: useText[i],
			innerText: useText[i],
			value: useValue[i],
			selected: highSelected
		}));
	}
	
	newHighSelect.appendChild ($.OPTION({
		text: 'MAX',
		innerText: 'MAX',
		value: 0,
		selected: !highPrice
	}));
	
	lowSelect.parentNode.replaceChild (newLowSelect, lowSelect);
	highSelect.parentNode.replaceChild (newHighSelect, highSelect);
}

function setBedrooms () {
	var bedroomDiv = document.getElementById('bedroomsDiv');
	var category_name = document.getElementById('category_id').options[document.getElementById('category_id').selectedIndex].text;
	if (category_name == "Residential") {
		if (bedroomDiv.style) {
			bedroomDiv.style.visibility = 'visible';
		} else {
			bedroomDiv.visibility = 'show';
		}
		return true;
	} else {
		document.getElementById('bedrooms').selectedIndex = 0;
		if (bedroomDiv.style) {
			bedroomDiv.style.visibility = 'hidden';
		} else {
			bedroomDiv.visibility = 'hide';
		}
		return false;
	}
}

function getType() {
	for (var i = 0; i < document.searchForm.type.length; i++) {
		if (document.searchForm.type[i].checked) return document.searchForm.type[i].value;
	}
	return false;
}


