var lastResult = Array();
var validSuburb = false;

var direction = null;

function findSuburbByName(name) {
	if (name.length < 3) {
	  alert('You must specify at least 3 letters for the suburb search.');
	  return;
	}
	lastResult = Array();
	AjaxUpdater.Update("GET", "/Services/ListSuburbs/name/"+name, onFindSuburbByNameResponse);
}

function onFindSuburbByNameResponse() {
	if(Ajax.checkReadyState("status") == "OK") {
		eval("var suburbs = ("+Ajax.getResponse()+")");
		lastResult = suburbs;
		validSuburb = false;
		if (suburbs.length == 0) {
			document.getElementById("status").innerHTML = "No results";
			setSelection(-1);
			return;
		} else if (suburbs.length == 1) {
			document.getElementById("status").innerHTML = "";
			document.getElementById("suburblistdiv").style.display = "none";
			setSelection(0);
			return;				
		} else {
			document.getElementById("status").innerHTML = "";
			document.getElementById("suburblistdiv").style.display = "";
			var SuburbList = document.getElementById("suburblist");
			SuburbList.options.length = 0;
			for ( i in suburbs) {
				if (suburbs.hasOwnProperty(i))
					SuburbList[SuburbList.options.length] = new Option(suburbs[i].toString, suburbs[i].suburb_id);
			}
			setSelection(0);
			return;		
		}
	}
}

function findAreaBySuburbId(suburb_id) {
	if (name.length < 3) {
	  alert('You must specify at least 3 letters for the suburb search.');
	  return;
	}
	lastResult = Array();
	AjaxUpdater.Update("GET", "/Services/ListArea/suburb_id/"+suburb_id, onfindAreaBySuburbIdResponse);
}

function onfindAreaBySuburbIdResponse() {
	if(Ajax.checkReadyState("status") == "OK") {
		eval("var suburbs = ("+Ajax.getResponse()+")");
		lastResult = suburbs;
		validSuburb = false;
		if (suburbs.length == 0) {
			document.getElementById("status").innerHTML = "No results";
			setSelection(-1);
			return;
		} else if (suburbs.length == 1) {
			document.getElementById("status").innerHTML = "";
			document.getElementById("suburblistdiv").style.display = "none";
			setSelection(0);
			return;				
		} else {
			document.getElementById("status").innerHTML = "";
			document.getElementById("suburblistdiv").style.display = "";
			var SuburbList = document.getElementById("suburblist");
			SuburbList.options.length = 0;
			for ( i in suburbs) {
				if (suburbs.hasOwnProperty(i))
					SuburbList[SuburbList.options.length] = new Option(suburbs[i].toString, suburbs[i].suburb_id);
			}
			setSelection(0);
			return;		
		}
	}
}

function findSuburbById(id) {
	if (id < 0) {
	  alert('An invalid id has been specified.');
	  return;
	}
	lastResult = Array();
	AjaxUpdater.Update("GET", "/Services/ListSuburbs/suburb_id/"+id, onFindSuburbByIdResponse);
}

function onFindSuburbByIdResponse() {
	if(Ajax.checkReadyState("status") == "OK") {
		eval("var suburbs = ("+Ajax.getResponse()+")");
		lastResult = suburbs;
		validSuburb = false;
		if (suburbs.length == 0) {
			document.getElementById("status").innerHTML = "No results";
			setSelection(-1);
			return;
		} else if (suburbs.length == 1) {
			document.getElementById("status").innerHTML = "";
			document.getElementById("suburblistdiv").style.display = "none";
			setSelection(0);
			var form = document.getElementById("form");
			return;				
		} else {
			document.getElementById("status").innerHTML = "";
			document.getElementById("suburblistdiv").style.display = "";
			var SuburbList = document.getElementById("suburblist");
			SuburbList.options.length = 0;
			for ( i in suburbs) {
					if (suburbs.hasOwnProperty(i))
						SuburbList[SuburbList.options.length] = new Option(suburbs[i].toString, suburbs[i].suburb_id);
			}
			setSelection(0);
			return;		
		}
	}
}

function setSelection(index) {
	if ( (index < 0) || (index >= lastResult.length) ) {
		document.getElementById("state").value = "";
		document.getElementById("postcode").value = "";	
		document.getElementById("suburb_id").value = "";
		document.getElementById("county").value = "";
		document.getElementById("county_id").value = "";
		validSuburb = false;
		return;
	}
	document.getElementById("suburb").value = lastResult[index].name;
	document.getElementById("state").value = lastResult[index].statename;
	document.getElementById("postcode").value = lastResult[index].post_code;
	document.getElementById("suburb_id").value = lastResult[index].suburb_id;
	document.getElementById("county").value = lastResult[index].county_name;
	document.getElementById("county_id").value = lastResult[index].county_id;

	validSuburb = true;
}


function formSubmit() {

	var min = 0;
	var valid = true;
	
	if (direction =='next')
		min = 1;
	valid = validate(min,document.getElementById('destination_contact_list'));
	if (direction == 'prev')
		return true;
	
	if (valid)
	{
		valid = validate(min,document.getElementById('client_contact_list'));
		if (valid)
			if (validSuburb) {
			  valid = true;
			} else {
				alert('no suburb');
				valid = false;
			}
	}
	
	return valid;
}