var arrSearchField = new Array();
var arrSearchStr = new Array();
var arrSearchOpr = new Array();
var gi_SrchCnt = 0;
var gi_OprCnt = 0;



var arrMainSearchFiled = new Array();
var arrMainSearchStr = new Array();
var arrMainSearchOpr = new Array();

var arrLimitSearchFiled = new Array();
var arrLimitSearchStr = new Array();
var arrLimitSearchOpr = new Array();




var gs_EditQuery = "";
var gs_DisplayQuery = "";

var nav4 = window.Event ? true : false;

String.prototype.startsWith = function(str)
{return (this.match("^"+str)==str)}

/*---------------------------------------------------------------------------*/
/* FUNCTION : KeyEvent(e) - when enter key stroke                            */
/*---------------------------------------------------------------------------*/
function KeyEvent( e )
{
    if (nav4) 
    {
        var whichCode = e.which;
    }
    else if ( e.type == "keypress" )
    {
        var whichCode = e.keyCode;
    }

    if ( whichCode != 13 ) return;

    var boolvalue = '';
    lf_Search();

}

function KeyEvent2( e )
{
    if (nav4)
    {
        var whichCode = e.which;
    }
    else if ( e.type == "keypress" )
    {
        var whichCode = e.keyCode;
    }
    if ( whichCode != 13 ) return;

    var boolvalue = '';
    lf_ResultSearch();

}

function KeyEvent3( e , gubun )
{
    if (nav4)
    {
        var whichCode = e.which;
    }
    else if ( e.type == "keypress" )
    {
        var whichCode = e.keyCode;
    }
    if ( whichCode != 13 ) return;

    var boolvalue = '';
    lf_ResultSearch(gubun);
    return false;

}

function KeyEvent4( e , gubun, dbt )
{
	if ( e.type == "keypress" )
    {
        var whichCode = e.keyCode;
    }

    if ( whichCode != 13 ) return;

    var boolvalue = '';
    lf_ResultSearch(gubun, dbt);
    return false;
}


function KeyEvent5( e )
{
	if ( e.type == "keypress" )
    {
        var whichCode = e.keyCode;
    }
    if ( whichCode != 13 ) return;

    var boolvalue = '';
    lf_ResultPASearch(); 

}

function gf_KeyEvent( e, as_colls )
{
    if (nav4)
    {
        var whichCode = e.which;
    }
    else if ( e.type == "keypress" )
    {
        var whichCode = e.keyCode;
    }
    if ( whichCode != 13 ) return;

    var boolvalue = '';
    lf_FastSrch();

}


function KeyEventForFunction( e, functionname ) {
    if (nav4) {
        var whichCode = e.which;
    }
    //else if ( e.type == "keypress" )
    if ( e.type == "keypress" )
    {
        var whichCode = e.keyCode;
    }
	Exefunctionname = eval(functionname);
    if ( whichCode != 13 ) return;
    Exefunctionname;
	//setTimeout(functionname,100);

}

function gf_globalSrch(as_collection){
	arrSearchField = new Array();
	arrSearchStr = new Array();
	var jnx=0;
	var iQuotCnt=0;
	var oKeyWord = document.getElementById("search_form_query0");
	if(gf_Trim(oKeyWord.value,'a') == "") {
		alert("검색어를 입력해 주세요");
		return "";
	}
	var sSearchStr = gf_DelSpecialChar( oKeyWord.value );
	// 트림 처리
	sSearchStr = gf_Trim(sSearchStr,'a');
	oKeyWord.value = sSearchStr

	//sSearchStr = gf_CharReplace(sSearchStr,'(',' ');
	//sSearchStr = gf_CharReplace(sSearchStr,')',' ');

	if( sSearchStr.length > 0 ) {
		for( jnx=0; jnx < sSearchStr.length; jnx++ ) {
			if( sSearchStr.charAt(jnx) == '"' )  iQuotCnt++;
		}
            	if( iQuotCnt % 2 != 0 )
            	{
                 	alert( "문장 속의 쌍따옴표 개수가 다릅니다." );
                 	return "";
            	}
          }

	arrSearchField[0] = "BI";
	arrSearchStr[0] = sSearchStr;
	gs_EditQuery = arrSearchField[0] + ":" + arrSearchStr[0];
	var SearchQuery =  gf_MakeQuery(as_collection);
	return SearchQuery;

}

function gf_Search(as_collection, ao_obj){

	// DB= 미국, 유럽, 국제, 일본특허 ; 범위 = 공개 ; 상태 = 공개/등록 ;
	
	gi_SrchCnt =0;
	arrSearchField = new Array();
	arrSearchStr = new Array();

	var sSrchQuery = "";
	var bMakeChk = false;
	gs_EditQuery = "";
	
	switch (as_collection) {
		case "3":
			// 검색대상
			gf_PAMakeQuery(ao_obj);
			
			/*
			for(j=0; j<gi_SrchCnt-1; j++){
				alert("LAST==>" + arrSearchField[j] + "/" + arrSearchStr[j]);
			}
			*/
			if(gi_SrchCnt > 0) {
				sSrchQuery = gf_MakeQuery(as_collection);
			}

			break;

		case "4":
			bMakeChk = gf_RMakeQuery(ao_obj);
			/*
			for(j=0; j<gi_SrchCnt-1; j++){
				alert("LAST==>" + arrSearchField[j] + "/" + arrSearchStr[j]);
			}
			*/
			if(bMakeChk)
				sSrchQuery = gf_MakeQuery(as_collection);
			break;
		case "8":
			bMakeChk = gf_FMakeQuery(ao_obj);
			if(bMakeChk) sSrchQuery = gf_MakeQuery(as_collection);
			break;
			
		case "9":
			bMakeChk = gf_HMakeQuery(ao_obj);
			if(bMakeChk) sSrchQuery = gf_MakeQuery2(as_collection);			
			break;

		default:
        	break;
    }
	
    if (sSrchQuery != "") {
    	// var sqlobj = document.getElementById("txa_query");
    	// sqlobj.value = sSrchQuery;
    	// ao_obj.txa_query.value = sSrchQuery;
    	// srchfrm.query.value = sQuery;
    	// srchfrm.method = 'POST';
    	// srchfrm.action="/brief.do";
    	// srchfrm.submit();
    }

	return sSrchQuery;
}


/* 특허 검색을 위한 배열에 넣기 */
function gf_PAMakeQuery(ao_obj){

	var srchfrm = ao_obj;
	var inx      = 0;
	var jnx      = 0;
	var qnx      = 0;
	var checkCnt = 0;
	var iQuotCnt = 0;

	var sSearchField = "";
	var sSearchStr = "";
	var sChkQueryStr = "";
	var sQueryStr = "";

	for( inx = 0; inx < srchfrm.elements.length; inx++) {
		/* 키워드 정규화 */
		if(srchfrm.elements[inx].type.toLowerCase() == "text" ) {

			//alert(srchfrm.elements[inx].name + "=" + srchfrm.elements[inx].value);

			// 특수문자 제거
			sSearchStr = gf_DelSpecialChar( srchfrm.elements[inx].value );
			// 트림 처리
			sSearchStr = gf_Trim(sSearchStr,'a');
			srchfrm.elements[inx].value= sSearchStr
			if(sSearchStr.length > 0) {
				if( gf_IsOperator2(sSearchStr.charAt(0)) == true || gf_IsDoubleOperator2(sSearchStr) == true ) {
					alert( "검색식 에러입니다. [" + srchfrm.elements[inx].name + "]" );
					return  ;
				}



				sSearchField = srchfrm.elements[inx].name;

				if(  ( sSearchField == "BI"
		        		|| sSearchField == "TI"
		        		|| sSearchField == "AB"
		        		|| sSearchField == "CM"
		        		|| sSearchField == "IN"
		        		|| sSearchField == "PA"
		        		|| sSearchField == "AG"
		        	     ) && ( sSearchStr.length > 0 )  )  {
		            		for( jnx=0; jnx < sSearchStr.length; jnx++ ) {
		                		if( sSearchStr.charAt(jnx) == '"' )  iQuotCnt++;
		                		if( sSearchStr.charAt(inx) == '(' || sSearchStr.charAt(inx) == ')') {
		                    			alert( "검색식 에러 : \n" +
		                           			"검색어에 \'(\'는 사용할 수 없습니다." + schfrm.elements[inx].name );
		                    			return  ;
		                		}
		            		}

			            	if( iQuotCnt % 2 != 0 )
			            	{
			                 	alert( "문장 속의 쌍따옴표 개수가 다릅니다." );
			                 	return ;
			            	}
		        	}

					

				arrSearchField[gi_SrchCnt] = sSearchField;
				arrSearchStr[gi_SrchCnt] = sSearchStr;
				gi_SrchCnt++;
				if( srchfrm.elements[inx].name == "" ) {
					gs_EditQuery += "@" + srchfrm.elements[inx].value;
				} else {
					gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
				}		
			}
		}
		//검색대상
		else if(srchfrm.elements[inx].type.toLowerCase() == "checkbox") {

			//국가구분
			if(srchfrm.elements[inx].name != "chkGubunAll"
				&& srchfrm.elements[inx].name == "chkGubun"
				&& srchfrm.elements[inx].checked == true) {
				arrSearchField[gi_SrchCnt] = "CY";
				arrSearchStr[gi_SrchCnt] = srchfrm.elements[inx].value;
				gi_SrchCnt ++;				
			}
			//범위
			if(srchfrm.elements[inx].name == "chkScope"
				&& srchfrm.elements[inx].checked == true) {
				if(srchfrm.elements[inx+1].name == "chkScope" && srchfrm.elements[inx+1].checked == true){	
				}else if (srchfrm.elements[inx-1].name == "chkScope" && srchfrm.elements[inx-1].checked == true){
				}else {
					arrSearchField[gi_SrchCnt] = "PT";
					arrSearchStr[gi_SrchCnt] = srchfrm.elements[inx].value;
					gi_SrchCnt ++;
				}
			}

			//상태
			if(srchfrm.elements[inx].name == "chkState"
				&& srchfrm.elements[inx].checked == true) {
				if(srchfrm.elements[inx+1].name == "chkState" && srchfrm.elements[inx+1].checked == true){				
				}else if (srchfrm.elements[inx-1].name == "chkState" && srchfrm.elements[inx-1].checked == true){
				}else {
					arrSearchField[gi_SrchCnt] = "REG";
					arrSearchStr[gi_SrchCnt] = srchfrm.elements[inx].value;
					gi_SrchCnt ++;
				}
			}
			
			//EditQuery
			if(srchfrm.elements[inx].checked == true){
				if( srchfrm.elements[inx].name == "" ) {
					gs_EditQuery += "@" + srchfrm.elements[inx].value;
				} else {
					gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
				}
			}
			
			
			
		} else if (srchfrm.elements[inx].type.toLowerCase() == "radio") {
			if(srchfrm.elements[inx].name == "chkGubun"
				&& srchfrm.elements[inx].checked == true){
				arrSearchField[gi_SrchCnt] = "CY";
				arrSearchStr[gi_SrchCnt] = srchfrm.elements[inx].value;
				gi_SrchCnt ++;
			}
			
			//EditQuery
			if(srchfrm.elements[inx].checked == true){
				if( srchfrm.elements[inx].name == "" ) {
					gs_EditQuery += "@" + srchfrm.elements[inx].value;
				} else {
					gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
				}
			}
			
		} else if(srchfrm.elements[inx].type.toLowerCase() == "hidden"){
			//범위
			if(srchfrm.elements[inx].name == "chkScope" ){
				arrSearchField[gi_SrchCnt] = "PT";
				arrSearchStr[gi_SrchCnt] = srchfrm.elements[inx].value;
				gi_SrchCnt ++;
			}
			
			if(srchfrm.elements[inx].checked == true){
				if( srchfrm.elements[inx].name == "" ) {
					gs_EditQuery += "@" + srchfrm.elements[inx].value;
				} else {
					gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
				}
			}
		}


		
		
		if(srchfrm.elements[inx].type.toLowerCase() == "textarea" ) {
			gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value.replace("\r\n","");
		}

	}	

	return ;
}

/* 연구보고서 검색을 위한 배열에 넣기 */
function gf_RMakeQuery(ao_obj){

	var srchfrm = ao_obj;
	var inx      = 0;
	var jnx      = 0;
	var qnx      = 0;
	var checkCnt = 0;
	var iQuotCnt = 0;

	var sSearchField = "";
	var sSearchStr = "";
	var sChkQueryStr = "";
	var sQueryStr = "";

	for( inx = 0; inx < srchfrm.elements.length; inx++) {
//alert(srchfrm.elements[inx].type.toLowerCase() + "==0=="+srchfrm.elements[inx].name + "==>" + srchfrm.elements[inx].value);
		if (srchfrm.elements[inx].type.toLowerCase() == "radio") {

			if(srchfrm.elements[inx].name == "chkGubun"
				&& srchfrm.elements[inx].checked == true){
				if(srchfrm.elements[inx].value != "all"){
					arrSearchField[gi_SrchCnt] = "TY";
					arrSearchStr[gi_SrchCnt] = srchfrm.elements[inx].value;
					gi_SrchCnt ++;
				}
			}
			if(srchfrm.elements[inx].name == "chkOPF"
				&& srchfrm.elements[inx].checked == true){
				if(srchfrm.elements[inx].value != "all"){
					arrSearchField[gi_SrchCnt] = "OPF";
					arrSearchStr[gi_SrchCnt] = srchfrm.elements[inx].value;
					gi_SrchCnt ++;
				}
			}
			if(srchfrm.elements[inx].name == "chkIMF"
				&& srchfrm.elements[inx].checked == true){
				if(srchfrm.elements[inx].value != "all"){
					arrSearchField[gi_SrchCnt] = "IMF";
					arrSearchStr[gi_SrchCnt] = srchfrm.elements[inx].value;
					gi_SrchCnt ++;
				}
			}
			if(srchfrm.elements[inx].name == "chkPeroid"
				&& srchfrm.elements[inx].checked == true){
				if(srchfrm.elements[inx].value != "all"){
					arrSearchField[gi_SrchCnt] = "PD";
					arrSearchStr[gi_SrchCnt] = srchfrm.sFPeriod.value + "0101~" + srchfrm.sLPeriod.value + "1231";
					gi_SrchCnt ++;
				}
			}
			
			//EditQuery
			if(srchfrm.elements[inx].checked == true){
				gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
			}
			
		} else if(srchfrm.elements[inx].type.toLowerCase() == "hidden"){
		
			//범위
			if(srchfrm.elements[inx].name == "chkScope" ){
				arrSearchField[gi_SrchCnt] = "PT";
				arrSearchStr[gi_SrchCnt] = srchfrm.elements[inx].value;
				gi_SrchCnt ++;
			}			
			gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
		}else if (srchfrm.elements[inx].type.toLowerCase() == "select-one") {
			if(srchfrm.elements[inx].name.toLowerCase() == "select01"){
				arrSearchField[gi_SrchCnt] = srchfrm.elements[inx].value;
				sSearchStr = gf_ChkString(srchfrm.elements["SrchTxt01"].value);
				if(sSearchStr != "") {
					arrSearchStr[gi_SrchCnt] = sSearchStr;
					gi_SrchCnt ++;
				}
			}else if(srchfrm.elements[inx].name.toLowerCase().startsWith("select")){
//				alert(srchfrm.elements[inx+1].name);
				if(srchfrm.elements[inx+1].value != "") {
					arrSearchField[gi_SrchCnt] = srchfrm.elements[inx].value;
					arrSearchOpr[gi_OprCnt] = srchfrm.elements[inx-1].value;

					arrSearchField[gi_SrchCnt] = srchfrm.elements[inx].value;
					sSearchStr = gf_ChkString(srchfrm.elements[inx+1].value);
				//if(sSearchStr == "")  return false;
					arrSearchStr[gi_SrchCnt] = sSearchStr;
					gi_OprCnt ++;
					gi_SrchCnt ++;
				}
			}
			gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
		} else {
		
			gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
		}


	}
	return true;
}

/* 사실정보 검색을 위한 배열 넣기 */
function  gf_FMakeQuery(ao_obj){
	var srchfrm = ao_obj;
	var inx      = 0;
	var jnx      = 0;
	var qnx      = 0;
	var checkCnt = 0;
	var iQuotCnt = 0;

	var sSearchField = "";
	var sSearchStr = "";
	var sChkQueryStr = "";
	var sQueryStr = "";


	for( inx = 0; inx < srchfrm.elements.length; inx++) {
		/* 키워드 정규화 */
		if(srchfrm.elements[inx].type.toLowerCase() == "text" ) {
			//alert(srchfrm.elements[inx].name + "=" + srchfrm.elements[inx].value);

			// 특수문자 제거
			sSearchStr = gf_DelSpecialChar( srchfrm.elements[inx].value );

			// 트림 처리
			sSearchStr = gf_Trim(sSearchStr,'a');
			srchfrm.elements[inx].value= sSearchStr

			if(sSearchStr.length > 0) {
				if( gf_IsOperator2(sSearchStr.charAt(0)) == true || gf_IsDoubleOperator2(sSearchStr) == true ) {
					alert( "검색식 에러입니다. [" + srchfrm.elements[inx].name + "]" );
					return false;
				}
				sSearchField = srchfrm.elements[inx].name;

				if( sSearchStr.length > 0 )  {
		            		for( jnx=0; jnx < sSearchStr.length; jnx++ ) {
		                		if( sSearchStr.charAt(jnx) == '"' )  iQuotCnt++;
		                		if( sSearchStr.charAt(inx) == '(' || sSearchStr.charAt(inx) == ')') {
		                    			alert( "검색식 에러 : \n" +
		                           			"검색어에 \'(\'는 사용할 수 없습니다." + schfrm.elements[inx].name );
		                    			return false ;
		                		}
		            		}

			            	if( iQuotCnt % 2 != 0 )
			            	{
			                 	alert( "문장 속의 쌍따옴표 개수가 다릅니다." );
			                 	return false ;
			            	}
		        	}

				arrSearchField[gi_SrchCnt] = sSearchField;
				arrSearchStr[gi_SrchCnt] = sSearchStr;
				gi_SrchCnt++;
				gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
			}
			
		}
		else if (srchfrm.elements[inx].type.toLowerCase() == "textarea") {	
			gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value.replace("\r\n","");
		}
		else if (srchfrm.elements[inx].type.toLowerCase() == "radio") {			
			if(srchfrm.elements[inx].name == "chkPeroid"
				&& srchfrm.elements[inx].checked == true){
				if(srchfrm.elements[inx].value != "all"){
					arrSearchField[gi_SrchCnt] = "PY";
					arrSearchStr[gi_SrchCnt] = srchfrm.sFPeriod.value + "~" + srchfrm.sLPeriod.value;
					gi_SrchCnt ++;
				}
			}
			gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
		} 
	}
	return true;
}



var gi_MCnt=0;
var gi_LCnt=0;
var gi_OCnt=0;


/* 인력정보 검색을 위한 배열 넣기 */
function  gf_HMakeQuery(ao_obj){
	
	var srchfrm = ao_obj;
	var inx      = 0;
	var jnx      = 0;
	var qnx      = 0;
	var checkCnt = 0;
	var iQuotCnt = 0;

	var sSearchField = "";
	var sSearchStr = "";
	var sChkQueryStr = "";
	var sQueryStr = "";
	

	for( inx = 0; inx < srchfrm.elements.length; inx++) {
//alert(srchfrm.elements[inx].type.toLowerCase() + "==>>=="+srchfrm.elements[inx].name + "==>" + srchfrm.elements[inx].value);
		if (srchfrm.elements[inx].type.toLowerCase() == "select-one") {
			if(srchfrm.elements[inx].name.toLowerCase() == "select01"){
				sSearchStr = gf_ChkString(srchfrm.elements["SrchTxt01"].value);
				if(sSearchStr != ""){
					arrSearchField[gi_SrchCnt] = srchfrm.elements[inx].value;				
					arrSearchStr[gi_SrchCnt] = sSearchStr;
					gi_SrchCnt ++;
					
					
					arrMainSearchFiled[gi_MCnt] = srchfrm.elements[inx].value;	
					arrMainSearchStr[gi_MCnt] = sSearchStr;
					gi_MCnt++;

				}


			}else if(srchfrm.elements[inx].name.toLowerCase() == "select02"
				|| srchfrm.elements[inx].name.toLowerCase() == "select03"
				|| srchfrm.elements[inx].name.toLowerCase() == "select04"){
				if(srchfrm.elements[inx+1].value != "") {
					arrSearchField[gi_SrchCnt] = srchfrm.elements[inx].value;
					arrSearchOpr[gi_OprCnt] = srchfrm.elements[inx-1].value;
					sSearchStr = gf_ChkString(srchfrm.elements[inx+1].value);
					//if(sSearchStr == "")  return false;
					arrSearchStr[gi_SrchCnt] = sSearchStr;
					gi_OprCnt ++;
					gi_SrchCnt ++;
					
					
					arrMainSearchFiled[gi_MCnt] = srchfrm.elements[inx].value;	
					arrMainSearchStr[gi_MCnt] = gf_ChkString(srchfrm.elements[inx+1].value);
					arrMainSearchOpr[gi_OCnt] = srchfrm.elements[inx-1].value;
					gi_MCnt++;
					gi_OCnt++
					
					
				}
			}else if(srchfrm.elements[inx].name.toLowerCase() == "selectlo"	){
				if(srchfrm.elements[inx].value != "00") {
					arrSearchField[gi_SrchCnt] = "LO";
					arrSearchStr[gi_SrchCnt] = srchfrm.elements[inx].value;
					gi_SrchCnt ++;
					
					
					arrLimitSearchFiled[gi_LCnt] = "LO";
					arrLimitSearchStr[gi_LCnt] = srchfrm.elements[inx].value;
					gi_LCnt++;

				}
			}
			gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
		} 
		else if (srchfrm.elements[inx].type.toLowerCase() == "checkbox") {
//if(srchfrm.elements[inx].checked) alert("checkbox[" + srchfrm.elements[inx].name+ "]== " + srchfrm.elements[inx].value);
			if(srchfrm.elements[inx].name == "chkGubun"
				&& srchfrm.elements[inx].checked == true){
				if(srchfrm.elements[inx].value != "all"){
					arrLimitSearchFiled[gi_LCnt] = "HG";
					arrLimitSearchStr[gi_LCnt] = srchfrm.elements[inx].value;
					gi_LCnt++;
					
				}
			}
			if(srchfrm.elements[inx].name == "chkDegree"
				&& srchfrm.elements[inx].checked == true){
				if(srchfrm.elements[inx].value != "all"){
					arrLimitSearchFiled[gi_LCnt] = "DG";
					arrLimitSearchStr[gi_LCnt] = srchfrm.elements[inx].value;
					gi_LCnt++;
				}
			}
			if(srchfrm.elements[inx].name == "chkOpen"
				&& srchfrm.elements[inx].checked == true){
				if(srchfrm.elements[inx].value != "all"){
					arrLimitSearchFiled[gi_LCnt] = "OG";
					arrLimitSearchStr[gi_LCnt] = srchfrm.elements[inx].value;
					gi_LCnt++;
				}
			}
//if(gi_LCnt >0) alert(arrLimitSearchFiled[gi_LCnt-1] + ":" + arrLimitSearchStr[gi_LCnt-1]);									
			//EditQuery
			if(srchfrm.elements[inx].checked == true){
				gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
			}
			
		} else {
			gs_EditQuery += "@" + srchfrm.elements[inx].name + ":" + srchfrm.elements[inx].value;
		}


	}
	return true;
}


function gf_MakeQuery2(as_collection){
	
	var sMTempQuery = "";
	var sLTempQuery = "";
	var srchField = "";
	var binsert = false;
	var li_LCnt=0;
	var sSearchQuery = "";
	
	var sDLTempQuery = ""; //디스플레이용
	
	
	var arrTempField = new Array();
	var arrTempStr = new Array();
	var arrDTempStr = new Array();
	
	for (var i=0; i < arrMainSearchFiled.length; i++){
		//alert(arrMainSearchFiled[i] + ":" + arrMainSearchStr[i] + ">>" + arrMainSearchOpr[i] ); 
		if(i >0 && arrMainSearchOpr[i-1] != null) sMTempQuery += " " + arrMainSearchOpr[i-1] + " "; 
		sMTempQuery += arrMainSearchFiled[i] + ":(" + arrMainSearchStr[i] + ")"; 
	}
	
	for (var j=0; j < arrLimitSearchFiled.length; j++){
//		alert(arrLimitSearchFiled[j] + ":" + arrLimitSearchStr[j]); 
		binsert = false;
		srchField = arrLimitSearchFiled[j];
		for(var jdx=0; jdx < arrTempField.length; jdx++){
			if(arrTempField[jdx] == srchField ) {
				arrTempStr[jdx] = arrTempStr[jdx] + " OR " + arrLimitSearchStr[j];
				arrDTempStr[jdx] = arrDTempStr[jdx] + " OR " + gf_checkDisplayVal(as_collection, srchField, arrLimitSearchStr[j]);
				binsert = true;
			}			
		}
				
		if(!binsert) {
			arrTempField[li_LCnt] = srchField;
			arrTempStr[li_LCnt] = arrLimitSearchStr[j];
			arrDTempStr[li_LCnt] = gf_checkDisplayVal(as_collection, srchField, arrLimitSearchStr[j]);
			li_LCnt ++;
		}
	}
	
	for (var k=0; k < arrTempField.length ; k++){
		if(k>0) {
			sLTempQuery += " AND ";
			sDLTempQuery += " AND ";
		}
		/*
		sLTempQuery += "(" + arrTempField[k] + ":" + arrTempStr[k] + ")";	
		sDLTempQuery += "(" + arrTempField[k] + ":" + arrDTempStr[k] + ")";
		*/
		sLTempQuery +=  arrTempField[k] + ":(" + arrTempStr[k] + ")";	
		sDLTempQuery +=  arrTempField[k] + ":(" + arrDTempStr[k] + ")";
		
		
		
	}

	if(sMTempQuery.length > 0)	{
		/*
		sSearchQuery = "(" + sMTempQuery + ")";
		gs_DisplayQuery = "(" + sMTempQuery + ")";
		*/
		sSearchQuery =  sMTempQuery ;
		gs_DisplayQuery =  sMTempQuery ;
		
		if(sLTempQuery.length > 0){
			sSearchQuery += " AND (" + sLTempQuery + ")";
			gs_DisplayQuery += " AND (" + sDLTempQuery + ")";
		}		
		
	}
	else {
		sSearchQuery = sLTempQuery
		gs_DisplayQuery = sDLTempQuery;
	}
	return sSearchQuery;
	
}


/* 디스플레이용 쿼리 만들기 */
function gf_checkDisplayVal(as_col, as_field, as_value)
{
	var sRet = "";
	switch(as_col){
		case "9" :
			if(as_field == "HG") {

				switch(as_value) {
					case "1" :
						sRet = "대학교";
						break;
					case "2" :
						sRet = "연구소";
						break;
					case "3" :
						sRet = "산업체";
						break;
					case "4" :
						sRet = "기술사";
						break;
					case "5" :
						sRet = "관공서";
						break;
					case "9" :
						sRet = "기타";
						break;
				}
			}else if  (as_field == "DG") {
				switch(as_value) {
					case "8" :
						sRet = "박사";
						break;
					case "7" :
						sRet = "박사수료";
						break;
					case "5" :
						sRet = "석사";
						break;
					case "2" :
						sRet = "학사";
						break;
				}
			}else if  (as_field == "OG") {
				switch(as_value) {
					case "1" :
						sRet = "공개";
						break;
					case "2" :
						sRet = "부분공개";
						break;
					case "3" :
						sRet = "비공개";
						break;
				}
			} else {
				sRet = as_value;
			}
			break;
	}
	return sRet;
}

function gf_ChkString(as_Str){

	// 특수문자 제거
	var sSearchStr = gf_DelSpecialChar(as_Str);
	var iQuotCnt =0;

	// 트림 처리
	sSearchStr = gf_Trim(sSearchStr,'a');
	if(sSearchStr.length > 0) {
		if( gf_IsOperator2(sSearchStr.charAt(0)) == true || gf_IsDoubleOperator2(sSearchStr) == true ) {
			alert( "검색식 에러입니다." );
			return "" ;
		}
		if(sSearchStr.length > 0 )  {
            		for( jnx=0; jnx < sSearchStr.length; jnx++ ) {
                		if( sSearchStr.charAt(jnx) == '"' )  iQuotCnt++;
                		if( sSearchStr.charAt(jnx) == '(' || sSearchStr.charAt(jnx) == ')') {
                    			//alert( "검색식 에러 : \n" +
                           		//	"검색어에 \'(\'는 사용할 수 없습니다.");
                    			//return "" ;
                		}
            		}

	            	if( iQuotCnt % 2 != 0 )
	            	{
	                 	alert( "문장 속의 쌍따옴표 개수가 다릅니다." );
	                 	return "";
	            	}
        	}
	}
	return sSearchStr;

}

function getSFstfield(as_f){
	var str="";
	
	//if(as_f == 'comabstract01') str = "comabstract01";
	//if(as_f == 'comabstract02') str = "comabstract02";	

	if(as_f == 'comabstract01') str = "ab01";
	if(as_f == 'comabstract02') str = "ab02";


	return str;
}


function gf_FieldMatch(as_Gubun, as_Field){


	var sFstfield = "";
	switch (as_Gubun){
		case "3":
			if(as_Field == "BI") sFstfield= "BI";
			if(as_Field == "TI") sFstfield= "TI";
			if(as_Field == "AB") sFstfield= getSFstfield('comabstract01');
			if(as_Field == "CM") sFstfield= "comabstract02";
			if(as_Field == "IN") sFstfield= "IN";
			if(as_Field == "INC") sFstfield= "strfldi06del";
			if(as_Field == "PA") sFstfield= "PA";
			if(as_Field == "PAC") sFstfield= "strfldi04del";
			if(as_Field == "AG") sFstfield= "AG";
			if(as_Field == "IC") sFstfield= "strfldi07del";
			if(as_Field == "UC") sFstfield= "strfldi10del";
			if(as_Field == "AN") sFstfield= "strfldsi01sub";
			if(as_Field == "UN") sFstfield= "strfldsi02sub";
			if(as_Field == "RN") sFstfield= "strfldsi03sub";
			if(as_Field == "PR_AN") sFstfield= "strfldi03sub";
			if(as_Field == "IPN") sFstfield= "strfldi04sub";
			if(as_Field == "IUN") sFstfield= "strfldi05sub";
			if(as_Field == "AD") sFstfield= "intflds01";
			if(as_Field == "UD") sFstfield= "intflds02";
			if(as_Field == "RD") sFstfield= "intflds03";
			if(as_Field == "IPD") sFstfield= "intfld02";
			if(as_Field == "IUD") sFstfield= "intfld03";
			if(as_Field == "PR_AD") sFstfield= "intfld01";
			if(as_Field == "IMF") sFstfield="urlf01";
		        if(as_Field == "PT") sFstfield="strfldi01del";
                        if(as_Field == "REG") sFstfield="strfldsi02del";
                        if(as_Field == "CY") sFstfield="strfldsi01del";
                        break;
                case "4":
			if(as_Field == "BI") sFstfield= "BI";
			if(as_Field == "TI") sFstfield= "TI";
			if(as_Field == "AU") sFstfield= "AU";
			if(as_Field == "PU") sFstfield= "PU";
			if(as_Field == "KW") sFstfield= "KW";
			if(as_Field == "AB") sFstfield= "comabstract01";
			if(as_Field == "PD") sFstfield= "intflds01";
			if(as_Field == "DBT") sFstfield= "dbt01";
			if(as_Field == "IMF") sFstfield= "urlf01";
                default :
                	break;
         }
         return sFstfield;
}


function gf_MakeQuery(as_collection){

	var inx =0;
	var spos=0;
	var epos=0;
	var filterCnt = 0;
	var dateCnt =0;
	var numCnt =0;

	var bkeyCheck = false;

	var sType = "";
	var sTempQuery = "";

	var arr_FilterCol = new Array();
	var arr_FilterVal = new Array();
	var arr_DateCol = new Array();
	var arr_DateVal = new Array();
	var arr_NumCol = new Array();
	var arr_NumVal = new Array();
	var arr_Operator= new Array();
	var oper_name = '';

	var sSearchStr = "";
	var sSearchField = "";
	var sSearchViewField = "";
	var sSearchOper = "";
	
	var sOperator = " and ";
	var bChangeOper = false;

	//이후......................................
	var preCol ="";
	var arr_Field = new Array();
	var arr_Value = new Array();
	var arr_Oper = new Array();
	var binsert = false;
	var sQueryStr = "";
	var iCnt =0;
	
	var human_field = "NM,ORG,MJ,UNIV";
	var arrhuman_field = human_field.split(",");
	
	for(inx=0; inx < arrSearchField.length; inx++){
		binsert = false;
		sSearchField = arrSearchField[inx];
		sSearchStr = gf_DelSpecialChar(arrSearchStr[inx]);
			
		if(arrSearchOpr[inx] !=null) {
			sSearchOper = arrSearchOpr[inx];
		}else{
			sSearchOper = "";
		}
		
		if(as_collection == "3" || as_collection == "9" ) {
			for(j=0; j<arr_Field.length; j++){
				if(arr_Field[j] == sSearchField){
					arr_Value[j] += " OR " +  sSearchStr;
					binsert = true;
				}			
			}
		}
		
		if(!binsert){
			var bOperChkFlag = false;
			arr_Field[iCnt] = sSearchField;
			arr_Value[iCnt] = sSearchStr;			
			if(as_collection == "9"){
				for(var kdx=0; kdx < arrhuman_field.length; kdx++){		
					if(sSearchField == 	arrhuman_field[kdx]) bOperChkFlag = true; 
				}			
				if(bOperChkFlag && sSearchOper !== "") arr_Oper[iCnt] = sSearchOper;
				else arr_Oper[iCnt] = "AND";	
			}
			else {
				if(sSearchOper !== "") arr_Oper[iCnt] = sSearchOper;
				else arr_Oper[iCnt] = "AND";						
			}
			iCnt++;		
		}
	}
	

	for(inx=0; inx < arr_Field.length; inx++){
		if( (inx > 0 )
			&& (arr_Field.length > 1 )
			&& (inx < arr_Field.length) ) {
				sQueryStr += " " +arr_Oper[inx -1] +" ";		
			}
		
		/*
		if(arr_Value[inx].indexOf("OR") > -1)
			sQueryStr +=  "(" + arr_Field[inx] + ":" +  arr_Value[inx] + ")";		
		else
			sQueryStr +=  arr_Field[inx] + ":" +  arr_Value[inx];		
			*/
		if(arr_Field[inx] == "") {
			sQueryStr +="(" +  arr_Value[inx] + ")";
		} else {
			sQueryStr += arr_Field[inx] + ":(" +  arr_Value[inx] + ")";
		}
	}
	//alert("sQueryStr:"+sQueryStr);
	//alert("===" + sQueryStr);
	
	
	
	//이전................

	//if(arrSearchField.length > 1) sQueryStr = "and(";

	/*
	for(inx=0; inx < arrSearchField.length; inx++){
		//어구 검색은 별도로 처리
		//Ex) author:starts-with("adam jones")
		if(bChangeOper){
			sQueryStr= sQueryStr.substring(0,sQueryStr.length-1) + "),";
		}

		if(arrSearchOpr.length > 0
			&& arrSearchOpr.length > inx){

			if(sPreOperator != arrSearchOpr[inx].toLowerCase()) {
				sPreOperator = arrSearchOpr[inx].toLowerCase();
				sQueryStr = sPreOperator + "(";
				bChangeOper = true;
			}
			else{
				bChangeOper = false;
			}

		}


		sSearchField = gf_FieldMatch(as_collection,arrSearchField[inx]);
		sSearchStr = arrSearchStr[inx];
		sSearchViewField = arrSearchField[inx];
		if(sSearchViewField == "CY"
			|| sSearchViewField == "PT"
			|| sSearchViewField == "REG"
			|| sSearchViewField == "DBT"
			|| sSearchViewField == "IMF" ){

				sType = "F";	//필터처리

		} else if ( sSearchViewField == "AD"
			|| sSearchViewField == "UD"
			|| sSearchViewField == "RD"
			|| sSearchViewField == "IPD"
			|| sSearchViewField == "IUD"
			|| sSearchViewField == "PR_AD"
			|| sSearchViewField == "PD"
			){

				sType = "D";	//날짜검색

		} else if ( sSearchViewField == "IC"
			|| sSearchViewField == "UC"
			|| sSearchViewField == "AN"
			|| sSearchViewField == "UN"
			|| sSearchViewField == "RN"
			|| sSearchViewField == "PR_AN"
			|| sSearchViewField == "IPN"
			|| sSearchViewField == "IUN"){

				sType = "N"	//번호검색

		} else {
				sType = "K"	//키워드검색
		}

		//필터처리
		switch (sType){
			case "F" :
				arr_FilterCol[filterCnt] = sSearchField;
				arr_FilterVal[filterCnt] = "\"" + sSearchStr + "\"";
				filterCnt++;
				break;
			case "D" :
				sSearchStr = gf_OnlyOneSpace(sSearchStr);
				sSearchStr = gf_SpaceJob(sSearchStr,'~','a'); //날짜검색시 '~'의 공백제거
				sSearchStr = gf_ConvertDateFormat(sSearchStr);
				if(sSearchStr == "") return sSearchStr;
				arr_DateCol[dateCnt] = sSearchField;
				arr_DateVal[dateCnt] = sSearchStr;
				dateCnt++;
				break;

			case "N" :
				sSearchStr = gf_OnlyOneSpace(sSearchStr);
				sSearchStr=gf_SpaceJob(sSearchStr,'-','a');	//연산자 '-'의 공백제거
				arr_NumCol[numCnt] = sSearchField;
				arr_NumVal[numCnt] = sSearchStr;
				numCnt++;
				break;
			default :
				if(bkeyCheck) sQueryStr += ",";
				spos = gf_Pos(sSearchStr, '"', spos);
				if (spos >= 0) {
					sSearchStr=gf_SpaceJob(sSearchStr,'"','a');	 	//연산자 '&'의 공백제거
					sSearchStr = gf_OnlyOneSpace(sSearchStr);        		// 두개 이상의 공백을 하나의 공백으로 변환

					epos = gf_Pos(sSearchStr, '"', spos+1);

					//spos보다 작고 epos보다 큰 위치에 스트링 및 연산자 있으면 안됨.
					if(spos!=0) {
						alert("어구검색은 \" 와 \" 사이에 어구가 있어야 합니다.");
						return "0";
					}

					var temp = sSearchStr.substring(epos+1, sSearchStr.length);
					if(temp.length>0){
						alert("어구검색은 \" 와 \" 사이에 어구가 있어야 합니다.");
						return ;
					}

					sTempQuery = 'string(';
					sTempQuery += sSearchStr;
					sTempQuery += ')';
					sQueryStr += sSearchField+":" + sTempQuery;
					arrSearchStr[inx] = sSearchStr;
				}else{

					sSearchStr = gf_OperateChange(sSearchStr);	// 연산자 치환
					sSearchStr = gf_OnlyOneSpace(sSearchStr);        // 두개 이상의 공백을 하나의 공백으로 변환

					sSearchStr=gf_SpaceJob(sSearchStr,'&','a');	 //연산자 '&'의 공백제거
					sSearchStr=gf_SpaceJob(sSearchStr,'|','a');	 //연산자 '|'의 공백제거
					sSearchStr=gf_SpaceJob(sSearchStr,'!','a');	 //연산자 '!'의 공백제거
					sSearchStr=gf_SpaceJob(sSearchStr,'♨','a'); //연산자 '♨'의 공백제거
					sSearchStr=gf_SpaceJob(sSearchStr,'*','p');	//연산자 '*'의 공백제거

					//키워드 검색


					//공백은 모두 제거한 상태에서 ' ' (스페이스) &로 대체
					sSearchStr = gf_CharReplace(sSearchStr,' ','&');

					//한 필드내에 두개의 연산자가 존재할 수 없도록 한다 ..
					var cnt = gf_OperaterCheck(sSearchStr);

					//필드 검색은 Prefix operator 방식을 원칙으로 한다.
					// ex) adtitle:and("computer","journal")

					//검색 연산자 찾기
					var andpos = gf_Pos(sSearchStr, '&', 1);
					var orpos  = gf_Pos(sSearchStr, '|', 1);
					var notpos = gf_Pos(sSearchStr, '!', 1);
					var nearpos = gf_Pos(sSearchStr, '♨', 1);
					var wildpos = gf_Pos(sSearchStr, '*', 1);

					//and 연산
					if(andpos>0){
						arr_Operator=sSearchStr.split("&");
						oper_name = 'and(';

					//or 연산
					}else if(orpos>0){
						arr_Operator=sSearchStr.split("|");
						oper_name = 'or(';

					//not 연산
					}else if(notpos>0){
						arr_Operator=sSearchStr.split("!");
						oper_name = 'andnot(';

					//near 연산
					}else if(nearpos>0){
						arr_Operator=sSearchStr.split("♨");
						oper_name = 'near(';

					//절단검색 연산
					}else if(wildpos>0){
						var wildcharpos = sSearchStr.length-1;
						if(wildpos != wildcharpos){
							alert("전방일치만 검색가능 합니다. 키워드* 형태로 입력해 주세요");
							return ;
						}

						arr_Operator=sSearchStr.split("*");
						oper_name = 'starts-with(';


					//연산자 없음.
					}else{
						arr_Operator=sSearchStr;
						oper_name = '(';
					}

					sTempQuery = oper_name;

					if(oper_name != "("){
						for(var i=0; i< arr_Operator.length; i++){
							if(arr_Operator[i].length>0){
								if(i>0) sTempQuery += ",";
								sTempQuery += "\"";
								sTempQuery += arr_Operator[i];
								sTempQuery += "\"";
							}
						}

						if(oper_name == "near("){
							sTempQuery += ",n=3";
						}
					}else{
						sTempQuery += "\"";
						sTempQuery += arr_Operator;
						sTempQuery += "\"";
					}

					sTempQuery += ')';

					if(sSearchField.toUpperCase() == "BI"){
						sQueryStr += "or(";
						sQueryStr += "comtitle01:" + sTempQuery + ",";
						sQueryStr += "comtitle02:" + sTempQuery + ",";
						sQueryStr += "author01:" + sTempQuery + ",";
						sQueryStr += "author02:" + sTempQuery + ",";
						sQueryStr += "author03:" + sTempQuery + ",";
						sQueryStr += "author04:" + sTempQuery + ",";
						sQueryStr += "author05:" + sTempQuery + ",";
						sQueryStr += "author06:" + sTempQuery + ",";
						sQueryStr += "comabstract01:" + sTempQuery + ",";
						sQueryStr += "comabstract02:" + sTempQuery + ",";
						sQueryStr += "strfldsi01sub:" + sTempQuery + ",";
						sQueryStr += "strfldsi02sub:" + sTempQuery + ",";
						sQueryStr += "strfldsi03sub:" + sTempQuery + ",";
						sQueryStr += "strfldi07del:" + sTempQuery + ",";
						sQueryStr += "strfldi01sub:" + sTempQuery + ",";
						sQueryStr += "strfldi02sub:" + sTempQuery + ",";
						sQueryStr += "strfldi04sub:" + sTempQuery ;
						sQueryStr += ")";

					} else if (sSearchField.toUpperCase() == "TI"){
						sQueryStr += "or(";
						sQueryStr += "comtitle01:" + sTempQuery + ",";
						sQueryStr += "comtitle02:" + sTempQuery ;
						sQueryStr += ")";

					} else if (sSearchField.toUpperCase() == "PA"
						   || sSearchField.toUpperCase() == "AU"){
						sQueryStr += "or(";
						sQueryStr += "author01:" + sTempQuery + ",";
						sQueryStr += "author02:" + sTempQuery;
						sQueryStr += ")";


					} else if (sSearchField.toUpperCase() == "IN"){
						sQueryStr += "or(";
						sQueryStr += "author03:" + sTempQuery + ",";
						sQueryStr += "author04:" + sTempQuery;
						sQueryStr += ")";

					} else if (sSearchField.toUpperCase() == "AG"){
						sQueryStr += "or(";
						sQueryStr += "author05:" + sTempQuery + ",";
						sQueryStr += "author06:" + sTempQuery;
						sQueryStr += ")";

					} else if (sSearchField.toUpperCase() == "PU"){
						sQueryStr += "or(";
						sQueryStr += "publisher01:" + sTempQuery + ",";
						sQueryStr += "publisher02:" + sTempQuery;
						sQueryStr += ")";

					} else if (sSearchField.toUpperCase() == "KW"){
						sQueryStr += "or(";
						sQueryStr += "keyword01:" + sTempQuery + ",";
						sQueryStr += "keyword02:" + sTempQuery;
						sQueryStr += ")";

					} else {
						sQueryStr += sSearchField +":"+sTempQuery;
					}

					bkeyCheck = true
				}

				break;
		}
	}

	//if(bkeyCheck) sQueryStr = sQueryStr.substring(0, sQueryStr.length-1);

	var dateQuery = "";
	if(dateCnt>0) {
		dateQuery = gf_GetDateQuery(arr_DateCol, arr_DateVal);
		if(bkeyCheck) sQueryStr += "," + dateQuery;
		else sQueryStr += dateQuery;
		bkeyCheck = true

	}

	var numQuery = "";

	if(numCnt>0)  {
		numQuery = gf_GetNumQuery(arr_NumCol, arr_NumVal);
		if(bkeyCheck) sQueryStr += "," + numQuery;
		else sQueryStr += numQuery;
		bkeyCheck = true
	}

	var fiterQuery = "";
	if(filterCnt>0)  {
		fiterQuery = gf_GetFilterQuery(arr_FilterCol, arr_FilterVal);
		if(bkeyCheck) sQueryStr += "," + fiterQuery;
		else sQueryStr += fiterQuery;
	}

	if(arrSearchField.length > 1) sQueryStr += ")";
	*/
	gf_makeDQuery(as_collection, sQueryStr);
	return sQueryStr;


}


function gf_makeDQuery(as_col, as_Query){
	
	var sDquery = as_Query;
	var tempStr = "";
	var sReplaceStr = "";
	var ipos =0;
	
	switch(as_col){
		case "3":
			//구분
			ipos = sDquery.indexOf("CY:");
			if(ipos > 0) {
				//sDquery = sDquery.replace("CY:","DB:");
				tempStr = sDquery.substring(ipos-1,gf_Pos(sDquery, ')', ipos)+1);
				sReplaceStr = tempStr.replace("ko","한국");
				sReplaceStr = sReplaceStr.replace("us","미국");
				sReplaceStr = sReplaceStr.replace("ep","유럽");
				sReplaceStr = sReplaceStr.replace("wo","국제");
				sReplaceStr = sReplaceStr.replace("ja","일본");
				sDquery = sDquery.replace(tempStr,sReplaceStr);
			}else{
				sDquery += "(DB:전체) AND " + sDquery;
			}
			//범위
			ipos = sDquery.indexOf("PT:");
			if(ipos > 0) {
				//sDquery = sDquery.replace("PT:","범위:");
				tempStr = sDquery.substring(ipos-1,gf_Pos(sDquery, ')', ipos)+1);
				sReplaceStr = tempStr.replace("10","특허");
				sReplaceStr = sReplaceStr.replace("20","실용");				
				sReplaceStr = sReplaceStr.replace("30","디자인");				
				sDquery = sDquery.replace(tempStr,sReplaceStr);
			}
			//상태
			ipos = sDquery.indexOf("REG:");
			if(ipos > 0) {
				//sDquery = sDquery.replace("REG:","상태:");
				tempStr = sDquery.substring(ipos-1,gf_Pos(sDquery, ')', ipos)+1);
				sReplaceStr = tempStr.replace("P","공개");
				sReplaceStr = sReplaceStr.replace("R","공고/등록");				
				sDquery = sDquery.replace(tempStr,sReplaceStr);
			}
			break;
		case "4":
			break;
		default:
			break;
		
	}	
	
	
	gs_DisplayQuery = sDquery;
	
}

function gf_GetFilterQuery(ar_col, ar_val){
	var idx=0;
	var jdx=0;
	var sFilterStr = "";
	var stempCol = "";
	var stempStr = "";
	var bChkDuble = false;
	var arr_FilterStr = new Array();

	for (idx=0; idx <= ar_col.length; idx++){
		//alert("ar_val[" + idx + "]=" + ar_val[idx]);
		if(stempCol != ar_col[idx]) {
			arr_FilterStr[jdx] = gf_MakeFilterQuery(stempCol,stempStr,bChkDuble);
			if(idx) jdx++;
			bChkDuble = false;
			stempCol = ar_col[idx];
			stempStr = ar_val[idx];
		} else {
			stempStr += "," + ar_val[idx];
			bChkDuble = true;
		}
	}

	for (idx=0; idx < jdx ; idx++){
		if(idx) sFilterStr += ",";
		sFilterStr += arr_FilterStr[idx];

	}
	return sFilterStr;
}

function gf_MakeFilterQuery(as_col, as_str, ab_chk){
	var filterquery = "filter(";
	filterquery += as_col + ":";
	if(ab_chk) filterquery += "or(";
	filterquery += as_str;
	if(ab_chk) filterquery += ")";
	filterquery += ")";
	return filterquery;
}


function gf_GetDateQuery(ar_col, ar_val){
	var idx=0;
	var sTempStr = "";
	var datequery = "";

	for(idx=0; idx < ar_col.length; idx++) {
		if(idx>0) datequery += ",";
		//alert("ar_val[" + idx + "]=" + ar_val[idx]);
		sTempStr = ar_val[idx].split("~");
		datequery += ar_col[idx] + ":range(" + sTempStr[0] + "," + sTempStr[1] + ",from=\"GE\", to=\"LE\")";
	}

	return 	datequery;
}

function gf_GetNumQuery(ar_col, ar_val){
	var idx=0;
	var spos=0;
	var sTempStr = "";
	var numquery = "";

	for(idx=0; idx < ar_col.length; idx++) {
		if(idx>0) numquery += ",";
		//alert("ar_val[" + idx + "]=" + ar_val[idx]);
		/*
		spos = gf_Pos(ar_val[idx], '-', spos);
		if(spos > 0) {
			numquery += ar_col[idx] + ":string(\"" + ar_val[idx] + "\")";
		} else {
			numquery += ar_col[idx] + ":string(\"*" + ar_val[idx] + "*\")";
		}
		*/
		numquery += ar_col[idx] + ":\"" + ar_val[idx] + "\"";
	}

	return 	numquery;
}

/*********************************************************************************
 * cgf_OperaterCheck -- Operater 갯수 체크(서로	다른 연산자가 있으면 안된다.)
 *********************************************************************************/
function gf_OperaterCheck (field_value){
	var li_1 = 0;
	var li_2 = 0;
	var li_3 = 0;
	var li_4 = 0;
	var li_5 = 0;
	var check = 0;
	var token = '';

	var field_length=field_value.length;
        for(i=0;i<field_length;i++) {
                token=field_value.charAt(i);
		switch (token) {
			//and검색
			case '&': li_1++;break;
			case '|': li_2++;break;
			case '!': li_3++;break;
			case '♨': li_4++;break;
			case '*': li_5++;break;
			default: break;
                }  //switch문 끝
        }   //for문 끝
	if(li_1>0){
		check = li_2+li_3+li_4+li_5;
		if(check>0) return check;
	}else if(li_2>0){
		check = li_1+li_3+li_4+li_5;
		if(check>0) return check;
	}else if(li_3>0){
		check = li_1+li_2+li_4+li_5;
		if(check>0) return check;
	}else if(li_4>0){
		check = li_1+li_2+li_3+li_5;
		if(check>0) return check;
	}else if(li_5>0){
		check = li_1+li_2+li_3+li_4;
		if(check>0) return check;
	}

	return check;
}


function gf_OperateChange(field_value) {
	//연산자 변환(and-->'&', or-->'|', not-->'!', and not-->'!', near-->'♨')
	field_value=gf_WordCheck(field_value,'and','&');
	field_value=gf_WordCheck(field_value,'or','|');
	field_value=gf_WordCheck(field_value,'not','!');
	field_value=gf_WordCheck(field_value,'near','♨');
	return field_value;
}


/*----------------------------------------------------------------------*/
/* Function명 : gf_SpaceJob						*/
/* 작  성  자 : hwado							*/
/* 작  성  일 : 07.11.15						*/
/* 기      능 : field_value에 token 주위의 공백을 제거	        	*/
/* 인      수 : string 대상 string                                      */
/*            : token 절단할 string                                   	*/
/*            : gubun	                                  		*/
/* 리      턴 : string.							*/
/*----------------------------------------------------------------------*/
function gf_SpaceJob(field_value,token,gubun) {

	var ls_nTempPos; 	  //토큰 다음 포지션
	var ls_cTempPos=0;  	  //토큰 현재포지션
	var ls_lfield_value='';  //field source에서 작업할 left string
	var ls_cfield_value='';  //field source에서 작업할 current string
	var ls_rfield_value='';  //field source에서 작업할 right string
	var ls_dfield_value='';  //작업한 string

	switch(gubun) {
		case 'p':
			while(1) {
				ls_cTempPos=field_value.indexOf(token,ls_cTempPos);
				if(ls_cTempPos != -1) { //token이  존재하면
					if(field_value.substr(ls_cTempPos-1,1)==' ') {  //token 이전 문자가 공백이면
						ls_lfield_value=field_value.substr(0,ls_cTempPos-1);
						ls_rfield_value=field_value.substr(ls_cTempPos);
						field_value=ls_lfield_value+ls_rfield_value;
					}
					else {
						ls_cTempPos++;
					}
				}
				else break;
			}
			break;
		case 'n':
			while(1) {
				ls_cTempPos=field_value.indexOf(token,ls_cTempPos);
				if(ls_cTempPos != -1) { //token이 존재하면
					if(field_value.substr(ls_cTempPos+1,1)==' ') {  //token 이후 문자가 공백이면
						ls_lfield_value=field_value.substr(0,ls_cTempPos+1);
						ls_rfield_value=field_value.substr(ls_cTempPos+2);
						field_value=ls_lfield_value+ls_rfield_value;
					}
					else {
						ls_cTempPos++;
					}
				}
				else break;
			}
			break;
		case 'a':
			ls_cTempPos=0;
			while(1) {
				ls_cTempPos=field_value.indexOf(token,ls_cTempPos);
				if(ls_cTempPos != -1) { //token이 존재하면
					if(field_value.substr(ls_cTempPos+1,1)==' ') {  //token이후 문자가 공백이면
						ls_lfield_value=field_value.substr(0,ls_cTempPos+1);
						ls_rfield_value=field_value.substr(ls_cTempPos+2);
						field_value=ls_lfield_value+ls_rfield_value;
					}

					else if(field_value.substr(ls_cTempPos-1,1)==' ') {  //token이전 문자가 공백이면
						ls_lfield_value=field_value.substr(0,ls_cTempPos-1);
						ls_rfield_value=field_value.substr(ls_cTempPos);
						field_value=ls_lfield_value+ls_rfield_value;
					}
					else {
						ls_cTempPos++;
					}

				}
				else break;
			}
			break;
	}
	return field_value;
}


/*----------------------------------------------------------------------*/
/* Function명 : gf_OnlyOneSpace						*/
/* 작  성  자 : hwado							*/
/* 작  성  일 : 07.11.15						*/
/* 기      능 : //문자열에서 두개이상의 공백을 하나의 공백으로 처리   	*/
/* 인      수 : string 대상string                                      	*/
/* 리      턴 : string 변환된 string							*/
/*----------------------------------------------------------------------*/

function gf_OnlyOneSpace(TargetSourceString) {
	var AfterString='';

	for (cnt = 0; cnt < TargetSourceString.length; cnt++) {
		switch(TargetSourceString.charAt(cnt)) {
			case ' ':
				if(TargetSourceString.charAt(cnt+1)!=' ')
					AfterString+=TargetSourceString.charAt(cnt);
				break;
			default:
				AfterString+=TargetSourceString.charAt(cnt);
				break;
		}

	}

	return AfterString;
}



var arr_sVal = new Array(30);
var gs_CookieStr = "";
var ls_DefaultTagetStr = "1000001111";
var ls_DefaultSrchStr = "01000010"
ls_DefaultSrchStr += "100000";
ls_DefaultSrchStr += "100000";


// 0~10 : 검색대상
// 10~30 : 검색항목

function gf_SetValue(as_obj, as_name){
	var inx=0;
	gf_getCode(as_name);
	if(as_obj != "undefine" ) {
		for (inx=0; inx < as_obj.length; inx++ ){
			switch (as_obj[inx].value) {
				case "TI":
					if(as_obj[inx].checked == true) gf_SetItemValue(10,true);
					else	 			gf_SetItemValue(10,false);
					break;
				case "PA":
					if(as_obj[inx].checked == true) gf_SetItemValue(11,true);
					else	 			gf_SetItemValue(11,false);
					break;
				case "IN":
					if(as_obj[inx].checked == true) gf_SetItemValue(12,true);
					else	 			gf_SetItemValue(12,false);
					break;
				case "AG":
					if(as_obj[inx].checked == true) gf_SetItemValue(13,true);
					else	 			gf_SetItemValue(13,false);
					break;
				case "AB":
					if(as_obj[inx].checked == true) gf_SetItemValue(14,true);
					else	 			gf_SetItemValue(14,false);
					break;
				case "CM":
					if(as_obj[inx].checked == true) gf_SetItemValue(15,true);
					else	 			gf_SetItemValue(15,false);
					break;
				case "IC":
					if(as_obj[inx].checked == true) gf_SetItemValue(16,true);
					else	 			gf_SetItemValue(16,false);
					break;
				case "UC":
					if(as_obj[inx].checked == true) gf_SetItemValue(17,true);
					else	 			gf_SetItemValue(17,false);
					break;
				case "AN":
					if(as_obj[inx].checked == true) gf_SetItemValue(18,true);
					else	 			gf_SetItemValue(18,false);
					break;
				case "UN":
					if(as_obj[inx].checked == true) gf_SetItemValue(19,true);
					else	 			gf_SetItemValue(19,false);
					break;
				case "RN":
					if(as_obj[inx].checked == true) gf_SetItemValue(20,true);
					else	 			gf_SetItemValue(20,false);
					break;
				case "PR_AN":
					if(as_obj[inx].checked == true) gf_SetItemValue(21,true);
					else	 			gf_SetItemValue(21,false);
					break;
				case "IPN":
					if(as_obj[inx].checked == true) gf_SetItemValue(22,true);
					else	 			gf_SetItemValue(22,false);
					break;
				case "IUN":
					if(as_obj[inx].checked == true) gf_SetItemValue(23,true);
					else	 			gf_SetItemValue(23,false);
					break;
				case "AD":
					if(as_obj[inx].checked == true) gf_SetItemValue(24,true);
					else	 			gf_SetItemValue(24,false);
					break;
				case "UD":
					if(as_obj[inx].checked == true) gf_SetItemValue(25,true);
					else	 			gf_SetItemValue(25,false);
					break;
				case "RD":
					if(as_obj[inx].checked == true) gf_SetItemValue(26,true);
					else	 			gf_SetItemValue(26,false);
					break;
				case "IPD":
					if(as_obj[inx].checked == true) gf_SetItemValue(27,true);
					else	 			gf_SetItemValue(27,false);
					break;
				case "IUD":
					if(as_obj[inx].checked == true) gf_SetItemValue(28,true);
					else	 			gf_SetItemValue(28,false);
					break;
				case "PR_AD":
					if(as_obj[inx].checked == true) gf_SetItemValue(29,true);
					else	 			gf_SetItemValue(29,false);
					break;
				default:
					break;
				}
			}
		}
		gf_ReSetCookie(as_name);


}


function gf_SetItemValue(ai_index, ab_val){

	var ls_TempStr = "";
	if(ab_val == true) arr_sVal[ai_index]="1";
	else arr_sVal[ai_index]="0";

}

/* ============================================================ */
/* 함수명 : gf_SetCookie					*/
/* 작성자 : hwado						*/
/* 작성일 : 2007.11.19						*/
/* 설  명 : 검색항목에 대한 Cookie 설정				*/
/* ============================================================ */

function gf_SetCookie(name, value, expires, path, domain, secure){
	document.cookie = name + "=" + escape(value) +
	((expires) ? "; expires=" + expires.toGMTString() : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
}


function gf_GetCookie(as_name){
	var arg = as_name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;   //쿠키갯수
	var i = 0;

	while (i < clen)
	{
		var j = i + alen;  //쿠기배열의 위치

	//'name='를 찾기
	//alert(document.cookie.substring(i,j));
	if ( document.cookie.substring(i,j) == arg)
		return gf_getCookieVal(j);

	i = document.cookie.indexOf(" ", i) + 1;
	if (i == 0)
		break;
	}
	return null;
}

//쿠키값 반환
function gf_getCookieVal(offset)
{
    var endstr = document.cookie.indexOf (";", offset); //';'의 구분자의 위치

    if (endstr == -1)
        endstr = document.cookie.length;

    return unescape(document.cookie.substring(offset, endstr));
}


function gf_ReSetCookie(as_name){
	var ls_TempStr ="";
	switch(as_name) {
		case "P_BasicSrch":
			for(var idx=0; idx < arr_sVal.length ; idx ++){
				ls_TempStr += arr_sVal[idx];
			}
			break;
		default:
			break;
	}
	gf_SetCookie(as_name, ls_TempStr, null, "/", null, null);

}


function gf_getCode(as_name)
{
	var ls_preCookieStr = gf_GetCookie(as_name);
	if(ls_preCookieStr == null)
	{
		ls_preCookieStr = ls_DefaultTagetStr + ls_DefaultSrchStr;
	}

	if(as_name == "P_BasicSrch") ls_CookieStr = ls_preCookieStr.substr(0,30);

	var idx =0;
	for (idx=0 ; idx < ls_preCookieStr.length; idx ++) {
		arr_sVal[idx]=ls_preCookieStr.charAt(idx);
	}
	/*
	for(idx=0; idx<arr_sVal.length; idx++){
		alert("arr_sVal[" + idx + "]=" + arr_sVal[idx]);
	}
	*/
}


/*----------------------- 일 자 관 련 함 수  --------------------------------*/
/*---------------------------------------------------------------------------*/
/* FUNCTION : gf_ConvertDateFormat(); 일자포맷완성                              */
/*---------------------------------------------------------------------------*/
function gf_ConvertDateFormat(value)
{
    var str = "", i=0;
    var FromDate = "";
    var ToDate   = "";

    value = gf_StrDelStr( value, ' ' );
    value = gf_StrDelStr( value, '/' );
    value = gf_StrDelStr( value, '*' );
    value = gf_StrDelStr( value, '.' );
    value = gf_StrDelStr( value, '-' );
    value = gf_StrDelStr( value, '_' );

    for( i = 0; i < value.length; i++ )
    {
        if( (value.charAt(i) < '0' || value.charAt(i) > '9') &&
            (value.charAt(i) != '~'                        )
            )   break;
    }

    if( value.length < 17 )
    {
        /* 예) 200401~200403 일 경우 ( 13 자리 ) */
        if( value.length == 13 )
        {
            var DelimeterPos = value.indexOf( '~' );

            if(DelimeterPos == 0)  return str;

        	var FromDate = value.substring(0, DelimeterPos);
        	var ToDate   = value.substring(DelimeterPos+1, value.length);

            yy = eval(ToDate.substring(0,4));
            mm = eval(ToDate.substring(4,6));
            if(mm > 12) {
            	alert("날짜 입력값이 잘못되었습니다.");
            	return;
            }
            dd = gf_Getdd(yy, mm);

            FromDate = FromDate + '01';
            ToDate   = ToDate   + dd;
            str = FromDate + '~' + ToDate;
            return  str;
        }

        switch( gf_IsDateFormat(value) )
        {
            case 'yyyy':
                FromDate = value + '0101';
                ToDate   = value + '1231';
                str = FromDate + '~' + ToDate;
                break;

            case 'yyyy?':
                FromDate = value.substring(0,4) + '0101';
                ToDate   = value.substring(0,4) + '1231';
                str = FromDate + '~' + ToDate;
                break;

            case 'yyyymm':
                yy = eval(value.substring(0,4));
                mm = eval(value.substring(4,6));
                dd = gf_Getdd(yy, mm);
                FromDate = value + '01';
                ToDate   = value + dd;
                str = FromDate + '~' + ToDate;
                break;

            case 'yyyymm?':
                yy = eval(value.substring(0,4));
                mm = eval(value.substring(4,6));
                dd = gf_Getdd(yy, mm);
                FromDate = value.substring(0,6) + '01';
                ToDate   = value.substring(0,6) + dd;
                str = FromDate + '~' + ToDate;
                break;

            case 'yyyymmdd':
                yy = eval(value.substring(0,4));
                mm = eval(value.substring(4,6));
                dd = eval(value.substring(6,2));
                FromDate = value;
                ToDate   = value;
                str = FromDate + '~' + ToDate;
                break;

            default:
    		    str = '';
    		    break;
        }
    }

    if( value.length == 17 )
    {
        var DelimeterPos = value.indexOf('~');

        if( DelimeterPos == 0 )  return str;

    	var FromDate = value.substring( 0, DelimeterPos );
    	var ToDate   = value.substring( DelimeterPos + 1, value.length );

    	if( gf_IsDateFormat(FromDate) == 'yyyymmdd' && gf_IsDateFormat(ToDate) == 'yyyymmdd' )
    	{
            str = FromDate + '~' + ToDate;
    	}
    	else
    	{
    		str = "";
        }
    }

    return str;
}

/*---------------------------------------------------------------------------*/
/* FUNCTION : IsDateFormat( param ); Data 포맷 확인                          */
/*---------------------------------------------------------------------------*/
function gf_IsDateFormat(date)
{
    var i = 0;
    var yy, mm, dd;

    if( (date.length > 8)                            ||
        (date.length == 5 && date.charAt(4) != '?' ) ||
        (date.length == 7 && date.charAt(6) != '?' ) )
    {
        alert( " 입력하신 일자가 포맷에 맞지 않습니다. " );
    }

    // 숫자인지 검사한다. 아니면 false
    if(date.length >= 4 && date.charAt(3) != '?')
    {
        yy = eval(date.substring(0,4));
        if(yy < 1947 || yy > 9999)
        {
            alert( " 입력하신 년(年)도는 형식이 맞지 않습니다. " );
            return false;
        }

	    if(date.length == 4)                           return 'yyyy';
        if(date.length == 5 && date.charAt(4) == '?')  return 'yyyy?';
    }
    else
    {
        return false;
    }

    if(date.length >= 6 && date.charAt(5) != '?')
    {
	    mm = eval(date.substring(4,6));
	    if(mm < 1 || mm > 12)
	    {
            alert( " 입력하신 월(月)은 조회가능한 월(1~12)이 아닙니다. " );
            return false;
        }

	    if(date.length == 6 )                         return 'yyyymm';
        if(date.length == 7 && date.charAt(6) == '?') return 'yyyymm?';
    }
    else
    {
        return false;
    }

    if(date.length == 8 && date.charAt(7) != '?')
    {
        dd = eval(date.substring(6,8));
	    if(dd < 1 || dd > gf_Getdd(yy, dd))
	    {
	        alert( " 입력하신 일(月)은 조회가능한 일(1~31)이 아닙니다. " );
            return false;
        }

	    if(date.length == 8)  return 'yyyymmdd';
    }
    else
    {
        return false;
    }
}



/*********************************************************************************
 * gf_FieldCheck -- 검색어 유효성 체크						**
 *********************************************************************************/
function gf_FieldCheck(object) {

	var keywordvalue = gf_Trim(object.value,'a');
	if(keywordvalue == "") return;

	// Double quotation 양쪽 갯수 체크
	var doublequote_pos = 0;
	var doublequote_cnt = 0;
	while(1) {
		doublequote_pos = keywordvalue.indexOf('\"', doublequote_pos);
		if(doublequote_pos == -1) break;
		if(doublequote_pos != -1) doublequote_cnt++;
		doublequote_pos = doublequote_pos+1;
	}
	if((doublequote_cnt % 2) != 0) {
		gf_Msg("<%= NDSLParam.PM_LANG_KOR%>", 124, 1, "");
		object.focus();
		return;
	}

	//괄호 갯수 Check
	var Rparentheses=0;
	var Lprentheses=0;
	for (i=0;i<keywordvalue.length;i++) {
		if(keywordvalue.charAt(i)=='(') Lprentheses++;
		if(keywordvalue.charAt(i)==')') Rparentheses++;
	}
   
	if (Lprentheses>Rparentheses) { 
		alert("'(' 가 " + (Lprentheses-Rparentheses) + '개 더 많습니다');
		return;
	}
	if (Rparentheses>Lprentheses) { 
		alert("')' 가 " + (Rparentheses-Lprentheses) + '개 더 많습니다');
		return;
	}


	return;
}

function gf_FieldStringCheck(as_value) {
	//999999: error, 999998:어구검색이다.
	var li_return = 0;

	var keywordvalue = gf_Trim(as_value,'a');
	if(keywordvalue == "") return li_return;

	// Double quotation 양쪽 갯수 체크
	var doublequote_pos = 0;
	var doublequote_cnt = 0;
	while(1) {
		doublequote_pos = keywordvalue.indexOf('\"', doublequote_pos);
		if(doublequote_pos == -1) break;
		if(doublequote_pos != -1) doublequote_cnt++;
		doublequote_pos = doublequote_pos+1;
	}
	if((doublequote_cnt % 2) != 0) {
		gf_Msg("<%= NDSLParam.PM_LANG_KOR%>", 124, 1, "");
		return 999999;
	}
	
	if(doublequote_cnt >= 2){
		li_return = 999998; //어구검색이다.
	}
	

	//괄호 갯수 Check
	var Rparentheses=0;
	var Lprentheses=0;
	for (i=0;i<keywordvalue.length;i++) {
		if(keywordvalue.charAt(i)=='(') Lprentheses++;
		if(keywordvalue.charAt(i)==')') Rparentheses++;
	}
   
	if (Lprentheses>Rparentheses) { 
		alert("'(' 가 " + (Lprentheses-Rparentheses) + '개 더 많습니다');
		return 999999;
	}
	if (Rparentheses>Lprentheses) { 
		alert("')' 가 " + (Rparentheses-Lprentheses) + '개 더 많습니다');
		return 999999;
	}


	return li_return;
}
