<!--

try {
	// 미리 선언되어 있을 수도 있으므로 에러발생을 하지 않도록 대충 우겨넣음
	jQuery.noConflict();
} catch(e) {
}

/**
 * 문자열 좌우공백 제거 함수
 * Javascript 기본 String 객체의 확장이기 때문에 이 부분은 그냥 이대로 사용
 */
String.prototype.trim = function() {
  	var pattern = !arguments[0] ? /^\s+|\s+$/g
              : new RegExp('^['+arguments[0]+']+|['+arguments[0]+']+$', 'g')
  	return this.replace(pattern, '');
}

/**
 * 제작 : ariman
 * 공통 스크립트 클래스 버전
 * History
 * 1. 2010.01.21 remake by ariman
 * 2. 2010.01.22 add function by ariman
 */


/**
 * 함수 리스트
 *
 *
 * 공통 함수
 * 1. getObject(id명) 								: HTML 문서에 해당 ID값을 가지는 객체 찾기 		[Yes : true, No : false]
 * 2. stringIsSepcial(문자열)							: 특수문자가 포함되어 있는지 체크한다. 			[Yes : false, No : true]
 * 3. stringIsEnglish(문자열)							: 영대소문자와 숫자로 구성되어 있는지 체크한다.		[Yes : true, No : false]
 * 4. stringIsEmail(문자열)							: 문자열이 이메일주소로 유효한지 체크한다.			[Yes : true, No : false]
 * 5. stringIsZenkaku(문자열)							: 일본어 전각/반각 체크하는 함수					[Yes : true, No : false]
 * 6. isNumber(숫자)									: 값이 숫자로 이루어져있는지 체크					[Yes : true, No : false]
 * 7. mergeObject(Collection1, Collection2)			: 두개의 Collection객체에 담겨있는 값들을 중복없이 합친다.
 * 8. mergeArray(Array1, Array2)					: 두개의 Array객체에 담겨있는 값들을 중복없이 합친다.
 * 9. compareDuplicateDeleteArray(Array1, Array2)	: 두개의 Array객체에 담겨있는 값들을 첫번째에 담겨져 있는 값을 제외한 두번째 배열을 리턴한다.
 *
 *
 * 레이어 또는 팝업 띄우기
 * 1. popup(주소, 가로길이, 세로길이, 팝업이름, 상태바, 스크롤)	: 팝업 띄우기 (상태바, 스크롤은 0, 1로 받음)
 * 2. popupCenter(주소, 가로길이, 세로길이, 팝업이름) 	: 팝업 화면 중앙에 띄우기
 * 3. layerCenter(id명, 가로길이, 세로길이)				: 레이어 중앙에 띄우기
 * 4. layerHide(id명)									: 레이어 숨기기
 * 5. fullScreen(주소)									: 팝업 전체화면 띄우기
 *
 * 달력 및 날짜
 * 1. getNowDate(구분자) 							: 현재 날짜 구하기(년월일을 기준으로 구분자를 넣으면 해당 구분자로 구분)
 *
 * HTML Form 관련 함수
 * 1. checkboxAllCheckByCheckBox(구분자) 					: 체크박스 체크를 통해 해당 폼의 같은 이름을 가지는 모든 체크박스를 체크, 체크되는 체크박스의 ID값으로 핸들링
 * 2. setSelectboxInDivByValue(셀렉트박스ID명, 값)			: 선언된 ID속성을 가진 Selectbox의 값을 지정된 값으로 맞춘다.
 * 3. setSelectboxInFormByValue(폼이름, 셀렉트박스명, 값)		: 선언된 폼내의 Selectbox의 값을 지정된 값으로 맞춘다.
 * 4. setCheckboxInSimpleForm(폼이름, 체크박스명)			: 선언된 폼내의 Checkbox 값을 지정된 값으로 맞춘다.
 * 5. setCheckboxInMultiForm(폼이름, 체크박스명, 값)			: 선언된 폼내의 같은 name속성을 가진 복수개의 Checkbox 값을 지정된 값으로 맞춘다.
 * 6. setRadioButton(폼이름, 라디오버튼명, 값)				: 선언된 폼내의 같은 name속성을 가진 복수개의 RadioButton의 값을 지정된 값으로 맞춘다.
 * 7. setText(폼이름, 텍스트박스명, 값)						: 선언된 폼내의 name속성을 가진 Textbox의 값을 지정된 값으로 한다.
 * 8. checkForm(폼이름, 폼요소배열, 요소별 에러시 메시지배열, action타입) : 선언된 폼내의 배열로 지정한 name속성의 폼요소들의 입력 및 선택된 값이 있는지 체크한다.
 * 9. isSameValue(폼이름, 첫번째폼요소이름, 두번째폼요소이름)	: 선언된 폼내의 서로 다른 두개의 값이 맞는지 체크한다.
 * 10. calcLength(폼이름, 폼요소이름, 비교할 숫자값)			: 선언된 폼내의 지정된 폼요소의 값의 길이가 지정한 값을 기준으로 비교한다.
 *
 * Cookie 관련 함수
 * 1. setCookie(쿠키명, 쿠키값)								: 쿠키를 생성한다.
 * 2. unSetCookie(쿠키명)										: 쿠키를 삭제한다.
 * 3. getCookie(쿠키명)										: 쿠키에 저장된 값을 가져온다.
 */


function ScriptStaks() {

	/************************ 공통, 문자, 숫자 관련 함수 Start ****************************/
	/**
	 * 공통 함수
	 * 1. getObject(id명) 								: HTML 문서에 해당 ID값을 가지는 객체 찾기 		[Yes : true, No : false]
	 * 2. stringIsSepcial(문자열)							: 특수문자가 포함되어 있는지 체크한다. 			[Yes : false, No : true]
	 * 3. stringIsEnglish(문자열)							: 영대소문자와 숫자로 구성되어 있는지 체크한다.		[Yes : true, No : false]
	 * 4. stringIsEmail(문자열)							: 문자열이 이메일주소로 유효한지 체크한다.			[Yes : true, No : false]
	 * 5. stringIsZenkaku(문자열)							: 일본어 전각/반각 체크하는 함수					[Yes : true, No : false]
	 * 6. isNumber(숫자)									: 값이 숫자로 이루어져있는지 체크					[Yes : true, No : false]
	 * 7. mergeObject(Collection1, Collection2)			: 두개의 Collection객체에 담겨있는 값들을 중복없이 합친다.
	 * 8. mergeArray(Array1, Array2)					: 두개의 Array객체에 담겨있는 값들을 중복없이 합친다.
	 * 9. compareDuplicateDeleteArray(Array1, Array2)	: 두개의 Array객체에 담겨있는 값들을 첫번째에 담겨져 있는 값을 제외한 두번째 배열을 리턴한다.
	 */

	/**
     * HTML 문서에 해당 ID값을 가지는 객체 찾기
     * @param {Object} strObjectId - String
     */
	this.getObject = function(strObjectId) {
		if(document.getElementById && document.getElementById(strObjectId)) {
			return document.getElementById(strObjectId);
		} else if (document.all && document.all(strObjectId)) {
			return document.all(strObjectId);
		} else if (document.layers && document.layers[strObjectId]) {
			return document.layers[strObjectId];
		} else {
			return false;
		}
	}

	/**
     * 특수문자가 포함되어 있는지 체크한다.
     * @param {Object} strValue - String
     */
	this.stringIsSepcial = function(strValue) {
		for (var i = 0; i < strValue.length; i++) {
			var strSpecialList = /[~!@\#$?{}%<>^&*\()\-=+_\']/gi;
			if(strSpecialList.test(strValue)) {
				return false;
			}
		}
		return true;
	}

	/**
     * 영대소문자와 숫자로 구성되어 있는지 체크한다.
     * @param {Object} strValue - String
     */
	this.stringIsEnglish = function(strValue) {
	    return (strValue.match(/[^(0-9a-zA-Z)]/)) ? false : true;
	}

	/**
     * 문자열이 이메일주소로 유효한지 체크한다.
     * @param {Object} strMail - String
     */
	this.stringIsEmail = function (strMail) {
		var strCheck1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
		var strCheck2 = /^[a-zA-Z0-9\-\.\_\+]+\@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4})$/;

		if (!strCheck1.test(strMail) && strCheck2.test(strMail) ) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * 일본 전각/반각 체크
	 * @param {Object} strMail - String
	 */
	this.stringIsZenkaku = function(str)  {
	    for(i = 0; i < str.length;i++) {
		    if(escape(str.charAt(i)).length >= 4) {
			    //alert("全角文字が含まれています");
			    return true;
		    }
	    }
	    //alert("全角文字は含まれていません");
	    return false;
	}

	/**
	 * 문자열이 숫자로 이루어져있는지 체크
	 * @param {Object} strMail - String
	 */
	this.isNumber = function(strField) {
		for (var i = 0; i < strField.length; i++) {
			cChar = strField.charAt(i);
			if (!((cChar >= '0') && (cChar <= '9')))
				return false;
		}
		return true;
	}

	/**
	 * 두개의 Collection객체에 담겨있는 값들을 중복없이 합친다.
	 * @date 2010.01.22
	 * @param {Object} obj1 - Object
	 * @param {Object} obj2 - Object
	 */
	this.mergeObject = function(obj1, obj2) {
		var newObject = new Object();
		var n = 0;

		if(obj1.length == undefined) {
			return obj2;
		}

		for(var i in obj1) {
			newObject[n] = obj1[i];
			n++;
			for(var j in obj2) {
				if(obj1[i] != obj2[j]) {
					newObject[n] = obj2[j];
					n++;
				}
			}
		}

		return newObject;
	}

	/**
	 * 두개의 Array객체에 담겨있는 값들을 중복없이 합친다.
	 * @date 2010.01.22
	 * @param {Array} obj1 - Array
	 * @param {Array} obj2 - Array
	 */
	this.mergeArray = function(obj1, obj2) {
		var newObject = new Array();
		var n = 0;

		if(obj1.length == undefined || obj1.length == 0) {
			return obj2;
		}

		for(var i = 0; i < obj1.length; i++) {
			newObject.push(obj1[i]);
			for(var j = 0; j < obj2.length; j++) {
				if(obj1[i] != obj2[j]) {
					newObject.push(obj2[j]);
				}
			}
		}
		return newObject;
	}

	/**
	 * 두개의 Array객체에 담겨있는 값들을 첫번째에 담겨져 있는 값을 제외한 두번째 배열을 리턴한다.
	 * @date 2010.01.25
	 * @param {Array} obj1 - Array
	 * @param {Array} obj2 - Array
	 */
	this.compareDuplicateDeleteArray = function(obj1, obj2) {
		var newObject = new Array();
		var n = 0;

		if(obj1.length == undefined || obj1.length == 0) {
			return obj2;
		}

		for(var i = 0; i < obj1.length; i++) {
			for(var j = 0; j < obj2.length; j++) {
				if(obj1[i] != obj2[j]) {
					newObject.push(obj2[j]);
				}
			}
		}
		return newObject;
	}

	/************************ 공통, 문자, 숫자 관련 함수 End ****************************/

	/************************ 레이어 또는 팝업 띄우기 관련 함수 Start ****************************/
	/**
	 * 레이어 또는 팝업 띄우기
	 * 1. popup(주소, 가로길이, 세로길이, 팝업이름)			: 팝업 띄우기
	 * 2. popupCenter(주소, 가로길이, 세로길이, 팝업이름) 	: 팝업 화면 중앙에 띄우기
	 * 3. layerCenter(id명, 가로길이, 세로길이)				: 레이어 중앙에 띄우기
	 * 4. layerHide(id명)								: 레이어 숨기기
	 * 5. fullScreen(주소)								: 팝업 전체화면 띄우기
	 */
	this.nScreenHeight = screen.height; 		//세로
	this.nScreenWidth =  screen.width; 			//가로

	this.getWidthPosition = function(w) { 		//화면에서 팝업 또는 레이어의 값으로 나눠서 위치를 반환
		var nLeft = this.nScreenWidth/2 - w/2;
		return nLeft;
	}

	this.getHeightPosition = function (h) { 	//화면에서 팝업 또는 레이어의 값으로 나눠서 위치를 반환
		var nTop = this.nScreenHeight/2 - h/2;
		return nTop;
	}

	this.popup = function(URL, nWidth, nHeight, strPopupName, nStatus, nScroll) {
		window.open(URL, strPopupName, 'width=' + nWidth + ', height=' + nHeight + ',status=' + nStatus + ',scrollbars=' + nScroll);
	}
	//팝업 띄우기
	this.popupCenter = function(URL, nWidth, nHeight, strPopupName) {
		var strRef;
		strRef = "'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,";
		strRef = strRef + "width=" + nWidth;
		strRef = strRef+", height=" + nHeight + "', top=" + this.getWidthPosition(nWidth) + ", left=" + this.getHeightPosition(nHeight);
		if(strPopupName == "") {
			strPopupName = "pop";
		}
		window.open(URL, strPopupName, strRef);
	}

	//레이어 띄우기
	this.layerCenter = function(strDivName, nWidth, nHeight) {
		this.getObject(strDivName).style.zIndex = 999;
		var top = (screen.height / 2) - (nHeight / 2);
		var left = (screen.width / 2) - (nWidth / 2);
		this.getObject(strDivName).style.left = left;
		this.getObject(strDivName).style.top = top;
		this.getObject(strDivName).style.display = "block";
	}

	this.layerHide = function(strDivName) {
		this.getObject(strDivName).style.display = "none";
	}

	this.fullScreen = function(url) {
		window.open(url,'pop','width=' + this.nScreenWidth + ', height=' + this.nScreenHeight + ',status=0,scrollbars=1');
	}
	/************************ 팝업 & 레이어 관련 함수 End ****************************/

	/************************ 달력 및 날짜 관련 함수 Start ****************************/
	/**
	 * 달력 및 날짜
	 * 1. getNowDate(구분자) 					: 현재 날짜 구하기(년월일을 기준으로 구분자를 넣으면 해당 구분자로 구분)
	 */
	this.getNowDate = function(delimiter) {
		if(delimiter == "") {
			delimiter = ".";
		}
		var oDate = new Date();
		var strDate = oDate.getYear() + delimiter ;
		if((oDate.getMonth() + 1) < 10) {
			strDate += "0";
		}
		strDate += (oDate.getMonth() +1) + delimiter;
		if(oDate.getDate() < 10) {
			strDate += "0";
		}
		strDate += oDate.getMonth();

		return strDate;
	}
	/************************ 달력 및 날짜 관련 함수 End ****************************/


	/**
	 * HTML Form 관련 함수
	 * 1. checkboxAllCheckByCheckBox(구분자) 					: 체크박스 체크를 통해 해당 폼의 같은 이름을 가지는 모든 체크박스를 체크, 체크되는 체크박스의 ID값으로 핸들링
	 * 2. setSelectboxInDivByValue(셀렉트박스ID명, 값)			: 선언된 ID속성을 가진 Selectbox의 값을 지정된 값으로 맞춘다.
	 * 3. setSelectboxInFormByValue(폼이름, 셀렉트박스명, 값)	: 선언된 폼내의 Selectbox의 값을 지정된 값으로 맞춘다.
	 * 4. setCheckboxInSimpleForm(폼이름, 체크박스명)			: 선언된 폼내의 Checkbox 값을 지정된 값으로 맞춘다.
	 * 5. setCheckboxInMultiForm(폼이름, 체크박스명, 값)		: 선언된 폼내의 같은 name속성을 가진 복수개의 Checkbox 값을 지정된 값으로 맞춘다.
	 * 6. setRadioButton(폼이름, 라디오버튼명, 값)				: 선언된 폼내의 같은 name속성을 가진 복수개의 RadioButton의 값을 지정된 값으로 맞춘다.
	 * 7. setText(폼이름, 텍스트박스명, 값)						: 선언된 폼내의 name속성을 가진 Textbox의 값을 지정된 값으로 한다.
	 * 8. checkForm(폼이름, 폼요소배열, 요소별 에러시 메시지배열, action타입) : 선언된 폼내의 배열로 지정한 name속성의 폼요소들의 입력 및 선택된 값이 있는지 체크한다.
	 * 9. isSameValue(폼이름, 첫번째폼요소이름, 두번째폼요소이름)	: 선언된 폼내의 서로 다른 두개의 값이 맞는지 체크한다.
	 * 10. calcLength(폼이름, 폼요소이름, 비교할 숫자값)			: 선언된 폼내의 지정된 폼요소의 값의 길이가 지정한 값을 기준으로 비교한다.
	 */

	/**
     * ID가 선언된 체크박스를 통해 지정된 폼내의 같은 name을 가지는 Checkbox를 전체 체크하는 함수
     * @event : onClick
     * @param {Object} strFormName - String
     * @param {Object} strFormElementName - String
     * @param {Object} strCheckBoxIdName - String
     */
	this.checkboxAllCheckByCheckBox = function(strFormName, strFormElementName, strCheckBoxIdName) {
		try {
	    	var f = eval("document." + strFormName);
	    	var title = strFormElementName;
	    	if(f.elements[title] != null) {
	    		if(f.elements[title].length != undefined) {
	    			for(var i = 0; i < f.elements[title].length; i++) {
	    				if(document.getElementById(strCheckBoxIdName).checked == true) {
	    					f.elements[title][i].checked = true;
	    				} else {
	    					f.elements[title][i].checked = false;
	    				}
	    			}
	    		} else {
	    			if(document.getElementById(strCheckBoxIdName).checked == true) {
	    				f.elements[title].checked = true;
	    			} else {
	    				f.elements[title].checked = false;
	    			}
	    		}
	    	}
		} catch(exception) {
			alert("함수 checkboxAllCheckByCheckBox 실행중 오류[ " + exception + " ]이(가) 발생하였습니다.");
		}
	}

	/**
     * 선언된 ID속성을 가진 Selectbox의 값을 지정된 값으로 맞춘다.
     * @event : loading time
     * @param {Object} strDivIdName - String
     * @param {Object} strValue - String
     */
	this.setSelectboxInDivByValue = function(strDivIdName, strValue) {
		var oDiv = document.getElementById(strDivIdName);
		if(oDiv.length > 0) {
	    	for(var i = 0; i < oDiv.length; i++) {
	    		if(oDiv[i].value == strValue) {
	    			oDiv.selectedIndex = i;
	    			break;
	    		}
	    	}
	    }
	}

	/**
     * 선언된 폼내의 Selectbox의 값을 지정된 값으로 맞춘다.
     * @event : loading time
     * @param {Object} strFormName - String
     * @param {Object} strFormElementName - String
     * @param {Object} strCheckBoxIdName - String
     */
	this.setSelectboxInFormByValue = function(strFormName, strFormElementName, strValue) {
		var f = eval("document." + strFormName);
		var obj = typeof(f);
		if(obj.toLowerCase() == "object") {
			if(f.elements[strFormElementName] != null && f.elements[strFormElementName] != undefined) {
				for(var i = 0; i < f.elements[strFormElementName].length; i++) {
					if(f.elements[strFormElementName][i].value == strValue) {
						f.elements[strFormElementName].selectedIndex = i;
						break;
					}
				}
			} else {
				alert(strFormName + "내 Elements중에 " + strFormElementName + "을 가지는 요소가 없습니다.");
			}
		} else {
			alert(strFormName + "을 가지는 폼이 없습니다.");
		}
	}

	/**
     * 선언된 폼내의 Checkbox 값을 지정된 값으로 맞춘다.
     * @event : loading time
     * @param {Object} strFormName - String
     * @param {Object} strFormElementName - String
     */
	this.setCheckboxInSimpleForm = function(strFormName, strFormElementName) {
		if(strFormName != "" && strFormElementName != "") {
			var f = eval("document." + strFormName);
			if(f.elements[strFormElementName].checked == false) {
				f.elements[strFormElementName].checked = true;
			}
		} else {
			alert("폼이 지정되지 않거나 해당 폼의 이름이 잘못되었습니다.");
			return;
		}
	}

	/**
     * 선언된 폼내의 같은 name속성을 가진 복수개의 Checkbox 값을 지정된 값으로 맞춘다.
     * @event : loading time
     * @param {Object} strFormName - String
     * @param {Object} strFormElementName - String
     * @param {Object} aValues - Array
     */
	this.setCheckboxInMultiForm = function(strFormName, strFormElementName, aValues) {
		if(strFormName != "" && strFormElementName != "") {
			var f = eval("document." + strFormName);
			if(aValues.length != undefined) {
				if(f.elements[strFormElementName] != null) {
					if(f.elements[strFormElementName].length != undefined) {
						for(var i = 0; i < f.elements[strFormElementName].length; i++) {
							for(var j = 0; j < values.length; j++) {
								if(f.elements[strFormElementName][i].value == aValues[j]) {
									f.elements[strFormElementName][i].checked = true;
								}
							}
						}
					} else {
						for(var i = 0; i < values.length; i++) {
							if(f.elements[strFormElementName].value == aValues[i]) {
								f.elements[strFormElementName].checked = true;
							}
						}
					}
				} else {
					alert("지정한 폼이 존재하지 않습니다.");
				}
			}
		} else {
			alert("폼이 지정되지 않거나 해당 폼의 이름이 잘못되었습니다.");
		}
	}

	/**
     * 선언된 폼내의 같은 name속성을 가진 복수개의 RadioButton의 값을 지정된 값으로 맞춘다.
     * @event : loading time
     * @param {Object} strFormName - String
     * @param {Object} strFormElementName - String
     * @param {Object} strValue - String
     */
	this.setRadioButton = function(strFormName, strFormElementName, strValue) {
		var f = eval("document." + strFormName);
		if(f.elements[strFormElementName] != null && f.elements[strFormElementName] != undefined) {
			if(f.elements[strFormElementName].length != undefined) {
				for(var i = 0; i < f.elements[strFormElementName].length; i++) {
					if(f.elements[strFormElementName][i].value == strValue) {
						f.elements[strFormElementName][i].checked = true;;
						break;
					}
				}
			} else {
				if(f.elements[strFormElementName].value == strValue) {
					f.elements[strFormElementName].checked = true;;
				}
			}
		}
	}

	/**
     * 선언된 폼내의 name속성을 가진 Textbox의 값을 지정된 값으로 한다.
     * @event : loading time
     * @param {Object} strFormName - String
     * @param {Object} strFormElementName - String
     * @param {Object} strValue - String
     */
	this.setText = function(strFormName, strFormElementName, strValue) {
		try {
			var fName = eval("document." + strFormName + "." + strFormElementName);
			fName.value = strValue;
		} catch(exception) {
			alert("[" + strFormName + "]이름을 가진 폼이 없거나, [" + strFormElementName + "] name속성을 가진 Text 요소가 없습니다.");
		}
	}


	/**
     * 선언된 폼내의 배열로 지정한 name속성의 폼요소들의 입력 및 선택된 값이 있는지 체크한다.
     * @event : onClick, onSubmit, onChange
     * @param {Object} strFormName - String
     * @param {Object} aFormElements - Array
     * @param {Object} aFormMessages - Array
     * @param {Object} strActionType - String
     */
	this.checkForm = function(strFormName, aFormElements, aFormMessages, strActionType) {
		if(strFormName != null) {
			var f = eval("document." + strFormName);
			if(aFormElements != null && aFormElements.length != null && aFormElements.length != undefined) {
				if(aFormElements.length == aFormMessages.length) {
						for(var i = 0; i < aFormElements.length; i++) {
							try {
								if(f.elements[aFormElements[i]].value == "") {
									alert(aFormMessages[i]);
									f.elements[aFormElements[i]].focus();
									if(strActionType == "submit") {
										return false;
									} else {
										return;
									}
								}
							} catch(e) {
								alert("[" + (i+1) + "]번째 항목[" + aFormElements[i] + "]에서 에러 [" + e + "]이(가) 발생하였습니다.");
							}
						}
					return true;
				} else {
					alert("폼의 갯수와 폼에 해당하는 메시지의 수가 서로 맞지 않습니다.");
				}
			} else {
				alert("폼 이름의 배열이 잘못되었습니다.")
			}
		} else {
			alert("폼 이름이 없습니다. ");
		}
	}

	/**
     * 선언된 폼내의 서로 다른 두개의 값이 맞는지 체크한다.
     * @param {Object} strFormName - String
     * @param {Object} strFormElementFirst - String
     * @param {Object} strFormElementSecond - String
     */
	this.isSameValue = function(strFormName, strFormElementFirst, strFormElementSecond) {
		if(strFormName != null) {
			var f = eval("document." + strFormName);
			if((f.elements[strFormElementFirst] != null && f.elements[strFormElementFirst] != undefined) && (f.elements[strFormElementSecond] != null && f.elements[strFormElementSecond] != undefined)) {
				if(f.elements[strFormElementFirst].value == f.elements[strFormElementSecond].value) {
					return true;
				} else {
					return false;
				}
			}
		}
	}

	/**
     * 선언된 폼내의 지정된 폼요소의 값의 길이가 지정한 값일 기준으로 비교한다.
     * @param {Object} strFormName - String
     * @param {Object} strFormElementName - String
     * @param {Object} nMaxLength - Integer
     */
	this.calcLength = function(strFormName, strFormElementName, nMaxLength) {
		var f  = eval("document." + strFormName);
		if(f.elements[strFormElementName].length >= nMaxLength) {
			return true;
		}
		return false;
	}

	/******************************************* Form 관련 함수 End ***********************************************/





	/******************************************* Cookie 관련 함수 Start ***********************************************/
	/**
	 * Cookie 관련 함수
	 * 1. setCookie(쿠키명, 쿠키값)								: 쿠키를 생성한다.
	 * 2. unSetCookie(쿠키명)										: 쿠키를 삭제한다.
	 * 3. getCookie(쿠키명)										: 쿠키에 저장된 값을 가져온다.
	 */


	/**
     * 쿠키를 생성한다.
     * @param {Object} strCookieName - String
     * @param {Object} strCookieValue - String
     */
	this.setCookie = function(strCookieName, strCookieValue) {
		try {
	    	var objExpireDate = new Date();
	    	objExpireDate.setDate(objExpireDate.getDate() + 360);
	    	document.cookie = strCookieName + "=" + escape(strCookieValue) + "; path=/; expires=" + objExpireDate.toGMTString() + ";";
	    } catch(exception) {
	    }
	}

	/**
     * 쿠키를 삭제한다.
     * @param {Object} strCookieName - String
     */
	this.unSetCookie = function(strCookieName) {
		try {
	    	var objExpireDate = new Date();
	    	objExpireDate.setDate(objExpireDate.getDate() - 1);
	    	document.cookie = strCookieName + "=;expires=" + objExpireDate.toGMTString();
	    } catch(exception) {
	    }
	}

	/**
     * 쿠키의 값을 가져온다.
     * @param {Object} strCookieName - String
     */
	this.getCookie = function(strCookieName) {
		var strName = strCookieName + "=";
		var objCookie = document.cookie;
		try {
	    	if (objCookie.length > 0) {
	    		var nBegin = objCookie.indexOf(strName);
	    		if (nBegin < 0) {
	    			return;
	    		}
	    		nBegin += strCookieName.length;
	    		var nEnd = objCookie.indexOf(";", nBegin);
	    		if (nEnd == -1) {
	    			nEnd = objCookie.length;
	    		}
	    	}
	    	return unescape(objCookie.substring(nBegin, nEnd));
	    } catch(exception) {
	    }
	}


	/******************************************* jQuery 관련 함수 Start ***********************************************/


	/******************************************* jQuery 관련 함수 End ***********************************************/

}


/**
 * 페이징 관련 클래스
 * 1. setParamUTF8(key:value객체)								: 페이징에 넘길 파라미터와 해당 값을 UTF-8로 인코딩 후 저장
 * 2. setParam(key:value객체)									: 페이징에 넘길 파라미터와 해당 값을 저장
 * 3. send(페이징주소)											: 넘어갈 페이징의 주소로 기존에 저장된 파라미터와 같이 넘긴다.
 */
function Paginate() {	this.strParams = "";
	this.setParamUTF8 = function(param) {
		for(var i in param) {
			this.strParams += i + "=" + encodeURIComponent(param[i]) + "&";
		}
	}

	this.setParam = function(param) {
		for(var i in param) {
			this.strParams += i + "=" + param[i] + "&";
		}
	}

	this.send = function(url) {
		url = url + "&" + this.strParams;
		document.location.href = url;
	}
}

var formScript = new ScriptStaks();
var paginate = new Paginate();



//-->
