/***********************************************************************************************
 *  Project         : Edutrack
 *  File Name       : common.js
 *  Description     : 공통으로 사용하는 js
 *  Arguement       : 
 *  Written Date    : 2008-10-28        Written By  : mediopia
 *  Modified Date   :                   Modified By : 
 **********************************************************************************************/

	var browser = {
		version: parseInt(navigator.appVersion),
		isNetscape: navigator.appName.indexOf("Netscape") != -1,
		isMicrosoft: navigator.appName.indexOf("Microsoft") != -1
	};
	
	function maxByteCheck(ibc_input, ibc_max, id) {
		var ibc_size = 0;
		for(var i=0; i<ibc_input.length; i++) {
			var ibc_temp = escape(ibc_input.charAt(i)).length;
			if(ibc_temp == 1 || ibc_temp == 3)	ibc_size += 1;
			else {
				if(ibc_temp == 6) 
					ibc_size += 2;
			}
		}
		if(ibc_size > ibc_max) {
			alert("글자수를 초과하였습니다.")
			var rastIndex = ibc_size-(ibc_size - ibc_max);
			document.getElementById(id).value = ibc_input.substring(0, rastIndex);
		}
	}

    /**
     * 문자열의 byte length를 얻는다.
     *
     * @param   str 문자열
     * @return  byte length
     * @author  marie
     */
    function jsByteLength(str) {
        if (str == "") {
            return  0;
        }

        var len = 0;

        for (var i = 0; i < str.length; i++) {
            if (str.charCodeAt(i) > 128) {
                len++;
            }
            len++;
        }

        return  len;
    }

    /**
     * Object에 값을 세팅한다.
     *
     * @param   obj
     * @param   value
     */
    function jsSetValue(obj, value) {
        if (obj) {
            if (obj.type == "text") {
                obj.value = value;
            } else if (obj.tagName == "SELECT") {
                for (var i = 0; i < obj.length; i++) {
                    if (obj.options[i].value == value) {
                        obj.options[i].selected = true;
                        break;
                    }
                }
            }
        }
    }

	function checkBrowser(){
		if (navigator.appVersion.indexOf("MSIE")>= 0){
		    return true;
		}else{
		    return false;
		}


	}
    
    /**
     * 오직 숫자로만 이루어져 있는지 체크 한다.
     *
     * @param   num
     * @return  boolean
     */
    function isNumber(num) {
        re = /[0-9]*[0-9]$/;

        if (re.test(num)) {
            return  true;
        }

        return  false;
    }

    /**
     * 정수 체크
     *
     * 1. +, - 부호를 생략하거나 넣을 수 있다 : ^[\+-]?
     * 2. 0에서 9까지 숫자가 0번 이상 올 수 있다 : [0-9]*
     * 3. 마지막은 숫자로 끝나야 한다 : [0-9]$
     *
     * @param   num
     * @return  boolean
     */
    function isInteger(num) {
        re = /^[\+-]?[0-9]*[0-9]$/;

        if (re.test(num)) {
            return  true;
        }

        return  false;
    }

    /**
     * 유리수 체크
     *
     * 1. +, - 부호를 생략하거나 넣을 수 있다 : ^[\+-]?
     * 2. 0에서 9까지 숫자가 0번 이상 올 수 있다 : [0-9]*
     * 3. 소수점을 넣을 수 있다 : [.]?
     * 4. 소수점 이하 자리에 0에서 9까지 숫자가 올 수 있다 : [0-9]*
     * 5. 마지막은 숫자로 끝나야 한다 : [0-9]$
     *
     * @param   num
     * @return  boolean
     */
    function isFloat(num) {
        re = /^[\+-]?[0-9]*[.]?[0-9]*[0-9]$/;

        if (re.test(num)) {
            return  true;
        }

        return  false;
    }

    /**
     * 이메일 체크
     *
     * @param   email
     * @return  boolean
     */
    function isEmail(email) {
        re = /[^@]+@[A-Za-z0-9_-]+[.]+[A-Za-z]+/;

        if (re.test(email)) {
            return  true;
        }

        return  false;
    }

    /**
     * 이메일 주소 체크 - 정밀하게
     */
    function emailCheck(emailStr) {
        var checkTLD=1;
        var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
        var emailPat=/^(.+)@(.+)$/;
        var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
        var validChars="\[^\\s" + specialChars + "\]";
        var quotedUser="(\"[^\"]*\")";
        var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
        var atom=validChars + '+';
        var word="(" + atom + "|" + quotedUser + ")";
        var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
        var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
        var matchArray=emailStr.match(emailPat);

        if (matchArray==null) {
            alert("이메일 주소가 정확하지 않습니다 (체크 @ and .'s)");
            return false;
        }
        var user=matchArray[1];
        var domain=matchArray[2];
        for (i=0; i<user.length; i++) {
            if (user.charCodeAt(i)>127) {
                alert("잘못된 이메일 주소를 입력 하셨습니다.");
                return false;
            }
        }
        for (i=0; i<domain.length; i++) {
            if (domain.charCodeAt(i)>127) {
                alert("도메인 이름이 잘못 기제 되었습니다.");
                return false;
            }
        }
        if (user.match(userPat)==null) {
            alert("이메일 조소가 아닙니다.");
            return false;
        }
        var IPArray=domain.match(ipDomainPat);
        if (IPArray!=null) {
            for (var i=1;i<=4;i++) {
                if (IPArray[i]>255) {
                    alert("IP주소가 틀립니다!");
                    return false;
                }
            }
            return true;
        }
        var atomPat=new RegExp("^" + atom + "$");
        var domArr=domain.split(".");
        var len=domArr.length;
        for (i=0;i<len;i++) {
            if (domArr[i].search(atomPat)==-1) {
                alert("도메인 이 존재 하지 않습니다.");
                return false;
            }
        }
        if (checkTLD && domArr[domArr.length-1].length!=2 && 
            domArr[domArr.length-1].search(knownDomsPat)==-1) {
            alert("알려진 형식으로 끝이 나야합니다." + "country.");
            return false;
        }
        if (len<2) {
        alert("Hostname이 틀립니다. !");
        return false;
        }

        return true;
    }

    /**
     * 날짜 체크
     *
     * @param   date
     * @return  boolean
     */
    function isDate(date) {
        if (date == null || date.length != 8) {
            return  false;
        }

        if (!isNumber(date)) {
            return  false;
        }

        var year = eval(date.substring(0, 4));
        var month = eval(date.substring(4, 6));
        var day = eval(date.substring(6, 8));

		if(year == "0000") {
			return false;
		}

        if (month > 12 || month == "00") {
            return  false;
        }

        var totalDays;

        switch (eval(month)){

            case 1 :
                totalDays = 31;
                break;
            case 2 :
                if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
                    totalDays = 29;
                else
                    totalDays = 28;
                break;
            case 3 :
                totalDays = 31;
                break;
            case 4 :
                totalDays = 30;
                break;
            case 5 :
                totalDays = 31;
                break;
            case 6 :
                totalDays = 30;
                break;
            case 7 :
                totalDays = 31;
                break;
            case 8 :
                totalDays = 31;
                break;
            case 9 :
                totalDays = 30;
                break;
            case 10 :
                totalDays = 31;
                break;
            case 11 :
                totalDays = 30;
                break;
            case 12 :
                totalDays = 31;
                break;
        }

        if (day > totalDays) {
            return  false;
        }

        if (day == "00") {
            return  false;
        }

        return  true;
    }

    /**
     * 데이터 유효성을 체크한다.
     *
     * @param   form
     */
    function validate(form) {
        var obj;
        var dispName;
        var dataType;
        var minValue;
        var maxValue;
        var len;
        var lenCheck;
        var lenMCheck;
        var isValid;
        var value;
        for (i = 0; i < form.elements.length; i++) {
            obj = form.elements(i);
            
        if(obj.name != ""){ //이름이 있는 경우만 체크함.
            	obj.value = trim(obj.value);
         	
            dispName 		= obj.getAttribute("dispName");
            dataType 		= obj.getAttribute("dataType");
            minValue 		= obj.getAttribute("minValue");
            maxValue 		= obj.getAttribute("maxValue");
            len      		= obj.getAttribute("len");
            lenCheck 		= obj.getAttribute("lenCheck");
            lenMCheck 		= obj.getAttribute("lenMCheck");

            value = obj.value;
            
            if (dispName == null) {
                dispName = obj.name;
            }

            // 필수 입력 항목 체크
            if (obj.getAttribute("notNull") != null) {
                isValid = false;

                if (obj.type == "radio" || obj.type == "checkbox") {
                    if (form.elements(obj.name).length) {
                        for (j = 0; j < form.elements(obj.name).length; j++) {
                            if (form.elements(obj.name)[j].checked) {
                                isValid = true;
                                break;
                            }
                        }
                    } else {
                        if (obj.checked) {
                            isValid = true;
                        }
                    }
                } else {
                    if (value != "") {
                        isValid = true;
                    } else {
                        if (obj.getAttribute("comma") != null) {
                            obj.value = 0;
                            isValid = true;
                        }
                    }
                }

                if (!isValid) {
                    alert(dispName + "을(를) 입력하십시오.");
                    obj.focus();
                    if (window.event) {
                        window.event.returnValue = false;
                    }
                    return  false;
                }
            }
             



            // 데이터 길이 체크
            if (len != null) {
                if (value.length != eval(len)) {
                    alert(dispName + "은(는) " + len + "자리를 입력해야 합니다.");
                    obj.focus();
                    if (window.event) {
                        window.event.returnValue = false;
                    }
                    return  false;
                }
            }
            
           if(lenCheck != null )
            {
            	
              if( jsByteLength(value) > eval(lenCheck) )
                {
                  alert(dispName + "은(는) " + lenCheck + " 자리를 넘을수 없습니다 현재 글자수("+jsByteLength(value)+")");
                  obj.value = value;
                  obj.focus();
                  if(window.event)
                    {
                       window.event.returnValue = false;
                    }
                
                    return false;
                }
               
            }            
            
            // 최소 입력자리수 체크
            if(lenMCheck != null) {
            	if(value.length < eval(lenMCheck)) {
            		alert(dispName + "은(는) " + lenMCheck + " 자리수 이상 입력하셔야 합니다.");
            		obj.focus();
            		if(window.event)
            			window.event.returnValue = false;
            		
            		return false;
            	}
            }

            if (obj.type == "text") {
                // 데이터 타입 체크
                if (dataType == null) { // 2002.01.30 추가
                    if (obj.readOnly == false && jsByteLength(value) > obj.maxLength) {
                        alert(dispName + " 길이가 " + obj.maxLength + " 을(를) 넘습니다.");
                        obj.focus();
                        if (window.event) {
                            window.event.returnValue = false;
                        }

                        return  false;
                    }
                } else if ((value != "") && (dataType != null)) {
                    isValid = true;
                    checkValue = false;

                    if (dataType == "date") {
                        value = deleteDateFormatStr(value);
                        isValid = isDate(value);
                        checkValue = true;
                    } else if (dataType == "email") {
                        isValid = isEmail(value);
                    } else if (dataType == "float") {
                        value = deleteCommaStr(value);
                        isValid = isFloat(value);
                        checkValue = true;
                    } else if (dataType == "integer") {
                        value = deleteCommaStr(value);
                        isValid = isInteger(value);
                        checkValue = true;
                    } else if (dataType == "number") {
                        value = deleteCommaStr(value);
                        isValid = isNumber(value);
                        checkValue = true;
                    } else if (dataType == "double") {
                        value = deleteCommaStr(value);
                        isValid = isNumber(value);
                        checkValue = true;
                    }

                    if (!isValid) {
                        alert(dispName + " 형식이 올바르지 않습니다.");
                        if (dataType == "float" || dataType == "integer" || dataType == "number" || dataType == "double") {
                            obj.value = "0";
                        }
                        obj.focus();
                        if (window.event) {
                            window.event.returnValue = false;
                        }
                        return  false;
                    }

                    if (checkValue) {
                        if (minValue != null) {
                            if (eval(minValue) > eval(value)) {
                                alert(dispName + " 값은 최소값(" + minValue + ") 이상입니다.");
                                obj.focus();
                                if (window.event) {
                                    window.event.returnValue = false;
                                }
                                return  false;
                            }
                        }

                        if (isValid && (maxValue != null)) {
                            if (eval(maxValue) < eval(value)) {
                                alert(dispName + " 값이 최대값(" + maxValue + ")을 초과합니다.");
                                obj.focus();
                                if (window.event) {
                                    window.event.returnValue = false;
                                }
                                return  false;
                            }
                        }
                    }
                }
            }
         }
      }
        return  true;
    }

    /**
     * 숫자에 comma를 붙인다.
     *
     * @param   obj
     */
    function addComma(obj) {
        obj.value = trim(obj.value);
        var value = obj.value;

        if (value == "") {
            return;
        }

        value = deleteCommaStr(value);

        if (!isFloat(value)) {
            dispName = obj.getAttribute("dispName");

            if (dispName == null) {
                dispName = "";
            }

            alert(dispName + " 형식이 올바르지 않습니다.");
            obj.value = "0";
            obj.focus();
            if (window.event) {
                window.event.returnValue = false;
            }
            return;
        }

       return obj.value = addCommaStr(value);
    }

    /**
     * 숫자에 comma를 붙인다.
     */
    function addComma2() {
        var obj = window.event.srcElement;
        addComma(obj);
    }

    /**
     * 숫자에 comma를 붙인다.
     *
     * @param   str
     */
    function addCommaStr(str) {
        var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
        var arrNumber = str.split('.');
        arrNumber[0] += '.';
        do {
            arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
        } while (rxSplit.test(arrNumber[0]));

        if (arrNumber.length > 1) {
            replaceStr = arrNumber.join("");
        } else {
            replaceStr = arrNumber[0].split(".")[0];
        }
        return replaceStr;
    }

    /**
     * 숫자에서 comma를 없앤다.
     *
     * @param   obj
     */
    function deleteComma(obj) {
        obj.value = deleteCommaStr(obj.value);
    }

    /**
     * 숫자에서 comma를 없앤다.
     */
    function deleteComma2() {
        var obj = window.event.srcElement;
        deleteComma(obj);
        obj.select();
    }

    /**
     * 숫자에서 comma를 없앤다.
     *
     * @param   str
     */
    function deleteCommaStr(str) {
        var temp = '';

        for (var i = 0; i < str.length; i++) {
            if (str.charAt(i) == ',') {
                continue;
            } else {
                temp += str.charAt(i);
            }
        }

        return  temp;
    }

    /**
     * 날짜에 "/"를 붙인다.
     *
     * @param   obj
     */
    function addDateFormat(obj) {
        var value = obj.value;

        if (trim(value) == "") {
            return;
        }

        value = deleteDateFormatStr(value);

        if (!isDate(value)) {
            dispName = obj.getAttribute("dispName");

            if (dispName == null) {
                dispName = "";
            }

            alert(dispName + " 형식이 올바르지 않습니다.");
            obj.focus();

            return;
        }

        obj.value = addDateFormatStr(value);
    }

    /**
     * 날짜(년월)에 "/"를 붙인다.
     *
     * @param   obj
     */
    function addYmFormat(obj) {
        var value = obj.value;

        if (trim(value) == "") {
            return;
        }

        value = deleteDateFormatStr(value);

        if (!isDate(value + "01")) {
            dispName = obj.getAttribute("dispName");

            if (dispName == null) {
                dispName = "";
            }

            alert(dispName + " 형식이 올바르지 않습니다.");
            obj.focus();

            return;
        }

        obj.value = addYmFormatStr(value);
    }
    
    /**
     * 날짜에 "/"를 붙인다.
     */
    function addDateFormat2() {
        var obj = window.event.srcElement;
        addDateFormat(obj);
    }

    /**
     * 날짜에 "/"를 붙인다.
     */
    function addYmFormat2() {
        var obj = window.event.srcElement;
        addYmFormat(obj);
    }

    /**
     * 날짜에 "/"를 붙인다.
     *
     * @param   str
     */
    function addDateFormatStr(str) {
        return  str.substring(0, 4) + "/" + str.substring(4, 6) + "/" + str.substring(6, 8);
    }

    /**
     * 날짜(년월)에 "/"를 붙인다.
     *
     * @param   str
     */
    function addYmFormatStr(str) {
        return  str.substring(0, 4) + "/" + str.substring(4, 6);
    }

    /**
     * 날짜에서 "/"를 없앤다.
     *
     * @param   obj
     */
    function deleteDateFormat(obj) {
        obj.value = deleteDateFormatStr(obj.value);
    }

    /**
     * 날짜에서 "/"를 없앤다.
     */
    function deleteDateFormat2() {
        var obj = window.event.srcElement;
        deleteDateFormat(obj);
        obj.select();
    }

    /**
     * 날짜에서 "/"를 없앤다.
     *
     * @param   str
     */
    function deleteDateFormatStr(str) {
        var temp = '';

        for (var i = 0; i < str.length; i++) {
            if (str.charAt(i) == '/') {
                continue;
            } else {
                temp += str.charAt(i);
            }
        }

        return  temp;
    }

    /**
     * trim
     *
     * @param   text
     * @return  string
     */
    function trim(text) {
        if (text == "") {
            return  text;
        }

        var len = text.length;
        var st = 0;

        while ((st < len) && (text.charAt(st) <= ' ')) {
            st++;
        }

        while ((st < len) && (text.charAt(len - 1) <= ' ')) {
            len--;
        }

        return  ((st > 0) || (len < text.length)) ? text.substring(st, len) : text;
    }

    /**
     * ltrim
     *
     * @param   text
     * @return  string
     */
    function ltrim(text) {
        if (text == "") {
            return  text;
        }

        var len = text.length;
        var st = 0;

        while ((st < len) && (text.charAt(st) <= ' ')) {
            st++;
        }

        return  (st > 0) ? text.substring(st, len) : text;
    }

    /**
     * rtrim
     *
     * @param   text
     * @return  string
     */
    function rtrim(text) {
        if (text == "") {
            return  text;
        }

        var len = text.length;
        var st = 0;

        while ((st < len) && (text.charAt(len - 1) <= ' ')) {
            len--;
        }

        return  (len < text.length) ? text.substring(st, len) : text;
    }

   
    /**
     * 자리수의 최소값, 최대값
     *
     * 최소값만 체크 : jsRange(2, -1)
     * 최대값만 체크 : jsRange(-1, 10)
     * 최소값, 최대값 모두 체크 : jsRange(2, 10)
     * 최소값, 최대값 둘다 체크 안함 : jsRange(-1, -1)
     * 
     */
    function jsRange(minValue, maxValue)
    {
        jsMinLength(minValue);
        jsMaxLength(maxValue);
    }

    /**
     * 최대값
     */
    function jsMaxLength(maxValue)
    {
        var obj         = window.event.srcElement;
        var dispName    = obj.getAttribute("dispName");
        //var maxValue    = obj.getAttribute("maxValue");
        var val         = jsByteLength(obj.value);
        if(maxValue != -1 && val > maxValue)
        {
            alert(dispName +" 값이 최대값("+ maxValue +")을 초과합니다.\n초과 길이 :"+ (val - maxValue));
            //obj.value = "0";
            obj.focus();
            if(window.event)
            {
                window.event.returnValue = false;
            }
            return;
        }
    }

    /**
     * 최소값
     */
    function jsMinLength(minValue)
    {
        var obj         = window.event.srcElement;
        var dispName    = obj.getAttribute("dispName");
        //var minValue    = obj.getAttribute("minValue");
        var val         = jsByteLength(obj.value);
        if(minValue != -1 && val < minValue)
        {
            alert(dispName +" 값이 최소값(" + minValue + ") 미만입니다.\n부족 길이 :"+ (minValue - val));
            //obj.value = "0";
            obj.focus();
            if(window.event)
            {
                window.event.returnValue = false;
            }
            return;
        }
    }

    /**
     * 숫자이면 숫자, 숫자가 아니면 0
     */
    function nvlNumber(val)
    {
        if(val == "" || isNaN(val) || val == "undefined")
            return 0;

        return Number(val);
    }

    /**
     * 숫자형식에서 comma를 없애고, 날짜형식에서 "/" 를 없앤다.
     *
     * @param   form
     */
    function makeValue(form) {
        for (i = 0; i < form.elements.length; i++) {
            obj = form.elements(i);

            if (obj.tagName == "INPUT") {
                dataType = obj.getAttribute("dataType");

                if (dataType == "date") {
                    deleteDateFormat(obj);
                } else if (dataType == "number" || dataType == "integer" || dataType == "float" || dataType == "double") {
                    if (obj.getAttribute("comma") != null) {
                        deleteComma(obj);
                    }
                } else if (dataType == "yyyymm") {
                    deleteDateFormat(obj);
                }
                /// notHyphen 이라고 선언했다면 하이픈을 모두 제거한다.
                if(obj.getAttribute("notHyphen") != null) {
                    deleteHyphenObj(obj);
                }
            }
        }
    }

    /**
      * 문자에서 Hyphen을 없앤다.
      *
      * @param  obj
      */
    function deleteHyphenObj(obj) {
        obj.value = deleteHyphen(obj.value);
    }

    /**
     * 데이터 유효성을 체크한다.
     * 하나의 오브젝트에 대한 것임.
     *
     * @param   form
     * @param   obj
     */
    function validateObj(form, obj) {

        var dispName;
        var dataType;
        var minValue;
        var maxValue;
        var isValid;
        var value;

        obj.value = trim(obj.value);
        dispName = obj.getAttribute("dispName");
        dataType = obj.getAttribute("dataType");
        minValue = obj.getAttribute("minValue");
        maxValue = obj.getAttribute("maxValue");
        len      = obj.getAttribute("len");
        value = obj.value;

        if (dispName == null) {
            dispName = obj.name;
        }

        // 필수 입력 항목 체크
        if (obj.getAttribute("notNull") != null) {
            isValid = false;

            if (obj.type == "radio" || obj.type == "checkbox") {
                if (form.elements(obj.name).length) {
                    for (j = 0; j < form.elements(obj.name).length; j++) {
                        if (form.elements(obj.name)[j].checked) {
                            isValid = true;
                            break;
                        }
                    }
                } else {
                    if (obj.checked) {
                        isValid = true;
                    }
                }
            } else {
                if (value != "") {
                    isValid = true;
                } else {
                    if (obj.getAttribute("comma") != null) {
                        obj.value = 0;
                        isValid = true;
                    }
                }
            }

            if (!isValid) {
                alert(dispName + "을(를) 입력하십시오.");
                obj.focus();
                if (window.event) {
                    window.event.returnValue = false;
                }
                return  false;
            }
        }

        // 데이터 길이 체크
        if (len != null) {
            if (value.length != eval(len)) {
                alert(dispName + "은(는) " + len + "자리를 입력해야 합니다.");
                obj.focus();
                if (window.event) {
                    window.event.returnValue = false;
                }
                return  false;
            }
        }

        if (obj.type == "text") {
            // 데이터 타입 체크
            if ((value != "") && (dataType != null)) {
                isValid = true;
                checkValue = false;

                if (dataType == "date") {
                    value = deleteDateFormatStr(value);
                    isValid = isDate(value);
                    checkValue = true;
                } else if (dataType == "email") {
                    isValid = isEmail(value);
                } else if (dataType == "float") {
                    value = deleteCommaStr(value);
                    isValid = isFloat(value);
                    checkValue = true;
                } else if (dataType == "integer") {
                    value = deleteCommaStr(value);
                    isValid = isInteger(value);
                    checkValue = true;
                } else if (dataType == "number") {
                    value = deleteCommaStr(value);
                    isValid = isNumber(value);
                    checkValue = true;
                } else if (dataType == "double") {
                    value = deleteCommaStr(value);
                    isValid = isNumber(value);
                    checkValue = true;
                }

                if (!isValid) {
                    alert(dispName + " 형식이 올바르지 않습니다.");
                    if (dataType == "float" || dataType == "integer" || dataType == "number" || dataType == "double") {
                        obj.value = "0";
                    }
                    obj.focus();
                    if (window.event) {
                        window.event.returnValue = false;
                    }
                    return  false;
                }

                if (checkValue) {
                    if (minValue != null) {
                        if (eval(minValue) > eval(value)) {
                            alert(dispName + " 값이 최소값(" + minValue + ") 미만입니다.");
                            obj.focus();
                            if (window.event) {
                                window.event.returnValue = false;
                            }
                            return  false;
                        }
                    }

                    if (isValid && (maxValue != null)) {
                        if (eval(maxValue) < eval(value)) {
                            alert(dispName + " 값이 최대값(" + maxValue + ")을 초과합니다.");
                            obj.focus();
                            if (window.event) {
                                window.event.returnValue = false;
                            }
                            return  false;
                        }
                    }
                }
            }
        }

        return  true;
    }

    /**
     * 숫자형식에서 comma를 없애고, 날짜형식에서 "/" 를 없앤다.
     * 하나의 오브젝트에 대한 것임.
     *
     * @param   form
     * @param   obj
     */
    function makeValueObj(form, obj) {
        if (obj.tagName == "INPUT") {
            dataType = obj.getAttribute("dataType");

            if (dataType == "date") {
                deleteDateFormat(obj);
            } else if (dataType == "number" || dataType == "integer" || dataType == "float" || dataType == "double") {
                if (obj.getAttribute("comma") != null) {
                    deleteComma(obj);
                }
            }
        }
    }

     /**
      * 문자에서 Hyphen을 없앤다.
      *
      * @param   str
      */
    function deleteHyphen(str) {
        var temp = '';

        for (var i = 0; i < str.length; i++) {
            if (str.charAt(i) == '-') {
                continue;
            } else {
                temp += str.charAt(i);
            }
        }

        return  temp;
    }

    
    /**
     * String이 null인 경우 '0'으로 바꾸어 준다.
     *
     * @param   string
     * @return  String
     */
    function jsNumnvl(str) {
        if(str == null || str == "") {
            return "0";
        }
        return  str;
    }

    function jsNvl(str) {
        if(str == null) {
            return "";
        }
        return  str;
    }

    /**
     * 폼 안의 숫자 오브젝트에 콤마를 붙여준다.
     */
    function setComma() {

        for (i = 0; i < document.forms.length; i++) {
            var elements = document.forms(i).elements;
            for (j = 0; j < elements.length; j++) {
                if (elements(j).tagName == "INPUT") {
                    dataType = elements(j).getAttribute("dataType");
                    if (dataType == "number" || dataType == "integer" ||
                    dataType == "float" || dataType == "double") {
                        if (elements(j).getAttribute("comma") != null) {
                            addComma(elements(j));
                        }
                    }
                }
            }
        }
    }

   
    /**
     * 비밀번호 체크
     */
    function passChk(p_id, p_pass, obj) {

        var cnt = 0;
        var cnt2 = 1;
        var cnt3 = 1;
        var temp = "";
        
        /* 비밀번호에에 숫자만 입력되는것을 체크 - 이혁*/
        regNum = /^[0-9]+$/gi;
        bNum = regNum.test(p_pass);
        if(bNum) {
            alert('비밀번호는 숫자만으로 구성하실수는 없습니다.');
               obj.focus();
            return false;
        }
        /* 비밀번호에에 문자만 입력되는것을 체크 - 이혁*/
        regNum = /^[a-zA-Z]+$/gi;
        bNum = regNum.test(p_pass);
        if(bNum) {
            alert('비밀번호는 문자만으로 구성하실수는 없습니다.');
               obj.focus();
            return false;
        }

        for(var i = 0; i < p_id.length; i++) {
            temp_id = p_id.charAt(i);

            for(var j = 0; j < p_pass.length; j++) {
                if (cnt > 0) {
                    j = tmp_pass_no + 1;
                }

                if (temp == "r") {
                    j=0;
                    temp="";
                }

                temp_pass = p_pass.charAt(j);

                if (temp_id == temp_pass){
                    cnt = cnt + 1;
                    tmp_pass_no = j;
                    break;
                } else if (cnt > 0 && j > 0){
                    temp="r";
                    cnt = 0;
                } else {
                    cnt = 0;
                }
            }

            if (cnt > 3) {
                break;
            }
        }

        if (cnt > 3){
            alert("비밀번호가 ID와 4자 이상 중복되거나, \n연속된 글자나 순차적인 숫자를 4개이상 사용해서는 안됩니다.");
            obj.focus();
            return  false;
        }

        for(var i = 0; i < p_pass.length; i++) {
            temp_pass1 = p_pass.charAt(i);
            next_pass = (parseInt(temp_pass1.charCodeAt(0)))+1;
            temp_p = p_pass.charAt(i+1);
            temp_pass2 = (parseInt(temp_p.charCodeAt(0)));

            if (temp_pass2 == next_pass) {
                cnt2 = cnt2 + 1;
            } else {
                cnt2 = 1;
            }

            if (temp_pass1 == temp_p) {
                cnt3 = cnt3 + 1;
            } else {
                cnt3 = 1;
            }

            if (cnt2 > 3) {
                break;
            }

            if (cnt3 > 3) {
                break;
            }
        }

        if (cnt2 > 3){
            alert("비밀번호에 연속된 글이나 순차적인 숫자를 4개이상 사용해서는 안됩니다.");
            obj.focus();
            return  false;
        }

        if (cnt3 > 3){
            alert("비밀번호에 반복된 문자/숫자를 4개이상 사용해서는 안됩니다.");
            obj.focus();
            return  false;
        }

        return true;
    }

    /**
     * 브라우저의 버전을 체크한다.
     *
     * @param   none
     * @return  none
     */
    function objDetectBrowser() {
        var strUA, s, i;
        this.isIE = false;  // 인터넷 익스플로러인지를 나타내는 속성
        this.isNS = false;  // 넷스케이프인지를 나타내는 속성
        this.version = null; // 브라우저 버전을 나타내는 속성

        // Agent 정보를 담고 있는 문자열.
        strUA = navigator.userAgent; 

        s = "MSIE";
        // Agent 문자열(strUA) "MSIE"란 문자열이 들어 있는지 체크

        if ((i = strUA.indexOf(s)) >= 0) {
            this.isIE = true;
            // 변수 i에는 strUA 문자열 중 MSIE가 시작된 위치 값이 들어있고,
            // s.length는 MSIE의 길이 즉, 4가 들어 있다.
            // strUA.substr(i + s.length)를 하면 strUA 문자열 중 MSIE 다음에 
            // 나오는 문자열을 잘라온다.
            // 그 문자열을 parseFloat()로 변환하면 버전을 알아낼 수 있다.
            this.version = parseFloat(strUA.substr(i + s.length));
            return;
        }

        s = "Netscape6/";
        // Agent 문자열(strUA) "Netscape6/"이란 문자열이 들어 있는지 체크

        if ((i = strUA.indexOf(s)) >= 0) {
            this.isNS = true;
            this.version = parseFloat(strUA.substr(i + s.length));
            return;
        }

        // 다른 "Gecko" 브라우저는 NS 6.1로 취급.

        s = "Gecko";
        if ((i = strUA.indexOf(s)) >= 0) {
            this.isNS = true;
            this.version = 6.1;
            return;
        }
    }

 
    
    /**
     * 숫자로만 이루어져 있는지 체크 한다.
     *
     * @param    num
     * @return   boolean
     */
    function isNumber2(num){
        var inText = num.value;
        var ret;

        for (var i = 0; i < inText.length; i++) {
            ret = inText.charCodeAt(i);
            if (!((ret > 47) && (ret < 58)))  {
                alert("숫자만 입력 가능합니다.");
                num.value = "";
                num.focus();
                return false;
            }
        }
        return true;
    }

    /**
     * 한글로만 이루어져 있는지 체크 한다.
     *
     * @param    han
     * @return   boolean
     */
    function isHangul(han) {
        var inText = han.value;
        var ret;

        ret = inText.charCodeAt();
        if (ret > 31 && ret < 127) {
            alert("한글만 입력 가능합니다.");
            han.value = "";
            han.focus();
            return false;
        }

        return true;
    } 

   /**
    * 영문캐릭터인지 체크(대문자)
    *
    * param obj
    * return 
    */
    function checkChar(obj)
    {
        var strValue = obj.value

        var retChar = strValue.toUpperCase();

        if (retChar <  "A" || retChar  > "Z")
        {
            alert("영문자만 입력이 가능합니다.");
            obj.value = "";
            obj.focus();
            return;
        }
        obj.value = retChar;
    }
    
    /**
     * 키보드 입력시 숫자만 입력 가능
     */
    function onlyNumber(){
        if ((event.keyCode >= 32 && event.keyCode < 48)
            || (event.keyCode > 57 && event.keyCode < 65)
            || (event.keyCode > 90 && event.keyCode < 97)
            || (event.keyCode >= 97 && event.keyCode <= 122)
            || (event.keyCode >= 65 && event.keyCode <= 90))
            event.returnValue = false;
    }

    /**
     * 키보드 입력시 수자 및 ','가 입력 가능
     */
    function AmtNumber(){
        if ((event.keyCode >= 32 && event.keyCode < 44)
            || (event.keyCode >= 45 && event.keyCode < 48)
            || (event.keyCode > 57 && event.keyCode < 65)
            || (event.keyCode > 90 && event.keyCode < 97)
            || (event.keyCode >= 97 && event.keyCode <= 122)
            || (event.keyCode >= 65 && event.keyCode <= 90))
            event.returnValue = false;
    }

    /**
     * 키보드 입력시 수자 및 '.'가 입력 가능
     */
    function RateNumber(){
        if ((event.keyCode >= 32 && event.keyCode < 46)
            || (event.keyCode >= 47 && event.keyCode < 48)
            || (event.keyCode > 57 && event.keyCode < 65)
            || (event.keyCode > 90 && event.keyCode < 97)
            || (event.keyCode >= 97 && event.keyCode <= 122)
            || (event.keyCode >= 65 && event.keyCode <= 90))
            event.returnValue = false;
    }

    /**
     * 숫자형식에 null이 입력되면 0으로 셋팅한다.
     *
     * @param   form
     */
    function setZero(form) {
        for (i = 0; i < form.elements.length; i++) {
            obj = form.elements(i);

            if (obj.tagName == "INPUT") {
                dataType = obj.getAttribute("dataType");

                if (dataType == "number" || dataType == "integer" || dataType == "float" || dataType == "double") {
                    if (obj.value == null || obj.value == "") {
                        obj.value = "0";
                    }
                } 
            }
        }
    }

    /* 날짜관련 *******************************************************************************/
    var dateBase  = new Date();

    /**
     * 년
     */
    function getYear()
    {
        return dateBase.getFullYear();
    }

    /**
     * 월
     */
    function getMonth()
    {
        var month = dateBase.getMonth()+1;
        if (("" + month).length == 1)
            month = "0" + month;
        return month;
    }

    /**
     * 일
     */
    function getDay()
    {
        var day = dateBase.getDate();
        if(("" + day).length == 1)
            day   = "0" + day;
        return day;
    }

    /**
     * 현재일부터 특정일자 이전(0), 이후(1)의 날짜를 리턴한다.(YYYYMMDD)
     */
    function getIntervalDate(term, isPrevNext)
    {
        var year2, month2, day2;
        var dt = new Date(getMonth() +"-"+ getDay() +"-"+ getYear());
        var anyTime;
        var anyDate;
        if(isPrevNext == "0") /// 이전
            anyTime = dt.getTime() - (term) * 1000 * 3600 * 24;
        else /// 이후
            anyTime = dt.getTime() + (term) * 1000 * 3600 * 24;
        anyDate = new Date();
        anyDate.setTime(anyTime);
        year2 = ( (anyDate.getYear()<100) ? "19"+ anyDate.getYear() : anyDate.getYear() );
        month2 = anyDate.getMonth()+1;
        day2 = anyDate.getDate();
        if (("" + month2).length == 1)
            month2 = "0" + month2;
        if(("" + day2).length == 1)
            day2   = "0" + day2;
        //alert("["+ year2 +"/"+ month2 +"/"+ day2 +"]");

        return year2 +""+ month2 +""+ day2;
    }

    /**
     * 기준일부터 특정일자 이전(0), 이후(1)의 날짜를 리턴한다.(YYYYMMDD)
     */
    function getIntervalDate2(kijunDate, term, isPrevNext)
    {
        var year2, month2, day2;
        var dt = toTimeObject(deleteDateFormatStr(kijunDate) +"0000");
        var anyTime;
        var anyDate;
        if(isPrevNext == "0") /// 이전
            anyTime = dt.getTime() - (term) * 1000 * 3600 * 24;
        else /// 이후
            anyTime = dt.getTime() + (term) * 1000 * 3600 * 24;
        anyDate = new Date();
        anyDate.setTime(anyTime);
        year2 = ( (anyDate.getYear()<100) ? "19"+ anyDate.getYear() : anyDate.getYear() );
        month2 = anyDate.getMonth()+1;
        day2 = anyDate.getDate();
        if (("" + month2).length == 1)
            month2 = "0" + month2;
        if(("" + day2).length == 1)
            day2   = "0" + day2;
        //alert("["+ year2 +"/"+ month2 +"/"+ day2 +"]");

        return year2 +""+ month2 +""+ day2;
    }

    /**
     * 기준일부터 특정일자 이전(0), 이후(1)의 개월수 만큼 차이나는 날짜를 리턴한다.(YYYYMMDD)
     */
    function getIntervalMonth(kijunDate, term, isPrevNext)
    {
        var kijunDate   = deleteDateFormatStr(kijunDate);
        var year        = kijunDate.substring(0,4); /// 년
        var month       = kijunDate.substring(4,6); /// 월
        var date        = kijunDate.substring(6,8); /// 일
        var addMonth;
        var addYear;
        var tempYear;
        var tempMonth;
        var rtnDate;

        if(isPrevNext == "0") /// 이전
        {
            addMonth    = eval(month) - eval(term);
            addYear     = Math.floor(eval(addMonth/12)); /// 빼줄 년도 계산
            tempYear    = eval(addYear) + eval(addMonth%12);
            if(tempYear > 0)
            {
                tempMonth   = eval(tempYear%13);
            }
            else
            {
                tempMonth   = eval(12 + addMonth%12);
                if(tempYear == 0)
                    addYear     = addYear-1;
            }
        }
        else /// 이후
        {
            addMonth    = eval(month) + eval(term);
            addYear     = Math.floor(eval(addMonth/13)); /// 더해줄 년도 계산
            tempYear    = eval(addYear) + eval(addMonth%13);

            if(tempYear < 13)
            {
                tempMonth   = eval(tempYear%13);
            }
            else
            {
                tempMonth   = eval(tempYear%13 +1);
                addYear     = addYear+1;
            }
        }

        tempMonth   = tempMonth + ""; /// 길이를 알아보기위해 string으로 바꿔줌.
        if(tempMonth.length == 1)
        {
            tempMonth = "0" + tempMonth;
        }
        /// 해당월에 해당일이 존재하는지 체크하고 존재하지 않는다면 마지막 일을 가져온다.
        if( !isValidDay(eval(year) + eval(addYear), tempMonth, date))
            date = getLastDay(eval(year) + eval(addYear), tempMonth);

        rtnDate = eval(year) + eval(addYear) +""+ tempMonth +""+ date;
        //alert(">날짜 ::"+ rtnDate);

        return rtnDate;
    }

    /**
     * Time 스트링을 자바스크립트 Date 객체로 변환
     *
     * parameter time: Time 형식의 String
     */
    function toTimeObject(time)
    { //parseTime(time)
        var year  = time.substr(0,4);
        var month = time.substr(4,2) - 1; // 1월=0,12월=11
        var day   = time.substr(6,2);
        var hour  = time.substr(8,2);
        var min   = time.substr(10,2);

        return new Date(year,month,day,hour,min);
    }

    /**
     * 자바스크립트 Date 객체를 Time 스트링으로 변환
     *
     * parameter date: JavaScript Date Object
     */
    function toTimeString(date)
    { //formatTime(date)
        var year  = date.getFullYear();
        var month = date.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
        var day   = date.getDate();
        var hour  = date.getHours();
        var min   = date.getMinutes();

        if(("" + month).length == 1) { month = "0" + month; }
        if(("" + day).length   == 1) { day   = "0" + day;   }
        if(("" + hour).length  == 1) { hour  = "0" + hour;  }
        if(("" + min).length   == 1) { min   = "0" + min;   }

        return ("" + year + month + day + hour + min)
    }

    /**
     * 유효한(존재하는) 월(月)인지 체크
     */
    function isValidMonth(mm)
    {
        var m = parseInt(mm,10);
        return (m >= 1 && m <= 12);
    }

    /**
     * 유효한(존재하는) 일(日)인지 체크
     */
    function isValidDay(yyyy, mm, dd)
    {
        var m = parseInt(mm,10) - 1;
        var d = parseInt(dd,10);

        var end = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
        if ((yyyy % 4 == 0 && yyyy % 100 != 0) || yyyy % 400 == 0) {
            end[1] = 29;
        }

        return (d >= 1 && d <= end[m]);
    }

    /**
     * 해당 월의 마지막 일을 가져온다.
     */
    function getLastDay(yyyy, mm)
    {
        var m = parseInt(mm,10) - 1;
        var d;

        var end = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
        if ((yyyy % 4 == 0 && yyyy % 100 != 0) || yyyy % 400 == 0) {
            end[1] = 29;
        }
        for(var i=0; i<end.length; i++)
        {
            if(m == i)
                d = end[i];
        }
        //alert("d ::"+ d);

        return d;
    }

    /**
     * 유효한(존재하는) 시(時)인지 체크
     */
    function isValidHour(hh)
    {
        var h = parseInt(hh,10);
        return (h >= 1 && h <= 24);
    }

    /**
     * 유효한(존재하는) 분(分)인지 체크
     */
    function isValidMin(mi)
    {
        var m = parseInt(mi,10);
        return (m >= 1 && m <= 60);
    }

    /**
     * 현재날짜를 리턴한다.
     *
     */
    function getCurDate()
    {
        var date  = new Date();
        var year  = date.getFullYear();
        var month = date.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
        var day   = date.getDate();
        var hour  = date.getHours();
        var min   = date.getMinutes();

        if (("" + month).length == 1) { month = "0" + month; }
        if (("" + day).length   == 1) { day   = "0" + day;   }
        if (("" + hour).length  == 1) { hour  = "0" + hour;  }
        if (("" + min).length   == 1) { min   = "0" + min;   }

        return ("" + year + month + day)
    }
    /* 날짜관련 *******************************************************************************/

    /**
     * 날짜를 체크하여 금월을 return
     *
     * @param       날짜
     */
    function jsThisMonth(nowDate) {
        var form = document.form1;
        
        var nowYear = nowDate.substring(0, 4);
        var nowMonth = nowDate.substring(4, 6);
        var nowDay = nowDate.substring(6, 8);
        var newDay = "";
        
        for(var i=28; i<=31; i++) {
            if (isDate(nowYear + nowMonth + i)) {
                newDay = i + "";
            }
        }

        form.fromDate.value = addDateFormatStr(nowYear + nowMonth + "01");
        form.toDate.value = addDateFormatStr(nowYear + nowMonth + newDay);
    }

    /**
     * 날짜를 체크하여 금주를 return
     *
     * @param       날짜
     */
    function jsThisWeek(nowDate) {
        var form = document.form1;

        var dateWeek = getDateWeek(nowDate);
        var monday = Number(nowDate) - dateWeek + 1;
        var sunday = monday + 6 ;

        form.fromDate.value = addDateFormatStr(monday + "");
        form.toDate.value = addDateFormatStr(sunday + "");
    }

    /**
     * 날짜를 체크하여 금일를 return
     *
     * @param       날짜
     */
    function jsThisDay(nowDate) {
        var form = document.form1;

        form.fromDate.value = addDateFormatStr(nowDate);
        form.toDate.value = addDateFormatStr(nowDate);
    }
    
    /**
     * 지정한 날짜의 요일(1 -> 월, ~ 7 -> 일)
     *
     * @param       날짜
     */
    function getDateWeek(val){
        var day;
        var d = new Date(); 

        d.setUTCFullYear(Number(val.substring(0, 4)));
        d.setUTCMonth(Number(val.substring(4, 6)) - 1);
        d.setUTCDate(Number(val.substring(6, 8)));

        day = d.getDay();

        return day;
    }

    /**
     * 엔터키 누르면 자동으로 다음 필드로 이동
     */
    function enterNextField(field, event) 
    {
        var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;

        if(keyCode == 13)
        {
            var i;
            for(i = 0; i<field.form.elements.length; i++)
            {
                if(field == field.form.elements[i])
                    break;
            }

            i = (i + 1) % field.form.elements.length;
            field.form.elements[i].focus();
            return false;
        } 
        else
            return true;
    }

    /**
     * 화면의 첫번째 TextField에 포커스 이동
     */
    function firstTextFocus() 
    {
        var elements;
        var obj;

        for(var j=0; j<document.forms.length; j++)
        {
            elements = document.forms(j).elements;

            for(var i=0; i<elements.length; i++)
            {
                obj = elements(i);

                if(obj.tagName == "INPUT")
                {
                    if(obj.type == "text" && obj.disabled == false)
                    {
                        obj.focus();
                        return;
                    }
                }
            }
        }
    }

    /**
     * FM## - getFM(12, 4) -> 0012로 변경한다.
     * @param       val 원본 값
     * @param       len 사이즈 (0을 채울 갯수)
     */
    function getFM(val, len)
    {
        if(val == "")
            return val;
        var str     = "";
        var zero    = "";
        var valLen  = new String(val).length;
        var forLen  = len-valLen;
        if(len <= valLen)
            return val;
        for(var i=0; i<(forLen); i++)
        {
            zero    += "0";
        }
        str = zero+val;

        return str;
    }
    
    
    //--	값을 입력여부 확인
function isEmpty(data) {
	for (var i = 0; i < data.length; i++) {
		if (data.substring(i, i+1) != " ") {
			return false;
		}
	}
	return true;
}

//--	번호를 제대로 입력하였는지 확인
function Check_Num1(num) {
	for (var i = 0 ; i < num.length ; i++) {
		if ((num.charAt(i) < '0') || (num.charAt(i) > '9')) {
			return false;
		}
	}
	return true;
}
//--	번호를 제대로 입력하였는지 확인(몇개 특수문자포함)
function Check_Num2(num) {
	for (var i = 0 ; i < num.length ; i++) {
		if ((num.charAt(i) >= '0') && (num.charAt(i) <= '9')
			|| (num.charAt(i) == '-') || (num.charAt(i) == '(')
			|| (num.charAt(i) == ')'))
			continue;
		else
			return false;
	}
	return true;
}
//--	번호를 제대로 입력하였는지 확인(소수점포함)
function Check_Num3(num) {
	if (num == '') {
		num		=	'0';
	}
	var var_1	=	0;
	

	for (var i = 0 ; i < num.length ; i++) {
		if ((num.charAt(i) >= '0' && num.charAt(i) <= '9') || (num.charAt(i) == '.')) {
			if (num.charAt(i) == '.') {
				var_1	=	var_1 + 1;
			}
		//	continue;
		}
		else {
			return false;
		}
	}
	//--	소숫점갯수, 소숫점이하 자리수, 
	if (var_1 > 1) {
		return false;
	}

	return true;
}

//--	숫자를 제대로 입력하였는지 확인
function num_check(num) {
	for (var i = 0 ; i < num.length ; i++) {
		if ((num.charAt(i) < '0') || (num.charAt(i) > '9')) {
			return false;
		}
	}
	return true;
}

//--	소숫점 이하자릿수(1자리) 체크
function Check_Decimal(num) {

	if (num == '') {
		num		=	'0';
	}

	var var_1	=	0;
	var var_p	=	9;
	for (var i = 0 ; i < num.length ; i++) {

		if (num.charAt(i) == '.') {
			var_p		=	i;
		}
		//--	소숫점이하 자리수 계산
		if (i > var_p && (num.charAt(i) >= '0' && num.charAt(i) <= '9')) {
			var_1		=	var_1 + 1;
		}
	}

	//--	소숫점이하 자리수, 
	if (var_1 > 1 || var_p == 0) {
		return false;
	}

	return true
}

//--	입력항목이 공백인지 확인
function empty_check(data) {
	if (data.length == 0) {
		return false;
	}
	else {
		for (var i=0; i<data.length; i++) {
			if (data.substring(i,i+1) != " ") {
				return true;
			}
		}
		return false;
	}
	return true;
}

//--	공백이 있는지 확인
function Space_Check(data) {
	for (var i=0; i<data.length; i++) {
		if (data.substring(i,i+1) == " ") {
			return false;
		}
	}
	return true;
}

//--	입력값 검사
function char_Check(data) {
	var num_cnt		=	0;
	var chk_str		=	'-./[]_{|}~';
//	var chk_str		=	'!#$%()*,-./:;<=>@[\]^_{|}~';
	for (var i = 0; i < data.length; i++) {
		if ((((data.charAt(i) >= '0') && (data.charAt(i) <= '9'))) || (((data.charAt(i) >= 'a') && (data.charAt(i) <= 'z'))) || (((data.charAt(i) >= 'A') && (data.charAt(i) <= 'Z'))))
			num_cnt +=	1;
	}
	if (num_cnt == data.length) {
		return true;
	}
	return false;
}

//--	필드길이 검사(영문, 숫자 1Byte, 한글 2Byte로 계산)
function getLength(str) {
	return (str.length + (escape(str) + "/%u").match(/%u/g).length-1);
}

//--	특수문자 검사(전체)
function Special_Check1(data) {
	var num_cnt		=	0;
	var chk_str		=	'!#$%()*,-./:;<=>@[\]^_`{|}~&+?"';

	for (var i = 0; i < data.length; i++) {
		for (var j = 0; j < chk_str.length; j++)
			if (chk_str.charAt(j) == data.charAt(i) || data.charAt(i) == '"' || data.charAt(i) == "'" || data.charAt(i) == '\\')
				num_cnt += 1;
	}

	if (num_cnt > 0) {
		return false;
	}
	return true;
}

//--	특수문자 검사(-_제외)
function Special_Check2(data) {
	var num_cnt		=	0;
	var chk_str		=	'!#$%()*,./:;<=>@[\]^`{|}~&+?"';

	for (var i = 0; i < data.length; i++) {
		for (var j = 0; j < chk_str.length; j++)
			if (chk_str.charAt(j) == data.charAt(i) || data.charAt(i) == '"' || data.charAt(i) == "'")
				num_cnt += 1;
	}

	if (num_cnt > 0) {
		return false;
	}
	return true;
}

//--	특수문자 검사(/제외)
function Special_Check3(data) {
	var num_cnt		=	0;
	var chk_str		=	'!#$%()*,-.:;<=>@[\]^_`{|}~&+?"';

	for (var i = 0; i < data.length; i++) {
		for (var j = 0; j < chk_str.length; j++)
			if (chk_str.charAt(j) == data.charAt(i) || data.charAt(i) == '"' || data.charAt(i) == "'" || data.charAt(i) == '\\')
				num_cnt += 1;
	}

	if (num_cnt > 0) {
		return false;
	}
	return true;
}

//--	특수문자 검사(복수)
function Double_Check(data) {
	var num_cnt		=	0;
	var chk_str		=	'--__@@(())[[]]{{}}//\\||##$$%%**,,..::;;<<>>&&++??';
	var var_str1	=	'';
	var var_str2	=	'';
	for (var i = 0; i < data.length; i++) {
		if (i < data.length)
			var_str1	=	data.substring(i,i+2);

		for (var j = 0; j < chk_str.length; j++)
			if (j < chk_str.length)
				var_str2	=	chk_str.substring(j,j+1);

			if (var_str1 == var_str2 || var_str1 == '""' || var_str1 == "''")
				num_cnt += 1;
	}

	if (num_cnt > 0) {
		return false;
	}
	return true;
}

//--	OR 문자 검사
function Or_Check(data) {
	var num_cnt		=	0;
	var var_str1	=	'';
	var var_no		=	data.length;

	for (var i = 0; i < data.length; i++) {
		for (var j = i; j < data.length; j++) {
			if (j < data.length)
				var_str1	=	data.substring(i,j+1).toLowerCase();

				if (var_str1 == 'oror' || var_str1 == 'oror ' || var_str1 == ' oror' || var_str1 == ' oror ' 
					|| var_str1 == 'or' || var_str1 == 'or ' || var_str1 == ' or' || var_str1 == ' or ')
					num_cnt += 1;
				
		}
	}

	if (num_cnt > 0) {
		return false;
	}
	return true;
}

//--	Union 문자 검사
function Union_Check(data) {
	var num_cnt		=	0;
	var var_str1	=	'';
	var var_no		=	data.length;

	for (var i = 0; i < data.length; i++) {
		for (var j = i; j < data.length; j++) {
			if (j < data.length)
				var_str1	=	data.substring(i,j+4).toLowerCase();

				if (var_str1 == 'union' || var_str1 == 'union ' || var_str1 == ' union' || var_str1 == ' union ')
					num_cnt += 1;
				
		}
	}

	if (num_cnt > 0) {
		return false;
	}
	return true;
}


//-- 특정 form의 특정name에 대한 chkbox를 모두 value로 setting
function setChkboxAll(formname, name, value) {
    for (var i = 0; i < formname.length ; i++) {
        if (name == formname.elements[i].name)
             formname.elements[i].checked = value;
    }
}

// 처리내용 : 특정값(char)를 append한 결과를 return(체크안되었으면 default값을 append)
//  check된 checkbox의 value를 attach한다 (check안되면 value값을)
// 주로 멀티 선택시 사용 
function getChkBoxByValue(formname, name, defvalue) 
{
    var Buf = "";
    var chkCnt = 0;
    for (var i = 0; i < formname.length ; i++) {
        if (name == formname.elements[i].name) {
            if (formname.elements[i].checked) {
                chkCnt ++;
                Buf = Buf + formname.elements[i].value + defvalue;
            }
        }
    }
    return Buf;
}

// 특수문자등을 사용했는지를 체크한다.
function dataCheck(data) {
	var num_cnt		=	0;
	var chk_str		=	'!#$%()*,-./:;<=>@[\]^_`{|}~';
	for (var i = 0; i < data.length; i++) {
		if ((((data.charAt(i) >= '0') && (data.charAt(i) <= '9'))) || (((data.charAt(i) >= 'a') && (data.charAt(i) <= 'z'))) || (((data.charAt(i) >= 'A') && (data.charAt(i) <= 'Z'))))
			num_cnt += 1;
		for (var j = 0; j < chk_str.length; j++)
			if (chk_str.charAt(j) == data.charAt(i))
				num_cnt -= 1;
	}
	if (num_cnt == data.length) {
		return true;
	}
	return false;
}

	function isEmpty(data)
	{
		for ( var i = 0 ; i < data.length ; i++ ) {
			if ( data.substring( i, i+1 ) != ' ' )
				return false;
		}
		return true;
	}

   function windowLeftPosition(pos){
      var leftPosition = screen.width - pos;
	   
	  leftPosition = (leftPosition < 0) ? 0 : leftPosition/2;
	  
	  return leftPosition;
   }

   function windowTopPosition(pos){
	  var topPosition = screen.height - pos;
	   
	  topPosition  = (topPosition < 0)  ? 0 : topPosition /2;
	  
	  return topPosition;
   }
   
   
 /**
 *	숫자 세자리마다 콤마 찍기
 *
 */  
function plusComma(number) {
    number = '' + number;
    if (number.length > 3) {

    var mod = number.length % 3;
    var output = (mod > 0 ? (number.substring(0,mod)) : '');
        for (i=0 ; i < Math.floor(number.length / 3); i++) {
        if ((mod == 0) && (i == 0))
            output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
        else
            output+= ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
        }
    return (output);
    }
    else return number;
}

// =================================================
// flash ActiveX
// =================================================
function flash(strFile, width, height, wmode) {
	document.write("<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,22,0' width='" + width + "' height='" + height + "'>");
	document.write("<param name='allowScriptAccess' value='sameDomain'>");
	document.write("<param name='movie' value='" + strFile + "'>");
	document.write("<param name='quality' value='high'>");
	document.write("<param name='menu' value='false'>");
	document.write("<param name='scale' value='nosclae'>");
	document.write("<param name='wmode' value='" + wmode + "'>");	
	document.write("<embed src='" + strFile + "' quality='high'  width='" + width + "' height='" + height + "' allowScriptAccess='sameDomain' quality='high' menu='false' scale='nosclae' wmode='" + wmode + "' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed>");
	document.write("</object>");
}
function flashCM(obcode){
    document.write(obcode);
}

//왼쪽 가리기

function layout_hide(bid, btnid, img_on, img_off)
{
	var l = Get_Cookie("_" + bid);
	
	if(l == "false")
	{
		l = "true";
	}
	else
	{
		l = "false";
	}
	
	if(l == "false")
	{
		document.getElementById(bid).style.display = "none";
		document.getElementById(btnid).src = img_off;
	}
	else
	{
		document.getElementById(bid).style.display = "";
		document.getElementById(btnid).src = img_on;
	}
	
	Set_Cookie("_" + bid, l, "", "", "", "");
}
function layout_hide_only(bid, btnid, img_on, img_off)
{
	document.getElementById(bid).style.display = "none";
	document.getElementById(btnid).src = img_off;
}

var layer_seq = null;
function fileLayerControl(upload_seq){
	if(layer_seq == null){
		eval("fileLayer"+upload_seq+".style.display='block';");
		layer_seq = upload_seq;
	}else{
		if(layer_seq != upload_seq){
			eval("fileLayer"+layer_seq+".style.display='none';");
			eval("fileLayer"+upload_seq+".style.display='block';");
			layer_seq = upload_seq;
		}else{
			eval("fileLayer"+layer_seq+".style.display='none';");
			layer_seq = null;
		}
	}
}

function layout_hide_load(bid, btnid, img_on, img_off)
{
	var l = Get_Cookie("_" + bid);
	
	if(l == "false")
	{
		document.getElementById(bid).style.display = "none";
		document.getElementById(btnid).src = img_off;
	}
	else
	{
		document.getElementById(bid).style.display = "";
		document.getElementById(btnid).src = img_on;
	}
}

//===================================
// 아이프레임 크기 변경 (4CSoft-박향정)
//===================================
function resize_frame(name) {
	var oBody = document.frames[name].document.body;
	var oFrame = document.getElementById(name);
	
	oFrame.style.height = oBody.scrollHeight + (oBody.offsetHeight-oBody.clientHeight);
		
	if(oFrame.style.width == '0px' || oFrame.style.height == '0px') {
		// 해당 iframe의 변경할 가로크기
		oFrame.style.width = "146px";
		// 해당 iframe의 변경할 세로크기
		oFrame.style.height = "100px";
		// 크기 변경 후 상태바에 표시하는 오류 메세지
		window.status = 'iframe 크기 변경 실패';
	}
}


function select_rows(act, rows)
{
		var ajax_request = new Ajax.Updater("", act + "?Page.rows=" + rows.value,
			{method:"post", parameters:"", evalScript:true}					
		);
		
		return true;
}

function showLoadingBar()
{
	try {
		Element.setStyle("loadingBar", {"top" : "150", "left" : (document.body.scrollWidth / 2 - 150)});
		Element.show('loadingBar');
	} catch (e) {}
	try {
		parent.Element.setStyle("loadingBar", {"top" : "150", "left" : (document.body.scrollWidth / 2 - 150)});
		parent.Element.show('loadingBar');
	} catch (e) {}
}

function LcmsshowLoadingBar()
{
	try {
		Element.setStyle("loadingBar", {"top" : "30", "left" : (document.body.scrollWidth / 2 - 150)});
		Element.show('loadingBar');
	} catch (e) {}
	try {
		parent.Element.setStyle("loadingBar", {"top" : "30", "left" : (document.body.scrollWidth / 2 - 150)});
		parent.Element.show('loadingBar');
	} catch (e) {}
}

function hideLoadingBar()
{
	try {Element.hide('loadingBar');} catch (e) {}
	try {parent.Element.hide('loadingBar');} catch (e) {}
}

	function getXY( obj ) { 
   var ret = new Object();
   if(document.all) { 
    var rect = obj.getBoundingClientRect(); 
    ret.left = rect.left + (document.documentElement.scrollLeft || document.body.scrollLeft); 
    ret.top = rect.top + (document.documentElement.scrollTop || document.body.scrollTop); 
    ret.width = rect.right - rect.left; 
    ret.height = rect.bottom - rect.top; 
   } else { 
    var box = document.getBoxObjectFor(obj); 
    ret.left = box.x; 
    ret.top = box.y; 
    ret.width = box.width; 
    ret.height = box.height; 
   }
   return ret; 
  }
	function FCKeditor_OnComplete( editorInstance ) {
		//var fck = document.getElementById("blogBbsArticle.article_contents");
		//alert(editorInstance.getAttribute('gub'));
		if (document.all) { 
		// IE	
			editorInstance.EditorDocument.attachEvent("onkeyup", callCounterUpdate) ;
		} else {
		// other browser
			editorInstance.EditorDocument.addEventListener( 'onkeyup', callCounterUpdate, true ) ;
		}
	}
	
	function callCounterUpdate()
	{
		var el = document.getElementsByTagName("IFRAME");
		for(i = 0 ; i < el.length ; i ++)
		{
			if(el[i].getAttribute("id").indexOf("___Frame") > -1)
			{
				var obj = el[i];
				
				count_word(obj,"");
			}
		}
	}

	function count_word(obj, gub)
	{
		var fck 	= null;
		try
		{
			fck = FCKeditorAPI.GetInstance(obj.getAttribute("id").substring(0, obj.getAttribute("id").indexOf("___Frame"))); //document.getElementById(obj.getAttribute("id").substring(0, obj.getAttribute("id").indexOf("___Frame")));
		}catch(e)
		{
			fck = null;
		}
		var txt 	= "";
		var div   = document.createElement("DIV");
		var size	= 0;
		var max 	= 0;
		if(fck != null)
		{
			div.innerHTML = fck.GetXHTML();
			txt = div.innerText;
		}
		else
		{
			txt = obj.value;
			size = obj.getAttribute("size");
			max = obj.getAttribute("maxlength");
		}
		var wrd 	= document.getElementById("typing_value");
		var maxlen = max > 100000 ? (size * 2) : max;
		if(maxlen == null) maxlen = 1500;
		typing_statue(true, getXY(obj),gub);
		wrd.innerHTML = txt.length + (maxlen != 0 ? " / " + maxlen : "") + " 자 입력  <a href=\"javascript:typing_statue(false, this,"+gub+");\">[x]</a>";
		
		if(fck == null)
		{
			if(obj.value.length > maxlen)
			{
				obj.value = obj.value.substring(0, maxlen);
			}
		}
	}

	function typing_statue(b, obj,gub) 
	{
		if(b)
		{
			if(gub != 'blog'){
				document.getElementById("typing").style.display = "";
				document.getElementById("typing").style.left = obj.left;
				document.getElementById("typing").style.top = obj.top + obj.height;
			}else{
				document.getElementById("typing").style.display = "";
				document.getElementById("typing").style.left = obj.left-250;
				document.getElementById("typing").style.top = obj.top + obj.height-100;
			}
		}
		else
		{
			document.getElementById("typing").style.display = "none";
		}
	}
	
	function input_load()
	{
		var el = document.getElementsByTagName("*");
		for(i = 0 ; i < el.length ; i ++)
		{
			if(((el[i].tagName == "INPUT" && (el[i].getAttribute("type") != null && (el[i].getAttribute("type") == "text" || el[i].getAttribute("type") == "password")))
				|| el[i].tagName == "TEXTAREA") 
				&& !el[i].getAttribute("readonly"))
			{
				var obj = el[i];
				obj.onkeyup = function(){count_word(this, "");}
				obj.onfocus = function(){count_word(this, "");}
				obj.onblur = function(){count_word(this, "");typing_statue(false, this, "");}
			}
			else if(el[i].tagName == "IFRAME" && el[i].getAttribute("id") != null && el[i].getAttribute("id").indexOf("___Frame") > -1)
			{
				var obj = el[i];
				
				obj.onkeyup = function(){count_word(this,"");}
				obj.onfocus = function(){count_word(this,"");}
				obj.onblur = function(){count_word(this,"");typing_statue(false, this, "");}
			}
		}
	}
	
	function input_load_blog()
	{
		var el = document.getElementsByTagName("*");
		for(i = 0 ; i < el.length ; i ++)
		{
			if(((el[i].tagName == "INPUT" && (el[i].getAttribute("type") == "text" || el[i].getAttribute("type") == "password"))
				|| el[i].tagName == "TEXTAREA") 
				&& !el[i].getAttribute("readonly"))
			{
				var obj = el[i];
				obj.onkeyup = function(){count_word(this,'blog');}
				obj.onfocus = function(){count_word(this,'blog');}
				obj.onblur = function(){count_word(this,'blog');typing_statue(false, this,'blog');}
			}
			else if(el[i].tagName == "IFRAME" && el[i].getAttribute("id").indexOf("___Frame") > -1)
			{
				var obj = el[i];
				
				obj.onkeyup = function(){count_word(this,'blog');}
				obj.onfocus = function(){count_word(this,'blog');}
				obj.onblur = function(){count_word(this,'blog');typing_statue(false, this,'blog');}
			}
		}
	}

	String.prototype.replaceAll = function(str1, str2) {
		var temp_str = this;
		temp_str = temp_str.replace(eval("/" + str1 + "/gi"), str2);
		return temp_str;
	}
