/**
* File name   : kjs.js 
* @author     :±è°æ´ö
* @Version    :1.4
*
* @History
* 2002.11.? ÃÊ±âÁ¦ÀÛ   ±è°æ´ö
* 2003.09.18 kjsOnlyCheck Ãß°¡
* 2004.03.11 ¹öÀü¾÷
* 2005.04.07 Ãß°¡
* 2005.04.14 envetnKeeper »èÁ¦..
* 2006.08.09 ±â´É Ãß°¡
* 2006.09.19 ÇÊ¼ö ÀÔ·Â ¹é±×¶ó¿î Ä®¶ó Ãß°¡
* 2006.12.13 money ¿¡¼­ stripMask ½Ã Ã³¸® ¾ÈµÇ´Â ¹®Á¦ ¼öÁ¤(¿ÀµÎ½Ä)
* 
* »ç¿ë¹ý
*       - required, required="¿¡·¯¸Þ¼¼Áö" , slct_required , moveFocus ='focus°¡ ÀÌµ¿ÇÒ obj name'                           
*         ÇÊµå¸¦ ÇÊ¼öÀÔ·ÂÀ¸·Î ¸¸µç´Ù.        
*                                                                                              
*       - mask="999-999",  stripMask(mask°¡ ÀÖÀ» °æ¿ì¿¡¸¸ »ç¿ë= submit ½Ã ¸¶½ºÅ©°¡ Ç®¸®¸é¼­ °ªÀÌ ³Ñ¾î°£´Ù. 
*          onkeyup="ee_on_keyup(this)"  °°ÀÌ »ç¿ë
*                                                                                                                  
*       - minlength ="7"                                                                       
*         ÃÖ¼ÒÀÚ¸®¼ö ÀÌ»ó ÀÔ·Â   
*                                                         
*       - date, date='9999-99-99',   dateErrMsg='¿¡·¯ ¸Þ¼¼Áö'                                                   
*          ³¯ÀÚ¸¦ ÀÔ·ÂÇÏ´Â ÇÊµåÀÇ °æ¿ì »ç¿ëÇÑ´Ù.                                      
*        
*       - isLower='ºñ±³µÉ obj name'  isLowerErrMsg='¿¡·¯ ¸Þ¼¼Áö'
*          ºñ±³µÇ´Â obj value°ªº¸´Ù Å©¸é ¿¡·¯ ¸Þ¼¼Áö¸¦ Ãâ·ÂÇÑ´Ù. 
*
*       - isHigher='ºñ±³µÉ obj name'  isHigherErrMsg='¿¡·¯ ¸Þ¼¼Áö'
*          ºñ±³µÇ´Â obj value°ªº¸´Ù  ÀÛÀ¸¸é ¿¡·¯ ¸Þ¼¼Áö¸¦ Ãâ·ÂÇÑ´Ù.
*
*       - isSame='ºñ±³µÉ obj name'  isSameErrMsg='¿¡·¯ ¸Þ¼¼Áö'
*          ºñ±³µÇ´Â obj value°ª°ú °°Áö ¾ÊÀ¸¸é ¿¡·¯ ¸Þ¼¼Áö¸¦ Ãâ·ÂÇÑ´Ù.
*
*       - upper   onkeyup="ee_on_keyup(this)"  °°ÀÌ »ç¿ë
*         ÀÔ·ÂµÈ value¸¦ ´ë¹®ÀÚ·Î ¹Ù²Û´Ù.
*
*       - lower    onkeyup="ee_on_keyup(this)"  °°ÀÌ »ç¿ë
*         ÀÔ·ÂµÈ value¸¦ ¼Ò¹®ÀÚ·Î ¹Ù²Û´Ù.
*
*       - isImage,   isImageErrMsg='¿¡·¯ ¸Þ¼¼Áö'
*         file Æû ÇÊµå¿¡¼­ ÀÌ¹ÌÁö¿¡¼­, jpg,gif ÆÄÀÏÃ¼Å©
*
*       - number  onkeyup="ee_on_keyup(this)"  °°ÀÌ »ç¿ë
*         ¼ýÀÚ¸¸ ÀÔ·Â°¡´ÉÇÏ´Ù.
*
*       - entSubmit='form Name' onkeyup ="ee_on_keyup(this)"
*         ÅØ½ºÆ® ¹Ú½º¿¡¼­ ¿£ÅÍ¸¦ ´­·¶À»°æ¿ì ÇØ¹æ ÆûÀ» submit ½ÃÅ²´Ù.
*
*       - envetnKeeper »èÁ¦
*          »ç¿ë¹æ¹ý º¯°æ
*           1. mask, date , number,upper, lower, money ÀÏ°æ¿ì onkeyup="ee_on_keyup(this)"
*           2. entSubmit ÀÏ°æ¿ì     onkeypress ="ee_on_keypress(this)"
* 
*       - money      onkeyup="ee_on_keyup(this)"  °°ÀÌ »ç¿ë
*         ±Ý¾× Ç¥½Ã. ex 3,000
* 
*       - email
* 		  ÀÌ¸ÞÀÏ Ã¼Å© 
* 
*       -jumin, jumin='2¹øÂ° ÁÖ¹Î ¹øÈ£ µÞÀÚ¸®  obj name'
* 			1.ÇÏ³ªÀÇ ÇÊµå·Î ¸¸ »ç¿ë½Ã¿¡´Â mask='999999-9999999' ¿Í ÇÔ²² ½áÁØ´Ù.
*           2.µÎ°³ÀÇ ÇÊµå·Î »ç¿ë½Ã¿¡´Â ÁÖ¹Î ¹øÈ£ µÞÀÚ¸® ÇÊµå ÀÌ¸§À» Àû¾îÁØ´Ù. 
* 
*       -csn, csn='2¹øÂ° obj name, 3¹øÂ° obj name'
*        »ç¾÷ÀÚ µî·Ï¹øÈ£ Ã¼Å©
* 			1.ÇÏ³ªÀÇ ÇÊµå·Î ¸¸ »ç¿ë½Ã¿¡´Â mask='999-99-99999' ¿Í ÇÔ²² ½áÁØ´Ù.
*           2.3°³ÀÇ ÇÊµå·Î »ç¿ë½Ã¿¡´Â »ç¾÷ÀÚ ¹øÈ£ 2¹øÀç 3¹øÂ° ÇÊµå ÀÌ¸§À» ÄÞ¸¶(,)·Î ±¸ºÐ ÇÏ¿© Àû¾îÁØ´Ù. 
* 
*       - alpha   
* 			¿µ¹®¸¸ ÀÔ·Â °¡´É 
* 
*       -  alpha_numbur   
*           ¿µ¹® ¼ýÀÚ¸¸ ÀÔ·Â °¡´É
*/

// Àü¿ªº¯¼ö¿Í »ó¼ö¸¦ Á¤ÀÇ
// ( ) [ ] { } < > " ' ` ~  $ ! # % ^ & @  , . ; :  \ / |  * = - ? ''
var KJS_DEFAULT_SPECIAL_CHAR  = /(\(|\)|\[|\]|\{|\}|\<|\>|\"|\'|\`|\~|\$|\!|\#|\%|\^|\&|\@|\,|\.|\;|\:|\\|\/|\||\*|\=|\-|\?|\s)*/g; 
var KJS_DEFAULT_BG_COLOR="#FFFFFF";
var KJS_ERROR_BG_COLOR="#FFFFFF";

function beforeKjs(){
    return true;
}
//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : kjsSubmit(form_name)
// ³»  ¿ë : ÀÔ·Â°ª Submit½Ã ¿¡·¯Ã¼Å©¸¦ À§ÇØ È£ÃâµÇ´Â ÇÔ¼ö
//          
function kjsSubmit(form_name){
//alert("fire_kjs½ÃÀÛ");
    eval("mForm=document."+form_name);
    mForm.initialize = fm_initialize;
    mForm.initialize();    
    mForm.beforeSubmit = em_beforeSubmit;
    if(mForm.beforeSubmit()){
        if(!beforeKjs())  return; //kjsÃ³¸®ÈÄ ¼öÇàÇØ¾ßÇÏ´Â ÇÔ¼ö
        mForm.submit();
    }

}

//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : kjsOnlyCheck(form_name)
// ³»  ¿ë : ÀÔ·Â°ª  ¿¡·¯Ã¼Å©¸¦ À§ÇØ È£ÃâµÇ´Â ÇÔ¼ö(submitÀº ½ÃÅ°Áö ¾Ê´Â´Ù.)
//          validation Ã¼Å©ÈÄ ¼º°øÀÌ¸é ture, ½ÇÆÐ¸é false¸¦ ¹ÝÈ¯ÇÑ´Ù.
function kjsOnlyCheck(form_name){
    eval("mForm=document."+form_name);
    mForm.initialize = fm_initialize;
    mForm.initialize();    
    mForm.beforeSubmit = em_beforeSubmit;
    if(mForm.beforeSubmit()){
        if(!beforeKjs())  return false; //kjsÃ³¸®ÈÄ ¼öÇàÇØ¾ßÇÏ´Â ÇÔ¼ö
        return true;
    }
    return false;
}


//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : fm_initialize(form_name)
// ¸Þ¼Òµå¸í : element.initialize()
// ³»  ¿ë : ÀüÃ¼ element °´Ã¼¸¦ ÃÊ±âÈ­
//    
function fm_initialize(){
//alert("fm_initialize½ÃÀÛ");
    for(var idx=0; idx < this.elements.length ; idx++){
        this.elements[idx].initialize = em_initialize;
        this.elements[idx].initialize(this);
    }
    
}

//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : em_initialize()
// ¸Þ¼Òµå¸í : element.initialize(parent)
// ³»    ¿ë : elementÀÇ method, attribute¸¦ redefineÇÑ´Ù.
//
function em_initialize(parent){
    //alert("em_initialize ½ÃÀÛ");
    var sMsg;
    this.parent = parent;
    this.AKey = new Array;
    this.setMessage = em_set_message;
    this.lowering = em_lowering;
    this.uppering = em_uppering;
    this.masking = em_masking;
    this.unmasking = em_unmasking;
    this.isAttribute = em_is_attribute;  // this.getAttribute(attr) != null
    this.keyFactory = em_key_factory; //°³º° element ÃÊ±âÈ­
    this.validate = em_validate;
    this.validate_display = em_validate_display;    
    

    this.keyFactory();
}


//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : em_is_attribute()
// ¸Þ¼Òµå¸í : element.isAttribute()
// ³»    ¿ë : elementÀÇ attribute ¾Ë¾Æ³½´Ù.
//
function em_is_attribute(attr){
    return ( this.getAttribute(attr) != null ) ? true : false;
}

//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : em_set_message()
// ¸Þ¼Òµå¸í : element.setMessage()
// ³»    ¿ë : ¿¡·¯¸Þ¼¼Áö¸¦ set
//
function em_set_message(sMsg){
    this.setAttribute("msg",sMsg);
}


//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : em_beforeSubmit()
// ¸Þ¼Òµå¸í : element.beforeSubmit()
// ³»  ¿ë : submitÀüÀÇ ÀüÃ³¸®
// 
function em_beforeSubmit(){
//alert("em_beforeSubmit ½ÃÀÛ");

    for(var i=0; i< this.elements.length; i++){        
        if (!this.elements[i].validate_display()) return false;
    } 

    for(var i=0; i< this.elements.length; i++){        
        if (this.elements[i].isAttribute("stripMask")) this.elements[i].unmasking();
    }
    
    return true;
}

//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : em_validate_display()
// ¸Þ¼Òµå¸í : element.validate_display()
// ³»  ¿ë : °¢ ÀÔ·Â °ª¿¡ ´ëÇÑ ÀÔ·Â Ã¼Å©ÈÄ display
//          
function em_validate_display(){
//alert("em_validate_display ½ÃÀÛ");
    if (this.validate()){
        this.style.backgroundColor = KJS_DEFAULT_BG_COLOR;
        return true;
    } else {
        alert(this.getAttribute("msg") );       
        if (this.isAttribute("moveFocus")){
            eval("target=this.parent."+this.getAttribute("moveFocus"));
            target.style.backgroundColor = KJS_ERROR_BG_COLOR;
            target.focus();
        }else{
        	this.style.backgroundColor = KJS_ERROR_BG_COLOR;
            this.focus();
        }

        return false;
    }
}


//////////////////////////////////////////////////////////////////////////////////
// ¸Þ¼Òµå¸í : em_masking
// ³»¿ë : ÀÏ¹ÝÀûÀÎ maskingÀ» ´ã´çÇÑ´Ù.
//
function em_masking(){

    var sStr = this.value.replace( KJS_DEFAULT_SPECIAL_CHAR ,"");
    var tStr="";
    var i;
    var j=0; 

    for(i=0; i< sStr.length; i++){
     tStr += sStr.charAt(i);
     j++;
     if (j < this.mask.length && this.mask.charAt(j)!="9") tStr += this.mask.charAt(j++);
    }   
    this.value= tStr;
}

//////////////////////////////////////////////////////////////////////////////////
// ¸Þ¼Òµå¸í : em_unmasking
// ³»¿ë : submit ÇÏ±â Àü Æ÷¸ËÇü½ÄÀ» Á¦°ÅÇÑ´Ù.ÀÏ¹ÝÀûÀÎ unmaskingÀ» ´ã´çÇÑ´Ù.
// 
function em_unmasking(){
//alert("½ÃÀÛ");
    if (!this.isAttribute("mask") && !this.isAttribute("money"))  return;   
    var sStr = this.value;
    var tStr="";
    var i;
    if(this.isAttribute("money")){
    	tStr = sStr.replace(/,/gi,"");
    }
    else{
	    for(i=0; i< sStr.length; i++){
	     if (this.mask.charAt(i)=="9")  tStr += sStr.charAt(i);
	    }
    }
   
    this.value= tStr;
//alert(this.value); 
}

//////////////////////////////////////////////////////////////////////////////////
// ¸Þ¼Òµå¸í : em_lowering
// ³»¿ë : submit ÇÏ±â Àü ¸ðµç ¹®ÀÚ¸¦ ¼Ò¹®ÀÚ·Î ¹Ù²Û´Ù.
// 
function em_lowering(){
    this.value=this.value.toLowerCase();
}


//////////////////////////////////////////////////////////////////////////////////
// ¸Þ¼Òµå¸í : em_uppering
// ³»¿ë : submit ÇÏ±â Àü ¸ðµç ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Û´Ù.
// 
function em_uppering(){
    this.value=this.value.toUpperCase();
}






//////////////////////////////////////////////////////////////////////////////////
// ¸Þ¼Òµå¸í : isNum()
// ÆÄ¶ó¸ÞÅÍ : strnum : °Ë»çÇÒ ¼ýÀÚ
// ¸® ÅÏ °ª : boolean(true / false)
// ³»    ¿ë : strnumÀÌ ¼ýÀÚÀÎÁö °Ë»çÇÑ´Ù.
function isNum (strnum){
  return (strnum.toString() && !/\D/.test(strnum));
}


//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : em_key_factory()
// ¸Þ¼Òµå¸í : element.keyFactory()
// ³»    ¿ë : elementÀÇ type°ú ÁÖ¾îÁø attribute¿¡ µû¶ó ÇÊ¿äÇÑ
//            key¸¦ »ç¿ë °¡´ÉÇÏ°Ô ÇÑ´Ù.
//
function em_key_factory(){
//alert("em_key_factory½ÃÀÛ");

    switch (this.type) {

    case "password" :
    case "text" :
        if ( this.isAttribute("required") )     this.AKey[0]="required";
        if ( this.isAttribute("minlength") )    this.AKey[1]="minlength";
        if ( this.isAttribute("mask") )         this.AKey[2]="mask";
        if ( this.isAttribute("date") )         this.AKey[3]="date";
        if ( this.isAttribute("isLower") )      this.AKey[4]="isLower";
        if ( this.isAttribute("isHigher") )     this.AKey[5]="isHigher";
        if ( this.isAttribute("lower") )        this.AKey[6]="lower";
        if ( this.isAttribute("upper") )        this.AKey[7]="upper";
        if ( this.isAttribute("isSame") )       this.AKey[8]="isSame";
        if ( this.isAttribute("number") )       this.AKey[9]="number";
		if ( this.isAttribute("float") )		this.AKey[9]="float";
        if ( this.isAttribute("entSubmit") )    this.AKey[10]="entSubmit";
        if ( this.isAttribute("money") )        this.AKey[11]="money";
        if ( this.isAttribute("email") )        this.AKey[12]="email";
        if ( this.isAttribute("jumin") )        this.AKey[13]="jumin";
        if ( this.isAttribute("csn") )          this.AKey[14]="csn";
        if ( this.isAttribute("alpha") )        this.AKey[15]="alpha";
        if ( this.isAttribute("alpha_number"))  this.AKey[16]="alpha_number";

        
        break;
    
    case "textarea" :
        if ( this.isAttribute("required") )     this.AKey[0]="required";

        break;

    case "checkbox" :

    case "file" :
        if ( this.isAttribute("required") )     this.AKey[0]="required";
        if ( this.isAttribute("isImage") )      this.AKey[1]="isImage";
        break;

    case "select-one" :
        if ( this.value=="slct_required" )      this.AKey[0]="slct_required";
        break;

    default :
        break;
    }    
}

//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : em_validate()
// ¸Þ¼Òµå¸í : element.validate()
// ³»  ¿ë : °¢ ÀÔ·Â °ª¿¡ ´ëÇÑ ÀÔ·Â Ã¼Å©
//          Select´Â ÇÊ¼öÀÔ·Â¿©ºÎ¸¸À» °Ë»çÇÑ´Ù.
function em_validate(){
//alert("em_validate()½ÃÀÛ");

    for (var i=0;i < this.AKey.length; i++){
        switch(this.AKey[i]){
        case "required" :
            this.xo_required = ex_required;
            this.ikey="required";
            this.ikey_value = this.getAttribute(this.ikey);
            if (!this.xo_required())    return false;
            break;

        case "slct_required" :
            this.xo_slct_required = ex_slct_required;
            this.ikey="slct_required";
            if (!this.xo_slct_required())    return false;
            break;

        case "minlength" :
            this.xo_minlength = ex_minlength;
            this.ikey="minlength";
            this.ikey_value = this.getAttribute(this.ikey);
            if (!this.xo_minlength())    return false;
            break;

        case "mask" :
            this.masking();
            break;

        case "date" :
            this.xo_date = ex_date;
            this.ikey="date";
            this.ikey_value = this.getAttribute(this.ikey);
            if (!this.xo_date())    return false;
            break;

        case "isLower" :
            this.xo_isLower = ex_is_lower;
            this.ikey="isLower";
            this.ikey_value = this.getAttribute(this.ikey);
            if (!this.xo_isLower())    return false;
            break;

        case "isHigher" :
            this.xo_isHigher = ex_is_higher;
            this.ikey="isHigher";
            this.ikey_value = this.getAttribute(this.ikey);
            if (!this.xo_isHigher())    return false;
            break;

        case "lower" :
            this.lowering();
            break;

        case "upper" :
            this.uppering();
            break;

        case "isSame" :
            this.xo_isSame = ex_is_same;
            this.ikey="isSame";
            this.ikey_value = this.getAttribute(this.ikey);
            if (!this.xo_isSame())    return false;
            break;

        case "isImage" :
            this.xo_isImage = ex_is_image;
            this.ikey="isImage";
            this.ikey_value = this.getAttribute(this.ikey);
            if (!this.xo_isImage())    return false;
            break;

        case "number" :
            this.xo_number = ex_number;
            this.ikey="number";
            this.ikey_value = this.getAttribute(this.ikey);
            if (!this.xo_number())    return false;
            break;

        case "money" :        
            this.money = em_money_masking;
            this.money();
            this.xo_numrep = ex_numrep;
            this.filter = /,/g;
            if (!this.xo_numrep())    return false;            
            break;
            
        case "email" :        
            this.xo_email = ex_email;
            if (!this.xo_email())    return false;            
            break;
            
        case "jumin" :
            this.xo_jumin = ex_jumin;
            this.ikey="jumin";
            this.ikey_value = this.getAttribute(this.ikey);
            if (!this.xo_jumin())    return false;
            break;
            
        case "csn" :
            this.xo_csn = ex_csn;
            this.ikey="csn";
            this.ikey_value = this.getAttribute(this.ikey);
            if (!this.xo_csn())    return false;
            break; 
            
        case "alpha" :        
            this.xo_alpha = ex_alpha
            if (!this.xo_alpha())    return false;            
            break; 
            
        case "alpha_number" :        
            this.xo_alpha_number = ex_alpha_number
            if (!this.xo_alpha_number())    return false;            
            break;                                                           

        }//end  switch(this.AKey)                                              
    }
    return true;
}

//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_alpha_number()
// ³»  ¿ë : ¿µ¹® ¼ýÀÚ ÀÔ·ÂÀ» Ã¼Å© ÇÑ´Ù. 
// »ç¿ë¹ý: ex) alpha_number  
//
function ex_alpha_number()
{

  var flag = true; 
  var msg = "";

  if (!this.parent.value) return flag; //ÀÔ·Â°ª ¾ø´Â °æ¿ì´Â Pass

  var tsTarget = this.parent.value;

  var regExp_alpha_numeric = /^[a-zA-Z0-9]+$/;

  if(!regExp_alpha_numeric.test(tsTarget)) {
    flag = false;
    msg = "¿µ¹®  È¤Àº ¼ýÀÚ¸¸ ÀÔ·Â °¡´É ÇÕ´Ï´Ù.";
    this.setMessage(msg);
  }

  return flag;

}
//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_alpha()
// ³»  ¿ë : ¿µ¹® ÀÔ·ÂÀ» Ã¼Å© ÇÑ´Ù. 
// »ç¿ë¹ý: ex) alpha  
//
function ex_alpha()
{

  var flag = true; 
  var msg = "";

  if (!this.value) return flag; //ÀÔ·Â°ª ¾ø´Â °æ¿ì´Â Pass

  var tsTarget = this.value;

  var regExp_alphabetic = /^[a-zA-Z]+$/;
  if(!regExp_alphabetic.test(tsTarget)) {
    flag = false;
    msg = "¿µ¹®¸¸ ÀÔ·Â °¡´ÉÇÕ´Ï´Ù.";
    this.setMessage(msg);
  }

  return flag;

}
//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_csn()
// ³»  ¿ë : ÁÖ¹Î ¹øÈ£ Ã¼Å© 
// »ç¿ë¹ý: ex) csn, csn='2¹øÂ° obj name, 3¹øÂ° obj name'  
//         
function ex_csn(){
//alert("ex_csn ½ÃÀÛ");
    
  var flag = true; 
  var msg = "";
  var sum = 0;

  if (!this.value) return flag; //ÀÔ·Â°ªÀÌ ¾ø´Â °æ¿ì´Â Pass
  
  var csNumber;
  alert(this.ikey_value);
  
  if(this.ikey_value) {
  	var tmp = this.ikey_value.split(",");	
  	eval("target2=this.parent."+tmp[0]);
  	eval("target3=this.parent."+tmp[1]);
  	csNumber = this.value + target2.value+ target3.value;

  }else {
  	csNumber = this.value.replace(/(\,|\.|\-|\/)/g,"");
  }
  	
  var checkArray = new Array(1,3,7,1,3,7,1,3,5);

  for(idx=0 ; idx < 9 ; idx++)
    sum += csNumber.charAt(idx) * checkArray[idx];

  sum = sum + ((csNumber.charAt(8) * 5 ) / 10);

  var nam = Math.floor(sum) % 10;

  var checkDigit = ( nam == 0 ) ? 0 : 10 - nam;

  if ( !isNum(csNumber) || csNumber.charAt(9) != checkDigit)  {
    flag = false;
    msg = "ÀÔ·ÂÇÑ »ç¾÷ÀÚ µî·Ï¹øÈ£°¡ Àß¸øµÇ¾ú½À´Ï´Ù.";
    this.setMessage(msg);
  }

  return flag;

  return flag;
}

//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_jumin()
// ³»  ¿ë : ÁÖ¹Î ¹øÈ£ Ã¼Å© 
// »ç¿ë¹ý: ex) jumin, jumin='2¹øÂ° ÁÖ¹Î ¹øÈ£  obj name'  
//         
function ex_jumin(){
//alert("ex_jumin ½ÃÀÛ");
    
  var flag = true; 
  var msg = "";
  var sum = 0;

  if (!this.value) return flag; //ÀÔ·Â°ªÀÌ ¾ø´Â °æ¿ì´Â Pass
  
  var psNumber;
  
  if(this.ikey_value) {
  	eval("target=this.parent."+this.ikey_value);
  	psNumber = this.value + target.value;

  }else {
  	psNumber = this.value.replace(/(\,|\.|\-|\/)/g,"");
  }
  	
  for (idx = 0, jdx=2; jdx < 10; idx++, jdx++) {
    sum = sum + ( psNumber.charAt(idx) * jdx );
  }

  for (idx = 8, jdx=2; jdx < 6; idx++, jdx++) {
    sum = sum + ( psNumber.charAt(idx) * jdx );
  }

  var nam = sum % 11;
  var checkDigit = 11 - nam ;

  if ( !isNum(psNumber) || psNumber.charAt(12) != checkDigit)  {
    flag = false;
    msg = "ÀÔ·ÂÇÑ ÁÖ¹Îµî·Ï¹øÈ£°¡ Àß¸øµÇ¾ú½À´Ï´Ù.";
    this.setMessage(msg);
  }

  return flag;
}
//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_email()
// ³»  ¿ë : email Ã¼Å©
// »ç¿ë¹ý: email
// 
function ex_email()
{
  //this core script from http://tech.irt.org/articles/js049/index.htm
  //customize by TKshin.

  var flag = true; //true when validation successful.
  var msg = "";

  if (!this.value) return flag; //ÀÔ·Â°ª ¾ø´Â °æ¿ì´Â Pass

  var tsTarget = this.value;
  var regExpEmail = /^\w+((-|\.)\w+)*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z]{2,4}$/;

  if(!regExpEmail.test(tsTarget)) {
    flag = false;
    msg = "ÀÌ¸ÞÀÏ Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù.";
    this.setMessage(msg);
  }

  return flag;

}
//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : em_money_masking()
// ³»  ¿ë : money¿¡ °ü·ÃµÈ maskingÀ» ´ã´ç
// »ç¿ë¹ý: money
// 
function em_money_masking() {

  var sMoney = this.value.replace(/,/g,"");
  var tMoney = "";
  var i;
  var j=0;
  var tLen =sMoney.length;

  if (tLen <= 3 ) return ;

  for(i=0;i<tLen;i++){
    if (i!=0 && ( i % 3 == tLen % 3) ) tMoney += ",";
    if(i < tLen ) tMoney += sMoney.charAt(i);
  }

  this.value = tMoney;
}

//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_numrep()
// ³»  ¿ë : Æ¯Á¤ ÇÊÅÍ¸¦ Á¦¿ÜÇÑ ¼ýÀÚ ¿©ºÎ¸¦ Ã¼Å© ÇÑ´Ù.
// »ç¿ë¹ý: 
//
function ex_numrep() {

  var sVal = this.value.replace(this.filter,"");
  sMsg ="¼ýÀÚ¸¸ ÀÔ·Â°¡´ÉÇÕ´Ï´Ù.";
    if (!sVal) return true;
    if (!isNum(sVal)){
        this.setMessage(sMsg);
        return false;
    }
        
    return true;
}
//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_required()
// ³»  ¿ë : ÇÊ¼öÀÔ·ÂÃ¼Å©
// »ç¿ë¹ý: required, required="message"
//          
function ex_required(){
sMsg ="ÇÊ¼öÀÔ·ÂÀÔ´Ï´Ù";
    var regExp_whiteSpace = /^[\s]*$/;
    if (regExp_whiteSpace.test(this.value)){
        if (this.ikey_value)    sMsg=this.ikey_value;
        this.setMessage(sMsg);
        this.value = this.value.replace( /(\s)/g,"");
        return false;
    }        
    return true;
}


//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_slct_required()
// ³»  ¿ë : select box ÇÊ¼ö¼±ÅÃÃ¼Å©
// »ç¿ë¹ý: option value="slct_required"
//          
function ex_slct_required(){
//alert("ex_slct_required ½ÃÀÛ");
    sMsg ="ÇÊ¼ö ¼±ÅÃÀÔ´Ï´Ù";
    this.setMessage(sMsg);
    return false;
}


//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_minlength()
// ³»  ¿ë : ÃÖ¼Ò±æÀÌ Ã¼Å©
// »ç¿ë¹ý: ex)minlength="7"
//         
function ex_minlength(){
//alert("ex_minlength ½ÃÀÛ");
    if (!this.value) return true; //ÀÔ·Â°ª ¾ø´Â °æ¿ì´Â Pass
    var tsTarget = this.value;
    //Validation Logic for Min Legnth..
    if (tsTarget.length <  this.ikey_value ) {
        sMsg ="ÀÔ·ÂµÈ Ç×¸ñÀÇ ÀÚ¸´¼ö°¡ ³Ê¹« ÀÛ½À´Ï´Ù. \nÃÖ¼Ò " + this.ikey_value + "ÀÚ¸®ÀÌ»óÀÔ´Ï´Ù.";
        this.setMessage(sMsg);
        return false;
    }
    return true;
}



//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_date()
// ³»    ¿ë :³¯Â¥ Æ÷¸ËÃ¼Å© Ã¼Å©
// »ç¿ë¹ý :date=>yyyymmdd Çü½Ä, date='9999-99-99'=> 'yyyy-mm-dd' Çü½ÄÀ¸·Î º¯È¯
//
function ex_date(){
    
    var flag = true;    
    if (!this.value) return flag; //ÀÔ·Â°ªÀÌ ¾ø´Â °æ¿ì´Â Pass

    //Validation Logic for Date..
    var iYear = null;
    var iMonth = null;
    var iDay = null;
    var iDaysInMonth = null;

    var sDate=this.value.replace(/(\,|\.|\-|\/)/g,"");
    var sFormat="YYYYMMDD";  //¾ÆÁ÷±îÁö YYYYMMDDÀÇ ÇüÅÂ¸¸ Áö¿øÇÑ´Ù. --;
    var aDaysInMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);

    //¿ÏÀüÇÑ ³¯Â¥ÀÇ ÀÔ·ÂÀÌ µé¾î¿Â °æ¿ìÀÌ´Ù.
    if ( sDate.length != 8 ) flag = false ;

    if (flag) {
    iYear  = eval(sDate.substr(0,4));
    iMonth = eval(sDate.substr(4,2));
    iDay   = eval(sDate.substr(6,2));
    if (!isNum(iYear) || !isNum(iMonth) || !isNum(iDay) )
      flag = false ;
    }

    if (flag) {
     iDaysInMonth = (iMonth != 2) ? aDaysInMonth[iMonth-1] : (( iYear%4 == 0 && iYear%100 != 0 || iYear % 400==0 ) ? 29 : 28 );
     if( iDay==null || iMonth==null || iYear==null  || iMonth > 13 || iMonth < 1 || iDay < 1 || iDay > iDaysInMonth )
      flag = false ;
    }

    if (!flag) {
    sMsg = "³¯Â¥ÀÔ·ÂÀÌ Àß¸øµÇ¾ú½À´Ï´Ù.";
    if ( this.isAttribute("dateErrMsg") )     sMsg=this.dateErrMsg;
    this.setMessage(sMsg);
    }

    if ( flag && this.ikey_value){
        if (flag) this.value=this.value.replace(/(\,|\.|\-|\/)/g,"");
        this.mask=this.ikey_value;
        this.masking();  //Æ÷¸ËÇü½ÄÀÌ ÀÖÀ¸¸é.. ¸®Æ÷¸ËÇÑ´Ù..
    }

    return flag;
}


//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_is_lower()
// ³»  ¿ë : ÁöÁ¤µÈ ÇÊµåÀÇ °ªÀ» ºñ±³ÇÏ¿© ºñ±³µÇ´Â °ªº¸´Ù ÀÛÀ¸¸é true¸¦ ¸®ÅÏ 
// »ç¿ë¹ý: ex)isLower='ºñ±³µÉ obj name'  isLowerErrMsg='¿¡·¯ ¸Þ¼¼Áö'
//         
function ex_is_lower(){
//alert("ex_is_lower ½ÃÀÛ");
    sMsg ="ÀÔ·ÂµÈ °ªÀÌ ºñ±³µÇ´Â °ªº¸´Ù Å¬¼ö ¾ø½À´Ï´Ù.";
    if (!this.value) return true; //ÀÔ·Â°ª ¾ø´Â °æ¿ì´Â Pass
    var srcValue = this.value.replace(KJS_DEFAULT_SPECIAL_CHAR,"");
    eval("target=this.parent."+this.ikey_value);
    var tgValue= target.value;
    tgValue = tgValue.replace(KJS_DEFAULT_SPECIAL_CHAR,"");

    if (!(tgValue=="" || tgValue==null)){
        if ( srcValue > tgValue ) {
            if ( this.isAttribute("isLowerErrMsg") )     sMsg=this.isLowerErrMsg;
            this.setMessage(sMsg);
            return false;
        }
    }

    return true;
}



//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_is_higher()
// ³»  ¿ë : ÁöÁ¤µÈ ÇÊµåÀÇ °ªÀ» ºñ±³ÇÏ¿© ºñ±³µÇ´Â °ªº¸´Ù Å©¸é true¸¦ ¸®ÅÏ 
// »ç¿ë¹ý: ex)isHigher='ºñ±³µÉ obj name'  isHigherErrMsg='¿¡·¯ ¸Þ¼¼Áö'
//         
function ex_is_higher(){
//alert("ex_is_higher ½ÃÀÛ");
    sMsg ="ÀÔ·ÂµÈ °ªÀÌ ºñ±³µÇ´Â °ªº¸´Ù ÀÛÀ»¼ö ¾ø½À´Ï´Ù.";
    if (!this.value) return true; //ÀÔ·Â°ª ¾ø´Â °æ¿ì´Â Pass
    var srcValue = this.value.replace(KJS_DEFAULT_SPECIAL_CHAR,"");
    eval("target=this.parent."+this.ikey_value);
    var tgValue= target.value;
    tgValue = tgValue.replace(KJS_DEFAULT_SPECIAL_CHAR,"");

    if (!(tgValue=="" || tgValue==null)){
        if ( srcValue < tgValue ) {
            if ( this.isAttribute("isHigherErrMsg") )     sMsg=this.isHigherErrMsg;
            this.setMessage(sMsg);
            return false;
        }
    }

    return true;
}


//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_is_same()
// ³»  ¿ë : ÁöÁ¤µÈ ÇÊµåÀÇ °ªÀ» ºñ±³ÇÏ¿© ºñ±³µÇ´Â °ª°ú °°À¸¸é true¸¦ ¸®ÅÏ 
// »ç¿ë¹ý: ex)isSame='ºñ±³µÉ obj name'  isSameErrMsg='¿¡·¯ ¸Þ¼¼Áö'
//         
function ex_is_same(){
//alert("ex_is_same ½ÃÀÛ");
    sMsg ="ÀÔ·ÂµÈ °ªÀÌ ºñ±³µÇ´Â °ª°ú °°Áö ¾Ê½À´Ï´Ù.";
    if (!this.value) return true; //ÀÔ·Â°ª ¾ø´Â °æ¿ì´Â Pass
    var srcValue = this.value.replace(KJS_DEFAULT_SPECIAL_CHAR,"");
    eval("target=this.parent."+this.ikey_value);
    var tgValue= target.value;
    tgValue = tgValue.replace(KJS_DEFAULT_SPECIAL_CHAR,"");

    if (!(tgValue=="" || tgValue==null)){
        if ( srcValue != tgValue ) {
            if ( this.isAttribute("isSameErrMsg") )     sMsg=this.isSameErrMsg;
            this.setMessage(sMsg);
            return false;
        }
    }

    return true;
}

function CheckImageFile(obj){
  var ImageFile = obj.value;
  var extFile = ImageFile.split("\\");
  var ImgInfo = extFile[extFile.length-1];
  var ext = ImgInfo.split(".");
    if (ext[1].toUpperCase() == "JPG" || ext[1].toUpperCase() == "GIF")
      return true;
    else
      return false;
  
}

//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_is_image()
// ³»  ¿ë : file Æû ÇÊµå¿¡¼­ jpg,gif ÆÄÀÏÃ¼Å©
// »ç¿ë¹ý: ex)isImage,   isImageErrMsg='¿¡·¯ ¸Þ¼¼Áö'
//         
function ex_is_image(){
//alert("ex_is_image ½ÃÀÛ");
    sMsg ="ÀÌ¹ÌÁö ÆÄÀÏÀº gif,jpg, jpeg, png ¸¸ °¡´ÉÇÕ´Ï´Ù!";
    if (!this.value) return true; //ÀÔ·Â°ª ¾ø´Â °æ¿ì´Â Pass

    var ImageFile = this.value;
    var extFile = ImageFile.split("\\");
    var ImgInfo = extFile[extFile.length-1];
    var ext = ImgInfo.split(".");
    if (ext[1].toUpperCase() == "JPG" || ext[1].toUpperCase() == "GIF"
        || ext[1].toUpperCase() == "JPEG" || ext[1].toUpperCase() == "PNG"){
      return true;
    }else{
            if ( this.isAttribute("isImageErrMsg") )     sMsg=this.isImageErrMsg;
            this.setMessage(sMsg);
      return false;
    }


}


//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ex_number()
// ³»  ¿ë : ¼ýÀÚÀÔ·ÂÃ¼Å©
// »ç¿ë¹ý: required, required="message"
//          
function ex_number(){
sMsg ="¼ýÀÚ¸¸ ÀÔ·Â°¡´ÉÇÕ´Ï´Ù.";
    if (!this.value) return true;
    if (!isNum(this.value)){
        this.setMessage(sMsg);
        return false;
    }
        
    return true;
}





//////////////////////////////////////////////////////////////ÀÌÇÏ-ÀÌº¥Æ® °ü·Ã ½ºÅ©¸³Æ®/////////////////////////////////////////////






//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : em_kek_initialize()
// ¸Þ¼Òµå¸í : element.initialize(parent)
// ³»    ¿ë : elementÀÇ method, attribute, event¸¦ redefineÇÑ´Ù.
//
function em_kek_initialize(){
//alert("em_kek_initialize ½ÃÀÛ-3");
    var sMsg; 
    this.AKey = new Array;
    this.setMessage = em_set_message;
    this.keyupMasking = ee_keyup_masking;
    this.isAttribute = em_is_attribute;  // this.getAttribute(attr) != null
    this.keyFactory = em_key_factory; //°³º° element ÃÊ±âÈ­
    this.enterSubmit = ee_enter_submit;
    
    this.keyFactory();
}





//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ee_on_keyup()
// ¸Þ¼Òµå¸í : element.keyup(parent)
// ³»    ¿ë : elementÀÇ onkeyupÀÇ event¸¦ ½ÇÇàÇÑ´Ù.
//
function ee_on_keyup(obj){

    obj.initialize = em_kek_initialize;
    obj.initialize();

    for (var i=0;i < obj.AKey.length; i++){
        switch(obj.AKey[i]){
        case "mask" :
            obj.ikey="mask";
            obj.filter=KJS_DEFAULT_SPECIAL_CHAR;
            obj.keyupMasking();
            break ;
        case "date" :
            obj.keyupDate = ee_keyup_date;
            obj.ikey="date";
            obj.ikey_value = obj.getAttribute(obj.ikey);
            obj.keyupDate();
            break ;

        case "number" :
            obj.keyupNumber = ee_keyup_number;
            obj.keyupNumber();
            break ;

        case "entSubmit" :
            obj.ikey="entSubmit";
            obj.ikey_value = obj.getAttribute(obj.ikey);
            obj.enterSubmit();
            break ;
            
            
        case "lower" :
            obj.lower= em_lowering;
            obj.lower();
            break ; 
            
        case "upper" :
            obj.upper= em_uppering;
            obj.upper();
            break ;
                                   
        case "money" :
            obj.keyupNumber = ee_keyup_number;
            obj.keyupNumber();
            obj.money = em_money_masking;
            obj.money();
            break;

		case "float" :
            obj.keyupNumber = ee_keyup_float;
            obj.keyupNumber();
            break ;
        }//end  switch(obj.AKey)                                              
    }


}


//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : skipKeyCode()
// ³»    ¿ë : skipÇÒ keyCode check
//
function skipKeyCode(keyCode) {
    if (keyCode == 8 || keyCode == 9 || keyCode == 35 || keyCode == 36 ||
        keyCode == 37 || keyCode == 39 || keyCode == 46) {
        return true;
    } else {
        return false;
    }
}

//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ee_keyup_masking()
// ¸Þ¼Òµå¸í : element.keyupMasking(parent)
// ³»    ¿ë : elementÀÇ mask attributeÀÇ onkeyupÀÇ event¸¦ ½ÇÇàÇÑ´Ù.
//
function ee_keyup_masking(){

    var mask = this.getAttribute(this.ikey);
    var sMask = mask.replace( KJS_DEFAULT_SPECIAL_CHAR ,"");//Æ÷¸ËÇü½ÄÀ» Áö¿î´Ù.
    if (skipKeyCode(event.keyCode)) return; //ÇÊ¿äÇÑ Å°´Â °Ç³Ê¶Ú´Ù.
    if (!this.value) return;
    this.value = this.value.replace(this.filter , ""); //¼ýÀÚ¸¸ ÀÔ·Â°¡´É
    this.value = this.value.replace(/([^0-9])/g, ""); //¼ýÀÚ¸¸ ÀÔ·Â°¡´É

    if (this.value.length < 1) return;
    var tStr = "";
    var j=0; 
    for (var i = 0; i < this.value.length; i++) {
        if (i > sMask.length-1) { //Æ÷¸ËÇü½Ä±æÀÌº¸´Ù ±æ¸é ³ª°£´Ù.
            break;
        }
        tStr += this.value.charAt(i);
        j++;
        if (j < mask.length && mask.charAt(j)!="9") tStr += mask.charAt(j++);
        
    }
    this.value = tStr;
}



//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ee_keyup_date()
// ¸Þ¼Òµå¸í : element.keyupDate(parent)
// ³»    ¿ë : elementÀÇ date attributeÀÇ onkeyupÀÇ event¸¦ ½ÇÇàÇÑ´Ù.
//
function ee_keyup_date(){
    this.filter = /([^0-9])/g ; //¼ýÀÚ¿ÜÀÇ ¸ðµç°Í- ¼ýÀÚ¸¸ ÀÔ·Â°¡´É
    if (this.ikey_value)    this.mask=this.ikey_value;        
    this.keyupMasking();
}


//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ee_keyup_number()
// ¸Þ¼Òµå¸í : element.keyupNumber(parent)
// ³»    ¿ë : elementÀÇ number attributeÀÇ onkeyupÀÇ event¸¦ ½ÇÇàÇÑ´Ù.
//
function ee_keyup_number(){
    this.filter = /([^0-9])/g ; //¼ýÀÚ¿ÜÀÇ ¸ðµç°Í- ¼ýÀÚ¸¸ ÀÔ·Â°¡´É
    
    if (skipKeyCode(event.keyCode)) return; //ÇÊ¿äÇÑ Å°´Â °Ç³Ê¶Ú´Ù.
    if (!this.value) return;
    this.value = this.value.replace(this.filter , ""); //¼ýÀÚ¸¸ ÀÔ·Â°¡´É
    this.focus();
}


//////////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : ee_enter_submit()
// ¸Þ¼Òµå¸í : element.enterSubmit(parent)
// ³»    ¿ë : 
//
function ee_enter_submit(){
    
    if (event.keyCode==13)  kjsSubmit(this.ikey_value);

}

function ee_keyup_float(){
    this.filter = /([^.0-9])/g ; //¼ýÀÚ¿ÜÀÇ ¸ðµç°Í- ¼ýÀÚ¸¸ ÀÔ·Â°¡´É
    
    if (skipKeyCode(event.keyCode)) return; //ÇÊ¿äÇÑ Å°´Â °Ç³Ê¶Ú´Ù.
    if (!this.value) return;
    this.value = this.value.replace(this.filter , ""); //¼ýÀÚ¸¸ ÀÔ·Â°¡´É
	if ((this.value.split(".")).length > 2)	this.value = this.value.substring(0,this.value.lastIndexOf("."));

    this.focus();
}

