var searchActiveTab = 1;
var searchTabsState = new Array(1,0,0,0,0,0,0,0);
var searchTabsChanges = new Array(0,0,0,0,0,0,0,0);

var advancedSearchFormOpened = true;

function showAdvancedSearch()
{
	var form = new getObj('advancedSearchForm');
	if (form.ready || ((form = new getObj('quickSearchCriteriaForm')) && form.ready)) {
		if (!advancedSearchFormOpened) {
			form.style.display = "block";
			form.style.visibility = "visible";
			advancedSearchFormOpened = true;
		}
		else {
			form.style.display = "none";
			form.style.visibility = "hidden";
			advancedSearchFormOpened = false;
		}
	}
	return false;
}

function changeSearchTab(tabId)
{
	if (tabId > searchTabsState.length || tabId <= 0) {
		alert("Tab Index Out of Range");
		return;
	}
	
	for (n = 0; n < searchTabsState.length; n++) {
		if (searchTabsState[n] == 1) {
			searchTabsState[n] = 0;
			var oldtab = new getObj('searchCFTab' + (n + 1));
			if (oldtab.ready) {
				oldtab.obj.className = "searchCriteriaFormTab tab";
			}
			var oldcontent = new getObj('searchCFContent' + (n + 1));
			if (oldcontent.ready) {
				oldcontent.style.zIndex = 0;
				oldcontent.style.visibility = 'hidden';
				oldcontent.style.display = 'none';
			}
		}
	}
	
	searchTabsState[tabId - 1] = 1;
	
	var tab = new getObj('searchCFTab' + tabId);
	if (tab.ready) {
		tab.obj.className = "searchCriteriaFormTab tab selected";
	}
	var content = new getObj('searchCFContent' + tabId);
	if (content.ready) {
		content.style.zIndex = 1;
		content.style.visibility = 'visible';
		content.style.display = 'block';
	}
	/*
	var odebug = new getObj("debug");
	if (odebug.ready) {
		odebug.obj.innerHTML = printProps(content.style, 'style');
	}
	*/
	return;
}


function select_postcode(postcode_id)
{
	var postcode = new getObj("filter_postcode_id");
	for (x = 0; x < postcode.obj.options.length; x++) {
		if (postcode.obj.options[x].value == postcode_id) {
			postcode.obj.options[x].selected = true;
			rpc_select_area('county', 2);
			return;
		}
	}
	
	self.setTimeout("select_postcode("+postcode_id+")",100);
}

function select_county(county_id)
{
	var county = new getObj("filter_county_id");
	for (x = 0; x < county.obj.options.length; x++) {
		if (county.obj.options[x].value == county_id) {
			county.obj.options[x].selected = true;
			rpc_select_area('county', 1);
			return;
		}
	}
	
	self.setTimeout("select_county("+county_id+")",100);
}

function select_town(town_id)
{
	var town = new getObj("filter_town_id");
	for (x = 0; x < town.obj.options.length; x++) {
		if (town.obj.options[x].value == town_id) {
			town.obj.options[x].selected = true;
			rpc_select_area('town', 1);
			return;
		}
	}
	
	self.setTimeout("select_town("+town_id+")",100);
}

function rpc_select_area(obj, mode)
{
	var func = populate_select;
	var atts;
	var cmd;
	var id;
	var region = new getObj("filter_region_id");
	var county = new getObj("filter_county_id");
	var postcode = new getObj("filter_postcode_id");
	var town = new getObj("filter_town_id");
	var district = new getObj("filter_district_id");
	var pobj = obj;
	
	switch (obj) {
		case 'region': {
			id = parseInt(region.obj.options[region.obj.selectedIndex].value);
			if (!(id > 0)) {
				eraseList(county.obj);
				if (postcode.ready) {
					eraseList(postcode.obj);
				}
				eraseList(town.obj);
				if (district.ready) {
					eraseList(district.obj);
				}
				var districtc = new getObj ("formblock_filter_district");
				if (districtc) {
					districtc.style.block = "hidden";
					districtc.style.visibility = "hidden";
				}
				return;
			}
			if (mode == 2) {
				if (postcode.ready) {
					atts = new Array("Postal Areas...", postcode);
				}
			}
			else {
				atts = new Array("Counties...", county);
			}
			cmd = "areas.getCounties" + mode;
			obj = county.obj;
			eraseList(county.obj);
			eraseList(postcode.obj);
			eraseList(town.obj);
			insertOption(county.obj, new Option("Searching...", 0, false, false));
			county.obj.disabled = false;
			if (postcode.ready) {
				insertOption(postcode.obj, new Option("Searching...", 0, false, false));
				postcode.obj.disabled = false;
			}
			if (mode == 2) {
			
			}
			else {
				rpc_select_area(pobj, 2);
			}
			if (id == 5) {
				enable_london_mode('');
			}
			else {
				disable_london_mode();
			}
			break;
		}
		case 'county': {
			if (district.ready) {
				eraseList(district.obj);
			}
			var districtc = new getObj ("formblock_filter_district");
			if (districtc.ready) {
				districtc.style.block = "hidden";
				districtc.style.visibility = "hidden";
			}
			
			if (mode == 2) {
				if (postcode.ready) {
					id = parseInt(postcode.obj.options[postcode.obj.selectedIndex].value);
					if (!(id > 0)) {
						eraseList(town.obj);
						return;
					}
					county.obj.disabled = true;
				}
			}
			else {
				id = parseInt(county.obj.options[county.obj.selectedIndex].value);
				if (!(id > 0)) {
					eraseList(town.obj);
					return;
				}
				if (postcode.ready) {
					postcode.obj.disabled = true;
				}
			}
			atts = new Array("Towns...", town);
			cmd = "areas.getTowns" + mode;
			obj = town.obj;
			
			break;
		}
		case 'town': {
			if (district.ready) {
				if (town.ready) {
					id = parseInt(town.obj.options[town.obj.selectedIndex].value);
				}
				if (!(id > 0)) {
					eraseList(district.obj);
				}
				atts = new Array("Districts...", district);
				cmd = "areas.getDistricts";
				obj = district.obj;
			}
			else {
				return;
			}
			break;
		}
	}
	
	eraseList(obj);
	insertOption(obj, new Option("Searching...", 0, false, false));
	
	//alert("Sending " + cmd + " for " + id + " to " + func + " with " + atts);
	myRPC(cmd,id,func,atts);
}

function populate_select(atts, values)
{
	if (typeof(atts) == "object" && atts.constructor == Array) {
		if (atts.length >= 1) {
			if (typeof(atts[0]) == "object") {
				var obj = atts[0].obj;
			}
			else if (typeof(atts[1]) == "object") {
				var obj = atts[1].obj;
			}
			
			if (typeof(atts[0]) == "string") {
				var top = atts[0];
			}
			else if (typeof(atts[1]) == "string") {
				var top = atts[1];
			}
		}
		else {
			return;
		}
	}
	else if (typeof(atts) != "object") {
		return;
	}
	else {
		var obj = atts;
	}
	eraseList(obj);
	
	for (n = 0; n < values.length; n++) {
		if (values[n].length >= 3) {
			switch (values[n][2]) {
				case 'District': {
					if (obj.name != 'filter_district') {
						values[n][0] = 'D' + values[n][0];
					}
					break;
				}
			}
			values[n][1] = values[n][1].replace("&apos;", "'");
		}
		var item = new Option(values[n][1], values[n][0], false, false);
		insertOption(obj, item, n);
	}
	
	if (values.length == 1 && parseInt(values[0][0]) < 0) {
		if (obj.name == 'filter_district') {
			eraseList(obj);
			var district = new getObj('formblock_filter_district');
			if (district.ready) {
				district.style.display = "none";
				district.style.visibility = "hidden";
			}
		}
	}
	else if (obj.name == 'filter_district') {
		var district = new getObj('formblock_filter_district');
		if (district.ready) {
			district.style.display = "block";
			district.style.visibility = "visible";
		}
	}
	
	if (typeof(top) == "string") {
		insertOption(obj, new Option(top, "", true, true), 0);
	}
}

function RPCPostCodeLookup(obj)
{
	var o = new getObj('filter_lookup_id');
	if (o.ready) {
		var func = RPCPostCodeLookupResponse;
		var atts = '';
		var cmd = "areas.postCodeLookup";
		var id = o.obj.value;
		
		myRPC(cmd,id,func,atts);
		return false;
	}
}


function RPCPostCodeLookupResponse(atts, values)
{
	for (n = 0; n < values.length; n++) {
		switch (n) {
			case 0:
			default: {
				break;
			}
			case 1: {
				// Region
				var region_id = values[n][0];
				var region = new getObj("filter_region_id");
				for (x = 0; x < region.obj.options.length; x++) {
					if (region.obj.options[x].value == region_id) {
						region.obj.options[x].selected = true;
						rpc_select_area('region', 1);
						break;
					}
				}
				break;
			}
			case 2: {
				// County
				var county_id = values[n][0];
				self.setTimeout("select_county("+county_id+")",100);
				break;
			}
			case 3: {
				// Town
				var town_id = values[n][0];
				self.setTimeout("select_town("+town_id+")",100);
				break;
			}
		}
	}
}

function search_select_step1(obj)
{
	if (obj && obj.value) {
		switch (parseInt(obj.value)) {
			case 2: {
				// Buy Business
				var p = new getObj('formblock_filter_type');
				var b = new getObj('formblock_filter_business_type');
				if (p.ready) {
					p.style.display = 'none';
					p.style.visibility = 'hidden';
				}
				if (b.ready) {
					b.style.display = 'block';
					b.style.visibility = 'visible';
				}
				break;
			}
			case 1: {
				// Buy Property
				var p = new getObj('formblock_filter_type');
				var b = new getObj('formblock_filter_business_type');
				if (b.ready) {
					b.style.display = 'none';
					b.style.visibility = 'hidden';
				}
				if (p.ready) {
					p.style.display = 'block';
					p.style.visibility = 'visible';
				}
				break;
			}
		}
	}
}

function enable_london_mode(code)
{
	var county = new getObj("formblock_filter_county");
	if (county.ready) {
		if (county.ready) {
			county.style.display = 'none';
			county.style.visibility = 'hidden';
		}
	}
	var postcode = new getObj("formblock_filter_postcode");
	if (postcode.ready) {
		if (postcode.ready) {
			postcode.style.display = 'block';
			postcode.style.visibility = 'visible';
		}
	}
}

function disable_london_mode()
{
	var county = new getObj("formblock_filter_county");
	if (county.ready) {
		if (county.ready) {
			county.style.display = 'block';
			county.style.visibility = 'visible';
		}
	}
	var postcode = new getObj("formblock_filter_postcode");
	if (postcode.ready) {
		if (postcode.ready) {
			postcode.style.display = 'none';
			postcode.style.visibility = 'hidden';
		}
	}
	var district = new getObj('formblock_filter_district');
	if (district.ready) {
		district.style.display = "none";
		district.style.visibility = "hidden";
	}
}