var asTimeout = null;
var searchCrit;
var mouseoverflag = false;
var xMarker = null;

function clearTimer() {
	if (asTimeout != null) {
		clearTimeout(asTimeout);
		document.getElementById("results").style.display = "none";
	}
}

function startTimer(obj, event) {
	if (obj.value.length != 0) {
		if (event.keyCode == 13) {
			searchCrit = obj.value.replace(/\'/g, "\\'");
			fireTimer();
		} else {
			searchCrit = obj.value.replace(/\'/g, "\\'");
			asTimeout = setTimeout("fireTimer()", 1500);
		}
	}
}

function fireTimer() {
	var bg = "#ffffff url(img/busy.gif) no-repeat center right";
	document.getElementById('search').style.background = bg;
	if (document.getElementById("r1").checked) {
		//AJAXCall("getLocations", encodeURI("crit=" + searchCrit + "&type=1"), "gotSearchResults(rep)");
		GoogleCall(encodeURI(searchCrit), "gotGoogleRes(rep)");
	} else {
		AJAXCall("getLocations", encodeURI("crit=" + searchCrit + "&type=2"), "gotSearchResults(rep)");
	}
}

function gotGoogleRes(obj) {
	if (obj.Status.code == 200) {
		var str = "";
		var found = false;
		for (var n = 0; n < obj.Placemark.length; n++) {
			if (obj.Placemark[n].AddressDetails.Country) {
				if (obj.Placemark[n].AddressDetails.Country.CountryNameCode == "ZA") {
					found = true;
					str += "<div class='resultline'' onclick='cityChanged(\"" + obj.Placemark[n].Point.coordinates[1] + "," + obj.Placemark[n].Point.coordinates[0] + ",12\")' onmouseover='overResult(this, " + obj.Placemark[n].Point.coordinates[1] + ", " + obj.Placemark[n].Point.coordinates[0] + ")' onmouseout='outResult(this)'>" + obj.Placemark[n].address + "</div>";
				}
			}
		}
		if (!found) {
			document.getElementById("results").innerHTML = "<div class='resultline' onmouseover='mouseoverflag=true' onmouseout='mouseoverflag=false' >" + searchCrit.replace(/\\'/g, "'") + " - Not found</div>";
		} else {
			document.getElementById("results").innerHTML = str;
		}
	} else {
		document.getElementById("results").innerHTML = "<div class='resultline' onmouseover='mouseoverflag=true' onmouseout='mouseoverflag=false' >" + searchCrit.replace(/\\'/g, "'") + " - Not found</div>";
	}
	document.getElementById('search').style.backgroundImage = "none";
	document.getElementById("results").style.display = "block";
}

function callbackSearchResult(oResponse) {
	var arr = oResponse.SearchResults;
	if (arr != null) {
		alert("Got " + arr.length + " results");
	} else {
		alert('No results found.');
	}
}

function gotSearchResults(obj) {

	if (obj[0][0] == "none") {
		document.getElementById("results").innerHTML = "<div class='resultline' onmouseover='mouseoverflag=true' onmouseout='mouseoverflag=false' >" + searchCrit.replace(/\\'/g, "'") + " - Not found</div>";
	} else {
		var str = "";
		for (var n = 0; n < obj.length; n++) {
			str += "<div class='resultline'' onclick='cityChanged(\"" + obj[n][1] + "," + obj[n][2] + "," + obj[n][3] + "\")' onmouseover='overResult(this, " + obj[n][1] + ", " + obj[n][2] + ")' onmouseout='outResult(this)'>" + obj[n][0] + "</div>";
		}
		document.getElementById("results").innerHTML = str;
	}
	document.getElementById('search').style.backgroundImage = "none";
	document.getElementById("results").style.display = "block";
}

function overResult(obj, xLat, xLng) {
	mouseoverflag=true;
	obj.style.color="blue";
	if (xMarker != null) {
		map.removeOverlay(xMarker);
	}
	var point = new GPoint(xLng, xLat);
	var markerOptions = { icon:crossIcon };
	xMarker = new GMarker(point, markerOptions);

	GEvent.addListener(xMarker, "mouseover", function(latlng) {
		showName(obj.innerHTML, latlng);
	});

	GEvent.addListener(xMarker, "mouseout", function() {
		hideName();
	});

	map.addOverlay(xMarker);
}

function outResult(obj) {
	mouseoverflag=false;
	obj.style.color="black";
}

function closeResults() {
	if (!mouseoverflag) {
		document.getElementById("results").style.display = "none";
	}
}