/*************************************************************************
함수명 : trim
기 능 : 문자열 앞뒤에있는 공백없애기
인 수 : arg - trim하려는 스트링
리턴값 :
**************************************************************************/
function trim( arg ) {
var st = 0;
var len = arg.length;
//문자열앞에 공백문자가 들어 있는 Index 추출
while((st < len) && (arg.charCodeAt(st) == 32)) {
st++;
}
//문자열뒤에 공백문자가 들어 있는 Index 추출
while((st < len) && (arg.charCodeAt(len-1) == 32)) {
len--;
}
return ((st > 0) || (len < arg.length)) ? arg.substring(st, len) : arg;
}
/*************************************************************************
************************* 숫자 관련 함수 *******************************
**************************************************************************/
/*********************************************************************************
함수명 : chkNumber
기 능 : 입력 필드에 들어온 데이타가 숫자면 true, 숫자가 아니라면 false를 리턴한다.
인 수 : num - 체크하고자하는 필드값
fName - alert메세지를 뿌려줄것인지 구분 메세지를 넣어주면 해당메세지와 함께 alert창이 뜨고
- 메세지를 넣어주지않으면 alert창이 뜨지 않는다.
리턴값 :
**********************************************************************************/
function chkNumber(num , fName) {
var numTemp = Number(num);
var errorMesg = fName+" 값을 숫자로 입력해 주십시요!";
var nullMesg = fName+" 값을 입력해 주십시요!";
//값이 있다면
if(num != "") {
//숫자면 false반환 - if는 문자라면
if(isNaN(numTemp)) {
if("" == fName){}
else {
alert(errorMesg);
}
return false;
} else { //숫자라면.
return true;
}
} else {
if(fName == ""){}
else {
alert(nullMesg);
}
return false;
}
}
/*************************************************************************
함수명 : isNumber
기 능 : 입력값이 숫자인지를 체크
인 수 : input - 입력값
리턴값 :
**************************************************************************/
function isNumber(input) {
var chars = "0123456789";
return containsCharsOnly(input,chars);
}

/*************************************************************************
함수명 : isNumDash
기 능 : 문자열 전체가 숫자 또는 '-' 인지를 체크
인 수 : input - 객체
리턴값 :
**************************************************************************/
function isNumDash(input) {
var chars = "-0123456789";
return containsCharsOnly(input,chars);
}
/*************************************************************************
함수명 : isNumComma
기 능 : 문자열 전체가 숫자 또는 ',' 인지를 체크
인 수 : input - 객체
리턴값 :
**************************************************************************/
function isNumComma(input) {
var chars = ",0123456789";
return containsCharsOnly(input,chars);
}
/*************************************************************************
함수명 : isFloat
기 능 : 입력값이 실수인지를 체크
인 수 : input - 입력값
리턴값 :
**************************************************************************/
function isFloat(input) {
var numstr = "0123456789.-";
var dotstr = ".";
var thischar;
var count = 0;
var countdot = 0;
var violation = 0;
for ( var i=0; i < input.value.length; i++ ) {
thischar = input.value.substring(i, i+1 );
if ( numstr.indexOf( thischar ) != -1 )
count++;
if ( dotstr.indexOf( thischar ) != -1 )
countdot++;
if(i==0 && thischar == '.') {
violation++;
}
if(i!=0 && thischar == '-') {
violation++;
}
}
if ( count == input.value.length && countdot <= 1 && violation == 0)
return(true);
else
return( false );
}
/*************************************************************************
함수명 : numbersonly
기 능 : 키입력 이벤트에서 숫자만 입력 가능하도록
인 수 :
리턴값 :
**************************************************************************/
function numbersonly(){
if (event.keyCode<48 || event.keyCode>57)
return false
}
/*************************************************************************
함수명 : pad_zero
기 능 : 한자리 숫자의 경우 앞에 '0'을 붙임 ('1' --> '01')
인 수 : Which - 폼 엘리먼트 네임
리턴값 :
**************************************************************************/
function pad_zero(Which) {
DaysObject = eval("document.main." + Which);
var vpn = DaysObject.value;
if (vpn.length == 1)
vpn = '0' + vpn;
DaysObject.value = vpn;
}
/*************************************************************************
함수명 : pad_zero2
기 능 : 한자리 숫자의 경우 앞에 '0'을 붙임 ('1' --> '01') - 엘리먼트 배열의 경우
인 수 : Which - 폼 엘리먼트 네임
리턴값 :
**************************************************************************/
function pad_zero2(Which,idx) {
DaysObject = eval("document.main." + Which);
try {
var vpn = DaysObject[idx].value;
if (vpn.length == 1)
vpn = '0' + vpn;
DaysObject[idx].value = vpn;
} catch (e) {
pad_zero(Which);
}
}
/*************************************************************************
함수명 : Zero2Space
기 능 : 변수의 0값을 공백으로 바꾼다. 바꾸길 원하는 대상은 숫자의 형태여야한다.
숫자,문자 체크안함.(00101 -> 101)
인 수 : SrcObj : 바뀌기전 객체(form.xx)
DstObj : 바뀐후에 값이들어가기를 원하는 객체(form.yy)
리턴값 :
**************************************************************************/
function Zero2Space(SrcObj, DstObj) {
DstObj.value = parseInt(SrcObj.value, 10);
}

/*************************************************************************
함수명 : Space2Zero
기 능 : 변수의 공백을 0으로 바꾼다. 바꾸길 원하는 대상은 숫자의 형태여야한다.
숫자,문자 체크안함.(" 101" -> "00101")
인 수 : vSrcObj - 바뀌기전 객체(form.xx)
vDstObj - 바뀐후에 값이들어가기를 원하는 객체(form.yy)
리턴값 :
**************************************************************************/
function Space2Zero(vSrcObj, vDstObj) {
vDstObj.value = vSrcObj.value.replace(/ /g, 0);
}
/*************************************************************************
함수명 : isInteger
기 능 : 숫자인지 판별
인 수 : str - 체크하고자 하는 스트링
리턴값 :
**************************************************************************/
function isInteger(str) {
if (str != "") {
for (j=0; (j<str.length); j++) {
if (((str.substring(j,j+1) < "0")||(str.substring(j,j+1) > "9"))
&& (str.substring(j,j+1)!="-")
&& (str.substring(j,j+1)!="/")
&& (str.substring(j,j+1)!=",")) {
return false;
}
}
} else {
return false;
}
return true;
}
/*************************************************************************
************************* 일자 관련 함수 *******************************
**************************************************************************/
/*************************************************************************
함수명 : isValidMonth
기 능 : 유효한(존재하는) 월(月)인지 체크
인 수 : mm - 체크하고자 하는 스트링(월)
리턴값 :
**************************************************************************/
function isValidMonth(mm) {
var m = parseInt(mm,10);
return (m >= 1 && m <= 12);
}
/*************************************************************************
함수명 : isValidDay
기 능 : 유효한(존재하는) 일(日)인지 체크
인 수 : yyyy, mm, dd - 체크하고자 하는 년, 월, 일
리턴값 :
**************************************************************************/
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]);
}
/*************************************************************************
함수명 : isValidHour
기 능 : 유효한(존재하는) 시(時)인지 체크
인 수 : hh - 체크하고자 하는 스트링(시)
리턴값 :
**************************************************************************/
function isValidHour(hh) {
var h = parseInt(hh,10);
return (h >= 0 && h <= 24);
}
/*************************************************************************
함수명 : isValidMin
기 능 : 유효한(존재하는) 분(分)인지 체크
인 수 : mi - 체크하고자 하는 스트링(분)
리턴값 :
**************************************************************************/
function isValidMin(mi) {
var m = parseInt(mi,10);
return (m >= 0 && m <= 60);
}
/**
* Time 형식인지 체크(느슨한 체크)
*/
function isValidTimeFormat(time) {
return (!isNaN(time) && time.length == 12);
}
/**
* 유효하는(존재하는) Time 인지 체크
* ex) var time = form.time.value; //'200102310000'
* if (!isValidTime(time)) {
* alert("올바른 날짜가 아닙니다.");
* }
*/
function isValidTime(time) {
var re = /-/g
time = time.replace(re,"");
var re = /:/g
time = time.replace(re,"");
var year = time.substring(0,4);
var month = time.substring(4,6);
var day = time.substring(6,8);
var hour = time.substring(8,10);
var min = time.substring(10,12);
if (parseInt(year,10) >= 1900 && isValidMonth(month) &&
isValidDay(year,month,day) && isValidHour(hour) &&
isValidMin(min)) {
return true;
}
return false;
}
/**
* 유효하는(존재하는) Time 인지 체크
* ex) var time = form.time.value; //'2001023'
* if (!isValidDate(time)) {
* alert("올바른 날짜가 아닙니다.");
* }
*/
function isValidDate(time) {
var re = /-/g
time = time.replace(re,"");
var year = time.substring(0,4);
var month = time.substring(4,6);
var day = time.substring(6,8);
if (parseInt(year,10) >= 1000 && isValidMonth(month) &&
isValidDay(year,month,day)) {
return true;
}
return false;
}
/**
* 유효하는(존재하는) Time 인지 체크
* ex) var time = form.time.value; //'2001'
* if (!isValidDate1(time)) {
* alert("올바른 날짜가 아닙니다.");
* }
*/
function isValidDate1(time) {
var re = /-/g
time = time.replace(re,"");
var year = '';
var month = '01';
var day = '01';
if (time.length >= 8) {
year = time.substring(0,4);
month = time.substring(4,6);
day = time.substring(6,8);
} else if (time.length >= 6) {
year = time.substring(0,4);
month = time.substring(4,6);
} else if (time.length >= 4) {
year = time.substring(0,4);
} else {
return false;
}
if (parseInt(year,10) >= 1000 && isValidMonth(month) &&
isValidDay(year,month,day)) {
return true;
}
return false;
}
/**
* 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)
}
/**
* Time이 현재시각 이후(미래)인지 체크
*/
function isFutureTime(time) {
return (toTimeObject(time) > new Date());
}
/**
* Time이 현재시각 이전(과거)인지 체크
*/
function isPastTime(time) {
return (toTimeObject(time) < new Date());
}
/**
* 주어진 Time 과 y년 m월 d일 h시 차이나는 Time을 리턴
* ex) var time = form.time.value; //'20000101000'
* alert(shiftTime(time,0,0,-100,0));
* => 2000/01/01 00:00 으로부터 100일 전 Time
*/
function shiftTime(time,y,m,d,h) { //moveTime(time,y,m,d,h)
var date = toTimeObject(time);
date.setFullYear(date.getFullYear() + y); //y년을 더함
date.setMonth(date.getMonth() + m); //m월을 더함
date.setDate(date.getDate() + d); //d일을 더함
date.setHours(date.getHours() + h); //h시를 더함
return toTimeString(date);
}
/**
* 두 Time이 몇 개월 차이나는지 구함
* time1이 time2보다 크면(미래면) minus(-)
*/
function getMonthInterval(time1,time2) { //measureMonthInterval(time1,time2)
var date1 = toTimeObject(time1);
var date2 = toTimeObject(time2);
var years = date2.getFullYear() - date1.getFullYear();
var months = date2.getMonth() - date1.getMonth();
var days = date2.getDate() - date1.getDate();
return (years * 12 + months + (days >= 0 ? 0 : -1) );
}
/**
* 두 Time이 며칠 차이나는지 구함
* time1이 time2보다 크면(미래면) minus(-)
*/
function getDayInterval(time1,time2) {
var date1 = toTimeObject(time1);
var date2 = toTimeObject(time2);
var day = 1000 * 3600 * 24; //24시간
return parseInt((date2 - date1) / day, 10);
}
/**
* 두 Time이 몇 시간 차이나는지 구함
* time1이 time2보다 크면(미래면) minus(-)
*/
function getHourInterval(time1,time2) {
var date1 = toTimeObject(time1);
var date2 = toTimeObject(time2);
var hour = 1000 * 3600; //1시간
return parseInt((date2 - date1) / hour, 10);
}
/**
* 현재 시각을 Time 형식으로 리턴
*/
function getCurrentTime() {
return toTimeString(new Date());
}
/**
* 현재 시각과 y년 m월 d일 h시 차이나는 Time을 리턴
*/
function getRelativeTime(y,m,d,h) {
/*
var date = new Date();
date.setFullYear(date.getFullYear() + y); //y년을 더함
date.setMonth(date.getMonth() + m); //m월을 더함
date.setDate(date.getDate() + d); //d일을 더함
date.setHours(date.getHours() + h); //h시를 더함
return toTimeString(date);
*/
return shiftTime(getCurrentTime(),y,m,d,h);
}
/**
* 현재 年을 YYYY형식으로 리턴
*/
function getYear() {
/*
var now = new Date();
return now.getFullYear();
*/
return getCurrentTime().substr(0,4);
}
/**
* 현재 月을 MM형식으로 리턴
*/
function getMonth() {
/*
var now = new Date();
var month = now.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
if (("" + month).length == 1) { month = "0" + month; }
return month;
*/
return getCurrentTime().substr(4,2);
}
/**
* 현재 日을 DD형식으로 리턴
*/
function getDay() {
/*
var now = new Date();
var day = now.getDate();
if (("" + day).length == 1) { day = "0" + day; }
return day;
*/
return getCurrentTime().substr(6,2);
}
/**
* 현재 時를 HH형식으로 리턴
*/
function getHour() {
/*
var now = new Date();
var hour = now.getHours();
if (("" + hour).length == 1) { hour = "0" + hour; }
return hour;
*/
return getCurrentTime().substr(8,2);
}
/**
* 오늘이 무슨 요일이야?
* ex) alert('오늘은 ' + getDayOfWeek() + '요일입니다.');
* 특정 날짜의 요일을 구하려면? => 여러분이 직접 만들어 보세요.
*/
function getDayOfWeek() {
var now = new Date();
var day = now.getDay(); //일요일=0,월요일=1,...,토요일=6
var week = new Array('일','월','화','수','목','금','토');
return week[day];
}
/* 날짜 입력시 "-" 자동으로 붙이기 */
function check_num() { // 숫자만 입력 가능하게
if ((event.keyCode >= 48 && event.keyCode <=111)
||(event.keyCode >= 187) || (event.keyCode == 32)) {
if(event.keyCode >= 96) event.keyCode = parseInt(event.keyCode - 48);
if(isNaN(String.fromCharCode(event.keyCode))) {
event.returnValue = false;
}
}
}
function fromDate(){ // 시작 년-월-일
mainf = document.main;
var fdate = mainf.fromdate.value;
if(event.keyCode != 46 && event.keyCode != 8){
check_num();
if(fdate.length == 4 || fdate.length == 7){
if(mainf.fromdate.value.length == 4){
mainf.fromdate.value = fdate + "-";
}else if(mainf.fromdate.value.length == 7){
mainf.fromdate.value = fdate + "-";
}
return;
}
if(fdate.length == 10){
mainf.todate.focus();
return;
}
return;
}
}
function toDate(){ // 종료 년-월-일
mainf = document.main;
var tdate = mainf.todate.value;
if(event.keyCode != 46 && event.keyCode != 8){
check_num();
if(tdate.length == 4 || tdate.length == 7){
if(mainf.todate.value.length == 4){
mainf.todate.value = tdate + "-";
}else if(mainf.todate.value.length == 7){
mainf.todate.value = tdate + "-";
}
return;
}
return;
}
}

function fmt_date(input) {
if ((event.keyCode >= 48 && event.keyCode <=111)
||(event.keyCode >= 187) || (event.keyCode == 32)) {
if(event.keyCode >= 96) event.keyCode = parseInt(event.keyCode - 48);
if(!isNaN(String.fromCharCode(event.keyCode)) && input.value.length <10) {
input.value += String.fromCharCode(event.keyCode);
if (input.value.length == 4 || input.value.length == 7) {
input.value += "-";
}
}
event.returnValue = false;
}
}
function fmt_time(input) {
if ((event.keyCode >= 48 && event.keyCode <=111)
||(event.keyCode >= 187) || (event.keyCode == 32)) {
if(event.keyCode >= 96) event.keyCode = parseInt(event.keyCode - 48);
if(!isNaN(String.fromCharCode(event.keyCode)) && input.value.length <5) {
input.value += String.fromCharCode(event.keyCode);
if (input.value.length == 2) {
input.value += ":";
}
}
event.returnValue = false;
}
}

function isEmpty_date(Which) {
YearObject = eval("document.main." + Which + "1");
MonthObject = eval("document.main." + Which + "2");
DaysObject = eval("document.main." + Which + "3");
if (isEmpty(YearObject)
&& isEmpty(MonthObject)
&& isEmpty(DaysObject)){
return true;
}
return false;
}
function pad_datevalue(Which) {
YearObject = eval("document.main." + Which + "1");
MonthObject = eval("document.main." + Which + "2");
DaysObject = eval("document.main." + Which + "3");
var dateString = '';
if (YearObject.value.length == 4) {
dateString = YearObject.value + MonthObject.value + DaysObject.value;
} else {
dateString = '0001';
}
return dateString;
}
/*************************************************************************
함수명 : chkFromToDay
기 능 : 기간을 체크
인 수 : frYyyy - 시작기간의 년
frMmm - 시작기간의 월
frDdd - 시작기간의 일
toYyyy - 끝기간의 년
toMm - 끝기간의 월
toDd - 끝기간의 일
chkNull - null check여부 "Y"=null체크함, "N"=null체크안함.
frName, toName - alert메세지를 뿌려줄것인지 구분 메세지를 넣어주면
해당메세지와 함께 alert창이 뜨고
- 메세지를 넣어주지않으면 alert창이 뜨지 않는다.
리턴값 : 시작기간과 끝기간이 빈값이 경우 true 반환
시작기간과 끝기간이 들어가고 (시작기간 <= 끝기간) 이 경우 true 반환
그외의 경우 false 반환
**************************************************************************/
function chkFromToDay(frYyyy,frMm,frDd,toYyyy,toMm,toDd,chkNull,frName, toName) {
if (eval(frYyyy+frMm+frDd)==0 && eval(toYyyy+toMm+toDd)==0) {
return true;
} else {
var date1 = chkYyyyMmDd(frYyyy, frMm, frDd, chkNull, frName);
var date2 = chkYyyyMmDd(toYyyy, toMm, toDd, chkNull, toName);
var gap = eval(date2) - eval(date1); // 받아온 날짜값을 숫자로 바꾼후 계산한다
// 종료일자에서 시작일자를 뺀값이 0보다 적다면(시작일자가 크다면)
if(gap < 0 ) {
return false;
}
return true;
}
}
/*************************************************************************
함수명 : chkDay
기 능 : 일 체크 function
인 수 : vDay - 체크하고자 하는 일
chkNull - null check여부 "Y"=null체크함, "N"=null체크안함.
fName - alert메세지를 뿌려줄것인지 구분 메세지를 넣어주면 해당메세지와 함께 alert창이 뜨고
- 메세지를 넣어주지않으면 alert창이 뜨지 않는다.
리턴값 :
**************************************************************************/
function chkDay(vDay, chkNull, fName) {
if( trim(vDay) == "" ) {
if( chkNull == "N" || chkNull == "n" ) {
return true;
}
if("" == fName){}
else {
alert(fName + "(을)를 반드시 입력 또는 선택하여야 합니다.");
}
return false;
}
if(isNaN(vDay) || vDay > 31 || vDay == 0) {
if("" == fName){}
else {
alert(fName+" 필드는 1-31값만 허용합니다.");
}
return false;
}
if(vDay.length == 1) return "0"+vDay;
return vDay;
}
/*************************************************************************
함수명 : chkMonth
기 능 : 월 체크 function
인 수 : vMonth - 체크하고자 하는 월
chkNull - null check여부 "Y"=null체크함, "N"=null체크안함.
fName - alert메세지를 뿌려줄것인지 구분 메세지를 넣어주면 해당메세지와 함께 alert창이 뜨고
- 메세지를 넣어주지않으면 alert창이 뜨지 않는다.
리턴값 :
**************************************************************************/
function chkMonth(vMonth, chkNull, fName) {
if( trim(vMonth) == "" ) {
if( chkNull == "N" || chkNull == "n" ) {
return true;
}
if("" == fName){}
else {
alert(fName + "(을)를 반드시 입력 또는 선택하여야 합니다.");
}
return false;
}
if(isNaN(vMonth) || vMonth > 12 || vMonth == 0) {
if("" == fName){}
else {
alert(fName+" 필드는 1-12값만 허용합니다.");
}
return false;
}
if(vMonth.length == 1) return "0"+vMonth;
return vMonth;
}
/*************************************************************************
함수명 : chkYear
기 능 : 년 체크 function
인 수 : vYear - 체크하고자 하는 년도
chkNull - null check여부 "Y"=null체크함, "N"=null체크안함.
fName - alert메세지를 뿌려줄것인지 구분 메세지를 넣어주면 해당메세지와 함께 alert창이 뜨고
- 메세지를 넣어주지않으면 alert창이 뜨지 않는다.
리턴값 :
**************************************************************************/
function chkYear(vYear, chkNull, fName) {
var yearTemp = Number(vYear);
var errorMesg = fName + "값을 숫자로 입력해 주십시요!";
var isYearMsg = "년도를 4 자리로 입력하시기 바랍니다";
var yearCheckMsg = "년도를 확인하시기 바랍니다";
if( trim(vYear) == "" ) {
if( chkNull == "N" || chkNull == "n" ) {
return true;
}
if("" == fName){}
else {
alert(fName + "(을)를 반드시 입력 또는 선택하여야 합니다.");
}
return false;
}
if(isNaN(yearTemp)) {
if("" == fName){}
else {
alert(errorMesg);
}
return false;
} else if(vYear.length != 4) {
if("" == fName){}
else {
alert(isYearMsg);
}
return false;
} else {
if (yearTemp < 1900) {
alert(yearCheckMsg);
return false;
} else {
return vYear;
}
}
}
/*************************************************************************
함수명 : chkYyyyMmDd
기 능 : 년월일을 체크하는 Function
인 수 : vYear - 체크하고자 하는 년도
vMonth - 체크하고자 하는 월
vDay - 체크하고자 하는 일
chkNull - null check여부 "Y"=null체크함, "N"=null체크안함.
fName - alert메세지를 뿌려줄것인지 구분 메세지를 넣어주면 해당메세지와 함께 alert창이 뜨고
- 메세지를 넣어주지않으면 alert창이 뜨지 않는다.
리턴값 :
**************************************************************************/
function chkYyyyMmDd(vYear, vMonth, vDay, chkNull, fName) {
var date = "";
var errorMesg1 = fName + "의 년도에 정확한 값을 넣어주십시오!예) 2001";
var errorMesg2 = fName + "의 월에 정확한 값을 넣어주십시오!예) 2001/01/31";
var errorMesg3 = fName + "의 일자에 정확한 값을 넣어주십시오!예) 2001/01/31";

//년도의 4자리수 체크
if( vYear.length != 4 ) {
if("" == fName){}
else {
alert(errorMesg1);
}
return false;
}
//월이 두자리가 아닐경우 앞에 "0"을 붙여서 두자리로 만듬"
if(vMonth < 10 && vMonth.indexOf(0) == -1 ) {
vMonth = "0" + vMonth;
}
//일이 두자리가 아닐경우 앞에 "0"을 붙여서 두자리로 만듬"
if(vDay < 10 && vDay.indexOf(0) == -1 ) {
vDay = "0" + vDay;
}
date = vYear + vMonth + vDay;
if( date.length != 8 || date.length == 0 ) {
if( chkNull == "N" || chkNull == "n" ) {
return true;
}
if("" == fName){}
else {
alert(fName + "(을)를 반드시 입력 또는 선택하여야 합니다.");
}
return false;
}
//날짜가 숫자인지 체크
if( !chkNumber(date, fName)) {
return false;
}
// 월이 12 보다 큰 수가 있는지 체크
if(vMonth > 12 || vMonth == 0) {
if("" == fName){}
else {
alert(errorMesg2);
}
return false;
}
// 일 체크
if(vMonth == 01 || vMonth == 03 || vMonth == 05 || vMonth == 07 || vMonth == 08 || vMonth == 10 || vMonth == 12) {
if(vDay > 31 || vDay == 0) {
if("" == fName){}
else {
alert(errorMesg3);
}
return false
}
} else if(vMonth == 02) { //윤년 조사
if(((vYear % 4 == 0) && (vYear % 100 != 0)) || (vYear % 400 == 0)) {
if(vDay > 29 || vDay == 0) {
if("" == fName){}
else {
alert(errorMesg3);
}
return false;
}
} else {
if(vDay > 28 || vDay == 0) {
if("" == fName){}
else {
alert(errorMesg3);
}
return false
}
}
} else if(vMonth == 04 || vMonth == 06 || vMonth == 09 || vMonth == 11) {
if(vDay > 30 || vDay == 0) {
if("" == fName){}
else {
alert(errorMesg3);
}
return false
}
}
return true;
}

/*************************************************************************
함수명 : cntDayYyyyMmDd
기 능 : 기간 사이의 일수 Count
인 수 : frYyyyMmDd - 시작 년월일
toYyyyMmDd - 종료 년월일
frDdHh24Ss - 시작 시간
toDdHh24Ss - 종료 시간
리턴값 :
**************************************************************************/
function cntDay ( frYyyyMmDd, toYyyyMmDd, frDdHh24Ss, toDdHh24Ss ) {
var frDdHh24SsTmp = ( frDdHh24Ss == null || frDdHh24Ss == "" || isNaN ( frDdHh24Ss ) ) ? "000000" : frDdHh24Ss;
var toDdHh24SsTmp = ( toDdHh24Ss == null || toDdHh24Ss == "" || isNaN ( toDdHh24Ss ) ) ? "000000" : toDdHh24Ss;
var frDt = new Date( frYyyyMmDd.substring(0, 4), frYyyyMmDd.substring(4, 6) - 1,
frYyyyMmDd.substring(6, 8), frDdHh24SsTmp.substring(0, 2),
frDdHh24SsTmp.substring(2, 4), frDdHh24SsTmp.substring(4, 6));
var toDt = new Date( toYyyyMmDd.substring(0, 4), toYyyyMmDd.substring(4, 6) - 1,
toYyyyMmDd.substring(6, 8), toDdHh24SsTmp.substring(0, 2),
toDdHh24SsTmp.substring(2, 4), toDdHh24SsTmp.substring(4, 6));
var tmp = toDt.getTime() - frDt.getTime();
var dayCnt = ( tmp / 24 / 60 / 60 / 1000 );
dayCnt = dayCnt + 1;
return dayCnt;
}
/*************************************************************************
함수명 : addDays
기 능 : srcDate에서 days 후의 년월일을 반환
인 수 : srcDate - 기준 년월일
days - 경과일수
리턴값 :
**************************************************************************/
function addDays(srcDate, days) {
//var srcDate = srcDate.getTime();
var srcDate = new Date(srcDate);
var srcTime = srcDate.getTime();
var destDateTmp1 = new Date( srcTime + (days * 86400000));
var destDateYear = destDateTmp1.getFullYear();
var destDateMonth = destDateTmp1.getMonth() + 1;
var destDateDay = destDateTmp1.getDate();
var destDateTmp2 = "" + destDateYear;
if (destDateMonth < 10) {
destDateTmp2 = destDateTmp2 + "0" + destDateMonth;
} else {
destDateTmp2 = destDateTmp2 + destDateMonth;
}
destDateTmp2 = destDateTmp2 + destDateDay;
var destDate = formatDate(destDateTmp2, "/");
return destDate;
}
/*************************************************************************
함수명 : formatDate
기 능 : YYYYMMDD -> YYYY/MM/DD로 변경
인 수 : sdate - 년월일(YYYYMMDD)
vformat - format String
리턴값 :
**************************************************************************/
function formatDate(sdate, vFormat) {
var fmtDate = "";
if(sdate.length == 8) {
fmtDate = sdate.substring(0, 4) + vFormat + sdate.substring(4, 6)
+ vFormat + sdate.substring(6, 8);
} else if (sdate.length == 6) {
fmtDate = sdate.substring(0, 4) + vFormat + sdate.substring(4, 6);
}
return fmtDate;
}
/*************************************************************************
함수명 : lastDay
기 능 : 해당 년월의 마지막 날짜 구하는 함수
인 수 : calYear - 해당 년도
calMonth - 해당 월
리턴값 :
**************************************************************************/
function lastDay(calYear,calMonth) {
if (((calYear %4 == 0) && (calYear % 100 != 0))||(calYear % 400 == 0))
endDayOfMonth[1] = 29;
var nDays = endDayOfMonth[calMonth-1];
return nDays;
}
/*************************************************************************
************************* 금액 관련 함수 *********************************
**************************************************************************/
function removeComma(input) {
return input.value.replace(/,/gi,"");
}
function insertComma(str) {
str = str + "";
var tmpStr = str+"";
var underComma = "";
if (str.indexOf(".") >=0) {
tmpStr = str.substring(0,tmpStr.indexOf("."));
underComma = "."+str.substring(str.indexOf(".")+1, str.length);
}
var len = tmpStr.length;
var resultValue = "";
var sign = "";
if (str.substring(0,1) == "-") {
sign = "-";
len = len -1;
tmpStr = tmpStr.substring(1);
}
for (var i=0 ; i<len ; i++) {
if (i > 0 && (i % 3) == 0 )
resultValue = "," + resultValue;
resultValue = tmpStr.charAt(len - 1 - i) + resultValue;
}
return sign+resultValue+underComma;
}
/*************************************************************************
함수명 : fmtAmount
기 능 : 숫자 스트링에 "," format을 줌
인 수 : str - formatting하고자 하는 스트링
리턴값 :
**************************************************************************/
function fmtAmount(str) {
var saveStr = "" + str;
if (saveStr.length < 4) return str;
var revStr = reverseStr(saveStr);
var newStr = '';
for (var i=0;i<revStr.length;i++) {
if (i>0 && (i%3)==0) newStr += ',';
newStr += revStr.charAt(i);
}
return reverseStr(newStr);
}
/*************************************************************************
함수명 : delFmtAmount
기 능 : 숫자 스트링에서 ","을 제거함
인 수 : str - 변환대상 스트링
리턴값 :
**************************************************************************/
function delFmtAmount(str) {
str = rmChar(str, ',');
if (!chkNumber(str, "")) return false;
return str;
}
/*************************************************************************
함수명 : roundAllFloat
기 능 : 실수 중 지정된 소수점 이하 자리 올림
인 수 : floatNum - 처리대상 실수
intPosition - 올림하고자하는 자릿수
리턴값 :
**************************************************************************/
function roundAllFloat( floatNum, intPosition ) {
var decimalPosition = Math.pow( 10.0, intPosition );
var returnValue = ( Math.ceil( floatNum * decimalPosition ) ) / decimalPosition ;
return returnValue;
}
/*************************************************************************
함수명 : roundHalfFloat
기 능 : 실수 중 지정된 소수점 이하 자리 반올림
인 수 : floatNum - 처리대상 실수
intPosition - 반올림하고자하는 자릿수
리턴값 :
**************************************************************************/
function roundHalfFloat( floatNum, intPosition ) {
var decimalPosition = Math.pow( 10.0, intPosition );
var returnValue = ( Math.round( floatNum * decimalPosition ) ) / decimalPosition ;
return returnValue;
}
/*************************************************************************
함수명 : roundCutFloat
기 능 : 실수 중 지정된 소수점 이하 자리 버림
인 수 : floatNum - 처리대상 실수
intPosition - 버림하고자하는 자릿수
리턴값 :
**************************************************************************/
function roundCutFloat( floatNum, integerNum ) {
//var sTargetFloat = Float.toString(floatNum);
//var stk = new StringTokenizer(sTargetFloat, ".");
//var stk = new StringTokenizer(floatNum, ".");
//var sIntPart = stk.nextToken();
//var sFloPart = stk.nextToken();
//if(integerNum > sFloPart.length()) return floatNum;
//sFloPart = sFloPart.substring(0, integerNum);
//var sReturnFloat = sIntPart + "." + sFloPart;
//return Float.parseFloat(sReturnFloat);
var vPeriodPos = floatNum.toString().indexOf(".");
var sIntPart = floatNum.toString().substring(0, vPeriodPos);
var sFloPart = floatNum.toString().substring(vPeriodPos + 1);
if(vPeriodPos == -1) return floatNum;
sFloPart = sFloPart.substring(0, integerNum);
var sReturnFloat = sIntPart + "." + sFloPart;
return parseFloat(sReturnFloat);
}

/*************************************************************************
함수명 : toMoney
기 능 : 금액 입력을 체크하고 천단위 "," 표시를 한다.
인 수 : text 박스명
리턴값 : 없음
**************************************************************************/
function toMoney(vObj)
{
var txtObj = rmChar(vObj.value, ",");
if(isNaN(txtObj))
{
alert("숫자를 입력하십시오."); vObj.focus(); return;
}
var sObj = Number(!txtObj?0:txtObj);
vObj.value = fmtAmount(sObj);
}
/*************************************************************************
함수명 : formatNumber
기 능 : 금액 입력을 체크하고 천단위 "," 표시를 한다. 단가제인 경우 소숫점이하2째자리까지 입력받도록한다.
인 수 : numObj - 숫자를 입력하는 text Object
hanObj - 한글로 표시해줄 Text Object
howManyUnderDot - 소숫점 이하 자리수(소수점이하입력받지 않을 시에는 입력하지말것)
리턴값 : 없음
**************************************************************************/
function formatNumber(numObj,hanObj,howManyUnderDot)
{
//문자열에서 컴마를 없앰
var txtObj = rmChar(numObj.value, ",");
if(txtObj == ""){
if(hanObj != null) hanObj.value = "";
return;
}
if(isNaN(txtObj)){
alert("숫자를 입력하십시오."); numObj.value = ""; numObj.focus(); return;
}
var dotPoint = getPointOfDot(txtObj);
if(dotPoint == null){ // 정수형으로입력한경우
var longPart = Number(!txtObj?0:txtObj);
numObj.value = fmtAmount(longPart);
}else{ // 소숫점 포함
if(howManyUnderDot == null || howManyUnderDot == "" || howManyUnderDot == 0){
alert("소숫점을 입력할 수 없습니다.");
return;
}
var longPart = Number(!txtObj.substring(0,dotPoint)?0:txtObj.substring(0,dotPoint));
var underDotPart = txtObj.substring(dotPoint+1);
if(underDotPart.length > howManyUnderDot){
alert("소숫점 이하 "+howManyUnderDot+"번째 자리까지 입력 가능합니다.");
underDotPart = underDotPart.substring(0,howManyUnderDot);
}
numObj.value = fmtAmount(longPart)+"."+underDotPart;
}
// 한글로표시해줄 텍스트박스를 넘겨준 경우 한글로 표시해준다.
if(hanObj != null){
// 소숫점 이상 부분 한글변환
hanObj.value = longPart;
var hanLongPart = convHanAMT(hanObj.value);
// 소숫점 이하 부분 한글변환
if(underDotPart != null){
hanObj.value = underDotPart;
var hanUnderDotPart = convHanAMT(hanObj.value);
}
// 합쳐서 Display
if(longPart != "") hanObj.value = hanLongPart + "원";
if(underDotPart != null && underDotPart != "" && underDotPart != "0" && underDotPart != "00") hanObj.value = hanObj.value + " " + hanUnderDotPart + "전";
}
}
function getPointOfDot(str)
{
for(var i=0; i<str.length; i++){
if(str.substring(i,i+1) == ".") return i;
}
}
function bidTrimLastDot(numObj)
{
var txtObj = numObj.value;
if(txtObj == "") return;
if(txtObj.substring(txtObj.length-1,txtObj.length) == "."){
numObj.value = txtObj.substring(0,txtObj.length-1);
}
}
/*************************************************************************
함수명 : unformatNumber
기 능 : 금액 입력을 체크하고 천단위 "," 표시를 한다. 단가제인 경우 소숫점이하2째자리까지 입력받도록한다.
인 수 : numObj - Formatted된 숫자가 들어 있는 text Object
리턴값 : 없음
**************************************************************************/
function unformatNumber(numObj)
{
numObj.value = rmChar(numObj.value,",");
}
/*************************************************************************
함수명 : unformatNumber
기 능 : 금액 입력을 체크하고 천단위 "," 표시를 한다. 단가제인 경우 소숫점이하2째자리까지 입력받도록한다.
인 수 : numObj - Formatted된 숫자가 들어 있는 text Object
리턴값 : unformatted 문자열
**************************************************************************/
function getUnformatNumber(numObj)
{
var str = numObj.value;
str = rmChar(str,",");
return str;
}
/*************************************************************************
함수명 : calc()
기 능 : 해당 수식의 결과를 정확히 계산해서 원하는 자리에서 절사하는 함수
인 수 : expression - 해당 수식
digit - 절사 위치
리턴값 :
**************************************************************************/
function calc(expression, digit) {
var vRetVal;
var n;
vRetVal = String(eval(expression));
if (vRetVal.length > 16) {
n=vRetVal.indexOf(".");
if (n > 0) n=vRetVal.length-n-2;
if (n > 0) vRetVal=Math.round(eval(vRetVal)*Math.pow(10, n))/Math.pow(10, n);
}
vRetVal = roundCutFloat(vRetVal, digit);
return vRetVal;
}
/*************************************************************************
함수명 : calcRound()
기 능 : 해당 수식의 결과를 정확히 계산해서 원하는 자리에서 반올림하는 함수
인 수 : expression - 해당 수식
digit - 절사 위치
리턴값 :
**************************************************************************/
function calcRound(expression, digit) {
var vRetVal;
var n;
vRetVal = String(eval(expression));
if (vRetVal.length > 16) {
n=vRetVal.indexOf(".");
if (n > 0) n=vRetVal.length-n-2;
if (n > 0) vRetVal=Math.round(eval(vRetVal)*Math.pow(10, n))/Math.pow(10, n);
}
vRetVal = roundHalfFloat(vRetVal, digit);
return vRetVal;
}

/*************************************************************************
************************* 기타 함수 ************************************
**************************************************************************/
function isValidFormat(input,format) {
if (input.value.search(format) != -1) {
return true;
}
return false;
}
function isValidFormat2(str,format) {
if (str.search(format) != -1) {
return true;
}
return false;
}
function isValidEmail(input) {
var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
return isValidFormat(input,format);
}
function isValidZip(input) {
var tel_no = input.split("-");
if (tel_no[0] == "" && tel_no[1] == "" && tel_no[2] == "") {
return true;
}else if (isNaN(tel_no[0]) || isNaN(tel_no[1]) || isNaN(tel_no[2])) {
return false;
}else if (tel_no[0].length < 2 || tel_no[1].length < 3 || tel_no[2].length < 4) {
return false;
} else {
return true;
}
}
function isValidPhone(input) {
var tel_no = input.split("-");
if (tel_no[0] == "" && tel_no[1] == "" && tel_no[2] == "") {
return true;
}else if (isNaN(tel_no[0]) || isNaN(tel_no[1]) || isNaN(tel_no[2])) {
return false;
}else if (tel_no[0].length < 2 || tel_no[1].length < 3 || tel_no[2].length < 4) {
return false;
} else {
return true;
}
}
function hasCheckedRadio(input) {
if (input.length > 1) {
for (var inx = 0; inx < input.length; inx++) {
if (input[inx].checked) return true;
}
} else {
if (input.checked) return true;
}
return false;
}
function getRadioValue(input) {
if (input.length > 1) {
for (var inx = 0; inx < input.length; inx++) {
if (input[inx].checked) return input[inx].value;
}
} else {
if (input.checked) return input.value;
}
return "";
}
function hasCheckedBox(input) {
return hasCheckedRadio(input);
}
function getByteLength(input) {
var byteLength = 0;
for (var inx = 0; inx < input.value.length; inx++) {
var oneChar = escape(input.value.charAt(inx));
if ( oneChar.length == 1 ) {
byteLength ++;
} else if (oneChar.indexOf("%u") != -1) {
byteLength += 2;
} else if (oneChar.indexOf("%") != -1) {
byteLength += oneChar.length/3;
}
}
return byteLength;
}
function getByteLengthVal(input_val) {
var byteLength = 0;
for (var inx = 0; inx < input_val.length; inx++) {
var oneChar = escape(input_val.charAt(inx));
if ( oneChar.length == 1 ) {
byteLength ++;
} else if (oneChar.indexOf("%u") != -1) {
byteLength += 2;
} else if (oneChar.indexOf("%") != -1) {
byteLength += oneChar.length/3;
}
}
return byteLength;
}

function cnt_checkbox(form){
var count = 0
for (var i = 0; i < form.elements.length; i++){
var e = form.elements[i];
if (e.type == 'checkbox')
{
if (e.checked) {
count++;
}
}
}
return count;
}
function chk_all_checkbox(form){
var count = 0
for (var i = 0; i < form.elements.length; i++){
var e = form.elements[i];
if (e.type == 'checkbox')
{
e.checked = true;
}
}
return count;
}
function unchk_all_checkbox(form){
var count = 0
for (var i = 0; i < form.elements.length; i++){
var e = form.elements[i];
//alert(e.type);
if (e.type == 'checkbox')
{
e.checked = false;
}
}
return count;
}
function set_readonly(obj) {
obj.readOnly = true;
}
function release_readonly(obj) {
obj.readOnly = false;
}

var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
try {
var keyCode = (isNN) ? e.which : e.keyCode;
var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
if(input.value.length >= len && !containsElement(filter,keyCode)) {
input.value = input.value.slice(0, len);
input.form[(getIndex(input)+1) % input.form.length].focus();
}
} catch(e) {}
return true;
}
function containsElement(arr, ele) {
var found = false, index = 0;
try {
while(!found && index < arr.length)
if(arr[index] == ele)
found = true;
else
index++;
} catch(e) {}
return found;
}
function getIndex(input) {
var index = -1, i = 0, found = false;
try {
while (i < input.form.length && index == -1)
if (input.form[i] == input)index = i;
else i++;
} catch(e) {}
return index;
}
function isObject(object_key) {
try {
document.all[object_key].value;
return true;
}catch(e) {
return false;
}
}

/*************************************************************************
함수명 : delSpaceNum
기 능 : string을 입력받아 공백제거하고 순수 숫자열만 return
인 수 : str은 check 될 string
리턴값 : String/ 문자일경우 false return
**************************************************************************/
function delSpaceNum(str) {
var i = 0; // looping을 돌기위해 필요한 임시변수
var returnStr = ""; // 반환값을 저장시킬 변수
var len = str.length; // 파라메터의 문자열 길이를 담아주는 변수
// string을 한글자씩 비교하는 while문
while (i<len) {
var sub = str.substring(i,i+1) // 한글자를 잘라옴
var code = sub.charCodeAt(0) // 잘라온 글자의 아스키코드를 담아주는 변수
//한글자씩 잘라온 것이 공백인지를 검사하는 if문
if (code==32) {
} else {
var returnStr = returnStr + sub;
// 전화번호 값이 문자인 경우 return false 시킴
if (code < 48 || code > 57) {
return false;
}
}
i++;
}
return returnStr;
}
/*************************************************************************
함수명 : chkStrLen
기 능 : 입력 필드에 들어온 데이타의 크기를 계산
인 수 : data - 입력 필드에 들어온 데이타
리턴값 :
**************************************************************************/
function chkStrLen(data) {
var size = 0;
var fieldSize = "";
fieldSize = data.length;
for(i=0; i<fieldSize; i++) {
//특수 문자 체크 ",&,$
//if( data.charCodeAt(i) == 34 || data.charCodeAt(i) == 38 || data.charCodeAt(i) == 36 || data.charCodeAt(i) == 39) {
// return false;
//}
//한글이 들어오면 255보다 크다
if( data.charCodeAt(i) > 255 ) {
//size += 2;
size += 3;
} else {
size += 1;
}
}
return size;
}
/*************************************************************************
함수명 : chkStr
기 능 : 입력 필드에 들어온 데이타의 크기를 계산과 특수문자를 체크
인 수 : data - 입력 필드에 들어온 데이터
maxSize - 입력필드의 최대크기
chkNull - null check여부 "Y"=null체크함, "N"=null체크안함.
fName - alert메세지를 뿌려줄것인지 구분 메세지를 넣어주면 해당메세지와 함께 alert창이 뜨고
- 메세지를 넣어주지않으면 alert창이 뜨지 않는다.
리턴값 :
**************************************************************************/
function chkStr(data , maxSize, chkNull, fName) {
var size = 0;
var fieldSize = "";
var errorMesg = fName + "에 입력 하신 값이 너무 큽니다!";
if( trim(data) == "" ) {
if( chkNull == "N" || chkNull == "n" ) {
return true;
}
if("" == fName){}
else {
alert(fName + "(을)를 반드시 입력 또는 선택하여야 합니다.");
}
return false;
}
fieldSize = data.length;
if( chkSpecialChar(data, chkNull, fName )) { // 특수문자가 없을때는 true를 리턴함.
fieldSize = data.length;
for(i=0; i<fieldSize; i++) {
//한글이 들어오면 255보다 크다
if( data.charCodeAt(i) > 255 ) {
//size += 2;
size += 3;
} else {
size += 1;
}
}
if( maxSize < size ) {
//메세지가 없으면 alert을 뿌려주지 않겠다.
if("" == fName){}
else {
alert(errorMesg);
}
return false;
} else {
return true;
}
} // if checkSpecialChar(data) == true end
else {
//메세지가 없으면 alert을 뿌려주지 않겠다.
if("" == fName){}
else {
}
return false;
}// if checkSpecialChar(data) == false end
return true;
}
/*********************************************************************************
함수명 : chkRegNo
기 능 : 사업자등록번호 체크 함수
인 수 : str1 - 사업자등록번호 앞 3자리
str2 - 사업자등록번호 중간 2자리
str3 - 사업자등록번호 뒷 5자리
리턴값 :
**********************************************************************************/
function chkRegNo(str1, str2, str3) {
if (chkNumber(str1, "")) return false;
if (chkNumber(str2, "")) return false;
if (chkNumber(str3, "")) return false;
var i;
var iSum = 0;
var L11,L12,L13;
var L21,L22;
var L31,L32,L33,L34,L35;
if (isInteger(str1) && isInteger(str2) && isInteger(str3)) {
L11 = parseInt(str1.substring(0,1));
L12 = parseInt(str1.substring(1,2));
L13 = parseInt(str1.substring(2,3));
L21 = parseInt(str2.substring(0,1));
L22 = parseInt(str2.substring(1,2));
L31 = parseInt(str3.substring(0,1));
L32 = parseInt(str3.substring(1,2));
L33 = parseInt(str3.substring(2,3));
L34 = parseInt(str3.substring(3,4));
L35 = parseInt(str3.substring(4,5));
iSum = (L11*1)%10 + (L12*3)%10 + (L13*7)%10 + (L21*1)%10 + (L22*3)%10 + (L31*7)%10 + (L32*1)%10 + (L33*3)%10;
var i = (L34*5).toString();
var tmp = 0;
if (i < 10 ) tmp = 0;
else tmp = parseInt(i.substring(0,1));
iSum = iSum + (tmp + (i%10));
iSum = iSum%10;
}
if ( ((10-iSum)%10) != parseInt(L35) ) {
return false;
}
return true;
}
//법인등록번호 체크
function vndr_reg_no_chk(vndr_reg_no1,vndr_reg_no2,vndr_reg_no3){
var v_vndr_reg_no1 = 0;
var v_vndr_reg_no2 = 0;
var v_vndr_reg_no3 = 0;
var v_vndr_reg_no4;
var vndr_reg_chk;
var str= vndr_reg_no1 + vndr_reg_no2 + vndr_reg_no3;
var j = 0;
object = new Array(13)
for(var i=0;i < 12;i++) {
++j;
object[i] = str.substring(i,i+1)
if ( j % 2 == 0 )
v_vndr_reg_no1 = v_vndr_reg_no1 + parseInt(object[i]) * 2;
else
v_vndr_reg_no1 = v_vndr_reg_no1 + parseInt(object[i]) * 1;
}
v_vndr_reg_no2 = Math.floor(v_vndr_reg_no1 / 10); //몫
v_vndr_reg_no3 = parseInt(v_vndr_reg_no1 % 10); //나머지
var chkdigit = str.substring(12, 13); //오류검색번호
vndr_reg_chk = 10 - v_vndr_reg_no3;
if ( vndr_reg_chk == 10 ) vndr_reg_chk = 0;
if ( chkdigit == vndr_reg_chk ) {
return true;
}
else {
return false;
}
}

/*********************************************************************************
함수명 : chkJuminNo
기 능 : 주민번호 체크 함수
인 수 : str1 - 주민번호 앞자리
str2 - 주민번호 뒷자리
리턴값 :
**********************************************************************************/
function chkJuminNo(str1, str2) {
if (chkNumber(str1, "") == false) return false;
if (chkNumber(str2, "") == false) return false;
var x, y, z;
var L11,L12,L13,L14,L15,L16;
var L21,L22,L23,L24,L25,L26,L27;
L11 = parseInt(str1.substring(0,1));
L12 = parseInt(str1.substring(1,2));
L13 = parseInt(str1.substring(2,3));
L14 = parseInt(str1.substring(3,4));
L15 = parseInt(str1.substring(4,5));
L16 = parseInt(str1.substring(5,6));
L21 = parseInt(str2.substring(0,1));
L22 = parseInt(str2.substring(1,2));
L23 = parseInt(str2.substring(2,3));
L24 = parseInt(str2.substring(3,4));
L25 = parseInt(str2.substring(4,5));
L26 = parseInt(str2.substring(5,6));
L27 = parseInt(str2.substring(6,7));
x = (L11*2) + (L12*3) + (L13*4) + (L14*5) + (L15*6) + (L16*7) + (L21*8) + (L22*9) + (L23*2) + (L24*3) + (L25*4) + (L26*5);
y = x % 11;
z = 11 - y;
if (z == 10) z = 0;
else if (z == 11) z = 1;
if (z == parseInt(str2.substring(6,7))) {
return true;
} else {
return false;
}
return false;
}

/*************************************************************************
************************* 팝업 관련 함수 *************************
**************************************************************************/
/*********************************************************************************
함수명 : openWindow
기 능 : 윈도우 띄우기
인 수 : theURL - Source
winName - 윈도우 명
feature - 윈도우 properties('width=530,height=450')
리턴값 :
**********************************************************************************/
function openWindow(theURL, winName, feature) {
var tmp_focus;
if (feature=="" || feature==null) {
tmpFocus = window.open(theURL, winName );
} else {
tmpFocus = window.open(theURL, winName, feature );
}
tmpFocus.focus();
}
/*********************************************************************************
함수명 : openWinSize
기 능 : 윈도우 띄우기
인 수 : theURL - Source
winName - 윈도우 명
winWifth - 윈도우 가로크기
winHeight - 윈도우 세로크기
리턴값 :
**********************************************************************************/
function openWinSize(theURL, winName, winWidth, winHeight) {
var tmp_focus;
var winSize;
if ((winWidth=="" || winWidth==null) && (winHeight=="" || winHeight==null)) {
tmpFocus = window.open(theURL, winName );
}
else {
if (winWidth=="" || winWidth==null)
winSize = "height="+winWidth;
else if (winHeight=="" || winHeight==null)
winSize = "height="+winWidth;
else
winSize = "width="+winWidth+",height="+winWidth;
tmpFocus = window.open(theURL, winName, winSize );
}
tmpFocus.focus();
}
/*************************************************************************
************************* 이미지 팝업 관련 함수 *************************
**************************************************************************/
// function imageAutoResize(img){
// img1= new Image();
// img1.src=(img);
// imgControll(img);
//}
function imageAutoResize(image_URL){
full_image = new Image();
full_image["src"] = image_URL;
// Netscape 때문에 다음 코드를 넣어줌
//var str = "";
//for (var propName in full_image) {
// str += propName + ":" + full_image[propName] + ", ";
//}
//alert(str);

i = 0;
img_width = 0;
img_height = 0;
var str = "";

// Netscape 때문에 Loop 넣어줌
do {
i += 1;

img_width = full_image["width"];
img_height = full_image["height"];
str += i + "= width:" + img_width + ", height:" + img_height + "\n";
} while(i < 40 && (img_width == "0" || img_height == "0"));
if(img_width == "0" || img_height == "0")
{
img_width = 600;
img_height = 500
}
else
{
if(img_width > 660)
img_width = 660;
if(img_height > 500)
img_height = 500;
img_width += 40;
img_height += 45;
}

var full_win = window.open(image_URL, "full_image_win", "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=yes,resizable=yes,Width="+img_width+",Height="+img_height);
full_win.focus();
}
function imgControll(img){
if((img1.width!=0)&&(img1.height!=0)){
viewImage(img);
}
else{
controller="imgControll('"+img+"')";
intervalID=setTimeout(controller,20);
}
}
function viewImage(img){
W=img1.width;
H=img1.height;
O="width="+W+",height="+H;
imgWin=window.open("","",O);
imgWin.document.write("<html><head><title>확대보기</title></head>");
imgWin.document.write("<body topmargin=0 leftmargin=0>");
imgWin.document.write("<img src='"+img+"' omclick='self.close()'>");
imgWin.document.close();
}
/*********************************************************************************
함수명 : emailCheck (2003.07.08추가)
기 능 : 이메일체크
인 수 : input - 폼필드
리턴값 :true면 유효한 메일주소
**********************************************************************************/
function emailCheck (input) {
emailObj=input;
emailStr = emailObj.value;
if(emailStr == "")
{
alert ( "이메일을 입력해 주세요" );
emailObj.focus();
return false;
}
var checkTLD=0;
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("이메일주소가 유효하지 않습니다.\n\n다시 입력해 주세요");
emailObj.select();
return false;
}

var user=matchArray[1];
var domain=matchArray[2];
for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
alert("메일주소에 유효하지 않은 문자가 있습니다.\n\n다시 입력해 주세요");
return false;
}
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
alert("도메인이름에 유효하지 않은 문자가 있습니다.\n\n다시 입력해 주세요");
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("도메인명 확장자가 유효하지 않습니다.");
return false;
}
if (len<2) {
alert("호스트명이 메일주소에 포함되지 않았습니다.");
return false;
}

return true;
}
/*********************************************************************************
함수명 : filenameSpaceCheck (2003-08-27 2:31오후 추가)
기 능 : 파일명 공백 들어가지 못하게 막는다
인 수 : input - 폼필드
리턴값 :true면 유효한 파일명
**********************************************************************************/
function filenameSpaceCheck (VInput,msg) {
obj=VInput;
str = obj.value;

if(str!=""){
var s1 = trim(str);
s1 = s1.substring(s1.lastIndexOf("\\")+1,s1.length);
if(msg==""){
msg = "파일명에 공백이 있습니다.\n\n첨부파일은 공백없이 등록하십시요.\n\n파일명-->" + s1 ;
}
for (i=0; i<s1.length; i++) {
if (s1.charCodeAt(i)==32) {
alert(msg);
return false;
break;
}
}
}

return true;
}

[출처] 함수모듬|작성자 송욱이네

Visual Studio 2005  - Framework 2.0

(AJAX - 방식 언급 안함, 아이디 찾기 데이타 바인딩 생략...

  동적 컨트롤 추가 및 삭제에 관해서만 소스 기술...)

public partial class _BlockSetting : Syste.Web.UI.Page

{

    protected DataTable DtSource = new DataTable();

   
    protected void Page_Load(object sender, EventArgs e)
    {
        MakeBlockTable();     //  동적 컨트롤 생성을 위해 Repeater 테이블 초기화

        if (IsPostBack)

           SaveBlockData();   //   동적 컨트롤 추가시 기존 데이타 저장

    }

 

    protected void Page_PreRender(object sender, EventArgs e)

    {

        BlockRepeater.DataBind();     // Repeater  블럭 설정 동적 컨트롤에 데이타 바인딩

    }

 

    #region MakeBlockTable

    protected void MakeBlockTable()

    {

        DtSource.Columns.Add(new DataColumn("UserNo", typeof(string)));

        DtSource.Columns.Add(new DataColumn("UserId", typeof(string)));

        DtSource.Columns.Add(new DataColumn("BlockTerm", typeof(string)));

        DtSource.Columns.Add(new DataColumn("BlockReason", typeof(string)));

        DtSource.Columns.Add(new DataColumn("BlockDelete", typeof(string)));

    }

    #endregion

 

    #region SaveBlockData        // 리피터 동적 컨트롤 값 저장

    protected void SaveBlockData()

    {

         DataRow Dr;

   

         foreach (RepeaterItem item in BlockRepeater.Items)

         {

              Dr = DtSource.NewRow();

  

              Dr["UserNo"] = ((TextBox)item.findControl("UserNo")).Text;

              Dr["UserId"] = ((TextBox)item.findControl("UserId")).Text;

              Dr["BlockTerm"] = ((TextBox)item.findControl("blockTerm")).Text;

              Dr["BlockReason"] = ((TextBox)item.findControl("BlockReason")).Text;

              Dr["BlockDelete"] = ((Label)item.FindControl("BlockDelete")).Text;

              DtSource.Rows.Add(Dr);

          }

    }

     #endregion

 

 

    #region ChoiceBtnClick     // 선택링크 클릭 시  (1 참조... 아이디 찾기 후 리스트 선택 클릭 시)

    protected void ChoiceBtnClick(object sender, EventArgs e)

   {

        DataRow Dr = DtSource.NewRow();

        Type t = this.GetType();

   

        string user_no = UserNoHidden.Value.TosString();

        string user_id = UserIdHidden.Value.ToString();

        string AlertMessage = "AlertMessage(\"한번에 5개까지 블럭설정을 할 수 있습니다.\");";

 

        if (DtSource.Rows.Count > 4)    // 리스트가 5개 이상일 때... 선택 불가 메세지 출력

            ScriptManager.RegisterClientScriptBlock(this.Page, t, null, AlertMessage, true);

        else

        {

              if (DtSource.Rows.Count > 0)   // 선택 된 아이디가 있을 시 중복 체크

              {

                   for (int i = 0; i < DtSource.Rows.Count; i++)

                   {

                        TextBox _UserId = (TextBox)BlockRepeater.Items[i].FindControl("UserId");

                        if (_UserId.Text == user_id.ToString())

                        {

                            ScriptManager.RegisterClientScriptBlock(this.Page, t, null, "AlertMessage(\"이미 선택하신 아이디 입니다.\");", true);

                             return;

                         }

                    }

               }

               Dr["UserNo"] = user_no.ToString();

               Dr["UserId"] = user_id.TosString();

               Dr["BlockTerm"] = string.Empty;

               Dr["BlockReason"] = string.Empty;

               Dr["BlockDelete"] = "<a href=\"javascript:Delete_ok('" + user_no.ToString() + "');\">제거</a>";

 

               DtSource.Rows.Add(Dr);

        }

   }

   #endregion

 

 

   #region RemoveBtnClick     // 블럭설정 리스트에서 리스트 제거

   // 순자척으로 삭제를 하고 싶으시면... 여기서 변형만 하시면 금방 하실 수 있습니다.

   // (몇번째 로우열이 아닌... 유저넘버 값으로 비교 후 해당 로우열 삭제 하는 방식

   protected void RemoveBtnClick(object sender, EventArgs e)

   {

        string _DeleteId =  DeleteIdHidden.value.ToString();    // 삭제하고자 하는 유저넘버 값 가져 오기

 

        for (int i = 0; i < BlockRepeater.Items.Count; i++)       // 또는 Blockrepeater.Items.Count  대신  DtSource.Rows.Count

       {

             TextBox _UserNo = (TextBox)BlockRepeater.Items[i].FindControl("UserNo");

 

             if (_UserNo.Text == _DeleteId)

                  DtSource.Rows.RemoveAt(i);

        }

    }

    #endregion

}


.net 초보 입니다...

게임 관리 툴을 .net으로 개발 하기로 해서... 혼자서 DB 설계, 프로그래밍 하기도 벅찬데...

.net 까지 할려니 머리가 돌 지경입니다.

 

동적 컨트롤 추가에 대해 찾아 보다 보다...

(도저히 원하는 답을 찾지 못해서....)

결국은 못 찾고... 맨땅에 헤딩해 가며 알아낸 방법입니다...

모르시는 부분들은 Msdn 찾아 가시면서 하세요 ^^ ....

 

딴지는 절대 사절...

 

 

1. 블럭 설정을 할 아이디를 입력 후 아이디 찾기 버튼을 클릭...

2. 블럭설정 아이디 리스트 바인딩...  선택 링크 클릭...

3. 블럭설정 리스트에 동적 컨트롤 추가(TextBox) - 5개 제한

4. 블럭설정 리스트 제거 버튼 클릭... 동적 컨트롤 삭제

 

(AJAX 방식, PANEL, TABLEROW, REPEATER 방식 사용 - AJAX, PANEL, TABLEROW, REPEATER

  관련 내용은 설명 안함... 단순히 동적 컨트롤 생성에 대해서만...)

 

 

###  블럭설정 리스트 부분 폼 소스...

<script language="javascript">

    function ChoiceId(a, b, c)
    {
        var UserNo = document.getElementById("UserNoHidden");
        var UserId = document.getElementById("UserIdHidden");
       
        if ( c == "Y")
        {
            alert ("게임에 접속 중인 아이디 입니다.\n   블럭 설정을 할 수 없습니다.");
            return;
        }
        else
        {      
            UserNo.value = a;
            UserId.value = b;
           
            __doPostBack("ChoiceBtn", "");
        }
    }   
   
    function Delete_ok(a)
    {
        var DeleteId = document.getElementById("DeleteIdHidden");
       
        DeleteId.value = a;
   
        __doPostBack("RemoveBtn", "");
    }

</script>

 

~ 생략

 

<asp:HiddenField ID="UserNoHidden" runat="server" />

<asp:HiddenField ID="UserIdHidden" runat="server" />

 

~ 생략

 

<!---// 블럭설정 리스트 시작 //--->
<asp:UpdatePanel ID="BlockUpdatePanel" runat="server" UpdateMode="conditional">
<ContentTemplate>
<asp:Panel ID="BlockPanel" runat="server" Visible="false">
<table style="width: 840px;" border="0" cellpadding="0" cellspacing="0">
<tr>
<td style="width: 840px; height: 1px; background-image: url(/images/user/dot_line.jpg);"></td>
</tr>
<tr>
<td style="width: 840px; height: 20px;"></td>
</tr>
<tr>
<td style="width: 840px;">
<!---// 타이틀 시작 //--->
<table style="width: 840px;" border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" style="width: 840px; height: 3px; background-color: #666666;"></td>
</tr>
<tr>
<td colspan="2" style="width: 840px; height: 2px; background-image: url(/images/user/dot1.jpg);"></td>
</tr>
<tr>
<td style="width: 30px; height: 25px; text-align: right; background-color: #D4D0C8;">
<img src="/images/user/left_bar.jpg" width="5px" height="17px" alt="" />
</td>
<td style="width: 710px; height: 25px; text-align: left; padding-left: 10px; background-color: #D4D0C8;" class="user_font1">
[블럭설정 대상 리스트] - 기간 및 블럭설정 사유를 명확히 기입 하시기 바랍니다.
</td>
</tr>
<tr>
<td colspan="2" style="height: 2px; background-image: url(/images/user/dot.jpg);"></td>
</tr>
<tr>
<td style="width: 30px; height: 25px; background-color: #D4D0C8; text-align: right;">
<img src="/images/user/left_bar.jpg" width="5px" height="17px" alt="" />
</td>
<td style="width: 710px; height: 25px; background-color: #D4D0C8; text-align: left; padding-left: 10px;" class="user_font1">
[기간 설정 방법] - 일주일(7), 한달(30), 영구정지(0) 기간을 숫자로 입력 하시기 바랍니다.
</td>
</tr>
<tr>
<td colspan="2" style="width: 840px; height: 2px; background-image: url(/images/user/dot.jpg);"></td>
</tr>
<tr>
<td colspan="2" style="width: 840px; height: 3px; background-color: #666666;"></td>
</tr>
</table>
<!---// 타이틀 끝 //--->
</td>
</tr>
<tr>
<td style="height: 20px;"></td>
</tr>
<tr>
<td style="width: 840px; height: 25px;" valign="top">
<table style="width: 840px;" border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="5" style="width: 840px; height: 20px; text-align: left;" class="user_font1">
[블럭설정 리스트] - 한번에 5개 아이디 블럭 설정 가능
</td>
</tr>
<tr>
<td colspan="5" style="width: 840px; height: 3px; background-color: #666666;"></td>
</tr>
<tr>
<td colspan="5" style="width: 840px; height: 3px; background-image: url(/images/user/dot.jpg);"></td>
</tr>
<tr>
<td style="width: 140px; height: 25px; background-color: #D4D0C8; text-align: center;" class="sticker_font1">
유저넘버
</td>
<td style="width: 140px; height: 25px; background-color: #D4D0C8; text-align: center;" class="sticker_font1">
유저아이디
</td>
<td style="width: 140px; height: 25px; background-color: #D4D0C8; text-align: center;" class="sticker_font1">
블럭설정기간
</td>
<td style="width: 370px; height: 25px; background-color: #D4D0C8; text-align: center;" class="sticker_font1">
블럭설정이유
</td>
<td style="width: 50px; height: 25px; background-color: #D4D0C8; text-align: center;" class="sticker_font2">
제거
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="width: 840px;" valign="top">
<!---// 블럭설정을 위한 텍스트 박스 동적 컨트롤 시작 //--->
<asp:UpdatePanel ID="BlockListUpdatePanel" runat="server" UpdateMode="conditional">
<ContentTemplate>
<table style="width: 840px;" border="0" cellpadding="0" cellspacing="0">
<!---// Repeater 시작 //--->
<asp:Repeater ID="BlockRepeater" runat="server" DataSource=<%# DtSource %>>
<ItemTemplate>
<tr>
<td style="width: 140px; height: 25px; text-align: center;" class="sticker_font1">
<asp:TextBox ID="UserNo" runat="server" TextMode="singleLine" CssClass="input7_2" Text=<%# Eval("UserNo") %> ReadOnly="true" />
</td>
<td style="width: 140px; height: 25px; text-align: center;" class="sticker_font1">
<asp:TextBox ID="UserId" runat="server" TextMode="singleLine" CssClass="input7_2" Text=<%# Eval("UserId") %> ReadOnly="true" />
</td>
<td style="width: 140px; height: 25px; text-align: center;" class="sticker_font1">
<asp:TextBox ID="BlockTerm" runat="server" TextMode="singleLine" CssClass="input7_2" Text=<%# Eval("BlockTerm") %> />
</td>
<td style="width: 370px; height: 25px; text-align: center;" class="sticker_font1">
<asp:TextBox ID="BlockReason" runat="server" TextMode="singleLine" CssClass="input7_1" Text=<%# Eval("BlockReason") %> />
</td>
<td style="width: 50px; height: 25px; text-align: center;" class="sticker_font2">
<asp:Label ID="BlockDelete" Width="50px" runat="server" CssClass="user_font1" Text=<%# Eval("BlockDelete") %> />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
<tr>
<td colspan="5">
<asp:Button ID="ChoiceBtn" runat="server" Width="0" Height="0" OnClick="ChoiceBtnClick" />
<asp:Button ID="RemoveBtn" runat="server" Width="0" Height="0" OnClick="RemoveBtnClick" />
<asp:HiddenField ID="RowNumHidden" runat="server" />
<asp:HiddenField ID="DeleteIdHidden" runat="server" />
<asp:Label ID="test12" runat="server" />
</td>
</tr>
<!---// Repeater 끝 --->
<tr>
<td colspan="5" style="height: 20px; text-align: center;">
<asp:UpdateProgress ID="BlockUpdateProgress" runat="server" AssociatedUpdatePanelID="BlockUpdatePanel" Visible="true">
<ProgressTemplate>
블럭설정 중 입니다...
</ProgressTemplate>
</asp:UpdateProgress>
</td>
</tr>
<tr>
<td colspan="5" style="width: 840px; height: 1px; background-color: #808080;"></td>
</tr>
<tr>
<td colspan="5" style="height: 10px;"></td>
</tr>
<tr>
<td colspan="5" style="height: 25px; text-align: center;">
<asp:Button ID="BlockOkBtn" runat="server" CssClass="button9" Text="블럭설정" OnClientClick="return BlockCheck()" OnClick="BlockOkBtnClick" />
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
<!---// 블럭설정을 위한 텍스트 박스 동적 컨트롤 끝 //--->
</td>
</tr>


</table>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="SearchBtn" EventName="click" />
</Triggers>
</asp:UpdatePanel>
<!---// 블럭설정 리스트 끝 //--->


ID가 "gvMain"이라는 GridView가 있고 그 안에 ID가 "ddl"이라는 DropDownList가 있을때
DataTable로 가져온 데이터를 우선 gvMain에 바인딩 시켜준다.
DataTable dtMain = New Datatable(); // -> 이 데이터 테이블은 Class Level단의 데이터테이블이다.
...
...
gvMain.DataSource = dtMain;
gvMain.DataBind();
그런 다음 GridView의 DataRowBound 이벤트때 FindControl로 DropDownList를 찾아
DorpDownList에 데이터를 바인딩 시켜주면 된다.
(DataRowBound이벤트는 GridView가 Row를 바인딩 시킬때 마다 발생하는 이벤트이다.)
protected void gvMain_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList gvddl = (DropDownList)e.Row.FindControl("ddl");

// * gvddl은 GridView안의 DropDownList를 찾아 새롭게
// 이름을 준것()
// * Findcontrol뒤의 ddl이라는 것은 GridView안에 있는 DropDownList의 ID..
// 이 ID로 DorpDownList를 찾아내는 것이다.
gvddl.DataSource = dtMain;
gvddl.DataTextField = "Column0";
gvddl.DataValueField = "Column1"; // -> Column0과 Column1은 dtMain의 컬럼명을 써준다.
gvddl.DataBind();
}
}
FindControl로 GridView 안에 ddl이라는 DropDownList를 찾는데 이것이 DropDownList라는 타입이고 새로 gvddl이라고 부르겠다.
그리고 gvddl이라는 이름으로 데이터를 바인딩 시켜주는데 위에서 Class level단의 데이터 테이블로 가져온 데이터를 이용하여 DropDownList의 DataTextField에는 Column0이라는 컬럼을 바인딩 시켜주고 DataValueField에는 Column1이라는 컬럼을 바인딩 시켜주겠다는 것이다.

출처 : http://elvagood.egloos.com/tb/2385404


var aaa = new Array();
// aaa[0][0] = "1111";
// aaa[0][1] = "2222";
// aaa[1][0] = "asdf";
// aaa[2][1] = "fdsa";

Member = function(id, name) {
this.id = new Array();
this.name = new Array();


// this.id = id;
// this.name = name;
Member.prototype.add = function(id, name)
{
this.id.push(id);
this.name.push(name);
}

Member.prototype.toString = function()
{
var ret = "";
ret = "<?xml version='1.0' encoding='UTF-8'?>"
ret += "<members>"
for (var i=0; i < this.id.length ; i++)
{
ret += "<member>"+"<name>" + this.name[i] + '</name>' + "<id><![CDATA[" + this.id[i] + ']]></id>' + "</member>";
}
ret += "</members>"
return ret;
}
}
var mem = new Member();

mem.add("한글&","1");
mem.add("2","2");

alert(mem.toString());

GetObject("HiddenField1").value = mem;
===================================================
===================================================
UTF8Encoding asc = new UTF8Encoding(); //한글지원
byte[] by = asc.GetBytes(HiddenField1.Value);
System.IO.MemoryStream ms = new System.IO.MemoryStream(by);
System.Xml.XmlTextReader xmltx = new System.Xml.XmlTextReader(ms);
xmltx.MoveToContent();
//System.IO.MemoryStream streamXML =
// new System.IO.MemoryStream(System.Text.UTF8Encoding. .GetBytes(HiddenField1.Value));
DataSet ds = new DataSet();

출처 : http://elvagood.egloos.com/tb/2385407

cs 에서 String(Javascript 배열) 만들어 내는 부분
List<VisitorDataInfo> visitorList = bllVisitorData.selectVisitorDataList(visitData.VisitDataCode.ToString());
for (int i = 0; i < visitorList.Count; i++)
{
VisitorDataInfo subVisitor = (VisitorDataInfo)visitorList[i];
reqVisitData = subVisitor.VisitDate;
arrVisitorList += "visitorCode[" + i + "]='" + subVisitor.VisitorInfo.VisitorCode + "';\n";
arrVisitorList += "visitorRegNumber[" + i + "]='" + subVisitor.VisitorInfo.VisitorRegNumber1 + "-" + subVisitor.VisitorInfo.VisitorRegNumber2 + "';\n";
arrVisitorList += "visitorName[" + i + "]='" + subVisitor.VisitorInfo.VisitorName + "';\n";
arrVisitorList += "companyName[" + i + "]='" + subVisitor.CompanyInfo.CompanyName + "';\n";
arrVisitorList += "phone[" + i + "]='" + subVisitor.VisitorInfo.VisitorPhone1 + "-" + subVisitor.VisitorInfo.VisitorPhone2 + "-" + subVisitor.VisitorInfo.VisitorPhone3 + "';\n";
}
aspx 에서 Data Binding 시키는 부분
<script language="javascript" type="text/javascript">
var visitorCode=new Array();
var visitorRegNumber=new Array();
var visitorName=new Array();
var companyName=new Array();
var phone=new Array();
var startDate=new Array();
var endDate=new Array();
<%=arrVisitorList%>
/*
visitorCode[0]='101010';
visitorRegNumber[0]='7-----';
visitorName[0]='ㅌㅌㅌㅌ';
companyName[0]="ㅌㅌㅌㅌㅌ";
phone[0]='016-435-3333';
startDate[0]='2007-02-03';
endDate[0]='2007-02-03';
*/
//로딩하면서 초기 화면에 뿌리기
function display(displayCellCount){
if(!displayCellCount) displayCellCount=defaultCellCount;
for(var cellCount=0;cellCount<displayCellCount;cellCount++){
insertRow();
}
}
function dataBind(){
var target=document.getElementById("visitorList");
for(var i=0;i<visitorCode.length+1;i++){
var rowCount=i+1;
if(visitorCode[i]){
target.rows[rowCount].cells[0].children[0].value=visitorCode[i];
target.rows[rowCount].cells[2].children[0].value=visitorRegNumber[i];
target.rows[rowCount].cells[3].children[0].value=visitorName[i];
target.rows[rowCount].cells[4].children[0].value=companyName[i];
target.rows[rowCount].cells[5].children[0].value=phone[i];
}
}
}
display(displayCellCount);
dataBind();
</script>

레이아웃은 마스터 페이지에 UserControl 과 ContentPlaceHolder 를 둔다.

1. UserControl 에서 Page 컨트롤에 접근하기

ContentPlaceHolder cph = (ContentPlaceHolder)Parent.FindControl("ContentPlaceHolder1");
HtmlInputText pageText = (HtmlIn.putText)cph.FindControl("TextBox1");
pageText.Value = "UserControl=>Page Test";

2. Page 에서 UserControl  컨트롤 접근하기

UserControl Left = (UserControl)Master.FindControl("Left1");
HtmlInputText userControlText = (HtmlInputText)Left.FindControl("TextBox1");
userControlText.Value = "Page=>UserControl Test";

- 속성 접근

UserControls.Left Leftcontrol = (UserControls.Left)Left;
Left2.LoginChk = "aaa";

3. MasterPage 에서 Page 컨틀롤 접근하기

HtmlInputText pageText = (HtmlInputText)MainContent.FindControl("TextBox1");

pageText.Value = "Master=>Pge Test";

 

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" CssClass="dx"

onpageindexchanging="GridView1_PageIndexChanging" ondatabound="GridView1_DataBound"

AutoGenerateColumns="False" onrowcommand="GridView1_RowCommand1">

<PagerSettings PageButtonCount = "5" Mode="NumericFirstLast" />

<PagerTemplate>

<div style="text-align:center">

<asp:ImageButton ID="btnFirst" ImageUrl="~/images/btn_home.gif" CommandName="Page" CommandArgument="First" runat="server" CausesValidation="false" />

<asp:ImageButton ID="btnPrev" ImageUrl="~/images/btn_prev.gif" CommandName="Page" CommandArgument="Prev" runat="server" CausesValidation="false" />

<asp:LinkButton ID="btnNum1" runat="server" CommandName="Page" CausesValidation="false" />

<asp:LinkButton ID="btnNum2" runat="server" CommandName="Page" CausesValidation="false" />

<asp:LinkButton ID="btnNum3" runat="server" CommandName="Page" CausesValidation="false" />

<asp:LinkButton ID="btnNum4" runat="server" CommandName="Page" CausesValidation="false" />

<asp:LinkButton ID="btnNum5" runat="server" CommandName="Page" CausesValidation="false" />

<asp:LinkButton ID="btnNum6" runat="server" CommandName="Page" CausesValidation="false" />

<asp:LinkButton ID="btnNum7" runat="server" CommandName="Page" CausesValidation="false" />

<asp:LinkButton ID="btnNum8" runat="server" CommandName="Page" CausesValidation="false" />

<asp:LinkButton ID="btnNum9" runat="server" CommandName="Page" CausesValidation="false" />

<asp:LinkButton ID="btnNum10" runat="server" CommandName="Page" CausesValidation="false" />

<asp:ImageButton ID="btnNext" ImageUrl="~/images/btn_next.gif" CommandName="Page" CommandArgument="Next" runat="server" CausesValidation="false" />

<asp:ImageButton ID="btnLast" ImageUrl="~/images/btn_end.gif" CommandName="Page" CommandArgument="Last" runat="server" CausesValidation="false" />

</div>

</PagerTemplate>

<EmptyDataTemplate>검색결과가존재하지않습니다</EmptyDataTemplate>

</asp:GridView>

 

이걸 넣어준다..

CommandName은 꼭! 저거로 해야하고.. 그렇지 않으면 페이징처리가 안된다..

CommandArgument는 이게 어떤 방식으로 될건지 정해주는건데..

거의 이건 몇페이지에 갈것인지를 묻는것이니.. 패스~

 

 PageButtonCount = "5" 이부분은 이 페이지버튼이 몇개나 나올것인가 하는것을 정해준것이다..

 

이렇게해놓게되면.. 내가 6페이지를 보고있을 때

<<  <  6  7  8  9  10  >  >>

이렇게 버튼이 나온다..(그림이 이상한가..-_-;)

 

그리고 이제 비하인드코드에..PageIndexChanging 이벤트를 만들고 그안에 식을 넣어주어야 한다..

 

//버튼들초기에는안보이게하기나중에필요할때보여주기

Control btn;

for (int i = 1; i <= 10; i++)

{

btn = pagerRow.Cells[0].FindControl("btnNum" + i);

btn.Visible = false

}

ImageButton btnPrevList = (ImageButton)pagerRow.Cells[0].FindControl("btnPrev");

btnPrevList.Visible = false

ImageButton btnFirst = (ImageButton)pagerRow.Cells[0].FindControl("btnFirst");

btnFirst.Visible = false

ImageButton btnLast = (ImageButton)pagerRow.Cells[0].FindControl("btnLast");

btnLast.Visible = false

ImageButton btnNext = (ImageButton)pagerRow.Cells[0].FindControl("btnNext");

btnNext.Visible = false

 

//카운터세팅

int pageCount = gv.PageCount;

int pageIndex = gv.PageIndex + 1;

int pageButtonCount = gv.PagerSettings.PageButtonCount;//페이지버튼몇개만들건가설정해둔것가져오기

int lastPage = pageButtonCount;//마지막페이지부분은

if (pageCount < lastPage)

{ lastPage = pageCount; }

 

int first = 1;

int last = lastPage;

if (pageIndex > last)

{

first = gv.PageIndex / pageButtonCount * pageButtonCount + 1;

last = first + pageButtonCount - 1;

if (last > pageCount)

{ last = pageCount; }

if (last - first + 1 < pageButtonCount)

{ first = Math.Max(1, last - pageButtonCount + 1); }

}

//다시보여주기

//첫페이지가보여져야한다면

if (first != 1)

{

btnPrevList.Visible = true

 

int t = first - 1;

btnPrevList.CommandArgument = t.ToString();

 

btnFirst.Visible = true

 

}

int count = 1;

for (int i = first; i <= last; i++, count++)

{

string str = i.ToString();

LinkButton numButton = (LinkButton)pagerRow.Cells[0].FindControl("btnNum" + count);

numButton.Visible = true

if (i == pageIndex)

{

numButton.Text = str;

numButton.Enabled = false

}

else

{

numButton.Text = str;

numButton.CommandArgument = str;

}

}

 

if (pageCount > last)

{

btnNext.Visible = true

int t = last + 1;

btnNext.CommandArgument = t.ToString();

 

btnLast.Visible = true

 

}

 



<!-- 항상따라다니는 Div창 & 자동 창 크기 설정 스크립트 시작 -->
        <script type="text/javascript">

            window.onload = scrollHandler; // 페이지 로드시마다 발생

            window.onresize = windowResize; // 창 크기 변경시마다 발생

            function scrollHandler() {
                var offsetX = 950;
                var offsetY = 50;

                var offsetWidth = 0;

                var objVisible = document.getElementById("alwaysVisible");
                var targetY = document.documentElement.scrollTop + offsetY;
                var currentY = parseInt(objVisible.style.top);

                var objFrom = document.getElementById("wrapper");
                var myWidth = 0, myHeight = 0;

                // 버전별 창크기 알아오기
                if (typeof (window.innerWidth) == 'number') {
                    //Non-IE
                    myWidth = window.innerWidth;
                    myHeight = window.innerHeight;
                }
                else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
                    //IE 6+ in 'standards compliant mode'
                    myWidth = document.documentElement.clientWidth;
                    myHeight = document.documentElement.clientHeight;
                }
                else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
                    //IE 4 compatible
                    myWidth = document.body.clientWidth;
                    myHeight = document.body.clientHeight;
                }

                offsetWidth = (myWidth - 1000) / 2;
               
                // 따라다니는 Div 좌표 설정
                if (currentY != targetY) {
                    objVisible.style.left = offsetX + offsetWidth;

                    var scrollAmount = Math.ceil(Math.abs(targetY - currentY) / 20);

                    if (currentY > targetY) objVisible.style.top = currentY - scrollAmount;
                    else objVisible.style.top = currentY + scrollAmount;
                }               

                setTimeout(scrollHandler, 10);
            }

            function windowResize() {

                var offsetWidth = 0;
                var myWidth = 0, myHeight = 0;

                var objFrom = document.getElementById("wrapper");               
               
                // 버전별 창크기 알아오기
                if (typeof (window.innerWidth) == 'number') {
                    //Non-IE
                    myWidth = window.innerWidth;
                    myHeight = window.innerHeight;
                }
                else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
                    //IE 6+ in 'standards compliant mode'
                    myWidth = document.documentElement.clientWidth;
                    myHeight = document.documentElement.clientHeight;
                }
                else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
                    //IE 4 compatible
                    myWidth = document.body.clientWidth;
                    myHeight = document.body.clientHeight;
                }

                offsetWidth = (myWidth - 1000) / 2;

                // 왼쪽 마진 설정
                if (myWidth >= 1000) {

                    objFrom.style.paddingLeft = offsetWidth;
                }
                else {
                    objFrom.style.paddingLeft = 0;
                }
            }
        </script>

        <!-- 항상따라다니는 Div창 & 자동 창 크기 설정 스크립트 종료 -->

'Programming > Java Script' 카테고리의 다른 글

[스크랩] 날짜 관련 함수  (0) 2010.03.26
[스크랩] 금액 관련 함수  (0) 2010.03.26
[스크랩] 기타 유틸 함수  (0) 2010.03.26
[스크랩] 팝업 관련 함수  (0) 2010.03.26
[스크랩] 유용한 함수들  (0) 2010.03.26
Window 객체 속성  (0) 2010.03.23
윈도우 창 크기 알아오기  (0) 2010.03.22
Asp.Net 에서 페이지 따라 댕기기  (0) 2010.02.24
정규화 표현 2  (0) 2010.02.19
정규식 표현  (0) 2010.02.18

[출처] [Javascript]window 객체 속성|작성자 panic910


Window 객체 속성

  • status 브라우저 상태바에 하단에 나타날 문자열
  • defaultStatus status에 지정된 문자열이 없을 때 나타날 문자열
  • self 자기 자신 객체
  • parent window 객체 간에 계층구조가 생길 때 상위 객체
  • top window 객체 간에 계층구조가 생길 때 최상위 객체
  • frames window 객체 안에 들어간 프레임들
  • opener open() 메소드로 윈도우를 연 문서가 있는 윈도우parent랑 비슷
  • pageXOffset 윈도우에 현재 나타나는 페이지의 x 위치
  • pageYOffset 윈도우에 현재 나타나는 페이지의 y 위치
  • locationbar 윈도우의 Locationbar를 보여줄지의 여부 지정
  • menubar 윈도우의 메뉴를 보여줄지의 여부 지정
  • personalbar 윈도우의 Personalbar(넷스케이프)를 보여줄지의 여부 지정
  • scrollbars 윈도우의 스크롤바를 보여줄지의 여부 지정
  • statusbar 윈도우의 상태선을 보여줄지의 여부 지정
  • toolbar 윈도우의 툴바를 보여줄지의 여부지정
  • tags HTML 문서에 사용된 모든 태그들
  • classes HTML 문서에 정의된 모든 스타일 시트 클래스들
  • innerHeight 윈도우에서 내용이 나타나는 영역의 높이 (NE only)
    IE는 clientHeight
    문법 : window.innerHeight
    문법 : document.body.clientHeight
  • innerWidth 윈도우에서 내용이 나타나는 영역의 너비 (NE only)
  • outerHeight 윈도우 바깥 테두리의 높이 (IE only)
  • outerWidth 윈도우 바깥 테두리의 너비 (IE only)

Window 객체 메소드

  • alert() 경고창을 보여줍니다.
  • clearInterval() setInterval()메소드에의해 수행되고 있는 함수를 중지
  • clearTimeout() setTimeout()메소드에의해 수행되고 있는 함수를 중지
  • close() 창을 닫습니다
  • comfirm() 확인버튼이 있는 창 confirm dialog box를 띄운다
  • focus() 지정한 창에 focus를 맞춘다.
  • blur() 창에서 cursor가 벗어나서 focus를 읽은 상태(focus를 제거)
  • moveBy() 상대적 좌표로 창을 이동
  • moveTo() 절대위치로 창을 이동
  • open() 새로운 창을 열어줍니다
  • print() 화면의 내용을 인쇄
  • prompt() 입력란이 있는 대화상자 Prompt dialog box를 띄운다.
  • resizeBy() 상대크기로 창 크기를 변경
  • resizeTo() 절대크기로 창 크기를 변경
  • scroll() 창을 스크롤
  • scrollBy() 상대적 좌표로 창을 스크롤
  • scrollTo() 절대적 좌표로 창을 스크롤
  • setInterval() 실행할 수식을 지정한 시간 마다 반복 실행
  • setTimeout() 실행할 수식을 지정한 시간 후에 한 번 실행

Window 창의 속성

창 속성 옵션 의미

  • menubar yes/no, 1/0 메뉴바를 보여주거나 숨깁니다
  • toolbar yes/no, 1/0 도구막대를 보여주거나 숨깁니다
  • directories yes/no, 1/0 디렉토리바를 보여주거나 숨깁니다
  • scrollbars yes/no, 1/0 스크롤바를 보여주거나 숨깁니다
  • status yes/no, 1/0 상태표시줄을 보여주거나 숨깁니다
  • location yes/no, 1/0 주소표시줄을 보여주거나 숨깁니다
  • width 픽셀 팝업 윈도우의 가로크기를 지정합니다
  • height 픽셀 팝업 윈도우의 높이를 지정합니다
  • left 픽셀 팝업 윈도우의 x축 위치를 지정합니다
  • top 픽셀 팝업 윈도우의 y축 위치를 지정합니다
  • resizable yes/no 1/0 팝업윈도우의 크기를 사용자가 임의로 수정할 수 있는지 여부를 지정합니다
  • fullscreen 전체화면 모드로 열어줍니다
  • channelmode 채널모드 창으로 열어줍니다
  •  


+ Recent posts