var inquiryJS={a:"inquire_about_item",isPhoneValid:!1,isDiamond:!1,gridItemID:"",onReady(){inquiryJS.phoneValidation(),inquiryJS.bindSubmitHandler(),inquiryJS.initDatePickers(),inquiryJS.initAppointmentTimePicker(),inquiryJS.setLocations(),inquiryJS.bindLocationChangeHandler()},initNewDatePickers(){var uninitedDatePickers=$(".inquiryForm .appt-date-picker:not(.initedDatePicker)");uninitedDatePickers.keydown((function(e){return e.preventDefault(),!1}));for(var i=0;i<uninitedDatePickers.length;i++)uninitedDatePickers.eq(i).addClass("initedDatePicker").datetimepicker({format:"MM/DD/YYYY",icons:{time:"icon-time",date:"icon-calendar",up:"icon-chevron-up",down:"icon-chevron-down",previous:"icon-chevron-left",next:"icon-chevron-right",today:"icon-screenshot",clear:"icon-trash",close:"icon-remove"},minDate:moment().format("YYYY-MM-DD")})},initDatePickers(){inquiryJS.initNewDatePickers(),$("body").on("dp.change",".inquiryForm .appt-date-picker",(function(e,date){inquiryJS.disableDatetimepickerTimeForSelectedDatetimepickerDate(e,date,$(this).closest(".inquiryForm"))}))},disableDatetimepickerTimeForSelectedDatetimepickerDate(e,date,formElement){var dayIndex=0,dateString="";if(void 0!==date){var momentDate=moment(date,"MM/DD/YYYY");dayIndex=momentDate.day(),dateString=momentDate.format("YYYY-MM-DD")}else{if("object"!=typeof e.date||"function"!=typeof e.date.day)return!1;dayIndex=e.date.day(),dateString=e.date.format("YYYY-MM-DD")}var appointmentLocationID=inquiryJS.getLocationID(!0,formElement);if(appointmentLocationID&&"object"==typeof window.pageInfo&&"object"==typeof window.pageInfo.locationDayTime&&appointmentLocationID in window.pageInfo.locationDayTime&&"object"==typeof window.pageInfo.locationDayTime[appointmentLocationID]){var openAndCloseTimes=null;if("object"==typeof window.pageInfo.locationDayTime[appointmentLocationID].adjustedHolidayHours&&dateString in window.pageInfo.locationDayTime[appointmentLocationID].adjustedHolidayHours&&window.pageInfo.locationDayTime[appointmentLocationID].adjustedHolidayHours[dateString]?openAndCloseTimes=window.pageInfo.locationDayTime[appointmentLocationID].adjustedHolidayHours[dateString]:"object"==typeof window.pageInfo.locationDayTime[appointmentLocationID].timeOfDay&&dayIndex in window.pageInfo.locationDayTime[appointmentLocationID].timeOfDay&&window.pageInfo.locationDayTime[appointmentLocationID].timeOfDay[dayIndex]&&(openAndCloseTimes=window.pageInfo.locationDayTime[appointmentLocationID].timeOfDay[dayIndex]),openAndCloseTimes)if($(formElement).find(".appt-time-picker").prop("readonly"))$(formElement).find(".appt-time-picker").val("");else{$(formElement).find(".appt-time-picker").data("DateTimePicker").date(moment(openAndCloseTimes.open,"hh:mm a"));var open=openAndCloseTimes.open.split(":");open=(open=moment().hour(open[0]).minutes(open[1]).seconds(0)).subtract("seconds",1);var close=openAndCloseTimes.close.split(":");close=moment().hour(close[0]).minutes(close[1]).seconds(0),$(formElement).find(".appt-time-picker").data("DateTimePicker").disabledTimeIntervals([[moment().hour(0).minutes(0).seconds(0).subtract("seconds",1),open],[close,moment().hour(23).minutes(59).seconds(59)]])}}},initNewTimePickers(){var uninitedTimePickers=$(".inquiryForm .appt-time-picker:not(.initedTimePicker)");uninitedTimePickers.keydown((function(e){return e.preventDefault(),!1}));for(var i=0;i<uninitedTimePickers.length;i++)$(uninitedTimePickers).eq(i).addClass("initedTimePicker").datetimepicker({format:"LT",stepping:15,icons:{time:"icon-time",date:"icon-calendar",up:"icon-chevron-up",down:"icon-chevron-down",previous:"icon-chevron-left",next:"icon-chevron-right",today:"icon-screenshot",clear:"icon-trash",close:"icon-remove"},useCurrent:!1})},initAppointmentTimePicker(){inquiryJS.initNewTimePickers(),$("body").on("dp.change",".inquiryForm .appt-time-picker",(function(e,date){inquiryJS.forceDatetimepickerTimeToMeetStoreHours(e,date,$(this).closest(".inquiryForm"))}))},forceDatetimepickerTimeToMeetStoreHours(e,date,formElement){if("object"==typeof e.date){let selectedTime=e.date,disabledTimeIntervals=$(formElement).find(".appt-time-picker").data("DateTimePicker").disabledTimeIntervals();if(!1!==disabledTimeIntervals){let endTime=disabledTimeIntervals[1][0];selectedTime.isBefore(endTime)||$(formElement).find(".appt-time-picker").data("DateTimePicker").date(endTime)}}},getLocationID(useFirstLocationIfNoneSelected,formElement){var selectedLocationID=$(formElement).find(".appt-location").val();if(!isNaN(selectedLocationID)&&Number(selectedLocationID.replace(/\D/g,""))>0)return selectedLocationID;if(useFirstLocationIfNoneSelected)for(var locationOptions=$(formElement).find(".appt-location option"),i=0;i<locationOptions.length;i++){var firstFoundLocationID=locationOptions[i].value;if(!isNaN(firstFoundLocationID)&&Number(firstFoundLocationID.replace(/\D/g,""))>0)return firstFoundLocationID}return!1},setLocations(){let inquiryForms=jQuery(".inquiryForm");for(var i=0;i<inquiryForms.length;i++)inquiryJS.setLocation(inquiryForms[i])},setLocation(formElement){var selectedLocationID=inquiryJS.getLocationID(!1,formElement),daysOfWeekDisabled=[0,1,2,3,4,5,6],disabeldDates=[];if(selectedLocationID?$(formElement).find(".appt-date-picker, .appt-time-picker").parent().removeClass("hide"):$(formElement).find(".appt-date-picker, .appt-time-picker").parent().addClass("hide"),selectedLocationID&&"object"==typeof window.pageInfo&&"object"==typeof window.pageInfo.locationDayTime&&selectedLocationID in window.pageInfo.locationDayTime&&"object"==typeof window.pageInfo.locationDayTime[selectedLocationID]&&"object"==typeof window.pageInfo.locationDayTime[selectedLocationID]&&(window.pageInfo.locationDayTime[selectedLocationID].daysOfWeekDisabled&&(daysOfWeekDisabled=window.pageInfo.locationDayTime[selectedLocationID].daysOfWeekDisabled),window.pageInfo.locationDayTime[selectedLocationID].closedHolidayDates))for(var datesToBeDisabeld=window.pageInfo.locationDayTime[selectedLocationID].closedHolidayDates,i=0;i<datesToBeDisabeld.length;i++){var dateStringPieces=datesToBeDisabeld[i].trim().split("-");if(3==dateStringPieces.length){var year=Number(dateStringPieces[0]),month=Number(dateStringPieces[1]),day=Number(dateStringPieces[2]);if(year>2e3&&year<3e3&&month>0&&month<13&&day>0&&day<32){var dateToBeDisabled=new Date;dateToBeDisabled.setDate(1),dateToBeDisabled.setYear(year),dateToBeDisabled.setMonth(month-1),dateToBeDisabled.setDate(day),disabeldDates.push(dateToBeDisabled)}}}ArrayUtils.equals([0,1,2,3,4,5,6],daysOfWeekDisabled)?$(formElement).find(".appt-date-picker, .appt-time-picker").css({background:"#eee",opacity:"0.5"}).prop("readonly",!0).val("Store closed."):($(formElement).find(".appt-date-picker, .appt-time-picker").css({background:"",opacity:""}).prop("readonly",!1).val(""),$(formElement).find(".appt-date-picker").data("DateTimePicker").daysOfWeekDisabled(daysOfWeekDisabled),$(formElement).find(".appt-date-picker").data("DateTimePicker").disabledDates(disabeldDates),$(formElement).find(".appt-date-picker").trigger("dp.change",[$(formElement).find(".appt-date-picker").val()]))},bindLocationChangeHandler(){$("body").on("change",".inquiryForm .appt-location",(function(){let formElement=jQuery(this).closest(".inquiryForm");inquiryJS.setLocation(formElement)}))},dataByModal:{},getModalHTML:function(modalID,modalType){if("string"!=typeof modalID||modalID.length<1||$("#"+modalID).length>0)return"";var htmlToReturn='<div id="'+modalID+"\" class='modal fade appointmentDayTime inquiryModal' tabindex='-1' role='dialog' aria-hidden='true' data-modal-type=\""+modalType+"\">\n\t\t\t<div class='modal-dialog modal-dialog-centered'>\n\t\t\t\t<div class='modal-content'>\n\t\t\t\t\t<form class=\"form inquiryForm\" onsubmit=\"return false;\">\n\t\t\t\t\t\t<div class='modal-header pb-1 border-bottom-0'>\n\t\t\t\t\t\t\t<h4 class='modal-title'>"+("appointment"==modalType?"Schedule Appointment":"Product Inquiry")+"</h4>\n\t\t\t\t\t\t\t<button type='button' class='btn-close close' data-bs-dismiss='modal'><span class='sr-only'>Close</span></button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class='modal-body py-0'>\n\t\t\t\t\t\t\t<p>"+("appointment"==modalType?"Our friendly staff will be happy to show you this item in our store.":"Our friendly staff will be happy to help you with whatever questions you may have about this product.")+'</p>\n\t\t\t\t\t\t\t<div class="form-row">\n\t\t\t\t\t\t\t\t<div class="form-label-group col-12 col-md-6">\n\t\t\t\t\t\t\t\t\t<input name="firstName" type="text" class="form-control input-lg" placeholder="First Name">\n\t\t\t\t\t\t\t\t\t<label>First Name</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="form-label-group col-12 col-md-6">\n\t\t\t\t\t\t\t\t\t<input name="lastName" type="text" class="form-control input-lg" placeholder="Last Name">\n\t\t\t\t\t\t\t\t\t<label>Last Name</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="form-row">\n\t\t\t\t\t\t\t\t<div class="form-label-group col-12 col-md-6">\n\t\t\t\t\t\t\t\t\t<input name="email" type=\'email\' class="form-control input-lg" placeholder="Email Address">\n\t\t\t\t\t\t\t\t\t<label>Email Address</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="form-label-group col-12 col-md-6 phone-number-input"></div>\n\t\t\t\t\t\t\t</div>';return"appointment"==modalType&&(htmlToReturn+=window.pageInfo.availableLocationInputHTML+'\n\t\t\t\t\t\t\t<div class="form-row">\n\t\t\t\t\t\t\t\t<div class="form-label-group col-12 col-md-6">\n\t\t\t\t\t\t\t\t\t<input name="desiredDay" type=\'text\' class="form-control input-lg appt-date-picker" placeholder="Desired Day">\n\t\t\t\t\t\t\t\t\t<label>Desired Day</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="form-label-group col-12 col-md-6">\n\t\t\t\t\t\t\t\t\t<input name="desiredTime" type=\'text\' class="form-control input-lg appt-time-picker" placeholder="Desired Time">\n\t\t\t\t\t\t\t\t\t<label>Desired Time</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>'),htmlToReturn+="<div class=\"form-label-group\">\n\t\t\t\t\t\t\t\t<textarea name=\"message\" class=\"form-control input-lg\" placeholder=\"Message\"></textarea>\n\t\t\t\t\t\t\t\t<label>Message</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"form-group pt-0 mb-0\">\n\t\t\t\t\t\t\t\t<label class=\"my-0\">Enter Validation Code:</label>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" class=\"defaultRealCaptcha\" name=\"defaultRealCaptcha\">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"form-label-group pb-10\">\n\t\t\t\t\t\t\t\t<input class='form-control input-lg' type='text' name='defaultRealInput' placeholder='Enter code as seen above'>\n\t\t\t\t\t\t\t\t<label>Enter code as seen above</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class='modal-footer'>\n\t\t\t\t\t\t\t<button type='button' class='btn btn-default' data-bs-dismiss='modal'>Cancel</button>\n\t\t\t\t\t\t\t<button data-loading-text='Sending Inquiry...' name='send_inquiry' type='submit' class='btn btn-primary' value='1'>"+("appointment"==modalType?"Submit Request":"Submit Inquiry")+"</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>"},showModal(modalElement,modalType,itemID="",diamondID="",otherData={}){if("string"==typeof modalElement&&0==modalElement.indexOf("#")&&0==$(modalElement).length){var modalHTML=inquiryJS.getModalHTML(modalElement.substring(1),modalType);if(modalHTML){$("body").append(modalHTML);for(var newSelectPickers=$(modalElement+" .selectpicker"),i=0;i<newSelectPickers.length;i++)selectpicker(newSelectPickers[i]);inquiryJS.initNewDatePickers(),inquiryJS.initNewTimePickers(),inquiryJS.bindSubmitHandler()}}var $modalElement=$(modalElement);if($modalElement.length<1)return console.error("Could not show inquiry modal because the modal element that was passed was not found."),!1;if(diamondID&&itemID)inquiryJS.a="submit_modal_about_engagement_ring";else if(itemID)inquiryJS.a="submit_modal_about_item";else{if(!diamondID)return console.error("Cannot show "+modalType+" modal. Product ID(s) not provided."),!1;inquiryJS.a="submit_modal_about_diamond"}$modalElement[0].id||($modalElement[0].id=modalType+"Modal"+Math.random().toString().replace("0.",""));var modalData={modalType:modalType,...otherData};itemID&&(modalData.itemID=itemID),diamondID&&(modalData.diamondID=diamondID),inquiryJS.dataByModal[$modalElement[0].id]=modalData,"firstName"in modalData&&"string"==typeof modalData.firstName&&!$modalElement.find("input[name=firstName]").val()&&$modalElement.find("input[name=firstName]").val(modalData.firstName),"lastName"in modalData&&"string"==typeof modalData.lastName&&!$modalElement.find("input[name=lastName]").val()&&$modalElement.find("input[name=lastName]").val(modalData.lastName),"email"in modalData&&"string"==typeof modalData.email&&!$modalElement.find("input[name=email]").val()&&$modalElement.find("input[name=email]").val(modalData.email),"appointment"==modalType&&inquiryJS.setLocation($modalElement.find(".inquiryForm")),$modalElement.modal("show"),window.hasOwnProperty("useGA4")&&window.useGA4&&gtag("event","view_item_inquiry",{item:itemID,type:modalType,handler:inquiryJS.a})},getFormError(formElement){let modalType=$(formElement).closest(".modal").data("modal-type"),firstname=$(formElement).find('input[name="firstName"]').val(),lastname=$(formElement).find('input[name="lastName"]').val(),email=$(formElement).find('input[name="email"]').val(),message=$(formElement).find("textarea").val(),captcha=$(formElement).find('input[name="defaultRealInput"]').val();if(!firstname)return"Enter a first name.";if(!lastname)return"Enter a last name.";if(!email)return"Enter an email address.";if(!inquiryJS.isPhoneValid)return"Enter a valid phone number.";if("appointment"==modalType&&"2"===window.pageInfo.locationsFieldInquiries){if(!$(formElement).find(".appt-location").val())return"Select a location.";if($(formElement).find(".appt-date-picker").length>0&&"Store closed."!=$(formElement).find(".appt-date-picker").val()){if(!$(formElement).find(".appt-date-picker").data("DateTimePicker").date())return"Select a date."}if($(formElement).find(".appt-date-picker").length>0&&"Store closed."!=$(formElement).find(".appt-time-picker").val()){if(!$(formElement).find(".appt-time-picker").data("DateTimePicker").date())return"Select a time."}}return message?captcha?"success":"Enter the captcha.":"Enter a message."},bindSubmitHandler(){jQuery(".inquiryForm").off("submit").on("submit",(function(e){e.preventDefault();let formError=inquiryJS.getFormError(this);if("success"!==formError)return AlertUtils.showAlert("error","Oops!",formError),!1;var $form=$(this),$modal=$form.closest(".inquiryModal"),otherData=inquiryJS.dataByModal[$modal[0].id];if(["inquire_about_engagement_ring","make_appointment_about_engagement_ring"].indexOf(inquiryJS.a)>-1&&!("ringSize"in otherData))return AlertUtils.showAlert("error","Oops!","We lost your selected ring size somewhere along the way and could not submit your inquiry without it."),console.error("ringSize is missing in otherData; cannot submit engagement ring inquiry without it."),!1;var DEFAULT_VALUES_FOR_REQUIRED_OTHER_DATA_PROPERTIES={referer:window.location.toString(),sessionID:"",customerID:""};for(const prop in DEFAULT_VALUES_FOR_REQUIRED_OTHER_DATA_PROPERTIES)prop in otherData&&void 0!==otherData[prop]&&null!==otherData[prop]||(otherData[prop]=DEFAULT_VALUES_FOR_REQUIRED_OTHER_DATA_PROPERTIES[prop],""==DEFAULT_VALUES_FOR_REQUIRED_OTHER_DATA_PROPERTIES[prop]&&console.error(otherData.modalType+' form is not submitting a value for "'+prop+'".'));var formData=new FormData;for(const key in otherData)formData.set(key,otherData[key]);var fields=$form.serializeArray();$.each(fields,(function(key,input){formData.set(input.name,input.value)})),formData.set("defaultRealHash",$form.find(".defaultRealCaptcha").realperson("getHash")),loadingUtils.setLoading("bindSubmitHandler",!0),jQuery.ajax({url:"/api/async.php?t=grid&m=inquiry&a="+inquiryJS.a,method:"POST",contentType:!1,processData:!1,dataType:"json",data:formData,context:$form,success(data){if(!data.success)return AlertUtils.showAlert("error","Oops!","object"==typeof data&&"msg"in data&&"string"==typeof data.msg&&data.msg.length>0?data.msg:"Something went wrong. Please try again. If this issue persists, please contact us.");$modal.modal("hide");var styleNoForSubmissionTracking=$modal.find("input[name=style_no]").val();"string"==typeof otherData.styleNo&&otherData.styleNo.length>0?styleNoForSubmissionTracking=otherData.styleNo:window.hasOwnProperty("pageInfo")&&window.pageInfo.hasOwnProperty("styleNo")&&"string"==typeof window.pageInfo.styleNo&&window.pageInfo.styleNo.length>0?styleNoForSubmissionTracking=window.pageInfo.styleNo:styleNoForSubmissionTracking||(styleNoForSubmissionTracking=otherData.itemID),inquiryJS.submissionTracking($form,otherData.itemID,otherData.modalType),void 0!==window.completeSetting&&window.completeSetting.clearERDData(),AlertUtils.showAlert("success","Success","appointment"==otherData.modalType?"Your appointment request was successfully submitted!":"Your inquiry was successfully submitted!"),inquiryJS.resetForm($form)},complete(){loadingUtils.setLoading("bindSubmitHandler",!1)},error:function(){AlertUtils.showAlert("error","Oops!","Your request failed. Please try again. If this issue persists, please contact us.")}})}))},submissionTracking($form,styleNoOrItemID,inquiryType){if(window.hasOwnProperty("useGA4")&&window.useGA4?gtag("event","submit_item_inquiry",{item:styleNoOrItemID,type:inquiryType,handler:inquiryJS.a}):console.error("no gtag function defined"),"function"==typeof fbq&&fbq("track","ItemInquiry",{itemID:styleNoOrItemID}),"object"==typeof klaviyo){console.log("firing klaviyo inquiry event...");let emailAddress=$form.find('input[name="email"]').val()||"",firstName=$form.find('input[name="firstName"]').val()||"",lastName=$form.find('input[name="lastName"]').val()||"",dialCode=$form.find('input[name="dialCode"]').val()?"+"+$form.find('input[name="dialCode"]').val():"",phoneNumber=$form.find('input[type="tel"]').val()?dialCode+$form.find('input[type="tel"]').val().replace(/\D/g,""):"",message=$form.find('textarea[name="message"]').val()||"";klaviyo.identify({email:emailAddress,first_name:firstName,last_name:lastName});let data={EmailAddress:emailAddress,FirstName:firstName,LastName:lastName,PhoneNumber:phoneNumber,Message:message,itemID:styleNoOrItemID};klaviyo.push(["track","Item Inquiry",data])}},phoneValidation(){jQuery("body").on("isValidPhoneNumber",(function(response){inquiryJS.isPhoneValid=response.isPossibleNumber}))},resetForm(formElement){$(formElement).find("input, textarea").not("[type=hidden]").val("")}};jQuery(document).ready((function($){inquiryJS.onReady()}));