/**
 * HTML ¾È¿¡ ÀÖ´Â °´Ã¼(INPUT, SELECT µî)ÀÇ value ¸¦ ¾ò´Â´Ù.
 *
 * <¿¹>
 *	ÀÏ¹ÝÀûÀÎ °´Ã¼µé :
 *		var strValue = getValue(document.form1.input1);
 *		alert(strValue);
 *
 *	SELECT °´Ã¼ :
 *		var strValue = getValue(document.form1.select1);
 *		alert(strValue);
 *
 *	MULTIPLE ¼Ó¼ºÀÌ ÀÖ´Â SELECT °´Ã¼ :
 *		var aValue = getValue(docment.form1.select2);
 *		for (var i = 0; i < aValue.length; i++) {
 *			alert(aValue[i]);
 *		}
 *
 * @param obj HTML °´Ã¼
 * @return °´Ã¼ÀÇ value ¼Ó¼º °ª
 * 
 */
function getValue(obj) {
   var rValue = null;
   switch(obj.tagName.toUpperCase()) {
      case "SELECT" :
         if(obj.multiple) {
            var aValues = new Array();
            var x = 0;
            for(var i = 0; i < obj.length; i++) {
               if(obj.options[i].selected) {
                  aValues[x++] = obj.options[i].value;
               }
            }
            return aValues;
         }
         else {
            if(obj.selectedIndex >= 0) {
               rValue = obj.options[obj.selectedIndex].value;
            }
	        if(rValue == "none") {
    	    	rValue = null;
        	}
         }

         break;
      default : 
        rValue = obj.value;
         break;
   }
   if(rValue == null || rValue == "undefined") {
      rValue = "";
   }
   return rValue;
}

/**
 * °´Ã¼ÀÇ value ³ª ¹®ÀÚ¿­ÀÇ °ªÀÌ ÀÖ´ÂÁö È®ÀÎÇÔ.
 * ¹®ÀÚ¿­ÀÇ ±æÀÌ°¡ 0ÀÌ¸é falseÀÌ´Ù.
 *
 * @param obj ¹®ÀÚ¿­À» È®ÀÎÇÒ °´Ã¼ ¶Ç´Â ¹®ÀÚ¿­
 * @return ¹º°¡°¡ ÀÖÀ¸¸é true, ¾Æ´Ï¸é false
 *
 */

function chkStr(obj) {
   var x =(obj == "[object]" ? getValue(obj) : obj);
   return(x.length > 0 ? true : false);
}

/**
 * °´Ã¼ÀÇ value ³ª ¼ýÀÚ, ¹®ÀÚ¿­À» °Ë»çÇÏ¿© ¼ýÀÚÀÎÁö È®ÀÎÇÔ
 *
 * @param obj ¼ýÀÚÀÎÁö È®ÀÎÇÒ °´Ã¼ ¶Ç´Â ¼ýÀÚ, ¹®ÀÚ
 * @return ¼ýÀÚÀÌ¸é true, ¾Æ´Ï¸é false
 *
 */

function chkNum(obj) {
   var x =(obj == "[object]" ? getValue(obj) : obj);
   if(x.length <= 0) {
      return false;
   }
   return !isNaN(x);
}


/**
 * ¹®ÀÚ¿­ÀÇ byte ´ÜÀ§ÀÇ ±æÀÌ¸¦ ±¸ÇÑ´Ù.
 *
 * @param s byte ´ÜÀ§ÀÇ ±æÀÌ¸¦ ±¸ÇÒ ¹®ÀÚ¿­
 * @return byte ´ÜÀ§ ±æÀÌ
 *
 */

function getByte(s) {
    var sum = 0;
    var len = s.length;
    for (var i=0; i<len; i++) {
        var ch = s.substring(i, i + 1);
        var en = escape(ch);
        if ( en.length <= 4 ) {
            sum++;
        } else {
            sum += 2;
        }
    }
    return sum;
}


var firstInvalidObject = null;

/**
 * HTML ÀÇ FORM °´Ã¼¸¦ ¹Þ¾Æ¼­ ±× ¾È¿¡ ÀÖ´Â ¸ðµç °´Ã¼µéÀÇ °ªÀ» È®ÀÎÇÔ.
 * °¢ °´Ã¼µéÀÇ °ªµéÀÌ ÀûÇÕÇÑ °ªÀ» °®Áö ¾Ê¾ÒÀ» °æ¿ì ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÔ.
 *
 * HTML tag¿¡ ¼Ó¼ºÀ» Ãß°¡ÇÑ´Ù.
 *  DTYPE : °ªÀÇ À¯Çü ( S = ¹®ÀÚ, N = ¼ýÀÚ, D = ³¯Â¥, F = ÆÄÀÏÀÌ¸§) - ÇÊ¼ö ¼Ó¼º
 *  DFMAXLENGTH : DTYPE ÀÌ F ÀÎ °æ¿ì °æ·Î¸¦ Á¦¿ÜÇÑ ¼ø¼öÆÄÀÏÀÌ¸§ÀÇ Çã¿ë±æÀÌ
 *  DNULL : °ªÀÌ null ÀÏ ¼ö ÀÖ´ÂÁö. (Y = null Çã¿ë, N = null Çã¿ëÇÏÁö ¾ÊÀ½; ½ÇÁúÀûÀ¸·Î´Â NULLÀÌ ¾Æ´Ï°í ÀÔ·ÂÀ» ¾ÈÇß´Ù´Â ÀÇ¹ÌÀÓ) - ¼±ÅÃÀû; default=Y
 *  DSIZE : ¹®ÀÚ ¶Ç´Â ¼ýÀÚ °ªÀÇ ±æÀÌ, ÀÌ °ªÀ» ¼³Á¤ÇÏ¸é Ç×»ó ÀÌ °ªÀÇ ±æÀÌ¸¸Å­ ÀÔ·ÂÀÌ µÇ¾î¾ß ÇÔ, ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é ±æÀÌ¸¦ Á¦ÇÑÇÏÁö ¾ÊÀ½ - ¼±ÅÃÀû; default=N/A
 *  MAXLENTH : °ªÀÇ ÃÖ´ë ±æÀÌ, ÀÌ °ªÀ» ¼³Á¤ÇÏ¸é ÀÌ °ªº¸´Ù Àû°Å³ª °°Àº ±æÀÌ¸¸Å­ÀÇ ÀÚ·á°¡ ÀÔ·ÂÀÌ µÇ¾î¾ß ÇÔ. ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é ±æÀÌ¸¦ Á¦ÇÑÇÏÁö ¾ÊÀ½ - ¼±ÅÃÀû; default=N/A
 *  DCOND : °ªÀÇ Çã¿ë ¹üÀ§¸¦ ¼³Á¤ÇÔ. - ¼±ÅÃÀû; default=N/A
 *		¿¹1) 100 º¸´Ù Å©°í 200 º¸´Ù ÀÛÀº °ªÀº? >,100,&&,<,200
 *		¿¹2) "abc" º¸´Ù Å©°Å³ª °°°í, "xyz"º¸´Ù ÀÛ°Å³ª °°Àº °ªÀº? >=,abc,&&,<=,xyz
 *		¿¹3) 1000 º¸´Ù Å« °ªÀº? >,1000
 *	
 *  DETC : Æ¯¼ö¹®ÀÚ°¡ ÀÖ´Â Ã¼Å©ÇÔ. ÀÌ °ªÀ» "C" ·Î ¼³Á¤ÇÏ¸é Æ¯¼ö¹®ÀÚ°¡ ÀÖ´ÂÁö Ã¼Å©ÇÑ´Ù. - ¼±ÅÃÀû; default=N/A
 *	DFOCUS : ÀÌ°ªÀÌ N ÀÌ¸é ÇØ´ç ÇÊµå°¡ VALIDATION Ã¼Å©¿¡ ½ÇÆÐÇÏ¿©µµ FOCUS ¸¦ °¡ÁöÁö ¾ÊÀ½ (HIDDEN ÇÊµåÀÇ °æ¿ì FOCUS ÁÙ ¶§ ½ºÅ©¸³Æ® ¿À·ù¹ß»ý)
 */
function validateFormItems(obj) {
	firstInvalidObject = null;
	var rStr = doValidate(obj);
	if ( rStr != "" && firstInvalidObject != null) {
		if (firstInvalidObject.focus != null) firstInvalidObject.focus();
		if (firstInvalidObject.select != null) firstInvalidObject.select();
   }

	return rStr;
}

function doValidate(obj) {
   var rStr = "";
   var o = obj.children;
   if(o == null || o != "[object]" || o == "undefined") {
      return rStr;
   }

   var rTmp;
   var isFocus;
   for(var i = 0; i < o.length; i++) {
      var dType = o[i].getAttribute("DTYPE");
      
      // °´Ã¼°¡ textarea, textfield ÀÎ °æ¿ì ÁÂ¿ìtrimÀ» °´Ã¼¿¡ °ªÀ» ¼ÂÆÃÇÑ´Ù.
      if ( (o[i].tagName=="INPUT" && o[i].type=="text" ) || o[i].tagName=="TEXTAREA" ) {
         o[i].value = alltrim(o[i].value);
      }
      
      if(dType != null && dType != "undefined") {
         rTmp = checkFieldValid(o[i], dType);
         if (rTmp != "" && firstInvalidObject == null){ 
			isFocus = o[i].getAttribute("DFOCUS");
			if ( isFocus == null || isFocus != "N" ) firstInvalidObject = o[i]; 
         }
         rStr += rTmp;
      }
      rStr += doValidate(o[i]);
   }

   return rStr;
}

/**
 * ´ÜÀÏ Form °´Ã¼ÀÇ validationÀ» È®ÀÎÇÑ´Ù.
 * @param obj validationÀ» È®ÀÎÇÒ Form °´Ã¼
 */
function checkValid(obj) {
	if(obj == null || obj == "undefined") {
		return "";
	}
    
    var rStr = "";
    var dType = obj.getAttribute("DTYPE");
    if(dType != null && dType != "undefined") {
        rStr = checkFieldValid(obj, dType);
    }

	if (rStr != "") obj.focus();
	return rStr;
}

/**
 * FORM ÀÇ °´Ã¼ÀÇ À¯Çü(¹®ÀÚ, ¼ýÀÚ)¿¡ µû¶ó ±× °´Ã¼ÀÇ °ªÀ» Á¡°ËÇÑ´Ù.
 * 1. NULL °ªÀ» Çã¿ëÇÏÁö ¾Ê´Â ÇÊµå¿¡¼­ NULL ¶Ç´Â ºó¹®ÀÚ¿­ÀÌ ÀÖ´ÂÁö Á¡°ËÇÑ´Ù.
 * 2. Á¶°Ç(>, <, ==, <=, >=, &&, || µî)¿¡ µû¸¥ °ªÀÇ ¹üÀ§¸¦ Á¡°ËÇÑ´Ù.
 * 3. ÇÊµåÀÇ °ªÀÌ °¡Áú ¼ö ÀÖ´Â ÃÖ´ë ±æÀÌ¸¦ Á¡°ËÇÑ´Ù.
 * 4. ¼ýÀÚÀÇ °æ¿ì ÀÔ·Â °ªÀÌ ¼ýÀÚÀÎÁö Á¡°ËÇÑ´Ù.
 * 5. ³¯Â¥ÀÇ °æ¿ì ÀÔ·Â °ªÀÌ ³¯Â¥À¯ÇüÀÎÁö Á¡°ËÇÑ´Ù.
 *
 * @param obj °ªÀ» Á¡°ËÇÒ FORM °´Ã¼.
 * @param dType °´Ã¼ÀÇ À¯Çü°ª (S = ¹®ÀÚ¿­, N = ¼ýÀÚ).
 * @return °´Ã¼ÀÇ °ªÀÌ Á¡°ËÀ» Åë°úÇÏÁö ¸øÇÑ °æ¿ì¿¡¸¸ ¿¡·¯ ¸Þ¼¼Áö°¡ ¹ÝÈ¯µÈ´Ù.
 *
 */

function checkFieldValid(obj, dType) {
   var bNull = obj.getAttribute("DNULL");
   var nSize = parseInt(obj.getAttribute("DSIZE"));
   var nMinLen = parseInt(obj.getAttribute("MINLENGTH"));
   var nMaxLen = parseInt(obj.getAttribute("MAXLENGTH"));
   var sCond = obj.getAttribute("DCOND");
   var isEtc = obj.getAttribute("DETC");
   var sAlt = obj.getAttribute("ALT");
   var dfLen = parseInt(obj.getAttribute("DFMAXLENGTH"));
   var sValue = getValue(obj);

   if(sAlt == null || sAlt == "undefined" || sAlt == "") {
      sAlt = obj.name;
   }

   // Not NULL ÇÊµå¿¡ °ªÀÌ ÀÖ´ÂÁö È®ÀÎ.
   if(bNull == "N" && sValue.length <= 0) {
      return sAlt + "À» ÀÔ·ÂÇÏ¼¼¿ä.\n";
   }
   // ¼ýÀÚ ÇÊµåÀÇ °ªÀÌ ¼ýÀÚÀÎÁö È®ÀÎ.
   if("N" == dType && isNaN(sValue)) {
      return sAlt + " ÇÊµå´Â ¼ýÀÚ¸¸ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.\n";
   }
   // ³¯Â¥ ÇÊµåÀÇ °ªÀÌ ³¯Â¥ÀÎÁö È®ÀÎ.
   if("D" == dType && sValue.length > 0 && !isValidDate(sValue)) {
      return sAlt + " ÇÊµå¿¡ ÀûÇÕÇÑ ³¯Â¥Çü °ªÀÌ ÀÔ·ÂµÇÁö ¾Ê¾Ò½À´Ï´Ù.\n";
   }
   // ÀüÈ­¹øÈ£ ÇÊµåÀÇ °ªÀÌ ÀüÈ­¹øÈ£ÀÎÁö È®ÀÎ.
   if("T" == dType && sValue.length > 0 && !is_tel_chars(sValue)) {
      return sAlt + " ÇÊµå¿¡ ÀûÇÕÇÑ °ªÀÌ ÀÔ·ÂµÇÁö ¾Ê¾Ò½À´Ï´Ù.\n";
   }
   // ÀÔ·Â°ªÀÇ ±æÀÌ°¡ Á¤È®ÇÑÁö È®ÀÎ.
   if(nSize != NaN && nSize >= 0 && sValue.length > 0 && nSize != getByte(sValue)) {
      if(sValue.length > nSize) {
         return sAlt + " ÇÊµå °ªÀÇ ±æÀÌ°¡ Çã¿ëµÈ ±æÀÌº¸´Ù Å®´Ï´Ù. Çã¿ë±æÀÌ=" + nSize + "\n";
      }
      else if(sValue.length < nSize) {
         return sAlt + " ÇÊµå °ªÀÇ ±æÀÌ°¡ Çã¿ëµÈ ±æÀÌº¸´Ù ÀÛ½À´Ï´Ù. Çã¿ë±æÀÌ=" + nSize + "\n";
      }
   }
   // Æ¯¼ö¹®ÀÚ Ã¼Å©.
   if(isEtc == "C"){
   		if(is_etc(sValue)) {
   			return sAlt + " ÇÊµå¿¡ Æ¯¼ö¹®ÀÚ°¡ Æ÷ÇÔµÇ¾î ÀÖ½À´Ï´Ù.\n";
   		}
   }
   
   // ÆÄÀÏÀÌ¸§ ±æÀÌ Ã¼Å©
   if ( "F"==dType ) {
   		var filenm = sValue;
   		var pos = sValue.lastIndexOf("\\");
   		if ( pos!=-1 ) {
   			filenm = sValue.substring(pos+1,sValue.length);
   		}
  		if ( getByte(filenm) > dfLen ) {
	   		return sAlt + " ÇÊµåÀÇ ÆÄÀÏ¸í ±æÀÌ°¡ Çã¿ëµÈ ±æÀÌº¸´Ù Å®´Ï´Ù. ÃÖ´ëÇã¿ë±æÀÌ=" + dfLen + "\n";
	   	}
   }
  
   // ÀÔ·Â°ªÀÇ ±æÀÌ°¡ Çã¿ë ÃÖ´ë ±æÀÌ¸¦ ³ÑÁö ¾Ê´ÂÁö È®ÀÎ.
   var slength = getByte(sValue);
   if(nMaxLen != NaN && nMaxLen >= 0 && sValue.length > 0 && nMaxLen < slength) {	  return "ÇÑ±ÛÀº " + nMaxLen + "ÀÚ ¿µ¹®Àº " + (nMaxLen*2) + "±îÁö ÀÔ´Ï´Ù.\n";	
      //return sAlt + " ÇÊµå °ªÀÇ ±æÀÌ°¡ Çã¿ëµÈ ±æÀÌº¸´Ù Å®´Ï´Ù. ÇöÀç±æÀÌ=" + slength + ", ÃÖ´ëÇã¿ë±æÀÌ=" + nMaxLen + "\n";
   }

   // ÀÔ·Â°ªÀÇ ±æÀÌ°¡ Çã¿ë ÃÖ¼Ò ±æÀÌ¿¡ ¸ø¹ÌÄ¡´ÂÁö È®ÀÎ.
   if(nMinLen != NaN && nMinLen >= 0 && sValue.length > 0 && nMinLen > slength) {
      return sAlt + " ÇÊµå °ªÀÇ ±æÀÌ°¡ Çã¿ëµÈ ±æÀÌº¸´Ù ÀÛ½À´Ï´Ù. ÇöÀç±æÀÌ=" + slength + ", ÃÖ¼ÒÇã¿ë±æÀÌ=" + nMinLen + "\n";
   }

   // ÀÔ·Â°ªÀÇ Á¶°Ç È®ÀÎ
   if(sValue.length <= 0) {
      return "";
   }
   // ¼³Á¤µÈ Á¶°ÇÀÌ ÀÖÀ¸¸é...
   if(sCond != null && sCond != "undefined") {
      var aCond = parseDilim(sCond, ",");
      // ÄÞ¸¶·Î ºÐ¸®µÈ Á¶°ÇÀ» ÀÐ¾îµéÀÓ.
      var sExp = "";
      var nRem = 0;
      for(var i = 0; i < aCond.length; i++) {
         nRem = i % 3;
         if(nRem == 0) { /**  Á¶°Ç  **/
            sExp += " " + quote(sValue, dType) + " " + aCond[i];
         } else if(nRem == 1) { /**  ¹üÀ§  **/
            sExp += " " + quote(aCond[i], dType);
         } else if (nRem == 2) { /**  ¿¬°á ¿¬»êÀÚ  **/
            sExp += " " + aCond[i];
         }
      }
      eval("var b = (" + sExp + ");");
      if(!b) {
         return sAlt + " ÇÊµåÀÇ °ªÀÌ ÀûÇÕÇÏÁö ¾Ê½À´Ï´Ù. " + sExp + "\n";
      }
   }
   return "";
}

function quote(str, dType) {
   return(dType == "S" ? "'" : "") + str +(dType == "S" ? "'" : "");
}

/**
 * ¹®ÀÚ¿­À» ÁÖ¾îÁø dilimeter¸¦ ÀÌ¿ëÇÏ¿© ºÐ¸®ÇÑ´Ù.
 * ºÐ¸®µÈ ¹®ÀÚ¿­Àº ¹è¿­·Î ¹ÝÈ¯µÈ´Ù.
 *
 * @param str ºÐ¸®¸¦ ¿øÇÏ´Â ¹®ÀÚ¿­ - dilimeter´Â ¾î¶² ¹®ÀÚ¿­ÀÌ¾îµµ »ó°ü¾ø´Ù(¿¹: ',', '...' µî).
 * @return ºÐ¸®µÈ ¹®ÀÚ¿­ÀÇ ¹è¿­.
 *
 */

function parseDilim(str, dilim) {
   var n = dilim.length;
   var pos = str.indexOf(dilim);
   var aStr = new Array();
   var i = 0;
   for(i = 0; pos >= 0; i++) {
      aStr[i] = str.substring(0, pos);
      str = str.substring(pos + n, str.length);
      pos = str.indexOf(dilim);
   }
   if(str.length > 0) {
      aStr[i] = str;
   }
   return aStr;
}

/**
 * ¹®ÀÚ¿­ÀÇ ¿ÞÂÊ °ø¹é ¹®ÀÚ¸¦ Á¦°ÅÇÑ´Ù.
 * @param str °ø¹éÀ» Á¦°ÅÇÒ ¹®ÀÚ¿­
 * @return ¿ÞÂÊÀÇ °ø¹éÀ» Á¦°ÅÇÑ ¹®ÀÚ¿­
 *
 */

function ltrim(str) {
   var l = str.length;
   var i = 0;
   for(; i < l; i++) {
      if(str.substring(i, i + 1) != " ")
      break;
   }
   return str.substring(i);
}

/**
 * ¹®ÀÚ¿­ÀÇ ¿À¸¥ÂÊ °ø¹é ¹®ÀÚ¸¦ Á¦°ÅÇÑ´Ù.
 * @param str °ø¹éÀ» Á¦°ÅÇÒ ¹®ÀÚ¿­
 * @return ¿À¸¥ÂÊÀÇ °ø¹éÀ» Á¦°ÅÇÑ ¹®ÀÚ¿­
 *
 */

function rtrim(str) {
   var l = str.length;
   var i = l;
   for(; i > 0; i--) {
      if(str.substring(i - 1, i) != " ")
      break;
   }
   return str.substring(0, i);
}

/**
 * ¹®ÀÚ¿­ÀÇ ÁÂ/¿ì °ø¹é ¹®ÀÚ¸¦ ¸ðµÎ Á¦°ÅÇÑ´Ù.
 * @param str °ø¹éÀ» Á¦°ÅÇÒ ¹®ÀÚ¿­
 * @return ÁÂ/¿ìÀÇ °ø¹éÀ» Á¦°ÅÇÑ ¹®ÀÚ¿­
 *
 */

function alltrim(str) {
   return ltrim(rtrim(str));
}

/**
 * Æ¯¼ö¹®ÀÚ Ã¼Å©
 * @param srcStr 
 * @return 
 *
 */
var _etcValue = '~`!#$%%^&*_=+\|[{]};:\'\",<>/?';

function is_etc(value) {
    var   i, j;
    
    for(i=0; i<value.length;i++){
	    for(j=0;j<_etcValue.length;j++) {
	        if(value.charAt(i) == _etcValue.charAt(j)) {
	            return true;
	        }
	    }
    }
    return false;
}

/**
  * ÀüÈ­¹øÈ£¸¦ ±¸¼ºÇÒ ¸¸ÇÑ ¹®ÀÚÀÎ°¡¸¦ Ã¼Å©ÇÏ´Â ÇÔ¼ö ( ¼ýÀÚ¿Í '-'¸¸ Çã¿ë )
  * @param value È®ÀÎÇÒ ¹®ÀÚ¿­
  */

var _telValue = '0123456789-'; 
 
function is_tel_chars(value) {
    var i,j;
    var isVal1, isVal2;
    
    isVal1 = true;
    for ( i=0 ; i<value.length ; i++ ) {
        isVal2 = false;       
        for( j=0 ;j<_telValue.length ; j++ ) {
            if( value.charAt(i)==_telValue.charAt(j) ) {
                isVal2 = true;
                break;
            }
        }
        if ( isVal2==false ) {
            isVal1 = false;
            break;
        }
    }
    return isVal1;
}

/**
  * validate email field
  * @param value
  */
function is_email(value) {
	var s_email;
	
	s_email = alltrim(value);
	
	if (s_email.length == 0) {
		return (true);
	}
	
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(s_email))
		return (true);
	
	return (false);
}

/**
  * validate file types for image
  * @param value
  */
function is_valid_image(value) {
	var s_image;
	var s_image_type = new Array();
	s_image_type[0] = ".gif";
	s_image_type[1] = ".jpg";
	
	s_image = alltrim(value);
	
	if (s_image.length == 0) {
		return (true);
	}
	
	for (m = 0; m < s_image_type.length; m++) {
		if (s_image.match(s_image_type[m])) {
			return true;
		}
	}
	
	return (false);
}