var UTIL_JS_DEBUG = true;

// Internet Explorer에서 셀렉트박스와 레이어가 겹칠시 레이어가 셀렉트 박스 뒤로 숨는 현상을 해결하는 함수
// 레이어가 셀렉트 박스를 침범하면 셀렉트 박스를 hidden 시킴
// 사용법 :
 // <div id=LayerID style="display:none; position:absolute;" onpropertychange="selectBoxHidden('LayerID')">
 function selectBoxHidden(layer_id)   {
        var ly = eval(layer_id);
        // 레이어 좌표
        var ly_left  = ly.offsetLeft;
        var ly_top    = ly.offsetTop;
        var ly_right  = ly.offsetLeft + ly.offsetWidth;
        var ly_bottom = ly.offsetTop + ly.offsetHeight;
        // 셀렉트박스의 좌표
        var el;
        for (i=0; i<document.forms.length; i++) {
            for (k=0; k<document.forms[i].length; k++) {
                el = document.forms[i].elements[k];
                if (el.type == "select-one") {
                    var el_left = el_top = 0;
                    var obj = el;
                    if (obj.offsetParent) {
                        while (obj.offsetParent) {
                            el_left += obj.offsetLeft;
                            el_top  += obj.offsetTop;
                            obj = obj.offsetParent;
                        }
                    }
                    el_left  += el.clientLeft;
                    el_top    += el.clientTop;
                    el_right  = el_left + el.clientWidth;
                    el_bottom = el_top + el.clientHeight;
                    // 좌표를 따져 레이어가 셀렉트 박스를 침범했으면 셀렉트 박스를 hidden 시킴
                    if ( (el_left >= ly_left && el_top >= ly_top && el_left <= ly_right && el_top <= ly_bottom) ||
                        (el_right >= ly_left && el_right <= ly_right && el_top >= ly_top && el_top <= ly_bottom) ||
                        (el_left >= ly_left && el_bottom >= ly_top && el_right <= ly_right && el_bottom <= ly_bottom) ||
                        (el_left >= ly_left && el_left <= ly_right && el_bottom >= ly_top && el_bottom <= ly_bottom) )
                        el.style.visibility = 'hidden';
                }
            }
        }
  }

 // 감추어진 셀렉트 박스를 모두 보이게 함
function selectBoxVisible()    {
   for (i=0; i<document.forms.length; i++) {
      for (k=0; k<document.forms[i].length; k++) {
          el = document.forms[i].elements[k];
          if (el.type == "select-one" && el.style.visibility == 'hidden')
              el.style.visibility = 'visible';
        }
   }
}

//달력 띄우기
//dispalyBoxName : 선택 값을 리턴 받을  Form Tag Item Name (text, hidden Type)
function openCalendar(dispalyBoxName) {
	var iScreenX=screen.Width;
	var iScreenY=screen.Height;
	iScreenX=iScreenX/2-120;
	iScreenY=iScreenY/2-150;
	var selectDayURL="/comn/calendar.asp?strDisplayBoxName="+dispalyBoxName;

	a = window.open (selectDayURL, "select_date", "width=210, height=230, top="+iScreenY+", left="+iScreenX);
	a.focus();
}

/*
함수명 :  마우스 좌표값 표시
*/
/*
var IE = document.all?true:false;
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;

var tempX = 0;
var tempY = 0;

function getMouseXY(e) {
if (IE) {
 tempX = event.clientX + document.body.scrollLeft;
 tempY = event.clientY + document.body.scrollTop;
}
else {
 tempX = e.pageX;
 tempY = e.pageY;
}
if (tempX < 0){tempX = 0;}
if (tempY < 0){tempY = 0;}
 window.status = "x:  " + tempX + ", Y: " + tempY;
 return true;
}
*/


/*
함수명 :  위치값 저장 클래스
*/
function posClass() {
	this.Value = null;
	this.Left = 0;
	this.Top = 0;

	this.setLeftTopPos = function (leftVal, topVal) {
		this.Left = leftVal;
		this.Top = topVal;
	}

	this.setLefttBottom = function (obj) {
		var intX = 0; 	var  intY = 0; 	var intH = obj.offsetHeight;
		 if (obj.offsetParent) {
			 while (obj.offsetParent) {
				 intX += obj.offsetLeft;
				 intY += obj.offsetTop;
				 obj = obj.offsetParent;
			 }
		 } else if (obj.x) {	// nn4 - only works with "a" tags
			 intX += obj.x;
			 intY += obj.y;
		 }
		this.Left = intX;
		this.Top = intY + intH;
	}

	this.setLeftTop = function (obj) {
		var intX = 0; 	var  intY = 0;
		 if (obj.offsetParent) {
			 while (obj.offsetParent) {
				 intX += obj.offsetLeft;
				 intY += obj.offsetTop;
				 obj = obj.offsetParent;
			 }
		 } else if (obj.x) {
			 intX += obj.x;
			 intY += obj.y;
		 }
		this.Left = intX;
		this.Top = intY;
	}
}

/*
함수명 :  clearSelectBox
인수    :  argObj [셀렉트 박스 오브젝트]
설명    :  셀렉트박스의 옵션을 없앤다
사용예 : 	clearSelectBox(document.testForm.upCateSeq)
*/
function clearSelectBox(argObj) {
   for (i = argObj.length-1; i>=0; i--) {
 	  argObj.options[i] = null;
   }
}

/*
함수명 :  replaceTextAll
인수    :  orgText [문자열] , replaceText[변경하고자하는 문자열], changeText[변경될 문자열]
설명    :  문자열에서 특정 문자열만 다른 문자열로 모두  변경하여 리턴한다
사용예 : 	testString = replaceTextAll(testString, "a", "b");
*/
function replaceTextAll(orgText, replaceText, changeText) {
	 while(true) {
		if (orgText.indexOf(replaceText) != -1 ) {
		   orgText = orgText.replace(replaceText, changeText);
		 } else {
			 break;
		}
   }
   return orgText;
}

/*
함수명 :  currentParamattaURL
인수    :  deleteVal [제거할 파라메터명]  - 예) seq,mode,  ","로 끝나야함
설명    :  현재 URL의 GET 파라메터를 불필요한 파라메터를 제거하고 결과를 리턴한다.
사용예 : var PAGE_PARA_VW = currentParamattaURL("seq,disno,mode,");
*/
function currentParamattaURL(deleteVal) {
	var urlQuery = replaceTextAll(window.location.search, "?", "");
	var convetPara =  "";
	var getValue = "?";
	var paraArray = urlQuery.split("&");							 //%26

	 for(i=0; i< paraArray.length; i++)    {
	    var  urlparam = paraArray[i].split("=");

		if (typeof(urlparam[1]) != "undefined")		{
			if (deleteVal != "" && deleteVal != null)	{										//제거할 파라메터가 있을 경우
				 deleteVal = deleteVal.toLowerCase();
				if (deleteVal.indexOf(urlparam[0].toLowerCase() + ",") == -1)
					getValue += urlparam[0] + "=" +  urlparam[1] + "&";
			} else  {
				getValue += urlparam[0] + "=" +  urlparam[1] + "&";
			}
		 }  //end if
    } //end for

	return getValue.substring(0, getValue.length-1);
}

/*
함수명 :  replaceFileName
인수    :  oldString [변경하고자하는 문자], newString[변경될 문자]
설명    :  현재 URL에서 특정글자로 끝나는 파일명 변경
사용예 : replaceFileName("Li", "Vw")
*/
function replaceFileName(oldString, newString) {
	var currenPage, replaceURL, replaceURL1, replaceURL2, currenPageExt;
	var comaLastIndex, cutMinusLength;
	 replaceURL = "";														//리턴되는 파일명
	 currenPage = window.location.pathname;
	 oldString = oldString.toLowerCase();
	 comaLastIndex = currenPage.lastIndexOf(".");
	 currenPageExt = currenPage.substring(comaLastIndex, currenPage.length);
	 cutMinusLength = currenPageExt.length + oldString.length;

	 replaceURL1 =  currenPage.substring(0, currenPage.length - cutMinusLength);
	 replaceURL2 =  currenPage.replace(replaceURL1, "").replace(currenPageExt, "");
	 replaceURL2 =  replaceURL2.toLowerCase().replace(oldString, newString);

	 replaceURL = replaceURL1 + replaceURL2 + currenPageExt;

	 return replaceURL;
}

/*
함수명 :  setToDayCookie
인수    :  name [쿠키 이름], value[쿠키 설정값]
설명    :  자정까지 쿠키 셋팅
사용예 : setToDayCookie( "notice", "true");
*/
function setToDayCookie(name, value) {
		var now = new Date();  // 현재 시각을 now변수에 저장합니다.
		todayDate = new Date(now.getYear(), now.getMonth(), now.getDate(), 23, 59, 59);
		document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";"
}

/*
함수명 :  setCookie
인수    :  name [쿠키 이름], value[쿠키 설정값]
설명    :  쿠키값 설정
사용예 : setToDayCookie( "notice", "true", 1);
*/
function setCookie( name, value, expiredays ) {
		var todayDate = new Date();
		todayDate.setDate( todayDate.getDate() + expiredays );
		document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";"
}

/*
함수명 :  getCookie
인수    :  name [쿠키 이름]
설명    :  쿠키값 읽기
사용예 : var cookeVal= getCookie( "notice");
*/
function getCookie(name) {
	var nameOfCookie=name+"=";
	var x=0;
	while(x<=document.cookie.length) {
		var y=(x+nameOfCookie.length)
		if(document.cookie.substring(x,y)==nameOfCookie) {
		if((endOfCookie=document.cookie.indexOf(";",y))==-1)
			endOfCookie=document.cookie.length;
			return unescape(document.cookie.substring(y,endOfCookie));
		}
		x=document.cookie.indexOf(" ",x) +1;
		if(x==0)
			break;
		}
}

/*
함수명 :  resizeImage
인수    :  idName [쿠키 이름], value[쿠키 설정값]
설명    :  이미지 리사이징
사용예 : <img src='이미지경로' onload=""resizeImage('VwImg1',  '400')""  id='VwImg1'>
*/
function resizeImage(idName, maxW) {
	var w =document.getElementById(idName).width;

	if (w <=0) {
		bolTime = window.setTimeout("resizeImage('"+idName+"'," + maxW + ")",10);
	} else  	{
		if (parseInt(w) > parseInt(maxW))
			document.getElementById(idName).width = maxW;
	}
}

/*
함수명 :  joinOneArray
인수    :  arrayVal1 [배열1], arrayVal2[배열2]
설명    :  배열1의 값에 배열2의 값만큼 합쳐진 배열을 리턴한다.
사용예 : var sumArray = joinOneArray(arrayVal1, arrayVal2) ;
*/
function joinOneArray(arrayVal1, arrayVal2) {
	var returnArray = Array(arrayVal1.length + arrayVal2.length);
	var j = 0;

	for (var i in arrayVal1) {
		returnArray[j] = arrayVal1[i];
		j++;
	}

	for (var i in arrayVal2) {
		returnArray[j] = arrayVal2[i];
		j++;
	}
	return returnArray;
}

/*
함수명 :  onlyDigit
인수    :  없음
설명    :  숫자키만 눌러지도록 한다
사용예 : onkeydown="return onlyDigit();"
*/
function onlyDigit() {
	var e = window.event;
	if(!e.shiftKey && e.keyCode >= 48 && e.keyCode <= 57)  { return true; }				//keyboard's num
	else if (!e.shiftKey && e.keyCode >= 96 && e.keyCode <= 105) { return true; }		 //pad's num
	else {
		switch(e.keyCode) {
			case 8 : //back
			case 35: //end
			case 36: //home
			case 37: //left
			case 38: //top
			case 39: //right
			case 40: //bottom
			case 45: //insert
			case 46: //delete
			case 9 : //tab
			//case 188: //comma
			return true;
		}
	}
	return false;
}

/*
함수명 :  autoTab
인수    :  input[input object], len[최대길이], event[이벤트]
설명    :  자동탭키
사용예 : onKeyUp="return autoTab(this, 3, event);"
*/
function autoTab(input,len, e) {
		var isNN = (navigator.appName.indexOf("Netscape")!=-1);
		var keyCode = (isNN) ? e.which : e.keyCode;
		var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];

		if(input.value.length >= len && !containsElement(filter,keyCode)) {
			input.value = input.value.slice(0, len);
			input.form[(getIndex(input)+1) % input.form.length].focus();
		}

		function containsElement(arr, ele) {
			var found = false, index = 0;

			while(!found && index < arr.length){
				if(arr[index] == ele) {
					found = true;
				} else {
					 index++;
				}
			}
			return found;
		}
		function getIndex(input) {
			var index = -1, i = 0, found = false;

			while (i < input.form.length && index == -1){
				if (input.form[i] == input) {
					index = i;
				} else {
					i++;
				}
			}
			return index;
		}
	return true;
}

/*
함수명 :  removeLastChars
인수    :  checkStr[확인할 문자열]
설명    :  마지막 글자 제거 후 리턴
사용예 :
	var text = document.testForm.test.value;
	removeLastChars(text);
*/
function removeLastChars(checkStr) {
	return checkStr.substring(0,checkStr.length-1);
}

/*
함수명 :  movePage
인수    :  linkurl[이동할 페이지 URL]
설명    :  해당 URL로 페이지 이동
사용예 :
	movePage("1.html");
*/
function movePage(linkurl) {
	window.location.href = linkurl;
}

/*
함수명 :  confirmRedirect
인수    :  msg[확인메시지],  linkurl[이동할 페이지 URL]
설명    :  컴펌후 확인 선택 해당 페이지로 이동한다.
사용예 :
	confirmRedirect("전송하시겠습니까?", "1.html");
*/
function confirmRedirect(msg,linkurl) {
	if(confirm(msg)) {
		window.location.href = linkurl;
	}
}

/*
함수명 :  confirmSubmit
인수    :  msg[확인메시지],  linkurl[이동할 페이지 URL]
설명    :  컴펌후 확인 선택 해당 페이지로 이동한다.
사용예 :
	confirmRedirect("전송하시겠습니까?", "1.html");
*/
function confirmSubmit(msg, formname) {
	if(confirm(msg)) {
		document.forms[testForm].submit();
	}
}

/*
함수명 :  focusFirstTextField
인수    :  formName[폼 이름]
설명    :  인수로 넘어온 폼의 텍스트 박스에 포커스를 위치시킴
사용예 :
	 onload="focusFirstTextField('testForm')"
*/
function focusFirstTextField(formName) {
	form = document.forms[formName];
	var count = form.elements.length;
		for ( var i = 0; i < count; i++ ) {
			if ( form.elements[i].type == "text" || form.elements[i].type == "password" ) {
				form.elements[i].focus();
				return;
			}
		}
}

/*
함수명 :  getRadioChecked
인수    :  msg[확인메시지],  linkurl[이동할 페이지 URL]
설명    :  라디오 버튼 체크 여부
사용예 :
	getRadioChecked(document.testForm.test);
*/
function getRadioChecked(arg) {
  var chkCount = 0;
  var argLength= arg.length;

	for(i=0; i < argLength; i++) {
		if(arg[i].checked == true)   {
		   chkCount +=1;
		}
	  }

	  if (chkCount == 0)
		 return false;
	  else
		return true;
}


/*
함수명 :  confirmSubmit
인수    :  arg[체크박스 object]
설명    :  체크박스에 체크된 박스 수
사용예 :
	getCheckCount(document.testForm.test);
*/
function getCheckCount(arg) {
	  var chkCount = 0;
	  var argLength= arg.length;

	  for(i=0; i < argLength; i++) {
		if(arg[i].checked == true)   {
		   chkCount +=1;
		}
	  }

	  if (chkCount == 0)  {
			if (arg.checked)	  chkCount +=1;
	  }
	 return chkCount;
}

/*
함수명 :  checkBoxSelectAll
인수    :  arg[체크박스 object]
설명    :  체크박스 전체선택하기
사용예 :
	checkBoxSelectAll(document.testForm, "test", this.checked);
*/
function checkBoxSelectAll(objForm, boxName, state){
  	for (i = 0; i< objForm.elements.length; i++){
	 	if( objForm.elements[i].name == boxName){
			objForm.elements[i].checked = state;
		}
	}
}

/*
함수명 :  completeKorean
인수    :  checkStr[확인할 문자열]
설명    :  완성형 한글 체크
사용예 :
	var text = document.testForm.test.value;
	if (!completeKorean(text))
*/
function completeKorean(checkStr) {
	if (typeof(checkStr) == "string") 	{
		for (var i = 0; i < checkStr.length; i++) {
			 if (checkStr.charCodeAt(i) != 32 && (checkStr.charCodeAt(i) < 44032 || checkStr.charCodeAt(i) > 55203))
					 return true;
		}
	}
	return  false;
}

/*
함수명 :  getByteLength
인수    :  s[확인할 문자열]
설명    :  byte수 구하기
사용예 :
	var text = document.testForm.test.value;
	getByteLength(text);
*/
 function getByteLength(s){
        var len = 0;
       if ( s == null ) return 0;

	  for(var i=0;i<s.length;i++){
          var c = escape(s.charAt(i));
          if ( c.length == 1 ) len ++;
          else if ( c.indexOf("%u") != -1 ) len += 2;
          else if ( c.indexOf("%") != -1 ) len += c.length/3;
       }
       return len;
}

/*
함수명 :  calcByte
인수    :  str[원본 문자열]
설명    :  byte수 구하기 : SMS 체크
사용예 :
	var text = document.testForm.test.value;
	calcByte(text);
*/
function calcByte(str) {
	var len = 0;
	for ( k = 0; k < str.length; k++ ) {
		var eschar = str.charAt( k );
      	if ( escape( eschar ).length > 4 ) {
        	len += 2;
       	} else if ( eschar != '\r') {
           	len++;
        }
  	}
	return len;
}

/*
함수명 :  cutText
인수    :  str[원본 문자열]
설명    :  byte수만큼 문자열 자르기
사용예 :
	var text = document.testForm.test.value;
	calcByte(text);

*/
function cutText(str, maxByte) {
	var len = 0;
	var k = 0;
	for ( k ; k < str.length; k++ ) {
		var eschar = str.charAt( k );

      	if ( escape( eschar ).length > 4 ) {
        	len += 2;
       	} else if ( eschar !='\r') {
           	len++;
        }

        if( len > maxByte ) {
            break;
       	}
  	}

	return remove0d( str.substring(0, k) );
}

/*
함수명 :  remove0d
인수    :  str[원본 문자열]
설명    :  마지막에 "%0d" 제거
사용예 :
	var text = document.testForm.test.value;
	remove0d(text);

*/
function remove0d( str ) {
	str = escape( str );

	if ( str.lastIndexOf("%0D") >= str.length - 3 ) {
		str = str.substring( 0, str.lastIndexOf("%0D") );
	}
	return unescape( str );
}


/*
함수명 :  includeChars
인수    :  checkStr[확인할 문자열], chars[허옹된 문자]
설명    :  허용된 문자만  포함되었는지 확인
사용예 :
	var text = document.testForm.test.value;
	includeChars(text, "ABC");
*/
function includeChars(checkStr, chars) {
	if (checkStr.replace(/\s/gi,"")=="")	return false;

	for (var inx = 0; inx < checkStr.length; inx++) {
		if (chars.indexOf(checkStr.charAt(inx)) == -1) 		return false;
	}
	return true;
}

/*
함수명 :  onlyNumber
인수    :  checkStr[확인할 문자열]
설명    :  숫자만으로 이루어진 문자열인지 확인
사용예 :
	var text = document.testForm.test.value;
	onlyNumber(text);
*/
function onlyNumber(checkStr) {
	return includeChars(checkStr, "0123456789");
}

/*
함수명 :  onlyPointNum
인수    :  checkStr[확인할 문자열]
설명    :   숫자와 소수점만으로 이루어진 문자열인지를 확인한다.
사용예 :
	var text = document.testForm.test.value;
	onlyPointNum(text);
*/
function onlyPointNum(checkStr) {
	return includeChars(checkStr, "0123456789.");
}

/*
함수명 :  onlyDashPointNum
인수    :  checkStr[확인할 문자열]
설명    :  숫자와 소수점 하이픈으로만 이루어진 문자열인지를 확인한다.
사용예 :
	var text = document.testForm.test.value;
	onlyDashPointNum(text);
*/
function onlyDashPointNum(checkStr) {
	return includeChars(checkStr, "0123456789.-");
}

/*
함수명 :  onlyAlphaNum
인수    :  checkStr[확인할 문자열]
설명    :  숫자만으로 이루어진 문자열인지 확인
사용예 :
	var text = document.testForm.test.value;
	onlyAlphaNum(text);
*/
function onlyAlphaNum(checkStr) {
	return includeChars(checkStr, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
}

/*
함수명 :  compareText
인수    :  checkStr1[문자열1], checkStr2[문자열2]
설명    :  숫자만으로 이루어진 문자열인지 확인
사용예 :
	var text = document.testForm.test.value;
	var text1 = document.testForm.test1.value;
	compareText(text, text1);
*/
function compareText(checkStr1, checkStr2) {
	if (checkStr1 == checkStr2)	return true;
	return false;
}

/*
함수명 :  onlyNull
인수    :  checkStr[확인할 문자열]
설명    :  빈값인지 확인
사용예 :
	var text = document.testForm.test.value;
	onlyNull(text);
*/
function onlyNull(checkStr) {
	if (checkStr.replace(/\s/gi,"")=="")	return true;
	return false;
}

/*
함수명 :  onlyEmailFormat
인수    :  checkStr[확인할 문자열]
설명    :  E-MAIL 주소 형식의 문자열인지 확인
사용예 :
	var text = document.testForm.test.value;
	onlyEmailFormat(text);
*/
function onlyEmailFormat(checkStr) {
	var atsign = checkStr.indexOf('@');
	var period = checkStr.lastIndexOf('.');
	var space  = checkStr.indexOf(' ');
	var length = checkStr.length - 1;

	if (( atsign < 1 ) || ( period <= atsign + 1 ) || ( period == length ) ||( space  != -1 )) 	{
		return false;
	}
	return true;
}


/*
함수명 :  onlyBizNum
인수    :  checkStr[확인할 문자열]
설명    :  사업자 등록번호가 올바른지 확인
사용예 :
	var text = document.testForm.test.value;
	onlyBizNum(text);
*/
function onlyBizNum(checkStr) {
	var bizID = checkStr.replace(/-/g,"").replace(/\s/g, ""); 	// bizID는 숫자만 10자리로 해서 문자열
	var checkID = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5, 1);
	var tmpBizID, i, chkSum=0, c2, remander;

		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 true;	// OK!
		return false;
}

/*
함수명 :  getNameByFileField
인수    :  checkStr[파일찾아보기로 선택한 물리적경로]
설명    :  파일찾아보기로 선택한 파일 경로에서 파일명만 추출한다.
사용예 :
	var fileName = getNameByFileField(document.forms["testForm"].testValue1.value);
*/
function getNameByFileField(fileSRC){
	return  fileSRC.substring((fileSRC.lastIndexOf("\\")+1), fileSRC.length);
}

/*
함수명 :  getExtByFileName
인수    :  checkStr[파일명]
설명    :  파일명에서확장자만 추출해서 소문자로 변경하여 리턴
사용예 :
	var fileName = getNameByFileField(document.forms["testForm"].testValue1.value);
*/
function getExtByFileName(fileName) {
	return fileName.substring((fileName.lastIndexOf(".")+1),  fileName.length).toLowerCase();
}

/*
함수명 :  onlyImgFileUpload
인수    :  arg[File Filed Object]
설명    :  이미지 파일을 선택했는지 여부를 확인
사용예 :
	onlyImgFileUpload(document.forms["testForm"].testValue)
*/
function onlyImgFileUpload(arg) {
	if (typeof(arg.value) == "undefined")	return false;
	var upfileName = getNameByFileField(arg.value);
	var upfileType = getExtByFileName(upfileName);

	switch (upfileType) 	{
		case  "gif":
		case  "jpeg":
		case  "jpg":
		case  "png":
		case  "bmp":
				return true;
				break;
		default :
			return false;
	}
}

/*
함수명 :  forbidFileUpload
인수    :  arg[File Filed Object]
설명    :  금지된 형식의 파일인지를 판별
사용예 :
	forbidFileUpload(document.forms["testForm"].testValue)
*/
function forbidFileUpload(arg) {
	if (typeof(arg.value) == "undefined")	return false;
	var upfileName = getNameByFileField(arg.value);
	var upfileType = getExtByFileName(upfileName);

	switch (upfileType) 	{
		case  "php":
		case  "html":
		case  "php3":
		case  "htm":
		case  "asp":
		case  "jsp":
		case  "cgi":
		case  "jhtml":
		case  "xhtml":
		case  "exe":
		case  "js":
				return true;
				break;
		default :
			return false;
	}
}

/*
함수명 :  onlySSN
인수    :  input1[주민등록번호 앞자리 입력항목], input2[주민등록번호 앞자리 입력항목]
설명    :  기본적으로 정의된 메시지를 표시해준다.
사용예 :
	onlySSN(sendForm.test1, sendForm.test2);
*/
function onlySSN(input1, input2) {
 var	no1 = input1.value;
 var 	no2 = input2.value;

	if (no1.length != 6){
		return false;

	}	else if (no2.length != 7){
		return true;

	}	else {
		var str_serial1 = no1;
		var str_serial2 = no2;

		var digit=0
		for (var i=0;i<str_serial1.length;i++){
			var str_dig=str_serial1.substring(i,i+1);
			if (str_dig<'0' || str_dig>'9'){
				digit=digit+1
			}
		}

		if ((str_serial1 == '') || ( digit != 0 )){
			return false;
		}

		var digit1=0
		for (var i=0;i<str_serial2.length;i++){
			var str_dig1=str_serial2.substring(i,i+1);
			if (str_dig1<'0' || str_dig1>'9'){
				digit1=digit1+1
			}
		}

		if ((str_serial2 == '') || ( digit1 != 0 )){
			return false;
		}

		if (str_serial1.substring(2,3) > 1){
			return false;
		}

		if (str_serial1.substring(4,5) > 3){
			return false;
		}

		if (str_serial2.substring(0,1) > 4 || str_serial2.substring(0,1) == 0){
			return false;
		}

		var a1=str_serial1.substring(0,1)
		var a2=str_serial1.substring(1,2)
		var a3=str_serial1.substring(2,3)
		var a4=str_serial1.substring(3,4)
		var a5=str_serial1.substring(4,5)
		var a6=str_serial1.substring(5,6)

		var check_digit=a1*2+a2*3+a3*4+a4*5+a5*6+a6*7

		var b1=str_serial2.substring(0,1)
		var b2=str_serial2.substring(1,2)
		var b3=str_serial2.substring(2,3)
		var b4=str_serial2.substring(3,4)
		var b5=str_serial2.substring(4,5)
		var b6=str_serial2.substring(5,6)
		var b7=str_serial2.substring(6,7)

		var check_digit=check_digit+b1*8+b2*9+b3*2+b4*3+b5*4+b6*5

		check_digit = check_digit%11
		check_digit = 11 - check_digit
		check_digit = check_digit%10

		if (check_digit != b7){
			return false;
		}else{
			return true;
		}
	}
}

/*
함수명 :  alertMsg
인수    :  arg[Form Filed Object], strVal[경고메시지구분], nameTxt[경고메시지접두어], minlen[최소길이]
설명    :  기본적으로 정의된 메시지를 표시해준다.
사용예 :
	alertMsg(arg, "never", "[아이디]는");
*/
function alertMsg(arg, errorName, nameTxt, minlen){
	if (minlen == null) 	minlen = "";
   var message = "";
   var space = "             ";

  switch (errorName)  {
    case "never" :
		if (arg.getAttribute("type") == "text" || arg.getAttribute("type") == "password" || arg.getAttribute("type") == "textarea") {
			message =   " 필수로 입력하셔야 하는 사항입니다."
		} else {
			message =   " 필수로 선택하셔야 하는 사항입니다.";
		}
		message  = nameTxt + message + space;
		break;
	case  "alphanum" :
		message =   nameTxt +  " 알파벳과 숫자로만 입력하셔야 하는 사항입니다." + space;
		break;
	case  "hangul" :
		message =  nameTxt +  " 자음과 모음으로 이루어진 한글로 정확하게 입력하셔야 하는 사항입니다." + space;
		break;
    case "number" :
		message =  nameTxt +  " 숫자로만 입력하셔야 하는 사항입니다. " + space;
		break;
	case "mini" :
		message =  nameTxt + " "  + minlen + "자 이상으로 입력하셔야 하는 사항입니다." + space;
		break;
	case "len" :
		message =  nameTxt + " "  + minlen + "자로 입력하셔야 하는 사항입니다." + space;
		break;
	case "email" :
		message =  nameTxt + " 전자우편 형식(test@hotmail.com)으로  입력하셔야 하는 사항입니다." + space;
		break;
	case "idcheck" :
		message =   "[아이디 중복확인]을 하셔야 합니다." + space;
		break;
	case "bizid" :
		message =  "[사업자 등록번호]는 올바른 사업자 등록번호를 입력하셔야 합니다." + space;
		break;
	case "img" :
		message =   nameTxt + " 허용되는 이미지 파일형식(jpg, jpeg, gif, png)의 파일만 업로드가 가능합니다." + space;
		break;
	case "forbid" :
		message =   nameTxt + " 업로드가 금지된 파일형식(php, html, htm, php3, asp, jsp, phtml, cgi, jhtml, exe, js)의 파일입니다." + space;
		break;
	case "ssn" :
		message =   "올바른 [주민등록번호]를 입력하셔야 합니다." + space;
		break;
	case "mem_agree" :
		message =   "[회원가입약관]에 동의 하셔야 합니다." + space;
		break;
	case "mem_jungbo" :
		message =   "[개인정보관리]에 동의 하셔야 합니다." + space;
		break;
	case "choice" :
		message =   nameTxt + space;
		break;
  }
	alert(message);
}


function alertTwoMsg(arg1, arg2, errorName, nameTxt){
   var message = "";
   var space = "             ";
  switch (errorName)  {
    case "not_equal" :
		message = nameTxt +  " 값이 일치하도록 입력하셔야 하는 사항입니다. " + space;
		break;
    case "equal" :
		message = nameTxt +  " 값이 일치하지 않도록 입력하셔야 하는 사항입니다. " + space;
		break;
	}
	alert(message);
}

/*
함수명 :  alertTwoFocusNull
인수    :  arg1[입력항목1], arg2[입력항목2],  strVal[경고메시지구분], fieldText[경고메시지접두어]
설명    :  경고 메시지를 표시하고 입력항목 값을 비우고 포커스를 준다.
사용예 :
	alertFocusNull(arg, "never", "[아이디]는");
*/
function alertTwoFocusNull(arg1, arg2, strVal, fieldText) {
		alertTwoMsg(arg1, arg2,  strVal, fieldText);
		arg1.value = "";
		arg1.focus();
}

/*
함수명 :  alertFocusNull
인수    :  arg[Form Filed Object], strVal[경고메시지구분], fieldText[경고메시지접두어]
설명    :  경고 메시지를 표시하고 입력항목 값을 비우고 포커스를 준다.
사용예 :
	alertFocusNull(arg, "never", "[아이디]는");
*/
function alertFocusNull(arg, strVal, fieldText) {
	alertMsg(arg, strVal, fieldText);
	arg.value = "";
	arg.focus();
}

/*
함수명 :  alertFocus
인수    :  arg[Form Filed Object], strVal[경고메시지구분], fieldText[경고메시지접두어]
설명    :  경고 메시지를 표시하고 포커스를 준다.
사용예 :
	alertFocus(arg, "never", "[아이디]는");
*/
function alertFocus(arg, strVal, fieldText, minlen) {
		if (minlen == null) minlen = "";
		alertMsg(arg, strVal, fieldText, minlen);
		arg.focus();
}

/*
함수명 :  setTextField
인수    :  arg[Form Filed Object], strVal[설정할 값]
설명    :  입력항목에 값을 설정한다.
사용예 :
	setTextField(arg, "테스트");
*/
function setTextField(arg, strVal) {
	arg.value = strVal;
}

/*
함수명 :  setTextFieldNull
인수    :  arg[Form Filed Object]
설명    :  입력항목에 값을 비운다
사용예 :
	setTextFieldNull(arg2);
*/
function setTextFieldNull(arg) {
		arg.value = "";
}

/*
함수명 :  alertSpace
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
설명    :  입력항목의 값이 없으면 경고 메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (alertSpace(document.testForm.test[0], "[아이디]는"))  return;
	2) 같은이름의 입력항목이 한개인 경우
		if (alertSpace(document.testForm, "test1", "[아이디]는"))  return;
*/
function alertSpace(){
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm;

	if (argLen == 2)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		argNm = fieldText;
	} else if (argLen == 3)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
	}

	if (typeof(arg) == "object" && typeof(arg.value) == "string") {
		if (arg.value.replace(/\s/gi,"")=="") {
			alertFocus(arg, "never", fieldText);
			return  true;
		}
	} else {
		if (UTIL_JS_DEBUG)
			alert("alertSpace : '" + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}

/*
함수명 :  alertMinLimit
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	   - 세번째 인수[최소제한길이]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
	   - 네번째 인수[최소제한길이]
설명    :  입력항목의 값이 없으면 길이가 최소치 미만이면 경고 메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (alertMinLimit(document.testForm.test1[0],  "[아이디]는", 2))  return;
	2) 같은이름의 입력항목이 한개인 경우
		 if (alertMinLimit(document.testForm, "test1", "[아이디]는", 2))  return;
*/
function alertMinLimit() {
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm, minlen

	if (argLen == 3)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		minlen = arguments[2];
		argNm = fieldText;
	} else if (argLen == 4)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
		minlen = arguments[3];
	}

	if (minlen == null)  minlen = 0;

if (typeof(arg) == "object" && typeof(arg.value) == "string") {
   	  if (arg.value.length <  parseInt(minlen)) {
			alertFocus(arg, "mini", fieldText , minlen)  ;
			return  true;
	  }
	} else {
		if (UTIL_JS_DEBUG)
			alert("alertMinLimit : '" + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}


/*
함수명 :  alertLenLimit
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	   - 세번째 인수[최소제한길이]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
	   - 네번째 인수[최소제한길이]
설명    :  입력항목의 값의 길이가 일치하지 않으면 경고메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (alertMinLimit(document.testForm.test1[0],  "[아이디]는", 2))  return;
	2) 같은이름의 입력항목이 한개인 경우
		 if (alertMinLimit(document.testForm, "test1", "[아이디]는", 2))  return;
*/
function alertLenLimit() {
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm, minlen

	if (argLen == 3)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		minlen = arguments[2];
		argNm = fieldText;
	} else if (argLen == 4)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
		minlen = arguments[3];
	}

	if (minlen == null)  minlen = 0;

if (typeof(arg) == "object" && typeof(arg.value) == "string") {
   	  if (arg.value.length !=  parseInt(minlen)) {
			alertFocus(arg, "len", fieldText , minlen)  ;
			return  true;
	  }
	} else {
		if (UTIL_JS_DEBUG)
			alert("'alertLenLimit : " + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}


/*
함수명 :  alertEngNum
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
설명    :  입력항목의 값이 영문자와 숫자로만 이루어지지 있지 않을 경우 경고 메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (alertEngNum(document.testForm.test[0], "[아이디]는"))  return;
	2) 같은이름의 입력항목이 한개인 경우
		if (alertEngNum(document.testForm, "test1", "[아이디]는"))  return;
*/
function alertEngNum() {
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm;

	if (argLen == 2)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		argNm = fieldText;
	} else if (argLen == 3)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
	}

	if (typeof(arg) == "object" && typeof(arg.value) == "string") {
	   if (!onlyAlphaNum(arg.value)) {
			alertFocusNull(arg, "alphanum", fieldText);
			return  true;
		}
	} else {
		if (UTIL_JS_DEBUG)
			alert("'alertEngNum : " + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}

/*
함수명 :  alertNumber
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
설명    :  입력항목의 값이 숫자로만 이루어지지 있지 않을 경우 경고 메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (alertNumber(document.testForm.test[0], "[아이디]는"))  return;
	2) 같은이름의 입력항목이 한개인 경우
		if (alertNumber(document.testForm, "test1", "[아이디]는"))  return;
*/
function alertNumber() {
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm;

	if (argLen == 2)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		argNm = fieldText;
	} else if (argLen == 3)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
	}

	if (typeof(arg) == "object" && typeof(arg.value) == "string") {
	   if (!onlyNumber(arg.value)) {
			alertFocusNull(arg, "number", fieldText);
			return  true;
		}
	} else {
		if (UTIL_JS_DEBUG)
			alert("'alertNumber : " + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}

/*
함수명 :  alertRangeNumber
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	   - 세번째 인수[최소값]
	   - 네번째 인수[최대값]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
	   - 네번째 인수[최소값]
	   - 다섯번째 인수[최대값]
설명    :  입력항목의 값이 범위에 해당하지 않으면 경고메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (alertRangeNumber(document.testForm.test[0], "[아이디]는", 1, 12))  return;
	2) 같은이름의 입력항목이 한개인 경우
		if (alertRangeNumber(document.testForm, "test1", "[아이디]는", 1, 12))  return;
*/
function alertRangeNumber(){
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm, min, max;

	if (argLen == 4)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		argNm = fieldText;
		min  = arguments[2];
		max  = arguments[3];
	} else if (argLen == 5)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
		min  = arguments[3];
		max  = arguments[4];
	}

	if (typeof(arg) == "object" && typeof(arg.value) == "string") {
		if (arg.value < min || arg.value > max) 	{
			alertFocusNull(arg, "choice",  fieldText + " " + min + "부터 " + max + "사이의 숫자로만 입력하십시오.");
			return  true;
		}
	} else {
		if (UTIL_JS_DEBUG)
			alert("alertRange : '" + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}

/*
함수명 :  alertHangul
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
설명    :  입력항목의 값이 완성형 한글과  공백으로만 이루어지지 있지 않을 경우 경고 메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (alertNumber(document.testForm.test[0], "[아이디]는"))  return;
	2) 같은이름의 입력항목이 한개인 경우
		if (alertNumber(document.testForm, "test1", "[아이디]는"))  return;
*/
function alertHangul() {
	var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm;

	if (argLen == 2)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		argNm = fieldText;
	} else if (argLen == 3)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
	}

	if (typeof(arg) == "object" && typeof(arg.value) == "string") {
		if (completeKorean(arg.value)) {
			alertFocusNull(arg, "hangul", fieldText);
			return  true;
		}
	} else {
		if (UTIL_JS_DEBUG)
			alert("alertHangul :'" + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}

/*
함수명 :  alertImgFileUpload
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
설명    :  파일 업로드시 찾아보기로 선택한 파일이 이미지파일이 아니면 경고 메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (alertImgFileUpload(document.testForm.test[0], "[아이디]는"))  return;
	2) 같은이름의 입력항목이 한개인 경우
		if (alertImgFileUpload(document.testForm, "test1", "[아이디]는"))  return;
*/
function alertImgFileUpload() {
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm;

	if (argLen == 2)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		argNm = fieldText;
	} else if (argLen == 3)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
	}

	if (typeof(arg) == "object" && typeof(arg.value) == "string") {
		if (!onlyImgFileUpload(arg)) {
			alertFocus(arg, "img", fieldText);
			return  true;
		}
	} else {
		if (UTIL_JS_DEBUG)
			alert("alertImgFileUpload : '" + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}

/*
함수명 :  alertForbidFile
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
설명    :  파일 업로드시 찾아보기로 선택한 파일이 업로드가 금지된 형식의 파일이면  경고 메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (alertForbidFile(document.testForm.test[0], "[첨부파일]은"))  return;
	2) 같은이름의 입력항목이 한개인 경우
		if (alertForbidFile(document.testForm, "test1", "[첨부파일]은"))  return;
*/
function alertForbidFile(){
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm;

	if (argLen == 2)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		argNm = fieldText;
	} else if (argLen == 3)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
	}

	if (typeof(arg) == "object" && typeof(arg.value) == "string") {
	  if (forbidFileUpload(arg)) {
			alertFocusNull(arg, "forbid", fieldText);
			return  true;
		}
	} else {
		if (UTIL_JS_DEBUG)
			alert("alertForbidFile : '" + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}

/*
함수명 :  alertEmailFormat
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
설명    :  텍스트 필드에 입력한 내용이 E-MAIL 형식이 아니면 경고 메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (alertEmailFormat(document.testForm.test[0], "[아이디]는"))  return;
	2) 같은이름의 입력항목이 한개인 경우
		if (alertEmailFormat(document.testForm, "test1", "[아이디]는"))  return;
*/
function alertEmailFormat(){
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm;

	if (argLen == 2)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		argNm = fieldText;
	} else if (argLen == 3)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
	}

	if (typeof(arg) == "object" && typeof(arg.value) == "string") {
		  if (!onlyEmailFormat(arg.value)) {
			alertFocusNull(arg, "email", fieldText);
			return  true;
		}
	} else {
		if (UTIL_JS_DEBUG)
			alert("alertEmailFormat : '" + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}

/*
함수명 :  alertBizNum
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
설명    :  텍스트 필드에 입력한 내용이 사업자 등록번호 형식이 아니면 경고 메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (alertBizNum(document.testForm.test[0], "[아이디]는"))  return;
	2) 같은이름의 입력항목이 한개인 경우
		if (alertBizNum(document.testForm, "test1", "[아이디]는"))  return;
*/
function alertBizNum(){
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm;

	if (argLen == 2)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		argNm = fieldText;
	} else if (argLen == 3)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
	}

	if (typeof(arg) == "object" && typeof(arg.value) == "string") {
		 if (!onlyBizNum(arg.value)) {
			alertFocusNull(arg, "bizid", fieldText);
			return  true;
		}
	} else {
		if (UTIL_JS_DEBUG)
			alert("alertBizNum : '" + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}

/*
함수명 :  alertExsitsID
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수 [아이디 중복확인 완료시 설정될 문자]
	2) 같은이름의 입력항목이 한개인 경우
	   - 첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수 [아이디 중복확인 완료시 설정될 문자]
설명    :  텍스트 필드에 입력한 내용이 사업자 등록번호 형식이 아니면 경고 메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		 if (alertExsitsID(document.testForm.test1[0], "Y"))  return;
	2) 같은이름의 입력항목이 한개인 경우
		 if (alertExsitsID(document.testForm, "test1", "Y"))  return;
*/
function alertExsitsID(){
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm, comStr;

	if (argLen == 2)	{
		arg =  arguments[0];
		comStr =  arguments[1];
		fieldText = arguments[2];
	} else if (argLen == 3)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		comStr =  arguments[2];
	}

	if (typeof(arg) == "object" && typeof(arg.value) == "string") {
		if (!compareText(arg.value, comStr)) {
			alertMsg(arg, "idcheck", fieldText);
			return  true;
		}
	} else {
		if (UTIL_JS_DEBUG)
			alert("alertExsitsID : '" + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}

/*
함수명 :  alertSSN
인수    :  arg1[주민등록번호 앞자리 필드], arg2[주민등록번호 뒷자리필드]
설명	   : 주민등록번호 형식이 아니면 경고메시지를 표시한다.
사용예 :
		if (alertSSN(sendForm.test1, sendForm.test2))  return;
*/
function alertSSN(arg1, arg2){
	if (!onlySSN(arg1, arg2)) {
		setTextFieldNull(arg2);
		alertFocusNull(arg1, "ssn");
		return  true;
	}
	return false;
}

/*
함수명 :  alertEqual
인수    :  arg1[입력항목1], arg2[입력항목2]
설명    :  입력항목의 두값이 같으면 경고메시지를 표시한다.
사용예 :
		if (alertEqual(sendForm.test1, sendForm.test2, "[아이디]와 [비밀번호]는")) return;
*/
function alertEqual(arg1, arg2, fieldText) {
	if (compareText(arg1.value, arg2.value))	{
		alertTwoFocusNull(arg1, arg2, "equal", fieldText);
		return  true;
	}
	return false;
}

/*
함수명 :  alertNotEqual
인수    :  arg1[입력항목1], arg2[입력항목2]
설명    :  입력항목의 두값이 같지 않으면 경고메시지를 표시한다.
사용예 :
	if (alertNotEqual(document.sendForm.test1, sendForm.test2, "[비밀번호]와 [비밀번호 확인]은")) return;
*/
function alertNotEqual(arg1, arg2, fieldText) {
	  if (!compareText(arg1.value, arg2.value)) {
		setTextFieldNull(arg2);
		alertTwoFocusNull(arg1, arg2, "not_equal", fieldText);
		return  true;
	}
	return false;
}

/*
함수명 : checkRadioSelect
인수	   : arg[입력항목], fieldText 경고메시지 접두어]
설명	   : 라디오버튼 입력항목을 검증한다.
사용예 :
		if (checkRadioSelect(documen.tsendForm.careerKind, "[경력구분]은")) return;
*/
function checkRadioSelect(arg, fieldText) {
	if (!getRadioChecked(arg)) {
		alertFocus(arg[0], "never",  fieldText);
		return true;
	}
	return false;
}

/*
함수명 :  checkKoreaName
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
설명    :  한글 성명을 입력항목을 검증한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (checkKoreaName(documen.tsendForm.koreaName[0],  "[성명(한글)]은" )) return;
	2) 같은이름의 입력항목이 한개인 경우
		if (checkKoreaName(documen.tsendForm, "koreaName",  "[성명(한글)]은" )) return;
*/
function checkKoreaName() {
	switch (arguments.length) {
	case  2 :
			if (alertSpace(arguments[0], arguments[1]))  return true;
			else if  (alertHangul(arguments[0], arguments[1]))  return true;
		break;
	case 3:
		if (alertSpace(arguments[0], arguments[1], arguments[2]))  return true;
		else if  (alertHangul(arguments[0], arguments[1], arguments[2]))  return true;
		break;
	default :
		return true;
	}
	return false;
}


/*
함수명 :  checkEngNumLimit
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	   - 세번재 인수[최소길이]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
	   - 네번재 인수[최소길이]
설명    :  길이가 몇자 이상인 영문과 숫자로만 이루어져 있는지 검증한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (checkEngNumLimit(document.sendForm.SSN1[0],  "[성명(한글)]은" , 6)) return;
	2) 같은이름의 입력항목이 한개인 경우
		 if (checkEngNumLimit(document.sendForm, "SSN1",  "[주민등록번호 앞자리]는",  6)) return;
*/
function checkEngNumLimit() {
	switch (arguments.length) {
	case  3 :
		if (alertSpace(arguments[0], arguments[1]))  return true;
		else if (alertEngNum(arguments[0], arguments[1]))  return true;
		else if (alertMinLimit(arguments[0],arguments[1], arguments[2]))  return true;
		break;
	case 4:
		if (alertSpace(arguments[0], arguments[1], arguments[2]))  return true;
		else if (alertEngNum(arguments[0], arguments[1], arguments[2]))  return true;
		else if (alertMinLimit(arguments[0], arguments[1], arguments[2], arguments[3]))  return true;
		break;
	default :
		return true;
	}
	return false;
}


/*
함수명 :  checkNumLimit
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	   - 세번재 인수[최소길이]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
	   - 네번재 인수[최소길이]
설명    :  길이가 몇자 이상인 숫자로만 이루어져 있는지 검증한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (checkNumLimit(document.sendForm.SSN1[0],  "[성명(한글)]은" , 6)) return;
	2) 같은이름의 입력항목이 한개인 경우
		 if (checkNumLimit(document.sendForm, "SSN1",  "[주민등록번호 앞자리]는",  6)) return;
*/
function checkNumLimit() {
	switch (arguments.length) {
	case  3 :
		if (alertSpace(arguments[0], arguments[1]))  return true;
		else if (alertNumber(arguments[0], arguments[1]))  return true;
		else if (alertMinLimit(arguments[0],arguments[1], arguments[2]))  return true;
		break;
	case 4:
		if (alertSpace(arguments[0], arguments[1], arguments[2]))  return true;
		else if (alertNumber(arguments[0], arguments[1], arguments[2]))  return true;
		else if (alertMinLimit(arguments[0], arguments[1], arguments[2], arguments[3]))  return true;
		break;
	default :
		return true;
	}
	return false;
}


/*
함수명 :  checkNumber
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
설명    :  숫자로만 입력할 수 있도록 검증한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (checkNumber(document.sendForm.SSN1[0],  "[성명(한글)]은") return;
	2) 같은이름의 입력항목이 한개인 경우
		 if (checkNumber(document.sendForm, "SSN1",  "[주민등록번호 앞자리]는")) return;
*/
function checkNumber() {
	switch (arguments.length) {
	case  2 :
		if (alertSpace(arguments[0], arguments[1]))  return true;
		else if (alertNumber(arguments[0], arguments[1]))  return true;
		break;
	case 3:
		if (alertSpace(arguments[0], arguments[1], arguments[2]))  return true;
		else if (alertNumber(arguments[0], arguments[1], arguments[2]))  return true;
		break;
	default :
		return true;
	}
	return false;
}

/*
함수명 :  checkNumLen
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	   - 세번재 인수[최소길이]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
	   - 네번재 인수[최소길이]
설명    :  길이가 몇자 이상인 숫자로만 이루어져 있는지 검증한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (checkNumLen(sendForm.SSN1[0],  "[성명(한글)]은" , 6)) return;
	2) 같은이름의 입력항목이 한개인 경우
		 if (checkNumLen(sendForm, "SSN1",  "[주민등록번호 앞자리]는",  6)) return;
*/
function checkNumLen() {
	switch (arguments.length) {
	case  3 :
		if (alertSpace(arguments[0], arguments[1]))  return true;
		else if (alertNumber(arguments[0], arguments[1]))  return true;
		else if (alertLenLimit(arguments[0],arguments[1], arguments[2]))  return true;
		break;
	case 4:
		if (alertSpace(arguments[0], arguments[1], arguments[2]))  return true;
		else if (alertNumber(arguments[0], arguments[1], arguments[2]))  return true;
		else if (alertLenLimit(arguments[0], arguments[1], arguments[2], arguments[3]))  return true;
		break;
	default :
		return true;
	}
	return false;
}

/*
함수명 :  checkImgFileUpload
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
설명    :  첨부파일 업로드시 이미지 파일인지를 검증한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (checkKoreaName(sendForm.pictureFile[0],  "[사진파일]은")) return;
	2) 같은이름의 입력항목이 한개인 경우
		if (checkImgFileUpload(sendForm, "pictureFile", "[사진파일]은")) return;
*/
function checkImgFileUpload() {
	switch (arguments.length) {
	case  2 :
			if (alertSpace(arguments[0], arguments[1]))  return true;
			else if (alertImgFileUpload(arguments[0], arguments[1]))  return true;
		break;
	case 3:
		if (alertSpace(arguments[0], arguments[1],  arguments[2]))  return true;
		else if (alertImgFileUpload(arguments[0], arguments[1],  arguments[2]))  return true;
		break;
	default :
		return true;
	}
	return false;
}

/*
함수명 :  checkPointOneNum
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	   - 세번째 인수[최소제한길이]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
	   - 네번째 인수[최소제한길이]
설명    :  입력항목이 소수점 첫째자리짜리(양수)를 넘어갈 경우에 경고 메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (checkPointOneNum(document.testForm.test1[0],  "[아이디]는"))  return;
	2) 같은이름의 입력항목이 한개인 경우
		if (checkPointOneNum(document.testForm, "test1", "[아이디]는"))  return;
*/
function checkPointOneNum() {
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm, argVal;

	if (argLen == 2)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		argNm = fieldText;
	} else if (argLen == 3)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
	}

	if (typeof(arg) == "object" && typeof(arg.value) == "string") {
		argVal = arg.value;
		if (!onlyPointNum(argVal)) {
			alertFocusNull(arg, "choice",  fieldText +  " 소수점과 숫자로만 입력하실 수 있습니다.");
			return true;
		} else 	if (isNaN(argVal)) {
			alertFocus(arg, "choice",   fieldText +  " 올바른 숫자형식으로 입력하셔야 합니다.");
			return true;
		} else 	if (argVal.indexOf(".") != -1 ) {			//소수점이 있을 경우에
			var pointLen = (argVal.length - 1) - argVal.indexOf(".");
			if (pointLen > 1) {
				alertFocus(arg, "choice",  fieldText + " 소수점 첫째짜리까지만 입력이 가능합니다.");
				return true;
			}
		}
	} else {
		if (UTIL_JS_DEBUG)
			alert("checkPointOneNum : '" + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}


/*
함수명 :  checkMinusPointOneNum
인수    :
	1) 같은이름의 입력항목이 여러개인 경우
	   -  첫번째 인수[form field object]
	   - 두번째 인수[경고메시지 접두어]
	   - 세번째 인수[최소제한길이]
	2) 같은이름의 입력항목이 한개인 경우
	   -  첫번째 인수[document.testForm]
	   - 두번째 인수[입력항목 name 문자열]
	   - 세번째 인수[경고메시지 접두어]
	   - 네번째 인수[최소제한길이]
설명    :  입력항목이 소수점 첫째자리짜리(음수)를 넘어갈 경우에 경고 메시지를 표시한다.
사용예 :
	1) 같은이름의 입력항목이 여러개 인경우
		if (checkPointOneNum(document.testForm.test1[0],  "[아이디]는"))  return;
	2) 같은이름의 입력항목이 한개인 경우
		if (checkPointOneNum(document.testForm, "test1", "[아이디]는"))  return;
*/
function checkMinusPointOneNum() {
    var space = "             ";
	var argLen = arguments.length;
	var arg, fieldText, argNm, argVal;

	if (argLen == 2)	{
		arg =  arguments[0];
		fieldText = arguments[1];
		argNm = fieldText;
	} else if (argLen == 3)	{
		argNm = arguments[1];
		arg = arguments[0][argNm];
		fieldText = arguments[2];
	}

	if (typeof(arg) == "object" && typeof(arg.value) == "string") {
		argVal = arg.value;
		if (!onlyDashPointNum(argVal)) {
			alertFocusNull(arg, "choice",  fieldText +  "  숫자와 소수점, 하이픈으로만 입력하실 수 있습니다.");
			return true;
		} else 	if (isNaN(argVal)) {
			alertFocus(arg, "choice",   fieldText +  " 올바른 숫자형식으로 입력하셔야 합니다.");
			return true;
		} else 	if (argVal.indexOf(".") != -1 ) {			//소수점이 있을 경우에
			var pointLen = (argVal.length - 1) - argVal.indexOf(".");
			if (pointLen > 1) {
				alertFocus(arg, "choice",  fieldText + " 소수점 첫째짜리까지만 입력이 가능합니다.");
				return true;
			}
		}
	} else {
		if (UTIL_JS_DEBUG)
			alert("checkMinusPointOneNum : '" + argNm + "'의 name을 가진 입력항목이 없거나 두개 이상 존재합니다." + space);
		return  true;
	}
	return false;
}
