// 객실사진 팝업
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