/**
***************************************************************************
  ÇÁ·Î±×·¥ Á¤º¸
***************************************************************************

* Title : EsÆûÃ¼Å©

* File : ESvalidator.js

* Date : 2010-10-01

* Update History :

* Author :
  - ¼ö¸®µµ¶û

* E-Mail :
  - impactlife@naver.com

* Summary :

	jquery ÇÊ¿äÇÔ - Å×½ºÆ®È¯°æ jquery-1.3.2

	< Áö¿ø ÅÂ±×¸ñ·Ï >
	label : string [Ä¸¼Ç],
	required : true|false,
	memberid : true|false,
	minlength : int,
	eqaul : string [target element name],
	hangul : true|false [¿Ï¼ºÇüÇÑ±Û],
	hangul2 : true|false [Á¶ÇÕÇüÇÑ±Û : ÀÚÀ½¸ðÀ½¸¸ ÀÖ´Â°Íµµ °¡´É],
	email : string [ÀÌ¸ÞÀÏ],
	phonenumber : string [ÀüÈ­¹øÈ£ : 111-1111-1111 Çü½Ä]
	groupcheck : true|false [radio, checkbox ¿¡¼­ ÇÏ³ªÀÌ»ó ÇÊ¼ö ÀÔ·ÂÀÌ ¿ä±¸µÉ¶§],
	jumin : true|false [ÁÖ¹Î¹øÈ£ : '-' Æ÷ÇÔµµ °¡´É]
	taxno : true|false [»ç¾÷ÀÚ¹øÈ£ : '-' Æ÷ÇÔµµ °¡´É]
	zipcode : true|false [¿ìÆí¹øÈ£ : 111-111 Çü½Ä]
	uniq : string [ÀÌ¹Ì Á¸ÀçÇÏ´Â °ªÀÎÁö Ã¼Å© : ajax ·Î È£ÃâÇÒ url,
		ajax È£Ãâ°á°ú´Â ¹®ÀÚ¿­ 'true'(»ç¿ëÇØµµµÊ) ¶Ç´Â 'false'(»ç¿ëÇÒ ¼ö ¾øÀ½)¿©¾ß ÇÔ]

* Example :

<form name="formname" id='formname' action="http://www.naver.com" method="post">
    ¾ÆÀÌµð : <input type="text" name="mb_id" class="button {label:'È¸¿ø¾ÆÀÌµð',required:true,memberid:true,minlength:4,uniq:'existcheck.php'}" /><br />
    ºñ¹Ð¹øÈ£ : <input type="text" name="mb_pw" class="{label:'ºñ¹Ð¹øÈ£',required:true,minlength:4}" /><br />
    ºñ¹Ð¹øÈ£È®ÀÎ : <input type="text" name="mb_pw2" class="{label:'ºñ¹Ð¹øÈ£È®ÀÎ',equal:'mb_pw'}" /><br />
    ÀÌ¸§ : <input type="text" name="mb_name" class="{label:'ÀÌ¸§',required:true,hangul2:true}" /><br />
    ÀÌ¸ÞÀÏ : <input type="text" name="mb_email" class="{label:'ÀÌ¸ÞÀÏ',email:true}" /><br />
    ÀüÈ­¹øÈ£ : <input type="text" name="mb_tel" class="{label:'ÀüÈ­¹øÈ£',required:true,phonenumber:true}" /><br />
	Ãë¹Ì : <input type="checkbox" name="mb_recemail[]" value="Ãà±¸" class="{label:'Ãë¹Ì',groupcheck:true}" />Ãà±¸,
	<input type="checkbox" name="mb_recemail[]" value="¾ß±¸" />¾ß±¸,
	<input type="checkbox" name="mb_recemail[]" value="³ó±¸" />³ó±¸
	<br />
	°¡ÀÔ¼±¹°:
	<input type="radio" name="mb_gift" class="{label:'°¡ÀÔ¼±¹°',groupcheck:true}" value="µÈÀå" />µÈÀå,
	<input type="radio" name="mb_gift" value="°íÃßÀå" />°íÃßÀå,
	<input type="radio" name="mb_gift" value="½ÓÀå" />½ÓÀå
	<br />
	Á÷¾÷ : <select name="mb_job" class="{label:'Á÷¾÷',required:true}">
		<option value=''>== ¼±ÅÃ ==</option>
		<option value='ÀâºÎ'>ÀâºÎ</option>
		<option value='ÈÄ·Î±×·¡¸Ó'>ÈÄ·Î±×·¡¸Ó</option>
		<option value='µðÀÚÀÌ³Ê'>µðÀÚÀÌ³Ê</option>
		</select><br />
	½ÅÃ¼Æ÷±â°¢¼­ : <input type="checkbox" name="mb_agree" class="{label:'½ÅÃ¼Æ÷±â°¢¼­',required:true}" /> µ¿ÀÇÇÕ´Ï´Ù<br />
	ÁÖ¹Î¹øÈ£ : <input type="text" name="mb_jumin" class="{label:'ÁÖ¹Î¹øÈ£',required:true,jumin:true,minlength:13}" /><br />
	»ç¾÷ÀÚµî·Ï¹øÈ£ : <input type="text" name="mb_taxno" class="{label:'»ç¾÷ÀÚµî·Ï¹øÈ£',required:true,taxno:true}" /><br />
	¿ìÆí¹øÈ£ : <input type="text" name="mb_zipcode" class="{label:'¿ìÆí¹øÈ£',required:true,zipcode:true}" /><br />
	<input type="submit" value='aaa' />
</form>
****************************************************************************
**/

(function($){

	$.validator = function() {
		this.form = null;
		this.error = {result:false,type:'alert',msg:null}
	};

	$.extend($.validator, {

		//===========================================================================
		// Prototype
		//===========================================================================
		prototype:{

			validCheck:function(f){
				this.form = f;
				var validator = this;
				var ele = f.elements;
				for(var i=0;i<ele.length;i++){
					try
					{
						if ($(ele[i]).attr('type') != 'select-multiple') {
						ele[i].value = $.validator.bothTrim(ele[i].value);
						}

						if(!validator.valid(ele[i])) return false;	
					}
					catch (e)
					{
					//	return false;	
					}
				}
			},

			valid:function(ele){
				var validator = this;
				var pattern = /({.+?})/;
				var cvalue = $(ele).attr('class');
				var cls = cvalue.match(pattern);
				if(cls != null){
					//Å¬·¡½º °³¼ö¸¸Å­
					for(var i=0;i<cls.length;i++){
						var orule = eval('(' + cls[i] + ')');
						//Å¬·¡½º¾ÈÀÇ ·ê °³¼ö¸¸Å­ ·çÇÁ
						for(var key in orule){
							if(key=='label') continue;
							if(!orule.required && $(ele).val()=='') continue;
							var mtdname = 'val' + $.validator.ucfirst(key);
							var existMethod = this.hasMethod(mtdname);
							if(existMethod==undefined){
								this.error.result = false;
								this.error.msg = 'class ¼Ó¼º ¾È¿¡ Á¸ÀçÇÏÁö ¾Ê´Â ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿´½À´Ï´Ù [' + key + ']';
							}else{
								
								validator[mtdname](ele, orule);
							}

							if(this.error.result){
								this.invalidProcess(ele, orule);
								return false;
							}
						}
					};
				}
				return true;
			},

			hasMethod:function(methodname){
				return this && this[methodname] && this[methodname] instanceof Function;
			},

			//Ã³¸®ÇÏ°í ½ÍÀºµ¥·Î º¯°æÇÏ¸é µÊ(Áö±ÝÀº °Á alertÃ¢)
			invalidProcess:function(ele, o){
				$('.es_error').remove();
				if(this.error.type == 'print'){
					$(ele.parentNode).append("<span class='es_error' style='color:blue;font-weight:bold'>" + this.error.msg + "</span>");
					$(ele).focus();
				}else{
					alert(this.error.msg);
					$(ele).focus();
				}
				this.initError();
			},

			initError:function(){
				this.error.result = false;
				this.error.type = 'alert';
				this.error.msg = null;
			},

			valRequired:function(ele, o){
				if(!o.required) return;

				if($(ele).attr('type')=='checkbox' || $(ele).attr('type')=='radio'){
					if(!ele.checked){
						this.error.result = true;
						this.error.type = 'alert';
						this.error.msg = '[' + o.label + '] ÇÊ¼ö Ã¼Å© Ç×¸ñÀÔ´Ï´Ù';
					}
				}else if ($(ele).attr('type')=='textarea'){
						
						if ($(ele).attr('name') == "DT202_01"){
							$(ele).value = myeditor1.outputBodyHTML();
						}
						else{
							$(ele).value = myeditor.outputBodyHTML();
						}

						if($(ele).val()==''){
							this.error.result = true;
							this.error.type = 'alert';
							this.error.msg = '[' + o.label + '] ÇÊ¼ö Ç×¸ñÀÔ´Ï´Ù';
						}
				}else if ($(ele).attr('type')=='select-multiple'){

						if($(ele).val()==null){
							this.error.result = true;
							this.error.type = 'alert';
							this.error.msg = '[' + o.label + '] ÇÊ¼ö Ç×¸ñÀÔ´Ï´Ù';
						}
				}else{
					if($(ele).val()==''){
						this.error.result = true;
						this.error.type = 'alert';
						this.error.msg = '[' + o.label + '] ÇÊ¼ö Ç×¸ñÀÔ´Ï´Ù';
					}
				}
			},

			valEqual:function(ele, o){
				if($(ele).val() != $(this.form[o.equal]).val()){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] °ªÀÌ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù';
				}
			},

			valMinlength:function(ele, o){
				if ($(ele).val().length < o.minlength){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] ÃÖ¼Ò ' + o.minlength + 'ÀÚ ÀÌ»ó ÀÔ·ÂÇÏ¼¼¿ä.';
				}
			},

			valEmail:function(ele, o){
				var pattern = /([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/;
				if (!pattern.test($(ele).val())){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] Àß¸øµÈ ÀÌ¸ÞÀÏ·Î ÃßÁ¤µË´Ï´Ù.';
				}
			},

			valHangul:function(ele, o){
				var pattern = /[^°¡-ÆR]/;
				if(pattern.test($(ele).val())){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] ÇÑ±Û¸¸ ÀÔ·Â °¡´ÉÇÕ´Ï´Ù';
				}
			},

			valHangul2:function(ele, o){
				var pattern = /[^°¡-ÆR¤¡-¤¾¤¿-¤Ó]/;
				if(pattern.test($(ele).val())){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] ÇÑ±Û¸¸ ÀÔ·Â °¡´ÉÇÕ´Ï´Ù';
				}
			},

			valMemberid:function(ele, o){
				var pattern = /^[^a-z0-9]|[^a-z0-9_]/;
				if (pattern.test($(ele).val())){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label +
						'] È¸¿ø¾ÆÀÌµð Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù\n\n' +
						'(¾ËÆÄºª¼Ò¹®ÀÚ, ¼ýÀÚ, \'_\' ¸¸ °¡´ÉÇÕ´Ï´Ù. Ã¹±ÛÀÚ ¿µ¹®ÀÚ,¼ýÀÚ)';
				}
			},

			valNospace:function(ele, o){
				var pattern = /(\s)/g;
				if(pattern.test($(ele).val())){
					this.error.result = true;
					this.error.msg = '[' + o.label + '] °ø¹é¹®ÀÚ´Â ÀÔ·ÂÇÒ ¼ö ¾ø½À´Ï´Ù';
				}

			},

			valNumeric:function(ele, o){

				if(!o.numeric) return;
				
				var pattern = /[^0-9]/;
				if(pattern.test($(ele).val())){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] ¼ýÀÚ¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù';
				}
				
//				var pattern = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;
//				if(!pattern.test($(ele).val())){
//					this.error.result = true;
//					this.error.type = 'alert';
//					this.error.msg = '[' + o.label + '] ¼ýÀÚ¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù';
//				}

			},

			valAlpha:function(ele, o){
				var pattern = /[^a-z]/i;
				if(pattern.test($(ele).val())){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] ¿µ¹®ÀÚ¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù';
				}
			},

			valAlphanumeric:function(ele, o){
				var pattern = /[^a-z0-9]/i;
				if(pattern.test($(ele).val())){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] ¿µ¹®ÀÚ¿Í ¼ýÀÚ¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù';
				}
			},

			valAlphanumeric_:function(ele, o){
				var pattern = /[^a-z0-9_]/i;
				if(pattern.test($(ele).val())){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] ¿µ¹®ÀÚ, ¼ýÀÚ, \'-\' ¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù';
				}
			},

			valPhonenumber:function(ele, o){

				if(!o.phonenumber) return;
				var pattern = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;
				if(!pattern.test($(ele).val())){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] Àß¸øµÈ ¹øÈ£ °°½À´Ï´Ù';
				}

//				var pattern = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;
//				var pattern = /^[0-9]{10,11}$/;
//				if(!pattern.test($(ele).val())){
//					this.error.result = true;
//					this.error.type = 'alert';
//					this.error.msg = '[' + o.label + '] Àß¸øµÈ ¹øÈ£ °°½À´Ï´Ù';
//				}
			},

			valHangulalphanumeric:function(ele, o){
				var pattern = /[^°¡-ÆRa-z0-9]/i;
				if(pattern.test($(ele).val())){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] ÇÑ±Û, ¿µ¹®, ¼ýÀÚ¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù';
				}
			},

			// ÁÖ¹Îµî·Ï¹øÈ£ °Ë»ç (±×´©º¸µå¿¡ ÀÖ´ø°Å ¾à°£ ¼öÁ¤)
			valJumin:function(ele, o){
				var value = $(ele).val().replace(/[^\d]/g, '');
				var pattern = /\d{13}/;
				if (!pattern.test(value)) {
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] ÁÖ¹Î¹øÈ£ 13ÀÚ¸®¸¦ ÀÔ·ÂÇØ ÁÖ¼¼¿ä';
				}else{
					var sum_1 = 0;
					var sum_2 = 0;
					var at=0;
					var juminno = value;
					sum_1 = (juminno.charAt(0)*2)+
						(juminno.charAt(1)*3)+
						(juminno.charAt(2)*4)+
						(juminno.charAt(3)*5)+
						(juminno.charAt(4)*6)+
						(juminno.charAt(5)*7)+
						(juminno.charAt(6)*8)+
						(juminno.charAt(7)*9)+
						(juminno.charAt(8)*2)+
						(juminno.charAt(9)*3)+
						(juminno.charAt(10)*4)+
						(juminno.charAt(11)*5);
					sum_2=sum_1 % 11;

					if (sum_2 == 0)
						at = 10;
					else
					{
						if (sum_2 == 1) at = 11;
						else at = sum_2;
					}
					att = 11 - at;
					if (juminno.charAt(12) != att ||
						juminno.substr(2,2) < '01' ||
						juminno.substr(2,2) > '12' ||
						juminno.substr(4,2) < '01' ||
						juminno.substr(4,2) > '31' ||
						juminno.charAt(6) > 4){
						this.error.result = true;
						this.error.type = 'alert';
						this.error.msg = '[' + o.label + '] ¿Ã¹Ù¸¥ ÁÖ¹Îµî·Ï¹øÈ£°¡ ¾Æ´Õ´Ï´Ù';
					}
				}
			},

			//±Ü¾î ¿Ô´Âµ¥ ´©±¸´Ô²«Áö ±â¾ïÀÌ ¾È³² ¤Ì¤Ì
			valTaxno:function(ele, o){
				var value = $(ele).val().replace(/[^\d]/g, '');
				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] = value.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]){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] Àß¸øµÈ »ç¾÷ÀÚµî·Ï¹øÈ£ÀÔ´Ï´Ù';
				}
			},

			valGroupcheck:function(ele, o){
				var flag = false;
				ele = document.getElementsByName(ele.name);
				for(i=0;i<ele.length;i++) if(ele[i].checked) flag = true;

				if(!flag){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] ÃÖ¼ÒÇÑ ÇÏ³ªÀÌ»ó Ã¼Å©ÇÏ¼Å¾ß ÇÕ´Ï´Ù';
				}
			},

			valZipcode:function(ele, o){
				var pattern = /^\d{3}-?\d{3}($)/;
				if(!pattern.test($(ele).val())){
					this.error.result = true;
					this.error.type = 'alert';
					this.error.msg = '[' + o.label + '] ¿ìÆí¹øÈ£°¡ Àß¸øµÈ°Í °°½À´Ï´Ù';
				}
			},

			valUniq:function(ele, o){
				var validator = this;
				var data = {};
				data[$(ele).attr('name')] = encodeURIComponent($(ele).val());
				o.uniq = o.uniq;
				$.ajax({type:'post', async:false, url:o.uniq, data:data, success:function(data){
					if(data=='false'){
						validator.error.result = true;
						validator.error.type = 'print';
						validator.error.msg = 'ÀÌ¹Ì »ç¿ëÁßÀÔ´Ï´Ù';
					}
				}});
			}
		},

		//===========================================================================
		// Static ¸Þ½îµå
		//===========================================================================
		setResult:function(){
			var obj = {};
			obj.result = true;
			obj.msg = msg;
		},

		bothTrim:function(value){
			var pattern = /(^\s*)|(\s*$)/g;
			return value.replace(pattern, '');
		},

		ucfirst:function(value){
			str = value.toString();
			var x = str.split(/\s+/g);
			for (var i = 0; i < x.length; i++) {
				var parts = x[i].match(/(\w)(\w*)/);
				x[i] = parts[1].toUpperCase() + parts[2].toLowerCase();
			}
			return x.join(' ');
		}
	});

	$.extend({
		validate:function(){
			v = new $.validator();

			$(document.forms).each(function(){
				ref = this;
				$(this).submit(function(){
					//return v.validCheck(ref);

				returnData = v.validCheck(ref);

				 if(returnData!=false)
				 {
				  if (fileUpload_bool)
				  {
					  return fileUploadCheck();
				  }else
				  {
					return returnData; 
				  }
				 } else {
				  return false;
				 }

				});
			});
		}
	});
})(jQuery);

var fileUpload_bool = false;
$(function(){
	$.validate();

	
  try
  {
	if(fileUploadCheck) {
	
	}
	fileUpload_bool=true;
  } catch(e) {
	fileUpload_bool=false;
  }
});
//-->
