﻿
var load_file = "/WebService/WsSearchResult.asmx/GetJson";
	
var SR = "";
var ret_txt = ""; 
var visible_cnt = 0; 

function GetCookies_NA()
{
	var prefix 	    = "Language=";
	var cook_StartIndex = document.cookie.indexOf(prefix);	
	
  return  document.cookie.substring(cook_StartIndex + prefix.length, cook_StartIndex + prefix.length + 2);
}

//var httpRequest = GetHttpRequest()

function GetHttpRequest()
{
	if(window.ActiveXObject)
	{	
		try 
		{
			return new ActiveXObject("Msxml2.XMLHTTP") ;
		} catch (e) {
			try 
			{
				return new ActiveXObject("Microsoft.XMLHTTP") ;
			} catch (e2) {
				return null ;
			}
		}
	} 
	else if(window.XMLHttpRequest)
	{
		return new XMLHttpRequest() ;
	} 
	else 
	{
		return null ;
	}
}

function DataLoad_Init()
{ 	
	var httpRequest = GetHttpRequest();
	
	httpRequest.onreadystatechange = function()  				//callbackfunction; 
	{ 
		if (httpRequest.readyState == 4) 
		{
				// if (httpRequest.status == 200) 	// 없는 결과값도 받기 위해서
				RES(httpRequest);
		}
	} 		
	//URL = load_file + "SearchName="+document.all.txtCityCode.value.toUpperCase() + "&LanguageCode=" + GetCookies_NA() ;	
    //data = "SearchName="+document.all.txtCityCode.value.toUpperCase() + "&LanguageCode=" + GetCookies_NA() ;
    data = "SearchName=" + document.getElementById("txtCityCode").value.toUpperCase() + "&LanguageCode=" + GetCookies_NA();
    
	httpRequest.open("POST",load_file,true);//load_file,true);	
	
	httpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		
	httpRequest.send(data);		
	//document.getElementById("divLen1").innerHTML = "DataLoad_Init ==> httpRequest.readyState :"+ httpRequest.readyState + "&nbsp;&nbsp;httpRequest.status :" +httpRequest.status;
}

function callbackfunction()
{	
	//alert(httpRequest.readyState + '##' + httpRequest.status);
	if (httpRequest.readyState == 4)
	{
		//if (httpRequest.status == 200)
		//{ 
			// WebService로 작업할때
			RES(); 			
			// local file로 작업할때
			//ret_txt =  httpRequest.responseXml.text;		// responseText;	
			//SR = eval("( { 'DV' :[" + ret_txt + " ]} )"); 
		//} 
	}	
} 


function KeyUP(e)
{	
	switch(e.keyCode)
	{
		  case  38 :	return;
						break;
			case  40 : 	return;
						break;  
			case  13 :  Enter_Down('','k');
						return;
						break; 
			default :
						DataLoad_Init();
		}				
}

function parse_xml(req)     // IE(text)와 FF(textContent)에서 데이터 값을 얻기 위해서   
{
	try
	{
		return (new DOMParser()).parseFromString(req.responseText, "text/xml").documentElement.textContent;
	}
	catch (e)
	{
		return req.responseXml.documentElement.text;
	}
}

function RES(ob)
{

	var s_key = document.getElementById("txtCityCode").value.toUpperCase();			//document.all.txtCityCode.value.toUpperCase();
	var D_table1 = "<table border='0' cellpadding='0' cellspacing='0' width='100%' valign='top'>"
	var D_table2 	= "</table>";
	var D_Cont 		= "";
	var ret_txt     = parse_xml(ob);      //ob.responseXml.text;// httpRequest.responseXml.text;		// responseText;	 값이 달라진다
	var SR 			= eval("( { 'DV' :[" + ret_txt + " ]} )");

//alert(ret_txt);
         
	/*switch(event.keyCode)
	{
			case  38 :	return;
						break;
			case  40 : 	return;
						break;  
			case  13 :  Enter_Down('','k');
						return;
						break;
			default  : 		
						DataLoad_Init();    
*/					
					var t = 1;	
					if (ret_txt.length > 0)
					{ 		
							for(var i = 0; i<SR.DV.length; i++)	
							{  							
									if (SR.DV[i].SN.indexOf(s_key) >= 0)
									{	// divLen1.innerHTML  = ttt; // xslt에 divLen1을 보이기 위해서    onClick=\"Enter_Down('"+t+"','m');\"  onClick=\"Enter_Down('"+t+"','m');\"   onMouseUp=\"javascript:MouseUp('"+t+"');\" 
										//D_Cont = D_Cont + "<tr><td onClick=\"javascript:Enter_Down('"+t+"','m');\" onMouseOver=\"javascript:ResultOnOver(this,'"+t+"');\"    id=\"sel_"+t+"\" ";				//SR.DV[i].EN+"','"+SR.DV[i].IN+"','"+SR.DV[i].NC+"','"+SR.DV[i].NN
										D_Cont = D_Cont + "<tr><td onMouseOver=\"javascript:ResultOnOver(this,'" + t + "');\" onMouseUp=\"javascript:MouseUp('" + t + "');event.cancelBubble = true;\" onClick=\"javascript:MouseUp('" + t + "');\" id=\"sel_" + t + "\" "; 			//SR.DV[i].EN+"','"+SR.DV[i].IN+"','"+SR.DV[i].NC+"','"+SR.DV[i].NN
										//for 국내B2B Main
										//D_Cont = D_Cont + " style=\"padding:3 5 3 5; line-height:16px; border-bottom:1px dotted #DCDCDC; text-transform:capitalize; cursor:hand;\">"+ SR.DV[i].EN.toUpperCase().replace(s_key,'<font color=\"#F77501\"><b>'+s_key+'</b></font>')+"("+SR.DV[i].CT+") - "+SR.DV[i].IN.replace(s_key,'<font color=\"#F77501\"><b>'+s_key+'</b></font>') + " : " + SR.DV[i].NC + " ("+SR.DV[i].NN+")";
										D_Cont = D_Cont + " style=\"padding:3 5 3 5; line-height:16px; border-bottom:1px dotted #DCDCDC; text-transform:capitalize; cursor:pointer; background-color:#FFFFFF;\">" + SR.DV[i].IN.replace(s_key, '<font color=\"#F77501\"><b>' + s_key + '</b></font>') + " : " + SR.DV[i].NN;
										
										D_Cont = D_Cont + " <input type=\"hidden\" id=\"en_"+t+"\" value=\""+SR.DV[i].EN.toUpperCase()+"\">";
										D_Cont = D_Cont + " <input type=\"hidden\" id=\"in_"+t+"\" value=\""+SR.DV[i].IN+"\">"; 
										D_Cont = D_Cont + " <input type=\"hidden\" id=\"nc_"+t+"\" value=\""+SR.DV[i].NC+"\">"; 
										D_Cont = D_Cont + " <input type=\"hidden\" id=\"nn_"+t+"\" value=\""+SR.DV[i].NN+"\">"; 
										D_Cont = D_Cont + " <input type=\"hidden\" id=\"ct_"+t+"\" value=\""+SR.DV[i].CT+"\">";
										D_Cont = D_Cont + " </td></tr>";
										t += 1;
									}			
									//if (parseInt(t) > 10)		// 화면에 뿌려줄 Max값 지정
									//		break;				
							} //for
					 }	
					 else
					 { D_Cont = "<tr><td  style=\"padding:5 5 3 5;\"><font color=\"#FF1429\">검색결과가 없습니다</font></td></tr>";	}					 												
						
						//if (D_Cont.length > 0) {}																						// 검색결과가 존재할 경우						
						//else  																															// 검색결과가 없을 경우
						//{	D_Cont = "<tr><td  style=\"padding:5 5 3 5;\"><font color=\"#FF1429\">검색결과가 없습니다</font></td></tr>";	}

					    document.getElementById("fraCity").contentWindow.document.getElementById("xmlResponse").innerHTML = D_table1 + D_Cont + D_table2;		// fraCity.xmlResponse.innerHTML = D_table1 + D_Cont + D_table2; 			// 검색내용 뿌리기

					    if (navigator.appName.indexOf("Microsoft") > -1)
					    	document.getElementById("fraCity").contentWindow.document.getElementById("xmlResponse").style.height = "98%";
					    	
						ResultList_Class._ResultCnt = t; 																		// 검색결과 갯수 담기

						if (parseInt(t) > 1)	//(D_Cont.length > 0) 												// 검색결과가 존재할 경우	==> 첫목록 배경색처리하기
						{ 								
								if (ResultList_Class._SelectIndex < t){}											  // 기존선택된 ListIndex와 신규검색결과와의 비교관련							
								else
								{
 									ResultList_Class._SelectIndex = 1;
									ResultList_Class._SelectItem  = "sel_1"; 
								}
								document.getElementById("fraCity").contentWindow.document.getElementById(ResultList_Class._SelectItem).style.backgroundColor = "#DFEDFA";		// fraCity.document.getElementById(ResultList_Class._SelectItem).style.backgroundColor = "#DFEDFA";			
						}
//divLen1.innerHTML = "divLen1 KeyUp==>t :"+ t + "&nbsp;&nbsp;&nbsp;s_key.length :" + s_key.length + "&nbsp;&nbsp;&nbsp;visibility :"+ document.getElementById("divCity").style.visibility;
 						
						Search_Panel_Resize(); 																							// 검색패널 창 크기 재조정
						Move_Search_Panel();																								// 검색패널 이동
						Visible_YN(s_key.length); 	
						//visible_cnt = 0;																				// 검색패널 창 보이기 결정
	//} // switch 		
	document.body.onclick = Visible_YN;
}

function Visible_YN(skey_len)					// 검색할 내용유무에 따른 기본 처리프로세스
{	
	if (parseInt(skey_len) > 0 )
	{
		document.getElementById("divCity").style.visibility = "visible";
//alert(visible_cnt);
/*
	//	document.getElementById("divCity").style.display = "block";

		//if(document.getElementById("divCity").style.visibility != "visible")
		if (visible_cnt == 0)
		{
 			document.getElementById("divCity").style.visibility = "visible";
			visible_cnt = visible_cnt + 1;			
		}
		else
		{				
			document.getElementById("divCity").style.visibility = "hidden";
			visible_cnt = 0;			
		}
			//alert(document.getElementById("divCity").style.visibility);// = "hidden";
		//return false;
		//alert("visible_cnt : " + visible_cnt);
*/	
	}
	else
	{  	
//alert(skey_len);		
		document.getElementById("divCity").style.visibility = "hidden";
	//	document.getElementById("divCity").style.display = "none";
		ResultList_Class._SelectIndex = 1;
		ResultList_Class._SelectItem = "sel_1";
		ResultList_Class._ResultCnt  = 0;
		//alert(document.getElementById("divCity").style.visibility);
		//document.getElementById("divCity").style.visibility = "hidden";
		//return false;
		
	}
	
}

function KeyDown(e)  	 	 	
{   	
	var t = ResultList_Class._ResultCnt;
//divLen.innerHTML = "divLen Keydown t :"+ t + "&nbsp;&nbsp;keyCode :"+ event.keyCode + "&nbsp;&nbsp;_SelectIndex :"+ ResultList_Class._SelectIndex + "&nbsp;&nbsp;_SelectItem :"+ ResultList_Class._SelectItem;
	if (t > 1)
	{ 
			switch(e.keyCode)
			{
				case 38 :	
				case 40 : Direction(e);
					break; 				
			}
	}	
}

function Direction(e)			// 방향키 조작과 리스트 색깔 변경
{		//fraCity.document.getElementById("sel_1").style.backgroundColor = "#DFEDFA"; 	
		var t = ResultList_Class._ResultCnt;  
//document.getElementById("divLen5").innerHTML = "Direction  t :"+ t + "&nbsp;ResultList_Class._SelectIndex :"+ ResultList_Class._SelectIndex + "&nbsp;ResultList_Class._SelectItem :"+ ResultList_Class._SelectItem;		
		switch(e.keyCode)
		{ 
			case 38 :		if ( parseInt(ResultList_Class._SelectIndex) <= 1 )														// "Up";
									{
										ResultList_Class._SelectIndex = 1;
										ResultList_Class._SelectItem = "sel_"+ResultList_Class._SelectIndex;					  		
									}
									else
									{   
										ResultList_Class._SelectIndex = parseInt(ResultList_Class._SelectIndex) - 1;	
										ResultList_Class._SelectItem  = "sel_"+ResultList_Class._SelectIndex;	
									}
							break;				
			case 40 :		if ( parseInt(ResultList_Class._SelectIndex) >= parseInt(t)-1 )   							//"down";		
									{
										ResultList_Class._SelectIndex = parseInt(t)-1;
										ResultList_Class._SelectItem  = "sel_"+ResultList_Class._SelectIndex;									
									} 
									else
									{  
										ResultList_Class._SelectIndex = parseInt(ResultList_Class._SelectIndex) + 1;	
										ResultList_Class._SelectItem = "sel_"+ResultList_Class._SelectIndex;
									}
							break; 
		} 	// switch
		
		var t_sc = document.getElementById("fraCity").contentWindow.document.getElementById("xmlResponse"); //.contentWindow;
		t_sc.scrollTop = (parseInt(ResultList_Class._SelectIndex) - 2) * 23;   
		
		Style_Init();
		//fraCity.document.getElementById(ResultList_Class._SelectItem).style.backgroundColor = "#DFEDFA";
		//fraCity.document.getElementById(ResultList_Class._SelectItem).focus();
		document.getElementById("fraCity").contentWindow.document.getElementById(ResultList_Class._SelectItem).style.backgroundColor = "#DFEDFA";
		document.getElementById("fraCity").contentWindow.document.getElementById(ResultList_Class._SelectItem).focus();	
		document.getElementById("txtCityCode").focus();																																		
}

function Style_Init() 							// 모든 검색결과 리스트 배경색 흰색으로 만들기
{  
	var t = ResultList_Class._ResultCnt;
			//divLen4.innerText = "divLen4 Style_Init t :"+ t; 	
	for (var i=1; i<t; i++)
	{ 
		var item = "sel_"+i;
		//fraCity.document.getElementById(item).style.backgroundColor = "#FFFFFF";
		document.getElementById("fraCity").contentWindow.document.getElementById(item).style.backgroundColor = "#FFFFFF";	
	}	
}

function Move_Search_Panel() 	 			// 패널 이동
{    						
		Img_Name	= document.getElementById("imgCity");

//		if (navigator.appName.indexOf("Microsoft") == 0 && navigator.appVersion.indexOf("MSIE 6.0;") > 0)
//		    left_value = "130";
//		else
//		    left_value = "100";	
		    
		document.getElementById("divCity").style.width = document.getElementById("txtCityCode").style.width;
		document.getElementById("divCity").style.left = parseInt(getAbsLeft(Img_Name)) - getAbsLeft(document.getElementById("Swrap")) + "px"; //+ 1 + 7; - parseInt(left_value)
		document.getElementById("divCity").style.top = getAbsTop(Img_Name) + 12 + "px";		//+ 5;	 	
}

function Search_Panel_Resize()			// 패널 사이즈 재조정하기
{
  		var t = ResultList_Class._ResultCnt; 
	  		t = (t > 1)? t : 2;
	  
		var height_size = ((parseInt(t)-1)*23) + 30;
			height_size = (height_size > 152) ?  "152px" : height_size + "px" ;
		//alert("t :" + t + "height_size :" + height_size);
		
		parent.document.getElementById("fraCity").style.height 		= height_size;		
		document.getElementById("divCity").style.visibility = "visible";
		document.getElementById("divCity").style.height 		= height_size;  	
}

function Enter_Down(t,tpe)				// 선택된 도시명을 표현하기
{    
	if (tpe == "k")		// type : keyboard
	{
			if ( document.getElementById("txtCityCode").value.length > 0)
			{ 		 
				t = ResultList_Class._SelectIndex;

				en_v = document.getElementById("fraCity").contentWindow.document.getElementById("en_" + t).value;
				in_v = document.getElementById("fraCity").contentWindow.document.getElementById("in_" + t).value;
				nc_v = document.getElementById("fraCity").contentWindow.document.getElementById("nc_" + t).value;
				nn_v = document.getElementById("fraCity").contentWindow.document.getElementById("nn_" + t).value;
				ct_v = document.getElementById("fraCity").contentWindow.document.getElementById("ct_" + t).value; 	
				
				//for 국내B2B Main
				//document.getElementById("txtCityCode").value = en_v + " (" + in_v + ") " + nc_v + " [" + nn_v + "]";// + ct_v;
				document.getElementById("txtCityCode_Value").value = en_v + " (" + in_v + ") " + nc_v + " [" + nn_v + "]";		//	약식 도시검색 값을 담기 위해서
				document.getElementById("txtCityCode").value = in_v + " [" + nn_v + "]";// + ct_v; 	
				Visible_YN('completed');
				//document.getElementById("CityCode").value = ct_v; 						// form을 위한 citycode값 담기
				document.forms[0].CityCode.value = ct_v;
				document.body.focus();
			}
	}		
	else
	{
		//parent.Visible_YN('completed');
		//self.focus();
  		en_v = document.getElementById("en_"+t).value;
		in_v = document.getElementById("in_"+t).value; 
		nc_v = document.getElementById("nc_"+t).value; 
		nn_v = document.getElementById("nn_"+t).value; 
		ct_v = document.getElementById("ct_"+t).value;


		//for 국내B2B Main
		//document.getElementById("txtCityCode").value = en_v + " (" + in_v + ") " + nc_v + " [" + nn_v + "]";// + ct_v;
		parent.document.getElementById("txtCityCode_Value").value = en_v + " (" + in_v + ") " + nc_v + " [" + nn_v + "]"; 	//	약식 도시검색 값을 담기 위해서
		parent.document.getElementById("txtCityCode").value = in_v + " [" + nn_v + "]";	

//		parent.Visible_YN();
		
//		parent.document.getElementById("divCity").style.visibility = "hidden";
//		ResultList_Class._SelectIndex = 1;
//		ResultList_Class._SelectItem = "sel_1";
		//		ResultList_Class._ResultCnt  = 0;

		parent.Visible_YN('completed');  
		parent.document.forms[0].CityCode.value = ct_v; 		// form을 위한 citycode값 담기
		//parent.document.getElementById("CityCode").value = ct_v; 		// form을 위한 citycode값 담기
		parent.document.body.focus();	
		//parent.document.getElementById("txtCityCode").focus();

		//event.cancelBubble = true;
		//return false;		
	
 	}
 	
	//주요지점 추가 김애경
	/*
	if(parent.CityLocationIFrame != null)
	{
		parent.CityLocationIFrame.Form1.CityCode.value = ct_v;
		parent.document.Form1.txtClickType.value = 'A';
		parent.CityLocationIFrame.Form1.submit();
	}
	*/
 				 	
}

function ResultOnOver(obj, IndexNo) 										// List_onMouseOver
{			
	var t = parent.ResultList_Class._ResultCnt; 	
//parent.document.getElementById("divLen2").innerHTML = "divLen2 OVER :"+ IndexNo		
//parent.document.getElementById("divLen3").innerHTML = "divLen3 t :"+ t + "&nbsp;&nbsp;&nbsp;_SelectIndex :"+ parent.ResultList_Class._SelectIndex;
	if (parent.ResultList_Class._SelectIndex == undefined)
  	{	  
  		if (t == 1)
  		{		document.getElementById("sel_1").style.backgroundColor = "#FFFFFF";		}
  		else
  		{  	 	 
	  		for (var i=1; i<t; i++)
			{ 
				var item = "sel_"+i;
				document.getElementById(item).style.backgroundColor = "#FFFFFF";		
			}
		}
   } 
   else
   { 
  		document.getElementById("sel_"+parent.ResultList_Class._SelectIndex).style.backgroundColor = "#FFFFFF";		
   } 
  
	parent.ResultList_Class._SelectIndex = IndexNo;
	parent.ResultList_Class._SelectItem  = "sel_"+IndexNo;	
	obj.style.backgroundColor = "#DFEDFA";
	
//	parent.document.getElementById("txtCityCode").focus();		// 마우스에 대해서 키보드가 바로 적용되려면 txtCityCode에 대해서만 key event가 적용되어야 하므로 	
}  


function MouseUp(IndexNo)
{    
//	self.focus(); 
//	self.Enter_Down(IndexNo,'m');
//	parent.document.getElementById("txtCityCode").focus();
	//Enter_Down(IndexNo,'m');
	//parent.Visible_YN();

	self.focus();
	Enter_Down(IndexNo, 'm');   
	/*   
	if(!Enter_Down(IndexNo,'m'))
	{
		parent.document.getElementById("txtCityCode").focus();		// 마우스에 대해서 키보드가 바로 적용되려면 txtCityCode에 대해서만 key event가 적용되어야 하므로 	
		parent.Visible_YN();
	}
	*/
}

function getAbsLeft(obj) 						// 검색 패널을 위한 좌측위치값 구하기
{
	return (obj.offsetParent==null)? 0:obj.offsetLeft+getAbsLeft(obj.offsetParent);
}

function getAbsTop(obj)  						// 검색 패널을 위한 Top값 구하기
{
	return (obj.offsetParent==null)? 0:obj.offsetTop+getAbsTop(obj.offsetParent);
}

function ResultList_Class()						// 검색결과를 보이기 위한 조건 객체
{
	this._SelectIndex = 1;  						// List's Index
	this._SelectItem  = "sel_1";					// List's Item
	this._ResultCnt   = 0; 							// List's Count value
}

function Search_Init() 							// txtCityCode_onClick 초기화 
{  
	//DataLoad_Init();									// DataLoad 시키기
	document.getElementById("txtCityCode").value = ""; 
	Visible_YN();
	//visible_cnt = 0;
	//alert("init");
/*	document.getElementById("divCity").style.visibility = "hidden";
		ResultList_Class._SelectIndex = 1;
		ResultList_Class._SelectItem = "sel_1";
		ResultList_Class._ResultCnt  = 0;
*/
}
