/**
 * [FT] KIPRIS 해외상표 검색 시스템 
 * 검색 화면, 한글 서비스 스크립트 정의
 *
 * @file-encoding euc-kr
 * @filename FT_SrchKR.js
 * 
 * @author 최승호
 *  
 *
 * @history
 * 2009.11.xx 최승호 최초생성 (kipris 의 국내 상표 검색에서 차용)
 * 2010.02.05 이동호 [FT_FIX_0028] 데이터 제공범위 오류 메시지가 실제 제공범위와 다르게 나타나는 현상 제거
*/

/** [FT_FIX_0028:이동호] data coverage : 시작 년도 검사 시 사용될 값 */
var LIMIT_YEAR=1800; 

// 날짜검색식에서 특수문자 제거 
var dnword= new Array("!", "@", "#", "$", "%", "^", "&", "`", "_", "-", "|", "'", "*", "<", ">", "/", ".", '\"', "{", "}", "[", "]", "=", ";", ":");

// 번호검색에서 특수문자 제거
var dnNumWord= new Array("!", "@", "#", "$", "%", "^", "&", "`", "_", "|", "'", "*", "<", ">", "/", ".", '\"', "{", "}", "[", "]", "=", ";", ":");

/* ---------------------------------------------------------------------------- */
/* 검색범위 지정함수                                                         */
/* ---------------------------------------------------------------------------- */
function makeDateArea(value) {
    var now = new Date();
    var sYear  = now.getFullYear();
    var sMonth = now.getMonth()+1;
    var sDate  = now.getDate();
    var AD = "";
    
    if(sMonth <10) {
      sMonth = "0"+sMonth;
    }
    
    if(sDate <10) {
      sDate = "0"+sDate;
    }
    AD = sYear +""+sMonth +""+sDate;
    AD = (AD-(value*10000))+"~"+AD
    return AD; 
}

/**
 * 최종 검색 함수 submit  
 * */
function GoItemizedSearch() {
    var searchItemForm = document.SearchItemForm;
    var STTM2000Form   = document.STTM2000Form;
 
    var query = "";
    var iMerchandise = 0;
    var iPattern = 0;
    var iMarkType = 0;
    var iLas = 0;    
    var andStack = "";
    var orStack = "";
    var tmpQry = "";
    var lastvalue = ""; //20090911 행정처분 선택
    
    /*출원번호 유효성 Check */
    if( isNormalNo( searchItemForm.AN.value ) != true ) {
			return false;
    }
    /*등록번호 유효성 Check */
    if( isRegistrationNo( searchItemForm.RN.value ) != true ) {
			return false;
    }
    
    for( inx = 0; inx < searchItemForm.elements.length; inx++){
      	if(((searchItemForm.elements[inx].type == "text") || (searchItemForm.elements[inx].type == "textarea")) && searchItemForm.elements[inx].value.length > 0 ){
        	if(  searchItemForm.elements[inx].value.indexOf(",") != -1 || searchItemForm.elements[inx].value.indexOf("@") != -1) {
                alert("In [" + searchItemForm.elements[inx].value + "], ',', '@' character is included");
                return false;
            }
            if( searchItemForm.elements[inx].name == "KW" || searchItemForm.elements[inx].name == "AP" || searchItemForm.elements[inx].name == "NC" || searchItemForm.elements[inx].name == "OI" || searchItemForm.elements[inx].name == "VC" ){
              if( searchItemForm.elements[inx].value.indexOf("?") != -1){
                alert("An operator '?' cannot be used.");
                searchItemForm.elements[inx].value = Replace( Trim(searchItemForm.elements[inx].value), "?", "");
                return false;
              }
              // 최승호 20091211 추가
             /* if( searchItemForm.elements[inx].name == "KW"&& STTM2000Form.searchInTrans.value == 'Y'){
            	  if(!checkSpecialChar(searchItemForm.elements[inx].value)){
            		  return false;
            	  }
            	  var freeSearchKw = searchItemForm.elements[inx].value;
            	  searchItemForm.elements[inx].value = '*'+freeSearchKw+'*';
              }*/
            }
            else if( searchItemForm.elements[inx].name == "TM" ){
               
            }
            // 검색어 1글자이상인지 체크, 한글이 포함되어 있는지 체크
            if( searchItemForm.elements[inx].name == "KW" || searchItemForm.elements[inx].name == "TC"){
            	 // 검색 키워드가 한글자 일때
                if (keywordLengthCheck(searchItemForm.elements[inx].value)){
                	return false;
                }
                // 검색 키워드에 한글이 포함되어 있을때
                if (false && koreanCheck(searchItemForm.elements[inx].value)){
                	return false;
                }
            }
            
            // FT_FIX 파리조약 관련 항목 제거 
            if( searchItemForm.elements[inx].name == "OAD" || /* searchItemForm.elements[inx].name == "PAD" || */ searchItemForm.elements[inx].name == "ORD"){
                if( searchItemForm.elements[inx].value != "") {
                // 구문검색을 제외한 공백제거            
                  if( (searchItemForm.elements[inx].value= exTrim(searchItemForm.elements[inx].value)) == false) { 
                      return false;
                  }
          				// 특수문자 있을시 alert 처리
          				var inputStr = searchItemForm.elements[inx].value;
          				var find = false;
          				
          				for( var i=0 ; i < inputStr.length; i++ ){
          					for( var j=0 ; j < dnword.length ; j++) {		
          						if( inputStr.charAt(i) == dnword[j] ) {
          							find= true;
          							break;					
          						}
          					}
          				}
          				
          				if(find){
					alert("Special character can not be used except for [~]");
          					return false;
          				}
                  // 특수문자의 제거
                  searchItemForm.elements[inx].value= deleteSpecialChar( searchItemForm.elements[inx].value, 'D' );
                }
                if( !checkDateExpression( searchItemForm.elements[inx].value ) ) {
                  return false;
                }
                searchItemForm.elements[inx].value = ConvertDateFormat( Trim(searchItemForm.elements[inx].value) );
                if( searchItemForm.elements[inx].value.length <= 0 ) {
                    alert( "The positional number should be four digits including a year, 6 digits including a month, and eight digits including a day." );
                    return  false;
                }
            }
         
            /*추가 2005.07.11*/
            /*작성자: 류기용*/
            if( searchItemForm.elements[inx].name == "KW" ) {
                if( searchItemForm.elements[inx].value.indexOf("=[") != -1){
                   tmpQry = "("+ searchItemForm.elements[inx].value + ")";
                }else{
                    if(Trim(searchItemForm.elements[inx].value) != ""){ //자유검색(전문) 엔터값만 있을 경우
                        //tmpQry = searchItemForm.elements[inx].name +"=[" + Trim(searchItemForm.elements[inx].value) +"]";
                    	tmpQry = "KW=[" + Trim(searchItemForm.elements[inx].value) +"]";
                    }
                }
            } else if( searchItemForm.elements[inx].name != "cbSearchItem" ) {
              tmpQry = searchItemForm.elements[inx].name +"=[" + Trim(searchItemForm.elements[inx].value) +"]";
            }
          var op = document.getElementsByName("operate_"+searchItemForm.elements[inx].name)[0].value;
          if(op == "and"){    
              if(andStack.length > 0) {
               andStack = "("+andStack+")" + "*" + "("+tmpQry+")";
              } else {
               andStack = tmpQry;
              }
          }else{
              if(orStack.length > 0) {
               orStack = "("+orStack+")"  + "+" +  "("+tmpQry+")";
              } else {
               orStack = tmpQry;
              }
          }
        }
    }
    
    
    if(andStack.length > 0 && orStack.length > 0){
        query = "(" + andStack +")+(" + orStack + ")";  
    }else if(andStack.length > 0){
        query = "(" + andStack +")";  
    }else if(orStack.length > 0){
        query = "(" + orStack + ")";  
    }
    
    if(query.trim() == ""){
        alert('Please input a keyword.'); 
        return false;
    }
    DoItemizedSearch(query);
}

// 20090911 parkgh 행정처분 선택      
function CheckLast(form){
   var lastvalue = "ALL";      
    
    for( qnx = 0; qnx < 9; qnx++ ){
        if( form.hangjung[qnx].selected == true  ){
   
            cHangJundgubn = form.hangjung[qnx].value;            
            //if ((cHangJundgubn != null) && (cHangJundgubn == 'R'))
            if ((cHangJundgubn == 'R'))         lastvalue =  "({LAS=R}+{LAS=F})";   //등록선택시 등록+소멸                     
            else if ( cHangJundgubn == '0' )    lastvalue = "ALL";  
            else                                lastvalue =  "{LAS=" + cHangJundgubn + "}";                
        }
    }
    return lastvalue;
}
function DoItemizedSearch(query){
  var form = document.STTM2000Form;    
 
  form.expression.value = query;    
  form.action = "/abtm/general.do";    
  form.submit();    
  
  showLoadingBar();
}

//물품명칭 한정이 선택된 상태에서는 '=' or '[]' 등의 문자를 입력할수없게 한다. 
function filterText(){
  var form = document.WordForm;
  var alertString = "";
  if(form.onlyForName.checked){
    if(form.KW.value.indexOf("=") != -1){
        alertString = "When defining an indication of product, '=' cannot be used.";
    }else if(form.KW.value.indexOf("[") != -1){
        alertString = "When defining an indication of product, '[' cannot be used.";
    }else if(form.KW.value.indexOf("]") != -1){
        alertString = "When defining an indication of product, ']' cannot be used.";
    }
    
    if(alertString != ''){
      alert(alertString);
      return false;
    }
  }
  return true;
}

/* ---------------------------------------------------------------------------- */
/* REPLACE  함수                                                              */
/* ---------------------------------------------------------------------------- */
function Replace( inputStr, str1, str2) {
  var retStr= "";
  var splitStr= "";
  splitStr= inputStr.split(str1);
  for( var i=0 ; i < splitStr.length ; i++) {
    retStr += splitStr[i] + str2;
  }
  return retStr.substr(0, retStr.length - str2.length);
}

/* ---------------------------------------------------------------------------- */
/* 출원, 공개, 공고번호 검사                                                    */
/* ---------------------------------------------------------------------------- */
function isNormalNo(inputStr) {
	inputStr = Trim(inputStr);
	//alert(inputStr);
	var OrArr  = new Array();
	var iLoop  = 0;
	
	for( iLoop = 0; iLoop < inputStr.length; iLoop++) {
    if(  inputStr.charAt(iLoop) == "*" ) {
      alert( "In [" + inputStr + "], An operator '*' cannot be used.");
      return false;
    }
  }
  
  OrArr = inputStr.split("+");
  
  if(OrArr.length != 0) {
		for(iLoop = 0; iLoop < OrArr.length; iLoop++) {
			if( isCheckNo(OrArr[iLoop]) != true ) {
        return false;
      }
		}
	}
	return true;
}

function isCheckNo(inputStr) {
	var noArr= new Array();
  
	var date= new Date();
	var year= date.getFullYear();
	// 전체검색문자가 숫자와 - 만으로 이루어져 있는지 확인
  
	for( var i=0 ; i < inputStr.length ; i++ ) {
		// 번호중  - , ? 문자는 포함 가능
			
		if(  inputStr.charAt(i) != "-" && inputStr.charAt(i) != "?" && inputStr.charAt(i) != "K" && inputStr.charAt(i) != "R" ) {
		//	alert(inputStr.charAt(i));
			if( inputStr.charCodeAt(i) < 48 || inputStr.charCodeAt(i) > 57 ) {
				alert("In [" + inputStr + "], a character, not a number,?,-,*,+, is included.");
				return false;
			}
		}	
	}
  
	noArr= inputStr.split("-");
	if(  noArr.length > 3 ) {
		alert("In [" + inputStr + "], none, one, or two of - characters should be used.");
		return false;	
	}
	if( noArr.length == 1 ) {
		if( noArr[0].length > 13 ) {
			alert("In [" + inputStr + "], It cannot exceed 13 digits.");
			return false;
		}
	} else if ( noArr.length == 2 ) {
		// 년도부분 검사
		if( noArr[0].length == 4 || noArr[0].length == 0 ) {
			if ( (noArr[0].length == 4) && (Number(noArr[0]) < LIMIT_YEAR || Number(noArr[0]) > year) ) {
				alert("In [" + inputStr + "], a year should be within the range from " + LIMIT_YEAR + " to "+year);
				return false;
			}
		}	else {
			if( noArr[0] != "?" ) {
				alert("In [" + inputStr + "], a year should not be specified or should be four digits.");
				return false;
			}				
		}
		// 일련번호부분 검사
		if( noArr[1].length > 7 ) {
			alert("In [" + inputStr + "], " +  noArr[1] + " number cannot exceed 7 digits.");
			return false;
		}
  } else if ( noArr.length == 3 ) {
		// 권리부분 검사
		if( (noArr[0].length == 0 
			|| noArr[0] == "?")
			|| noArr[0] == "40" || noArr[0] == "41" || noArr[0] == "42" || noArr[0] == "43" || noArr[0] == "45" 
      || noArr[0] == "50" || noArr[0] == "51" || noArr[0] == "52" || noArr[0] == "53" || noArr[0] == "55" || noArr[0] == "56" 
      || noArr[0] == "60" || noArr[0] == "61" || noArr[0] == "62" || noArr[0] == "63" || noArr[0] == "65" 
      || noArr[0] == "70" || noArr[0] == "71" || noArr[0] == "72" || noArr[0] == "73" || noArr[0] == "75" 
      );
		else {
			alert("In ["+inputStr + "], right part form is wrong.");
			return false;
		}	
		// 년도부분 검사
		if( noArr[1].length == 4 || noArr[1].length == 0 ) {
			if ( (noArr[1].length == 4) && (Number(noArr[1]) < LIMIT_YEAR || Number(noArr[1]) > year) ) {
				alert("In [" + inputStr + "], a year should be within the range from " + LIMIT_YEAR + " to "+year);
				return false;
			}
		}
		else {
			if( noArr[1] != "?" ) {
				alert("In [" + inputStr + "], a year should not be specified or should be four digits.");
				return false;
			}				
		}
		// 일련번호부분 검사
		if( noArr[2].length > 7 ) {
			alert("In [" + inputStr + "], " +  noArr[2] + " number cannot exceed 7 digits.");
			return false;
		}
	}
	return true;
}

/* ---------------------------------------------------------------------------- */
/* 등록번호 검사                                                    */
/* ---------------------------------------------------------------------------- */
function isRegistrationNo( inputStr ) {
	var OrArr  = new Array();
	var iLoop  = 0;
	
	for( iLoop = 0; iLoop < inputStr.length; iLoop++){
    if(  inputStr.charAt(iLoop) == "*" ){
      alert( "In [" + inputStr + "], An operator '*' cannot be used.");
      return false;
    }
  }
  
  OrArr = inputStr.split("+");
  
  if(OrArr.length != 0){
		for(iLoop = 0; iLoop < OrArr.length; iLoop++){
			if( isCheckRN(OrArr[iLoop]) != true ) {
        return false;
      }
		}
	}
	return true;
}

// 등록번호 검사
function isCheckRN( inputStr ) {
	var noArr= new Array();
	var date= new Date();
	var year= date.getFullYear();
	// 전체검색문자가 숫자와 - 만으로 이루어져 있는지 확인
	for( var i=0 ; i < inputStr.length ; i++ ) {
		// 번호중  - , ? 문자는 포함 가능
		if(  inputStr.charAt(i) != "-" && inputStr.charAt(i) != "?" ) {
			/*if( inputStr.charCodeAt(i) < 48 || inputStr.charCodeAt(i) > 57 ) {
				alert("In [" + inputStr + "], a character, not a number,?,-,*,+, is included");
				return false;
			}*/
		}	
	}
	noArr= inputStr.split("-");
    
	if( noArr.length == 1 ) {
		if( noArr[0].length > 13 ) {
			alert("In [" + inputStr + "], It cannot exceed 13 digits.");
			return false;
		}
	} else if ( noArr.length >= 2) {
		// 권리부분 검사
		if( noArr[0].length == 0 
			|| noArr[0] == "?" 
			|| noArr[0] == "40" || noArr[0] == "41" || noArr[0] == "42" || noArr[0] == "43" || noArr[0] == "45" 
      || noArr[0] == "50" || noArr[0] == "51" || noArr[0] == "52" || noArr[0] == "53" || noArr[0] == "55" 
      || noArr[0] == "60" || noArr[0] == "61" || noArr[0] == "62" || noArr[0] == "63" || noArr[0] == "65" 
      || noArr[0] == "70" || noArr[0] == "71" || noArr[0] == "72" || noArr[0] == "73" || noArr[0] == "75" 
			 ) {
		} else {
			alert("In [" + inputStr + "], right part form is wrong.");
			return false;
		}	
		// 일련번호부분 검사
		if( noArr[1].length > 7 ) {
			alert("In [" + inputStr + "], " +  noArr[1] + " number cannot exceed 7 digits. ");
			return false;
		}
		if( noArr.length == 3) {
			// 끝번호부분 검사
			if( noArr[2].length == 0 || noArr[2] == "?" || noArr[2] == "0000" ) {
			} else {
				//alert("In [" + inputStr + "], " +  noArr[2] + " is 0000.");
				//return false;
			}
		}	
	}
	return true;	
}

function GoWordSearch() {
//alert('22');	
  //getSelectedLang();
    var form = document.WordForm;
    var szKw = form.KW.value;
    var STTM2000Form   = document.STTM2000Form;
    
    var query = "";
    var iMarkType = 0;
    var iLas = 0;
   
    if(!filterText()) {
      return false;
    }
    //STTM2000Form.searchInTrans.value = form.searchInTrans.checked ? 'Y' : 'N';
    //STTM2000Form.searchWithSoundex.value = form.searchWithSoundex.checked ? 'Y' : 'N';
    if( document.WordForm.KW.value.indexOf("?") != -1) {
        alert("An operator '?' cannot be used.");
       return false;
    }
    
            
    szKw = RemoveSpecialChar(szKw);
    if (szKw.length < 1){
        alert("Please input a keyword.");
      return false;
    }
    // 검색 키워드가 한글자 일때
    if (keywordLengthCheck(szKw)){
    	return false;
    }
    // 검색 키워드에 한글이 포함되어 있을때 (일본어 검사 시에도 막아버리는 현상 제거를 위해 검사 안함)
    if (false && koreanCheck(szKw)){
    	return false;
    }
    
    var searchRange = "";
    
     if( szKw.indexOf("=[") != -1){
    	 if(form.dateRange.options[form.dateRange.selectedIndex].value == ""){
    		 query = szKw;
    	 }
      else{
          searchRange = GetSearchRange(form.dateRange.options[form.dateRange.selectedIndex].value);
          query = szKw + "*PD=[" + searchRange + "]";
      }
    }
    else {
      if(form.dateRange.options[form.dateRange.selectedIndex].value == "") {
          query = "KW=[" + szKw + "]";
      } else {
          searchRange = GetSearchRange(form.dateRange.options[form.dateRange.selectedIndex].value);
          query = "KW=[" + szKw + "]*OAD=[" + searchRange + "]";
      }
      
      if(form.onlyForName.checked){
          //query = query.replace('KW', 'TN');		Fix_FT 최승호 20091207
          query = query.replace('KW', 'TC');
      }
    }
    if (!CompareCountChar(query, '(', ')')) {
        alert("The number of parentheses'(,)' in a search query does not match.");
        return false;    
    }
    if (!CompareCountChar(query, '(', ')')) {
        alert("The number of field brackets '[.]' in a search query does not match.");
        return false;
    }
    
    document.STTM2000Form.config.value="G01";    
    DoGeneralSearch(query);
}
//검색 키워드 길이 체크 . 1일때 메세지 팝업
function keywordLengthCheck(str){
	if(str.length==1){
		//alert("검색어는 2글자 이상이어야 합니다.");
		alert("At least two character is needed.");
		return true;	
	}
	return false;
}

// 해외상표 검색키워드 한글 체크. 한글이 있을경우 메세지 팝업.
function koreanCheck(str) {
    var i;
    var ch;
   
    for (i=0;i<str.length;i++) {
        ch = escape(str.charAt(i));        //ISO-Latin-1 문자셋으로 변경
        if (strCharByte(ch) == 2) { //한글이 아닐 경우
  		//alert("검색어에 한글이 포함될 수 없습니다.");
  		alert("Korean characters are not accepted.");
          return true;
        }
    }
    return false;
}

function strCharByte(chStr) {
  if (chStr.substring(0, 2) == '%u') {
    if (chStr.substring(2,4) == '00') {
      return 1;
    } else {
      return 2;        //한글
    }
  } else if (chStr.substring(0,1) == '%') {
    if (parseInt(chStr.substring(1,3), 16) > 127) {
      return 2;        //한글
    } else {
      return 1;
    }
  } else {
    return 1;
  }
}

function checkSpecialChar(str){
	for(var i=0;i<str.length;i++){
		var ch_char = str.charAt(i);
		var ch = ch_char.charCodeAt();
		if((ch >= 33 && ch <= 47) || (ch >= 58 && ch <= 64) || (ch >= 91 && ch <= 96) || (ch >= 123 && ch <= 126)){
			alert("We do not accept special character on keyword expansion mode");
			return false;
		}
	}
	return true;
}
function DoGeneralSearch(query){
    var form = document.STTM2000Form;    
  
    form.expression.value = Trim(query);
    HideSelect();
    form.action = "/abtm/general.do";
    form.submit();    
    
    showLoadingBar();
}
function GetSearchRange(val){
    var now   = new Date();
    var year  = now.getFullYear();
    var month = now.getMonth() + 1;
    var date  = now.getDate();
    
    var AD ="";
    
    if(month < 10)    month = "0" + month;
    if(date  < 10)    date  = "0" + date;
    
    endRange   = year + "" + month + "" + date;
    startRange = (endRange - (val * 10000));
    searchRange = startRange + "~" + endRange;
    
    return searchRange; 
}

function ReplaceSpecialStr(sourceStr){
    var str = sourceStr;
    str = ReplaceStr(str, "<and>", "*");
    str = ReplaceStr(str, "<AND>", "*");
    str = ReplaceStr(str, "<OR>" , "+");
    str = ReplaceStr(str, "<or>" , "+");
    return str;
}

function DoSearch(){
    
  var form = document.STTM2000Form;
  var queryText = form.queryText.value;
  var qField = form.searchField.value;
  if(qField == "KW") {
    qFiled = "FTN";
  }
  var lastvalue = ""; //20090911 행정처분 선택
  var iMerchandise = 0;
  var iPattern = 0;
  var iMarkType = 0;
  var iLas = 0;      
    
  if(true) {
    /* 상품 종류 선택 여부를 Check */
    for(inx = 0; inx < form.cbResultItem.length; inx++){
      if (form.cbResultItem[inx].checked) {
        iMerchandise = 1;
      }
    }
    if( iMerchandise == 0){
         alert( "Check at least one item in the result view to search.");
        return ;
    }	
 
  }
  
  // 서블릿에서 국가선택을 beforeCollection 이 아닌 COLLECTION values를 참조하도록 flag 변수값 설정
  form.isResultPageSearch.value = "Y";
  queryText = Trim(queryText);
  
  
  // 특수문자 있을시 alert 처리
	var inputStr = queryText;
	var find = false;
	if(qField=='OAD'|qField=='ORD' |qField=='PAD'){
		for( var i=0 ; i < inputStr.length; i++ ){
			for( var j=0 ; j < dnword.length ; j++) {		
				if( inputStr.charAt(i) == dnword[j] ) {
					find= true;
					break;
				}
			}
		}
	}
	
	if(find){
		//alert("[~]를 제외한 특수문자는 사용하실 수 없습니다.");

		alert("Can not use special characters except [~]");
		
		return;
	}
  //  form.config.value = GetConfig();
  form.configChange.value = "Y";
  if (form.expression.value != form.beforeExpression.value){
      form.expression.value = form.beforeExpression.value;
  }    
  if (!queryText){
      //alert("검색어를 입력하십시오.");
      alert("Input field is cannot be empty.");
      return;
  }else{    
      if (!CompareCountChar(queryText, '(', ')')){
          //alert("검색식의 괄호'(,)'의 개수가 맞지 않습니다.");
          alert("The number of (,) in the query is not matched.");
          return;    
      }
      if (!CompareCountChar(queryText, '[', ']')){
          //alert("검색식의 필드괄호'[,]'의 개수가 맞지 않습니다.");
          alert("The number of [,] in the query is not matched.");
          return;
      }
      
      queryText = ReplaceSpecialStr(queryText);
  }
  
  // 검색 키워드가 한글자 일때
  if (keywordLengthCheck(queryText)){
    return;
  }
  // 검색 키워드에 한글이 포함되어 있을때
  if (koreanCheck(queryText)){
    return;
  }
  
  if (form.searchInResult.checked) {
      form.searchInResult.value = "Y"
      if(queryText.indexOf("=[") == -1) {
        form.expression.value = form.expression.value + "*"+ qField + "=[" + queryText + "]";
      } else {
        form.expression.value = form.expression.value + "*"+ queryText;
      }
  } else{
      form.searchInResult.value = "N";
      if(queryText.indexOf("=[") == -1) {
        form.expression.value = qField + "=[" + queryText + "]";
      } else {
        form.expression.value = queryText;
      }
  }  

  form.currentPage.value = 1;
  form.isExcel.value = 'N';
  form.bookMarkScreen.value = "";
  form.bookMark.value = "";
  form.bookMarkCnt.value = 0;    
  var config = form.config.value;

  form.action = "/abtm/general.do";
  form.submit();
  showLoadingBar();
}

function CompareCountChar(sourceStr, findChar1, findChar2){
   return (CountChar(sourceStr, findChar1) == CountChar(sourceStr, findChar2)) ? true : false;
}

function CountChar(sourceStr, findChar){
    var count = 0;
    for (var i = 0; i <= sourceStr.length; i++){
        if (sourceStr.charAt(i) == findChar)  count++;
    }
    
    return count;
}

/* ---------------------------------------------------------------------------- */
/* 검색식(번호) 함수                                                         */
/* ---------------------------------------------------------------------------- */
function GoNumberSearch(){
    var kind="";
   // var year="";
    var num ="";
    var query="";
    
    var form = document.NumberForm;
    kind = form.no1.value;
    //year = form.no2.value;
    
    //num  = zeroPadding( form.no3.value, 7);
    num = form.no3.value;
    num=trim(num);
    if(num.length==0){
    	alert("Please enter numbers.");
    	return false;
    }else{
      var find = false;
      
      for( var i=0 ; i < num.length; i++ ){
        for( var j=0 ; j < dnNumWord.length ; j++) {		
          
          if( num.charAt(i) == dnNumWord[j] ) {
            find= true;
            break;					
          }
        }
      }
      
      if(find){
			//alert("번호검색에서 [-]을 제외한 특수문자는 사용하실 수 없습니다.");
			alert("Special character can not be used in number search except for [-]");
        return false;
      }
    }
//   kind = " ";
    //if(year.length < 1)
    //year = " ";
    if(num.length < 1) {
    	num = " ";
    }
    
    query = query + "((AN=[" + num + "])+(PN=[" + num + "])+(RN=[" + num + "]))";
    
    if(kind.length==0) {
    	query = "(AN=[" + num + "])+(PN=[" + num + "])+(RN=[" + num + "])";
    } else if(kind.indexOf("|") != -1) {
    	var spl_kind = kind.split("|");
    	kind = "((TM=[" + spl_kind[0] + "])+(TM=[" + spl_kind[1] + "]))";
    	query = query+"*"+kind;
    } else {
    	kind = "(TM=["+kind+"])";
    	query = kind+"*"+"("+"(AN=[" + num + "])+(PN=[" + num + "])+(RN=[" + num + "]))";
    }
    
    document.STTM2000Form.config.value="G02";
    
    DoGeneralSearch(query);
}

function zeroPadding( value, no ){
    var str = "";
    value = trim(value);
    if( value.indexOf('?') != -1 ) return value;
    
    for( var k= 0,i = 0; i < no; i++ ) {
       if( value.charCodeAt(i) < 48 || value.charCodeAt(i) > 57){
           alert( '문자가 포함되어 있습니다[ ' + value.charAt(i) + ']' );
            return false;
       }    
    }
    
    if(value.length > no){ //길경우 앞에서부터 끊기
        str = value.substring(0, no);
    } else if(value.length <= no) { //짧을경우 앞에 0으로 채움 
        var i = no - value.length;
        for(var j=0;j < i;j++){
            str += "0";
        }
        str += value;
    }
    return str;
}

/* --------------------------------------------------------------------------- */
/* FUNCTION : ConvertDateFormat(); 일자포맷완성                              */
/* --------------------------------------------------------------------------- */
function ConvertDateFormat(value, name){
    var str = "", i=0;
    var FromDate = "";
    var ToDate   = "";
    
    value = StrDelStr( value, ' ' );
    value = StrDelStr( value, '/' );
    value = StrDelStr( value, '*' );
    value = StrDelStr( value, '.' );
    value = StrDelStr( value, '-' );
    value = StrDelStr( value, '_' );
    for( i = 0; i < value.length; i++ ){
        if( (value.charAt(i) < '0' || value.charAt(i) > '9') &&
            (value.charAt(i) != '~'                        ) &&
            (value.charAt(i) != '?'                        )  )   break;
    }
    //if( i != value.length )    return '' ;
    if( value.length < 17 ){
        /* 예) ~20040301 일 경우 ( 9 자리 ) */    
        if( value.substring(0,1) == '~' ){
            var DelimeterPos = value.indexOf('~');
    
            var FromDate = '';
            if(DelimeterPos == 0){
                FromDate = '19500320';
            }else{
                return str;
            }

            var ToDate   = value.substring( DelimeterPos + 1, value.length );
    
            if( IsDateFormat(FromDate) == 'yyyymmdd' && IsDateFormat(ToDate) == 'yyyymmdd' ){
                /*str = '(' + name + '>=' + FromDate + ')<and>(' + name + '<=' + ToDate + ')';*/
                str = FromDate + '~' + ToDate;
            }else if(IsDateFormat(ToDate) == 'yyyymm'){
                str = FromDate + '~' + ToDate + '31';
            }else{
                    str = "";
            }
    
            return str;
        }
    
        /* 예) 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));
            dd = Getdd(yy, mm);
            FromDate = FromDate + '01';
            ToDate   = ToDate   + dd;
            /* str = '(' + name + '>=' + FromDate + ')<and>(' + name + '<=' + ToDate + ')'; */
            str = FromDate + '~' + ToDate;
            return  str;
        }
        if(!IsDateFormat(value) || IsDateFormat(value)=='') return "";
        switch( IsDateFormat(value) ){
            case 'yyyy':
                FromDate = value + '0101';
                ToDate   = value + '1231';
                /* str = '(' + name + '>=' + FromDate + ')<and>(' + name + '<=' + ToDate + ')'; */
                str = FromDate + '~' + ToDate;
                break;
            case 'yyyy?':
                FromDate = value.substring(0,4) + '0101';
                ToDate   = value.substring(0,4) + '1231';
                /* str = '(' + name + '>=' + FromDate + ')<and>(' + name + '<=' + ToDate + ')'; */
                str = FromDate + '~' + ToDate;
                break;
            case 'yyyymm':
                yy = eval(value.substring(0,4));
                mm = eval(value.substring(4,6));
                dd = Getdd(yy, mm);
                FromDate = value + '01';
                ToDate   = value + dd;
                /* str = '(' + name + '>=' + FromDate + ')<and>(' + name + '<=' + ToDate + ')'; */
                str = FromDate + '~' + ToDate;
                break;
            case 'yyyymm?':
                yy = eval(value.substring(0,4));
                mm = eval(value.substring(4,6));
                dd = Getdd(yy, mm);
                FromDate = value.substring(0,6) + '01';
                ToDate   = value.substring(0,6) + dd;
                /* str = '(' + name + '>=' + FromDate + ')<and>(' + name + '<=' + ToDate + ')'; */
                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 = '(' + name + '>=' + FromDate + ')<and>(' + name + '<=' + ToDate + ')'; */
                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( IsDateFormat(FromDate) == 'yyyymmdd' && IsDateFormat(ToDate) == 'yyyymmdd' ){
            /* str = '(' + name + '>=' + FromDate + ')<and>(' + name + '<=' + ToDate + ')'; */
            str = FromDate + '~' + ToDate;
    	}
    	else{
    		str = "";
        }
    }
    return str;
}

/* --------------------------------------------------------------------------- */
/* FUNCTION : StrDelStr(); 특정문자 제거                                     */
/* --------------------------------------------------------------------------- */
function StrDelStr(Lstr, Sstr){
    var str = "";
    var index = Lstr.indexOf( Sstr );
    if( index == -1 ) {
	    str = Lstr;
    }
    else {
        str = Lstr.substring(0, index) + Lstr.substring(index+Sstr.length, Lstr.length);
        str = StrDelStr(str, Sstr);
    }
    return str;
}

/* --------------------------------------------------------------------------- */
/* FUNCTION : IsDateFormat( param ); Data 포맷 확인                          */
/* --------------------------------------------------------------------------- */
function 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( "An input date does not match a format." );
    }
    // 숫자인지 검사한다. 아니면 
    if(date.length >= 4 && date.charAt(3) != '?') {
      yy = eval(date.substring(0,4));
      if(yy < LIMIT_YEAR || yy > 9999) { //1947에서 낮춤
          alert( "An input year does not match a format." );
          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( "An input month is an unavailable month." );
            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 > Getdd(yy, dd)){
	        alert( " 입력하신 일(月)은 조회가능한 일(1~31)이 아닙니다. " );
            return false;
        }
	    if(date.length == 8)  return 'yyyymmdd';
    }
    else{
        return false;
    }
}

// 날짜에 대한 유효성 검사
function checkDateExpression(inputStr) {
	var noArr= new Array();
	// 전체검색문자가 숫자와 - 만으로 이루어져 있는지 확인
	for( var i=0 ; i < inputStr.length ; i++ ) {
		// 번호중  - , ? 문자는 포함 가능
		if(  inputStr.charAt(i) != "~" && inputStr.charAt(i) != "?" ) {
			if( inputStr.charCodeAt(i) < 48 || inputStr.charCodeAt(i) > 57 ) {
				alert("In [" + inputStr + "], a character, not a number,?,~, is included");
				return false;
			}
		}	
	}
	noArr= inputStr.split("~");	
	if( noArr.length > 2) {
		alert("In [" + inputStr + "], the date range should include only a single ~ character.");
		return false;		
	} else {
		for( var i=0 ; i < noArr.length ; i++ ) {
      if((i == 0) && (noArr[0] == '')) {
        continue;
      }
      if( ! isCheckDateFormat(noArr[i])) { 
        return false;
      }
		}
	}
	return true;
}

function isCheckDateFormat( inputStr ) {
	var date= new Date();
	var year= date.getFullYear();
	if( inputStr.length < 4 || inputStr.length > 8) {
		alert("In [" + inputStr + "], the date should be between 4 digits and 8 digits.");
		return false;
	}
	// 앞4개 문자가 숫자가 아닐경우 판별 
	if( isNaN(inputStr.substring(0,4)) ) {
		alert("In [" + inputStr + "], the front 4 digits are not numbers.");
		return false;
	}	
	// 년도 체크 
	if( Number(inputStr.substring(0,4)) < LIMIT_YEAR || Number(inputStr.substring(0,4)) > year ) {
		alert("In [" + inputStr + "], the front four-digit year should be within the range from " + LIMIT_YEAR + " to " + year);
		return false;
	}
	return true;
}

/* --------------------------------------------------------------------------- */
/* FUNCTION : Getdd(); 월별일자 가져오기                                     */
/* --------------------------------------------------------------------------- */
function Getdd(yy, mm){
    month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    if(mm == 2){
    	if(((yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)) {
        month[1] = 29;
    	} else {
    	  month[1] = 28;
      }
    }
    return month[mm - 1];
}

// keyword에서 \n, CR, LF, SPACE 제거 (구문검색의 공백은 제외)
function exTrim( inputStr ) {
	var quoteCnt= 0;
	var retStr= "";
	for( var i=0 ; i < inputStr.length ; i++ ) {
		if( inputStr.charAt(i) == "\"") {
			quoteCnt++;
    }
			
		if( inputStr.charCodeAt(i) != 32 && inputStr.charCodeAt(i) != 13 && inputStr.charCodeAt(i) != 10) {
			retStr += inputStr.charAt(i);		
		}
		else {
			if( (quoteCnt % 2) != 0 ) {
				retStr += inputStr.charAt(i);
			}
		}
	}
	if( (quoteCnt % 2) != 0 ) {
		alert("The number of double quotation marks does not match.");
		return false;
	}
	return retStr;	
}

function deleteSpecialChar(inputStr, type) {
	var retStr= "";
	var find= false;		// 특수문자를 찾을경우  true로 변경
	for( var i=0 ; i < inputStr.length ; i++) {
		switch(type) {
		case 'K' : 
			for( var j=0 ; j < knword.length ; j++) {		
				if( inputStr.charAt(i) == knword[j] ) {
					find= true;
					break;					
				}
			}
			break;		
		case 'D' : 
			for( var j=0 ; j < dnword.length ; j++) {		
				if( inputStr.charAt(i) == dnword[j] ) {
					find= true;
					break;					
				}
			}
			break;
		case 'I' : 
			for( var j=0 ; j < inword.length ; j++) {		
				if( inputStr.charAt(i) == inword[j] ) {
					find= true;
					break;					
				}
			}
			break;		
		case 'N' :
			for( var j=0 ; j < nnword.length ; j++) {		
				if( inputStr.charAt(i) == nnword[j] ) {
					find= true;
					break;
				}
			}
			break;
		}
		if( !find ) {
			retStr += inputStr.charAt(i);
		}	
		else find= false;
	}
	return retStr;
}
function HideSelect() {
	document.WordForm.dateRange.style.visibility = "hidden"; 
	document.NumberForm.no1.style.visibility = "hidden"; 
    //document.NumberForm.no2.style.visibility = "hidden"; 
}
function ReplaceChar(sourceStr, findChar, replaceChar) {
 
    var pos = 0; 
    pos = sourceStr.indexOf(findChar); 
     
    while (pos != -1) {
 
        sourceStr = sourceStr.replace(findChar, replaceChar); 
        pos = sourceStr.indexOf(findChar); 
    } 
 
    return sourceStr;
} 
 
function ReplaceStr(sourceStr, findStr, replaceStr){
    var str = sourceStr, words = "";
 
    if (sourceStr.indexOf(findStr) != -1){
        words = str.split(findStr);
        str = words[0];
 
        for(i = 1; i < words.length; i++){
            str += replaceStr + words[i];
        }
    }
 
    return str;
}
 
 
//ie8
function KeyEvent(evt, e_code){
  var e = new xEvent(evt);
  if (e.keyCode != 13) {
    return;
  }
  
  var element = e.target;
  if(!element) {
    return;
  }
  
  
  //fireFox 일때 처리
  if(xFF){
    var evnt = document.createEvent("KeyboardEvent");
    // create a key event
    evnt.initKeyEvent(                                                                                      
                     "keyup",        //  in DOMString typeArg,                                                           
                      true,             //  in boolean canBubbleArg,                                                        
                      true,             //  in boolean cancelableArg,                                                       
                      null,             //  in nsIDOMAbstractView viewArg,  Specifies UIEvent.view. This value may be null.     
                      false,            //  in boolean ctrlKeyArg,                                                               
                      false,            //  in boolean altKeyArg,                                                        
                      false,            //  in boolean shiftKeyArg,                                                      
                      false,            //  in boolean metaKeyArg,                                                       
                       39,               //  in unsigned long keyCodeArg,                                                      
                       0);              //  in unsigned long charCodeArg);  
    
    element.dispatchEvent(evnt);
  }
  
  if (e_code == 1) {
    GoWordSearch();
  } else if (e_code == 2) {
    GoNumberSearch();
  }
}
 
function WriteYearOptions(BasicYear){
  line = "";
  i = 0;
  
  while(1){
    ValueYear = NowYear - i++;
    line += "<OPTION value="+ValueYear+">";
    line += ValueYear;

    if (ValueYear == BasicYear) {
      break;
    }
  }

  return line;
}
 
function GetYearOption(){
    var now = new Date();
    
    for (i = now.getYear(); i >= 1950; i--){
        document.write("<option value=" + i + ">&nbsp;" + i );
    }    
}
 
function RemoveSpecialChar(sourceStr){
    var str = sourceStr;
    str = ReplaceChar(str, String.fromCharCode(10), ''); 
    str = ReplaceChar(str, String.fromCharCode(13), '');
    return str;
}
 
function SelectNo1(){
    document.NumberForm.dummyNo1.value = document.NumberForm.no1.value;
}
 
function ResetWord() {
    var form = document.WordForm;
    
    for (var i = 0; i < form.elements.length; i++) {
	    form.elements[i].value="";
    }
}
 
function ResetNumber(){
    var form = document.NumberForm;
    
    for (var i = 0; i < form.elements.length; i++) {
      form.elements[i].value = "";
    }
}
 
function GoSearchScreen(){
    var form = document.STTM2000Form;
    form.action = "http://detseng.kipris.or.kr/ndetsen/loin1000a.do?method=loginTM";
    form.submit();
    
   showLoadingBar();
}
 
function GoStaticalInfo(){
    var form = document.STTM2000Form;
    var rights = form.rights.value;
 
    winOpen("cmsd", rights);
}
 
function GoPopularWord(){
    var form = document.STTM2000Form;
    var rights = form.rights.value;
    
    winOpen("cmpd", rights);
}
 
function GoSynonymDict(){
    var form = document.STTM2000Form;
    var userId = form.userId.value;
    
    if (!userId){
        alert("Synonym dictionary is not allowed. Please log on");
        return;
    }
 
    winOpen("vfsy", userId, "KW");
}
 
function GoMyQuery(){
    var form = document.STTM2000Form;
    var userId = form.userId.value;
    var rights = form.rights.value;
    
    if (!userId){
        alert("Query history is not allowed. Please log on");
        return;
    }
    
    winOpen("qyvw", userId, rights, "KW");
}
 
function GoSimilarQuery(){
    var form = document.STTM2000Form;
    var rights = form.rights.value;
    
    var userId = form.userId.value;
    if (!userId){
        alert("Similar Query is not allowed. Please log on");
        return;
    }
    
    winOpen("vfsq", rights, "KW");
}
 
var Help = null;
function GoHelp(){
    var Path = "http://detseng.kipris.or.kr/ndetsen/Help/TM/Help_Frame.htm";
    if (Help == null || Help.closed){
        Help = window.open(Path, "Help", "width=910, height=630, left=200,top=200, menubar=no,scrollbars=no,toolbar=no,location=no,directories=no,status=yes, resizable=no");
    }
    else{
        Help.close();
        Help = window.open(Path, "Help", "width=910, height=630, left=200,top=200, menubar=no,scrollbars=no,toolbar=no,location=no,directories=no,status=yes, resizable=no");
    }
}
var Login = null;
function GoLogin(){
    var form = eval("document." + document.main_site_menuForm.formName.value)    
    
    form.target = "Login";    
    form.action = "http://detseng.kipris.or.kr/ndetsen/loginPopupa.do";
    
    Login = window.open("", "Login", "resizable=yes,width=400,height=260");
    Login.focus();
    
    form.submit();
    form.target = "";    
}
 
function GoLogout(){
    location.href = "http://detseng.kipris.or.kr/ndetsen/logouta.do";
}

// 화면에서 현재 스크롤 위치
function getNowScroll(){
    var de = document.documentElement;
    var b = document.body;
    var now = {};
    
    now.X = document.all ? (!de.scrollLeft ? b.scrollLeft : de.scrollLeft) : (window.pageXOffset ? window.pageXOffset : window.scrollX);
    now.Y = document.all ? (!de.scrollTop ? b.scrollTop : de.scrollTop) : (window.pageYOffset ? window.pageYOffset : window.scrollY);
    
    return now;
}
 
 
// 페이지 이동시에 로딩바 보이기
function showLoadingBar(){
    var loading = document.getElementById("loading");
    var loadingBar = document.getElementById("loadingBar");
    var loadingBarBack = document.getElementById("loadingBarBack");
    var loadingBarBackContent = document.getElementById("loadingBarBackContent");    
    
    nowScroll = getNowScroll();
    /*
    var top = nowScroll.Y + 200;
    loadingBar.style.top = top;
    loadingBarBackContent.style.top = top;
    */
    xLeft("loadingBar", (xClientWidth()-400+xScrollLeft())/2);
    xTop("loadingBar", (xClientHeight()-200+xScrollTop())/2);
    xLeft("loadingBarBackContent", (xClientWidth()-400+xScrollLeft())/2);
    xTop("loadingBarBackContent", (xClientHeight()-200+xScrollTop())/2);
    
    //alert(xClientWidth()-200+xScrollLeft() + ", " + xClientHeight()-xHeight("loadingBarBackContent")+xScrollTop());
    
    //xLeft("loadingBarBackContent", (xClientWidth()-300+xScrollLeft())/2);
    //xTop("loadingBarBackContent", (xClientHeight()-200+xScrollTop())/2);
    
    
    loading.style.display = "";
    loadingBarBack.style.display = "";
}
 
 


