/*------------------------------------------------------------------------ * EPMS Core JavaScript * 기본으로 등록된 function이외것은 common.js에 정의하세요. * * @author cheonbo shim * @encoding utf-8 * @date 2009-11-11 *------------------------------------------------------------------------*/ var Common = function() { var toString = Object.prototype.toString; var ua = navigator.userAgent.toLowerCase(); function check(r){ return r.test(ua); } var DOC = document, isStrict = DOC.compatMode == "CSS1Compat", isOpera = check(/opera/), isChrome = check(/chrome/), isWebKit = check(/webkit/), isSafari = !isChrome && check(/safari/), isSafari2 = isSafari && check(/applewebkit\/4/), // unique to Safari 2 isSafari3 = isSafari && check(/version\/3/), isSafari4 = isSafari && check(/version\/4/), isIE = !isOpera && check(/msie/), isIE7 = isIE && check(/msie 7/), isIE8 = isIE && check(/msie 8/), isIE6 = isIE && !isIE7 && !isIE8, isGecko = !isWebKit && check(/gecko/), isGecko2 = isGecko && check(/rv:1\.8/), isGecko3 = isGecko && check(/rv:1\.9/), isBorderBox = isIE && !isStrict, isWindows = check(/windows|win32/), isMac = check(/macintosh|mac os x/), isAir = check(/adobeair/), isLinux = check(/linux/), isSecure = /^https/i.test(window.location.protocol); return { version: '1.0', apply: function(o, c, defaults) { // no "this" reference for friendly out of scope calls if(defaults){ Common.apply(o, defaults); } if(o && c && typeof c == 'object'){ for(var p in c){ o[p] = c[p]; } } return o; }, /** * strict mode여부를 리턴한다. * @type Boolean */ isStrict: isStrict, /** * 사용자 브라우저가 opera인지 여부를 리턴한다. * @type Boolean */ isOpera: isOpera, /** * 사용자 브라우저가 chrome인지 여부를 리턴한다. * @type Boolean */ isChrome: isChrome, /** * 사용자 브라우저가 safari인지 여부를 리턴한다. * @type Boolean */ isSafari: isSafari, /** * 사용자 브라우저가 safari 2.x인지 여부를 리턴한다. * @type Boolean */ isSafari2: isSafari2, /** * 사용자 브라우저가 safari 3.x인지 여부를 리턴한다. * @type Boolean */ isSafari3: isSafari3, /** * 사용자 브라우저가 safari 4.x인지 여부를 리턴한다. * @type Boolean */ isSafari4: isSafari4, /** * 사용자 브라우저가 Internet Explorer인지 여부를 리턴한다. * @type Booolean */ isIE: isIE, /** * 사용자 브라우저가 Internet Explorer 7.x인지 여부를 리턴한다. * @type Boolean */ isIE7: isIE7, /** * 사용자 브라우저가 Internet Explorer 8.x인지 여부를 리턴한다. * @type Boolean */ isIE8: isIE8, /** * 사용자 브라우저가 Internet Explorer 6.x인지 여부를 리턴한다. * @type Boolean */ isIE6: isIE6, /** * 사용자 브라우저가 Gecko Layout엔진을 사용하는지 여부를 리턴한다(e.g. Mozilla, Firefox). * @type Boolean */ isGecko: isGecko, /** * 사용자 브라우저가 Gecko Layout엔진 2.x을 사용하는지 여부를 리턴한다(e.g. Firefox 2.x). * @type Boolean */ isGecko2: isGecko2, /** * 사용자 브라우저가 Gecko Layout엔진 3.x을 사용하는지 여부를 리턴한다(e.g. Firefox 3.x). * @type Boolean */ isGecko3: isGecko3, /** * 사용자 OS가 Windows인지 여부를 리턴한다. * @type Boolean */ isWindows: isWindows, /** * 사용자 OS가 Mac인지 여부를 리턴한다. * @type Boolean */ isMac: isMac, /** * Adobe Air를 통한 호출인지 여부를 리턴한다. * @type Boolean */ isAir: isAir, /** * 사용자 OS가 Linux인지 여부를 리턴한다. * @type Boolean */ isLinux: isLinux, /** * 사용자의 요청이 https(SSL)기반인지 여부를 리턴한다. * @type Boolean */ isSecure: isSecure, /** * 판단대상값이 null이거나 undefained이면 true를 리턴하고 그렇지않은 경우 false를 리턴한다. * @param {Mixed} 판단대상값 * @param {Boolean} allowBlank (optional) true이고 주어진 값이 공백문자열인경우 true를 리턴한다. * @return {Boolean} */ isEmpty : function(v, allowBlank){ return v === null || v === undefined || ((Common.isArray(v) && !v.length)) || (!allowBlank ? v === '' : false); }, /** * 판단대상값이 array 타입인 경우true를 리턴하고 그렇지 않은 경우 false를 리턴한다. * @param {Mixed} 판단대상값 * @return {Boolean} */ isArray : function(v){ return toString.apply(v) === '[object Array]'; }, /** * 판단대상값이 data타입인경우 true를 리턴하고 그렇지 않은 경우 false를 리턴한다. * @param {Object} 판단대상값 * @return {Boolean} */ isDate : function(v){ return toString.apply(v) === '[object Date]'; }, /** * 판단대상값이 object인경우 true를 리턴하고 그렇지 않은 경우 false를 리턴한다. * @param {Mixed} 판단대상값 * @return {Boolean} */ isObject : function(v){ return v && typeof v == "object"; }, /** * 판단대상값이 기본타입인 경우 true를 리턴하고 그렇지 않은 경우 false를 리턴한다. * @param {Mixed} 판단대상값 * @return {Boolean} */ isPrimitive : function(v){ return Common.isString(v) || Common.isNumber(v) || Common.isBoolean(v); }, /** * 판단대상값이 function인 경우 true를 리턴하고 그렇지 않은 경우 false를 리턴한다. * @param {Mixed} 판단대상값 * @return {Boolean} */ isFunction : function(v){ return toString.apply(v) === '[object Function]'; }, /** * 판단대상값이 number타입인경우 true를 리턴하고 그렇지 않은 경우 false를 리턴한다. * @param {Mixed} 판단대상값 * @return {Boolean} */ isNumber : function(v){ return typeof v === 'number' && isFinite(v); }, /** * 판단대상값이 string타입인 경우 true를 리턴하고 그렇지 않은 경우 false를 리턴한다. * @param {Mixed} 판단대상값 * @return {Boolean} */ isString : function(v){ return typeof v === 'string'; }, /** * 판단대상값이 boolean타입인 경우 true를 리턴하고 그렇지 않은 경우 false를 리턴한다. * @param {Mixed} 판단대상값 * @return {Boolean} */ isBoolean : function(v){ return typeof v === 'boolean'; }, /** * 판단대상값이 undefined인 경우 true를 리턴하고 그렇지 않은 경우 false를 리턴한다. * @param {Mixed} 판단대상값 * @return {Boolean} */ isDefined : function(v){ return typeof v !== 'undefined'; }, /** * 주어진값의 앞뒤 공백문자열을 제거하여 리턴한다. * @return {String} */ trim: function(v) { return v.replace(/^\s*/, "").replace(/\s*$/, ""); }, /** * 판단대상값이 이메일형식인 경우 true를 리턴하고 그렇지 않은 경우 false를 리턴한다. * @return {Boolean} */ isEmail: function(v) { if (v.length == 0) return true; return v.search(/^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/) != -1; }, /** * 주어진 문자열에서 검색문자열을 변경문자열을 모두 치환한 후 리턴한다. * @param {String} ov 문자열 * @param {String} sv 검색문자열 * @param {String} rv 치환문자열 * @return {String} */ replaceAll: function(ov, sv, rv) { return ov.replace(new RegExp(sv, "g"), rv); }, /** * 주어진 문자열에서 HTML태그를 제거한 후 리턴한다. * */ removeHTMLTags: function(v) { v = v.replace(/&(lt|gt);/g, function (strMatch, p1){ return (p1 == "lt")? "<" : ">"; }); return v.replace(/<\/?[^>]+(>|$)/g, ""); }, /** * 주어진값을 토대로 쿠키를 생성한다. * @param {String} n 쿠기명 * @param {String} v 쿠기값 * @param {Date} e 만료일자 * @param {String} p 패스 * @param {String} d 도메인 * @param {Boolean} s */ setCookie: function(n, v, e, p, d, s) { document.cookie= name + "=" + escape(v) + ((e) ? "; expires=" + e.toGMTString() : "") + ((p) ? "; path=" + p : "") + ((d) ? "; domain=" + d : "") + ((s) ? "; secure" : ""); }, /** * 주어진 문자열에 해당하는 쿠키값을 리턴한다. * @param {String} v 쿠키명 * @return {String} */ getCookie: function(v) { var dc = document.cookie; var prefix = v + "="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return null; } else { begin += 2; } var end = document.cookie.indexOf(";", begin); if (end == -1) { end = dc.length; } return unescape(dc.substring(begin + prefix.length, end)); }, /** * 주어진 정보에 해당하는 쿠키를 삭제(만료)처리 한다. * @param {String} n 쿠키명 * @param {String} p 패스 * @param {String} d 도메인 */ deleteCookie: function(n, p, d) { if (Common.getCookie(n)) { document.cookie = n + "=" + ((p) ? "; path=" + p : "") + ((d) ? "; domain=" + d : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT"; } } }; }();