﻿var FrmChk = Class.create();
FrmChk.prototype = {
	initialize: function(obj,msgcode,knd){
		this.obj = obj;
		this.msgcode = msgcode;
		this.knd = knd;
	}
}

var DateChk = Class.create();
DateChk.prototype = {
	initialize: function(obj1,obj2,msgcode){
		this.obj1 = obj1;
		this.obj2 = obj2;
		this.msgcode = msgcode;
	}
}




var DC = function(argue){

	for( var i=0; i< argue.length; i++ ){

		if( argue[i].obj1.length > 1 ){ // 폼 객체가 배열인 경우 처리

			for( var j=1; j< argue[i].obj1.length; j++ ){

				if( argue[i].obj1[j].value != "" && argue[i].obj2[j].value != "" ){

					if( compareDates( argue[i].obj1[j].value, 'yyyy-mm-dd', argue[i].obj2[j].value, 'yyyy-mm-dd' ) == 1 ){
						MsgUtils.alertMsg(argue[i].msgcode);
						argue[i].obj1[j].select();
						return false;
					}
				}
			}

		}else{ // 폼 객체가 단일 객체인 경우 처리

			if( argue[i].obj1.value != "" && argue[i].obj2.value != "" ){

				if( compareDates( argue[i].obj1.value, 'yyyy-mm-dd', argue[i].obj2.value, 'yyyy-mm-dd' ) == 1 ){
					MsgUtils.alertMsg(argue[i].msgcode);
					argue[i].obj1.select();
					return false;
				}
			}
		}
	}
    return true;
}

var FC = function(argue){

	for( var i=0; i< argue.length; i++ ){

		if( argue[i].obj.length > 1 ){ // 폼 객체가 배열인 경우 처리
			
            /* 거의 사용되지 않는 기능이므로 주석처리하였음.
			for( var j=1; j< argue[i].obj.length; j++ ){
				if( argue[i].obj[j].value.trim() == "" ){
					MsgUtils.alertMsg(argue[i].msgcode);
					argue[i].obj[j].focus();
					return false;
				}

				if( argue[i].knd != 0 ){

					if( argue[i].knd == 1 ){ //숫자만 입력체크

						 if(isNaN(argue[i].obj[j].value)){
							 MsgUtils.alertMsg('1001');
							 argue[i].obj[j].value.trim() = "";
							 argue[i].obj[j].focus();
							 return false;
						 }

					}else if( argue[i].knd == 2 ){ // 이메일 체크

						var k = 1;
						var s = argue[i].obj[j].value;
						var sLength = s.length;
						var bool = false;
						while ((k < sLength) && (s.charAt(k) != "@")){ k++ }
						if ((k >= sLength) || (s.charAt(k) != "@")) bool = false;
						else k += 2;
						while ((k < sLength) && (s.charAt(k) != ".")){ k++ }
						if ((k >= sLength - 1) || (s.charAt(k) != ".")) bool = false;
						else bool = true;

						if( !bool ){
							MsgUtils.alertMsg('1002');
							argue[i].obj[j].select();
							return false;
						}

					}

				}
			}
            */

		}else{ // 폼 객체가 단일 객체인 경우 처리


			if( argue[i].obj.value.trim() == "" ){
				MsgUtils.alertMsg(argue[i].msgcode);
                Try.these(function(){
				argue[i].obj.focus();
                });
				return false;
			}

			if( argue[i].knd != 0 ){

				if( argue[i].knd == 1 ){ //숫자만 입력체크

					 if(isNaN(argue[i].obj.value)){
						 MsgUtils.alertMsg(argue[i].msgcode);
						 argue[i].obj.value = "";
                         Try.these(function(){
						 argue[i].obj.focus();
                         });
						 return false;
					 }

				}else if( argue[i].knd == 2 ){ // 이메일 체크

					var k = 1;
					var s = argue[i].obj.value;
					var sLength = s.length;
					var bool = false;
					while ((k < sLength) && (s.charAt(k) != "@")){ k++ }
					if ((k >= sLength) || (s.charAt(k) != "@")) bool = false;
					else k += 2;
					while ((k < sLength) && (s.charAt(k) != ".")){ k++ }
					if ((k >= sLength - 1) || (s.charAt(k) != ".")) bool = false;
					else bool = true;

					if( !bool ){
						MsgUtils.alertMsg('1002');
						argue[i].obj.select();
						return false;
					}

				}else{ // 주민등록번호 체크

					if( argue[i].knd.value.trim() == "" ){
						MsgUtils.alertMsg(argue[i].msgcode);
                        Try.these(function(){
						argue[i].knd.focus();
                        });
						return false;
					}

					if( argue[i].obj.value.length != 6 ){
						MsgUtils.alertMsg('1003');
                        Try.these(function(){
						argue[i].obj.focus();
                        });
						return false;
					}

					if( argue[i].knd.value.length != 7 ){
						MsgUtils.alertMsg('1004');
                        Try.these(function(){
						argue[i].knd.focus();
                        });
						return false;
					}

					var personno = argue[i].obj.value + argue[i].knd.value;

					var A = personno.substring(0,1);
					var  B = personno.substring(1,2);
					var  C = personno.substring(2,3);
					var  D = personno.substring(3,4);
					var  E = personno.substring(4,5);
					var  F = personno.substring(5,6);

					var  G = personno.substring(6,7);
					var  H = personno.substring(7,8);
					var  I = personno.substring(8,9);
					var  J = personno.substring(9,10);
					var  K = personno.substring(10,11);
					var  L = personno.substring(11,12);
					var  M = personno.substring(12,13);

					var birthYear = "";
					if ((G == "1") || (G == "2") || (G == "5") || (G == "6"))
					{
					   birthYear = "19";
					}
					else if ((G == "3") || (G == "4") || (G == "7") || (G == "8"))
					{
					   birthYear = "20";
					}
					else{
						MsgUtils.alertMsg('1005');
                        Try.these(function(){
						obj1.focus();
                        });
						return false;
					}

					birthYear += personno.substr(0, 2);
					var birthMonth = personno.substr(2, 2) - 1;
					var birthDate = personno.substr(4, 2);
					var birth = new Date(birthYear, birthMonth, birthDate);
					
					if ( birth.getYear() % 100 != personno.substr(0, 2) ||
						 birth.getMonth() != birthMonth ||
						 birth.getDate() != birthDate) {
						 MsgUtils.alertMsg('1005');
                         Try.these(function(){
						 obj1.focus();
                         });
						 return false;
					}

					var  sum;
					if(G == 1 || G == 2 || G == 3 || G == 4 ){
						sum = (A)*2;
						sum = sum + (B)*3;
						sum = sum + (C)*4;
						sum = sum + (D)*5;
						sum = sum + (E)*6;
						sum = sum + (F)*7;

						sum = sum + (G)*8;
						sum = sum + (H)*9;
						sum = sum + (I)*2;
						sum = sum + (J)*3;
						sum = sum + (K)*4;
						sum = sum + (L)*5;

						var iRe = (11 - (sum%11))%10;
						if (M != iRe){
							MsgUtils.alertMsg('1005');
                            Try.these(function(){
							obj1.focus();
                            });
							return false;
						}
					}
					else{	// 외국인 번호 검증
						var odd = H*10 + I;
						if (odd % 2 != 0) {
							MsgUtils.alertMsg('1006');
                            Try.these(function(){
							obj1.focus();
                            });
							return false;
						}
						if ((L != 6)&&(L != 7)&&(L != 8)&&(L != 9)) {
							MsgUtils.alertMsg('1006');
                            Try.these(function(){
							obj1.focus();
                            });
							return false;
						}
						sum = (A)*2;
						sum = sum + (B)*3;
						sum = sum + (C)*4;
						sum = sum + (D)*5;
						sum = sum + (E)*6;
						sum = sum + (F)*7;

						sum = sum + (G)*8;
						sum = sum + (H)*9;
						sum = sum + (I)*2;
						sum = sum + (J)*3;
						sum = sum + (K)*4;
						sum = sum + (L)*5;

						var iRe = (11 - (sum%11))%10;
						iRe += 2;
						iRe = iRe % 10;

						if (M != iRe){
							MsgUtils.alertMsg('1006');
                            Try.these(function(){
							obj1.focus();
                            });
							return false;
						}
					}

				} //END - if( argue[i].knd == 1 )

			}//END - if( argue[i].knd != 0 )
		}
	}
	return true ;
}

function SetAll(formname){
	var resultSelect = $(formname).getInputs();

	for(var i=0; i<resultSelect.length; i++){
        __debug(resultSelect[i].name+"=>"+resultSelect[i].type);
        if(resultSelect[i].type=="text"||resultSelect[i].type=="textarea"){
            if( resultSelect[i].name != "" ){
                if( resultSelect[i].value == "" ){
                    $(resultSelect[i].name).value = "1";
                }
            }
        }else if(resultSelect[i].type=="checkbox"){
            $(resultSelect[i].name).checked = true;
        }
	}
}
