// 객실사진 팝업 function preViewPopup(nIdx) { window.open('/chtml/reservation/reservation_previewroom.php?template=bizdemo162149&productIdx=' + nIdx,'viewPouup',"width=740,height=850,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,left=50,top=50"); } //예약가능 객실 체크폼 function formChk() { var obj,idxs; obj = document.getElementsByName('productIdx[]'); for( i = 0; i < obj.length; i++ ) { if( obj[i].checked == false ) continue; idxs = obj[i].value; } if (idxs == undefined) { alert('예약할 객실을 선택해주세요.'); return false; } if(document.getElementsByName('reservationChk')[0].checked== false) { alert('이용기준에 동의하셔야 예약이 가능합니다.'); return false; } document.getElementById('listChk').submit(); } function payment(bankCancel) { var frm=document.payment; if(frm.repeatChk.value == '1') { // 중복처리 안되게 alert('처리중입니다.'); } else { var obj,idxs; obj = document.getElementsByName('mothod[]'); for( i = 0; i < obj.length; i++ ) { if( obj[i].checked == false ) continue; idxs = obj[i].value; } if (idxs == undefined) { alert('결제수단을 선택해 주시길 바랍니다.'); return; } var paymentLink = '/chtml/pg/pg_payment_reservation_order_exe.php'; if(idxs == 'BANK') { if(bankCancel == false) { alert('무통장입금 계좌가 설정되어 있지 않습니다. 관리자에게 문의해주십시오.'); return; } if(document.getElementById('orderPerson').value == false) { alert('입금자명을 입력해 주시길 바랍니다.'); return; } } else if(idxs == 'CARD') { if(frm.builderPgName.value!="") { switch(frm.builderPgName.value) { case 'inicis': if(document.INIpay == null || document.INIpay.object == null) { alert("\n이니페이 플러그인 설치되지 않았습니다. \n\n안전한 결제를 위하여 이니페이 플러그인의 설치가 필요합니다. \n\n다시 설치하시려면 Ctrl + F5키를 누르시거나 메뉴의 [보기/새로고침]을 선택하여 주십시오."); return false; } break; } } } try { if(document.getElementById('agree_payment').style.display != 'none' && document.getElementById('check_agree_order').checked == false) { alert('구매진행 동의에 체크해 주세요.'); return; } } catch (e) {} frm.action = paymentLink; frm.repeatChk.value = 1; frm.sslHiddenForm.value=frm.hiddenForm.value; // ssl 처리 SSL.send({ 'formName':'payment' ,'elementName':['sslHiddenForm'] ,'postName':'sslEncode' }); return; } } function mothodChoice(method) { if(method == 'CARD') { document.getElementById('card').style.display = 'block'; document.getElementById('bank').style.display = 'none'; try { document.getElementById('agree_payment').style.display = 'none'; } catch (e) {} } else if(method == 'BANK') { document.getElementById('card').style.display = 'none'; document.getElementById('bank').style.display = 'block'; try { document.getElementById('agree_payment').style.display = 'block'; } catch (e) {} } } var vld = { setOptions: {}, continueObject: new Array('fm', 'target', 'action', 'method'), init: function(options) { // set Object.extend(this.setOptions, options || ''); for( field in this.setOptions ) { // check if( typeof field == null ) continue; if( this.continueObject.search(field) != -1 ) continue; // process if( this.check(field) == false ) return false; } if(private_info_agreement() == false) return false; switch(this.setOptions['mode']) { default: var f = this.setOptions.fm; f.method = this.setOptions.method || 'post'; f.target = this.setOptions.target || ''; f.action = this.setOptions.action || ''; if(typeof(gRelay) != "undefined") { gRelay.relayForm(f); } f.submit(); break; // ajax mode 일 경우 폼 체크만 한다. case 'boolen': case 'ajax': return true; break; } return true; }, /** * check main process * @param {String} field 체크할 오브젝트 아이디 * @return {Boolen} */ check: function(field) { // set var optValue = this.setOptions[field]['type']; switch(typeof optValue) { case 'object': for(var i = 0; i < optValue.length; i++) { switch(optValue[i]) { default: if( this.checkSwitch(field, optValue[i]) == false ) return false; break; // 외부 함수 case 'func': if( this.callFunc(field) == false ) return false; break; // 정규표현식 case 'match': if( this.checkMatch(field) == false ) return false; break; } } return true; break; case 'undefined': case 'string': default: return this.checkSwitch(field, optValue); break; } return true; }, /** * 외부 함수 실행 * @param {String} field id name * @return {Boolen} true / fasle */ callFunc: function(field) { switch(typeof this.setOptions[field]['func']) { case 'function': return this.setOptions[field]['func'](field, true); break; case 'object': default: for(var j = 0; j < this.setOptions[field]['func'].length; j++) { if( this.setOptions[field]['func'][j](field, true) == false ) return false; } break; } return true; }, /** * 구분별 체크 루틴 * @param {String} field id name * @param {String} optValue 옵션값 * @return {Boolen} true / fasle */ checkSwitch: function(field, optValue) { // check case switch(optValue) { case 'length': return this.length(field); break; case 'email': return this.email(field); break; case 'digit': return this.digit(field); break; case 'radiobox': case 'checkbox': return this.box(field); break; case 'ssn': return this.ssn(field); break; case undefined: default: return this.checkDefault(field); break; } return true; }, /** * check default * @param {String} field id name * @return {Boolen} */ checkDefault: function(field) { // set var tarObj = document.getElementById(field); // process if( tarObj != null && tarObj.style.display != null && tarObj.style.display != 'none' && tarObj.parentNode.style.display != 'none' && tarObj.value == '' ) { switch( tarObj.tagName ) { case 'SELECT': var msg = printf('%s0을(를) 선택해주십시오.', this.setOptions[field]['msg']); break; default: var msg = this.setOptions[field]['noSuffix'] ? printf('%s0', this.setOptions[field]['msg']): printf('%s0을(를) 입력해주십시오.', this.setOptions[field]['msg']); break; } if(this.setOptions[field]['check']==true) { alert(msg); this.focus(tarObj); return false; } } return true; }, /** * focus for object * @param {Object} tarObj * @return {Boolen} */ focus: function(tarObj) { switch(this.setOptions[field]['noSuffix']) { case true: return true; break; default: tarObj.focus(); break; } }, /** * check for RexExp * @param {String} field id name * @return {Boolen} */ checkMatch: function(field) { // set var tarObj = document.getElementById(field); // process var str = eval('/' + this.setOptions[field]['match'] + '/'); if( tarObj.value.match(str) != null ) { alert(this.setOptions[field]['msgMatch']); tarObj.focus(); return false; } return true; }, /** * check function length * @param {String} field id name * @return {Boolen} true / false */ length: function(field) { // set var tarObj = document.getElementById(field); // check default if( this.checkDefault(field) == false ) return false; // set var maxlength = this.setOptions[field]['maxlength']; var minlength = this.setOptions[field]['minlength']; if( typeof maxlength == 'undefined' || maxlength < 0 ) return false; if( typeof minlength == 'undefined' || minlength < 0 ) return false; // process if( tarObj.value.length < minlength || tarObj.value.length > maxlength ) { if(this.setOptions[field]['check']==true) { var msg = printf('%s0의 길이는 %s1~%s2 으로 제한되어 있습니다.', this.setOptions[field]['msg'], minlength, maxlength); alert(msg); tarObj.focus(); return false; } } return true; }, /** * check email type * @param {String} field id name * @return {Boolen} true / false */ email: function(field) { // set var tarObj = document.getElementById(field); // check default if( this.checkDefault(field) == false ) return false; if( chkEmail(tarObj.value) == false ) { if(this.setOptions[field]['check']==true) { var msg = printf('%s0형식이 올바르지 않습니다.', this.setOptions[field]['msg']); alert(msg); tarObj.focus(); return false; } } return true; }, /** * check number only * @param {String} field id name * @return {Boolen} true / false */ digit: function(field) { // set var tarObj = document.getElementById(field); // check default if( this.checkDefault(field) == false ) return false; if( chkNum(tarObj) == false ) { if(this.setOptions[field]['check']==true) { var msg = printf('%s0 형식이 올바르지 않습니다.', this.setOptions[field]['msg']); this.tarObj.focus(); return false; } } return true; }, /** * check for radiobox checkbox * @param {String} field 체크 or 라디오박스 name * @return {Boolen} true / false */ box: function(field) { if( checkbox({name: field, mode: 'check'}) == false ) { if(this.setOptions[field]['check']==true) { var msg = printf("%s0을(를) 선택해 주십시오.", this.setOptions[field]['msg']); alert(msg); return false; } } return true; }, /** * check for jumin * @param {String} field id name * @param {Object} tarObj check object * @return {Boolen} true / false */ ssn: function(field) { // set var f = this.setOptions.fm; var arr = field.split(','); var obj = eval('f.' + arr[0]); var obj2 = eval('f.' + arr[1]); // check default if( this.checkDefault(arr[0]) == false ) return false; if( this.checkDefault(arr[1]) == false ) return false; // process if( ssn.init( obj.value.toString() + obj2.value.toString() ) == false ) { obj.focus(); return false; } return true; } } /** * 체크박스 checked 관련 * ex) * @param {Object object} options {name:''[, mode: 'un or all or check or null']} * @return {Null} */ function checkbox(options) { var o = document.getElementsByName(options.name); if( o == null ) return; switch(o.length) { case 0: var chk = false; var o = document.getElementById(options.name); if( o == null ) return; if( o.checked == true ) var chk = true; switch(options.mode) { default: return chk; break; case 'val': return chk == true ? o.value : -1; break; } return false; break; default: for( var i = 0, stack = []; i < o.length; i++ ) { switch(options.mode) { default: o[i].checked =! o[i].checked; break; case 'un': o[i].checked = false; break; case 'all': o[i].checked = true; break; case 'check': if( o[i].checked == true ) var chk = true; break; case 'val': if( o[i].checked == true ) var val = i; break; case 'stack': if( o[i].checked == true ) stack.push(o[i].value); break; case 'key': if( o[i].checked == true ) var key = i; break; } } if( options.mode == 'check' && chk != true ) { if( typeof options.msg != 'undefined' ) alert(options.msg); return false; } else if( options.mode == 'val' ) { if(typeof val == 'undefined') return -1; return o[val].value; } else if( options.mode == 'stack' ) { return stack; } else if( options.mode == 'key' ) { if(typeof key == 'undefined') return -1; return key; } break; } } /** * 오브젝트 확장 * @param {Object} destination * @param {Object} source * @return {Object} */ Object.extend = function(destination, source) { for(var property in source) { destination[property] = source[property]; } return destination; } /** * sprint 함수 javascript version * @param {String} lang * @return {String} */ function printf(lang) { var args = printf.arguments; for( var i = 0; i < args.length; i++ ) { if( typeof args[i + 1] == 'undefined' ) continue; lang = lang.replace('%s' + i, args[i + 1]); } return lang; } /** * 이메일체크 * @param {String} strValue * @return {Null} */ function chkEmail(strValue) { if((strValue.length != 0) && (strValue.search(/(\S+)@(\S+)\.(\S+)/) == -1)) return false; else return true; } /** * 숫자체크 * @param {String} strValue * @return {Null} */ function chkNum(inputname) { var formstr=eval(inputname); for(var i = 0;i'9') && chr!='-' && chr!='_') { return false; } } return true; } /** * 주민번호 체크 ssn.init(주민번호값13자리) * @param String juminno 주민번호값13자리 * @return Boolen */ var ssn = { juminno: null, init: function(juminno) { this.juminno = juminno; if( this.juminno=="" || this.juminno==null ) { alert("주민등록번호를 적어주십시오."); return false; } var jumin1 = this.juminno.substr(0,6); var jumin2 = this.juminno.substr(6,7); var yy = jumin1.substr(0,2); // 년도 var mm = jumin1.substr(2,2); // 월 var dd = jumin1.substr(4,2); // 일 var genda = jumin2.substr(0,1); // 성별 var msg, ss, cc; // 숫자가 아닌 것을 입력한 경우 if( this.isNumeric(jumin1) == false ) { alert("주민등록번호 앞자리를 숫자로 입력하십시오."); return false; } // 길이가 6이 아닌 경우 if( jumin1.length != 6 ) { alert("주민등록번호 앞자리를 다시 입력하십시오."); return false; } // 첫번째 자료에서 연월일(YYMMDD) 형식 중 기본 구성 검사 if(yy < "00" || yy > "99" || mm < "01" || mm > "12" || dd < "01" || dd > "31") { alert("주민등록번호 앞자리를 다시 입력하십시오."); return false; } // 숫자가 아닌 것을 입력한 경우 if( this.isNumeric(jumin2) == false ) { alert("주민등록번호 뒷자리를 숫자로 입력하십시오."); return false; } // 길이가 7이 아닌 경우 if( jumin2.length != 7 ) { alert("주민등록번호 뒷자리를 다시 입력하십시오."); return false; } // 성별부분이 1 ~ 4 가 아닌 경우 if( genda < "1" || genda > "4" ) { alert("주민등록번호 뒷자리를 다시 입력하십시오."); return false; } // 연도 계산 - 1 또는 2: 1900년대, 3 또는 4: 2000년대 cc = (genda == "1" || genda == "2") ? "19" : "20"; // 첫번째 자료에서 연월일(YYMMDD) 형식 중 날짜 형식 검사 if( this.isYYYYMMDD(parseInt(cc+yy), parseInt(mm), parseInt(dd)) == false ) { alert("주민등록번호 앞자리를 다시 입력하십시오."); return false; } // Check Digit 검사 if( this.isSSN(jumin1, jumin2) == false ) { alert("입력한 주민등록번호를 검토한 후, 다시 입력하십시오."); return false; } return true; }, isYYYYMMDD: function(y, m, d) { switch(m) { // 2월의 경우 case 2: if(d > 29) return false; // 2월 29의 경우 당해가 윤년인지를 확인 if(d == 29) { if((y % 4 != 0) || (y % 100 == 0) && (y % 400 != 0)) return false; } break; // 작은 달의 경우 case 4: case 6: case 9: case 11: if(d == 31) return false; } // 큰 달의 경우 return true; }, // 숫자체크 isNumeric: function(s) { var c = ''; for(var i = 0; i "9") return false; } return true; }, // 주민번호 isSSN: function(s1, s2) { var c = ''; n = 2; sum = 0; for (var i = 0; i