/*********************************************************************
* 1. 업무 시스템 명 : 농심 기업 사이트
* 2. 단위 시스템 명 : 공통
* 3. 원도우 명 : 공통
* 4. 프로그램 개요 : 공통 javascript
* 5. 작 성 자 : 조승연
* 6. 작 성 일 : 2010. 05. 03
* 7. 주 의 사 항 :
* 8. 버 전 : v1.0
* 9. 변 경 자 :
* 10. 요청서번호 :
* 11. 변 경 사 유 :
*********************************************************************/
/**
*팝업관련.
*/
popUp = function (){
this.url = "";
this.id = "";
this.widht = "";
this.height = "";
}
popUp.prototype = {
setParam : function (url ,name ,width ,height){
this.url = url;
this.id = name;
this.widht = width;
this.height = height;
this.winOpen();
},
winOpen : function(){
window.open(this.url,this.name,'width='+this.widht+',height='+this.height+',top='+this.scXValue()+',left='+this.scYValue()+',toobar=no,scrollbar,menubar=no,status=no ,directories=no,');
},
scXValue : function(){
var cw = screen.availWidth; // 화면 너비
var sw = this.width; // 띄울 창의 너비
return (cw-sw)/2;
},
scYValue : function(){
var ch = screen.availHeight; // 화면 높이
var sh = this.height; // 띄울 창의 높이
return (ch-sh)/2;
}
}
/**
* 날짜
*/
chDate = function(){
this.inputDate = "";
}
chDate.prototype = {
/**
* 날짜 형태인지 아닌지를 체크
* @param inputDate
* @return true/false
*/
isDate : function(inputDate){
this.inputDate = inputDate;
return this.CheckDate();
},
CheckDate : function(){
if(this.inputDate == null || this.inputDate=="" || this.inputDate.length < 8){
return false;
}
return this.dateCheck(this.inputDate.substring(0,4),this.inputDate.substring(4,6),this.inputDate.substring(6,8));
},
dateCheck : function (yy,mm,dd){
var lastDay = 0;
var monthNo = 0;
// Non-Leap year Month days..
DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if (yy < 1900)
{
return false;
}
if (mm < 1 || mm >12)
{
return false;
}
monthNo = mm - 1;
/* 윤년 Check */
if ((yy % 4) == 0)
{
if ((yy % 100) == 0 && (yy % 400) != 0)
{
lastDay = DOMonth[monthNo];
}
else
{
lastDay = lDOMonth[monthNo];
}
}
else
{
lastDay = DOMonth[monthNo];
}
if (dd < 1 || dd > lastDay)
{
return false;
}
return true;
},
/**
* 현재 날짜를 구하는 메소드 (YYYY-MM-DD)형식
* @return 현재 날짜를 리턴
*/
getDate : function (){
return this.getYear()+'-'+this.getMonth()+'-'+this.getDay();
},
getYear : function(){
return (new Date()).getYear();
},
getMonth : function(){
var month = (new Date()).getMonth()+1;
if(month<10) month = "0"+month;
return month;
},
getDay : function(){
var day = (new Date()).getDate();
if(day<10) day = "0"+day;
return day;
},
/**
* 날짜 From~To 체크
* @param fdate
* @param tdate
* @return
*/
date_check_ft : function (fdate,tdate) {
if(this.isDate(fdate) && this.isDate(tdate)){
var Fyyyy = fdate.substring(0,4);
var Fmm = fdate.substring(4,6);
var Fdd = fdate.substring(6,8);
var Tyyyy = tdate.substring(0,4);
var Tmm = tdate.substring(4,6);
var Tdd = tdate.substring(6,8);
var datef = Fyyyy+"/"+Fmm+"/"+Fdd;
var datet = Tyyyy+"/"+Tmm+"/"+Tdd;
if (datef>datet) {
return false;
}
return true;
}else{
return false;
}
}
}
/**
* 문자 숫자 체크
*/
str_ch = function (){
}
str_ch.prototype = {
/**
* 문자열 타입체크
* type : 체크할 문자타입 (A,N,AN)
* val : 체크할 문자열
* @param type
* @param val
* @return
*/
checkAN : function ( type, val ) {
var regExpr;
if ( type == 'A' ) { // 알파벳만...
regExpr = /^[a-zA-Z]+$/;
} else if ( type == 'N' ) { // 숫자만...
regExpr = /^[0-9]+$/;
} else if ( type == 'AN' ) { // 알파벳, 숫자만...
regExpr = /^[a-zA-Z0-9]+$/;
}
if ( !regExpr.test( val ) ) {
return false;
}
return true;
},
/**
* 문자의 앞뒤 공백 제거 함수
* @param inString
* @return
*/
trim : function (inString){
var i;
var istrLen = String(inString).length;
var bFrontChk = false;
var bRearChk = false;
var iFront = -1;
var iRear = istrLen;
var j = istrLen-1;
inString = String(inString);
for (i=0; i < istrLen; i++) {
if(!bFrontChk){
if(inString.charAt(i) != " "){
iFront = i;
bFrontChk = true;
}
}
if(!bRearChk){
if(inString.charAt(j) != " "){
iRear = j+1
bRearChk = true;
}
}
j--
}
if(iFront == -1) {
return "";
}else {
return inString.substring(iFront,iRear);
}
},
/**
* 널체크를 위한 공통 스크립트
* @param InObj
* @param InMsg
* @return
*/
NullCheckT : function (InObj, InMsg) {
if (InObj.value == "") {
alert(InMsg + "입력하세요");
InObj.focus();
InObj.select();
return true;
}
return false;
},
/**
* 널체크를 위한 공통 스크립트(select)
* @param InObj
* @param InMsg
* @return
*/
NullCheckS : function (InObj, InMsg) {
if (InObj.value == "") {
alert(InMsg + " 선택하세요");
InObj.focus();
return true;
}
return false;
},
/**
* textarea 글자수 제한
* @param aro_name
* @param ari_max
* @return
*/
fc_chk_byte : function (aro_name,ari_max) {
var ls_str = aro_name.value; // 이벤트가 일어난 컨트롤의 value 값
var li_str_len = ls_str.length; // 전체길이
var li_max = ari_max; // 제한할 글자수 크기
var i = 0; // for문에 사용
var li_byte = 0; // 한글일경우는 2 그밗에는 1을 더함
var li_len = 0; // substring하기 위해서 사용
var ls_one_char = ""; // 한글자씩 검사한다
var ls_str2 = ""; // 글자수를 초과하면 제한할수 글자전까지만 보여준다.
for(i=0; i< li_str_len; i++) {
ls_one_char = ls_str.charAt(i); // 한글자추출
// 한글이면 2를 더한다.
if (escape(ls_one_char).length > 4) {
li_byte += 2;
// 그밖의 경우는 1을 더한다.
} else {
li_byte++;
}
// 전체 크기가 li_max를 넘지않으면
if(li_byte <= li_max) {
li_len = i + 1;
}
}
// 전체길이를 초과하면
if(li_byte > li_max) {
alert( li_max + " 글자를 초과 입력할수 없습니다. \n 초과된 내용은 자동으로 삭제 됩니다. ");
ls_str2 = ls_str.substr(0, li_len);
aro_name.value = ls_str2;
return true;
}
return false;
},
/**
* 숫자만 입력가능하게 하는 함수
* @param object
* @return
*/
chkNum : function (form){
var digits="0123456789";
var temp
for (var i=0;i
128) {
alert('영문과 숫자조합으로 입력해주십시요.');
x.value="";
x.focus();
return;
}
}
},
/**
* 체크박스 전체선택 함수
* @param theForm
* @return
*/
check : function (theForm){
cbox = theForm.menuChk;
if(cbox.length) { // 여러 개일 경우
for(var i = 0; i 필수 항목일때 REQUIRED='REQUIRED' 명시
* 입력 길이 체크 MAXBYTE='10'
* 형식 체크 email, userid, hangul, number, engonly, jumin, bizno
* @param form객체
* @return
*/
formCheck : function (form){
for (i = 0; i < form.elements.length; i++ ) {
var el = form.elements[i];
el.value = el.value.trim();
/**필수항목 선택
* 예)
*/
if (el.getAttribute("REQUIRED") != null) {
if (el.value == null || el.value == "") {
return this.doError(el,this.NO_BLANK,"");
}
}
/**입력길이 제한
* 예)
*/
if (el.getAttribute("MAXBYTE") != null && el.value != "") {
var len = 0;
for(j=0; j 128) ? 2 : 1 //한글 한글자당 3바이트씩 계산
}
if (len > parseInt(el.getAttribute("MAXBYTE"))) {
maxbyte = el.getAttribute("MAXBYTE");
return this.doError(el,TOO_LONG,"");
}
}
/** 입력항목에 맞는 형식체크
* 예. 이메일 체크인 경우)
* 기타 체크는 특수패턴 함수 참조
*/
if (el.getAttribute("OPTION") != null && el.value != "") {
if(el.getAttribute("OPTION") == "email" ){
return this.isValidEmail(el);
}else if(el.getAttribute("OPTION") == "userid" ){
return this.isValidUserid(el);
}else if(el.getAttribute("OPTION") == "hangul" ){
return this.hasHangul(el);
}else if(el.getAttribute("OPTION") == "number" ){
return this.isNumeric(el);
}else if(el.getAttribute("OPTION") == "engonly" ){
return this.alphaOnly(el);
}else if(el.getAttribute("OPTION") == "jumin" ){
return this.isValidJumin(el);
}else if(el.getAttribute("OPTION") == "bizno" ){
return this.isValidBizNo(el);
}
}
}
return true;
},
josa : function(str,tail){
return (str.hasFinalConsonant()) ? tail.substring(0,1) : tail.substring(1,2);
},
/**
* 이메일 형식 체크
* @param el
* @return
*/
isValidEmail : function (el) {
var pattern = /^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/;
return (pattern.test(el.value)) ? true : this.doError(el,NOT_VALID,"del");
},
/**
* 아이디 체크
* @param el
* @return
*/
isValidUserid : function (el) {
var pattern = /^[a-zA-Z]{1}[a-zA-Z0-9_]{4,11}$/;
return (pattern.test(el.value)) ? true : this.doError(el,"{name+은는} 5자이상 12자 미만이어야 하고,\n 영문,숫자, _ 문자만 사용할 수 있습니다","del");
},
/**
* 한글포함여부 체크(한글을 반드시 포함해야 하는 경우)
* @param el
* @return
*/
hasHangul : function (el) {
var pattern = /[가-히]/;
return (pattern.test(el.value)) ? true : this.doError(el,"{name+은는} 반드시 한글을 포함해야 합니다","del");
},
/**
* 한글포함여부 체크(영문만 입력해야 하는 경우)
* @param el
* @return
*/
alphaOnly : function (el) {
var pattern = /^[a-zA-Z]+$/;
return (pattern.test(el.value)) ? true : this.doError(el,NOT_VALID,"del");
},
/**
* 숫자 형식 체크(숫자만 입력해야 하는 경우)
* @param el
* @return
*/
isNumeric : function (el) {
var pattern = /^[-0-9]+$/;
return (pattern.test(el.value)) ? true : this.doError(el,"{name+은는} 반드시 숫자로만 입력해야 합니다","del");
},
/**
* 주민번호 유효성 체크
* @param el
* @return
*/
isValidJumin : function (el) {
var pattern = /^([0-9]{6})-?([0-9]{7})$/;
var num = el.value;
if (!pattern.test(num)) return this.doError(el,NOT_VALID,"del");
num = RegExp.$1 + RegExp.$2;
var sum = 0;
var last = num.charCodeAt(12) - 0x30;
var bases = "234567892345";
for (i=0; i<12; i++) {
if (isNaN(num.substring(i,i+1))) return this.doError(el,NOT_VALID,"del");
sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
}
var mod = sum % 11;
return ((11 - mod) % 10 == last) ? true : this.doError(el,NOT_VALID,"del");
},
/**
* 사업자번호 유효성 체크
* @param el
* @return
*/
isValidBizNo : function (el) {
var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/;
var num = el.value;
if (!pattern.test(num)) return this.doError(el,NOT_VALID,"del");
num = RegExp.$1 + RegExp.$2 + RegExp.$3;
var cVal = 0;
for (var i=0; i<8; i++) {
var cKeyNum = parseInt(((_tmp = i % 3) == 0) ? 1 : ( _tmp == 1 ) ? 3 : 7);
cVal += (parseFloat(num.substring(i,i+1)) * cKeyNum) % 10;
}
var li_temp = parseFloat(num.substring(i,i+1)) * 5 + '0';
cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2));
return (parseInt(num.substring(9,10)) == 10-(cVal % 10)%10) ? true : this.doError(el,NOT_VALID,"del");
},
doError : function(el,type,action){
var pattern = /{([a-zA-Z0-9_]+)\+?([가-히]{2})?}/;
var name = (hname = el.getAttribute("HNAME")) ? hname : el.getAttribute("NAME");
pattern.exec(type);
var tail = (RegExp.$2) ? this.josa(eval(RegExp.$1),RegExp.$2) : "";
alert(type.replace(pattern,eval(RegExp.$1) + tail));
if (action == "sel") {
el.select();
} else if (action == "del") {
el.value = "";
}
el.focus();
return false;
}
}
/**
* 리스트 공통 함수
*/
pageList = function(frmName){
this.frmName = frmName; //폼 객체를 받는다
}
pageList.prototype = {
/**
* 페이징 처리 인수 값이 하나인 경우
* @param page
* @return
*/
goPage : function(page){
document.getElementById("txtPage").value = page;
this.frmName.submit();
return true;
},
/**
* 페이징 처리 인수 값이 두개인 경우
* @param vPage, vBlock
* @return
*/
goPage : function (vPage, vBlock) {
document.getElementById("txtSelectPage").value = vPage;
document.getElementById("txtSelectBlock").value = vBlock;
this.frmName.submit();
return true;
}
}
/**
* 메일 발송
*/
mail_send = function (){
this.vChildWin = new Array(1);
}
mail_send.prototype = {
OpenWindow : function(vGubn, vUrl, vWinInfo, vWinName){
if (this.vChildWin[vGubn] != null) this.vChildWin[vGubn].close();
this.vChildWin[vGubn] = window.open(vUrl,vWinName,vWinInfo);
if (this.vChildWin[vGubn].opener == null) this.vChildWin[vGubn].opener = window;
},
AllMail : function(){
var vUrl,vWinInfo,vWinName;
vWinInfo = " toolbar=no,location=no ,directories=no,status=no, ";
vWinInfo += " menubar=no,scrollbars=no,resizable=no ,copyhistory=no,";
vWinInfo += " width=500,height=420,left=370,top=200";
vWinName = "MailALL";
if(document.getElementById("txtMCount").value == "0") {
alert("메일 발송할 대상이 없습니다.");
return false;
}
vUrl = "/cmm/pMail.jsp?txtType=QUERY&txtTo=" + document.getElementById("txtMailSQL").value;
this.OpenWindow(1,vUrl,vWinInfo,vWinName);
},
SendMail : function(){
var vUrl,vWinInfo,vWinName;
vWinInfo = " toolbar=no,location=no ,directories=no,status=no, ";
vWinInfo += " menubar=no,scrollbars=no,resizable=no ,copyhistory=no,";
vWinInfo += " width=500,height=420,left=370,top=200";
vWinName = "MailOne";
var vMailList = "";
var vStr = "";
var vForm = "";
var vCnt = Number(document.getElementById("txtMCount").value); // 현재 생성된 객체의 Count
var vOkCnt = 0;
// 체크 Count 초기화...
for (var i = 1; i < vCnt ; i++) { // 객체의 갯수 만큼..
vStr = "document.getElementById('chkMail" + i+"')"; // 객체변수 생성...
vForm = eval(vStr); // 객체로 재평가..
if (vForm.checked == true && vForm.value != "" ) { // Click여부 Check
vOkCnt += 1; // Click 객수 Count
vMailList += vForm.value + ";"; // 선택된 제품코드를 구분자를 두어 저장한다..
}
}
if (vOkCnt == 0) {
alert("메일이 없으면 발송할수 없습니다.");
return false;
}
vUrl = "/cmm/pMail.jsp?txtType=EMAIL&txtTo="+vMailList;
this.OpenWindow(2,vUrl,vWinInfo,vWinName);
},
SendMailMaster : function () {
var vUrl,vWinInfo,vWinName;
vWinInfo = " toolbar=no,location=no ,directories=no,status=no, ";
vWinInfo += " menubar=no,scrollbars=no,resizable=no ,copyhistory=no,";
vWinInfo += " width=510,height=372,left=370,top=200";
vWinName = "MailOne";
var vMailList = "";
vUrl = "/cmm/pMail.jsp?txtType=ADMIN&txtTo="+vMailList;
this.OpenWindow(2,vUrl,vWinInfo,vWinName);
},
SendBrchMail : function (charge) {
var vUrl,vWinInfo,vWinName;
vWinInfo = " toolbar=no,location=no ,directories=no,status=no, ";
vWinInfo += " menubar=no,scrollbars=no,resizable=no ,copyhistory=no,";
vWinInfo += " width=510,height=372,left=370,top=200";
vWinName = "MailOne";
var vMailList = charge;
vUrl = "/cmm/pMail.jsp?txtType=EMAIL&txtTo="+vMailList;
this.OpenWindow(2,vUrl,vWinInfo,vWinName);
}
}
var Mails = new mail_send();