/* 브라우저에 따라 Undefined 체킹 */
function isUndefined( str )
{

	var browserInfo = new Array();
	var returnValue = true;

	browserInfo = browserValue();

	var browserVersion = parseFloat(browserInfo['version']);
	
	if ( browserVersion < 5.5 )
	{
		
		if ( str == "" || !str ) returnValue = false; else returnValue = true;
	
	}
	else
	{
		
		if ( str == "" || str==undefined ) returnValue = false; else returnValue = true;
	
	}

	return returnValue;

}
/* 브라우저의 성격을 체킹한다. */
function browserValue()
{

	var browserArray = new Array();

	browserArray['name'] = navigator.appName;
	browserArray['client'] = navigator.appVersion;
	browserArray['version'] = (((navigator.appVersion.split('; '))[1].split(' '))[1]);

	return browserArray;

}
function new_Ep(ep_id,epdomain){
	var winopt = "status=yes,scrollbars=yes,resizable=no,width=800,height=600";
	var retURL;
	var para;
	var temp_url=ep_id+"#"+epdomain;

	if ( retURL = isAccessServer(temp_url) ){
		if ( temp_url.indexOf("#") > -1 )	{
			ep = temp_url.split("#");
			para = "?epid="+(ep[0].replace(" ",""));
			para = para + "&epdomain="+(ep[1].replace(" ",""));
		}else{
			para = "?epid="+(ep_id.replace(" ",""));
		}
		var newwin = window.open(retURL+para,"egosio_Window",winopt);
		if(newwin)
		{
			newwin.focus();
		}
	}
}
// 내부 검색인가 외부 검색인가 확인
function isAccessServer( ePosition )
{

	var retReadDomain;

	if ( !isUndefined(ePosition) )
	{
		alert("ePosition이 존재하지 않습니다.");
		return false;
	}

	ePosition = ePosition.replace(" ","");	 // 공백 제거
	
	if ( ePosition.indexOf("#") > -1 )
	{
		var epinfo = ePosition.split("#");
		var epdomain = epinfo[1]; // 사용자 입력 도메인 또는 URL
	}
	else if ( ePosition.indexOf("{@}") > -1 )
	{
		var epinfo = ePosition.split("{@}");
		var epdomain = epinfo[1]; // 사용자 입력 도메인 또는 URL
	}
	else
	{
		var epinfo = new Array(2);
		epinfo[0] = ePosition;
		epinfo[1] = "";
		var epdomain = ""; // 사용자 입력 도메인 또는 URL
	}

	var retInfo = new Array(2);

	if ( isUndefined( epdomain ) )
	{

		// 리얼 도메인인 경우 처리
		if ( domainClassDistinction( epdomain ) )
		{
			retReadDomain = "http://world.epmap."+epdomain+"/";
		}
		// 키워드 도메인인 경우 처리
		else
		{
			if ( !isepKeywordDomain( epdomain ) && epdomain != "82" && epdomain != "114" && epdomain != "99" )
			{
				alert("올바르지 못한 키워드 도메인입니다.");
				return false;
			}
			else
			{
				// 외부 도메인 정보 로딩
				xmlDomainData=new remoteDomainIndexLoad( epdomain );

				if ( !isUndefined( xmlDomainData.durl[0] ) )
				{
					if ( isUndefined( xmlDomainData.reason ) )
					{
						alert(xmlDomainData.reason);
					}
					else
					{
						alert("서비스 되지 않는 도메인입니다.");
					}
					return false;
				}
				else
				{
					retReadDomain = xmlDomainData.durl[0];
				}
			}
		}

	}
	else
	{
		retReadDomain = "http://egosio.epmap.egosio.com/";
	}

	return retReadDomain+"d/";

}
// 도메인이 리얼 도메인인가 아니면 키워드 도메인인가 판단. : 리얼 도메인인경우 true 반환
function domainClassDistinction( domainName )
{
	var strArray = domainName.split(".");
	var reg;
	if ( strArray.length < 2 ) return false;
	for( i=0; i < strArray.length; i++ )
	{
		if ( !isUndefined(strArray[i]) ) return false;
		if ( i == 0 )
		{
			reg = /^[a-zA-Z0-9]{1}[a-zA-Z0-9-]{0,}[a-zA-Z0-9]{1}$/;
		}
		else
		{
			reg = /^[a-zA-Z0-9]{2,}$/;
		}
		if ( !reg.test(strArray[i]) ) return false;
	}
	return true;
}

// ePosition 용 한글 키워드 도메인이 맞는가 확인
function isepKeywordDomain( domainName )
{
	// 한글을 포함하고 있는가( 반드시 한글자 이상 포함하여야 한다. )
	if ( isInclusionKorean( domainName ) < 1 ) return false;
	// 도메인 규칙에 위배되지 않는가.
	if ( !isCorrectlyKeywordDomain ) return false;
	return true;
}
// 한글포함 여부 체크 : 한글 포함 갯수를 반환한다.
function isInclusionKorean(tmp) {
	var cnt=0;
	for(i=0;i<tmp.length;i++) {
		temp = tmp.charAt(i);
		if(temp.charCodeAt() >= 44032 && temp.charCodeAt() <= 55203){
			++cnt;
		}
	}
	return cnt;
}
// 도메인 규칙에 위배되는가?
function isCorrectlyKeywordDomain( domainName )
{
    if(domainName.length == 0) { return false; }
	// 특문이 들어가 있으면 실패
    for ( i=0;i<domainName.length;i++ )
    {
        if ((domainName.charAt(i) >= ' ' && domainName.charAt(i) <= '+') ||
            (domainName.charAt(i) == '/') ||
            (domainName.charAt(i) >= ':' && domainName.charAt(i) <= '@') ||
            (domainName.charAt(i) >= '[' && domainName.charAt(i) <= '`') ||
            (domainName.charAt(i) >= '{' && domainName.charAt(i) <= '~'))
        {
            return false;
        }
        if ((i == 0 && domainName.charAt(i) == '-') ||
            (i == (domainName.length-1) && domainName.charAt(i) == '-') ){
            return false;
        }
    }
	// 두글자 이하이면 실패
	if ( domainName.length < 2 ) { return false; }
	return true;
}

/*--------------------------------------------------------------
                     XML Control
---------------------------------------------------------------*/
var xmlDoc; 
// xmlhttprequest 연결을 만듬
function makeXmlHttpRequest(qurl)
{
	var xtr;
	try{
		xtr=new ActiveXObject("Msxml2.XMLHTTP.3.0");
	}
	catch(e){
		try{
			xtr=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(oc){
			xtr=null;
		}
	}

	if(! xtr&&typeof XMLHttpRequest!="undefined")
		xtr=new XMLHttpRequest();

	xtr.open("GET",qurl,false);
	xtr.send(null);
	
	xmlDoc =  xtr.responseXML.documentElement;
	

}

// 외부 도메인의 리얼 도메인 찾기
function remoteDomainIndexLoad(qd)
{ 
	try
	{

		makeXmlHttpRequest("./include/remote_domain.php?qd="+qd);

		// 인덱스 값 정리하기
		cnt=xmlDoc.getElementsByTagName("index").length;
		this.dname=new Array(cnt);
		this.dflag=new Array(cnt);
		this.durl=new Array(cnt);

		if(navigator.appName == "Netscape")
		{
			for(i=0,n=1;i<cnt;i++,n+=2)
			{
				this.dname[i]=xmlDoc.childNodes.item(n).getAttribute("domainname");
				this.dflag[i]=xmlDoc.childNodes.item(n).getAttribute("flag");
				this.durl[i]=xmlDoc.childNodes.item(n).getAttribute("ref_url");
			}
		}
		else
		{
			for(i=0;i<cnt;i++)
			{
				this.dname[i]=xmlDoc.childNodes.item(i).getAttribute("domainname");
				this.dflag[i]=xmlDoc.childNodes.item(i).getAttribute("flag");
				this.durl[i]=xmlDoc.childNodes.item(i).getAttribute("ref_url");
			}
		}

	}
	catch(e)
	{
		this.dname=new Array(1);
		this.dflag=new Array(1);
		this.durl=new Array(1);
		this.cnt=0;
		this.dname[0]="";
		this.dflag[0]="";
		this.durl[0]="";
		this.reason="잠시후에 다시 시도해주세요.";
	}
}


function formCheck()
{

	var cFrm = document.forms[0];

	if(!isUndefined(cFrm.q.value))
	{
		alert("검색어를 입력해주세요.");
		cFrm.q.focus();
		return false;
	}
	else
	{
		var esArray = (cFrm.q.value).split(" ");
		if(esArray.length>3){
			alert("동시 검색은 최대 3개까지만 지원됩니다.");
			return false;
		}
		else
		{
			return true;
		}
	}

}
function ePosition2Clipboard(epdiv_name)
{
	var epdiv = document.getElementById(epdiv_name);
	var doc = document.body.createTextRange();
	var soc = epdiv.getElementsByTagName('SPAN');
	doc.moveToElementText(soc[0]);
	doc.select();
	doc.execCommand('copy');
	alert("ePosition이 클립보드에 저장되었습니다.\n\n`Ctrl+V`키로 붙여넣기 하시면 됩니다.");
}
function ePosition2Clipboard2(epdiv_name)
{
	var epdiv = document.getElementById(epdiv_name);
	var doc = document.body.createTextRange();
	//var soc = epdiv.getElementsByTagName('SPAN');
	var obj=document.createAttribute('epclip');
	obj.innerHTML='ePosition이 클립보드';
	//obj=epdiv;

	alert(obj.innerHTML)
	doc.moveToElementText(obj);
	doc.select();
	doc.execCommand('copy');
	alert("ePosition이 클립보드에 저장되었습니다.\n\n`Ctrl+V`키로 붙여넣기 하시면 됩니다.");
}

function ePosition2Clipboard3(epdiv_name,id,domain,url){
	
	if (domain=="사이사이")
	{

		outhtml = "<SPAN id=__ePositionMapLink__><a class=onHref href='http://open.egosio.com/?q="+encodeURIComponent(id)+"%23"+encodeURIComponent(domain)+"' target=_blank><U><B><FONT color='#0000ff' size=2 face='돋움'>"+id+"#"+domain+"</FONT></B></U><img src=http://www.egosio.com/js/icon/ucici.gif width=27 height=15 align=absmiddle border=0></a></SPAN>";
	}else{
		outhtml = "<SPAN id=__ePositionMapLink__><a class=onHref href='"+url+"/d/?epid="+encodeURIComponent(id)+"&domain="+encodeURIComponent(domain)+"' target=_blank><U><B><FONT color='#0000ff' size=2 face='돋움'>"+id+"#"+domain+"</FONT></B></U><img src=http://www.egosio.com/js/icon/egosio.gif width=27 height=15 align=absmiddle border=0></a></SPAN>";
	}

	
	var epdiv = document.getElementById(epdiv_name);
	
	if (epdiv)
	{
		
		epdiv.innerHTML=outhtml;
		var doc=document.body.createTextRange(); 

		var soc = epdiv.getElementsByTagName('SPAN');
		doc.moveToElementText(soc[0]);

		doc.execCommand("copy"); 
		document.selection.empty(); 
		alert("ePosition이 클립보드에 저장되었습니다.\n\n`Ctrl+V`키로 붙여넣기 하시면 됩니다.");
	}else{
		alert("No infomatioin ePosition.");
	}

}
//function exLink(str){
	//AreaSelect('','region_large');
	//document.getElementById("q").value = str;
//}

function exLinks(str){
	document.getElementById("q").value = str;
}
// 포털별 지역정보 검색창으로 이동
function portalFS(pt)
{

	var fs;
	var frm = document.forms[0];
	var query = frm.q.value;
	var encquery;
	var reg;
	var reg1 = frm.region_large[frm.region_large.selectedIndex].text;
	var reg2 = frm.region_sub[frm.region_sub.selectedIndex].text;

	if ( isUndefined(query) )
	{
		if ( query.indexOf("#") >= 0 )
		{
			fs = "1";
			queryArray = query.split("#",2);
			query = queryArray[0];
		}
		else
		{
			fs = "0";
		}

		if ( isUndefined(reg1) && reg1 != "전국(시/도)" )
		{
			reg = reg1 + " ";
		}

		if ( isUndefined(reg2) && reg2 != "전국(구/군)" )
		{
			reg = reg + reg2 + " ";
		}

		if ( isUndefined(reg) )
		{
			//query = reg + query;
		}
		encquery = encodeURIComponent(query);
		
		window.open("redirect.php?p="+pt+"&q="+encquery,'','');

	
	}
	else
	{
		alert("Enter the keyword");
		frm.q.focus();
	}

}


