//////////////////////////////////////////////////////////////////////
//  - readonly                                                      //
//    ÇÊµå¸¦ ÀÐ±âÀü¿ëÀ¸·Î ¸¸µç´Ù.                                   //
//                                                                  //
//  - required                                                      //
//    ÇÊµå¸¦ ÇÊ¼öÀÔ·ÂÀ¸·Î ¸¸µç´Ù.                                   //
//                                                                  //
//  - right                                                         //
//    ÇÊµå³» text-alignment¸¦ ¿À¸¥ÂÊÀ¸·Î Á¤¸®ÇÑ´Ù.                  //
//                                                                  //
//  - center                                                        //
//    ÇÊµå³» text-alignment¸¦ Áß¾ÓÁ¤·Ä·Î ÇÑ´Ù.                      //
//                                                                  //
//  - filter="[abcde-y]"                                            //
//                                                                  //
//  - mask="999-999"                                                //
//                                                                  //
//  - money                                                         //
//    ±Ý¾× ÀÔ·ÂÈÄ ÇÊµå¸¦ ¹þ¾î³ª°Ô µÇ¸é ¼¼ÀÚ¸®¸¶´Ù ÄÞ¸¶(,)°¡ »ý¼ºµÈ´Ù//
//                                                                  //
//  - date                                                          //
//    ³¯ÀÚ¸¦ ÀÔ·ÂÇÏ´Â ÇÊµåÀÇ °æ¿ì »ç¿ëÇÑ´Ù.                         //
//                                                                  //
//  - number="(x,x)"                                                //
//   ¿À¶óÅ¬ db¿¡¼­ number(5,2)Ç¥½ÃµÈ Ç×¸ñÀ» number="(5,2)" Ç¥Çö     //
//                                                                  //
//  - number                                                        //
//   µÚ¿¡ Æ÷¸äÀÌ ¾øÀ»°æ¿ì [0-9] »çÀÌÀÇ ¼ýÀÚ¸¸ ÀÔ·ÂµÈ´Ù.             //
//                                                                  //
//////////////////////////////////////////////////////////////////////
var SUCCESS = 0;
var ERR_REQUIRED = 10;
var ERR_FORMAT = 20;
var ERR_DATE = 30;
var ERR_NUMBER = 40;
var ERR_MAXLENGTH = 50;
var ERR_JUMIN = 60;
var ERR_MAIL = 70;
var ERR_COMP = 80;
var ERR_TEL = 90;

var MSG_ERR010 = "ÇÊ¼ö ÀÔ·Â ÀÔ´Ï´Ù";
var MSG_ERR020 = "Àß¸øµÈ ÀÔ·Â ÀÔ´Ï´Ù.";
var MSG_ERR030 = "³¯Â¥ ÀÔ·ÂÀÌ Àß¸øµÇ¾ú½À´Ï´Ù.";
var MSG_ERR040 = "¼ýÀÚ ÀÔ·ÂÀÌ Àß¸øµÇ¾ú½À´Ï´Ù.";
var MSG_ERR050 = "ÃÖ´ë ÀÔ·Â ÀÚ¸®¼ö¸¦ ÃÊ°úÇß½À´Ï´Ù.";
var MSG_ERR060 = "¿Ã¹Ù¸¥ ÁÖ¹Îµî·Ï¹øÈ£°¡ ¾Æ´Õ´Ï´Ù.";
var MSG_ERR070 = "¿Ã¹Ù¸¥ ¸ÞÀÏ ÁÖ¼Ò°¡ ¾Æ´Õ´Ï´Ù.";
var MSG_ERR080 = "¿Ã¹Ù¸¥ »ç¾÷ÀÚ µî·Ï¹øÈ£°¡ ¾Æ´Õ´Ï´Ù.";
var MSG_ERR090 = "¿Ã¹Ù¸¥ ÀüÈ­¹øÈ£°¡ ¾Æ´Õ´Ï´Ù.\r\n¿¹)02-0000-0000, 01X-0000-0000  ";
var MSG_ERR100 = "ÁöÁ¤µÇÁö ¾ÊÀº ¿¡·¯ÀÔ´Ï´Ù. ¹Ýµå½Ã°ü¸®ÀÚ¿¡°Ô ¿¬¶ôÇÏ½Ê½Ã¿ä";

var TYPE_NONE = 0;
var TYPE_MONEY = 10;
var TYPE_DATE = 20;
var TYPE_MASK = 30;
var TYPE_NUMBER = 40;
var TYPE_JUMIN = 50;
var TYPE_MAIL = 60;
var TYPE_COMP = 70;
var TYPE_TEL = 80;
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : f_validate()
// ³»  ¿ë : °¢ ÀÔ·Â °ª¿¡ ´ëÇÑ ÀÔ·Â Ã¼Å©
//          Select´Â ÇÊ¼öÀÔ·Â¿©ºÎ¸¸À» °Ë»çÇÑ´Ù.
// Object : element
///////////////////////////////////////////////////////////////////////////////
function f_validate()
{
    if ( this.getAttribute("required") != null && isBlank(this) ) return ERR_REQUIRED;

    switch(this.iType){
        case TYPE_MONEY :
            if(!isValid(this)) return ERR_NUMBER;
            break;
        case TYPE_DATE :
            if(!isDate(this)) return ERR_DATE;
            break;
        case TYPE_MASK :
            if(!isValid(this)) return ERR_FORMAT;
            break;
        case TYPE_NUMBER :
            if(!isValid(this)) return ERR_NUMBER;
            break;
        case TYPE_JUMIN :
            if(!isJumin(this)) return ERR_JUMIN;
            break;
        case TYPE_COMP :
            if(!isComp(this)) return ERR_COMP;
            break;
        case TYPE_MAIL :
            if(!isMail(this)) return ERR_MAIL;
            break;
        case TYPE_TEL :
            if(!isTel(this)) return ERR_TEL;
            break;
        case TYPE_NONE :
            if(!isValid(this)) return ERR_FORMAT;
            if(!isLength(this)) return ERR_MAXLENGTH;
            break;
    }

    return SUCCESS;
}

///////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : f_validate_display()
// ³»  ¿ë : ÀÔ·Â°ª Ã¼Å© °á°ú¿¡ µû¶ó Ã³¸®
// Object : element
///////////////////////////////////////////////////////////////////////////////
function f_validate_display()
{
    var ret = this.validate();
    var msg = "";

    switch(ret){
        case SUCCESS :
                    //if(this.getAttribute("readonly"))
                    //    this.style.backgroundColor = "#E8E8E8";
                    //else
                    //    this.style.backgroundColor = "";
                    return true;
        case ERR_REQUIRED :
                    msg = MSG_ERR010;
                    break;
        case ERR_DATE:
                    msg = MSG_ERR030;
                    break;
        case ERR_JUMIN:
                    msg = MSG_ERR060;
                    break;
        case ERR_COMP:
                    msg = MSG_ERR080;
                    break;
        case ERR_MAIL:
                    msg = MSG_ERR070;
                    break;
        case ERR_TEL:
                    msg = MSG_ERR090;
                    break;
        case ERR_FORMAT :
                    msg = MSG_ERR020;
                    if(this.getAttribute("mask"))
                        msg += " Çü½Ä["+this.getAttribute("mask")+"]";
                    if(this.getAttribute("filter"))
                        msg += " Çã¿ë°ª"+this.getAttribute("filter");
                    break;
        case ERR_NUMBER :
                    msg = MSG_ERR040;
                    if(this.getAttribute("number"))
                        msg += " Çü½Ä"+this.getAttribute("number");
                    break;
        case ERR_MAXLENGTH :
                    msg = MSG_ERR050 + "[ÃÖ´ëÀÚ¸®¼ö:"+this.getAttribute("MAXLENGTH")+"]";
                    break;
        default :
                    msg = MSG_ERR100;
                    break;
    }


    if(this.getAttribute("msg2"))
      alert("< " + this.getAttribute("msg") + " >" + this.getAttribute("msg2"));
    else if(this.getAttribute("msg"))
        alert("< " + this.getAttribute("msg") + " >..." + msg);
  else
        alert(msg);

    this.style.backgroundColor = "YELLOW";
    if(this.focus) this.focus();

    return false;
}

///////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : f_onkeypress()
// ³»  ¿ë : Å°ÀÔ·ÂÀ» Ã³¸®ÇÏ±âÀ§ÇÑ ÇÚµé·¯
// Event : onKeyPress
// Object : element
///////////////////////////////////////////////////////////////////////////////
function f_onkeypress() {
    var sFilter = this.getAttribute("filter");

    if(this.oldkeypress)
        this.oldkeypress();

    if(String.fromCharCode(event.keyCode) == "\r") {
        event.returnValue = false;
    } else if(sFilter){
        var sKey = String.fromCharCode(event.keyCode);
        var re = new RegExp(sFilter);
        if(!re.test(sKey)) event.returnValue = false;
    }
}

///////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : f_onfocus()
// ³»  ¿ë : °¢ elementÀÇ focus¸¦ À§ÇÑ ÀÌº¥Æ®ÇÚµé·¯
// Event  : onFocus
// Object : element
///////////////////////////////////////////////////////////////////////////////
function f_onfocus()
{
    if(this.readOnly) return;

    toUnformat(this);
    if(this.select) this.select();
}

///////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : f_onblur()
// ³»  ¿ë : °¢ elementÀÇ blur¸¦ À§ÇÑ ÀÌº¥Æ®ÇÚµé·¯
// Event  : onBlur
// Object : element
///////////////////////////////////////////////////////////////////////////////
function f_onblur()
{
    if(this.oldblur)
        this.oldblur();

    toFormat(this);
}

///////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : f_onsubmit()
// ³»  ¿ë : Form¿¡¼­ ÀÔ·Â°ª Submit½Ã ¿¡·¯Ã¼Å©¸¦ À§ÇÑ ÇÔ¼ö
// Event : onSubmit
// Object : Form
///////////////////////////////////////////////////////////////////////////////
function f_onsubmit()
{
    for(var i = 0; i < this.elements.length; i++){
        if(this.elements[i].validate) {
            if(!this.elements[i].validate_display()){
                return false;
            }
        }
    }

    if(this.oldSubmit && !this.oldSubmit())
        return false;

    for(var i = 0; i < this.elements.length; i++)
        toUnformat(this.elements[i]);

    for(var i = 0; i < this.elements.length; i++)
        if(this.elements[i].disabled)
            this.elements[i].disabled = false;

    this.submit();

    for(var i = 0; i < this.elements.length; i++)
        toFormat(this.elements[i]);

    return true;
}

///////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : setField()
// ³»  ¿ë : field Æ¯¼º¿¡ µû¸¥ °¢Á¾ ¼Ó¼º°ª,ÀÌº¥Æ® ÁöÁ¤
///////////////////////////////////////////////////////////////////////////////
function setField(obj) {
  if (obj.type) {
    var required = obj.getAttribute("required");
    var number = obj.getAttribute("number");
    var money = obj.getAttribute("money");
    var date = obj.getAttribute("date");
    var jumin = obj.getAttribute("jumin");
    var comp = obj.getAttribute("comp");
    var mail = obj.getAttribute("mail");
    var mask = obj.getAttribute("mask");
    var tel = obj.getAttribute("tel");
    var fcs = obj.getAttribute("fcs");

    switch( obj.type ) {
      case "text" :
        if(money != null) {
          obj.iType = TYPE_MONEY;
          obj.style.textAlign = "right";
          obj.setAttribute("filter","[,0-9]");
          obj.style.imeMode = "inactive";
        } else if(date != null) {
          obj.iType = TYPE_DATE;
          obj.style.textAlign = "center";
          obj.setAttribute("filter","[0-9]");
          if(!mask)
            obj.setAttribute("mask","9999-99-99");
          obj.style.imeMode = "inactive";
        } else if(number != null) {
          obj.iType = TYPE_NUMBER;
          obj.style.textAlign = "right";
          if(number)
            obj.setAttribute("filter","[.0-9]");
          else
            obj.setAttribute("filter","[0-9]");
          obj.style.imeMode = "inactive";
        } else if(jumin != null) {
          obj.iType = TYPE_JUMIN;
          obj.style.textAlign = "center";
          obj.style.imeMode = "inactive";
          obj.setAttribute("filter","[0-9]");
          obj.setAttribute("mask","999999-9999999");
        } else if(comp != null) {
          obj.iType = TYPE_COMP;
          obj.style.textAlign = "center";
          obj.style.imeMode = "inactive";
          obj.setAttribute("filter","[0-9]");
          obj.setAttribute("mask","999-99-99999");
        } else if(mail != null) {
          obj.iType = TYPE_MAIL;
          obj.style.imeMode = "inactive";
          obj.setAttribute("filter","[a-zA-Z0-9.@\\-_]");
        } else if(tel != null) {
          obj.iType = TYPE_TEL;
          obj.style.imeMode = "inactive";
          obj.setAttribute("filter","[0-9-]");
        } else if(mask) {
          obj.iType = TYPE_MASK;
        } else {
          obj.iType = TYPE_NONE;
        }
      case "password" :
      case "file" :
        if(required != null ) {
          //obj.style.backgroundImage="url(/jsp/images/required.gif)";
          obj.style.backgroundPosition="top right";
          obj.style.backgroundRepeat="no-repeat";
        }

        obj.oldkeypress = obj.onkeypress;
        obj.onkeypress = f_onkeypress;
        obj.onfocus = f_onfocus;
        obj.oldblur = obj.onblur;
        obj.onblur = f_onblur;
      case "select-one":
        obj.validate = f_validate;
        obj.validate_display = f_validate_display;
        break;
      case "textarea" :
        break;
      default:
        break;
    }
  }

  if(obj.getAttribute("readonly")) {
    //obj.style.backgroundColor = "#E8E8E8";
    obj.tabIndex = -1;
  }

  if( obj.getAttribute("left") != null )
    obj.style.textAlign = "left";
  if( obj.getAttribute("right") != null )
    obj.style.textAlign = "right";
  if( obj.getAttribute("center") != null )
    obj.style.textAlign = "center";

  if( obj.type != "hidden")
    toFormat(obj);

  if(fcs != null)
    obj.focus();
}

function f_ondragstart() {
  return false;
}
function f_onselectstart() {
  return false;
}
function f_oncontextmenu() {
  return false;
}

///////////////////////////////////////////////////////////////////////////////
// ÇÔ¼ö¸í : init()
// ³»  ¿ë : Body°¡ LoadµÉ¶§ FormÀÇ °¢ Elements¿¡ AttributeÁöÁ¤ ¹× EventHandlerÁöÁ¤
///////////////////////////////////////////////////////////////////////////////
function init() {
//    document.onselectstart = f_onselectstart;
    document.ondragstart   = f_ondragstart;
//    document.oncontextmenu = f_oncontextmenu;           // ÁÖ¼® ÇØÁ¦ : ¿À¸¥ÂÊ ¸¶¿ì½º »ç¿ëÇÏÁö ¸øÇÏµµ·Ï

    for(var f = 0; f < document.forms.length; f++){
        var mForm =  document.forms[f];
        var iElements = mForm.elements.length;

        for(var i = 0; i < iElements; i++)
            setField(mForm.elements[i]);

        mForm.oldSubmit = mForm.onsubmit;
        mForm.onsubmit  = f_onsubmit;
    }

    if(document.all && document.all.tags("BLINK").length > 0)
        setInterval("setBlink()",500);
}