﻿/*==============================================================================================

     제    목 : 공통 자바스크립트
     생 성 자 : 정태화
     생 성 일 : 2007-05-01

     -----------------------------------------------------------------------------------------
      번호  수정일     수정자   수정내용
     -----------------------------------------------------------------------------------------
      #001  07-08-08   정태화   _IsOkCheckRequiredOk함수 소스 수정
      #002  07-08-08   정태화   멀티파일 업로드 유효성 체크 추가       
      #003  07-09-06   정태화   _PostFormToPage 함수 추가
================================================================================================*/


//********************************************//
// 필수입력사항 체크하는 함수(테이블명 포함O)
//********************************************//
function _IsOkCheckRequiredByTable(btnTableName)
{
    try
    {
        var result = _IsOkCheckRequiredOk(btnTableName);
        return result;
    }
    catch(e)
    {
        return false;
    }
}

//********************************************//
// 필수입력사항 체크하는 함수(테이블명 포함X)
//********************************************//
function _IsOkCheckRequired()
{
    try
    {
        var result = _IsOkCheckRequiredOk('');
        return result;
    }
    catch(e)
    {
        return false;
    }
}

//**************************************//
// 필수입력사항 체크하는 함수(내부함수)
//**************************************//
function _IsOkCheckRequiredOk(btnTableName)
{
    var itForm = document.forms[0];
	if(itForm == null)
	{ 
	    alert("debug : not found 'form'"); 
	    return false; 
    }
  
    // 모든 컨트롤 확인
	for(var i = 0; i < itForm.length; i++)
	{
	    var it = itForm[i];

	    // 비활성화인 경우 Skip
	    if(it.disabled == true)
	    {
	        continue;
        }
        
	    // 1. 버튼에 테이블명을 기재한 경우 처리
	    if(btnTableName != null && btnTableName != "")
	    {
	        if(it.NcTableName != null && it.NcTableName != "")
	        {	
	            if(btnTableName != it.NcTableName)
	            {
	                continue;
	            }
	        }
	        else
	        {
	            continue;
            }
	    }
		
		// 2. 사용자 유효성 체크 스크립트
		if( it.NcValidateScript != null && it.NcValidateScript != "" &&
		    it.NcValidateResult != null && it.NcValidateResult == "false")
	    {
	        var result = eval(it.NcValidateScript);
	        if(result == true)
	        {
	            it.NcValidateResult = "true";
	            continue;
            }
	        else
	        {
	            it.NcValidateResult = "false";
	            return false;
            }
	    }
		
		// 3. 필수입력사항 체크
		if(it.RequiredMessage != null && it.RequiredMessage != "")
		{
	    
		    // 히든 컨트롤
			if(it.type == "hidden" && it.value == "")
			{
				alert(it.RequiredMessage);
				return false;
			}
			
			// #004 체크박스리스트
			if(it.type == "hidden" && it.NcType == "checkboxlist" )
			{
			    var chk_chkboxlist = false;			    
			    for(var j = 0; j < parseInt(it.value); j++)
	            {	                
	                var Obj = document.getElementById(it.NcName + "$" + j);
	                if (Obj.checked == true)
	                {
	                    chk_chkboxlist = true;
	                }			        
			    }
			    if(!chk_chkboxlist) 
			    {
		            alert(it.RequiredMessage);
		            return false;   
			    }
			}

            // 텍스트 박스
			if(it.type == "text" && it.value == "")
			{
				alert(it.RequiredMessage);
				it.focus();
				return false;
			}
		
		    
		     // 패스워드
			if(it.type == "password" && it.value == "")
			{
				alert(it.RequiredMessage);
				it.focus();
				return false;
			}
		
		    
		    // Textarea
			if(it.type == "textarea" && it.value == "")
			{
				alert(it.RequiredMessage);
				it.focus();
				return false;
			}
			

            // 콤보박스
			if(it.type == "select-one" && it.value == "")
			{
				alert(it.RequiredMessage);
				it.focus(); //[#001] 소스추가
				return false;
			}
			
			
            // 체크박스
			if(it.type == "checkbox" && it.checked == false)
			{
				alert(it.RequiredMessage);
				return false;
			}
		           

            // 라디오 박스
			if(it.type == "radio")
			{
				var rdo = eval("document." + itForm.name + "." + it.name);

				var len = rdo.length;
				var count = 0;
				for(var j = 0; j < len; j++)
				{
					if(rdo[j].checked == false) 
					    count++;
				}
			
				// 선택이 하나도 되지 않은 경우
				if(count == len)
				{
					alert(it.RequiredMessage);
					return false;
				}
			}
			
			// 파일인 경우
			if(it.type == "file" && it.NcIsMulti == null && it.value == "")
			{
				alert(it.RequiredMessage);
				it.focus(); //[#001, 소스추가]
				return false;
			}
			
			// [#002,소스추가] 멀티파일 업로드인경우 
			if(it.type == "file" && it.NcIsMulti == "yes")
			{
			    var listBoxName = it.name.replace(/_fileupload/gi, "_listbox");
				var listBox = document.getElementById(listBoxName);
				if(listBox.options.length == 0)
			    {
				    alert(it.RequiredMessage);
				    it.focus(); //[#001, 소스추가]
				    return false;
                }
			}
			
			// 사업자번호인 경우
			if(it.NcCheckRequiredType == "SaupNo")
		    {
                var isOk = _CheckSaupNo(it.value);
                if(isOk == false)
                {
                    alert("유효한 사업자번호가 아닙니다.");
                    document.getElementById(it.name + "_txtSaupNo1").focus();
                    return false;
                }
		    }
		    
		    // 주민등록번호
			if(it.NcCheckRequiredType == "JuminNo")
		    {
                var isOk = _CheckJuminNo(it.value);
                if(isOk == false)
                {
                    alert("유효한 주민등록번호가 아닙니다.");
                    document.getElementById(it.name + "_txtJuminNo1").focus();
                    return false;
                }
		    }
		    
		    // 전화
			if(it.NcCheckRequiredType == "TelNo")
		    {
                var isOk = _CheckTelNo(it.value);
                if(isOk == false)
                {
                    alert("유효한 전화번호가 아닙니다.");
                    document.getElementById(it.name + "_txtTel1").focus();
                    return false;
                }
		    }
		    
		    // 이동전화
			if(it.NcCheckRequiredType == "HpNo")
		    {
                var isOk = _CheckHpNo(it.value);
                if(isOk == false)
                {
                    alert("유효한 이동전화번호가 아닙니다.");
                    document.getElementById(it.name + "_txtHp1").focus();
                    return false;
                }
		    }
		    
		    // 메일
			if(it.NcCheckRequiredType == "MailAddr")
		    {
                var isOk = _CheckMailAddr(it.value);
                if(isOk == false)
                {
                    alert("유효한 이메일 주소가 아닙니다.");
                    document.getElementById(it.name + "_txtMail1").focus();
                    return false;
                }
		    }
		}
	}
	
	return true;
}



//******************************************//
// 사업자등록번호 체크(_IsOkCheckRequiredOk)
// saupNo = "21-123-11111"
//******************************************//
function _CheckSaupNo(saupNo) 
{
    if     (saupNo.indexOf("-") == -1) return false;
    else if(saupNo.length != 12) return false;
    else
    {
        saupNo = saupNo.replace(/-/gi, "");
	    var sum = 0;
	    var getlist = new Array(10);
	    var chkvalue = new Array("1","3","7","1","3","7","1","3","5");
    	
	    for(var i = 0; i < 10; i++) { getlist[i] = saupNo.substring(i, i+1); }
	    for(var i = 0; i < 9; i++) { sum += getlist[i]*chkvalue[i]; }
    	
	    sum = sum + parseInt((getlist[8]*5)/10);
	    sidliy = sum % 10;
	    sidchk = 0;
    	
	    if (sidliy != 0) { sidchk = 10 - sidliy; }
	    else { sidchk = 0; }
    	
	    if(sidchk != getlist[9]){ return false; }

	    return true;
    }	    
}	

//*****************************************//
// 주민등록번호체크(_IsOkCheckRequiredOk)
// juminNo = "712433-1733322"
//*****************************************//
function _CheckJuminNo(juminNo)
{
    if     (juminNo.indexOf("-") == -1) return false;
    else if(juminNo.length != 14) return false;
    else
    {
        var arr = juminNo.split('-');
        var juminNo1 = arr[0];
        var juminNo2 = arr[1];
        
	    var chk = 0 ;
	    var yy = juminNo1.substring(0,2);
	    var mm = juminNo1.substring(2,4);
	    var dd = juminNo1.substring(4,6);
    	
	    var tmp = 0 ;  		
	    var sex = juminNo2.substring(0,1);
    	
	    for (var i = 0; i <= 5 ; i++)
		    tmp = tmp + ((i%8+2) * parseInt(juminNo1.substring(i,i+1)))
    	
	    for (var i = 6; i <=11 ; i++)
            tmp = tmp + ((i%8+2) * parseInt(juminNo2.substring(i-6,i-5)))

	    tmp = 11 - (tmp %11)
	    tmp = tmp % 10
    	
	    if ((juminNo1.length != 6 ) || (yy < 25 || mm < 1 || mm > 12 || dd < 1))
		    return false;
	    else if (juminNo2.length !=7)
		    return false;
	    else if ((sex != 1 && sex !=2 && sex !=3 && sex !=4) || (juminNo2.length != 7 ))
		    return false;
	    else if (tmp != juminNo2.substring(6,7))
		    return false;

        return true;
    }
}


//**************************************//
// 메일 체크함수(_IsOkCheckRequiredOk)
//**************************************//
function _CheckMailAddr(mailAddr) 
{
	var result = true;
	
	if (mailAddr == "" ) 
		result = false;
	else if(mailAddr.indexOf("@") == "-1" || mailAddr.indexOf(".") == "-1") 
		result = false;
	else if(mailAddr.charAt(mailAddr.length - 1) == '.') 
		result = false;
	
	return result;	
}


//******************************************//
// 전화번호 체크함수(_IsOkCheckRequiredOk)
//******************************************//
function _CheckTelNo(telNo) 
{
 	var result = false;
 	
    var arr = telNo.split('-');
    var telNo1 = arr[1];
    var telNo2 = arr[1];
    var telNo3 = arr[2];
    
    if(telNo3.length == 4 && (telNo2.length == 3 || telNo2.length == 4))
        return true;
	
	return result;	
}


//******************************************//
// 이동전화 체크함수(_IsOkCheckRequiredOk)
//******************************************//
function _CheckHpNo(hpNo)
{
	var result = false;
 	
    var arr = hpNo.split('-');
    var hpNo1 = arr[1];
    var hpNo2 = arr[1];
    var hpNo3 = arr[2];
    
    if(hpNo3.length == 4 && (hpNo2.length == 3 || hpNo2.length == 4))
        return true;
	
	return result;	
}

//**************************************//
// 포스트방식으로 윈도우에 데이타 전송
//**************************************//
function _PostFormToWindow(formHiddenNames, formHiddenValues, openWindowUrl, openWindowOption)
{
    window.open("", "window_postdata", openWindowOption);
    var form = document.createElement("<form name='form_postdata' method='post'>");
    for(i = 0; i < formHiddenNames.length; i++)
    {
        var formHiddenName = formHiddenNames[i];
        var formHiddenValue = formHiddenValues[i];
        var element = document.createElement("<input type='hidden' name='" + formHiddenName + "' value='" + formHiddenValue + "'>");
        form.appendChild(element);
    }
    document.body.appendChild(form);
    
    form.action = openWindowUrl;
    form.target = "window_postdata";
    form.submit();
        
}

//**************************************//
// 포스트방식으로 페이지에 데이타 전송
//**************************************//
function _PostFormToPage(formHiddenNames, formHiddenValues, pageMoveUrl)
{
    var form = document.createElement("<form name='form_postdata' method='post'>");
    for(i = 0; i < formHiddenNames.length; i++)
    {
        var formHiddenName = formHiddenNames[i];
        var formHiddenValue = formHiddenValues[i];
        var element = document.createElement("<input type='hidden' name='" + formHiddenName + "' value='" + formHiddenValue + "'>");
        form.appendChild(element);
    }

    document.body.appendChild(form);
    form.action = pageMoveUrl;
    form.submit();
}

//*************************************//
// 금지문자 입력 제한(NcWebTextBox)
//*************************************//
function _TextBoxOnKeyUpForbidChars(obj)
{
    var content = obj.value;
    var forbidChars = obj.ForbidChars;
    
    if(forbidChars == null) return;
   
    for(i = 0; i < forbidChars.length; i++)
    {
        var forbidChar = forbidChars.substr(i, 1);
        if(content.indexOf(forbidChar) != -1)
        {
            alert("다음 문자는 사용할 수 없습니다.\n => " + forbidChars);
            
            // 금지문자 삭제
            obj.value = content.replace(eval("/\\" + forbidChar + "/gi"), "");
        }

    }  
}

//**************************************//
// 삭제 경고창 알림여부(NcWebButton)
//**************************************//
function _Click_DeleteOk()
{
    try
    {
        var ans = confirm("정말 삭제하시겠습니까?");
        if(ans == true) return true;
        else return false;
    }
    catch(e)
    {
        return false;
    }
}



//**************************************//
// 화면 중간에 작은창 띄우기
//**************************************//
function _OpenWinCenter(url, wname, wopt) 
{
    var newopt = "", wHeight = 0, wWidth = 0;
    if (wopt != undefined) 
    {
        var woptlist = wopt.replace(/ /g, "").split(",");
        for (var i in woptlist) 
        {
            if (woptlist[i].match(/^height=/i)) 
            {
                wHeight = parseInt(woptlist[i].substr(7),10);
                if (!isNaN(wHeight)) newopt += "top=" + Math.floor((screen.availHeight - wHeight) / 2) + ",";
            }
            if (woptlist[i].match(/^width=/i)) 
            {
                wWidth = parseInt(woptlist[i].substr(6),10);
                if (!isNaN(wWidth)) newopt += "left=" + Math.floor((screen.availWidth - wWidth) / 2) + ",";
            }
        }
    }
    
    window.focus();
    
    return window.open(url, wname, newopt + wopt);
} 

//**************************************//
// embed 실행
//**************************************//
function _EmbedObject(url,width,height,start) 
{
	document.write ("<EMBED style='WIDTH: "+width+"; HEIGHT: "+height+"' src='"+url+"' autostart='"+start+"'>"); 
}
