jValid=function(el,argArray){var args=[];for(var i=1;i<arguments.length;i++){if(arguments[i])args.push(arguments[i]);}return new formvalid(el,args);};formvalid=function(el,arrs){this.validNode=util.getEl(el);if(!this.validNode){jAlert(el+' 폼이 없습니다. (formvalid)');return;}this.labels=this.getLabel();this.error=false;var arrerr=false;var arrlen=0;for(var i=0;i<arrs.length;i++){arrlen=arrs[i].length;if(arrlen<2)continue;switch(arrs[i][0]){case 'trim':if(arrlen==2)this.trim(arrs[i][1]);else arrerr=true;break;case 'replace':if(arrlen==4)this.replace(arrs[i][1],arrs[i][2],arrs[i][3]);else arrerr=true;break;case 'text':if(arrlen==2)this.text(arrs[i][1]);else arrerr=true;break;case 'radio':if(arrlen==2)this.radio(arrs[i][1]);else arrerr=true;break;case 'combo':if(arrlen==2)this.combo(arrs[i][1]);else arrerr=true;break;case 'byte':if(arrlen==2)this.byte(arrs[i][1]);else arrerr=true;break;case 'short':if(arrlen==2)this.short(arrs[i][1]);else arrerr=true;break;case 'int':if(arrlen==2)this.int(arrs[i][1]);else if(arrlen==3)this.int(arrs[i][1],true);else arrerr=true;break;case 'long':if(arrlen==2)this.long(arrs[i][1]);else arrerr=true;break;case 'decimal':if(arrlen==2)this.decimal(arrs[i][1]);else arrerr=true;break;case 'tel':if(arrlen==2)this.tel(arrs[i][1]);else if(arrlen==3)this.tel(arrs[i][1],arrs[i][2]);else arrerr=true;break;case 'hp':if(arrlen==2)this.hp(arrs[i][1]);else if(arrlen==3)this.hp(arrs[i][1],arrs[i][2]);else arrerr=true;break;case 'email':if(arrlen==2)this.email(arrs[i][1]);else if(arrlen==3)this.email(arrs[i][1],arrs[i][2]);else arrerr=true;break;case 'date':if(arrlen==2)this.date(arrs[i][1]);else if(arrlen==3)this.date(arrs[i][1],arrs[i][2]);else arrerr=true;break;case 'jumin':if(arrlen==2)this.jumin(arrs[i][1]);else if(arrlen==3)this.jumin(arrs[i][1],arrs[i][2]);else arrerr=true;break;case 'pattern':if(arrlen==5)this.pattern(arrs[i][1],arrs[i][2],arrs[i][3],arrs[i][4]);else arrerr=true;break;case 'len':if(arrlen==3)this.len(arrs[i][1],arrs[i][2]);else if(arrlen==4)this.len(arrs[i][1],arrs[i][2],arrs[i][3]);else arrerr=true;break;case 'if':if((arrlen==3||arrlen==4)&&arrs[i][1]==true)if(arrlen==3)this.warn(arrs[i][2]);else if(arrlen==4)this.warn(arrs[i][2],arrs[i][3]);break;default:this.toAlert(null,null,arrs[i][0]+' 은 잘못된 검증자입니다.');break;}if(arrerr)this.toAlert(arrs[i][1],1,'잘못된 검증자입니다.');if(this.error)break;}};formvalid.prototype={getLabel:function(){var labels=[];var labelNodes=this.validNode.getElementsByTagName('label');var labelNode;var labelForValue;var imgNodes;for(var i=0;i<labelNodes.length;i++){labelNode=labelNodes.item(i);labelForValue=labelNode.getAttribute('for')?labelNode.getAttribute('for'):labelNode.getAttribute('htmlFor');if(labelForValue){imgNodes=labelNode.getElementsByTagName('img');if(imgNodes.length>0&&imgNodes.item(0).getAttribute('alt')&&imgNodes.item(0).getAttribute('alt').length>0)labels[labelForValue]=imgNodes.item(0).getAttribute('alt');else labels[labelForValue]=labelNode.innerHTML;}}return labels;},getNode:function(name,mode){if(this.error)return null;var node=(typeof(name)).toUpperCase()=='STRING'?this.validNode.elements[name]:name;if(!node){this.toAlert(null,null,name+' 필드가 없습니다.');return null;}var s=node.value.replace(/(^\s*)|(\s*$)/gi,'');/* if(mode=='number'||mode=='numberAllowMinus'||mode=='decimal'){s=s.replaceAll(' ','').replaceAll(',','');if(s.length==0){this.toAlert(name,2,'입력해 주세요.');return null;}else if(mode=='number'&&!(/^[0-9]+$/.test(s))){this.toAlert(name,1,'숫자로만 입력해 주세요.');return null;}else if(mode=='decimal'&&!(/^[0-9.]+$/.test(s))){this.toAlert(name,1,'숫자와 . 로만 입력해 주세요.');return null;}else if(mode=='decimal'){if(s.indexOf('.')<0)s+='.0';else if(s.indexOf('.')==0)s='0'+s;else if(s.lastIndexOf('.')==s.length-1)s+='0';}}*/ if(mode=='number'||mode=='numberAllowMinus'||mode=='decimal'){s=s.replaceAll(' ','').replaceAll(',','');var isMinus=false;if(mode=='numberAllowMinus'&&s.indexOf('-')==0){isMinus=true;s=s.substring(1);}if(s.length==0){this.toAlert(name,2,'입력해 주세요.');return null;}else if(mode.indexOf('number')==0&&!(/^[0-9]+$/.test(s))){this.toAlert(name,1,'숫자로만 입력해 주세요.');return null;}else if(mode=='decimal'&&!(/^[0-9.]+$/.test(s))){this.toAlert(name,1,'숫자와 . 로만 입력해 주세요.');return null;}else if(mode=='decimal'){if(s.indexOf('.')<0)s+='.0';else if(s.indexOf('.')==0)s='0'+s;else if(s.lastIndexOf('.')==s.length-1)s+='0';}if(isMinus&&Number(s)!=0)s='-'+s;}else if(mode!='replaceNone'){s=s.replaceAll('<xmp>','');s=s.replaceAll('</xmp>','');s=s.replaceAll('`','｀');s=s.replaceAll('\\$','＄');s=s.replaceAll('<!\\[CDATA\\[','<cdata>');s=s.replaceAll('<!\\[cdata\\[','<cdata>');s=s.replaceAll('\\]\\]>','</cdata>');if(node.tagName.toUpperCase()!='TEXTAREA')s=s.replaceAll("'","＇").replaceAll('"','＂').replaceAll(';','；');}else s=s.replaceAll('\\$','＄');node.value=s;return node;},toAlert:function(name,josacode,errmsg){if(name){var node;if((typeof(name)).toUpperCase()=='STRING'){node=this.validNode.elements[name];}else{node=name;name=name.getAttribute('name');}if(node&&((node.nodeName.toUpperCase()=='INPUT'&&(node.getAttribute('type').toUpperCase()=='TEXT'||node.getAttribute('type').toUpperCase()=='PASSWORD')&&!node.getAttribute('readonly'))||node.nodeName.toUpperCase()=='TEXTAREA'))J_FocusEl=node;var label=this.labels[name];if(!label)label=name;if(label&&josacode!=null)errmsg=label.addJosa(josacode)+' '+errmsg;}jAlert(errmsg);this.error=true;},trim:function(name){var node=this.getNode(name);if(!node)return;},replace:function(name,s1,s2){var node=this.getNode(name);if(!node||arguments.length!=3)return;node.value=node.value.replace(new RegExp(s1,'g'),s2);},text:function(name){var node=this.getNode(name);if(!node)return;if(node.value.length==0)this.toAlert(name,2,'입력해 주세요.');},radio:function(name){var node=this.getNode(name);if(!node)return;if(node.value.length==0)this.toAlert(name,2,'선택해 주세요.');},combo:function(name){var node=this.getNode(name);if(!node)return;if(node.value.length==0)this.toAlert(name,2,'선택해 주세요.');},byte:function(name){var node=this.getNode(name,'number');if(!node)return;if(Number(node.value)>127)this.toAlert(name,1,'0 ~ 127 사이의 숫자로 입력해 주세요.');},short:function(name){var node=this.getNode(name,'number');if(!node)return;if(Number(node.value)>32767)this.toAlert(name,1,'0 ~ 32,767 사이의 숫자로 입력해 주세요.');},int:function(name,isAllowMinus){var node=isAllowMinus?this.getNode(name,'numberAllowMinus'):this.getNode(name,'number');if(!node)return;if(isAllowMinus&&(Number(node.value)<-2147483648||Number(node.value)>2147483647))this.toAlert(name,1,'-2,147,483,648 ~ 2,147,483,647 (약 21억) 사이의 숫자로 입력해 주세요.');else if(Number(node.value)>2147483647)this.toAlert(name,1,'0 ~ 2,147,483,647 (약 21억) 사이의 숫자로 입력해 주세요.');},long:function(name){var node=this.getNode(name,'number');if(!node)return;var s=node.value;var maxnum='9223372036854775807';var isError=false;if(s.length>maxnum.length)isError=true;else if(s.length==maxnum.length){var n1=0;var n2=0;for(var i=0;i<s.length;i++){n1=Number(s.substring(i,i+1));n2=Number(maxnum.substring(i,i+1));if(n1<n2)break;else if(n1>n2)isError=true;}}if(isError)this.toAlert(name,1,'0 ~ 9,223,372,036,854,775,807 사이의 숫자로 입력해 주세요.');},decimal:function(name){var node=this.getNode(name,'decimal');if(!node)return;var s=node.value;var sS=s.split('.');if(sS.length>2||s.indexOf('.')==0||s.lastIndexOf('.')==s.length-1)this.toAlert(name,1,'잘못된 값입니다. (입력 예) 10.5');},tel:function(name,isRequire){var node=this.getNode(name);if(!node)return;node.value=node.value.replaceAll(' ','');var s=node.value;if(isRequire!=false&&s.length==0)this.toAlert(name,2,'입력해 주세요.');else if(s.length>0&&!(/^([0]{1}[0-9]{1,2}[-]{1}[1-9]{1}[0-9]{2,3}[-]{1}[0-9]{4})$/.test(s)))this.toAlert(name,0,'올바르지 않습니다.<br />지역번호와 - 를 포함하여 입력합니다.<br />(입력 예) 02-1234-5678');},hp:function(name,isRequire){var node=this.getNode(name);if(!node)return;node.value=node.value.replaceAll(' ','');var s=node.value;if(isRequire!=false&&s.length==0)this.toAlert(name,2,'입력해 주세요.');else if(s.length>0&&!(/^([0]{1}[1]{1}[016789]{1}[-]{1}[1-9]{1}[0-9]{2,3}[-]{1}[0-9]{4})$/.test(s)))this.toAlert(name,0,'올바르지 않습니다. (입력 예) 010-1234-5678');},email:function(name,isRequire){var node=this.getNode(name);if(!node)return;node.value=node.value.replaceAll(' ','');var s=node.value;if(isRequire!=false&&s.length==0)this.toAlert(name,2,'입력해 주세요.');else if(s.length>0&&!(/^[_a-zA-Z0-9-.]+@[.a-zA-Z0-9-]+[.]{1}[a-zA-Z]+$/.test(s)))this.toAlert(name,0,'올바르지 않습니다. (입력 예) my@mail.com');},date:function(name,isRequire){var node=this.getNode(name);if(!node)return;node.value=node.value.replaceAll(' ','');var s=node.value;if(isRequire!=false&&s.length==0)this.toAlert(name,2,'입력해 주세요.');else if(s.length>0&&!(/^([1-9]{1}[0-9]{3}[-]{1}[0-1]{1}[0-9]{1}[-]{1}[0-3]{1}[0-9]{1})$/.test(s)))this.toAlert(name,0,'올바르지 않습니다. (입력 예) '+(new Date()).getFullYear()+'-01-01');},jumin:function(name,isRequire){var node=this.getNode(name);if(!node)return;node.value=node.value.replaceAll(' ','');var s=node.value;if(isRequire!=false&&s.length==0)this.toAlert(name,2,'입력해 주세요.');else if(s.length>0){var x=false;if(Number(s)&&s.length==13){s=s.substring(0,6)+'-'+s.substring(6,13);node.value=s;}if(s.length!=14)x=true;if(!(/^([0-9]{6})-?([0-9]{7})$/.test(s)))x=true;s=RegExp.$1+RegExp.$2;var sum=0;var last=s.charCodeAt(12)-0x30;var bases="234567892345";for(var i=0;i<12;i++){if(isNaN(s.substring(i,i+1)))x=true;sum+=(s.charCodeAt(i)-0x30)*(bases.charCodeAt(i)-0x30);}var mod=sum%11;if((11-mod)%10!=last)x=true;if(x)this.toAlert(name,0,'올바르지 않습니다.<br />(입력 예) 123456-1234567');}},pattern:function(name,isRequire,pattern,errmsg){var node=this.getNode(name);if(!node)return;var s=node.value;if(isRequire!=false&&s.length==0)this.toAlert(name,2,'입력해 주세요.');else if(s.length>0&&!(pattern.test(s)))this.toAlert(name,null,errmsg);},len:function(name,minlen,maxlen){var node=this.getNode(name,'replaceNone');if(!node)return;var nowlen=node.value.length;if(minlen&&minlen>0&&nowlen<minlen)this.toAlert(name,2,minlen.toString().toFormatNumber()+' 글자 이상 입력해 주세요.<br />(현재 '+nowlen.toString().toFormatNumber()+' 글자)');else if(maxlen&&maxlen>0&&nowlen>maxlen)this.toAlert(name,2,maxlen.toString().toFormatNumber()+' 글자 이내로 입력해 주세요.<br />(현재 '+nowlen.toString().toFormatNumber()+' 글자)');},warn:function(msg,focusname){if(!this.error&&msg&&msg.length>0)this.toAlert(focusname,null,msg);}};
