var Sapi ;
var Action  = new Array();

function LoadSuburbAPI() {
	Sapi = new SuburbAPIClass() ;
	//Sapi.GetSuburbAllList();	

	document.getElementById('inputSuburb').setAttribute('autocomplete','off');

	if (window.stop) {
		window.onkeyup = CheckKeyPress ;
	} else {
		document.body.onkeyup = function () { 
			CheckKeyPress(event) ;
		}
	}
}

function SelectSuburb(Suburb,State) {
	document.getElementById('inputState').value = State ;
	document.getElementById('inputSuburb').value = Suburb ;
	hideSuburbList();
	document.getElementById('inputState').onkeydown = function() { return true; } ;
	document.getElementById('inputSuburb').focus();
}

function SeeSuburb(Str) {
	if (Sapi)
	{
		var Arr = Sapi.MatchSuburb(document.getElementById('inputState').value, Str, 100);	
		if (Arr.length>0)
		{
			dispListSuburb(Arr);
		} else {
			hideSuburbList();
		}
	}
}

function dispListSuburb(Arr)
{
	var H = "" ;
	var Regex ;

	Action = new Array();

	for (var i = 0; i < Arr.length; i++) {
		var D = Arr[i].split("\t");
		Regex = /\\\'/ ;
		D[1] = D[1].replace(Regex,"'");
		D[3] = D[3].replace(Regex,"'");
		Regex = /\'/ ;
		D[1] = D[1].replace(Regex,"\'");
		D[3] = D[3].replace(Regex,"\'");
		Regex = /\"/ ;
		D[1] = D[1].replace(Regex,"&quot;");
		D[3] = D[3].replace(Regex,"&quot;");

		var N = D[0].split(",");
		var SubName = N[0].titleCase();
		var StateName = Trim(N[1]);

		Action.push("SelectSuburb('"+D[1]+"','"+D[3]+"')");

		H += "<tr><td onmouseover=\"SetTDMouseOver("+i+")\" nowrap class=\"content\" style=\"cursor: default;\" onclick=\"javascript: SelectSuburb('"+D[1]+"','"+D[3]+"')\">"+SubName+", "+StateName+"</td></tr>" ;
	}

	KP_TableRow = Arr.length;

	if (Arr.length>0)
	{		
		var LS = document.getElementById('ListSuburbs');
		LS.style.position="absolute";
		LS.style.top=20;
		LS.style.left=0;		
		LS.style.display='';
		LS.style.visibility='visible';
		LS.style.height = "150px" ;
		LS.style.height = "200px" ;
		LS.style.overflow = "auto" ;
		LS.style.padding = "0px" ;
		LS.style.border = "1px solid black" ;
		
		KP_TablePos = 0 ;
		LS.innerHTML = '<table width="'+((window.stop)?'100%':'150')+'" cellspacing="0" cellpadding="2" bgcolor="#FFFFFF" id="TableKu"><tbody>'+H+'</tbody></table>' ;
		KP_TableTop = document.getElementById('inputState').value ;
		KP_setTableHighlight();

		var T = document.getElementById('TableKu') ;
		if (parseInt(LS.style.height,10) > T.offsetHeight)
		{
			LS.style.height = (T.offsetHeight)+"px" ;
		}	
	
	} else {
		hideSuburbList();
	}
}

function SetTDMouseOver(D) {
	KP_TablePos = D + 1;
	KP_setTableHighlight();
}

function hideSuburbList()
{
	var LS = document.getElementById('ListSuburbs');
	LS.innerHTML = "" ;
	LS.style.display='none';
	LS.style.visibility='hidden';
}

//---------------------------------------------------------------------------------------------------------------------

var KP_TableTop = "" ;
var KP_TableRow = 10 ;
var KP_TablePos = 0 ;
var KP_TableDiv = 'TableKu' ;
var KP_HighlightColor = "#FFFFFF" ;
var KP_HighlightBgColor = "#CCCCCC" ;
var KP_NormalColor = "#000000" ;
var KP_NormalBgColor = "#FFFFFF" ;
var KP_NormalColor, KP_NormalBgColor ;

function CheckKeyPress(e) {
	var KC = e.keyCode ;
	if (KC == 38 || KC == 40) {
		if (KC == 38) {
			if (KP_TablePos<=1)
			{
				KP_TablePos = 0 ;
				document.getElementById('inputSuburb').focus();
				document.getElementById('inputState').onkeydown = function() { return true; } ;
				document.getElementById('inputState').value = KP_TableTop ;
			} else {
				KP_TablePos = (KP_TablePos<=1)?1:KP_TablePos-1;
			}
		}
		if (KC == 40) {
			document.getElementById('inputState').focus();
			if (document.getElementById(KP_TableDiv))
			{
				document.getElementById('inputState').onkeydown = function() { return false; } ;
				document.getElementById('inputState').value = KP_TableTop ;
			}
			KP_TablePos = (KP_TablePos>=KP_TableRow)?KP_TableRow:KP_TablePos+1;
		}
		KP_setTableHighlight();
		if (document.getElementById(KP_TableDiv))
		{
			if (document.getElementById(KP_TableDiv).tBodies[0].rows[KP_TablePos-1])
			{
				document.getElementById('ListSuburbs').scrollTop = document.getElementById(KP_TableDiv).tBodies[0].rows[KP_TablePos-1].offsetTop ;	
			}
		}
	}

	if (KC == 13) {
		//alert("Pilih "+document.getElementById(KP_TableDiv).tBodies[0].rows[KP_TablePos-1].cells[0].innerHTML);
		eval(Action[KP_TablePos-1]);
	}
}

function KP_setTableHighlight() {
	if (document.getElementById(KP_TableDiv)) {
		var T = document.getElementById(KP_TableDiv);
		for (var i = 0; i < T.tBodies[0].rows.length; i++) {
			var Color = (i == KP_TablePos-1)?KP_HighlightColor:KP_NormalColor;
			var BgColor = (i == KP_TablePos-1)?KP_HighlightBgColor:KP_NormalBgColor;
			T.tBodies[0].rows[i].style.color = Color ;
			T.tBodies[0].rows[i].style.backgroundColor = BgColor ;
		}
	}
}

//---------------------------------------------------------------------------------------------------------------------

function Trim(D) {
	if (D)
	{
		var Regex ;
		Regex = /\s*$/ ;
		D = D.replace(Regex,"");
		Regex = /^\s*/ ;
		D = D.replace(Regex,"");
	}
	return D ;
}

String.prototype.titleCase = function() {
	var parts = this.split(" ");
	if (parts.length==0) {
		return "";
	}
	for (var i=0;i<parts.length;i++) {
		parts[i] = parts[i].substr(0,1).toUpperCase()+parts[i].substr(1,parts[i].length).toLowerCase();
	}
	return parts.join(" ");
}