// 
var DIV_BG_COLOR = "#FFFFFF";
// 
var DIV_HIGHLIGHT_COLOR = "#a5e0f5";
// 
var DIV_FONT = "Arial";
// 
var DIV_PADDING = "1px";
// 
var DIV_BORDER = "0px solid #a5e0f5";


// 
var queryField;
//add by daniel 
/*var queryText;
var queryPuLandmark;
var queryDestLandmark;*/
// 
var divName;
// 
var ifName;
// 
var lastVal = "";
// 
var val = "";
// 
var globalDiv;
// 
var divFormatted = false;

/*add by daniel for save iframe width, height*/
var iFrameDivWidth=0;
var iFrameDivHeight=0;
var iFrameDivTop=0;
var iFrameDivLeft=0;
var iFrameDivZindex=0;
var ShowDivBoolean=false;	//control div show or not
/**
*/
function InitQueryCode (queryFieldName, hiddenDivName,queryTextName)
{
	// 
	if (queryTextName!=""){
		queryField = document.getElementById(queryTextName);
	}else{
		queryField = document.getElementById(queryFieldName);
	}	
	//queryField = document.getElementById(queryTextName);
	//queryField.onblur = hideDiv;
	queryField.onmouseover =  hideDiv;	
	//queryField.onmouseout  =  hideDiv;
	queryField.onkeydown = keypressHandler;
	// 
	queryField.autocomplete = "off";

	//
	if (hiddenDivName)
	{
		divName = hiddenDivName;
	}
	else
	{
		divName = "querydiv";
	}
	
	// IFramename
	ifName = "queryiframe";
	
	// 
	setTimeout("mainLoop()", 100);
}


function getDiv (divID)
{

//	if (!globalDiv)
//	{

		
		if (!document.getElementById(divID))
		{
			var newNode = document.createElement("div");
			newNode.setAttribute("id", divID);
			document.body.appendChild(newNode);
		}
	
		globalDiv = document.getElementById(divID);
		//InitQueryCode('txtPNYCStrName','','txtDNYCStrName','txtPNYCLandmark','txtDNYCLandmark','txtPStrName','txtDStrName','txtPLmk_none','txtDLmk_none');
		
		var x = queryField.offsetLeft;
		var y = queryField.offsetTop + queryField.offsetHeight;
		var parent = queryField;
		while (parent.offsetParent)
		{
			parent = parent.offsetParent;
			x += parent.offsetLeft;
			y += parent.offsetTop;
		}
		//divFormatted=false;
		//if (!divFormatted)
		//{
		try{
			if (div.style.visibility == "visible"){
			globalDiv.style.backgroundColor = DIV_BG_COLOR;
			globalDiv.style.fontFamily = DIV_FONT;
			globalDiv.style.padding = DIV_PADDING;
			//globalDiv.style.border = DIV_BORDER;
			globalDiv.style.width = "100px";
			globalDiv.style.fontSize = "90%";

			globalDiv.style.position = "absolute";
			globalDiv.style.left = x + "px";
			globalDiv.style.top = y + "px";
			globalDiv.style.visibility = "hidden";
			globalDiv.style.zIndex = 10000;
			//add by daniel for iFrame 12/25
			iFrameDivWidth = globalDiv.offsetWidth;
			iFrameDivHeight = globalDiv.offsetHeight;
			iFrameDivTop = globalDiv.style.top;
			iFrameDivLeft = globalDiv.style.left;
			iFrameDivZindex = globalDiv.style.zIndex - 1;
		
			divFormatted = true;
			div.style.visibility == "visible"
			}			
		}
		catch(e){
			globalDiv.style.backgroundColor = DIV_BG_COLOR;
			globalDiv.style.fontFamily = DIV_FONT;
			globalDiv.style.padding = DIV_PADDING;
			//globalDiv.style.border = DIV_BORDER;
			globalDiv.style.width = "100px";
			globalDiv.style.fontSize = "90%";

			globalDiv.style.position = "absolute";
			globalDiv.style.left = x + "px";
			globalDiv.style.top = y + "px";
			globalDiv.style.visibility = "hidden";
			globalDiv.style.zIndex = 10000;
			//add by daniel for iFrame 12/25
			iFrameDivWidth = globalDiv.offsetWidth;
			iFrameDivHeight = globalDiv.offsetHeight;
			iFrameDivTop = globalDiv.style.top;
			iFrameDivLeft = globalDiv.style.left;
			iFrameDivZindex = globalDiv.style.zIndex - 1;
			
			divFormatted = true;		
		}
		//}
//	}

	return globalDiv;
}


function showQueryDiv(resultArray)
{

	var div = getDiv(divName);
	
	while (div.childNodes.length > 0)	
	div.removeChild(div.childNodes[0]);

    //InitQueryCode('txtPNYCStrName','','txtDNYCStrName','txtPNYCLandmark','txtDNYCLandmark','txtPStrName','txtDStrName','txtPLmk_none','txtDLmk_none');	
	for (var i = 0; i < resultArray.length; i++)
	{

		var result = document.createElement("div");

		result.style.cursor = "pointer";
		result.style.padding = "2px 0px 2px 0px";

		_unhighlightResult(result);
	
		result.onmousedown = selectResult;
		result.onmouseover = highlightResult;
		result.onmouseout = unhighlightResult;


		var result1 = document.createElement("span");

		result1.className = "result1";
		result1.style.textAlign = "left";
		//result1.style.fontWeight = "bold";
		var strresultArray=resultArray[i].split('/');
		//declare some value to some text
		var strresultcounty=strresultArray[0];
		var strresultvalue=strresultArray[1];		
		var strresultlandmark=strresultArray[2];
		var strresultst_name=strresultArray[3];
		var strresultst_no=strresultArray[4];
		var strresultx_st=strresultArray[5];
		var strresultzip_code=strresultArray[6];
		//set all values
		document.getElementById("hidselectcounty").value=document.getElementById("hidselectcounty").value+'/'+strresultcounty;
		document.getElementById("hidselectname").value=document.getElementById("hidselectname").value+'/'+strresultvalue;
		document.getElementById("hidselectlandmark_name").value=document.getElementById("hidselectlandmark_name").value+'/'+strresultlandmark;
		document.getElementById("hidselectst_name").value=document.getElementById("hidselectst_name").value+'/'+strresultst_name;
		document.getElementById("hidselectst_no").value=document.getElementById("hidselectst_no").value+'/'+strresultst_no;
		document.getElementById("hidselectx_st").value=document.getElementById("hidselectx_st").value+'/'+strresultx_st;
		document.getElementById("hidselectzip_code").value=document.getElementById("hidselectzip_code").value+'/'+strresultzip_code;		
//		result1.innerHTML = resultArray[i];
		result1.innerHTML = strresultvalue;
		
		result.appendChild(result1);
		
		div.appendChild(result);
	}

	showDiv(resultArray.length > 0);
}

function selectResult()
{
	_selectResult(this);
}

function _selectResult(item)
{

	//InitQueryCode('txtpu_street','','txtdest_street');
	var spans = item.getElementsByTagName("span");
	if (spans)
	{
		for (var i = 0; i < spans.length; i++)
		{
			if (spans[i].className == "result1")
			{
				try{
					queryField.value = spans[i].innerHTML;
					lastVal = val = escape(queryField.value);
					mainLoop();
					queryField.focus();
					showDiv(false);
					//document.getElementById("hidonkeyormouse").value="Y";
					if (queryField.id.indexOf("P") > 0){
						select_result_all_value('P',queryField.value,queryField.id);
					}else if (queryField.id.indexOf("D") > 0){
						select_result_all_value('D',queryField.value,queryField.id);
					}
					return;				
				}catch(ex){
					showDiv(false);
					return;				
				}
			}
		}
	}
}

function highlightResult()
{
	_highlightResult(this);
}

function _highlightResult(item)
{
	item.style.backgroundColor = DIV_HIGHLIGHT_COLOR;
}

function unhighlightResult()
{
	_unhighlightResult(this);
}

function _unhighlightResult(item)
{
	item.style.backgroundColor = DIV_BG_COLOR;
}


function showDiv (show)
{
	try{
		var div = getDiv(divName);		
		if (show)
		{
			div.style.visibility = "visible";
			ShowDivBoolean=true;
		}
		else
		{
			div.style.visibility = "hidden";
			ShowDivBoolean=false;
		}
		adjustiFrame();	
	}catch(ex){
		//do nothing
	}

}


function hideDiv ()
{
	showDiv(false);
}


function adjustiFrame()
{
	
	if (!document.getElementById(ifName))
	{
		var newNode = document.createElement("iFrame");
		newNode.setAttribute("id", ifName);
		newNode.setAttribute("src", "javascript:false;");
		newNode.setAttribute("scrolling", "no");
		newNode.setAttribute("frameborder", "0");
		document.body.appendChild(newNode);
	}

	iFrameDiv = document.getElementById(ifName);
	//var div = getDiv(divName);

	try
	{		
		iFrameDiv.style.position = "absolute";
		/*iFrameDiv.style.width = div.offsetWidth;
		iFrameDiv.style.height = div.offsetHeight;
		iFrameDiv.style.top = div.style.top;
		iFrameDiv.style.left = div.style.left;
		iFrameDiv.style.zIndex = div.style.zIndex - 1;
		//iFrameDiv.style.visibility = div.style.visibility;*/
		iFrameDiv.style.width = iFrameDivWidth;
		iFrameDiv.style.height = iFrameDivHeight;
		iFrameDiv.style.top = iFrameDivTop;
		iFrameDiv.style.left = iFrameDivLeft;
		iFrameDiv.style.zIndex = iFrameDivZindex;
		if (ShowDivBoolean==true){
			iFrameDiv.style.visibility = "visible";
		}else{
			iFrameDiv.style.visibility = "hidden";
		}
		
	}
	catch (e)
	{
	}
}

//function keypressHandler (evt)
//{
	/*if (document.all['hidpu_streetonkey'].value=="Y"){
		queryField = document.getElementById('txtpu_street');
	}else if (document.all['hiddest_streetonkey'].value=="Y"){
		queryField = document.getElementById('txtdest_street');
	}else{
		queryField = document.getElementById('txtpu_street');
	}	
	
	var div = getDiv(divName);
		
	if (div.style.visibility == "hidden")
	{
		return true;
	}

	if (!evt && window.event)
	{
		evt = window.event;
	}
	var key = evt.keyCode;

	var KEYUP = 38;
	var KEYDOWN = 40;
	var KEYENTER = 13;
	var KEYTAB = 9;
		
	if ((key != KEYUP) && (key != KEYDOWN) && (key != KEYENTER) && (key != KEYTAB))
	{
		return true;
	}

	var selNum = getSelectedSpanNum(div);
	var selSpan = setSelectedSpan(div, selNum);
	
	if ((key == KEYENTER) || (key == KEYTAB))
	{
		if (selSpan)
		{
			_selectResult(selSpan);
		}
		evt.cancelBubble = true;
		return false;
	}
	else //
	{
		if (key == KEYUP)
		{
			selSpan = setSelectedSpan(div, selNum - 1);
		}
		if (key == KEYDOWN)
		{
			selSpan = setSelectedSpan(div, selNum + 1);
		}
		if (selSpan)
		{
			_highlightResult(selSpan);
		}
	}

	// 
	showDiv(true);
	return true;*/
//}

function keypressHandler (evt)
{
	//InitQueryCode('txtpu_street','',controlname);
	
	var div = getDiv(divName);
		
/*	if (div.style.visibility == "hidden")
	{
		return true;
	}*/

	if (!evt && window.event)
	{
		evt = window.event;
	}
	var key = evt.keyCode;

	var KEYUP = 38;
	var KEYDOWN = 40;
	var KEYENTER = 13;
	var KEYTAB = 9;
		
	if ((key != KEYUP) && (key != KEYDOWN) && (key != KEYENTER) && (key != KEYTAB))
	{
		return true;
	}

	var selNum = getSelectedSpanNum(div);
	var selSpan = setSelectedSpan(div, selNum);
	
	if ((key == KEYENTER) || (key == KEYTAB))
	{
		if (selSpan)
		{
			_selectResult(selSpan);
		}
		evt.cancelBubble = true;
		return false;
	}
	else //
	{
		if (key == KEYUP)
		{
			selSpan = setSelectedSpan(div, selNum - 1);
		}
		if (key == KEYDOWN)
		{
			selSpan = setSelectedSpan(div, selNum + 1);
		}
		if (selSpan)
		{
			_highlightResult(selSpan);
		}
	}

	// 
	showDiv(true);
	return true;
}

/**

*/
function getSelectedSpanNum(div)
{
	//InitQueryCode('txtPNYCStrName','','txtDNYCStrName','txtPNYCLandmark','txtDNYCLandmark','txtPStrName','txtDStrName','txtPLmk_none','txtDLmk_none');	
	var count = -1;
	var spans = div.getElementsByTagName("div");
	if (spans)
	{
		for (var i = 0; i < spans.length; i++)
		{
			count++;
			if (spans[i].style.backgroundColor != div.style.backgroundColor)
			{
				return count;
			}
		}
	}

	return -1;
}

/**
*/
function setSelectedSpan(div, spanNum)
{
	//InitQueryCode('txtPNYCStrName','','txtDNYCStrName','txtPNYCLandmark','txtDNYCLandmark','txtPStrName','txtDStrName','txtPLmk_none','txtDLmk_none');	
	var count = -1;
	var thisSpan;
	var spans = div.getElementsByTagName("div");
	if (spans)
	{
		for (var i = 0; i < spans.length; i++)
		{
			if (++count == spanNum)
			{
				_highlightResult(spans[i]);
				thisSpan = spans[i];
			}
			else
			{
				_unhighlightResult(spans[i]);
			}
		}
	}

	return thisSpan;
}

/*********************************************************************************
**fucntion change_onkey
**input: type 'P','D'
*********************************************************************************/
function change_onkey(type,controlname){
	/*if (type=="P"){
		
	if (controlname=="LandMark"){
		document.all['hidpu_landmarkonkey'].value="Y";
		document.all['hiddest_landmarkonkey'].value="N";
		document.all['hidpu_streetonkey'].value="N";
		document.all['hiddest_streetonkey'].value="N";		
	}else{
		document.all['hidpu_streetonkey'].value="Y";
		document.all['hiddest_streetonkey'].value="N";	
		document.all['hidpu_landmarkonkey'].value="N";
		document.all['hiddest_landmarkonkey'].value="N";	
	}	
	
	}else if (type=="D"){
	
	if (controlname=="LandMark"){
		document.all['hidpu_landmarkonkey'].value="N";
		document.all['hiddest_landmarkonkey'].value="Y";
		document.all['hidpu_streetonkey'].value="N";
		document.all['hiddest_streetonkey'].value="N";		
	}else{		
		document.all['hidpu_streetonkey'].value="N";
		document.all['hiddest_streetonkey'].value="Y";
		document.all['hidpu_landmarkonkey'].value="N";
		document.all['hiddest_landmarkonkey'].value="N";		
		}
	}else{
		document.all['hidpu_streetonkey'].value="N";
		document.all['hiddest_streetonkey'].value="N";
		document.all['hidpu_landmarkonkey'].value="N";
		document.all['hiddest_landmarkonkey'].value="N";
	}*/
	
	InitQueryCode('txtPNYCStrName','',controlname);
	//document.getElementById("hidonkeyormouse").value="N";	
}

 /*********************************************************************************
**function:trim
**Description:delte the leading space and the space tail
**Input:s
**Output:s
**11/23/04 - Created (Daniel)
*********************************************************************************/
function trim(s)
{
    if (s == null)
    {
        return s;
    }

    var i;
    var beginIndex = 0;
    var endIndex = s.length - 1;

    for (i=0; i<s.length; i++)
    {
        if (s.charAt(i) == ' ' || s.charAt(i) == 'กก')
        {
            beginIndex++;
        }
        else
        {
            break;
        }
    }

    for (i = s.length - 1; i >= 0; i--)
    {
        if (s.charAt(i) == ' ' || s.charAt(i) == 'กก')
        {
            endIndex--;
        }
        else
        {
            break;
        }
    }

    if (endIndex < beginIndex)
    {
        return "";
    }

    return s.substring(beginIndex, endIndex + 1);
}


/*********************************************************************************
**function:numberonly
**Description:change the numberonly 
**Input:s
**Output:s
**28/12/06 - Created (daniel)
*********************************************************************************/
function select_result_all_value(type,name,controlname){
            
	if (type=="d"||type=="D"){
		var strselectcounty=document.getElementById("hidselectcounty").value.split('/');
		var strselectname=document.getElementById("hidselectname").value.split('/');
		var strselectlandmark_name=document.getElementById("hidselectlandmark_name").value.split('/');
		var strselectst_name=document.getElementById("hidselectst_name").value.split('/');
		var strselectst_no=document.getElementById("hidselectst_no").value.split('/');									
		var strselectx_st=document.getElementById("hidselectx_st").value.split('/');		
		var strselectzip_code=document.getElementById("hidselectzip_code").value.split('/');		
		var len=strselectname.length;
		var i;
		for(i=0;i<len-1;i++){
			if(name==strselectname[i]){
				if (controlname.indexOf("DNYCLandmark")>0){
					document.getElementById("txtDNYCLandmark").value=strselectlandmark_name[i];
					document.getElementById("txtDNYCStrNo").value=strselectst_no[i];
					document.getElementById("txtDNYCStrName").value=strselectst_name[i];
					document.getElementById("txtDNYCxstr").value=strselectx_st[i];
				}else if(controlname.indexOf("DNYCStrName")>0){
					//document.getElementById("txtDNYCLandmark").value=strselectlandmark_name[i];
					//document.getElementById("txtDNYCStrNo").value=strselectst_no[i];
					document.getElementById("txtDNYCStrName").value=strselectst_name[i];
					document.getElementById("txtDNYCxstr").value=strselectx_st[i];									
				}else if(controlname.indexOf("DCity_none")>0){
					document.getElementById("txtDCity_none").value=strselectname[i];
					//document.getElementById("txtDLmk_none").value=strselectlandmark_name[i];
					//document.getElementById("txtDStrNo").value=strselectst_no[i];
					//document.getElementById("txtDStrName").value=strselectst_name[i];
					//document.getElementById("txtDxstr").value=strselectx_st[i];
				}else if(controlname.indexOf("DLmk_none")>0){
					//document.getElementById("txtDCity_none").value=strselectname[i];
					document.getElementById("txtDLmk_none").value=strselectlandmark_name[i];
					document.getElementById("txtDStrNo").value=strselectst_no[i];
					document.getElementById("txtDStrName").value=strselectst_name[i];
					document.getElementById("txtDxstr").value=strselectx_st[i];					
				}else if(controlname.indexOf("DStrName")>0){					
					//document.getElementById("txtDLmk_none").value=strselectlandmark_name[i];
					//document.getElementById("txtDCity_none").value=strselectname[i];
					//document.getElementById("txtDLmk_none").value=strselectlandmark_name[i];
					//document.getElementById("txtDStrNo").value=strselectst_no[i];
					document.getElementById("txtDStrName").value=strselectst_name[i];
					document.getElementById("txtDxstr").value=strselectx_st[i];					
					
				}			
				break;
			}  
		}		
	}else if(type=="p"||type=="P"){
		var strselectcounty=document.getElementById("hidselectcounty").value.split('/');
		var strselectname=document.getElementById("hidselectname").value.split('/');
		var strselectlandmark_name=document.getElementById("hidselectlandmark_name").value.split('/');
		var strselectst_name=document.getElementById("hidselectst_name").value.split('/');
		var strselectst_no=document.getElementById("hidselectst_no").value.split('/');									
		var strselectx_st=document.getElementById("hidselectx_st").value.split('/');		
		var strselectzip_code=document.getElementById("hidselectzip_code").value.split('/');		
		var len=strselectname.length;
		var i;
		for(i=0;i<len-1;i++){
			if(name==strselectname[i]){
				if (controlname.indexOf("PNYCLandmark")>0){
					document.getElementById("txtPNYCLandmark").value=strselectlandmark_name[i];
					document.getElementById("txtPNYCStrNo").value=strselectst_no[i];
					document.getElementById("txtPNYCStrName").value=strselectst_name[i];
					document.getElementById("txtPNYCxstr").value=strselectx_st[i];
				}else if(controlname.indexOf("PNYCStrName")>0){
					//document.getElementById("txtPNYCLandmark").value=strselectlandmark_name[i];
					//document.getElementById("txtPNYCStrNo").value=strselectst_no[i];
					document.getElementById("txtPNYCStrName").value=strselectst_name[i];
					document.getElementById("txtPNYCxstr").value=strselectx_st[i];									
				}else if(controlname.indexOf("PCity_none")>0){
					document.getElementById("txtPCity_none").value=strselectname[i];
					//document.getElementById("txtPLmk_none").value=strselectlandmark_name[i];
					//document.getElementById("txtPStrNo").value=strselectst_no[i];
					//document.getElementById("txtPStrName").value=strselectst_name[i];
					//document.getElementById("txtPxstr").value=strselectx_st[i];
				}else if(controlname.indexOf("PLmk_none")>0){
					//document.getElementById("txtPLmk_none").value=strselectlandmark_name[i];
					//document.getElementById("txtPCity_none").value=strselectname[i];
					document.getElementById("txtPLmk_none").value=strselectlandmark_name[i];
					document.getElementById("txtPStrNo").value=strselectst_no[i];
					document.getElementById("txtPStrName").value=strselectst_name[i];
					document.getElementById("txtPxstr").value=strselectx_st[i];					
				}else if(controlname.indexOf("PStrName")>0){
					//Pocument.getElementById("txtPLmk_none").value=strselectlandmark_name[i];
					//Pocument.getElementById("txtPCity_none").value=strselectname[i];
					//Pocument.getElementById("txtPLmk_none").value=strselectlanPmark_name[i];
					//Pocument.getElementById("txtPStrNo").value=strselectst_no[i];
					Pocument.getElementById("txtPStrName").value=strselectst_name[i];
					Pocument.getElementById("txtPxstr").value=strselectx_st[i];
				}		
				break;  
			}	
		}
	}
}
