/* 전역 변수 */
var IS_NAV = (navigator.appName == "Netscape");
var IS_IE = (navigator.appName == "Microsoft Internet Explorer");
var IS_WIN = (navigator.userAgent.indexOf("Win") != -1);
var IS_MAC = (navigator.userAgent.indexOf("Mac") != -1);
var IS_UNIX = (navigator.userAgent.indexOf("X11") != -1);
/**
* 쿠키에 저장된 값을 반환한다.
* @param name 쿠키 이름
* @return 쿠키 이름에 대한 값을 반환. 없는 경우에는 ""를 반환.
*/
function getCookie(name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg) {
return getCookieVal(j);
}
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return "";
}
/**
* 쿠키를 저장한다.
* @param name 쿠키 이름
* @param value 쿠키 값
* @param expires 쿠키의 유효 일
* @param path
* @param domain
* @param secure
*/
function setCookie(name, value, expires, path, domain, secure) {
if (!path) {
path = "/";
}
document.cookie = name + "=" + escape (value) +
((expires) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
/**
* 쿠키를 삭제한다.
* @param name 삭제할 쿠키 이름
* @param path
* @param domain
*/
function deleteCookie(name, path, domain) {
if (!path) {
path = "/";
}
if (getCookie(name)) {
document.cookie = name + "=" +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
}
/**
* 쿠키를 저장할 때 필요한 적합한 형식의 유효기간을 반환한다.
* @days 쿠키가 유효할 일 (예를 들어 3 일 동안 유효해야 하면 3을 입력)
* @hours 쿠키가 유효할 시간 (예를 들어 2 시간 동안 유효해야 하면 2를 입력)
* @minutes 쿠키가 유효할 분 (예를 들어 30 분 동안 유효해야 하면 30을 입력)
*/
function getExpDate(days, hours, minutes) {
var expDate = new Date( );
if (typeof days == "number" && typeof hours == "number" &&
typeof hours == "number") {
expDate.setDate(expDate.getDate( ) + parseInt(days));
expDate.setHours(expDate.getHours( ) + parseInt(hours));
expDate.setMinutes(expDate.getMinutes( ) +
parseInt(minutes));
return expDate.toGMTString( );
}
}
/**
* 쿠키 값을 읽을 때 사용하는 보조 함수
*/
function getCookieVal(offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1) {
endstr = document.cookie.length;
}
return unescape(document.cookie.substring(offset, endstr));
}
/**
* 입력받을 수 있는 값을 필터링한다.
* ex : ; 숫자만 키입력이 가능한 text filed
* ex : ; 영문,숫자만 키입력이 가능한 text filed
* @param filter : 필터링할 정규표현식 ex) '[0-9]':0~9의 값만 허용, '[a-zA-Z]':알파벳만 허용
* @return
*/
function filterInputData(filter) {
if (filter) {
var sKey = String.fromCharCode(event.keyCode);
var re = new RegExp(filter);
if (!re.test(sKey)) {
event.returnValue = false;
}
}
}
/**
* 주어진 텍스트(source)에 특정 문자(query)가 나타나는 횟수를 반환한다.
* @param source 대상이 되는 텍스트
* @param query 검색하려는 텍스트
* @return 주어진 텍스트에 특정 문자가 나타나는 횟수
*/
function countInstances(source, query) {
var re = new RegExp(query, "g");
var result = source.match(re);
return (result) ? result.length : 0;
}
/**
*
태그의 내용 중 특정 텍스트(before)를 특정 텍스트(after)로 변경한다.
* @param id
태그의 id 속성 값
* @param before 변경 전 텍스트
* @param after 변경 후 텍스트
*/
function replaceTextInDiv(id, before, after) {
var element = document.getElementById(id).firstChild;
var re = new RegExp(before, "g");
element.nodeValue = element.nodeValue.replace(re, after);
return false;
}
function writeTextInElement(id, text) {
var element = document.getElementById(id);
if (element.firstChild) {
element.firstChild.nodeValue = text;
} else {
var child = document.createTextNode(text);
element.appendChild(child);
}
return false;
}
/**
* 입력 변수에 3 자리마다 콤마(,)를 붙여 반환한다.
* @param field 콤마를 붙일 값
*/
function formatCommas(numString) {
var re = /,|\s+/g;
numString = numString.replace(re, "");
re = /(-?\d+)(\d{3})/;
while (re.test(numString)) {
numString = numString.replace(re, "$1,$2");
}
return numString;
}
function stripCommas(numString) {
var re = /,/g;
return numString.replace(re, "");
}
/**
* 텍스트 필드에 입력한 값에 3자리마다 콤마(,)를 붙인다.
* 텍스트 필드에 아래를 기입한다. onkeyup="toMoney(this)"
* @param field 텍스트 필드
*/
function toMoney(field) {
var value = field.value;
var indexOfPoint = value.indexOf(".");
if (indexOfPoint == -1) {
field.value = formatCommas(value);
} else {
field.value = formatCommas(value.substring(0, indexOfPoint)) +
value.substring(indexOfPoint, value.length);
}
}
/**
* 두 날짜 사이의 일수를 계산하여 반환한다.
* @param date1 문자열 데이터로 '20041012' 형식
* @param date2 문자열 데이터로 '20041012' 형식
*/
function daysBetween(date1, date2) {
date1 = new Date(date1.substring(0, 4), date1.substring(4, 6)-1, date1.substring(6,8));
date2 = new Date(date2.substring(0, 4), date2.substring(4, 6)-1, date2.substring(6,8));
var DSTAdjust = 0;
oneMinute = 1000 * 60;
var oneDay = oneMinute * 60 * 24;
date1.setHours(0);
date1.setMinutes(0);
date1.setSeconds(0);
date2.setHours(0);
date2.setMinutes(0);
date2.setSeconds(0);
DSTAdjust = (date2.getTimezoneOffset( ) -
date1.getTimezoneOffset( )) * oneMinute;
var diff = date2.getTime( ) - date1.getTime() - DSTAdjust;
return Math.ceil(diff/oneDay);
}
/**
* 특정 노드가 가지고 있는 모든 속성을 TEXTAREA에 출력한다. 개발 편의를 위해서
* 제공되는 함수이다.
* @param obj 속성 값을 알고자 하는 노드
*/
function listProperties(obj) {
var objName;
if (obj.nodeName) {
objName = obj.nodeName;
} else {
objName = "navigator";
}
var result = "";
for (var i in obj) {
result += objName + "." + i + "=" + obj[i] + "\n";
}
var area = document.createElement("textarea");
area.rows = 20;
area.cols = 50;
var body = document.getElementsByTagName("BODY");
if (body) {
body[0].appendChild(area);
} else {
alert("body 태그가 있어야 합니다.");
return false;
}
area.value = result;
return false;
}
function getQueryString() {
var result = "";
var queryTags = document.getElementsByTagName("input");
for (var i = 0; i < queryTags.length; i++) {
var name = queryTags[i].name;
if (name && name.substring(0, 2) == "q_" || name == "pageNo") {
result += "&" + name + "=" + queryTags[i].value;
}
}
queryTags = document.getElementsByTagName("select");
for (var i = 0; i < queryTags.length; i++) {
var name = queryTags[i].name;
if (name && name.substring(0, 2) == "q_" || name == "pageNo") {
result += "&" + name + "=" + queryTags[i].value;
}
}
return result;
}
/**
* 텍스트 필드에 입력한 값에 6자리 이후에 대시(-)를 붙인다.
* 텍스트 필드에 아래를 기입한다. onkeyup="toSsn(this)"
* @param field 텍스트 필드
*/
function toSsn(field) {
var number = String(field.value);
number = number.replace(/-|\s+/g, "");
var length = number.length;
if (length < 6) {
field.value = number;
} else {
var result = number.substring(0, 6) + "-";
result += number.substring(6, length);
field.value = result;
}
}
function appendFile(document) {
var appendFiles = new Array();
var fileIndex =0;
var uls = document.getElementsByTagName("ul");
for (var i = 0; i < uls.length; i++) {
if (uls[i].className == "upload") {
var spans = uls[i].getElementsByTagName("span");
for (var j = 0; j < spans.length; j++) {
var html = spans[j].innerHTML;
var index = html.indexOf("<");
var fileName = html.substring(0, index);
appendFiles[fileIndex++] = fileName;
}
}
}
return appendFiles;
}