﻿//////////////////////////////////////////////////////////////////////////////////
// JScript 파일
//////////////////////////////////////////////////////////////////////////////////

// 메세지 처리
function fn_Message(msg)
{
    alert(msg);
    return false;
}

// 자원정보 저장버튼 누를때 메시지 처리
function fn_ResourceInfoSave()
{
    return confirm("저장하시겠습니까?");
}

// 자원정보 삭제버튼 누를때 메시지 처리
function fn_ResourceInfoDelete()
{
    return confirm("삭제하시겠습니까?");
}

// 자원정보 삭제버튼 누를때 메시지 처리(영문)
function fn_ResourceInfoDeleteEn()
{
    return confirm("Do you wish to delete?");
}

// 자원정보 삭제버튼 누를때 메시지 처리
function fn_ResourceInfoModify()
{
    return confirm("수정하시겠습니까?");
}

function fn_RequSave()
{
    return confirm("저장하시겠습니까?");
}

function fn_RequChange()
{
    return confirm("전형결과를 변경하시겠습니까?");
}

function fn_RequSaveEnd()
{
    return confirm("최종제출을 하시면 더이상 수정이 불가능 하십니다.\n 제출하시겠습니까?");
}

function fn_RequDelete()
{
    return confirm("삭제하시겠습니까?");
}

function fn_RequAdd()
{
    return confirm("추가하시겠습니까?");
}

function RequNum_only(Ev){
    //FF일 경우 Ev.which 값을,IE을 경우 event.keyCode 값을 evCode에 대입
    var evCode = (window.netscape) ? Ev.which:event.keyCode;
    //'0'은 FF에서 Tab 키, '8'은 FF에서 BackSpace가 먹히지 않아 삽입
    if(!(evCode == 0 || evCode == 8 || (evCode > 47 && evCode < 58)))
    {
        if(window.netscape)
        {
            Ev.preventDefault();
        }
        else
        {
            event.returnValue = false;
        }
        alert("숫자만 입력가능 합니다.");
    }
}
    
// URL로 페이지 이동
function fn_ReloadUrl(url) {
	if(url != null) {
		window.location.href = url;
	}
    return false;
}

//부모창을 Reload And Close
function fn_openerReloadClose()
{
	if(opener != null) {
	    opener.location.reload(); 
	}
	
    window.self.close(); 
    return false;                   
}  

// 부모페이지 URL Reload 후 창 닫기 (엄홍선 2007.11.12)추가
function fn_ReloadUrlClose(url) {
	try {
		if(opener != null) {
			opener.window.location.href = url;
		}
		window.close();
	} catch (e) {}
    return false;
}

//팝업창을 닫는다.
function fn_Close()
{    
    window.self.close();
    return false; 
}

//오픈윈도의 버튼 객체를 리턴한다.
function fn_GetOpenerBtn(str) {
	
	var obj = null;
	
	if(opener != null) {
	
		openerForm = opener.document.forms[0];
		
		var searchTags = openerForm.all.tags("A");

		if (searchTags != null)	{
			for (i=0; i < searchTags.length; i++) {
			 if(searchTags[i].id.indexOf(str) > -1 || (typeof(searchTags[i].name) == 'object' && searchTags[i].name != null && searchTags[i].name.indexOf(str) > -1))
		            obj = searchTags[i];
			}
		}
	}
	
	return obj;
}


//문자열의 양쪽(왼쪽, 오른쪽) 공백을 제거 함수 
function fn_Trim(src) 
{ 
    var search = 0 

    while ( src.charAt(search) == " ") 
    {  
        search = search + 1 
    } 

    src = src.substring(search, (src.length)) 

    search = src.length - 1 

    while (src.charAt(search) ==" ") 
    { 
        search = search - 1 
    } 

    return src.substring(0, search + 1)         
} 

//문자열의 길이를 계산. 한글인 경우 2글자로 계산.
 function fn_GetLength(string) 
 { 
     var ch; 
     var length = 0; 
     if( string == "") return 0; 
     browserName = navigator.appName; 
     browserVer = navigator.appVersion.indexOf("5."); 
     if (browserName == "Netscape") 
         return string.length; 
     else 
     { 
         for ( k = 0; k < string.length; k++ ) 
         { 
             ch = string.charAt(k); 
             if ( ch >= 'ㄱ' && ch <= '힣' ) 
             { 
                 length += 2; 
             } 
             else if ( ch > 128) 
             { 
                 length += 2; 
             } 
             else 
                 length++; 
         } 
         return length; 
     } 
}

// 알바벳인 경우만 true
function fn_IsAlpha(checkStr)
{
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz- ";
	
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		{
			if (ch == checkOK.charAt(j)) 
			{
				break;
			}
		}
		if (j == checkOK.length)
		{
			return false;
			break;
		}
	}
	
	return true;
}


// 알바벳 및 숫자인 경우만 true
function fn_IsDigitAlpha(checkStr)
{
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-0123456789 ";
	
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		{
			if (ch == checkOK.charAt(j)) 
			{
				break;
			}
		}
		if (j == checkOK.length)
		{
			return false;
			break;
		}
	}
	
	return true;
}



// 숫자로 구성된 문자열인지 검사.
function fn_IsNumeric(value)
{
	var ch, ch2=1;
	
	if( value =="") return false;
	for ( k = 0; k < value.length; k++ )
	{
		ch = value.charAt(k);
		if ( ch < '0' || ch > '9' )
	    {
			return (false);
		}
	}
	return (true);
}


// 숫자와 '-'로 구성된 문자열인지 검사.
function fn_IsNumericDash(checkStr)
{
	var checkOK = "0123456789- ";
	
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		{
			if (ch == checkOK.charAt(j)) 
			{
				break;
			}
		}
		if (j == checkOK.length)
		{
			return false;
			break;
		}
	}
	
	return true;
}


//주어진 문자열을 날짜로 리턴한다.
function fn_GetDate(date) {
	
	var arrDate = date.split("-");
	
	var newDate = new Date(arrDate[0], arrDate[1]-1, arrDate[2]);
	return newDate;
}


//주어진 문자열을 날짜로 리턴한다.
function fn_GetDateTime(date, hour, minute) {
	
	var arrDate = date.split("-");
	
	var newDate = new Date(arrDate[0], arrDate[1]-1, arrDate[2], hour, minute);
	return newDate;
}

//날짜형식이 맞는지를 체크한다. 형식 : YYYYMMDD
function fn_IsDateformat(strDate)
{
      var strMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

      if ( strDate.length != 8 )
      	  return false;

      var YYYY  = eval(strDate.substr(0,4));
      var MM    = eval(strDate.substr(4,2));
      var DD    = eval(strDate.substr(6,2));

      if ( !fn_IsNumeric(YYYY) || !fn_IsNumeric(MM) || !fn_IsNumeric(DD) )
           return false;
		//if ( strDate.charAt(4) != '-' || strDate.charAt(7) != '-' )
		//	  return false

      var MonthDays = (YYYY != 2) ? strMonth[MM-1] : (( YYYY%4==0 && YYYY%100 !=0 || YYYY%400 ==0 ) ? 29:29 );

      if( ( MM <13 && MM >0 && DD >0 && DD <= MonthDays) == false )
      	 return false;

      return true;
}



//-------------------------------------------------------------------
//주민번호체크
//-------------------------------------------------------------------
function fn_IsNum(str1,str2)	
{
	// CheckSum 체크
	if (checksum_no(str1,str2) == false)
		return false;
		
	// 생성기로 만든게 아닌가 생년월일과 남녀필드 체크
	if (valid_no1(str1,str2) == false)
		return false;
	
	// YYMMDD가 맞는지 확인한다.
	if (valid_no2(str1) == false)
		return false;
		
	return true;
}

//-------------------------------------------------------------------
// 생년월일과 남녀필드 체크
//-------------------------------------------------------------------
function valid_no1(strReg1,strReg2)	
{
    sGender = strReg2.substring(0,1);
    sYear = strReg1.substring(0,2);
    
    // 두번째 단락 첫번째 숫자는 4보다 클 수 없다.
	if (sGender > 4) {
		return false;
	}
	
    // 2000년도 이전은 남자는 1, 여자는 2
    // 2000년도 이후는 남자는 3, 여자는 4
//	if (sYear != '00') {
//		if ((sGender != '1') && (sGender != '2')) {
//			return false;
//		}
//	}
    
    return true;
}

//-------------------------------------------------------------------
// YYMMDD가 맞는지 확인한다.
//-------------------------------------------------------------------
function valid_no2(strReg1)	
{
    	a = new String(strReg1);

	if(a == '') return false;
	if(a.length != 6 ) return false;

	intYear = parseInt(a.substring(0,2) , 10);
	intMonth = parseInt(a.substring(2,4) , 10);
	intDay = parseInt(a.substring(4,6) , 10);
	
	if(intMonth < 0 || intMonth > 12){ 
		return false;
	}
		
	switch(intMonth){
		case 2 :
			if(intDay < 0 || intDay > 29){
				return false;
				break;
			}
		case 4 :
			if(intDay < 0 || intDay > 30){
				return false;
				break;
			}
		case 6 :
			if(intDay < 0 || intDay > 30){
				return false;
				break;
			}
		case 9 :
			if(intDay < 0 || intDay > 30){
				return false;
				break;
			}
		case 11 :
			if(intDay < 0 || intDay > 30){
				return false;
				break;
			}
		default :
			if(intDay < 0 || intDay > 31){
				return false;
				break;
			}
	}
    
    return true;
}

//-------------------------------------------------------------------
//주민번호 체크썸 체크
//-------------------------------------------------------------------
function checksum_no(str1,str2)	
{
    var li_lastid,li_mod,li_minus,li_last;
    var value0,value1,value2,value3,value4,value5,value6;
    var value7,value8,value9,value10,value11,value12;
    
    if (fn_IsNumeric(str1) &&  fn_IsNumeric(str2)) {
        li_lastid    = parseFloat(str2.substring(6,7));
        value0  = parseFloat(str1.substring(0,1))  * 2;
        value1  = parseFloat(str1.substring(1,2))  * 3;
        value2  = parseFloat(str1.substring(2,3))  * 4;
        value3  = parseFloat(str1.substring(3,4))  * 5;
        value4  = parseFloat(str1.substring(4,5))  * 6;
        value5  = parseFloat(str1.substring(5,6))  * 7;
        value6  = parseFloat(str2.substring(0,1))  * 8;
        value7  = parseFloat(str2.substring(1,2))  * 9;
        value8  = parseFloat(str2.substring(2,3))  * 2;
        value9  = parseFloat(str2.substring(3,4))  * 3;
        value10 = parseFloat(str2.substring(4,5))  * 4;
        value11 = parseFloat(str2.substring(5,6))  * 5;
        value12 = 0;
        
        value12 = value0+value1+value2+value3+value4+value5+value6+value7+value8+value9+value10+value11+value12 ;
        
        li_mod = value12 %11;
        li_minus = 11 - li_mod;
        li_last = li_minus % 10;
        if (li_last != li_lastid){                      
            return false;
        } else
            return true;
	} else    
    return false;
}



//////////////////////////////////////////////////////////////////////////////////
// 화면 관련 스크립트
//////////////////////////////////////////////////////////////////////////////////
	//오픈윈도의 오브젝트를 리턴한다.
	function fn_GetOpenerObj(str) {
		
		var obj = null;
		
		if(opener != null) {
		
			openerForm = opener.document.forms[0];
			
			for(i = 0; i < openerForm.elements.length; i++) {
				var element = openerForm.elements[i];
				
				if(element.id.indexOf(str) > -1 || element.name.indexOf(str) > -1)
				{
					obj = element;
				}
			}
		}
		
		return obj;
	}
	
	
	//html오브젝트 를 리턴한다. Label컨트롤일 경우 사용..
	function fn_GetDocumentTag(str, tagName) {
		
		var obj = null;
		
		openerForm = document.forms[0];
		
		var searchTags = openerForm.all.tags(tagName);

		if (searchTags != null)	{
			for (i=0; i < searchTags.length; i++) {
			 if(searchTags[i].id.indexOf(str) > -1 || (typeof(searchTags[i].name) == 'object' && searchTags[i].name != null && searchTags[i].name.indexOf(str) > -1))
		            obj = searchTags[i];
			}
		}
		
		return obj;
	}
	
	//오픈윈도의 html오브젝트 를 리턴한다.
	function fn_GetOpenerTag(str, tagName) {
		
		var obj = null;
		
		if(opener != null) {
		
			openerForm = opener.document.forms[0];
			
			var searchTags = openerForm.all.tags(tagName);

			if (searchTags != null)	{
				for (i=0; i < searchTags.length; i++) {
				 if(searchTags[i].id.indexOf(str) > -1 || (typeof(searchTags[i].name) == 'object' && searchTags[i].name != null && searchTags[i].name.indexOf(str) > -1))
			            obj = searchTags[i];
				}
			}
		}
		
		return obj;
	}
	
	
	//해당 form의 해당 checkbox 선택여부를 리턴한다.
	function fn_ValidateCheckBox(chkID) {
		var form = document.forms[0];
		
		with(form){
			for(i = 0; i < elements.length; i++) {
				if(elements[i].type == "checkbox" && elements[i].id.indexOf(chkID) > -1) {
					if(elements[i].checked)
						return true;
				}
			}
		}
		
		return false;
    }
    
    //해당 form의 해당 radiobutton 선택여부를 리턴한다.
	function fn_ValidateRadioButton(radioID) {
		var form = document.forms[0];
		
		with(form){
			for(i = 0; i < elements.length; i++) {
				if(elements[i].type == "radio" && elements[i].id.indexOf(radioID) > -1) {
					if(elements[i].selected)
						return true;
				}
			}
		}
		
		return false;
    }
//////////////////////////////////////////////////////////////////////////////////
// GridView 관련 스크립트
//////////////////////////////////////////////////////////////////////////////////
 
    //올체크
	function fn_CheckAll(chkAll, chkStr) {
		var aspnetForm = document.forms[0];
		
		with(aspnetForm) {
			if(chkAll.checked) {
				for(i = 0; i < elements.length; i++) {
					if(elements[i].type == 'checkbox' && elements[i].id.indexOf(chkStr) > -1 && elements[i].disabled == false) {
						//alert(elements[i].id.indexOf(chkID));
						elements[i].checked = true;
					}
				}
			} else {
				for(i = 0; i < elements.length; i++) {
					if(elements[i].type == 'checkbox' && elements[i].id.indexOf(chkStr) > -1) {
						elements[i].checked = false;
					}
				}
			}
		}
    }
    
    
    //그리드뷰 라디오버튼 토글.
    function fn_ToggleRadioBtn(rdoID, rdoStr) {
		var aspnetForm = document.forms[0];
		
		with(aspnetForm) {
			for(i = 0; i < elements.length; i++) {
				if(elements[i].type == 'radio' && elements[i].id.indexOf(rdoStr) > -1) {
					if(rdoID != elements[i].id)
					//alert(elements[i].id.indexOf(chkID));
					elements[i].checked = false;
				}
			}
		}
    }




//-------------------------------------------------------
// 이메일 및 이메일형태 ID검사
//-------------------------------------------------------
function fn_Is_mail(strEmail)
{
    /** 금지사항
     - @가 2개이상
     - .이 붙어서 나오는 경우
     -  @.나  .@이 존재하는 경우
     - 맨처음이.인 경우 **/
    var regDoNot = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; 
    /** 필수사항
     - @이전에 하나이상의 문자가 있어야 함
     - @가 하나있어야 함
     - Domain명에 .이 하나 이상 있어야 함
     - Domain명의 마지막 문자는 영문자 2~3개이어야 함 **/
    var regMust = /^[a-zA-Z0-9\-\.\_]+\@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3})$/;
    
    if ( !regDoNot.test(strEmail) && regMust.test(strEmail) )
        return true;
    else
        return false;
}

//-------------------------------------------------------
// LEFT 메뉴 감추기
//-------------------------------------------------------

var old_menu = '';
function menuclick(submenu)
{
  if( old_menu != submenu ) {
    if( old_menu !='' ) {
      old_menu.style.display = 'none';
    }
    submenu.style.display = 'block';
    old_menu = submenu;

  } else {
    submenu.style.display = 'none';
    old_menu = '';
  }
}



/************************************************************************
함수명			: getLastday()
작성목적		: 년도와 월로 마지막 날짜 Return gksmsg katn Checking
Parameter		:
						itemYear		: 검사할 년도(value)
						itemMonth		: 검사할 월(value)
*************************************************************************/
function fn_getLastday(itemYear, itemMonth)
{
    var  lastDayOfMonth  = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    
        if (((itemYear %4 == 0) && (itemYear % 100 != 0))||(itemYear % 400 == 0))
            lastDayOfMonth[1] = 29;
            
    var returnDays = lastDayOfMonth[itemMonth-1];
    
    return returnDays;
} 



/************************************************************************
함수명			: numberInterval()
작성목적		: 숫자를 시작값과 종료값 사이에 있는지 체크하는 함수
Parameter		:
						item				: 검사할 Object 
						startValue      : 시작값
						endValue		: 종료값
*************************************************************************/
function fn_numberInterval(itemValue, startValue, endValue)
{
	
	var termValue = parseInt(itemValue);

	try
	{
		if (termValue >= parseInt(startValue) && termValue <= parseInt(endValue))
		{
			return true;
		}
		else 
		{
		    alert('111');
			return false;
		}
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);	
		return false;
	}
}



/************************************************************************
함수명			: isDigitDashType()
작성목적		: 날짜 형식 체크
Parameter		:
						item				: 검사할 Object (Object)
*************************************************************************/
function fn_isDigitDashType(itemValue)
{
	
	var num = "0123456789";

	try
	{

				
		for (var intLoop = 0; intLoop < itemValue.length; intLoop++) 
		{
			if (num.indexOf(itemValue.charAt(intLoop)) == -1) {
				return false;
			}
		}
		return true;
	}
	catch (exception)
	{
		return false;
	}
}


/************************************************************************
함수명			: itemValueEqualLength()
작성목적		: Object의 문자열의 길이를 equalLength와 같은지 비교
Parameter		:
						item				: 검사할 Object 
						itemLength    : 제한할 문자열 길이					
*************************************************************************/
function fn_itemValueEqualLength(itemValue, itemLength)
{
	try
	{
		if(itemValue == null)
		{
			return true;
		}
		else if (itemValue.length == itemLength)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	catch (exception)
	{
		//fn_OpenErrorMessage(exception.description);		
		return false;
	}
}



/************************************************************************
함수명			: vs_ValidDateRange()
작성목적		: 두 날짜가 검색 가능한 기간인지를 체크하는 함수
Parameter		:
						itemStart : 검사할 날짜 string)
						itemEnd : 검사할 날짜(string)
						dateRange : 검색기간 (int)
*************************************************************************/
function fn_ValidDateRange(itemStart, itemEnd, flag) 
{
	var startDT = itemStart.value;
	var endDT = itemEnd.value;

	try
	{
		if (flag)	
		{
			if (!isValidDateRange(startDT, endDT))
			{
				itemStart.focus();
				return false;	
			}
		}
		
		if (!flag && startDT.length >0 ||  endDT.length>0)
		{
			if (!isValidDateRange(startDT, endDT))
			{
				itemStart.focus();
				return false;	
			}
		}
		
		return true;		
	}
	catch (exception)
	{
		return false;
	}	
}


function isValidDateRange (startObjValue, endObjValue)
{

	var startObjYear =  startObjValue.substr(0,4);
	var startObjMonth =  startObjValue.substr(4,2);
	var startObjDay = startObjValue.substr(6,2);
	
	var endObjYear =  endObjValue.substr(0,4);
	var endObjMonth =  endObjValue.substr(4,2);
	var endObjDay = endObjValue.substr(6,2);
	
	
	try
	{
			if (!fn_isDigitDashType(startObjValue))
			{			
				return false;
			}

			if (!fn_isDigitDashType(endObjValue))
			{				
				return false;
			}
			
			if (!fn_itemValueEqualLength(startObjValue, 8))
			{				
				return false;
			}
			
			if (!fn_itemValueEqualLength(endObjValue, 8))
			{					
				return false;
			}
			


			var startDT = new Date( startObjYear, startObjMonth, startObjDay);
			var endDT = new Date( endObjYear, endObjMonth, endObjDay);
			if (startDT > endDT) {				
				return false;
			}
			

		return true;		
				
	}
	catch (exception)
	{	
		return false;
	}

}