diff --git a/src/main/webapp/WEB-INF/jsp/include/tail.jsp b/src/main/webapp/WEB-INF/jsp/include/tail.jsp
index 8382c040..8b5e8cde 100644
--- a/src/main/webapp/WEB-INF/jsp/include/tail.jsp
+++ b/src/main/webapp/WEB-INF/jsp/include/tail.jsp
@@ -42,7 +42,8 @@
">
">
-
+
+?${ver}">
?${ver}">
diff --git a/src/main/webapp/resources/js/fims/framework/cmm/cmmDateUtil.js b/src/main/webapp/resources/js/fims/framework/cmm/cmmDateUtil.js
index 395c34fa..e025a255 100644
--- a/src/main/webapp/resources/js/fims/framework/cmm/cmmDateUtil.js
+++ b/src/main/webapp/resources/js/fims/framework/cmm/cmmDateUtil.js
@@ -267,7 +267,7 @@ var DateUtil = {
/**
* 입력일의 이전일 계산
*/
-window.getPrevDay = function(datestr, days) {
+function getPrevDay(datestr, days) {
if ( days == "0") return datestr;
datestr = datestr.replace(/-/g, "");
if (datestr == "") return "";
@@ -281,7 +281,7 @@ window.getPrevDay = function(datestr, days) {
/**
* 입력일의 다음일 계산
*/
-window.getNextDay = function(datestr, days) {
+function getNextDay(datestr, days) {
if ( days == "0") return datestr;
datestr = datestr.replace(/-/g, "");
if (datestr == "") return "";
@@ -295,7 +295,7 @@ window.getNextDay = function(datestr, days) {
/**
* 해당월의 마지막날
*/
-window.getLastDay = function(datestr) {
+function getLastDay(datestr) {
datestr = datestr.replace(/-/g, "");
if (datestr == "") return "";
var strNextMonth = window.addMonth(datestr, 1);
@@ -310,8 +310,7 @@ window.getLastDay = function(datestr) {
/**
* 년, 월, 일을 입력 받아 Date String으로 변환
*/
-window.getDatetime = function(nYear, nMonth, nDate)
-{
+function getDatetime(nYear, nMonth, nDate){
var objDate = null;
if (nYear.toString().trim().length >= 5) {
@@ -339,8 +338,7 @@ window.getDatetime = function(nYear, nMonth, nDate)
/**
* 년 계산
*/
-window.addYear = function(date, nOffSet)
-{
+function addYear(date, nOffSet){
date = date.replace(/-/g, "");
var nYear = parseInt(date.substr(0, 4), 10) + nOffSet;
var nMonth = parseInt(date.substr(4, 2), 10);
@@ -351,8 +349,7 @@ window.addYear = function(date, nOffSet)
/**
* 월 계산
*/
-window.addMonth = function(date, nOffSet)
-{
+function addMonth(date, nOffSet) {
date = date.replace(/-/g, "");
var nYear = parseInt(date.substr(0, 4), 10);
var nMonth = parseInt(date.substr(4, 2), 10) + nOffSet;
@@ -363,8 +360,7 @@ window.addMonth = function(date, nOffSet)
/**
* 일 계산
*/
-window.addDate = function(date, nOffSet)
-{
+function addDate(date, nOffSet) {
date = date.replace(/-/g, "");
var nYear = parseInt(date.substr(0, 4), 10);
var nMonth = parseInt(date.substr(4, 2), 10);
@@ -375,7 +371,7 @@ window.addDate = function(date, nOffSet)
/**
* 이전해 계싼
*/
-window.getPrevYear = function(datestr, year) {
+function getPrevYear(datestr, year) {
if ( year == "0") return datestr;
datestr = datestr.replace(/-/g, "");
if (datestr == "") return "";
@@ -389,7 +385,7 @@ window.getPrevYear = function(datestr, year) {
/**
* 다음해 계산
*/
-window.getNextYear = function(datestr, year) {
+function getNextYear(datestr, year) {
if ( year == "0") return datestr;
datestr = datestr.replace(/-/g, "");
if (datestr == "") return "";
@@ -403,7 +399,7 @@ window.getNextYear = function(datestr, year) {
/**
* select 연도
*/
-window.setYearCombo = function(id,isAll,isSelect,range){
+function setYearCombo(id,isAll,isSelect,range){
var now = new Date();
var dayYear = now.getFullYear();
var str = "";
@@ -428,7 +424,7 @@ window.setYearCombo = function(id,isAll,isSelect,range){
/**
* select 연도(올해이후)
*/
-window.setYearComboNext = function(id,isAll,isSelect,range){
+function setYearComboNext(id,isAll,isSelect,range){
var now = new Date();
var dayYear = now.getFullYear();
var str = "";
@@ -454,7 +450,7 @@ window.setYearComboNext = function(id,isAll,isSelect,range){
/**
* select 년월
*/
-window.setYearMonCombo = function(id,isAll,isSelect){
+function setYearMonCombo(id,isAll,isSelect){
var day = new Date();
var dayYear = day.getFullYear().toString();
var now = day.getMonth()+1;
@@ -478,7 +474,7 @@ window.setYearMonCombo = function(id,isAll,isSelect){
/**
* 문자열 날짜 숫자로 변경
*/
-window.stringDateToNum = function(paramStr){
+function stringDateToNum(paramStr){
var str = paramStr.replace(/-/g, "");
var dateNum = "";
@@ -510,7 +506,7 @@ window.stringDateToNum = function(paramStr){
* @param2 day2 : 일자 8자리 - 'YYYYMMDD', 'YYYY-MM-DD', 'YYYY/MM/DD', etc
* @return 두 일자간의 일수
*/
-window.calcDayCount = function(day1, day2) {
+function calcDayCount(day1, day2) {
day1 = day1.replace(/-/g, "");
day2 = day2.replace(/-/g, "");
if (day1 == "" || day2 == "") return "";
@@ -524,7 +520,7 @@ window.calcDayCount = function(day1, day2) {
/**
* Get 요일
*/
-window.getWeek = function(datestr, isConvert){
+function getWeek(datestr, isConvert){
datestr = datestr.replace(/-/g, "");
var dateObj = window.getDateObject(datestr);
var week = dateObj.getDay() + 1;
@@ -544,7 +540,7 @@ window.getWeek = function(datestr, isConvert){
//-----------------------------------------------------------
// 현재년월 구하기
//-----------------------------------------------------------
-window.getYearMonth = function() {
+function getYearMonth() {
var today = getToday();
var yearMonth = today.substr(0, 7);
@@ -558,8 +554,7 @@ window.getYearMonth = function() {
* @param astrNotNull: nn:not null, "": null 허용
* @return true/false
**/
-function blnOkDate(astrValue, astrNotNull)
-{
+function blnOkDate(astrValue, astrNotNull) {
var arrDate;
if (astrValue=='')
@@ -599,8 +594,7 @@ function blnOkDate(astrValue, astrNotNull)
*
* @param field INPUT 객체
**/
-function openCalendar(dateField)
-{
+function openCalendar(dateField) {
var obj = eval("document." + dateField);
if (obj.value == "")
diff --git a/src/main/webapp/resources/js/fims/framework/cmm/cmmUtil.js b/src/main/webapp/resources/js/fims/framework/cmm/cmmUtil.js
new file mode 100644
index 00000000..ddee1eb3
--- /dev/null
+++ b/src/main/webapp/resources/js/fims/framework/cmm/cmmUtil.js
@@ -0,0 +1,158 @@
+/**************************************************************************
+* validation
+**************************************************************************/
+
+/**
+ * 문자열이 숫자형인지의 여부를 반환한다.
+ * @param exceptChar - 추가 허용할 문자
+ * @return 숫자형여부
+ */
+function isNumber(str, exceptChar) {
+ return (/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/).test(str.replaceAll(exceptChar,"")) ? true : false;
+};
+
+// 날짜체크
+function isDate(str) {
+
+ if(str.length != 8){
+ return false;
+ }
+
+ if (!isNumber(str, "")) {
+ return false;
+ }
+
+ // 숫자, length 확인
+ var year = str.substring(0,4);
+ var month = str.substring(4,6);
+ var day = str.substring(6,8);
+
+ // 유효날짜 확인
+ if (year>="0001" && year<="9999" && month>="01" && month<="12") {
+ febDays = "29";
+ if ((parseInt(year,10) % 4) == 0) {
+ if ((parseInt(year,10) % 100) == 0 && (parseInt(year,10) % 400) != 0){
+ febDays = "28";
+ }
+ }else{
+ febDays = "28";
+ }
+ if (month=="01" && day>="01" && day<="31") return true;
+ if (month=="02" && day>="01" && day<=febDays) return true;
+ if (month=="03" && day>="01" && day<="31") return true;
+ if (month=="04" && day>="01" && day<="30") return true;
+ if (month=="05" && day>="01" && day<="31") return true;
+ if (month=="06" && day>="01" && day<="30") return true;
+ if (month=="07" && day>="01" && day<="31") return true;
+ if (month=="08" && day>="01" && day<="31") return true;
+ if (month=="09" && day>="01" && day<="30") return true;
+ if (month=="10" && day>="01" && day<="31") return true;
+ if (month=="11" && day>="01" && day<="30") return true;
+ if (month=="12" && day>="01" && day<="31") return true;
+ return false;
+ }
+
+
+ return true;
+}
+
+
+
+/**
+ * 문자열이 지정한 최소길이 이상인지의 여부를 반환한다.
+ * @param minLen - 최소길이
+ * @return 최소길이 이상인지의 여부
+ */
+function isMin(str, minLen) {
+ return str.length >= minLen;
+};
+
+/**
+ * 문자열이 지정한 최대길이 이하인지의 여부를 반환한다.
+ * @param maxLen - 최대길이
+ * @return 최대길이 이하인지의 여부
+ */
+function isMax(str, maxLen) {
+ return str.length <= maxLen;
+};
+
+/**
+ * 문자열이 지정한 최소바이트수 이상인지의 여부를 반환한다.
+ * @param minByte - 최소바이트수
+ * @return 최소바이트수 이상인지의 여부
+ */
+function isMinByte(str, minByte) {
+ return getByte(str) >= minByte;
+};
+
+/**
+ * 문자열이 지정한 최대바이트수 이하인지의 여부를 반환한다.
+ * @param maxByte - 최대바이트수
+ * @return 최대바이트수 이하인지의 여부
+ */
+function isMaxByte(str, maxByte) {
+ return getByte(str) <= maxByte;
+};
+
+
+/**
+ * 문자열이 영어만으로 구성되어 있는지의 여부를 반환한다.
+ * @param exceptChar - 추가 허용할 문자
+ * @return 영어만으로 구성되어 있는지의 여부
+ */
+function isEng(str, exceptChar) {
+ return (/^[a-zA-Z]+$/).test(str.replaceAll(exceptChar,"")) ? true : false;
+};
+
+/**
+ * 문자열이 숫자와 영어만으로 구성되어 있는지의 여부를 반환한다.
+ * @param exceptChar - 추가 허용할 문자
+ * @return 숫자와 영어만으로 구성되어 있는지의 여부
+ */
+function isEngNum(str, exceptChar) {
+ return (/^[0-9a-zA-Z]+$/).test(str.replaceAll(exceptChar,"")) ? true : false;
+};
+
+/**
+ * 이메일 주소의 유효성 여부를 반환한다.
+ * @return 유효성 여부
+ */
+function isEmail(str) {
+ return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(str);
+};
+
+/**************************************************************************
+* String util
+**************************************************************************/
+/**
+ * 문자열의 byte 길이를 반환한다.
+ * @return 문자열의 byte 길이
+ */
+function getByte(str) {
+
+ if ( str == null || str.length == 0 ) {
+ return 0;
+ }
+ var size = 0;
+ for ( var i=0, len=str.length ; i < len ;i++ ) {
+ var charCode = str.charCodeAt(i),
+ charSize = 0;
+
+ if ( charCode <= 0x00007F ) { //127
+ charSize = 1;
+ } else if ( charCode <= 0x0007FF) { //2047
+ charSize = 2;
+ } else if ( charCode <= 0x00FFFF) { //65535
+ charSize = 3;
+ } else {
+ charSize = 4;
+ }
+ size += charSize;
+ }
+ return size;
+};
+
+
+
+
+