[실시간항공] 미서부에게 사랑받자💛3대도시+5대캐년+요세미티 국립공원 10일_HIT (2024)

`);$(printHtml).printThis({importCSS: true,importStyle: true, printDelay : 500});$(".modal").filter(function(idx,obj){return $(obj).attr("aria-hidden")=="false"}).modal("hide");}function fn_callMain(){location.href = window.location.origin;}function fn_eventMainParamCheck(){if(!$("#tourId").val() || !$("#tourCode").val() || !$("#masterId").val() || !$("#masterCode").val()){//_Popup.openPopupConfirm(errParam,fn_callMain)return false;}else{return true;}}function fn_setPringModal(){ let tabId = ['goodsEvtTab_1', 'goodsEvtTab_2', 'goodsEvtTab_5','goodsEvtTab_7']; if(fnCkeckTabSelectYN(tabId)) selectGoodsEvtTabData(tabId);$.each($(".tab-d-area>button").map(function(idx,obj){return obj.id}).get(),function(idx,obj){let printArea = $("#print_"+obj);let id = printArea.attr("id");if(printArea.length > 0){printArea.html("");printArea.append($(".cont-box."+obj).clone());//기존 상세 정보에서 hide 할 영역설정 및 추가if(id=="print_goodsEvtTab_1"){$("#print_goodsEvtTab_1 .tourBanner").hide();$("#print_goodsEvtTab_1 .tab1_point_9").addClass("show");$("#print_goodsEvtTab_1 .tab1_point_9").find().addClass("show");$("#print_goodsEvtTab_1").find("#tab1_evt_img_btn").hide(); $("#print_goodsEvtTab_1").find(".tourplan-intro-box").hide();}//선택관광 , 쇼핑정보$.each(printArea.find("input[type='checkbox']:checked"),function(idx,obj){$(obj).trigger("click");});//약관printArea.find(".insurance").hide();}});}function fnGoReserve() { //출발일체크 let departDateYmd = $("#departDateYmd").val(); let date = new Date(); let year = date.getFullYear().toString(); let month = new String(date.getMonth()+1)<10?"0"+(date.getMonth()+1):(date.getMonth()+1).toString(); let day = date.getDate()<10?"0"+date.getDate():date.getDate().toString(); let currDate = year+month+day; if(departDateYmd < currDate){ _Popup.openDefaultPopup(resDeptDatePassed); return; }//메뉴코드let menuCode = $("#menuCode").val()?$("#menuCode").val():"";//즉시결제여부let instantPaymentFlag = $("#immediatePaymentFlag").val();//행사코드let tourCode = $("#tourCode").val();if(!tourCode){_Popup.openDefaultPopup("행사코드가 없습니다. 문의 바랍니다.");return false;}//성인let adultCnt = $("#adultCnt").val()?$("#adultCnt").val():"0";//아동let childCnt = $("#childCnt").val()?$("#childCnt").val():"0";//유아let infantCnt = $("#infantCnt").val()?$("#infantCnt").val():"0";if(!adultCnt||adultCnt <= 0){_Popup.openDefaultPopup("예약은 성인이 필수로 들어가야합니다.");return false;}let param = {menuCode:menuCode,instantPaymentFlag:instantPaymentFlag,tourCode:tourCode,adultCnt:adultCnt,childCnt:childCnt,infantCnt:infantCnt};$.ajax({url: reservationProcURL,type: 'post',dataType: 'json',data: {data : reservationURL(param)},contentType: 'application/x-www-form-urlencoded; charset=UTF-8',async: true,success: function (result, textStatus, data) {let fn_proc;let login = function(){location.href = "/member/login"; return false;}let reservation = function(){location.href = reservationURL(param); return false;}if(result.data.session!="Y"){_Popup.openPopupConfirm(reservationProcMsg,login,reservation,"로그인","비회원예약");}else{reservation();}},error: function (xhr, errorName, error) {_Popup.openDefaultPopup('상품 비교함 조회 시 에러입니다.');}});}//예약하기function fn_reservation(){//상태코드let statusId = $("#statusId").val();let count = Number("10");if( !(statusId == "3" || statusId == "6") || count<=0){_Popup.openPopupConfirm(resFailConfMsg,constHisBack);}else{if (statusId == "6") {_Popup.openPopupConfirm(resWaitConfMsg,fnGoReserve);} else {fnGoReserve()}}}//다른출발일 조회 결과 리스트 셋function fn_setDifferentListData(data){let table = $(".table-type-1.tb-airplane");let tableTbody = $(".table-type-1.tb-airplane tbody");tableTbody.remove();let $tbody = $("

");if(data.length > 0){$.each(data,function(idx,obj){let className = obj.statusId==3?"reserve-on":"reserve-off"let departDate = obj.departDateType4.split("~")[0];let returnDate = obj.departDateType4.split("~")[1];let preferredAirlineNm = obj.preferredAirlineNm ? obj.preferredAirlineNm : "";let price = comma(obj.adultPrice);let url = evtDetailUrl(obj.tourCode);$tbody.append(`

${departDate}${returnDate}[실시간항공] 미서부에게 사랑받자💛3대도시+5대캐년+요세미티 국립공원 10일_HIT (1)${preferredAirlineNm}${obj.dN}${price}원${obj.statusName}

`);});$tbody.addClass("mcScroll");}else{let hdCnt = $(".table-type-1.tb-airplane th").length+1;let tdWidth = $(".table-type-1.tb-airplane").width();$tbody.append(`

조회된 내역이 없습니다.

`)}table.append($tbody);table.find("tbody").mCustomScrollbar();}//항공편 변경 관련 모달 데이터 셋팅function fn_setFlightChange(data){let fliModal = $("#popup-df-flight");fliModal.find(".flight-area").children().remove();$.each(data,function(idx,obj){let pmSign = obj.pmSign?obj.pmSign:"";let price = pmSign.concat(comma(obj.resultPrice));let row =$(`

${price}

`)fliModal.find(".flight-area").append(row);});fliModal.modal();}//예약관련 인원에 따른 금액 계산 후 _reservation 전역변수 값 셋팅function fn_setReservation(totalSync){let payInfos = $(".option-area input[type='text']").map(function(idx,obj){return {id:obj.id,value:obj.value}}).toArray();//계산$.each(payInfos,function(idx,obj){let currentPrice = $(".option-area .won").filter(function(ft_idx,ft_obj){let id = $(ft_obj).attr("data-input-id"); return id == obj.id}).map(function(m_idx,m_obj){return $(m_obj).attr("data-price")}).get(0);_reservation["pay"][obj.id] = obj.value * currentPrice;let minusBtn = $(".option-area input[id='"+obj.id+"']").closest("div").find(".btn-minus");if(_reservation["pay"][obj.id]<= 0){minusBtn.attr("disabled",true);}else{minusBtn.attr("disabled",false);}});_reservation["payTotal"]=Object.values(_reservation["pay"]).reduce((partialSum, a) => partialSum + a, 0);if(totalSync){//최종합계 금액 셋팅$(".option-area .item-total .won").html(comma(_reservation["payTotal"])+"");}}//여행일정 콤보 셋팅function fn_setTourDay(tourDay , tabId){for(var i = 1; i <= tourDay ; i++){let $option = $("");$option.attr("value",i);$option.text(i+" 일차");$option.attr("tabId",tabId)$("#tourSchDay").append($option);}}//모달 내 데이터 셋팅function fn_setModalData(target,currentData){let modalEl = $("#"+target);if(modalEl.length > 0){//이미지 3개 모달if(target=="popup-df-tourist"){//모달명let modalTitle = modalEl.find(".modal-header>.modal-title");let modalTitleData = currentData.typeId==7 ? "자세히보기" : (currentData.type ? currentData.type : "");modalTitle.html(modalTitleData);//타이틀let title = modalEl.find(".item-header").find("strong");currentData.nameKo?title.html(currentData.nameKo):title.html("");//짧은설명let descriptionShort = modalEl.find(".item-header").find("p");currentData.descriptionShort?descriptionShort.html(changeEnterToBr(currentData.descriptionShort)):descriptionShort.html("");//이미지let imgTag = modalEl.find(".swiper-photo.swiper-dt-pop-1");let $div = $("

");if(_swipeInfo["popupTourImg_3"]){_swipeInfo["popupTourImg_3"].destroy();imgTag.find(".swiper-wrapper").children().remove();}if(currentData && currentData.hasOwnProperty("img")){let img = currentData.img.split("|");$.each(img,function(idx,obj){let cloneDiv = $div.clone();cloneDiv.css("background-image","url('"+encodeURI(obj)+"')");imgTag.find(".swiper-wrapper").append(cloneDiv);});}else{let cloneDiv = $div.clone();cloneDiv.css("background-image","url(../../resources/images/noimage.png)");imgTag.find(".swiper-wrapper").append(cloneDiv);}//관광 이미지 3개_swipeInfo["popupTourImg_3"] = new Swiper(".swiper-dt-pop-1", {slidesPerView: 'auto',spaceBetween: 10,speed: 500,observer: true,observeParents: true,loop: true,pagination: {el: ".swiper-pagination-dt-pop-1", type: "fraction"// clickable: true,},navigation: {nextEl: ".swiper-button-next",prevEl: ".swiper-button-prev"}});$(_swipeInfo["popupTourImg_3"].el).find(".swiper-button-disabled").removeClass("swiper-button-disabled");//상세내용let description = modalEl.find(".photo-txt");currentData.description?description.html(changeEnterToBr(currentData.description)):description.html("");//주소 존재유무에 따른 주소영역 셋팅//tb-detail addreslet addrTag = modalEl.find(".tb-detail.addressDiv");if(addrTag.length > 0 && currentData.address){addrTag.css("display","");let address = currentData.address ? currentData.address : "";addrTag.find(".address").html(address);let homepage = currentData.homepage ? currentData.homepage : "";addrTag.find(".homepage").html(''+homepage+'');let contents = currentData.contents ? currentData.contents : "";addrTag.find(".addressContent").html(contents);let openingDay = currentData.openingDay ? currentData.openingDay : "";addrTag.find(".addressOpenDay").html(openingDay);}else{addrTag.css("display","none");}}//이미지 1개 모달else if(target=="popup-df-tourist2"){//타이틀let title = modalEl.find(".item-header").find("strong");currentData.nameKo?title.html(currentData.nameKo):title.html("");//짧은설명let descriptionShort = modalEl.find(".item-header").find("p");currentData.descriptionShort?descriptionShort.html(changeEnterToBr(currentData.descriptionShort)):descriptionShort.html("");//이미지let imgTag = modalEl.find(".swiper-photo.swiper-dt-pop-2");let $div = $("

");if(_swipeInfo["popupTourImg_1"]){_swipeInfo["popupTourImg_1"].destroy();imgTag.find(".swiper-wrapper").children().remove();}if(currentData && currentData.hasOwnProperty("img")){let img = currentData.img.split("|");$.each(img,function(idx,obj){let cloneDiv = $div.clone();cloneDiv.css("background-image","url('"+obj+"')");imgTag.find(".swiper-wrapper").append(cloneDiv);});}else{let cloneDiv = $div.clone();cloneDiv.css("background-image","url(../../resources/images/noimage.png)");imgTag.find(".swiper-wrapper").append(cloneDiv);}//관광 이미지 1개_swipeInfo["popupTourImg_1"] = new Swiper(".swiper-dt-pop-2", {slidesPerView: 'auto',spaceBetween: 10,speed: 500,observer: true,observeParents: true,loop: true,pagination: {el: ".swiper-pagination-dt-pop-2", type: "fraction"// clickable: true,},navigation: {nextEl: ".swiper-button-next",prevEl: ".swiper-button-prev"}});$(_swipeInfo["popupTourImg_1"].el).find(".swiper-button-disabled").removeClass("swiper-button-disabled");//상세내용let description = modalEl.find(".photo-txt");currentData.description?description.html(changeEnterToBr(currentData.description)):description.html("");//행사 기타 정보정보let tourInfo = modalEl.find(".info-box");//요금let adultPrice = currentData.adultPrice ? currentData.adultPrice : "0";let childPrice = currentData.childPrice ? currentData.childPrice : "0";let infantPrice = currentData.infantPrice ? currentData.infantPrice : "0";tourInfo.find("dd[id='popTourPrice']").html("성인 : "+comma(adultPrice)+" / "+" 아동 : "+comma(childPrice)+" / "+" 유아 : "+comma(infantPrice));//소요시간let timeRequired = currentData.timeRequired ? currentData.timeRequired : "";tourInfo.find("dd[id='popTourTime']").html(timeRequired);//대체일정let otherSchedule = currentData.otherSchedule ? currentData.otherSchedule : "";tourInfo.find("dd[id='popTourOth']").html(otherSchedule);}//호텔 모달else if(target=="popup-10"){//타이틀let title = modalEl.find(".item-header").find("strong");currentData.nameKo?title.html(currentData.nameKo):title.html("");//짧은설명let descriptionShort = modalEl.find(".item-header").find(".txt");currentData.descriptionShort?descriptionShort.html(changeEnterToBr(currentData.descriptionShort)):descriptionShort.html("");//popupHotel photo-txt//이미지let imgTag = modalEl.find(".swiper-photo.swiper-dt-pop-3");let $div = $("

");if(_swipeInfo["popupHotel"]){_swipeInfo["popupHotel"].destroy();imgTag.find(".swiper-wrapper").children().remove();}if(currentData && currentData.hasOwnProperty("img")){let img = currentData.img.split("|");$.each(img,function(idx,obj){let cloneDiv = $div.clone(); obj = encodeURI(obj);cloneDiv.css("background-image","url('"+obj+"')");imgTag.find(".swiper-wrapper").append(cloneDiv);});}else{let cloneDiv = $div.clone();cloneDiv.css("background-image","url(../../resources/images/noimage.png)");imgTag.find(".swiper-wrapper").append(cloneDiv);}//호텔 이미지_swipeInfo["popupHotel"] = new Swiper(".swiper-dt-pop-3", {slidesPerView: 'auto',spaceBetween: 10,speed: 500,observer: true,observeParents: true,loop: true,pagination: {el: ".swiper-pagination",clickable: true,},navigation: {nextEl: ".swiper-button-next",prevEl: ".swiper-button-prev"}});$(_swipeInfo["popupHotel"].el).find(".swiper-button-disabled").removeClass("swiper-button-disabled");//상세내용let description = modalEl.find(".photo-txt");currentData.description?description.html(changeEnterToBr(currentData.description)):description.html("");//주소 존재유무에 따른 주소영역 셋팅//tb-detail addreslet addrTag = modalEl.find(".tb-detail");if(addrTag.length > 0){addrTag.css("display","");let address = currentData.address ? currentData.address : "";let address2 = currentData.address2 ? currentData.address2 : "";addrTag.find(".address").html(address);if(address2){addrTag.find(".address").append(" "+address2);}let tel = currentData.tel ? currentData.tel : "";addrTag.find(".tel").html(tel);let homepage = currentData.homepage ? currentData.homepage : "";addrTag.find(".homepage").html(''+homepage+'');let resultContent = function(str){str = unicodeToKor(str).split(",");let div = $("

");$.each(str,function(idx,obj){let result = idx == 0 ? `- ${obj}` : ` - ${obj}`;div.append(result);});return div;}addrTag.find(".content").html("");let content = currentData.contents ? currentData.contents : "";if(content){addrTag.find(".content").append(resultContent(content));}addrTag.find(".content2").html("");let content2 = currentData.contents2 ? currentData.contents2 : "";if(content2){addrTag.find(".content2").append(resultContent(content2));}}else{addrTag.css("display","none");}}modalEl.modal();}} //탭 데이터 조회 function selectGoodsEvtTabData(tabId){let url = tourEventDataURL;let data ={ "menuCode": $("#menuCode").val(),"tourId": $("#tourId").val(),"tourCode": $("#tourCode").val(),"masterId": $("#masterId").val(),"masterCode": $("#masterCode").val(),"tabId": tabId};$.ajax({url: url,type: 'post',data: {data:JSON.stringify(data)},dataType: 'json',contentType: 'application/x-www-form-urlencoded; charset=UTF-8',async: false,success: function (result, textStatus, data) {if(result.statusCode!=200){onShowToast(errProc);return false;}// _tabObj=result.data; tabId.map((v,i)=>{ if(_tabArray.findIndex(o=>o === v) === -1 )_tabArray.push(v); }) $.each(Object.keys(result.data),function(idx,obj){ _tabObj[obj] = result.data[obj]["detail"]; fnSetTabViewSet(obj); });},error: function (xhr, errorName, error) {}}); }//탭 데이터 조회 후 탭 데이터 및 태그 셋팅let fn_emptyChkSetDefData = function(data){return data ? (data=="undefined"?"":data):""};function fnSetTabViewSet(tabId){//선택된 탭 태그let tabEl = $(".cont-box."+tabId);if(tabEl.length > 0){//START 탭1--------------------------------------------------------------------------------------------------------if("goodsEvtTab_1" == tabId){//행사상세에 대한 타입정보 공통코드 ER05let evtType = _tabObj["goodsEvtTab_1"]["evtType"];let etcShopingData = evtType.filter(function(obj){return obj.type==8});if(etcShopingData.length > 0){etcShopingData = evtType.filter(function(obj){return obj.type==8})[0]["etc"];if(etcShopingData && etcShopingData.hasOwnProperty("shopping_list")){let shopping_list = etcShopingData["shopping_list"];let shopTxt = "";$.each(shopping_list,function(idx,obj){let txt = fn_emptyChkSetDefData(obj.item);shopTxt = shopTxt.concat("
");shopTxt = shopTxt.concat(txt);});//여행상품핵심정보$("table td[id='popShopingTd']").html(`${shopping_list.length}회${shopTxt}`);}}//START 상세 배너관련-------------------------------------------------------------------------------let banner = _tabObj["goodsEvtTab_1"]["banner"];if(banner && banner.length>0){if(_swipeInfo["bannerDetail"]){_swipeInfo["bannerDetail"].destroy();}tabEl.find(".tourBanner").css("display","");tabEl.find(".swiper-wrapper").children().remove();$.each(banner,function(idx,obj){let dynEl =$(`

[실시간항공] 미서부에게 사랑받자💛3대도시+5대캐년+요세미티 국립공원 10일_HIT (2)

${obj.mainWords}

${obj.mainWordsEtc}

${obj.cndcyWords}

`);dynEl.find(".img").on("click",function(){window.open(obj.linkUrl,"_blank");});dynEl.find(".txt").on("click",function(){window.open(obj.linkUrl,"_blank");});tabEl.find(".swiper-wrapper").append(dynEl);});//상세 이미지 스와이프 관련_swipeInfo["bannerDetail"] = new Swiper(".tourBanner", {slidesPerView: 'auto',spaceBetween: 10,speed: 500,loop: true,pagination: {el: ".swiper-pagination-tourBanner",clickable: true,},navigation: {nextEl: ".swiper-button-next",prevEl: ".swiper-button-prev"}});$(_swipeInfo["bannerDetail"].el).find(".swiper-button-disabled").removeClass("swiper-button-disabled");}else{tabEl.find(".tourBanner").css("display","none");}//END 상세 배너관련-------------------------------------------------------------------------------//START 상품핵심포인트-------------------------------------------------------------------------------let point = _tabObj["goodsEvtTab_1"]["point"];let noDup_point = [...new Set(point.map(function(obj){return obj.type}))]; // EES 상품상세 > 여행참조정보 > 상품특전에 여행후기영상이 있을 떄 let videoInfo = _tabObj["goodsEvtTab_1"]["videoInfo"]; if (typeof videoInfo == "undefined" || videoInfo === null || videoInfo == "") { $(".embedded-video").css("display","none"); } else { $(".embedded-video").append(''); }//이미지존재여부 에 따른 show hideif(noDup_point.indexOf(tab1_imgType) >= 0){$("#tab1_imgPoint").css("display","");}else{ // $("#tab1_imgPoint").css("display","none");// $("#tab1_imgPoint .tab1_point_9").css("display","none");// $("#tab1_imgPoint #tab1_evt_img_btn").css("display","none");} let imageUrls = [];$.each(noDup_point,function(idx,obj){let pointEl = tabEl.find(".tab1_point_"+obj);if(pointEl.length > 0){pointEl.css("display","");pointEl.find(".area").html("");let getPointFilter = point.filter(function(subObj,subIdx){return subObj.type == obj;}); // 이미지 URL 수집$.each(getPointFilter,function(filterIdx,filterObj){let nameKo = fn_emptyChkSetDefData(filterObj.nameKo);let descriptionShort = fn_emptyChkSetDefData(filterObj.descriptionShort);let exImage = fn_emptyChkSetDefData(filterObj.exImage);let tag1 = fn_emptyChkSetDefData(filterObj.tag1);if(obj!=9){pointEl.find(".area").append("

"+nameKo+" : "+descriptionShort+"

");}else{ //기획전 이미지 링크(태그1) if(tag1){ pointEl.find(".area").append(`

`); }else{ pointEl.find(".area").append('

[실시간항공] 미서부에게 사랑받자💛3대도시+5대캐년+요세미티 국립공원 10일_HIT (4)

'); } imageUrls.push(exImage);}});}}); // loadImages(imageUrls).then(() => { // let areaHeight = $(".goodsEvtTab_1 .tab1_point_9 .area").height(); // // // 높이에 따른 추가 작업 // if (areaHeight < 840) { // $("#tab1_evt_img_btn").hide(); // } else { // $("#tab1_evt_img_btn").show(); // } // })//END 상품핵심포인트-------------------------------------------------------------------------------if(evtType.length>0){//START 보험-------------------------------------------------------------------------------let insurance = $(evtType.filter(function(obj){return obj.type=="1"})).get(0);let inEtc = insurance ? ( insurance.etc ? insurance.etc : "" ) : "";tabEl.find(".tab1_evt_typ_2").css("display",""); inEtc = "

"+inEtc+"

" inEtc += "

보장내용 및 금액 상세보기

"tabEl.find(".tab1_evt_typ_2 .area").html(inEtc);//END 보험-------------------------------------------------------------------------------//START 포함 미포함 관련 , 인솔자/가이드정보 -------------------------------------------------------------------------------//포함 미포함 관련let type2Data = $(evtType.filter(function(obj){return obj.type=="2"})).get(0);let including = type2Data ? type2Data["etc3"] : "";let includingTag = tabEl.find(".included-list .item.check .area");let noneEl;includingTag.html("");if(including){tabEl.find(".included-list .item.check").css("display","");$.each(including,function(idx,obj){if(obj.tag && obj.remark){includingTag.append("[".concat(obj.tag).concat("]").concat(obj.remark).concat(""));}else if(obj.tag && !obj.remark){includingTag.append("[".concat(obj.tag).concat("]").concat(""));}else if(!obj.tag && obj.remark){includingTag.append(obj.remark.concat(""));}});}else{tabEl.find(".included-list .item.check").css("display","none");}let notInclud = type2Data ? type2Data["etc4"] : "";let notIncludTag = tabEl.find(".included-list .item.no-check .area");notIncludTag.html("");if(notInclud){tabEl.find(".included-list .item.no-check").css("display","");$.each(notInclud,function(idx,obj){if(obj.tag && obj.remark){notIncludTag.append("[".concat(obj.tag).concat("]").concat(obj.remark).concat(""));}else if(obj.tag && !obj.remark){notIncludTag.append("[".concat(obj.tag).concat("]").concat(""));}else if(!obj.tag && obj.remark){notIncludTag.append(obj.remark.concat(""));}});}else{tabEl.find(".included-list .item.no-check").css("display","none");}if(tabEl.find(".included-list .item").length==0){tabEl.find(".included-list").css("display","none");}else{tabEl.find(".included-list").css("display","");}//인솔자/가이드정보//TYPE 값이 2 일때 가이드 인솔자 여부 / 1 : 가이드Y, 인솔자N / 2 : 가이드N, 인솔자Y / 3 : 가이드Y, 인솔자Y / 0 : 가이드N, 인솔자Nlet guideTag = tabEl.find(".evt_type_2_guide");let guideFlag = type2Data ? type2Data["etcFlag"] : ""; let guideEtc = "";if(guideFlag==1){ guideTag.find(".leader").css("color","#666"); guideTag.find(".leader").css("border-color","#666"); guideEtc = type2Data["etc"]? type2Data["etc"] : "가이드가 포함된 상품입니다.";}else if(guideFlag==2){ guideTag.find(".guide").css("color","#666"); guideTag.find(".guide").css("border-color","#666"); guideEtc = type2Data["etc"]? type2Data["etc"] : "인솔자가 포함된 상품입니다.";}else if(guideFlag==3){ guideEtc = type2Data["etc"]? type2Data["etc"] : "가이드 및 인솔자가 포함된 상품입니다.";}else{ guideTag.find(".guide").css("color","#666"); guideTag.find(".guide").css("border-color","#666"); guideTag.find(".leader").css("color","#666"); guideTag.find(".leader").css("border-color","#666"); guideEtc = "가이드 및 인솔자가 포함되지 않은 상품입니다.";}guideEtc = type2Data? guideEtc : "가이드/인솔자 정보가 없습니다.";guideTag.find(".cont").html(guideEtc);let scheduleTag = tabEl.find(".evt_type_2_schedule"); let scheduleFlag = type2Data ? type2Data["etcFlag5"] : ""; /* 자유일정여부 / 1 : Y / 0 : N */ let schedulEtc5 = ""; if(scheduleFlag == 1) schedulEtc5 = type2Data["etc5"]? type2Data["etc5"] : "자유일정이 포함된 상품입니다."; else if(scheduleFlag == 2){ scheduleTag.find(".free").css("color","#666"); scheduleTag.find(".free").css("border-color","#666"); schedulEtc5 = type2Data["etc5"]? type2Data["etc5"] : "자유일정이 포함되지 않은 상품입니다."; } else{ scheduleTag.find(".free").css("color","#666"); scheduleTag.find(".free").css("border-color","#666"); schedulEtc5 = "자유일정이 포함되지 않은 상품입니다.";} schedulEtc5 = type2Data? schedulEtc5 : "자유일정 정보가 없습니다.";scheduleTag.find(".cont").html(schedulEtc5);//END 포함 미포함 관련 , 인솔자/가이드정보 -------------------------------------------------------------------------------}}//END 탭1--------------------------------------------------------------------------------------------------------//START 탭2--------------------------------------------------------------------------------------------------------else if("goodsEvtTab_2" == tabId){//수하물정보let luggageTag = tabEl.find(".item-luggage");let iuggageInfo = _tabObj["goodsEvtTab_2"]["iuggageInfo"];if(iuggageInfo && luggageTag.length > 0){luggageTag.find(".airline").html("");luggageTag.find(".free").html("");luggageTag.find(".add").html("");luggageTag.find(".in").html("");if(iuggageInfo){luggageTag.find(".airline").html(iuggageInfo.airmanNm);luggageTag.find(".free").html(iuggageInfo.freeHydcmpPermQy);luggageTag.find(".add").html(iuggageInfo.excessChrge);luggageTag.find(".in").html(iuggageInfo.inflgtTkinPermSize);}}else{luggageTag.css("display","none");}//항공정보let schAir = _tabObj["goodsEvtTab_2"]["schAir"];//미팅장소//let meeting = tabEl.find(".item-luggage");let meeting = _tabObj["goodsEvtTab_2"]["meeting"]; if(meeting) { let description = meeting.description ? meeting.description : ""; if (description == "") { $(".goodsEvtTab_2 .item-box-meeting .area ").find(".desc").hide(); } $(".goodsEvtTab_2 .item-box-meeting .area ").find(".desc").html(changeEnterToBr(description)); let remark = meeting.remark ? meeting.remark : ""; if (remark == "") { $(".goodsEvtTab_2 .item-box-meeting .area ").find(".remark").hide(); } else $(".goodsEvtTab_2 .item-box-meeting .area ").find(".remark").html(changeEnterToBr(remark)); } else{ $(".goodsEvtTab_2 .item-box-meeting .area ").find(".desc").html('* 미팅 관련 자세한 사항은 추후 안내 드립니다.'); $(".goodsEvtTab_2 .item-box-meeting .area ").find(".remark").hide(); }//일정//스케줄 관련 탭 오브젝트 키const tabObjKey = "schedule";let buttonSetAtt = function(el,obj){el.find("button").attr("data-type",tabObjKey);el.find("button").attr("typeDay",obj.day);el.find("button").attr("typeId",obj.typeId);el.find("button").attr("typeIdx",obj.typeIdx-1);}let schedule = _tabObj["goodsEvtTab_2"][tabObjKey];let schedule_days = _tabObj["goodsEvtTab_2"]["schedule"].map(function(obj){return obj.day});schedule_days = schedule_days.filter((val, idx) => {return schedule_days.indexOf(val) === idx; //값이 처음나오는 배열 인덱스와 현재 인덱스가 같으면 포함});tabEl.find(".item-plan-info.schedule").html("");let scheduleDate = moment($("#departDate").val(),'YYYYMMDD');let weekdaysText = $("#weekdaysText").val().split(",");//일정영역 forlet startDayAryIdx = 0;let lastDayArIdx = schedule_days.length-1;$.each(schedule_days,function(dayIdx,dayObj){//자식 태그가 존재 할 경우 return;if(tabEl.find(".item-plan-info.schedule").find(".day"+dayObj).length > 0){return false;}scheduleDate = dayIdx > 0 ? moment(scheduleDate,'YYYYMMDD').add(1,"day").format('YYYYMMDD') : moment(scheduleDate).format('YYYYMMDD');let addDate = moment(scheduleDate,'YYYYMMDD').format('YYYY-MM-DD dddd');let scheduleTag = $("#hiddenSchedule_date").children().clone();scheduleTag.find(".plan-header .no").html(dayObj+"일차");scheduleTag.find(".plan-header .date").html(addDate);scheduleTag.addClass("_schDayHD"+dayObj);//일정에대한 DIV 구분을 위한 CLASS ADDlet schedule_body = $("#hiddenSchedule_body").children().clone();schedule_body.find(".detailSch").addClass("day"+dayObj);scheduleTag.append(schedule_body);//일정영역 appendtabEl.find(".item-plan-info.schedule").append(scheduleTag);//상세일정 셋팅 setp 구분으로let detailSchedule = schedule.filter(function(ftObj,ftIdx){return ftObj["day"] == dayObj;});// 항공 정보 셋팅 변수let airSchSetEl = function(cloneEl , data){let startTime = moment(data.departTime,'YYYYMMDDHHmm').format("HH:mm");cloneEl.find(".schDepartTime").html(startTime);let departDate = moment(data.departDate,"YYYYMMDD").format("YYYY.MM.DD");let startDay = moment(departDate,"YYYYMMDD").format('dddd');let startPlace = data.departPlaceStartName;let startPlaceCode = data.departPlaceStart;cloneEl.find(".schDepartDateLoc").html(departDate+"("+startDay+")
"+startPlace+"("+startPlaceCode+") 출발");let endTime = moment(data.departArriveTime,'YYYYMMDDHHmm').format("HH:mm");cloneEl.find(".schArrivalTime").html(endTime); let departFlight = data.departFlight; cloneEl.find(".schAirLine").html(departFlight); cloneEl.find(".schShipLine").html(departFlight)let departArrivalDate = moment(data.departArrivalDate,"YYYYMMDD").format("YYYY.MM.DD");let endDay = moment(departArrivalDate,"YYYYMMDD").format('dddd');let departPlaceEndName = data.departPlaceEndName;let departPlaceEnd = data.departPlaceEnd;cloneEl.find(".schArrivalDateLoc").html(departArrivalDate+"("+endDay+")
"+departPlaceEndName+"("+departPlaceEnd+") 도착");let f_hh;let f_mm;let flightTime = data.departTotalFlyingTime;if(flightTime && flightTime.length == 4){f_hh = flightTime.substr(0,2);f_mm = flightTime.substr(2);}else{if(flightTime){f_hh = '0'.concat(flightTime.substr(0,1));f_mm = flightTime.substr(1);}else{f_hh = '00';f_mm = '00';}}cloneEl.find(".air-time .schAirFlightTime").html(f_hh+"시간"+f_mm+"분");if(departFlight){return cloneEl;}else{null;}}//한국 출발항공 관련let schedule_air;let schedule_air_sub; /*이동 수단에 따른 이미지 변경 */ let departTypeId = schAir[0].departTypeId; if(departTypeId == 1){ $('.detail .plan-airplane .air-time strong').removeClass('schShipLine'); $('.detail .plan-airplane .air-time strong').addClass('schAirLine'); }else if(departTypeId == 2){ $('.detail .plan-airplane .air-time strong').removeClass('schAirLine'); $('.detail .plan-airplane .air-time strong').addClass('schShipLine'); }if(dayObj==1){let airData_1 = { departTime : fn_emptyChkSetDefData(schAir[0].departTime),departDate : fn_emptyChkSetDefData(schAir[0].departDate),departArriveTime : fn_emptyChkSetDefData(schAir[0].departArriveTime),departPlaceStartName : fn_emptyChkSetDefData(schAir[0].departPlaceStartName),departPlaceStart : fn_emptyChkSetDefData(schAir[0].departPlaceStart),departFlight : fn_emptyChkSetDefData(schAir[0].departFlight),departArrivalDate : fn_emptyChkSetDefData(schAir[0].departDestinationDate),departPlaceEndName : fn_emptyChkSetDefData(schAir[0].departPlaceEndName),departPlaceEnd : fn_emptyChkSetDefData(schAir[0].departPlaceEnd),departTotalFlyingTime: fn_emptyChkSetDefData(schAir[0].departTotalFlyingTime),departTypeId : fn_emptyChkSetDefData(schAir[0].departTypeId)}schedule_air = airSchSetEl($("#hiddenSchedule_air").children().clone(),airData_1);if(schedule_air){tabEl.find(".item-plan-info.schedule").find(".day"+dayObj).append(schedule_air);}//경유 항공 있을 경우if(schAir[0].hasOwnProperty("departDestinationFlight")){let airData_2 = { departTime : fn_emptyChkSetDefData(schAir[0].departDestinationTime),departDate : fn_emptyChkSetDefData(schAir[0].departDestinationLayoverDate),departArriveTime : fn_emptyChkSetDefData(schAir[0].departDestinationArriveTime),departPlaceStartName : fn_emptyChkSetDefData(schAir[0].departDestinationPlaceStartName),departPlaceStart : fn_emptyChkSetDefData(schAir[0].departDestinationPlaceStart),departFlight : fn_emptyChkSetDefData(schAir[0].departDestinationFlight),departArrivalDate : fn_emptyChkSetDefData(schAir[0].departArrivalDate),departPlaceEndName : fn_emptyChkSetDefData(schAir[0].departDestinationPlaceEndName),departPlaceEnd : fn_emptyChkSetDefData(schAir[0].departDestinationPlaceEnd),departTotalFlyingTime: fn_emptyChkSetDefData(schAir[0].departDestinationFlyingTime)}schedule_air_sub = airSchSetEl($("#hiddenSchedule_air").children().clone(),airData_2);if(schedule_air_sub){tabEl.find(".item-plan-info.schedule").find(".day"+dayObj).append(schedule_air_sub);}}}//현지출발항공let end_schedule_air_1;let end_schedule_air_2;if(dayObj==schedule_days[schedule_days.length-1]){let airData_1 = { departTime : fn_emptyChkSetDefData(schAir[0].returnTime),departDate : fn_emptyChkSetDefData(schAir[0].returnDepartDate),departArriveTime : fn_emptyChkSetDefData(schAir[0].returnArriveTime),departPlaceStartName : fn_emptyChkSetDefData(schAir[0].returnPlaceStartName),departPlaceStart : fn_emptyChkSetDefData(schAir[0].returnPlaceStart),departFlight : fn_emptyChkSetDefData(schAir[0].returnFlight),departArrivalDate : fn_emptyChkSetDefData(schAir[0].returnOriginArrivalDate),departPlaceEndName : fn_emptyChkSetDefData(schAir[0].returnPlaceEndName),departPlaceEnd : fn_emptyChkSetDefData(schAir[0].returnPlaceEnd),departTotalFlyingTime: fn_emptyChkSetDefData(schAir[0].returnFlyingTime)}end_schedule_air_1 = airSchSetEl($("#hiddenSchedule_air").children().clone(),airData_1);if(end_schedule_air_1){tabEl.find(".item-plan-info.schedule").find(".day"+dayObj).append(end_schedule_air_1);}//경유 항공 있을 경우if(schAir[0].hasOwnProperty("returnOriginFlight")){let airData_2 = { departTime : fn_emptyChkSetDefData(schAir[0].returnOriginTime),departDate : fn_emptyChkSetDefData(schAir[0].returnArrivalLayoverDate),departArriveTime : fn_emptyChkSetDefData(schAir[0].returnOriginArriveTime),departPlaceStartName : fn_emptyChkSetDefData(schAir[0].returnOriginPlaceStartName),departPlaceStart : fn_emptyChkSetDefData(schAir[0].returnOriginPlaceStart),departFlight : fn_emptyChkSetDefData(schAir[0].returnOriginFlight),departArrivalDate : fn_emptyChkSetDefData(schAir[0].returnArrivalDate),departPlaceEndName : fn_emptyChkSetDefData(schAir[0].returnOriginPlaceEndName),departPlaceEnd : fn_emptyChkSetDefData(schAir[0].returnOriginPlaceEnd),departTotalFlyingTime: fn_emptyChkSetDefData(schAir[0].returnOriginFlyingTime)}end_schedule_air_2 = airSchSetEl($("#hiddenSchedule_air").children().clone(),airData_2);if(end_schedule_air_2){tabEl.find(".item-plan-info.schedule").find(".day"+dayObj).append(end_schedule_air_2);}}}$.each(detailSchedule,function(subIdx , subObj){//교통수단let transportation;if(subObj.typeId==1){transportation = $("#hiddenSchedule_time").children().clone();let etc1Desc = subObj.etc1Desc? subObj.etc1Desc: erpTrafficEtc1[subObj.etc1]? subObj[erpTrafficEtc1[subObj.etc1]]? subObj[erpTrafficEtc1[subObj.etc1]]: "": "";transportation.find(".tit").html("[교통편 : "+etc1Desc+" ]");let description_1 = "";$.each(Object.keys(erpTrafficEtcDetail),function(idx,obj){if(erpTrafficEtcDetail[obj] && subObj[obj]){let data = ""+erpTrafficEtcDetail[obj]+""+subObj[obj]+"";description_1 = description_1.concat(data);}});transportation.find(".txt").html(changeEnterToBr(description_1));let description_2 = subObj.description?changeEnterToBr(subObj.description):"";transportation.find(".txt").append(changeEnterToBr(description_2));transportation.attr("typeId",subObj.typeId);tabEl.find(".item-plan-info.schedule").find(".day"+dayObj).append(transportation);}//VW_ERP_EVENT_SCHEDULE 정보에 없다 대표님에게 요청//국가/도시let goCity;if(subObj.typeId==5){goCity = $("#hiddenSchedule_time").children().clone();goCity.addClass("location");goCity.find(".tit").html(subObj.etc1Desc+"/"+subObj.etc2Desc);let description = changeEnterToBr(subObj.description);goCity.find(".txt").html(description);goCity.attr("typeId",subObj.typeId);tabEl.find(".item-plan-info.schedule").find(".day"+dayObj).append(goCity);}//선택관광let choiceTourDetailif(subObj.typeId==8){choiceTourDetail = $("#hiddenSchedule_tour_img_1").children().clone();choiceTourDetail.attr("typeId",subObj.typeId);//타이틀let title = subObj.nameKo?subObj.nameKo:"";choiceTourDetail.find(".info-header>.tit>strong").html(title);//약식설명let descriptionShort = subObj.descriptionShort?subObj.descriptionShort:"";choiceTourDetail.find(".info-header>.txt").html(descriptionShort);//선택관광 라벨choiceTourDetail.find(".info-header>.tit>.label-state.in.select").css("display","");//특별포함 라벨let confirmed = subObj.confirmed;if(confirmed=="1"){choiceTourDetail.find(".info-header>.tit>.label-state.special").css("display","");}else{choiceTourDetail.find(".info-header>.tit>.label-state.special").css("display","none");}//이미지if(subObj.img){let img = subObj.img.split("|");$.each(img,function(idx,obj){if(idx == 0){$(choiceTourDetail.find(".photo").get(idx)).css("background-image","url('"+obj+"')");}else{return false;}});}else{choiceTourDetail.find(".photo").css("background-image","url('../../resources/images/noimage.png')");}//요금let adultPrice = subObj.adultPrice ? subObj.adultPrice : "0";let childPrice = subObj.childPrice ? subObj.childPrice : "0";let infantPrice = subObj.infantPrice ? subObj.infantPrice : "0";let currency = subObj.currency ? subObj.currency : "";choiceTourDetail.find("dd[id='_tourPay']").html("성인 : "+comma(adultPrice)+currency+" / "+" 아동 : "+comma(childPrice)+currency+" / 유아 : "+comma(infantPrice)+currency);//소요시간let timeRequired = subObj.timeRequired ? subObj.timeRequired : "";choiceTourDetail.find("dd[id='_tourTime']").html(timeRequired);//대체일정let otherSchedule = subObj.otherSchedule ? subObj.otherSchedule : "";choiceTourDetail.find("dd[id='_tourDay']").html(otherSchedule);buttonSetAtt(choiceTourDetail,subObj);tabEl.find(".item-plan-info.schedule").find(".day"+dayObj).append(choiceTourDetail);}//직접입력 : 7 이미지존재유무에 따라 보여지는 형식이 달라짐let directInput;if(subObj.typeId==7){let img = subObj.img;let etc1 = subObj.etc1 ? subObj.etc1: "";let description = subObj.description ? changeEnterToBr(subObj.description) : "";//이미지 존재 시if(img){description = description.length > constDescLen ? description.substr(0,constDescLen)+"..." : description;directInput = $("#hiddenSchedule_tour_img_3").children().clone();directInput.find(".txt").html(subObj.etc1);directInput.find(".areaShotDesc").html(subObj.descriptionShort);directInput.find(".list").html(description);if(subObj.img){let img = subObj.img.split("|");$.each(img,function(idx,obj){if(idx <= 2){$(directInput.find(".photo").get(idx)).css("background-image","url('"+obj+"')");}else{return false;}});}else{directInput.find(".photo").css("display","none");}buttonSetAtt(directInput,subObj);}//이미지 존재 하지 않을경우else{directInput = $("#hiddenSchedule_time").children().clone();directInput.find(".tit").html(etc1);directInput.find(".txt").html(description);directInput.attr("typeId",subObj.typeId);}tabEl.find(".item-plan-info.schedule").find(".day"+dayObj).append(directInput);}//골프장 : 9 / 관광지 : 4 / 식사 : 3let tour_imgType;if(subObj.typeId==9 || subObj.typeId==4 || subObj.typeId==3){let description = subObj.description ? changeEnterToBr(subObj.description) : "";description = description.length > constDescLen ? description.substr(0,constDescLen)+"..." : description;tour_imgType = $("#hiddenSchedule_tour_img_3").children().clone();tour_imgType.find(".tit strong").html(subObj.nameKo);tour_imgType.find(".txt").html(subObj.descriptionShort);//tour_imgType.find(".areaShotDesc").html(subObj.descriptionShort);tour_imgType.find(".list").html(description);if(subObj.img){let img = subObj.img.split("|");$.each(img,function(idx,obj){if(idx <= 2){$(tour_imgType.find(".photo").get(idx)).css("background-image","url('"+obj+"')");}else{return false;}});}else{tour_imgType.find(".photo").css("display","none");}buttonSetAtt(tour_imgType,subObj);tabEl.find(".item-plan-info.schedule").find(".day"+dayObj).append(tour_imgType);}});//호텔let hotelData = detailSchedule.filter(function(obj){return obj.typeId==2});if(hotelData.length > 0){//호텔let hotelDetail = $("#hiddenSchedule_hotel").clone();let confirmHotel = hotelData.filter(function(obj){return obj.confirmed == 1});if(confirmHotel.length > 0){let hotelDetail_info = $("#hiddenSchedule_hotel_info").children().clone();hotelDetail_info.find(".notConfirmed").css("display","none");hotelDetail_info.find(".confirmed").css("display","");if(hotelData.confirmed==1){hotelDetail_info.find(".label-state.in").hide();}hotelDetail_info.find("strong").html(confirmHotel[0].nameKo);hotelDetail_info.find("strong").on("click",function(e){hotelDetail_info.find("button").trigger("click");});hotelDetail_info.filter(function(htIdx,htObj){return htObj.className.indexOf("content")>=0}).html(confirmHotel[0].contentRemark);buttonSetAtt(hotelDetail_info,confirmHotel[0]);hotelDetail.find(".plan-box.hotel>.box-header").append(hotelDetail_info);}else{$.each(hotelData,function(htIdx , htObj){let hotelDetail_info = $("#hiddenSchedule_hotel_info").children().clone();hotelDetail_info.find(".notConfirmed").css("display","");hotelDetail_info.find(".confirmed").css("display","none");hotelDetail_info.find("strong").html(htObj.nameKo);hotelDetail_info.find("strong").on("click",function(e){hotelDetail_info.find("button").trigger("click");});hotelDetail_info.filter(function(htIdx,htObj){return htObj.className.indexOf("content")>=0}).html(htObj.contentRemark);buttonSetAtt(hotelDetail_info,htObj);hotelDetail.find(".plan-box.hotel").addClass("toggle");hotelDetail.find(".plan-box.hotel>.box-header").addClass("show-toggle");hotelDetail.find(".plan-box.hotel>.box-header").append(hotelDetail_info);});}hotelDetail.find(".plan-box.hotel>.box-header").append($("#hiddenSchedule_hotel_last").children().clone());//호텔이 다건 일 경우 css 수정if(hotelData.length > 1){hotelDetail.find(".plan-box.hotel>.box-header>.btn-arrow2").css("display","");hotelDetail.find(".plan-box.hotel>.box-header>.btn-arrow2").addClass("up");}else{hotelDetail.find(".plan-box.hotel>.box-header>.btn-arrow2").css("display","none");}$(hotelDetail.children().get(0)).attr("typeId",hotelData[0].typeId);tabEl.find(".item-plan-info.schedule").find(".day"+dayObj).append(hotelDetail.children());}//조식 중식 석식let scheduleMeal = _tabObj["goodsEvtTab_2"]["scheduleMeal"];if(scheduleMeal && scheduleMeal.length > 0){let mealDetail = $("#hiddenSchedule_meal").clone();let currentMeal = scheduleMeal.filter(function(obj){return obj.day==dayObj});let breakfast = currentMeal.length > 0 ? currentMeal[0].breakfast ? currentMeal[0].breakfast : "없음" : "없음";let lunch = currentMeal.length > 0 ? currentMeal[0].lunch ? currentMeal[0].lunch : "없음" : "없음";let dinner = currentMeal.length > 0 ? currentMeal[0].dinner ? currentMeal[0].dinner : "없음" : "없음";mealDetail.find(".plan-box.meal").find("[id='breakfast']").html("[조식]"+breakfast);mealDetail.find(".plan-box.meal").find("[id='lunch']").html("[중식]"+lunch);mealDetail.find(".plan-box.meal").find("[id='dinner']").html("[석식]"+dinner);tabEl.find(".item-plan-info.schedule").find(".day"+dayObj).append(mealDetail.children());}scheduleTag.find(".time-info:eq(0)").addClass("start");scheduleTag.find(".time-info:eq(0)").addClass("plan-time");scheduleTag.find(".time-info:last").addClass("end");});}//END 탭2--------------------------------------------------------------------------------------------------------//START 탭3--------------------------------------------------------------------------------------------------------else if("goodsEvtTab_3" == tabId){let reservation = _tabObj["goodsEvtTab_3"]["reservation"];if(reservation && reservation.type==5){let typeTag = tabEl.find(".tb-detail").children();if(reservation){$.each(Object.keys(reservation),function(idx,key){let typeTagDiv = typeTag.filter(function(idx,obj){return obj.className.indexOf(key) > 0});if(typeTagDiv.length > 0){let data = reservation[key];if(data){data = data ? changeEnterToBr(data): reservationMsg;typeTagDiv.find(".text-area").html(data);}}});}else{typeTag.find(".text-area").html(reservationMsg);}}}//END 탭3--------------------------------------------------------------------------------------------------------//START 탭4--------------------------------------------------------------------------------------------------------else if("goodsEvtTab_4" == tabId){}//END 탭4--------------------------------------------------------------------------------------------------------//START 탭5--------------------------------------------------------------------------------------------------------else if("goodsEvtTab_5" == tabId){let term = _tabObj["goodsEvtTab_5"];//let description = subObj.description ? subObj.description.replace(/(?:\r\n|\r|\n)/g, '
') : "";let termDesc = _tabObj["goodsEvtTab_5"] ? changeEnterToBr(_tabObj["goodsEvtTab_5"].termDesc) : "약관정보가 존재하지 않습니다.";let termType = _tabObj["goodsEvtTab_5"] ? _tabObj["goodsEvtTab_5"].termType : "";let cancelTerm = _tabObj["goodsEvtTab_5"]?_tabObj["goodsEvtTab_5"].cancelTerm?changeEnterToBr(_tabObj["goodsEvtTab_5"].cancelTerm): "": "";if(termType==2){$(".cont-box.term .term1").css("display","");}else if(termType==1){$(".cont-box.term .term2").css("display","");}else{if(term && _tabObj["goodsEvtTab_5"].hasOwnProperty("termDesc")){let lawCn = _tabObj["goodsEvtTab_5"].termDesc ? changeEnterToBr(_tabObj["goodsEvtTab_5"].termDesc) : "약관정보가 존재하지 않습니다.";lawCn = ConvertSystemSourcetoHtml(lawCn);lawCn = new DOMParser().parseFromString(lawCn, 'text/html');lawCn = $(lawCn).children().html().replaceAll(""," ");termDesc = changeEnterToBr(lawCn); $(".cont-box.term .term3").css("display","");}}$(".cont-box.term .termDesc").html(termDesc);}//END 탭5--------------------------------------------------------------------------------------------------------//START 탭6--------------------------------------------------------------------------------------------------------else if("goodsEvtTab_6" == tabId){ // 해외안전정보 데이터 없을때 - 숨기기 let overseaSaftyInfo = _tabObj["goodsEvtTab_6"]["response"]; if(!overseaSaftyInfo || overseaSaftyInfo.body.totalCount == 0){ // 데이터 해당없음 // 안보여주기 display none $(".overseas-safty").hide(); } else { let overseaSaftyInfoList = overseaSaftyInfo.body.items.item; let overseaSaftyInfoLength = overseaSaftyInfo.body.items.item.length; let overseasTab = $(".overseas-safty").find(".tab-default"); let overseasContainer = $(".overseas-safty").find(".tab-container"); if(overseaSaftyInfoList && overseaSaftyInfoLength == undefined){ // a태그 생성 let aTag = document.createElement('a'); aTag.setAttribute("href", "#" + overseaSaftyInfoList.isoCode); aTag.text = overseaSaftyInfoList.countryName; aTag.setAttribute("class", "selected"); overseasTab.append(aTag); overseasTab.css("justify-content","left"); // div tab-cont 생성 let cTag = document.createElement('div'); cTag.setAttribute("class", "tab-cont active"); cTag.setAttribute("id", overseaSaftyInfoList.isoCode); overseasContainer.append(cTag); // 테이블 생성 let attention = overseaSaftyInfoList.attention || overseaSaftyInfoList.attentionPartial || '여행유의'; let control = overseaSaftyInfoList.control || overseaSaftyInfoList.controlPartial || '여행자제'; let limita = overseaSaftyInfoList.limita || overseaSaftyInfoList.limitaPartial || '철수권고'; let countryName = overseaSaftyInfoList.countryName; let attentionNote = overseaSaftyInfoList.attentionNote || '-'; let controlNote = overseaSaftyInfoList.controlNote || '-'; let limitaNote = overseaSaftyInfoList.limitaNote || '-'; let saftyTableHtml = `

여행경보 단계 여행지(국가 또는 지역)
남색 경보${attention} ${attentionNote}
황색 경보${control} ${controlNote}
적색 경보${limita} ${limitaNote}

`; // id 같은 컨테이너 안에 넣기 overseasContainer.find("#" + overseaSaftyInfoList.isoCode).append(saftyTableHtml); } else { overseaSaftyInfoList.map(function (o, i) { // a태그 생성 let aTag = document.createElement('a'); aTag.setAttribute("href", "#" + o.isoCode); aTag.text = o.countryName; if (i == 0) aTag.setAttribute("class", "selected"); overseasTab.append(aTag); // div tab-cont 생성 let cTag = document.createElement('div'); if (i == 0) cTag.setAttribute("class", "tab-cont active"); else cTag.setAttribute("class", "tab-cont"); cTag.setAttribute("id", o.isoCode); overseasContainer.append(cTag); // 테이블 생성 let attention = o.attention || o.attentionPartial || '여행유의'; let control = o.control || o.controlPartial || '여행자제'; let limita = o.limita || o.limitaPartial || '철수권고'; let countryName = o.countryName; let attentionNote = o.attentionNote || '-'; let controlNote = o.controlNote || '-'; let limitaNote = o.limitaNote || '-'; let saftyTableHtml = `

여행경보 단계 여행지(국가 또는 지역)
남색 경보${attention} ${attentionNote}
황색 경보${control} ${controlNote}
적색 경보${limita} ${limitaNote}

`; // id 같은 컨테이너 안에 넣기 overseasContainer.find("#" + o.isoCode).append(saftyTableHtml); }); overseasTab.css("justify-content","left"); } }}//END 탭6--------------------------------------------------------------------------------------------------------//START 탭7--------------------------------------------------------------------------------------------------------else if("goodsEvtTab_7" == tabId){if(tabEl.find(".etcTour").children().length>0){return false;}else{//선택관광let etcTour = _tabObj["goodsEvtTab_7"]["etcTour"];if(etcTour && etcTour.length > 0){$(".item-box.column.etcTourMain").css("display","");let choiceTourDetail;$.each(etcTour,function(subIdx , subObj){choiceTourDetail = $("#hiddenSchedule_tour_img_1").find(".time-info.box").children().clone();choiceTourDetail.attr("typeId",subObj.typeId);//타이틀let title = subObj.nameKo?subObj.nameKo:"";choiceTourDetail.find(".info-header>.tit>strong").html(title);//약식설명let descriptionShort = subObj.descriptionShort?subObj.descriptionShort:"";choiceTourDetail.find(".info-header>.txt").html(descriptionShort);//선택관광 라벨let scheduleYn = subObj.scheduleYn;choiceTourDetail.find(".info-header>.tit>.label-state.in.select").css("display","");/*if(scheduleYn=="Y"){choiceTourDetail.find(".info-header>.tit>.label-state.in.select").css("display","");}else{choiceTourDetail.find(".info-header>.tit>.label-state.in.select").css("display","none");}*///특별포함 라벨let confirmed = subObj.confirmed;if(confirmed=="1"){choiceTourDetail.find(".info-header>.tit>.label-state.special").css("display","");}else{choiceTourDetail.find(".info-header>.tit>.label-state.special").css("display","none");}//이미지let img = subObj.img ? subObj.img.split("|") : [];if(subObj.img){$.each(img,function(idx,obj){if(idx == 0){$(choiceTourDetail.find(".photo").get(idx)).css("background-image","url('"+obj+"')");}else{return false;}});}else{choiceTourDetail.find(".photo").css("background-image","url('../../resources/images/noimage.png')");}//요금let adultPrice = subObj.adultPrice ? subObj.adultPrice : "0";let childPrice = subObj.childPrice ? subObj.childPrice : "0";let infantPrice = subObj.infantPrice ? subObj.infantPrice : "0";let currency = subObj.currency ? subObj.currency : "";choiceTourDetail.find("dd[id='_tourPay']").html("성인 : "+comma(adultPrice)+currency+" / "+" 아동 : "+comma(childPrice)+currency+" / 유아 : "+comma(infantPrice)+currency);//소요시간let timeRequired = subObj.timeRequired ? subObj.timeRequired : "";choiceTourDetail.find("dd[id='_tourTime']").html(timeRequired);//대체일정let otherSchedule = subObj.otherSchedule ? subObj.otherSchedule : "";choiceTourDetail.find("dd[id='_tourDay']").html(otherSchedule);choiceTourDetail.find("button").attr("typeDay",subObj.day);choiceTourDetail.find("button").attr("typeId",subObj.typeId);choiceTourDetail.find("button").attr("etcTourId",subObj.tourId);tabEl.find(".etcTour").append(choiceTourDetail);});}else{$(".item-box.column.etcTourMain").css("display","none");}//쇼핑정보let type8_data = _tabObj["goodsEvtTab_7"]["evtType"];if(type8_data.length > 0){$(".shoppingMain").css("display","");let typeTag = tabEl.find(".shopping-plan");let etcData = type8_data.length > 0 ? type8_data[0]["etc"] : "";if(etcData && etcData.hasOwnProperty("shopping_list")){let etcHdStr = "총"+etcData["shopping_list"].length+" 건 일정이 있습니다.";typeTag.find(".txt-info").html(etcHdStr);typeTag.find(".shopping-body").children().remove();$.each(etcData["shopping_list"],function(idx,obj){typeTag.find(".shopping-body").append(`

${idx+1}

${obj.item}

${obj.location}

${obj.time}

${obj.cancel}

`)});}else{}}else{$(".shoppingMain").css("display","none");}}//여행자보험let insurance = _tabObj["goodsEvtTab_7"]["insurance"] ? Object.values(_tabObj["goodsEvtTab_7"]["insurance"])[0] : '';if(insurance != ''){ // 여행자 보험 데이터가 있을때 tabEl.find(".insurance .dtl-btn").show(); tabEl.find(".insurance .dtl-view").css("display","flex"); tabEl.find(".insurance .dtl-view").css("justify-content","flex-start"); tabEl.find(".insurance .dtl-view .cont").css("margin-right","auto"); tabEl.find(".insurance .dtl-view .cont").text("보장내역은 자세히보기를 통하여 확인하실 수 있습니다."); }else { // 여행자 보험 데이터 없을때 tabEl.find(".insurance .dtl-btn").hide(); tabEl.find(".insurance .dtl-view .cont").text("보험관련 내용은 고객센터에 문의 바랍니다."); }let resultHTML = ConvertSystemSourcetoHtml(insurance);$('#popup-df-insurance .insurance-area').html(resultHTML);}//END 탭7--------------------------------------------------------------------------------------------------------//START 탭8-------------------------------------------------------------------------------------------------------- else if("goodsEvtTab_8" === tabId){ const feedbacks = _tabObj["goodsEvtTab_8"]; // 후기 const review = feedbacks.review; displayFeedbacks(feedbacks.review, feedbackType.REVIEW); displayFeedbacks(feedbacks.evaluation, feedbackType.EVALUATION); displayFeedbacks(feedbacks.compliment, feedbackType.COMPLIMENT); }//END 탭8--------------------------------------------------------------------------------------------------------}}function fnCkeckTabSelectYN(tabId){ let check = false; let dataTabArray = []; tabId.map((v,i)=>{ if(_tabArray.findIndex(o=>o==v) == -1 )dataTabArray.push(v); }); if(dataTabArray.length > 0) check = true; return check; } /* 쿠폰 script */ function downloadCoupon(couponId) { const url = '/coupon/' + couponId + '/download?tourCode=' + $("#tourCode").val(); $.ajax({ url: url, type: 'POST', success: (response) => { const statusCode = response.statusCode; const msg = response.responseMsg; const data = response.data; if(statusCode !== 200){ if(statusCode === 401) fnloginChk(); else onShowToast(msg); } else onShowToast(msg); } }) } function fnloginChk(){ // 세션체크 if (_Utils.fnIsEmpty('')) { // 로그인 안되어있을때 _Popup.openPopupAsync({ isCancel: true, message: '로그인이 필요한 서비스입니다.\n로그인 페이지로 이동하시겠습니까?' }, function () { onChangeLoding(); location.href = '/member/login'; }); return false; } else if( '' == '') { // 회원이 아닐 때 onShowToast('회원가입한 회원만 쿠폰 사용 가능합니다.'); return false; } else { // 로그인 상태 && 회원일때 // 중복체크 return true; } } // 안내사항 클릭시 예약 안내사항, 약관 정보, 해외안전정보 가져오기 function getEtcInfos(){ let tabs = ['goodsEvtTab_3','goodsEvtTab_5','goodsEvtTab_6'] let dataTabArray = []; tabs.map((v,i)=>{ if(_tabArray.findIndex(o => o === v) === -1 )dataTabArray.push(v); }); return dataTabArray; } // 후기 목록 그리기 function makeReviewList(list) { let listText = ``; list.map(obj => { let reprsntImgPath = obj.reprsntImgPath; if (reprsntImgPath != null && reprsntImgPath.indexOf('imagecontentfile') > -1) { reprsntImgPath = 'https://img-kyowontour.kyowontour.com/erp' + reprsntImgPath; } listText += `

`; if (obj.bestYn === 'Y') listText += ``; else listText += ``; listText += ` [${obj.countryKo}] ${obj.title} ${obj.content} ${obj.mberId} `; }); return listText; } // 상품평 목록 그리기 function makeEvaluationList(list){ let listText = ``; list.map(obj => { let ratingYn = obj.ratingYn === 'N'?'style="display:none;"':''; let tempId = obj.id; listText += ` 가이드/인솔자 식사 숙소 일정 ${obj.content} `; }); return listText; } // 칭찬합시다 목록 그리기 function makeComplimentList(list){ let listText = ``; list.map(obj => { listText += ` ${obj.content} `; if(obj.answerOpenYn === 'Y'){ listText += ` ${obj.answerName} 답장 ${obj.answerContent} `; } listText += ` `; }); return listText; } // 리뷰 한 건 상세 조회 function getReviewOne(id){ $.ajax({ url:`/goods/feedback-product-review/` + id, type:'GET', contentType: "application/json", success:(response)=>{ if(response.statusCode === 200){ setReviewDetail(response.data); } } }); } function setReviewDetail(data){ let reviewDetail = data.reviewDetail; let answers = data.answers; let reviewModalObject = $("#detailview-travelreview"); // best 여부 if(reviewDetail.bestYn === 'Y'){ $(reviewModalObject).find(".tit").addClass("best"); } else{ $(reviewModalObject).find(".tit").removeClass("best"); } $(reviewModalObject).find(".tit").text("["+reviewDetail.countryKo+"]"+reviewDetail.title); $(reviewModalObject).find(".user-id").text(reviewDetail.mberId); $(reviewModalObject).find(".review-cont").html(decodeHtml(reviewDetail.content)); if(answers.length > 0) { answerText = ``; answers.map(obj =>{ answerText += ` ${obj.registerNm} 답장 ${obj.answerCont} `; }); $(reviewModalObject).find(".review-reply").html(answerText); $(reviewModalObject).find(".review-reply").show(); } else { $(reviewModalObject).find(".review-reply").hide(); } $(reviewModalObject).modal(); } function decodeHtml(html) { let decodeValue; let txt = document.createElement("textarea"); txt.innerHTML = html; decodeValue = txt.value; txt.remove(); return decodeValue;} // 페이징 기본 변수 설정 function createPageVariable(obj){ let totalCount = obj.totalCount; // 총 데이터 수 let pagePerSize = _pagePerSize; // 페이지당 데이터 수 let pageGroupRange = _pageGroupRange; // 페이지 그룹 크기 // 총 페이지 수 계산 let pageCount = Math.ceil(totalCount / pagePerSize); // 페이지 그룹 수 계산 let pageGroupCount = Math.ceil(pageCount / pageGroupRange); // 현재 페이지와 그룹 계산 let currentPage = obj.page || 1; // 현재 페이지 let currentGroup = Math.ceil(currentPage / pageGroupRange); // 현재 페이지 그룹 // 페이지 그룹의 시작과 끝 페이지 계산 let startPage = (currentGroup - 1) * pageGroupRange + 1; let endPage = Math.min(startPage + pageGroupRange - 1, pageCount); // 페이지네이션 출력 return { currentPage: currentPage, currentGroup: currentGroup, startPage: startPage, endPage: endPage, totalCount: totalCount, pageCount: pageCount, pageGroupCount: pageGroupCount }; } // 페이지네이션 생성 function createPagination(obj, type){ const pageObj = createPageVariable(obj); let pageText = ``; if(pageObj.currentGroup === 1) pageText += ` Prev`; else pageText += ` Prev`; for(let i = pageObj.startPage; i <= pageObj.endPage; i++){ if(i === pageObj.currentPage){ pageText += ` `+ i + ``; }else { pageText += ` `+ i + ``; } } if(pageObj.currentGroup === pageObj.pageGroupCount) pageText += `Next`; else pageText += `Next`; pageText += ``; return pageText; } // 이전 페이지 function clickPrevPageGroup(prevPageGroup, type){ let currentPage = prevPageGroup * _pageGroupRange; getFeedbackByPage(currentPage,type); } // 다음 페이지 function clickNextPageGroup(nextPageGroup, type){ let currentPage = (nextPageGroup - 1) * _pageGroupRange + 1; getFeedbackByPage(currentPage,type); } // 페이지별 데이터 ajax 호출 function getFeedbackByPage(currentPage, type){ let data = { page : currentPage, pageSize : _pagePerSize, masterCode : $("#masterCode").val() } let onlyMasterProductFlag = 0; switch (type) { case feedbackType.REVIEW : onlyMasterProductFlag = $("#chk-view-onlythis-01").is(":checked")?1:0; break; case feedbackType.EVALUATION : onlyMasterProductFlag = $("#chk-view-onlythis-02").is(":checked")?1:0; break; case feedbackType.COMPLIMENT : onlyMasterProductFlag = $("#chk-view-onlythis-03").is(":checked")?1:0; break; } data.onlyMasterProductFlag = onlyMasterProductFlag; $.ajax({ url:`/goods/feedback-product/` + type, type:'POST', contentType: "application/json", data: JSON.stringify(data), success:(response)=>{ if(response.statusCode === 200){ displayFeedbacks(response.data, type); } } }); } function displayFeedbacks(data, type){ let list_review = $("#panel1-1 .list-review"); let paging_wrap = $("#panel1-1 .paging-wrap"); let noData_page = $("#panel1-1 .noData-page"); let go_review_button = $("#panel1-1 .go-review-button"); let review_total_count = $("a[href=#panel1-1] span"); switch (type) { case feedbackType.REVIEW : if(data === undefined || data.totalCount === 0){ list_review.hide(); paging_wrap.hide(); go_review_button.css('visibility', 'hidden'); noData_page.show(); review_total_count.text("(0)") }else { noData_page.hide(); go_review_button.css('visibility', 'visible'); review_total_count.text("("+ data.totalCount +")"); list_review.html( makeReviewList(data.resultList)); paging_wrap.html(createPagination(data, feedbackType.REVIEW)); list_review.show(); paging_wrap.show(); } break; case feedbackType.EVALUATION : list_review = $("#panel1-2 .list-review"); paging_wrap = $("#panel1-2 .paging-wrap"); noData_page = $("#panel1-2 .noData-page"); go_review_button = $("#panel1-2 .go-review-button"); review_total_count = $("a[href=#panel1-2] span"); if(data === undefined || data.totalCount === 0){ list_review.hide(); paging_wrap.hide() go_review_button.css('visibility', 'hidden'); noData_page.show(); review_total_count.text("(0)") }else { list_review.show(); paging_wrap.show() go_review_button.css('visibility', 'visible'); noData_page.hide(); review_total_count.text("("+data.totalCount+")"); $("#panel1-2 .list-review .tb-detail").html( makeEvaluationList(data.resultList)); paging_wrap.html(createPagination(data, feedbackType.EVALUATION)); } break; case feedbackType.COMPLIMENT : list_review = $("#panel1-3 .list-review"); paging_wrap = $("#panel1-3 .paging-wrap"); noData_page = $("#panel1-3 .noData-page"); go_review_button = $("#panel1-3 .go-review-button"); review_total_count = $("a[href=#panel1-3] span"); if(data === undefined || data.totalCount === 0){ list_review.hide(); paging_wrap.hide() go_review_button.css('visibility', 'hidden'); noData_page.show(); review_total_count.text("(0)") }else { list_review.show(); paging_wrap.show() go_review_button.css('visibility', 'visible'); noData_page.hide(); review_total_count.text("("+data.totalCount+")"); $("#panel1-3 .list-review .tb-detail").html( makeComplimentList(data.resultList)); paging_wrap.html(createPagination(data, feedbackType.COMPLIMENT)); } break; } } function moveWritePage(type){ let url; switch (type){ case feedbackType.REVIEW : url = '/mypage/actDtls/reviewWrite'; break; case feedbackType.EVALUATION : url = '/mypage/product-evaluation/items/write'; break; case feedbackType.COMPLIMENT : url = '/mypage/exrciseWrite'; break; } const tourCode= 'MWP304241129YP01'; sessionStorage.setItem('tourCode', tourCode); if(fn_commonLoginCheckRedirect({requestUrl:url})){ location.href = url; } } function moveInquiryWrite(tourCode) { if (tourCode !== undefined) { let url = '/mypage/cstmrSport/inqryDtls/inqryDtlsWrite?tourCode=' + tourCode; sessionStorage.setItem('tourCode', tourCode) if (fn_commonLoginCheckRedirect({requestUrl: url})) { location.href = url; } } } function loadImages(imageUrls) { return Promise.all(imageUrls.map(url => { return new Promise((resolve) => { const img = new Image(); img.src = url; img.onload = resolve; // 이미지 로드가 완료되면 resolve }); })); }해외여행여행이지+자유여행항공허니문골프지방출발EASY LIVE국내여행기업/단체기획전/이벤트홈쇼핑할인/혜택로그인회원가입예약확인/결제브랜드 소개고객센터로그인알림해외여행해외여행열고/접기유럽/아프리카서유럽프랑스스위스이탈리아영국/아이슬란드동유럽동유럽/발칸발칸북유럽/발트튀르키예스페인/포르투갈/모로코그리스/이집트두바이/요르단/중동코카서스/아프리카베네룩스출발확정연휴출발열고/접기동남아방콕/파타야치앙마이푸켓싱가포르코타키나발루발리다낭/호이안나트랑/달랏/무이네세부보라카이보홀바탐쿠알라룸푸르푸꾸옥하노이라오스/미얀마호치민캄보디아(씨엠립)연휴출발태국(노팁/노옵션/노쇼핑)열고/접기중국/몽골/중앙아시아장가계북경/천진백두산청도/연태/위해대련/상해하이난계림/망산/무이산서안/정주중경(크루즈)/구채구곤명/여강/하문태항산/황산노팁/노옵션/노쇼핑몽골연휴출발중앙아시아열고/접기일본북해도큐슈오사카도쿄오키나와/미야코지마마츠야마/다카마츠요나고/도야마/고마츠아오모리/야마가타선박/대마도연휴출발열고/접기호주/뉴질랜드시드니시드니+골드코스트시드니+멜버른뉴질랜드호주+뉴질랜드연휴출발열고/접기미주/캐나다/중남미미서부미동부미서부/미동부/캐나다/하와이캐나다중남미시즌상품연휴출발현지투어열고/접기대만/홍콩/마카오대만 타이페이대만 타이중대만 가오슝대만 온천여행홍콩마카오홍콩+마카오홍콩연계(심천/주하이)노팁/노옵션/노쇼핑연휴출발열고/접기괌/사이판/하와이괌 P.I.C괌 츠바키/두짓타니/하얏트괌 닛코/힐튼/리가로얄괌 롯데/웨스틴/두짓비치괌 리조나레/크라운/홀리데이사이판 P.I.C사이판 켄싱턴/코랄오션사이판 월드리조트/아쿠아사이판 하얏트/크라운/그랜드브리오하와이연휴출발열고/접기인도/네팔/스리랑카인도네팔스리랑카열고/접기교원투어 X 교원라이프 전용관투어플랜 (최대 195만원 할인)교원라이프 전환 상품여행이지+여행이지+열고/접기카테고리별이지+여정+미식+체험+스테이+삼삼오오에듀+열고/접기지역별유럽/아프리카동남아중국/몽골일본호주/뉴질랜드미주/캐나다/중남미대만/홍콩/마카오괌/사이판/하와이골프자유여행자유여행열고/접기유럽프랑스스위스이탈리아영국스페인/포르투칼동유럽/발칸열고/접기일본도쿄오사카큐슈마츠야마/다카마츠삿포로오키나와/미야코지마아오모리/야마가타열고/접기대만/홍콩/마카오타이페이타이페이(청주출발)타이중가오슝홍콩마카오열고/접기태국방콕/파타야푸켓치앙마이열고/접기베트남나트랑나트랑(청주출발)나트랑(대구/부산출발)다낭푸꾸옥열고/접기중국열고/접기싱가포르싱가포르싱가포르(부산출발)열고/접기필리핀보홀보라카이세부세부(부산출발)열고/접기말레이시아코타키나발루열고/접기발리열고/접기괌/사이판괌괌(부산출발)사이판열고/접기몰디브스피드보트수상 경비행기국내선열고/접기제주도제주시애월/한림서귀포/중문조천/성산항공항공열고/접기항공 바로가기 허니문허니문열고/접기유럽프랑스스위스이탈리아스페인/포르투칼동유럽/발칸지중해/그리스열고/접기동남아발리코사무이푸켓/카오락나트랑/푸꾸옥열고/접기발리발리우붓부산출발커플&가족열고/접기몰디브스피드보트수상비행기국내선열고/접기하와이/칸쿤하와이(오아후)하와이(이웃섬)칸쿤열고/접기이색허니문캐나다 오로라두바이/아부다비호주 크루즈열고/접기특수지역피지/타히티세이셸/모리셔스골프골프열고/접기인천 출발설 연휴 BEST6중국사이판/하와이일본방콕/파타야치앙마이다낭/나트랑/푸꾸옥말레이시아/라오스/발리/바탐클락대만튀르키예열고/접기지방 출발사이판다낭/나트랑방콕/파타야/치앙마이클락말레이시아지방출발지방출발열고/접기동남아(부산출발)방콕/파타야치앙마이라오스다낭/호이안나트랑/달랏푸꾸옥하노이/캄보디아세부/보라카이보홀싱가포르코타키나발루발리대만마카오/홍콩캄보디아열고/접기중국(부산출발)상해/북경장가계청도황산백두산하이난(싼야)열고/접기일본(부산출발)큐슈오사카오키나와마츠야마도쿄/나고야북해도선박(큐슈)대마도열고/접기괌/사이판(부산출발)괌 PIC괌 힐튼/츠바키/닛코/리가로얄괌 하얏트/리조나레사이판열고/접기대구출발방콕다낭나트랑/달랏큐슈오사카북해도대만장가계열고/접기청주출발다낭나트랑/달랏대만상해장가계백두산몽골푸꾸옥열고/접기국내여행(부산출발)EASY LIVEEASY LIVE열고/접기EASY LIVE특가가 시작되는 1시간국내여행국내여행열고/접기제주 버스패키지2박 3일 패키지1박 2일/ 3박 4일열고/접기제주 자유여행제주시애월/한림서귀포/중문조천/성산열고/접기국내 실시간 렌터카기업/단체기업/단체열고/접기기업/단체 문의 열고/접기대리점 개설 문의 여행이지 포인트 적립 안내여행자에게 상품가의 1%가 적립됩니다. (유류세 및 제세공과금 제외)CJ ONE 포인트와 0.5% 분할 적립이 가능합니다. (단, 연결회원에 한함)여행 도착일 기준 7일 이내에 홈페이지에 가입한 회원에게만 자동 적립됩니다.회원가입이 되어있지 않은 14세 미만 여행자는 포인트 합산 요청을 통한 적립이 가능합니다.(만 2세 미만 유아는 포인트 적립 대상에서 제외)단, 항공, 호텔, 단품 이용 고객은 적립에서 제외됩니다.상품 상세 노쇼핑노팁노옵션슬림쇼핑SAFETY연인과 함께천혜 자연[실시간항공] 미서부에게 사랑받자💛3대도시+5대캐년+요세미티 국립공원 10일_HIT예약현황예약0명(남은 좌석10석/ 최소 출발인원 6명)여행후기36구분상품가격성인(만 12세 이상)2,849,000원유류할증료 100,200 원 포함제세공과금 포함아동(만 12세 미만)2012.11.30 ~ 2022.11.292,554,100원유류할증료 100,200 원 포함제세공과금 포함유아(24개월 미만)2022.11.30 ~ 2024.11.29500,000원유류할증료 포함제세공과금 포함- 유류할증료, 제세공과금은 유가와 환율에 따라 변동될 수 있습니다.이용교통에어프레미아한국출발2024년 11월 29일 (금) 12:50YP101현지출발2024년 12월 07일 (토) 10:50YP102현지도착2024년 11월 29일 (금) 08:20YP101한국도착2024년 12월 08일 (일) 15:45YP102 포함내역불포함 사항인솔자/가이드 정보인솔자가이드자유일정여행일정수하물 허용량 안내(이코노미 클래스 성인, 인천-해당 항공사 허브공항 -2016년 6월 기준-)위탁 수하물 허용량추가 시 요금(무게기준)기내 반입 허용 사이즈초과요금 : 대부분의 항공사에서 지역별, 미주구간, 미주 외 지역 등으로 나누어 각각 다른 규정을 두고 있어 개별 확인 필수위탁 수하물 : 특정 구간, 미주구간, 미주 외 구간 등 으로 나누어 무게별 적용, 갯수별 적용으로 가격이 상이하므로 개별 확인 필수단체수속의 경우 수하물 허용량은 상이할 수 있으므로 상품담당자 또는 개별 확인 필수여행일정은 계약체결시 예상하지 못한 부득이한 사정 등이 발생하는 경우 여행사의 사전 동의를 거쳐 변경될 수 있음을 양지하시기바랍니다.미팅장소위치보기선택관광쇼핑정보해당 쇼핑센터는 일정 진행상황에 따라 선택적으로 방문하게 될 수도 있습니다.쇼핑센터 방문시 구매를 하지 않더라도 별도의 불이익이 발생하지 않습니다.각 지역별 추가 유의사항은 기타 탭에 기재되어 있으니 참고 부탁드립니다.교환 및 환불시 발생하는 수수료 및 소요기간은 해당 쇼핑센터 자체규정에 따릅니다.[쇼핑 주의사항 및 교환/환불안내]구매하신 물품은 해외구매의 특성상 교환 및 환불이 쉽지 않으니 신중한 구매 부탁드립니다.교환/환불 접수기간 : 여행종료 후 1개월 이내교환/환불 가능물품 : 지정된 쇼핑장소에서 구매한 물품 (그 외 개인 구매 물품, 개봉된 상품 혹은 단순 고객 변심의 교환/환불 진행 불가)교환/환불 요청방법 : 여행상품명, 출발일, 인솔자명, 간단한 사유를 예약 담당자에게 유선 문의 후 직접 쇼핑센터로 반송교환/환불 필요서류 : ① 구매자 연락처 및 본인 통장사본 ② 원본 영수증 ③ 구매 물품교환/환불 배송비 : 고객 본인 부담 (영수증이 없을 경우 환불 불가)교환/환불 소요기간 : 상품 별 소요시간 상이, 담당자가 현지 확인 후 안내 가능교환/환불 수수료 : 카드결제의 경우 별도의 수수료가 발생할 수 있으며, 교환 및 환불에 소요되는 비용 (취소 수수료 발생, 환율차액, 배송비 등)이 발생될 수 있습니다.총 0 건 일정이 있습니다.No.쇼핑품목쇼핑장소쇼핑시간환불여부여행자보험정보 여행후기 상품평 칭찬합시다 지금 보고 있는 상품 리뷰만 보기 후기 남기기 해당 상품은 신규 출시 상품으로 등록된 후기가 없습니다. 고객님께서 첫번째 후기를 남겨주세요. 후기 남기기 지금 보고 있는 상품 리뷰만 보기 상품평 남기기 해당 상품은 신규 출시 상품으로 등록된 후기가 없습니다. 고객님께서 첫번째 상품평을 남겨주세요. 상품평 남기기 지금 보고 있는 상품 리뷰만 보기 칭찬 남기기 해당 상품은 신규 출시 상품으로 등록된 후기가 없습니다. 고객님께서 첫번째 칭찬글을 남겨주세요. 칭찬 남기기 예약안내 사항 약관정보 해외 안전정보 여행 전 안내사항 입금계좌안내 현지 비상 연락처 기타사항 해외안전정보 외교부는 해외에서 우리 국민에 대한 사건·사고 피해를 예방하고 우리 국민의 안전한 해외 거주·체류 및 방문을 도모하기 위해 2004년부터 ‘여행경보제도’(https://www.0404.go.kr)를 운영해 오고 있습니다.여행경보는 발령대상 국가(지역)의 위협수준에 따라 1~4단계로 구분되며, 상황에 따라서 상시적으로 변경이 되고 있기 때문에 출국 전 반드시 여행목적지(국가 또는 지역)의 여행경보를 확인 하시기 바랍니다. 해외안전정보확인 여행지 안전정보 여행경보단계는 여행유의/여행자체/철수권고/여행금지 등 4단계로 구분되며, 외교부 '해외안전여행' 사이트 (www.0404.go.kr)에서 상세정보를 확인 할 수 있습니다. 해외여행 안전수칙정보는 한국여행협회 (www.kata.or.kr)에서 확인할 수 있습니다. 궁금하신 사항을 문의해 주시면 친절하게 알려드리겠습니다.질문과 답변은 비공개로 운영됩니다. 문의하기 코드MWP304241129YP01일정8박10일일정 선택다른출발일 보기성인2,849,000원아동2012.11.30 ~ 2022.11.292,554,100원유아2022.11.30 ~ 2024.11.29500,000원최종 합계금액0원유류할증료 포함예상 포인트 적립금액0 담당자 정보담당자박민경전화번호대표번호 : 02-2124-5411직통번호 : 02-2124-5451부서명미주팀상담시간담당자에게 문의하세요.궁금하신 사항을 문의해 주시면친절하게 알려드리겠습니다.상품 문의하기미팅장소선택관광요금소요시간대체일정호텔주소연락처홈페이지부대시설객실시설항공편 변경다른 출발일 보기한국출발일한국도착일항공사/선박기간상품가격예약메일보내기다른 사람과 상품 정보를 공유할 수 있습니다.메일 주소 및 이름은 발송 목적으로 쓰이며 별도 보관되지 않습니다.상품명보내는 사람받는 사람제목내용인쇄하기원하는 정보만 선택하여 출력하실 수 있습니다.상품정보 변동 가능성이 있으니 가급적 출발일 1~2일 전에 인쇄하시기 바랍니다.기본 정보전체 인쇄일정표+주요정보 인쇄일정표(이미지 포함) 인쇄일정표(이미지 제외) 인쇄선택 인쇄선택관광 정보쇼핑 정보www.kyowontour.comTEL : 1588-0040(직통 : 15880040) | FAX : 02-6944-8414서울특별시 종로구 청계천로 51-1 (주)교원투어[실시간항공] 미서부에게 사랑받자💛3대도시+5대캐년+요세미티 국립공원 10일_HIT상품 기본 정보행사코드MWP304241129YP01이용항공에어프레미아출발/도착출발 : 2024년 11월 29일 (금) 12:50 [YP101] 도착 : 2024년 12월 08일 (일) 15:45 [YP102]예약인원예약 0명 (최소 출발 인원 6명)포인트 1% (성인1인 기준 :27,488P 적립) 여행경비 구분 성인 아동 유아 상품가격 기본 상품가격 2,748,800 원 2,453,900 원 500,000 원 유류할증료 100,200 원 100,200 원 0 원 제세공과금 0 원 0 원 0 원 소계 2,849,000 원 2,554,100 원 500,000 원 여행상품 핵심정보상품 기본 정보상품명[실시간항공] 미서부에게 사랑받자💛3대도시+5대캐년+요세미티 국립공원 10일_HIT여행기간2024년 11월 29일 (금)~2024년 12월 08일 (일)상품종류연합영업 보증보험가입기획여행 보증보험가입여행경비구분성인아동유아상품가격기본 상품가격2,748,800 원2,453,900 원500,000 원유류할증료100,200 원100,200 원0 원제세공과금 0 원0 원0 원소계2,849,000 원2,554,100 원500,000 원현지 필수 경비가이드&기사경비최소 출발 인원 및 취소수수료 정보최소 출발 인원 기준6명취소수수료 부과기준주요 확정/미정 정보출발미확정여행일정미확정상품가격미확정항공미확정숙박미확정가이드있음인솔자없음쇼핑 정보일정에 포함된 쇼핑 횟수여행지 안전정보해외안전정보 확인유류할증료는 유가와 환율에 따라 변동될 수 있습니다.최소출발인원 미충족시 여행약관 제9조에 따라 여행 출발 7일전까지 여행사는 여행계약을 일방적으로 해제하고 여행자에게 통보 할 수있습니다.취소수수료는 계약금 입금일부터 적용됩니다. 취소수수료 부과 세부 기준을 반드시 확인하세요.특별약관 적용의 경우, 표준약관보다 높은 취소수수료가 부과될 수 있고, 별도의 동의절차를 거치게 됩니다.쇼핑 품목, 장소, 소요시간, 환불여부 등 세부 항목은 상세페이지에서 반드시 확인하세요.여행경보단계는 여행유의/여행자체/철수권고/여행금지 등 4단계로 구분되며, 외교부 '해외안전여행' 사이트 (www.0404.go.kr) 에서 상세정보를 확인할 수 있습니다.해외여행 안전수칙정보는 한국여행협회 (www.kata.or.kr) 에서 확인할 수 있습니다.여행자보험정보 쿠폰 상세 할인쿠폰 쿠폰명할인내역유효기간상품가출발일적용지역적용상품 * 여행이지 우측 상단 검색창에서 적용상품 코드 검색이 가능합니다. 후기 상세 `;}if(PersonWhereText){selectedPsnzInfoHtml +=`${PersonWhereText} `;}if(PersonWhatText){selectedPsnzInfoHtml +=`${PersonWhatText} `;}$("#selectedPsnzInfo").empty();if(selectedPsnzInfoHtml){$("#selectedPsnzInfo").append(selectedPsnzInfoHtml);$("#selectedPsnzInfo").css('display','');$("#infoSelecting").css('display','none');}else{$("#selectedPsnzInfo").css('display','none');$("#infoSelecting").css('display','');}}//취향정보 삭제function fnDeletePsnzInfoItem(obj){switch (obj){case 'who'://누구와,어디서,무엇을 삭제 후 누구와 영역보이기$("#selectedPsnzInfo").empty();$("#selectedPsnzInfo").css('display','none');$("#infoSelecting").css('display','');$(`#searchPersonWho input[name='custom-who']:checked`).prop("checked", false);$(`#searchPersonWhere input[name='custom-where']:checked`).prop("checked", false);$(`#searchPersonWhat input[name='custom-what']:checked`).prop("checked", false);if(!$('#btnWho').siblings('div').hasClass('is-active')) $('#btnWho').click();break;case 'where'://어디서,무엇을 삭제 후 어디서 영역보이기$(`div[data-psnz='where']`).remove();$(`#searchPersonWhere input[name='custom-where']:checked`).prop("checked", false);$(`div[data-psnz='what']`).remove();$(`#searchPersonWhat input[name='custom-what']:checked`).prop("checked", false);if(!$('#btnWhere').siblings('div').hasClass('is-active')) $('#btnWhere').click();break;case 'what':$(`div[data-psnz='${obj}']`).remove();$(`#searchPersonWhat input[name='custom-what']:checked`).prop("checked", false);if(!$('#btnWhat').siblings('div').hasClass('is-active')) $('#btnWhat').click();break;}}//취향선택이벤트function fnPsnzInfoClickEvnet(e){let name = $(e.target).siblings('input').attr('name');let value = parseInt($(e.target).siblings('input').val());let personWhere = $("#searchPersonWhere input[name='custom-where']:checked").val() || '';let personWhat = $("#searchPersonWhat input[name='custom-what']:checked").val() || '';let personWho = $("#searchPersonWho input[name='custom-who']:checked").val() || '';let personType = '';if(name == 'custom-who'){personType = 'personWho'personWho = value;$("#searchPersonWhere input").prop("checked", false);$("#searchPersonWhat input").prop("checked", false);}if(name == 'custom-where'){if(personWho == ''){alert("'"+"누구와"+"' 항목을 선택해 주세요.");e.preventDefault();return;}personType = 'personWhere';personWhere = value;$("#searchPersonWhat input").prop("checked", false);}else if(name == 'custom-what'){if(personWho == ''){alert("'"+"누구와"+"' 항목을 선택해 주세요.");e.preventDefault();return;}if(personWhere == ''){alert("'"+"어디서"+"' 항목을 선택해 주세요.");e.preventDefault();return;}personType = 'personWhat';personWhat = value;$("#searchPersonWhat input[value='"+value+"']").prop("checked", true);fnSetSelectedPsnzInfoItem();return;//무엇을선택시 리턴}let data = {personType : personType,personWho : personWho * 1,personWhere : personWhere * 1,personWhat : personWhat * 1}let url = '/display/getPsnWhereWhatRel/ajax';_Utils.fnSendAjax(url, data,function(status, result){//whoif(result.data.whoIdList != undefined) {const whoIdList = result.data.whoIdList;let curselOption = $("#searchPersonWho input[name='custom-who']:checked").val();fnSetWhoWhereWhatOptionList('who',whoIdList);let optionIdx = whoIdList.findIndex(o=>o.id == curselOption) > -1 ?whoIdList.findIndex(o=>o.id == curselOption) : -1 ;if(optionIdx > -1) {$("#searchPersonWho input[value='" + whoIdList[optionIdx].id + "']").prop("checked", true);}}//whereif(result.data.whereIdList != undefined) {const whereIdList = result.data.whereIdList;let curselOption = $("#searchPersonWhere input[name='custom-where']:checked").val();fnSetWhoWhereWhatOptionList('where',whereIdList);let optionIdx = whereIdList.findIndex(o=>o.id == curselOption) > -1 ?whereIdList.findIndex(o=>o.id == curselOption) : -1 ;if(optionIdx > -1) {$("#searchPersonWhere input[value='"+whereIdList[optionIdx].id+"']").prop("checked", true);}}//whatif(result.data.whatIdList != undefined){const whatIdList = result.data.whatIdList;let curselOption = $("#searchPersonWhat input[name='custom-what']:checked").val();fnSetWhoWhereWhatOptionList('what',whatIdList);let optionIdx = whatIdList.findIndex(o=>o.id == curselOption) > -1 ?whatIdList.findIndex(o=>o.id == curselOption) : -1 ;if(optionIdx > -1) {$("#searchPersonWhat input[value='" + whatIdList[optionIdx].id + "']").prop("checked", true);}}//(PC)다음취향펼침if(name == 'custom-who'){$('#btnWhere').click();}else if(name == 'custom-where'){$('#btnWhat').click();}fnSetSelectedPsnzInfoItem();});}// 개인화 상품 조회function fnSearchValPsnzGoods(){// validation let whoId = $("#searchPersonWho input[name='custom-who']:checked"); let whereId = $("#searchPersonWhere input[name='custom-where']:checked"); let whatId = $("#searchPersonWhat input[name='custom-what']:checked"); if(whoId.siblings('span').text()==''){ alert("'"+"누구와"+"' 항목을 선택해 주세요."); return; } if(whereId.siblings('span').text()==''){ alert("'"+"어디서"+"' 항목을 선택해 주세요."); return; } if(whatId.siblings('span').text()==''){ alert("'"+"무엇을"+"' 항목을 선택해 주세요."); return; }else {// 검색단 이동fnSearchPsnzGoods();}}//취향맞춤검색function fnSearchPsnzGoods(){let whoId = $("#searchPersonWho input[name='custom-who']:checked");let whereId = $("#searchPersonWhere input[name='custom-where']:checked");let whatId = $("#searchPersonWhat input[name='custom-what']:checked");onChangeLoding();window.location.href = "/display/search?type=psnz&personWho="+whoId.val()+"&personWhere="+whereId.val()+"&personWhat="+whatId.val()+"&personWhoText="+whoId.siblings('span').text()+"&personWhereText="+whereId.siblings('span').text()+"&personWhatText="+whatId.siblings('span').text();}//조건초기화function fnResetSearchValue(){$(".active_menu").removeClass("active_menu");$("#commonSearchMenuCode").val('');//메뉴코드$("#commonSearchMenuName").val('');//메뉴코드$('#searchModalCalendarSelectFlag').val('N');$("#commonSearchPlaceKeyword").val('');//검색어$('.common-search .tab-default > *').eq(0).trigger('click');var obj = document.getElementsByName("freeschedule");//여유일정for(var i=0 ; i < obj.length ; i++){obj[i].checked = false;}}function fnSearchWithoutCalendar(){let keyword = $('#commonSearchPlaceKeyword').val();let menuCode = $('#commonSearchMenuCode').val();if (!keyword && !menuCode) {let msg = "검색어를 입력하거나 지역을 선택해 주세요.";_Popup.openDefaultPopup(msg);return;}if(!fnCheckedMaxLength(keyword,150)){alert("검색어를 150자 이하로 입력해 주세요.");return;}if(menuCode) {onChangeLoding();window.location.href = "/display/search?menuCode=" + menuCode;} else if (keyword) {onChangeLoding();window.location.href = "/display/search?text=" + keyword;}fnResetSearchValue();}function fnSearchWithCalendar(){$("#common_search_place").modal('hide');$("#common_search_calendar").modal('show');}function fnResetPsnzInfoDeep(){//초기 개인화 데이터 가져오기fnGetPsnzInfoList();//누구와 펼침if(!$('#btnWho').siblings('div').hasClass('is-active')) $('#btnWho').click();} //개인화영역에만 하단버튼영역보이기(PC) function fnDisplayBtnsWrap(){ let activeTab = $(".tab-btns-wrap li.active a").attr('rel'); if(activeTab == 'v2-total-tab02'){ $("#common_search_place .v2-modal-footer").show(); }else{ $("#common_search_place .v2-modal-footer").hide(); } } 여행 상품찾기여행 취향 맞춤해외여행여행이지+자유여행허니문골프지방출발EASY LIVE국내여행유럽/아프리카서유럽프랑스스위스이탈리아영국/아이슬란드동유럽동유럽/발칸발칸북유럽/발트튀르키예스페인/포르투갈/모로코그리스/이집트두바이/요르단/중동코카서스/아프리카베네룩스출발확정연휴출발동남아방콕/파타야치앙마이푸켓싱가포르코타키나발루발리다낭/호이안나트랑/달랏/무이네세부보라카이보홀바탐쿠알라룸푸르푸꾸옥하노이라오스/미얀마호치민캄보디아(씨엠립)연휴출발태국(노팁/노옵션/노쇼핑)중국/몽골/중앙아시아장가계북경/천진백두산청도/연태/위해대련/상해하이난계림/망산/무이산서안/정주중경(크루즈)/구채구곤명/여강/하문태항산/황산노팁/노옵션/노쇼핑몽골연휴출발중앙아시아일본북해도큐슈오사카도쿄오키나와/미야코지마마츠야마/다카마츠요나고/도야마/고마츠아오모리/야마가타선박/대마도연휴출발호주/뉴질랜드시드니시드니+골드코스트시드니+멜버른뉴질랜드호주+뉴질랜드연휴출발미주/캐나다/중남미미서부미동부미서부/미동부/캐나다/하와이캐나다중남미시즌상품연휴출발현지투어대만/홍콩/마카오대만 타이페이대만 타이중대만 가오슝대만 온천여행홍콩마카오홍콩+마카오홍콩연계(심천/주하이)노팁/노옵션/노쇼핑연휴출발괌/사이판/하와이괌 P.I.C괌 츠바키/두짓타니/하얏트괌 닛코/힐튼/리가로얄괌 롯데/웨스틴/두짓비치괌 리조나레/크라운/홀리데이사이판 P.I.C사이판 켄싱턴/코랄오션사이판 월드리조트/아쿠아사이판 하얏트/크라운/그랜드브리오하와이연휴출발인도/네팔/스리랑카인도네팔스리랑카교원투어 X 교원라이프 전용관투어플랜 (최대 195만원 할인)교원라이프 전환 상품카테고리별이지+여정+미식+체험+스테이+삼삼오오에듀+지역별유럽/아프리카동남아중국/몽골일본호주/뉴질랜드미주/캐나다/중남미대만/홍콩/마카오괌/사이판/하와이골프유럽프랑스스위스이탈리아영국스페인/포르투칼동유럽/발칸일본도쿄오사카큐슈마츠야마/다카마츠삿포로오키나와/미야코지마아오모리/야마가타대만/홍콩/마카오타이페이타이페이(청주출발)타이중가오슝홍콩마카오태국방콕/파타야푸켓치앙마이베트남나트랑나트랑(청주출발)나트랑(대구/부산출발)다낭푸꾸옥중국싱가포르싱가포르싱가포르(부산출발)필리핀보홀보라카이세부세부(부산출발)말레이시아코타키나발루발리괌/사이판괌괌(부산출발)사이판몰디브스피드보트수상 경비행기국내선제주도제주시애월/한림서귀포/중문조천/성산항공 바로가기 유럽프랑스스위스이탈리아스페인/포르투칼동유럽/발칸지중해/그리스동남아발리코사무이푸켓/카오락나트랑/푸꾸옥발리발리우붓부산출발커플&가족몰디브스피드보트수상비행기국내선하와이/칸쿤하와이(오아후)하와이(이웃섬)칸쿤이색허니문캐나다 오로라두바이/아부다비호주 크루즈특수지역피지/타히티세이셸/모리셔스인천 출발설 연휴 BEST6중국사이판/하와이일본방콕/파타야치앙마이다낭/나트랑/푸꾸옥말레이시아/라오스/발리/바탐클락대만튀르키예지방 출발사이판다낭/나트랑방콕/파타야/치앙마이클락말레이시아동남아(부산출발)방콕/파타야치앙마이라오스다낭/호이안나트랑/달랏푸꾸옥하노이/캄보디아세부/보라카이보홀싱가포르코타키나발루발리대만마카오/홍콩캄보디아중국(부산출발)상해/북경장가계청도황산백두산하이난(싼야)일본(부산출발)큐슈오사카오키나와마츠야마도쿄/나고야북해도선박(큐슈)대마도괌/사이판(부산출발)괌 PIC괌 힐튼/츠바키/닛코/리가로얄괌 하얏트/리조나레사이판대구출발방콕다낭나트랑/달랏큐슈오사카북해도대만장가계청주출발다낭나트랑/달랏대만상해장가계백두산몽골푸꾸옥국내여행(부산출발)EASY LIVE특가가 시작되는 1시간제주 버스패키지2박 3일 패키지1박 2일/ 3박 4일제주 자유여행제주시애월/한림서귀포/중문조천/성산국내 실시간 렌터카기업/단체 문의 대리점 개설 문의 출발일을 선택하세요.최대 14일까지 선택가능 날짜 미지정시 전체 일정의 상품이 검색됩니다.
[실시간항공] 미서부에게 사랑받자💛3대도시+5대캐년+요세미티 국립공원 10일_HIT (2024)

References

Top Articles
Latest Posts
Recommended Articles
Article information

Author: Terrell Hackett

Last Updated:

Views: 6179

Rating: 4.1 / 5 (52 voted)

Reviews: 91% of readers found this page helpful

Author information

Name: Terrell Hackett

Birthday: 1992-03-17

Address: Suite 453 459 Gibson Squares, East Adriane, AK 71925-5692

Phone: +21811810803470

Job: Chief Representative

Hobby: Board games, Rock climbing, Ghost hunting, Origami, Kabaddi, Mushroom hunting, Gaming

Introduction: My name is Terrell Hackett, I am a gleaming, brainy, courageous, helpful, healthy, cooperative, graceful person who loves writing and wants to share my knowledge and understanding with you.