	var Validator = 
	{
		validate : function(form) 
		{
    	var elements = form.elements;
    	for(var i = 0; i <elements.length;i++) 
			{
				var el = elements[i];
				var classes = el.className.split(" ");
				for(var j = 0; j < classes.length; j++) 
				{
					// °¢ Å¬·¡½º ¸í
					var className = classes[j].replace(" ").replace("-","");
					// Å¬·¡½º¸í°ú ÀÏÄ¡ÇÏ´Â ¸Þ¼­µå°¡ ÀÖÀ¸¸é...
    			if(Validator[className]) 
					{
						var message = Validator[className](el.value);
						// ¿À·ù°¡ ÀÖÀ¸¸é ¸Þ½ÃÁö¸¦ ¹ÝÈ¯
						if(message) 
						{
							Validator._handleError(message, el);
							return false;
						}
					}
				}
    	}
			return true;
		},
		/**
		 * ¿À·ù Á¦¾î
		 * @param {String} message
		 * @param {HTMLFormElement} el
		 */
		_handleError : function(message, el) 
		{
			var title = Validator._getTitle(el);
			alert(title +"(Àº)´Â " + message);
			el.focus();
		}, 
		
		required : function(v) 
		{
			return !v ? "¹Ýµå½Ã ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù." : false;
		},
		validatenumber : function(v) 
		{
			return isNaN(v) || /^\s+$/.test(v) ? "¼ýÀÚ·Î ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù." : false;
		},
		validatedigits : function(v) 
		{			
			return isNaN(v) || /[^\d]/.test(v)? "¼ýÀÚ¸¸ ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù." : false;			
		},
		validatealpha : function(v) 
		{
			return /^[a-zA-Z]+$/.test(v) ? "¾ËÆÄ¹î¸¸ ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù." : false;
		},
		validatealphanum : function(v) 
		{
			return /\W/.test(v) ? "¾ËÆÄ¹î°ú ¼ýÀÚ¸¸ ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù." : false;
		},
		validatedate : function(v) 
		{
			var date = new Date(v);
			return isNaN(v) ? "¹Ù¸¥ ³¯Â¥¸¦ ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù." : false;
		},
		validateemail : function(v) 
		{
			return !/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v) ? "¹Ù¸¥ ÀÌ¸ÞÀÏ ÁÖ¼Ò¸¦ ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù." : false;
		},
		validateurl : function(v) 
		{
			return !/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v) ? "¹Ù¸¥ URLÀ» ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù." : false;
		},
		_getTitle : function (el) 
		{
			return el.title ? el.title : el.name;
		},
		validatebizno : function(bizID)  //»ç¾÷ÀÚµî·Ï¹øÈ£ Ã¼Å© 
		{ 
      // bizID´Â ¼ýÀÚ¸¸ 10ÀÚ¸®·Î ÇØ¼­ ¹®ÀÚ¿­·Î ³Ñ±ä´Ù. 
      var checkID = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5, 1); 
      var tmpBizID, i, chkSum=0, c2, remander; 
      bizID = bizID.replace(/-/gi,''); 
      for (i=0; i<=7; i++) chkSum += checkID[i] * bizID.charAt(i); 
      c2 = "0" + (checkID[8] * bizID.charAt(8)); 
      c2 = c2.substring(c2.length - 2, c2.length); 
      chkSum += Math.floor(c2.charAt(0)) + Math.floor(c2.charAt(1)); 
      remander = (10 - (chkSum % 10)) % 10 ; 
      if (Math.floor(bizID.charAt(9)) != remander) return "»ç¾÷ÀÚµî·Ï¹øÈ£°¡ Æ²¸³´Ï´Ù." ; // NO 
      return false;  //OK
    },
    validatejumin: function(v)
    {
       // ÁÖ¹Î¹øÈ£ÀÇ ÇüÅÂ¿Í 7¹øÂ° ÀÚ¸®(¼ºº°) À¯È¿¼º °Ë»ç
        var fmt = /^\d{6}-[1234]\d{6}$/;
        if (!fmt.test(v)) return "Àß¸øµÈ ÁÖ¹Îµî·Ï¹øÈ£ÀÔ´Ï´Ù.";
        
        // ³¯Â¥ À¯È¿¼º °Ë»ç
        var birthYear = (resno.charAt(7) <= "2") ? "19" : "20";
        birthYear += resno.substr(0, 2);
        var birthMonth = resno.substr(2, 2) - 1;
        var birthDate = resno.substr(4, 2);
        var birth = new Date(birthYear, birthMonth, birthDate);
        
        if ( birth.getYear() % 100 != resno.substr(0, 2) ||
              birth.getMonth() != birthMonth || birth.getDate() != birthDate) 
              return "Àß¸øµÈ ÁÖ¹Îµî·Ï¹øÈ£ÀÔ´Ï´Ù.";
              
        // Check Sum ÄÚµåÀÇ À¯È¿¼º °Ë»ç
        var buf = new Array(13);
        for ( i=0; i<6; i++)  buf[i] = parseInt(resno.charAt(i));
        for ( i=6; i<13; i++) buf[i] = parseInt(resno.charAt(i+1));
        var multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
        for ( i=0, sum=0; i<12; i++ ) sum += (buf[i] *= multipliers[i]);
        if ( (11-(sum%11))%10 != buf[12] ) return "Àß¸øµÈ ÁÖ¹Îµî·Ï¹øÈ£ÀÔ´Ï´Ù.";
        else return false;
    }
	}
