/******************************************************** 
   파일명 : lib.insurance.js
   설  명 : 보험업무에서 사용되는 별도 함수 모음
   작성자 : 김현배 
   작성일 : 2008.08.18 
   수정일 : 2008.12.24 
*********************************************************/ 

/**
	함수명 : insu_date
	설  명 : 상령일 계산 
	인  자 : 주민번호 앞자리, 현재년도, 현재월, 현재일
	리  턴 : 상령일 yyyy년 MM월 dd일 형식
	사용법 : 
		insu_date(form.resd_no1, yyyy, mm, dd);
 */
function insu_date(ju1, nyy, nmm, ndd) {
    var ret_yy = nyy ;
    var ret_mm = "" ;
    var ret_dd = "" ;
    
    ret_mm = ju1.substring(2,4) ;
    ret_dd = ju1.substring(4) ;
    
    ret_mm = Number(ret_mm) + 6 ;
    if ( Number(ret_mm) > 12 ) ret_mm = Number(ret_mm) - 12 ;
    if ( Number(ret_mm) < 10 ) ret_mm = "0" + Number(ret_mm) ;
    if ( Number(nmm) < 10 ) nmm = "0" +  Number(nmm) ;
    if ( Number(ndd) < 10 ) ndd = "0" +  Number(ndd) ;
    
    if ( (nyy + "" + nmm + "" + ndd ) >= (ret_yy + "" + ret_mm + "" + ret_dd ) ) 
        ret_yy = Number(ret_yy) + 1 ;
        
    if ( endDays(ret_yy, ret_mm, ret_dd) < (ret_yy + "" + ret_mm + "" + ret_dd) ) {
        ret_mm = Number(ret_mm) + 1 ;
        if ( Number(ret_mm) >  12 ) {
            ret_mm = "01" ;
            ret_yy = Number(ret_yy) + 1 ;
        }
        ret_dd = "01" ;
    }
    if ( Number(ret_mm) < 10 ) ret_mm = "0" + Number(ret_mm) ;
    if ( Number(ret_dd) < 10 ) ret_dd = "0" + Number(ret_dd) ;
    
    return ret_yy + "년 " + ret_mm + "월 " + ret_dd + "일";
}

/**
	함수명 : insu_date_num
	설  명 : 상령일 
	인  자 : 주민번호 앞자리, 현재년도, 현재월, 현재일
	리  턴 : 상령일 yyyyMMdd 형식
	사용법 : 
		insu_date(form.resd_no1, yyyy, mm, dd);
 */
function insu_date_num(ju1, nyy, nmm, ndd) {
    var ret_yy = nyy ;
    var ret_mm = "" ;
    var ret_dd = "" ;
    
    ret_mm = ju1.substring(2,4) ;
    ret_dd = ju1.substring(4) ;
    
    ret_mm = Number(ret_mm) + 6 ;
    if ( Number(ret_mm) > 12 ) ret_mm = Number(ret_mm) - 12 ;
    if ( Number(ret_mm) < 10 ) ret_mm = "0" + Number(ret_mm) ;
    if ( Number(nmm) < 10 ) nmm = "0" +  Number(nmm) ;
    if ( Number(ndd) < 10 ) ndd = "0" +  Number(ndd) ;
    
    if ( (nyy + "" + nmm + "" + ndd ) >= (ret_yy + "" + ret_mm + "" + ret_dd ) ) 
        ret_yy = Number(ret_yy) + 1 ;
        
    if ( endDays(ret_yy, ret_mm, ret_dd) < (ret_yy + "" + ret_mm + "" + ret_dd) ) {
        ret_mm = Number(ret_mm) + 1 ;
        if ( Number(ret_mm) >  12 ) {
            ret_mm = "01" ;
            ret_yy = Number(ret_yy) + 1 ;
        }
        ret_dd = "01" ;
    }
    if ( Number(ret_mm) < 10 ) ret_mm = "0" + Number(ret_mm) ;
    if ( Number(ret_dd) < 10 ) ret_dd = "0" + Number(ret_dd) ;
    
    return ret_yy  + ret_mm  + ret_dd ;
}

/**
	함수명 : getAgeCurrent
	설  명 : 피보험자 나이계산
	인  자 : 주민번호 앞자리, 주민번호 뒷자리, 현재년도, 현재월, 현재일
	리  턴 : 피보험자 나이
	사용법 : 
		getAgeCurrent(form.resd_no1, form.resd_no2, yy, mm, dd);
 */
function getAgeCurrent(jc1, jc2, tY, tM, tD) {
    var errno = 0;
    var tDs = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    var jDs = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    var jY = evalJumin(jc1, 0);
    var jM = evalJumin(jc1, 2);
    var jD = evalJumin(jc1, 4);
    var jS = eval(jc2.value.charAt(0));

    if ((jS == 1)||(jS == 2)) {
        jY += 1900;
    } else if ((jS == 3)||(jS == 4)) {
        jY += 2000;
    }
    
    // 현재날짜
    // 2월 윤달 계산
    if (((tY % 400)== 0) || ((tY % 100)!= 0) && ((tY % 4)== 0))
        tDs[1] = 29;

    if (((jY % 400)== 0) || ((jY % 100)!= 0) && ((jY % 4)== 0))
        jDs[1] = 29;

    // 출생년월일 유효성 점검
    if( tY < 1900 ) tY= tY + 1900;     

    if ((jY > tY) || (jY < 1900)) // 출생년도 유효성 점검
    {
        alert("주민등록번호가 올바르지 않습니다.\n\n 다시 입력하여 주세요.");
        return errno;
    }
    else if ((jM > 12) || (jM < 1 )) // 출생월 유효성 점검
    {
        alert("주민등록번호가 올바르지 않습니다.\n\n 다시 입력하여 주세요.");
        return errno;
    }
    else if ((jD > jDs[jM-1]) || (jD < 1 )) // 출생일자 유효성 점검
    {
        alert("주민등록번호가 올바르지 않습니다.\n\n 다시 입력하여 주세요.");
        return errno;
    }

    // 생일이 지나지 않은 경우 
    if (jD > tD)
    {
        tM = tM - 1 ;
        tD = tD + tDs[jM-1] ;
    }

    if (jM > tM)
    {
        tY = tY - 1 ;
        tM = tM + 12 ;
    }
        
    var nAge = tY - jY ;
    // 추가한 부분(2001년 5월 8일)....
    tM = tM - jM; 
    // 현재달 - 태어난날... 

    if (tM > 5) {
      nAge = nAge + 1;
    }
    return nAge;
}

/**
	함수명 : getAge
	설  명 : 피보험자 나이계산
	         getAgeCurrent함수는 주민등록번호 길이 체크를 하지 않음
	인  자 : 주민번호 앞자리, 주민번호 뒷자리, 현재년도, 현재월, 현재일
	리  턴 : 피보험자 나이
	사용법 : 
		getAge(form.resd_no1, form.resd_no2, yy, mm, dd);
 */
function getAge(jc1, jc2, tY, tM, tD) {

    // 변수 선언
    var errno = 0;
    var tDs = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    var jDs = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

    var jY = evalJumin(jc1, 0);
    var jM = evalJumin(jc1, 2);
    var jD = evalJumin(jc1, 4);
    
    var jS = eval(jc2.value.charAt(0));
    
    if ((jS == 1)||(jS == 2)) {
        jY += 1900;
    } else if ((jS == 3)||(jS == 4)) {
        jY += 2000;
    }
    
    // 현재날짜
    // 2월 윤달 계산 
    if (((tY % 400)== 0) || ((tY % 100)!= 0) && ((tY % 4)== 0))
        tDs[1] = 29;

    if (((jY % 400)== 0) || ((jY % 100)!= 0) && ((jY % 4)== 0))
        jDs[1] = 29;

    // 출생년월일 유효성 점검
    if( tY < 1900 ) tY= tY + 1900;     

    if ((jY > tY) || (jY < 1900)) // 출생년도 유효성 점검 
    {
        alert("[주민등록번호] 틀렸습니다.\n\n 다시 입력하여 주세요.");
        return errno;
    }
    else if ((jM > 12) || (jM < 1 )) // 출생월 유효성 점검
    {
        alert("[주민등록번호] 틀렸습니다.\n\n 다시 입력하여 주세요.");
        return errno;
    }
    else if ((jD > jDs[jM-1]) || (jD < 1 )) // 출생일자 유효성 점검
    {
        alert("[주민등록번호] 틀렸습니다.\n\n 다시 입력하여 주세요.");
        return errno;
    }

    // 생일이 지나지 않은 경우
    if (jD > tD)
    {
        tM = tM - 1 ;
        tD = tD + tDs[jM-1] ;
    }

    if (jM > tM)
    {
        tY = tY - 1 ;
        tM = tM + 12 ;
    }
        
//    var nAge = tY - jY ;
//  return nAge;
    
    var nAge = tY - jY ;
    // 추가한 부분(2001년 5월 8일)....
    tM = tM - jM; 
    // 현재달 - 태어난날...

    if (tM > 5) {
      nAge = nAge + 1;
    }

    if ( jc1.value.length ==6 && jc2.value.length ==7 )
    return nAge;
    else
        return "";
}

/**
	함수명 : evalJumin
	설  명 : 주민번호 계산
	인  자 : select control
	리  턴 : 선택된 Option의 text
	사용법 : 
		getOptionText(form.nk);
 */
function evalJumin(str, i) {
    var j1 = eval(str.value.charAt(i));
    var j2 = eval(str.value.charAt(i+1));
    var j = j1*10 + j2;
    return j;
}


/**
	함수명 : validAnnuDiv(form)
	설  명 : 연금분할선택
	인  자 : 연금분할선택을 지정할 form
	리  턴 : 연금분할선택의 값검증 값
	사용법 : 
		validAnnuDiv(form);
 */
//=============================================================================
//연금분할선택
//=============================================================================
function validAnnuDiv(form) {
    var annu1 = form.whole_annu.value; // 종신연금형
    var annu2 = form.decide_annu.value; // 확정연금형
    var annu3 = form.succeed_annu.value; //상속연금형
    
    var annu1_div = parseInt(annu1) % 10;
    var annu2_div = parseInt(annu2) % 10;
    var annu3_div = parseInt(annu3) % 10;
    
    
    var annu_hap = parseInt(annu1) + parseInt(annu2) + parseInt(annu3);
    
    if( annu1_div > 0 || annu2_div  >0 || annu3_div > 0)
    {
      alert("연금분할선택 단위는 10% 입니다.");
      form.whole_annu.focus();
      return false;
    }
    
    if( annu1 != 0 && annu2 != 0 && annu3 != 0)
    {
      alert("연금분할선택은 두개 이상 불가능 합니다.");
      form.whole_annu.focus();
      return false;
    }
    
    if( annu1 != 0 || annu2 != 0 || annu3 !=0 ){ 
      if(annu_hap != 100)
      {
      	alert("연금분할 총 합산은 100%가 되어야 합니다.");
      	form.whole_annu.focus();
      	return false;
      }
    }
    return true;
}
	
/**
	함수명 : resetInsAmt
	설  명 : 선택기준 화면의 보험료 초기화
	인  자 :  
	리  턴 : 
	사용법 : 
		resetInsAmt();
 */
function resetInsAmt(){
	//특약 보험료 초기화
//	prefixSameText("span_elem_reg_amt", "", false);

	//좌측 합계보험료
	try{
		//parent.document.all["span_tot_ins_amt_top"].innerHTML = "";
	}catch(e){}
	//선택기준 합계 보험료
//	document.all["span_tot_ins_amt_bottom"].innerHTML = "";
}


	
/**
	함수명 : resetInsAmt
	설  명 : 선택기준 화면의 보험료 초기화
	인  자 :  
	리  턴 : 
	사용법 : 
		resetInsAmt();
 */
function selfResetInsAmt(){
	//특약 보험료 초기화
	prefixSameText("span_elem_reg_amt", "", false);

	//좌측 합계보험료
	try{
		parent.document.all["span_tot_ins_amt_top"].innerHTML = "";
	}catch(e){}

	//할인보험료
	try{
		document.all["span_dc_amt"].style.display = "none";
	}catch(e){}
	//선택기준 합계 보험료
	document.all["span_tot_ins_amt_bottom"].innerHTML = "";
}
	
/**
	함수명 : goInsuCalc
	설  명 : 보험료계산 처리 로직 수행
	인  자 :  
	리  턴 : 가입금액을 통한 보험료 계산
	사용법 : 
		goInsuCalc();
 */
var timer = null;

function goInsuCalc(){
	parent.document.ProcForm.insurance_calc_progress.value = "Y";
	if(timer != null){
		clearTimeout(timer);  // clearTimeout 으로 setTimeout 해제
	}
	timer = setTimeout("intervalGoInsuCalc()", 500);

}

/**
	함수명 : goInsuCalc
	설  명 : 보험료계산 처리 로직 수행
	인  자 :  
	리  턴 : 가입금액을 통한 보험료 계산
	사용법 : 
		goInsuCalc();
 */
function intervalGoInsuCalc(){
	var form = document.ProcForm;
	if(form.elem_check != null){
		if(form.elem_check.length > 1){
			form.elem_check[0].checked = true;
			form.elem_check[0].disabled = false;
		} else {
			form.elem_check.checked = true;
			form.elem_check.disabled = false;
		}
	}
	//보험료 초기화
	resetInsAmt();
	form.target = "submitFrame";
	form.action = "/rp/cm/usInsuranceBillMgt_cal_00.do";
	form.submit();

	if(form.elem_check != null){
		if(form.elem_check.length > 1){
			form.elem_check[0].checked = true;
			form.elem_check[0].disabled = true;
		} else {
			form.elem_check.checked = true;
			form.elem_check.disabled = true;
		}
	}

	timer = null;
	timer02 = null;

}

/**
	함수명 : goHandoCheck
	설  명 : 한도체크 처리 로직 수행
	인  자 :  
	리  턴 : 가입금액을 통한 한도체크
	사용법 : 
		goInsuCalc();
 */
function goHandoCheck(){
	var form = document.ProcForm;
	form.target = "submitFrame";
	form.action = "/rp/cm/usLimitDisposalMgt_cal_00.do";
	form.submit();
}

/**
	함수명 : goReserve
	설  명 : 적립금예시 처리 로직 수행
	인  자 :  
	리  턴 : 적립금예시 팝업 게시
	사용법 : 
		goPointEx();
 */
function goPointEx()
{
  window.open('','pop_06','width=780,height=470,scrollbars=yes');
  var form = document.ProcForm;
  form.action = "/rp/cm/usEtcComm_pop_06.do";
  form.target = "pop_06";
  form.submit();
}



/**
	함수명 : updateTooltip
	설  명 : 선택기준화면의 풍선도움말 자동 설정
	인  자 :  
	리  턴 : 선택기준화면의 풍선도움말 자동 설정
	사용법 : 
		function userOnload(){
			updateTooltip();
		}
 */
function updateTooltip(){
	var form = document.ProcForm;
	form.target = "submitFrame";
	form.action = "/rp/cm/usGoodsType_upd_00.do";
	form.submit();
}

/**
	함수명 : showTooltip
	설  명 : 선택기준화면의 풍선도움말 보임설정
	인  자 : 특약정렬순서 
	리  턴 : 
	사용법 : 
		<img src="/images/us/rp/cm/icon_dotb.gif" width="17" height="15" onMouseover="showTooltip(1);" onMouseout="hideTooltip(1);" style="cursor:hand"/>
 */
var tooltipObj = new Object();
function showTooltip(elem_ord, y, x){
	try{
		var divCtl = document.all["tooltip" + elem_ord];
		var isFirst = false;
		if(tooltipObj["tooltip" + elem_ord] == null){
			var temp = divCtl.innerHTML;
			var divText = "<link href=\"/css/default.css\" rel=\"stylesheet\" type=\"text/css\"><div style='background:#ffffff;padding:6px;border:2px solid #527cb6;width:100%' id='tooltip" + elem_ord + "'>" + divCtl.innerHTML + "</div>";

			divCtl.innerHTML = "<iframe id='IF_tooltip" + elem_ord + "' scrolling='no' style='background:#999999;padding:0;width:100%' frameborder='0'></iframe>";
			eval("IF_tooltip" + elem_ord).document.write(divText);
			tooltipObj["tooltip" + elem_ord] = "Y";
			isFirst = true;
			
			if(replaceAll(temp, " ", "") == ""){
				divCtl.style.display = "none";
				divCtl.innerHTML = "";
			}
		}

		if(isFirst){
			divCtl.style.display = "block";
			divCtl.style.width = 290;
			divCtl.style.offsetHeight = eval("IF_tooltip" + elem_ord).document.all["tooltip" + elem_ord].style.offsetHeight;

			eval("var PF = IF_tooltip" + elem_ord + ".document.body");
			var CF = document.getElementById("IF_tooltip" + elem_ord);
			CF.style.height = PF.scrollHeight+(PF.offsetHeight - PF.clientHeight);
			divCtl.style.top = -1000;
			divCtl.style.left = -1000;
		} else {
			divCtl.style.display = "block";
			divCtl.style.width = 290;
			divCtl.style.offsetHeight = eval("IF_tooltip" + elem_ord).document.all["tooltip" + elem_ord].style.offsetHeight;

			eval("var PF = IF_tooltip" + elem_ord + ".document.body");
			var CF = document.getElementById("IF_tooltip" + elem_ord);
			CF.style.height = PF.scrollHeight+(PF.offsetHeight - PF.clientHeight);
			if(y == null){
				var top_ = document.body.scrollTop + event.clientY - divCtl.offsetHeight - 10;
				if(top_ < 0){
					top_ = 0;
				}
				divCtl.style.top = top_;
				divCtl.style.left = document.body.scrollLeft + event.clientX + 10;
			} else {
				var top_ = document.body.scrollTop + y - divCtl.offsetHeight - 10;
				if(top_ < 0){
					top_ = 0;
				}

				divCtl.style.top = top_;
				divCtl.style.left = document.body.scrollLeft + x + 10;			
			}
		}

	}catch(e){
		//alert("도움말을 로드하지 못하였습니다");
//		alert(e);
	}
}

/**
	함수명 : updateTooltip
	설  명 : 선택기준화면의 풍선도움말 자동 설정
	인  자 :  
	리  턴 : 선택기준화면의 풍선도움말 자동 설정
	사용법 : 
		<img src="/images/us/rp/cm/icon_dotb.gif" width="17" height="15" onMouseover="showTooltip(1);" onMouseout="hideTooltip(1);" style="cursor:hand"/>
 */
function hideTooltip(elem_ord){
	try{
		var divCtl = document.all["tooltip" + elem_ord]
		divCtl.style.display = "none";
	}catch(e){}
}


/**
	함수명 : updateTooltip
	설  명 : 선택기준화면의 풍선도움말 자동 설정
	인  자 :  
	리  턴 : 선택기준화면의 풍선도움말 자동 설정
	사용법 : 
		<img src="/images/us/rp/cm/icon_dotb.gif" width="17" height="15" onMouseover="showTooltip(1);" onMouseout="hideTooltip(1);" style="cursor:hand"/>
 */
function updateElemEnterEvent(func){
	/*
	고객요청에 의한 Enter Event제거
	if(func == null){
		func = "validateForm(true)";
	}
	try{
		for(var i = 0;i < 100; i++){
			var ctl = document.all["elem_reg_amt" + i];
			if(ctl != null){
				try{
					ctl.onkeypress = function(){
						enterEvent(func)
					}
				}catch(e){
				}
			}
		}
	} catch(e){
	}	*/
}