var wrestMsg = "";
var wrestFld = null;
var wrestFldDefaultColor = "white";
var wrestFldBackColor = "#FFFFCC";

// required : 반드시 입력
// trim : 문자열의 양옆 공백을 없앰
// minlength : 최소 길이 반드시 입력
// email : 반듯한 e-mail 주소인지 검사
// nospace : 문자열 중간에 공란있으면 오류

var arrAttr  = new Array ("required", "trim", "minlength","minvalue","maxvalue", "email", "nospace", "jumin", "password","numeric", "alpha", "alphanumeric","selected","rdo","cbo");

// subject 속성값을 얻어 return, 없으면 tag의 name을 넘김
function wrestItemname(fld)
{
    var itemname = fld.getAttribute("itemname");
    if (itemname != null && itemname != "")
        return itemname;
    else
        return fld.name;
}

// 양쪽 공백 없애기
function wrestTrim(fld) 
{
    var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
    fld.value = fld.value.replace(pattern, "");
    return fld.value;
}

// 필수 입력 검사
function wrestRequired(fld)
{
    if (wrestTrim(fld) == "") {
        if (wrestFld == null) {
            wrestMsg = wrestItemname(fld) + " 필수 입력 사항입니다.\n";
            wrestFld = fld;
        }
    }
}

// 최소 길이 검사
function wrestMinlength(fld)
{
    var len = fld.getAttribute("minlength");
    if (fld.value.length < len) {
        if (wrestFld == null) {
            wrestMsg = wrestItemname(fld) + " :  최소 " + len + "자 이상 입력하세요.\n";
            wrestFld = fld;
        }
    }
}

function wrestMinValue(fld)
{
	var mi = parseInt(fld.getAttribute("minvalue"));
    if ( parseInt(fld.value) < mi ) {
        if (wrestFld == null) {
            wrestMsg = wrestItemname(fld) + " : " + mi+ "세 이상 만 신청가능 합니다.\n";
            wrestFld = fld;
        }
    }
}

function wrestMaxValue(fld)
{
	var ma = parseInt(fld.getAttribute("maxvalue"));
	var msg	= fld.getAttribute("msg");
	
    if ( parseInt(fld.value) >= ma ) {
        if (wrestFld == null) {
			if (msg!=null && msg!="")
			{
				wrestMsg = wrestItemname(fld) + " : " + ma+ " "+msg+".\n";
			}
			else{
				wrestMsg = wrestItemname(fld) + " : " + ma+ "세 이하 만 신청가능 합니다.\n";
			}
            
            wrestFld = fld;
        }
    }
}

// 전자메일주소 형식 검사
function wrestEmail(fld) 
{
    if (!wrestTrim(fld)) return;

    //var pattern = /(\S+)@(\S+)\.(\S+)/; 전자메일주소에 한글 사용시
    var pattern = /([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/;
    if (!pattern.test(fld.value)) {
        if (wrestFld == null) {
            wrestMsg = wrestItemname(fld) + " : 전자메일주소 형식이 아닙니다.\n";
            wrestFld = fld;
        }
    }
}

function wrestJumin (fld1, fld2) 
{
    if (!wrestTrim(fld1)) return;
    if (!wrestTrim(fld2)) return;

	var chk = 0;
	var yy  = fld1.value.substring(0,2);
	var mm  = fld1.value.substring(2,4);
	var dd  = fld1.value.substring(4,6);
	var sex = fld2.value.substring(0,1);

	if ((fld1.value.length!=6)||(yy <25||mm <1||mm>12||dd<1||dd>31)){
		wrestMsg = wrestItemname(fld1) + " 올바른 주민등록번호가 아닙니다.\n";
		wrestFld = fld1;
	}

	if ((sex != 1 && sex !=2 )||(fld2.value.length != 7 )){
		wrestMsg = wrestItemname(fld2) + " 올바른 주민등록번호가 아닙니다.\n";
		wrestFld = fld2;
	}

	for(var i = 0; i <=5 ; i++){
		chk = chk + ((i%8+2) * parseInt(fld1.value.substring(i,i+1)));
	}
	for (var i = 6; i <=11 ; i++){
		chk = chk + ((i%8+2) * parseInt(fld2.value.substring(i-6,i-5)));
	}

	chk = 11 - (chk %11);
	chk = chk % 10;

	if (chk != fld2.value.substring(6,7)){
		//wrestMsg = wrestItemname(fld2) + " 올바른 주민등록번호가 아닙니다.\n";
		wrestMsg = " 올바른 주민등록번호가 아닙니다.\n";
		wrestFld = fld1;
	}	
}

function wrestPassword(fld1, fld2) 
{
    if (!wrestTrim(fld1)) return;
    if (!wrestTrim(fld2)) return;

	if (fld1.value != fld2.value) {
		wrestMsg = "비밀번호가 동일하지 않습니다.\n";
		wrestFld = fld1;
	}
}

function wrestNospace(fld)
{
    var pattern = /(\s)/g; // \s 공백 문자
    if (pattern.test(fld.value)) {
        if (wrestFld == null) {
            wrestMsg = wrestItemname(fld) + " 공백이 없어야 합니다.\n";
            wrestFld = fld;
        }
    }
}

// 숫자인지검사 
function wrestNumeric(fld) 
{ 
    if (fld.value.length > 0) { 
        for (i = 0; i < fld.value.length; i++) { 
			var chr = fld.value.substr(i,1);
            if (chr < '0' || chr > '9') { 
                wrestMsg = wrestItemname(fld) + " 숫자가 아닙니다.\n"; 
                wrestFld = fld; 
            }
        }
    }
}

// 영문자 검사 
function wrestAlpha(fld) 
{ 
    if (!wrestTrim(fld)) return; 

    var pattern = /(^[a-zA-Z]+$)/; 
    if (!pattern.test(fld.value)) { 
        if (wrestFld == null) { 
            wrestMsg = wrestItemname(fld) + " 영문이 아닙니다.\n"; 
            wrestFld = fld; 
        } 
    } 
} 

// 영문자와 숫자 검사 
function wrestAlphaNumeric(fld) 
{ 
   if (!wrestTrim(fld)) return; 
   var pattern = /(^[a-zA-Z0-9]+$)/; 
   if (!pattern.test(fld.value)) { 
       if (wrestFld == null) { 
           wrestMsg = wrestItemname(fld) + " 영문 또는 숫자가 아닙니다.\n"; 
           wrestFld = fld; 
       } 
   } 
}

// SELECTBOX 선택 여부 선택..
function wrestIsSelected(fld){ 
	if( fld.selectedIndex == 0 ) {
		   if (wrestFld == null) { 
			   wrestMsg = " 선택해주세요.\n"; 
			   wrestFld = fld; 
		   } 
	}
}

function radioIsCheked(fld,obj) {
    var whichitem = 0;
	var rdofrm = eval('document.'+obj.name+'.'+fld.name);

	for ( i=0;i<rdofrm.length;i++ ) {
		if (rdofrm[i].checked) {
			 whichitem = 1;
			 break;
		  }
	}

	if( whichitem == 0 ) 
	{
		   if (wrestFld == null) { 
				wrestMsg = wrestItemname(fld) + " 선택이 없습니다.\n"; 
			    wrestFld = fld; 
		   } 
	}
}

function checkboxIsCheked(fld,obj) 
{
    var whichitem = 0;
	var rdofrm= obj.elements[fld.name];
	for ( i=0;i<rdofrm.length;i++ ) 
	{
		if (rdofrm[i].checked) {
			 whichitem = 1;
			 break;
		  }
	}
	if( whichitem == 0 ) 
	{
		   if (wrestFld == null) { 
				wrestMsg = wrestItemname(fld) + " 선택이 없습니다.\n"; 
			    wrestFld = fld; 
		   } 
	}
}

function wrestSubmit()
{
    wrestMsg = "";
    wrestFld = null;
    var attr = null;
    var k    = 0;

    for (var i = 0; i < this.elements.length; i++) 
	{
        if (this.elements[i].type == "text" || 
            this.elements[i].type == "file" || 
            this.elements[i].type == "password" ||
            this.elements[i].type == "textarea" ||
			this.elements[i].type == "select-one" ||
			this.elements[i].type == "checkbox" ||
			this.elements[i].type == "radio"  )	{
            for (var j = 0; j < arrAttr.length; j++) 
			{
                this.elements[i].style.backgroundColor = wrestFldDefaultColor;

                if (this.elements[i].getAttribute(arrAttr[j]) != null) 
				{
					var k = i -1;
                    switch (arrAttr[j]) 
					{
						case "selected" :	
							wrestIsSelected(this.elements[i]); 
							break;		// 
						case "rdo" :  
							radioIsCheked(this.elements[i],this); 
							break;			// 
						case "cbo" :  
							checkboxIsCheked(this.elements[i],this); 
							break;			// 
                        case "required"  : 
							wrestRequired (this.elements[i]); 
							break;
                        case "trim"      : 
							wrestRequired (this.elements[i]); 
							break;
                        case "minlength" : 
							wrestMinlength(this.elements[i]); 
							break;
						case "minvalue" : 
							wrestMinValue(this.elements[i]); 
							break;
						case "maxvalue" : 
							wrestMaxValue(this.elements[i]); 
							break;
                        case "email"     : 
							wrestEmail    (this.elements[i]); 
							break;
                        case "nospace"   : 
							wrestNospace  (this.elements[i]); 
							break;
                        case "jumin"     : 
							wrestJumin    (this.elements[k], this.elements[i]); 
							break;
                        case "password"  : 
							wrestPassword (this.elements[k], this.elements[i]); 
							break;
                        case "numeric"      : 
							wrestNumeric(this.elements[i]); 
							break; 
                        case "alpha"        : 
							wrestAlpha(this.elements[i]); 
							break; 
                        case "alphanumeric" : 
							wrestAlphaNumeric(this.elements[i]); 
							break; 
                        default : 
							break;
                    }
                }
				if (wrestMsg!="") break;
            }
        }
		if (wrestMsg!="") break;
    }


    if (wrestFld != null) {
        alert(wrestMsg);
        //wrestFld.style.backgroundColor = wrestFldBackColor;
        wrestFld.focus();
        return false;
    }

    if (this.oldsubmit && this.oldsubmit() == false)  {
        return false;
    }
	// return false;
    return true;
}

function Initialized()
{
    for (var i = 0; i < document.forms.length; i++) {
        if (document.forms[i].onsubmit) document.forms[i].oldsubmit = document.forms[i].onsubmit;
        document.forms[i].onsubmit = wrestSubmit;
        for (var j = 0; j < document.forms[i].elements.length; j++) {
            if (document.forms[i].elements[j].getAttribute("required") != null) {
                //document.forms[i].elements[j].className = "wrest_required";
                //document.forms[i].elements[j].style.backgroundPosition = "top right";
                //document.forms[i].elements[j].style.backgroundRepeat = "no-repeat";
            }
        }
    }
}

Initialized();