DUE TO COVID-19, WE ARE NOT ACCEPTING ANY RETURNS ×

Become A Blu Babe

We're Holding Auditions!

Do you love Labeled Blu Collection? Are you interested in modeling at our Grand Opening?! If so, you should audition to become a Blu Babe.

Auditions will be held on April 10, 2021 in Atlanta, GA! Register below!

<script src="https://cdn.jotfor.ms/js/vendor/imageinfo.js?v=3.3.24338" type="text/javascript"></script> <script src="https://cdn.jotfor.ms/static/prototype.forms.js" type="text/javascript"></script> <script src="https://cdn.jotfor.ms/static/jotform.forms.js?3.3.24338" type="text/javascript"></script> <script type="text/javascript"> JotForm.init(function(){ if (window.JotForm && JotForm.accessible) $('input_3').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_5').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_45').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_35').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_37').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_40').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_39').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_41').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_15').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_42').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_50').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_47').setAttribute('tabindex',0); JotForm.calendarMonths = ["January","February","March","April","May","June","July","August","September","October","November","December"]; JotForm.calendarDays = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]; JotForm.calendarOther = "Today"; JotForm.checkAppointmentAvailability = function checkAppointmentAvailability(day, slot, data) { if (!(day && slot && data && data[day])) return false; return data[day][slot]; }; (function init(props) { var PREFIX = window.location.href.indexOf('jotform.pro') > -1 || window.location.pathname.indexOf('build') > -1 || window.location.pathname.indexOf('form-templates') > -1 || window.location.pathname.indexOf('pdf-templates') > -1 || window.location.pathname.indexOf('table-templates') > -1 ? '/server.php' : JotForm.server; // boilerplate var effectsOut = null; var changed = {}; var constructed = false; var _window = window, document = _window.document; var wrapper = document.querySelector('#' + props.qid.value); var element = wrapper.querySelector('.appointmentField'); var input = wrapper.querySelector('#input_' + props.id.value + '_date'); var tzInput = wrapper.querySelector('#input_' + props.id.value + '_timezone'); function debounce(func, wait, immediate) { var timeout = void 0; return function wrappedFN() { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var context = this; var later = function later() { timeout = null; if (!immediate) func.apply.apply(func, [context].concat(args)); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply.apply(func, [context].concat(args)); }; } var classNames = function classNames(obj) { return Object.keys(obj).reduce(function (acc, key) { if (!obj[key]) return acc; return [].concat(acc, [key]); }, []).join(' '); }; var assignObject = function assignObject() { for (var _len2 = arguments.length, objects = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { objects[_key2] = arguments[_key2]; } return objects.reduce(function (acc, obj) { Object.keys(obj).forEach(function (key) { acc[key] = obj[key]; }); return acc; }, {}); }; var objectEntries = function objectEntries(obj) { return Object.keys(obj).reduce(function (acc, key) { var value = obj[key]; var pair = [key, value]; return [].concat(acc, [pair]); }, []); }; var fillArray = function fillArray(arr, value) { var newArr = []; for (var i = 0; i < arr.length; i++) { newArr.push(value); } return newArr; }; var getJSON = function getJSON(url, cb) { return new Ajax.Request(url, { evalJSON: 'force', method: 'GET', onComplete: function onComplete(response) { return cb(response.responseJSON); } }); }; var beforeRender = function beforeRender() { if (effectsOut) { effectsOut(); effectsOut = null; } }; var afterRender = function afterRender() { effectsOut = effects(); }; var setState = function setState(newState) { var changedKeys = Object.keys(newState).filter(function (key) { return state[key] !== newState[key]; }); if (!changedKeys.length) { return; } changed = changedKeys.reduce(function (acc, key) { var _assignObject; return assignObject({}, acc, (_assignObject = {}, _assignObject[key] = state[key], _assignObject)); }, changed); state = assignObject({}, state, newState); if (constructed) { render(); } }; var isStartWeekOnMonday = function isStartWeekOnMonday() { var _props = props, startDay = _props.startWeekOn.value; return !startDay || startDay === 'Monday'; }; var monthNames = function monthNames() { return (JotForm.calendarMonthsTranslated || JotForm.calendarMonths || _Utils.specialOptions.Months.value).map(function (monthName) { return String.prototype.locale ? monthName.locale() : monthName; }); }; var daysOfWeek = function daysOfWeek() { return (JotForm.calendarDaysTranslated || JotForm.calendarDays || _Utils.specialOptions.Days.value).map(function (dayName) { return String.prototype.locale ? dayName.locale() : dayName; }); }; // we need remove unnecessary "Sunday", if there is time field on the form var dayNames = function dayNames() { var days = daysOfWeek().length === 8 ? daysOfWeek().slice(1) : daysOfWeek(); return isStartWeekOnMonday() ? days : [days[days.length - 1]].concat(days.slice(0, 6)); }; var oneHour = 1000 * 60 * 60; // const oneDay = oneHour * 24; var intPrefix = function intPrefix(d) { if (d < 10) { return '0' + d; } return '' + d; }; var toFormattedDateStr = function toFormattedDateStr(date) { var _props2 = props, _props2$dateFormat$va = _props2.dateFormat.value, format = _props2$dateFormat$va === undefined ? 'yyyy-mm-dd' : _props2$dateFormat$va; if (!date) return; if (typeof date === 'string') { var _date$split = date.split('-'), _year = _date$split[0], _month = _date$split[1], _day = _date$split[2]; return format.replace(/yyyy/, _year).replace(/mm/, _month).replace(/dd/, _day); } var year = date.getFullYear(); var month = intPrefix(date.getMonth() + 1); var day = intPrefix(date.getUTCDate()); return format.replace(/yyyy/, year).replace(/mm/, month).replace(/dd/, day); }; var toDateStr = function toDateStr(date) { if (!date) return; var year = date.getFullYear(); var month = intPrefix(date.getMonth() + 1); var day = intPrefix(date.getDate()); return year + '-' + month + '-' + day; }; var toDateTimeStr = function toDateTimeStr(date) { if (!date) return; var ymd = toDateStr(date); var hour = intPrefix(date.getHours()); var minute = intPrefix(date.getMinutes()); return ymd + ' ' + hour + ':' + minute; }; var getTimezoneOffset = function getTimezoneOffset(timezone) { if (!timezone) { return 0; } var cityArgs = timezone.split(' '); var splitted = cityArgs[cityArgs.length - 1].replace(/\(GMT|\)/g, '').split(':'); if (!splitted) { return 0; } return parseInt(splitted[0] || 0, 10) + (parseInt(splitted[1] || 0, 10) / 60 || 0); }; var getGMTSuffix = function getGMTSuffix(offset) { if (offset === 0) { return ''; } var offsetMinutes = Math.abs(offset) % 60; var offsetHours = Math.abs(offset - offsetMinutes) / 60; var str = intPrefix(offsetHours) + ':' + intPrefix(offsetMinutes); if (offset < 0) { return '+' + str; } return '-' + str; }; // const toJSDate = (dateStr, timezone) => { // if (!dateStr) return; // const gmtSuffix = getGMTSuffix(timezone || state.timezone); // return new Date(`${dateStr} GMT${gmtSuffix}`); // }; var getYearMonth = function getYearMonth(date) { if (!date) return; var _date$split2 = date.split('-'), y = _date$split2[0], m = _date$split2[1]; return y + '-' + m; }; var getMondayBasedDay = function getMondayBasedDay(date) { var day = date.getUTCDay(); if (day === 0) { return 6; // sunday index } return day - 1; }; var getDay = function getDay(date) { return isStartWeekOnMonday() ? getMondayBasedDay(date) : date.getUTCDay(); }; var getUserTimezone = function getUserTimezone() { try { var tzStr = Intl.DateTimeFormat().resolvedOptions().timeZone; if (tzStr) { var tz = tzStr + ' (GMT' + getGMTSuffix(new Date().getTimezoneOffset()) + ')'; return tz; } } catch (e) { console.error(e.message); } return props.timezone.value; }; var passedProps = props; var getStateFromProps = function getStateFromProps() { var newProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var startDate = new Date(newProps.startDate ? newProps.startDate.value : ''); var today = new Date(); var date = toDateStr(new Date(Math.max(startDate, today) || today)); return { date: date, timezones: state ? state.timezones : { loading: true } }; }; var getFirstAvailableDates = function getFirstAvailableDates(cb) { var _props3 = props, _props3$formID = _props3.formID, formID = _props3$formID === undefined ? global.__formInfo.id : _props3$formID; var _state = state, _state$timezone = _state.timezone, timezone = _state$timezone === undefined ? getUserTimezone() : _state$timezone; if (!formID || !timezone) return; // eslint-disable-next-line max-len var url = PREFIX + '?action=getAppointments&formID=' + formID + '&timezone=' + encodeURIComponent(timezone) + '&ncTz=' + new Date().getTime() + '&firstAvailableDates'; return getJSON(url, function (_ref) { var content = _ref.content; return cb(content); }); }; var state = getStateFromProps(props); var loadTimezones = function loadTimezones(cb) { setState({ timezones: { loading: true } }); getJSON((props.cdnconfig.CDN || '/') + 'assets/form/timezones.json?ncTz=' + new Date().getTime(), function (data) { var timezones = objectEntries(data).reduce(function (acc, _ref2) { var group = _ref2[0], cities = _ref2[1]; acc.push({ group: group, cities: cities }); return acc; }, []); cb(timezones); }); }; var loadMonthData = function loadMonthData(startDate, endDate, cb) { var _props4 = props, _props4$formID = _props4.formID, formID = _props4$formID === undefined ? (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' ? global.__formInfo.id : null : _props4$formID, id = _props4.id.value; var _state2 = state, timezone = _state2.timezone; if (!formID || !timezone) return; // eslint-disable-next-line max-len var url = PREFIX + '?action=getAppointments&formID=' + formID + '&qid=' + id + '&timezone=' + encodeURIComponent(timezone) + '&startDate=' + toDateStr(startDate) + '&endDate=' + toDateStr(endDate) + '&ncTz=' + new Date().getTime(); return getJSON(url, function (_ref3) { var data = _ref3.content; return cb(data); }); }; var generateMonthData = function generateMonthData(startDate, endDate, data) { var d1 = startDate.getDate(); var d2 = endDate.getDate(); var dPrefix = startDate.getFullYear() + '-' + intPrefix(startDate.getMonth() + 1) + '-'; var daysLength = d2 - d1 + 1 || 0; var days = fillArray(new Array(daysLength), ''); var slots = days.reduce(function (acc, x, day) { var _assignObject2; var dayStr = '' + dPrefix + intPrefix(day + 1); return assignObject(acc, (_assignObject2 = {}, _assignObject2[dayStr] = data[dayStr] || false, _assignObject2)); }, {}); var availableDays = Object.keys(data).filter(function (d) { return !Array.isArray(slots[d]) && !!slots[d]; }); return { availableDays: availableDays, slots: slots }; }; var lastReq = void 0; var updateMonthData = function updateMonthData(startDate, endDate, data) { var _generateMonthData = generateMonthData(startDate, endDate, data), availableDays = _generateMonthData.availableDays, slots = _generateMonthData.slots; if (JSON.stringify(slots) === JSON.stringify(state.slots)) { return; } setState({ availableDays: availableDays, slots: slots }); }; var getDateRange = function getDateRange(dateStr) { var _dateStr$split = dateStr.split('-'), y = _dateStr$split[0], m = _dateStr$split[1]; var startDate = new Date(y, m - 1, 1); var endDate = new Date(y, m, 0); return [startDate, endDate]; }; var load = function load() { var _state3 = state, dateStr = _state3.date; var _getDateRange = getDateRange(dateStr), startDate = _getDateRange[0], endDate = _getDateRange[1]; setState(assignObject({ loading: true }, generateMonthData(startDate, endDate, {}))); var req = loadMonthData(startDate, endDate, function (data) { if (lastReq !== req) { return; } updateMonthData(startDate, endDate, data); var _state4 = state, availableDays = _state4.availableDays, forcedStartDate = _state4.forcedStartDate, forcedEndDate = _state4.forcedEndDate, slots = _state4.slots; var firstAvailable = availableDays.find(function (d) { var foundSlot = Object.keys(slots[d]).find(function (slot) { var slotDate = dateInTimeZone(new Date((d + ' ' + slot).replace(/-/g, '/'))); if (forcedStartDate && slotDate > forcedStartDate) return false; if (forcedEndDate && slotDate < forcedEndDate) return false; return true; }); return foundSlot; }); var newDate = availableDays.indexOf(dateStr) === -1 && firstAvailable; setState({ loading: false, date: newDate || dateStr }); }); lastReq = req; }; var dateInTimeZone = function dateInTimeZone(date) { var timezone = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : state.timezone; if (!date) return; var diffTime = (getTimezoneOffset(timezone) - state.nyTz) * oneHour; return new Date(date.getTime() - diffTime); }; var dz = function dz(date, tz1, tz2) { if (!date) return; var diffTime = (tz1 - tz2) * oneHour; return new Date(date.getTime() - diffTime); }; var revertDate = function revertDate(d, t1, t2) { if (!d) return ''; var pDate = new Date(d.replace(/-/, '/')); var utz = getTimezoneOffset(getUserTimezone()); var tz1 = getTimezoneOffset(t1) - utz; var tz2 = getTimezoneOffset(t2) - utz; var val = dz(pDate, tz1, tz2); return toDateTimeStr(val); }; var amPmConverter = function amPmConverter(_time) { var _props5 = props, _props5$timeFormat = _props5.timeFormat; _props5$timeFormat = _props5$timeFormat === undefined ? {} : _props5$timeFormat; var _props5$timeFormat$va = _props5$timeFormat.value, timeFormat = _props5$timeFormat$va === undefined ? '24 Hour' : _props5$timeFormat$va; if (!_time || !(typeof _time === 'string') || _time.indexOf('M') > -1 || !timeFormat || timeFormat === '24 Hour') { return _time; } var time = _time.substring(0, 2); var hour = time % 12 || 12; var ampm = time < 12 ? 'AM' : 'PM'; return '' + hour + _time.substring(2, 5) + ' ' + ampm; }; var validate = function validate(dateStr, cb) { var _state5 = state, defaultValue = _state5.defaultValue; if (JotForm.isEditMode() && defaultValue === dateStr) { return cb(true); } var parts = dateStr.split(' '); var slot = parts.slice(1).join(' '); var _parts$0$split = parts[0].split('-'), y = _parts$0$split[0], m = _parts$0$split[1], d = _parts$0$split[2]; var startDate = new Date(y, m - 1, 1); var endDate = new Date(y, m, 0); loadMonthData(startDate, endDate, function (data) { var day = y + '-' + m + '-' + d; var isValid = JotForm.checkAppointmentAvailability(day, amPmConverter(slot), data); cb(isValid); if (!isValid) { var _assignObject3; // add unavailable slot if it is not in response for deselection data[day] = assignObject({}, data[day], (_assignObject3 = {}, _assignObject3[slot] = false, _assignObject3)); } // still in same month if (state.date.indexOf(y + '-' + m) === 0) { updateMonthData(startDate, endDate, data); } }); }; // let validationInterval; var validation = function validation(_value) { var shouldValidate = _value || $(input).hasClassName('validate'); if (!shouldValidate) { $(input).addClassName('valid'); JotForm.corrected(input); JotForm.runConditionForId(props.id.value); return; } if (!_value) { $(input).removeClassName('valid'); JotForm.errored(input, JotForm.texts.required); JotForm.runConditionForId(props.id.value); return; } validate(_value, function (isValid) { if (isValid) { $(input).addClassName('valid'); JotForm.corrected(input); JotForm.runConditionForId(props.id.value); return; } // clearInterval(validationInterval); var parts = _value.split(' '); var dateStr = parts[0]; var date = new Date(dateStr); var day = getDay(date); var datetime = dayNames()[day] + ', ' + monthNames()[date.getMonth()] + ' ' + intPrefix(date.getUTCDate()) + ', ' + date.getFullYear(); var time = parts.slice(1).join(' '); var errorText = JotForm.texts.slotUnavailable.replace('{time}', time).replace('{date}', datetime); $(input).removeClassName('valid'); JotForm.errored(input, errorText); JotForm.runConditionForId(props.id.value); }); }; var setValue = function setValue(value) { input.value = value ? toDateTimeStr(dateInTimeZone(new Date(value.replace(/-/g, '/')))) : ''; setState({ value: value }); // trigger input event for supporting progress bar widget input.triggerEvent('input'); // clearInterval(validationInterval); validation(value); // validationInterval = setInterval(() => { validation(state.value); }, 1000 * 5); }; var handleClick = function handleClick(e) { var target = e.target; var $target = $(target); if (!$target || !$target.hasClassName) { return; } if ($target.hasClassName('disabled') && !$target.hasClassName('active')) { return; } e.preventDefault(); var value = target.dataset.value; setValue($target.hasClassName('active') ? undefined : value); }; var setTimezone = function setTimezone(timezone) { tzInput.value = timezone; setState({ timezone: timezone }); if (input.value) { var date = toDateTimeStr(dz(new Date(input.value.replace(/-/g, '/')), state.nyTz, getTimezoneOffset(state.timezone))); setDate(date.split(' ')[0]); setState({ value: date }); } }; var handleTimezoneChange = function handleTimezoneChange(e) { var target = e.target; var timezone = target.value; setTimezone(timezone); }; var setDate = function setDate(date) { return setState({ date: date }); }; var handleDateChange = function handleDateChange(e) { var target = e.target; var date = target.dataset.value; if (!date) return; setDate(date); }; var handleMonthYearChange = function handleMonthYearChange(e) { var _e$target = e.target, dataset = _e$target.dataset, inputVal = _e$target.value; var name = dataset.name; if (!name) { return; } var _state6 = state, date = _state6.date; var oldDate = new Date(date); var oldMonth = oldDate.getMonth(); var oldYear = oldDate.getFullYear(); var oldDay = oldDate.getUTCDate(); var value = inputVal || e.target.getAttribute('value'); if (name === 'month') { var newDate = new Date(oldYear, value, oldDay); var i = 1; while ('' + newDate.getMonth() !== '' + value && i < 10) { newDate = new Date(oldYear, value, oldDay - i); i++; } return setDate(toDateStr(newDate)); } return setDate(toDateStr(new Date(value, oldMonth, oldDay))); }; var toggleMobileState = function toggleMobileState() { var $wrapper = $(wrapper); if ($wrapper.hasClassName('isOpenMobile')) { $wrapper.removeClassName('isOpenMobile'); } else { $wrapper.addClassName('isOpenMobile'); } }; var keepSlotsScrollPosition = function keepSlotsScrollPosition() { var visibleSlot = element.querySelector('.appointmentSlots.slots .slot.active, .appointmentSlots.slots .slot:not(.disabled)'); element.querySelector('.appointmentSlots.slots').scrollTop = visibleSlot ? visibleSlot.offsetTop : 0; }; var handleUIUpdate = function handleUIUpdate() { try { var breakpoints = { 450: 'isLarge', 225: 'isNormal', 175: 'shouldBreakIntoNewLine' }; var offsetWidth = function () { try { var appointmentCalendarRow = element.querySelector('.appointmentFieldRow.forCalendar'); var appointmendCalendar = element.querySelector('.appointmentCalendar'); return appointmentCalendarRow.getBoundingClientRect().width - appointmendCalendar.getBoundingClientRect().width; } catch (e) { return null; } }(); if (offsetWidth === null || parseInt(wrapper.readAttribute('data-breakpoint-offset'), 10) === offsetWidth) { return; } var breakpoint = Object.keys(breakpoints).reduce(function (prev, curr) { return Math.abs(curr - offsetWidth) < Math.abs(prev - offsetWidth) ? curr : prev; }); var breakpointName = breakpoints[breakpoint]; wrapper.setAttribute('data-breakpoint', breakpointName); wrapper.setAttribute('data-breakpoint-offset', offsetWidth); } catch (e) { // noop. } }; var uiUpdateInterval = void 0; var effects = function effects() { clearInterval(uiUpdateInterval); var shouldLoad = changed.timezone && changed.timezone !== state.timezone || // time zone changed changed.date && getYearMonth(changed.date) !== getYearMonth(state.date); // y-m changed changed = {}; if (shouldLoad) { load(); } var cancelBtn = element.querySelector('.cancel'); if (cancelBtn) { cancelBtn.addEventListener('click', function () { setValue(undefined); }); } var forSelectedDate = element.querySelector('.forSelectedDate span'); if (forSelectedDate) { forSelectedDate.addEventListener('click', function () { setDate(state.value.split(' ')[0]); }); } element.querySelector('.calendar .days').addEventListener('click', handleDateChange); element.querySelector('.monthYearPicker').addEventListener('change', handleMonthYearChange); element.querySelector('.dayPicker').addEventListener('click', handleDateChange); element.querySelector('.timezonePicker').addEventListener('change', handleTimezoneChange); element.querySelector('.selectedDate').addEventListener('click', toggleMobileState); Array.prototype.slice.call(element.querySelectorAll('.monthYearPicker .pickerArrow')).forEach(function (el) { return el.addEventListener('click', handleMonthYearChange); }); Array.prototype.slice.call(element.querySelectorAll('.slot')).forEach(function (el) { return el.addEventListener('click', handleClick); }); keepSlotsScrollPosition(); uiUpdateInterval = setInterval(handleUIUpdate, 250); JotForm.runAllCalculations(); }; var renderMonthYearPicker = function renderMonthYearPicker() { var _state7 = state, date = _state7.date; var _split = (date || '-').split('-'), year = _split[0], month = _split[1]; var yearOpts = fillArray(new Array(20), '').map(function (v, i) { return '' + (2020 + i); }); return '\n <div class=\'monthYearPicker\'>\n <div class=\'pickerItem\'>\n <select class=\'pickerMonth\' data-name=\'month\'>\n ' + monthNames().map(function (monthName, i) { return '<option ' + (parseInt(month, 10) === i + 1 ? 'selected' : '') + ' value=\'' + i + '\'>' + monthName + '</option>'; }).join('') + '\n </select>\n <button type=\'button\' class=\'pickerArrow pickerMonthArrow prev\' value=\'' + (parseInt(month, 10) - 2) + '\' data-name=\'month\'></button>\n <button type=\'button\' class=\'pickerArrow pickerMonthArrow next\' value=\'' + parseInt(month, 10) + '\' data-name=\'month\'></button>\n </div>\n <div class=\'pickerItem\'>\n <select class=\'pickerYear\' data-name=\'year\'>\n ' + yearOpts.map(function (yearName) { return '<option ' + (year === yearName ? 'selected' : '') + '>' + yearName + '</option>'; }).join('') + '\n </select>\n <button type=\'button\' class=\'pickerArrow pickerYearArrow prev\' value=\'' + (parseInt(year, 10) - 1) + '\' data-name=\'year\' />\n <button type=\'button\' class=\'pickerArrow pickerYearArrow next\' value=\'' + (parseInt(year, 10) + 1) + '\' data-name=\'year\' />\n </div>\n </div>\n '; }; var getNav = function getNav() { var _state8 = state, availableDays = _state8.availableDays, dateStr = _state8.date; var next = void 0; var prev = void 0; var _dateStr$split2 = dateStr.split('-'), year = _dateStr$split2[0], month = _dateStr$split2[1]; if (availableDays) { var dayIndex = availableDays.indexOf(dateStr); if (dayIndex > 0) { prev = availableDays[dayIndex - 1]; } else { var prevDate = new Date(year, month - 1, 0); prev = toDateStr(prevDate); } if (dayIndex + 1 < availableDays.length) { next = availableDays[dayIndex + 1]; } else { var nextDate = new Date(year, month, 1); next = toDateStr(nextDate); } } return { prev: prev, next: next }; }; var renderDayPicker = function renderDayPicker() { var _state9 = state, loading = _state9.loading; var _getNav = getNav(), prev = _getNav.prev, next = _getNav.next; return '\n <div class=\'appointmentDayPicker dayPicker\'>\n <button type=\'button\' ' + (loading || !prev ? 'disabled' : '') + ' class="appointmentDayPickerButton prev" ' + (prev && 'data-value="' + prev + '"') + '>&lt;</button>\n <button type=\'button\' ' + (loading || !next ? 'disabled' : '') + ' class="appointmentDayPickerButton next" ' + (next && 'data-value="' + next + '"') + '>&gt;</button>\n </div>\n '; }; var renderTimezonePicker = function renderTimezonePicker() { var _state10 = state, timezone = _state10.timezone, timezones = _state10.timezones; return '\n <div class=\'timezonePickerWrapper\'> \n <select class=\'timezonePicker\'>\n ' + (!timezones.loading && timezones.map(function (_ref4) { var group = _ref4.group, cities = _ref4.cities; return '\n <optgroup label="' + group + '">\n ' + cities.map(function (val) { return '<option ' + (timezone.indexOf((group + '/' + val).split(' ')[0]) > -1 ? 'selected' : '') + ' value=\'' + group + '/' + val + '\'>' + val + '</option>'; }).join('') + '\n </optgroup>\n '; }).join('')) + '\n </select>\n <div class=\'timezonePickerName\'>' + timezone + '</div>\n </div>\n '; }; var renderCalendarDays = function renderCalendarDays() { var _state11 = state, slots = _state11.slots, dateStr = _state11.date, value = _state11.value, availableDays = _state11.availableDays; var days = slots ? Object.keys(slots) : []; var todayStr = toDateStr(new Date()); if (!days.length) { return ''; } var firstDay = getDay(new Date(days[0])); days.unshift.apply(days, fillArray(new Array(firstDay), 'precedingDay')); var trailingDays = Math.ceil(days.length / 7) * 7 - days.length; days.push.apply(days, fillArray(new Array(trailingDays), 'trailingDay')); var weeks = days.map(function (item, i) { return i % 7 === 0 ? days.slice(i, i + 7) : null; }).filter(function (a) { return a; }); var dateValue = value && value.split(' ')[0]; return '\n ' + weeks.map(function (week) { return '<div class=\'calendarWeek\'>' + week.map(function (day) { var dayObj = new Date(day); if (day === 'precedingDay' || day === 'trailingDay') { return '<div class="calendarDay ' + day + ' empty"></div>'; } var active = day === dateStr; var isToday = todayStr === day; var beforeStartDate = state.forcedStartDate ? state.forcedStartDate > dayObj : false; var afterEndDate = state.forcedEndDate ? state.forcedEndDate < dayObj : false; var isUnavailable = availableDays.indexOf(day) === -1 || beforeStartDate || afterEndDate; var isSelected = day === dateValue; var classes = 'calendarDay ' + classNames({ isSelected: isSelected, isToday: isToday, isUnavailable: isUnavailable, isActive: active }); return '<div class=\'' + classes + '\' data-value=\'' + day + '\'><span class=\'calendarDayEach\'>' + day.split('-')[2].replace(/^0/, '') + '</span></div>'; }).join('') + '</div>'; }).join('') + '\n '; }; var renderEmptyState = function renderEmptyState() { /* eslint-disable */ return '\n <div class="appointmentSlots-empty">\n <div class="appointmentSlots-empty-container">\n <div class="appointmentSlots-empty-icon">\n <svg width="124" height="102" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <defs>\n <path d="M55 32.001c0 21.54 17.46 39 39 39 3.457 0 6.81-.45 10-1.294v34.794H0v-104l71 .001c-9.7 7.095-16 18.561-16 31.5z" id="a"/>\n </defs>\n <g fill="none" fill-rule="evenodd">\n <g transform="translate(-1 -1)">\n <mask id="b" fill="#fff">\n <use xlink:href="#a"/>\n </mask>\n <g mask="url(#b)">\n <path d="M18.85 52.001c9.858 0 17.85 7.992 17.85 17.85 0 9.859-7.992 17.85-17.85 17.85S1 79.71 1 69.851c0-9.858 7.992-17.85 17.85-17.85zm5.666 10.842L17.38 69.98l-2.44-2.44a2.192 2.192 0 00-3.1 3.1l3.99 3.987a2.192 2.192 0 003.098 0l8.687-8.686a2.191 2.191 0 00-3.1-3.099z" fill="#D5D6DA"/>\n <path d="M92.043 10.643H81.597V7.576A6.582 6.582 0 0075.023 1a6.582 6.582 0 00-6.574 6.575v3.067H41.833V7.576A6.582 6.582 0 0035.26 1a6.582 6.582 0 00-6.574 6.575v3.149a2.187 2.187 0 00-.585-.082H19.37c-6.042 0-10.957 4.916-10.957 10.958v27.126a2.192 2.192 0 004.383 0V33.215h86.211a2.192 2.192 0 000-4.383H12.795v-7.231a6.582 6.582 0 016.574-6.575H28.1c.203 0 .398-.03.585-.08v2.82a6.582 6.582 0 006.574 6.574c3.625 0 10.574-2.95 10.574-6.574v-2.74H68.45v2.74a6.582 6.582 0 006.574 6.574c3.625 0 7.574-2.95 7.574-6.574v-2.74h9.446a6.582 6.582 0 016.574 6.575v73.072a3.95 3.95 0 01-3.946 3.945h-77.95a3.95 3.95 0 01-3.944-3.944v-5.67c0-1.047-.981-2.192-2.192-2.192-1.21 0-2.191.981-2.191 2.192v5.67c0 4.592 3.736 8.327 8.327 8.327h77.95c4.592 0 8.328-3.736 8.328-8.328V21.601c0-6.042-4.915-10.958-10.957-10.958zM37.45 17.766a2.194 2.194 0 01-2.191 2.191 2.194 2.194 0 01-2.191-2.191V7.576c0-1.209.983-2.192 2.19-2.192 1.21 0 2.192.983 2.192 2.192v10.19zm39.764 0a2.194 2.194 0 01-2.191 2.191 2.194 2.194 0 01-2.191-2.191V7.576c0-1.209.983-2.192 2.191-2.192 1.208 0 2.191.983 2.191 2.192v10.19z" fill="#D5D6DA" fill-rule="nonzero"/>\n <path d="M55.68 63.556c-4.592 0-8.328 3.736-8.328 8.327 0 4.592 3.736 8.328 8.327 8.328 4.592 0 8.328-3.736 8.328-8.328 0-4.591-3.736-8.327-8.328-8.327zm0 12.272a3.95 3.95 0 01-3.945-3.945 3.95 3.95 0 013.944-3.944 3.95 3.95 0 013.945 3.944 3.95 3.95 0 01-3.945 3.945zm26.854-12.272c-4.591 0-8.327 3.736-8.327 8.327 0 4.592 3.736 8.328 8.327 8.328 4.592 0 8.328-3.736 8.328-8.328 0-4.591-3.736-8.327-8.328-8.327zm0 12.272a3.95 3.95 0 01-3.944-3.945 3.95 3.95 0 013.944-3.944 3.95 3.95 0 013.945 3.944 3.95 3.95 0 01-3.945 3.945zM30.126 36.701c-4.591 0-8.327 3.736-8.327 8.328 0 4.591 3.736 8.327 8.327 8.327 4.592 0 8.328-3.736 8.328-8.327 0-4.592-3.736-8.328-8.328-8.328zm0 12.272a3.95 3.95 0 01-3.944-3.944 3.95 3.95 0 013.944-3.945 3.95 3.95 0 013.945 3.945 3.95 3.95 0 01-3.945 3.944z" fill="#D5D6DA" fill-rule="nonzero"/>\n <path d="M83.836 36.701c-4.592 0-8.328 3.736-8.328 8.328 0 4.591 3.736 8.327 8.328 8.327 4.591 0 8.327-3.736 8.327-8.327 0-4.592-3.736-8.328-8.327-8.328zm0 12.272a3.95 3.95 0 01-3.945-3.944 3.95 3.95 0 013.945-3.945 3.95 3.95 0 013.944 3.945 3.95 3.95 0 01-3.944 3.944z" fill="#2B3245" fill-rule="nonzero"/>\n <path d="M56.981 36.701c-4.592 0-8.327 3.736-8.327 8.328 0 4.591 3.735 8.327 8.327 8.327 4.592 0 8.327-3.736 8.327-8.327 0-4.592-3.735-8.328-8.327-8.328zm0 12.272a3.95 3.95 0 01-3.944-3.944 3.95 3.95 0 013.944-3.945 3.95 3.95 0 013.945 3.945 3.95 3.95 0 01-3.945 3.944z" fill="#D5D6DA" fill-rule="nonzero"/>\n <path d="M68.829 11.201l.001 6.375a6.375 6.375 0 006.146 6.371l.229.004a6.375 6.375 0 006.371-6.146l.004-.229-.001-6.375h6.871c6.627 0 12 5.373 12 12v8.4H11.2v-8.4c0-6.627 5.373-12 12-12h5.849l.001 6.75a6 6 0 005.775 5.996l.225.004h.375a6.375 6.375 0 006.375-6.375l-.001-6.375h27.03z" fill="#D5D6DA"/>\n </g>\n </g>\n <path d="M92 0c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32C60 14.327 74.327 0 92 0zm21.268 15.365L75.365 53.268A26.884 26.884 0 0092 59c14.912 0 27-12.088 27-27a26.88 26.88 0 00-5.732-16.635zM92 5C77.088 5 65 17.088 65 32c0 6.475 2.28 12.417 6.079 17.069l37.99-37.99A26.888 26.888 0 0092 5z" fill="#D5D6DA"/>\n </g>\n </svg>\n </div>\n <div class="appointmentSlots-empty-text">' + JotForm.texts.noSlotsAvailable + '</div>\n </div>\n </div>\n '; /* eslint-enable */ }; var dateWithAMPM = function dateWithAMPM() { var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var _props6 = props, _props6$timeFormat = _props6.timeFormat; _props6$timeFormat = _props6$timeFormat === undefined ? {} : _props6$timeFormat; var _props6$timeFormat$va = _props6$timeFormat.value, timeFormat = _props6$timeFormat$va === undefined ? '24 Hour' : _props6$timeFormat$va; var time = new Date(date.replace(/-/g, '/')).toLocaleTimeString('en-US', { hour: 'numeric', minute: 'numeric', hourCycle: timeFormat === 'AM/PM' ? 'h12' : 'h23' }); var day = date && date.split(' ')[0]; return day + ' ' + time; }; var renderSlots = function renderSlots() { var _state12 = state, dateStr = _state12.date, _state12$value = _state12.value, dateValue = _state12$value === undefined ? '' : _state12$value, _state12$defaultValue = _state12.defaultValue, defaultValue = _state12$defaultValue === undefined ? '' : _state12$defaultValue, timezone = _state12.timezone, forcedStartDate = _state12.forcedStartDate, forcedEndDate = _state12.forcedEndDate; var dateSlots = state.slots && state.slots[dateStr] || {}; var stateValue = dateWithAMPM(dateValue); var defaultValueTZ = revertDate(defaultValue, ' ', timezone); var parsedDefaultVal = dateWithAMPM(defaultValueTZ); var entries = objectEntries(dateSlots); if (!entries || !entries.length) { return renderEmptyState(); } return entries.map(function (_ref5) { var name = _ref5[0], value = _ref5[1]; var rn = amPmConverter(name); var slotValue = dateStr + ' ' + rn; var realD = dateInTimeZone(new Date(slotValue.replace(/-/g, '/'))); var active = stateValue === slotValue; var disabled = forcedStartDate && forcedStartDate > realD || forcedEndDate && forcedEndDate < realD || !(value || parsedDefaultVal === slotValue); return '<div class="appointmentSlot slot ' + classNames({ disabled: disabled, active: active }) + '" data-value="' + slotValue + '">' + name + '</div>'; }).join(''); }; var renderDay = function renderDay() { var _state13 = state, dateStr = _state13.date; var date = new Date(dateStr); var day = getDay(date); return '\n <div class=\'appointmentDate\'>\n ' + (dateStr && dayNames()[day] + ', ' + monthNames()[date.getUTCMonth()] + ' ' + intPrefix(date.getUTCDate())) + '\n </div>\n '; }; var renderCalendar = function renderCalendar() { var _state14 = state, dateStr = _state14.date; return '\n <div class=\'selectedDate\'>\n <input class=\'currentDate\' type=\'text\' value=\'' + toFormattedDateStr(dateStr) + '\' style=\'pointer-events: none;\' />\n </div>\n ' + renderMonthYearPicker() + '\n <div class=\'appointmentCalendarDays days\'>\n <div class=\'daysOfWeek\'>\n ' + dayNames().map(function (day) { return '<div class="dayOfWeek ' + day.toLowerCase() + '">' + day.toUpperCase().slice(0, 3) + '</div>'; }).join('') + '\n </div>\n ' + renderCalendarDays() + '\n </div>\n '; }; var renderSelectedDate = function renderSelectedDate() { var _state15 = state, _state15$value = _state15.value, value = _state15$value === undefined ? '' : _state15$value; var dateStr = value && value.split(' ')[0]; var _props7 = props, _props7$timeFormat = _props7.timeFormat; _props7$timeFormat = _props7$timeFormat === undefined ? {} : _props7$timeFormat; var _props7$timeFormat$va = _props7$timeFormat.value, timeFormat = _props7$timeFormat$va === undefined ? '24 Hour' : _props7$timeFormat$va; var date = new Date(dateStr); var time = new Date(value.replace(/-/g, '/')).toLocaleTimeString('en-US', { hour: 'numeric', minute: 'numeric', hourCycle: timeFormat === 'AM/PM' ? 'h12' : 'h23' }); var day = getDay(date); var datetime = dayNames()[day] + ', ' + monthNames()[date.getUTCMonth()] + ' ' + intPrefix(date.getUTCDate()) + ', ' + date.getFullYear(); var text = JotForm.texts.appointmentSelected.replace('{time}', time).replace('{date}', datetime); var valEl = '<div style=\'display: none\' class=\'jsAppointmentValue\'>' + datetime + ' ' + time + '</div>'; return value ? valEl + '<div class=\'appointmentFieldRow forSelectedDate\'><span>' + text + '</span><button type=\'button\' class=\'cancel\'>x</button></div>' : ''; }; var render = debounce(function () { var _state16 = state, loading = _state16.loading; beforeRender(); element.innerHTML = '\n <div class=\'appointmentFieldContainer\'>\n <div class=\'appointmentFieldRow forCalendar\'>\n <div class=\'calendar appointmentCalendar\'>\n <div class=\'appointmentCalendarContainer\'>\n ' + renderCalendar() + '\n </div>\n </div>\n <div class=\'appointmentDates\'>\n <div class=\'appointmentDateSelect\'>\n ' + renderDay() + '\n ' + renderDayPicker() + '\n </div>\n <div class=\'appointmentSlots slots ' + classNames({ isLoading: loading }) + '\'>\n <div class=\'appointmentSlotsContainer\'>\n ' + renderSlots() + '\n </div>\n </div>\n <div class=\'appointmentCalendarTimezone forTimezonePicker\'>\n ' + renderTimezonePicker() + '\n </div>\n </div>\n </div>\n ' + renderSelectedDate() + '\n </div>\n '; afterRender(); }); var _update = function _update(newProps) { state = assignObject({}, state, getStateFromProps(newProps)); props = newProps; load(); }; input.addEventListener('change', function (e) { if (!state.nyTz) return; var date = toDateTimeStr(dz(new Date(e.target.value.replace(/-/g, '/')), state.nyTz, getTimezoneOffset(state.timezone))); setDate(date.split(' ')[0]); setState({ value: date, defaultValue: date }); validation(date); }); tzInput.addEventListener('change', function (e) { var defaultTimezone = e.target.value; setTimezone(defaultTimezone); setState({ defaultTimezone: defaultTimezone }); }); document.addEventListener('translationLoad', function () { return render(); }); var getInitialData = function getInitialData(timezones) { getFirstAvailableDates(function (data) { var nyTz = -4; try { nyTz = getTimezoneOffset(timezones.find(function (_ref6) { var group = _ref6.group; return group === 'America'; }).cities.find(function (c) { return c.indexOf('New_York') > -1; })); } catch (e) { console.log(e); } JotForm.appointments.initialData = data; JotForm.nyTz = nyTz; JotForm.appointments.listeners.forEach(function (fn) { return fn({ data: data, timezones: timezones, nyTz: nyTz }); }); }); }; if (!JotForm.appointments) { JotForm.appointments = { listeners: [] }; loadTimezones(function (timezones) { JotForm.timezones = timezones; getInitialData(timezones); }); } var requestTry = 1; var requestTimeout = 1000; var construct = function construct(_ref7) { var data = _ref7.data, timezones = _ref7.timezones, nyTz = _ref7.nyTz; var qdata = data[props.id.value]; if (!qdata || qdata.error) { constructed = true; if (!qdata && requestTry < 4) { requestTry += 1; setTimeout(function () { getInitialData(JotForm.timezones); }, requestTry * requestTimeout); } return; } constructed = false; var userTimezone = getUserTimezone(); var setUpdatedTimezone = function setUpdatedTimezone(currentTimezone) { if (!currentTimezone) { return currentTimezone; } var _currentTimezone$spli = currentTimezone.split('/'), currentCont = _currentTimezone$spli[0], currCity = _currentTimezone$spli[1]; var currentCity = currCity && currCity.split(' (')[0]; var group = timezones.find(function (timezone) { return timezone.group === currentCont; }); if (!group) { return currentTimezone; } var matchedTimezone = group.cities.find(function (c) { return c.indexOf(currentCity) > -1; }); if (!matchedTimezone) return false; return group.group + '/' + matchedTimezone; }; var timezone = setUpdatedTimezone(userTimezone) || setUpdatedTimezone(props.timezone.value) || props.timezone.value; setTimezone(timezone); var dateStr = Object.keys(qdata)[0]; var _getDateRange2 = getDateRange(dateStr), startDate = _getDateRange2[0], endDate = _getDateRange2[1]; updateMonthData(startDate, endDate, qdata); var _state17 = state, availableDays = _state17.availableDays; var newDate = availableDays.indexOf(dateStr) === -1 ? availableDays[0] : dateStr; constructed = true; setState({ timezones: timezones, loading: false, date: newDate || dateStr, nyTz: nyTz }); setTimeout(function () { if (input.value) { input.triggerEvent('change'); } }, 100); }; JotForm.appointments.listeners.push(construct); if (JotForm.appointments.initialData) { setTimeout(function () { construct({ data: JotForm.appointments.initialData, timezones: JotForm.timezones, nyTz: JotForm.nyTz }); }, requestTimeout); } JotForm.appointments[props.id.value] = { update: function update(newProps) { return _update(assignObject(passedProps, newProps)); }, forceStartDate: function forceStartDate(newDate) { if (!newDate) { setState({ forcedStartDate: undefined }); return; } try { var forcedStartDate = new Date(newDate); if ('' + forcedStartDate === '' + state.forcedStartDate) return; var date = new Date(state.availableDays.find(function (d) { return new Date(d + ' 23:59:59') >= forcedStartDate; })); if (!date.getTime()) { date = forcedStartDate; } date = toDateStr(date); setState({ forcedStartDate: forcedStartDate, date: date }); } catch (e) { console.log(e); } }, forceEndDate: function forceEndDate(newDate) { if (!newDate) { setState({ forcedEndDate: undefined }); return; } try { var forcedEndDate = new Date(newDate); if ('' + forcedEndDate === '' + state.forcedEndDate) return; var availableDays = state.availableDays.filter(function (d) { return new Date(d + ' 00:00:00') <= forcedEndDate; }); var date = new Date(availableDays.indexOf(state.date) > -1 ? state.date : availableDays[availableDays.length - 1]); if (!date.getTime()) { date = forcedEndDate; } date = toDateStr(date); setState({ forcedEndDate: forcedEndDate, date: date }); } catch (e) { console.log(e); } }, getComparableValue: function getComparableValue() { return input.value && toDateTimeStr(dz(new Date(input.value.replace(/-/g, '/')), state.nyTz, getTimezoneOffset(props.timezone.value))) || ''; } }; return _update; })({"text":{"text":"Question","value":"Choose the time you'd like to audition."},"labelAlign":{"text":"Label Align","value":"Top","dropdown":[["Auto","Auto"],["Left","Left"],["Right","Right"],["Top","Top"]]},"required":{"text":"Required","value":"Yes","dropdown":[["No","No"],["Yes","Yes"]]},"description":{"text":"Hover Text","value":"","textarea":true},"slotDuration":{"text":"Slot Duration","value":"15","dropdown":[[15,"15 min"],[30,"30 min"],[45,"45 min"],[60,"60 min"],["custom","Custom min"]],"hint":"Select how long each slot will be."},"startDate":{"text":"Start Date","value":"2021-04-10"},"endDate":{"text":"End Date","value":"2021-04-10"},"intervals":{"text":"Intervals","value":[{"from":"10:00","to":"13:45","days":["Sat"]}],"hint":"The hours will be applied to the selected days and repeated."},"useBlockout":{"text":"Blockout Custom Dates","value":"No","dropdown":[["No","No"],["Yes","Yes"]],"hint":"Disable certain date(s) in the calendar."},"blockoutDates":{"text":"Blockout dates","value":[{"startDate":"","endDate":""}]},"useLunchBreak":{"text":"Lunch Time","value":"No","dropdown":[["No","No"],["Yes","Yes"]],"hint":"Enable lunchtime in the calendar."},"lunchBreak":{"text":"Lunchtime hours","value":[{"from":"12:00","to":"14:00"}]},"timezone":{"text":"Timezone","value":"America/New_York (GMT-04:00)"},"timeFormat":{"text":"Time Format","value":"AM/PM","dropdown":[["24 Hour","24 Hour"],["AM/PM","AM/PM"]],"icon":"images/blank.gif","iconClassName":"toolbar-time_format_24"},"months":{"value":["January","February","March","April","May","June","July","August","September","October","November","December"],"hidden":true},"days":{"value":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],"hidden":true},"startWeekOn":{"text":"Start Week On","value":"Sunday","dropdown":[["Monday","Monday"],["Sunday","Sunday"]],"toolbar":false},"rollingDays":{"text":"Rolling Days","value":"","toolbar":false},"appointmentType":{"hidden":true,"value":"single"},"dateFormat":{"hidden":true,"value":"mm/dd/yyyy"},"maxAttendee":{"hidden":true,"value":"5"},"maxEvents":{"hidden":true,"value":""},"minScheduleNotice":{"hidden":true,"value":""},"name":{"hidden":true,"value":"chooseThe"},"order":{"hidden":true,"value":"17"},"qid":{"toolbar":false,"value":"input_53"},"reminderEmails":{"hidden":true,"value":{"schedule":[{"value":"2","unit":"hour"}]}},"type":{"hidden":true,"value":"control_appointment"},"useReminderEmails":{"hidden":true,"value":"No"},"id":{"toolbar":false,"value":"53"},"qname":{"toolbar":false,"value":"q53_chooseThe"},"cdnconfig":{"CDN":"https://cdn.jotfor.ms/"},"passive":false,"formProperties":{"products":false,"highlightLine":"Enabled","coupons":false,"useStripeCoupons":false,"taxes":false,"comparePaymentForm":"","paymentListSettings":false,"newPaymentUIForNewCreatedForms":false,"formBackground":"#fff"},"formID":210874352707154,"themeVersion":"v1"}); JotForm.newDefaultTheme = false; JotForm.extendsNewTheme = false; JotForm.newPaymentUIForNewCreatedForms = false; /*INIT-END*/ }); JotForm.prepareCalculationsOnTheFly([null,{"name":"modelCasting","qid":"1","text":"Model Casting Form","type":"control_head"},null,{"name":"preferredName","qid":"3","subLabel":"","text":"Preferred Name","type":"control_textbox"},null,{"name":"emailAddress","qid":"5","text":"Email Address","type":"control_textbox"},null,null,null,null,null,null,null,null,null,{"name":"representation","qid":"15","subLabel":"Do you work with an agency?","text":"Representation?","type":"control_textbox"},null,null,null,null,null,null,null,null,null,null,null,null,null,{"name":"upload129","qid":"29","subLabel":"WE WANT TO SEE THE NATURAL FEATURES OF YOUR FACE AND HAIR. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE.","text":"UPLOAD 1 RECENT CLOSE UP IMAGE (VERTICAL FORMAT)","type":"control_fileupload"},{"name":"submit","qid":"30","text":"Submit","type":"control_button"},null,null,null,null,{"name":"suitdressSize","qid":"35","text":"Suit\u002FDress Size","type":"control_textbox"},null,{"name":"hairColor","qid":"37","text":"Hair Color","type":"control_textbox"},null,{"name":"tattoos","qid":"39","text":"Tattoos?","type":"control_textbox"},{"name":"eyeColor","qid":"40","text":"Eye Color","type":"control_textbox"},{"name":"areYou","qid":"41","subLabel":"This venue only permits 21+","text":"ARE YOU 21 YRS OR OLDER?","type":"control_textbox"},{"name":"theLabeled","qid":"42","subLabel":"*Note: There is no monetary compensation if booked for Labeled Blu Collection.","text":"The Labeled Blu Collection Grand Opening is on May 8th. Are you available on this date?","type":"control_textbox"},null,{"name":"upload1","qid":"44","subLabel":"WE WANT TO SEE THE SHAPE AND FIT OF YOUR FULL BODY. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE.","text":"UPLOAD 1 RECENT FULL BODY IMAGE (VERTICAL FORMAT)","type":"control_fileupload"},{"name":"cellNumber","qid":"45","text":"Cell Number","type":"control_textbox"},{"description":"","name":"name","qid":"46","text":"Name","type":"control_fullname"},{"description":"","name":"whatsYour","qid":"47","subLabel":"","text":"What's your IG and Facebook?","type":"control_textbox"},null,null,{"description":"","name":"doYou","qid":"50","subLabel":"","text":"Do you have any experience? If you do, please list below. ","type":"control_textbox"},null,null,{"description":"","name":"chooseThe","qid":"53","text":"Choose the time you'd like to audition.","type":"control_appointment"}]); setTimeout(function() { JotForm.paymentExtrasOnTheFly([null,{"name":"modelCasting","qid":"1","text":"Model Casting Form","type":"control_head"},null,{"name":"preferredName","qid":"3","subLabel":"","text":"Preferred Name","type":"control_textbox"},null,{"name":"emailAddress","qid":"5","text":"Email Address","type":"control_textbox"},null,null,null,null,null,null,null,null,null,{"name":"representation","qid":"15","subLabel":"Do you work with an agency?","text":"Representation?","type":"control_textbox"},null,null,null,null,null,null,null,null,null,null,null,null,null,{"name":"upload129","qid":"29","subLabel":"WE WANT TO SEE THE NATURAL FEATURES OF YOUR FACE AND HAIR. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE.","text":"UPLOAD 1 RECENT CLOSE UP IMAGE (VERTICAL FORMAT)","type":"control_fileupload"},{"name":"submit","qid":"30","text":"Submit","type":"control_button"},null,null,null,null,{"name":"suitdressSize","qid":"35","text":"Suit\u002FDress Size","type":"control_textbox"},null,{"name":"hairColor","qid":"37","text":"Hair Color","type":"control_textbox"},null,{"name":"tattoos","qid":"39","text":"Tattoos?","type":"control_textbox"},{"name":"eyeColor","qid":"40","text":"Eye Color","type":"control_textbox"},{"name":"areYou","qid":"41","subLabel":"This venue only permits 21+","text":"ARE YOU 21 YRS OR OLDER?","type":"control_textbox"},{"name":"theLabeled","qid":"42","subLabel":"*Note: There is no monetary compensation if booked for Labeled Blu Collection.","text":"The Labeled Blu Collection Grand Opening is on May 8th. Are you available on this date?","type":"control_textbox"},null,{"name":"upload1","qid":"44","subLabel":"WE WANT TO SEE THE SHAPE AND FIT OF YOUR FULL BODY. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE.","text":"UPLOAD 1 RECENT FULL BODY IMAGE (VERTICAL FORMAT)","type":"control_fileupload"},{"name":"cellNumber","qid":"45","text":"Cell Number","type":"control_textbox"},{"description":"","name":"name","qid":"46","text":"Name","type":"control_fullname"},{"description":"","name":"whatsYour","qid":"47","subLabel":"","text":"What's your IG and Facebook?","type":"control_textbox"},null,null,{"description":"","name":"doYou","qid":"50","subLabel":"","text":"Do you have any experience? If you do, please list below. ","type":"control_textbox"},null,null,{"description":"","name":"chooseThe","qid":"53","text":"Choose the time you'd like to audition.","type":"control_appointment"}]);}, 20); </script> <link href="https://cdn.jotfor.ms/static/formCss.css?3.3.24338" rel="stylesheet" type="text/css" /> <link type="text/css" media="print" rel="stylesheet" href="https://cdn.jotfor.ms/css/printForm.css?3.3.24338" /> <link type="text/css" rel="stylesheet" href="https://cdn.jotfor.ms/css/styles/nova.css?3.3.24338" /> <link type="text/css" rel="stylesheet" href="https://cdn.jotfor.ms/themes/CSS/566a91c2977cdfcd478b4567.css?themeRevisionID=59fb4852cf3bfe589c6c6f21"/> <link type="text/css" rel="stylesheet" href="https://cdn.jotfor.ms/css/styles/payment/payment_feature.css?3.3.24338" /> <style type="text/css"> .form-label-left{ width:150px; } .form-line{ padding-top:12px; padding-bottom:12px; } .form-label-right{ width:150px; } .form-all{ width:590px; color:#555 !important; font-family:"Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Verdana, sans-serif; font-size:14px; } </style> <style type="text/css" id="form-designer-style"> /* Injected CSS Code */ .form-label.form-label-auto { display: block; float: none; text-align: left; width: 100%; }/*PREFERENCES STYLE*/ .form-all { font-family: Lucida Grande, sans-serif; } .form-all .qq-upload-button, .form-all .form-submit-button, .form-all .form-submit-reset, .form-all .form-submit-print { font-family: Lucida Grande, sans-serif; } .form-all .form-pagebreak-back-container, .form-all .form-pagebreak-next-container { font-family: Lucida Grande, sans-serif; } .form-header-group { font-family: Lucida Grande, sans-serif; } .form-label { font-family: Lucida Grande, sans-serif; } .form-label.form-label-auto { display: block; float: none; text-align: left; width: 100%; } .form-line { margin-top: 12px 36px 12px 36px px; margin-bottom: 12px 36px 12px 36px px; } .form-all { max-width: 590px; width: 100%; } .form-label.form-label-left, .form-label.form-label-right, .form-label.form-label-left.form-label-auto, .form-label.form-label-right.form-label-auto { width: 150px; } .form-all { font-size: 14px } .form-all .qq-upload-button, .form-all .qq-upload-button, .form-all .form-submit-button, .form-all .form-submit-reset, .form-all .form-submit-print { font-size: 14px } .form-all .form-pagebreak-back-container, .form-all .form-pagebreak-next-container { font-size: 14px } .supernova .form-all, .form-all { background-color: #fff; } .form-all { color: #555; } .form-header-group .form-header { color: #555; } .form-header-group .form-subHeader { color: #555; } .form-label-top, .form-label-left, .form-label-right, .form-html, .form-checkbox-item label, .form-radio-item label { color: #555; } .form-sub-label { color: #6f6f6f; } .supernova { background-color: undefined; } .supernova body { background: transparent; } .form-textbox, .form-textarea, .form-dropdown, .form-radio-other-input, .form-checkbox-other-input, .form-captcha input, .form-spinner input { background-color: undefined; } .supernova { background-image: none; } #stage { background-image: none; } .form-all { background-image: none; } .form-all { position: relative; } .form-all:before { content: ""; background-image: url("https://www.jotform.com/uploads/cwatson.tv/form_files/Labeled_Blu_Collection_.6061eb7c66bea4.57727827.webp"); display: inline-block; height: 140px; position: absolute; background-size: 205px 140px; background-repeat: no-repeat; width: 100%; } .form-all { margin-top: 150px !important; } .form-all:before { top: -150px; background-position: top center; } .ie-8 .form-all:before { display: none; } .ie-8 { margin-top: auto; margin-top: initial; } /*PREFERENCES STYLE*//*__INSPECT_SEPERATOR__*/ /* Injected CSS Code */ </style> <form class="jotform-form" action="https://submit.jotform.com/submit/210874352707154/" method="post" enctype="multipart/form-data" name="form_210874352707154" id="210874352707154" accept-charset="utf-8" autocomplete="on"> <input type="hidden" name="formID" value="210874352707154" /> <input type="hidden" id="JWTContainer" value="" /> <input type="hidden" id="cardinalOrderNumber" value="" /> <div role="main" class="form-all"> <ul class="form-section page-section"> <li id="cid_1" class="form-input-wide" data-type="control_head"> <div class="form-header-group header-small"> <div class="header-text httac htvam"> <h3 id="header_1" class="form-header" data-component="header"> Model Casting Form </h3> </div> </div> </li> <li class="form-line jf-required" data-type="control_fullname" id="id_46"> <label class="form-label form-label-top form-label-auto" id="label_46" for="first_46"> Name <span class="form-required"> * </span> </label> <div id="cid_46" class="form-input-wide jf-required"> <div data-wrapper-react="true"> <span class="form-sub-label-container" style="vertical-align:top" data-input-type="first"> <input type="text" id="first_46" name="q46_name[first]" class="form-textbox validate[required]" size="10" value="" data-component="first" aria-labelledby="label_46 sublabel_46_first" required="" /> <label class="form-sub-label" for="first_46" id="sublabel_46_first" style="min-height:13px" aria-hidden="false"> First Name </label> </span> <span class="form-sub-label-container" style="vertical-align:top" data-input-type="last"> <input type="text" id="last_46" name="q46_name[last]" class="form-textbox validate[required]" size="15" value="" data-component="last" aria-labelledby="label_46 sublabel_46_last" required="" /> <label class="form-sub-label" for="last_46" id="sublabel_46_last" style="min-height:13px" aria-hidden="false"> Last Name </label> </span> </div> </div> </li> <li class="form-line form-line-column form-col-1" data-type="control_textbox" id="id_3"> <label class="form-label form-label-top" id="label_3" for="input_3"> Preferred Name </label> <div id="cid_3" class="form-input-wide"> <input type="text" id="input_3" name="q3_preferredName" data-type="input-textbox" class="form-textbox" size="25" value="" placeholder=" " data-component="textbox" aria-labelledby="label_3" /> </div> </li> <li class="form-line form-line-column form-col-2 jf-required" data-type="control_textbox" id="id_5"> <label class="form-label form-label-top" id="label_5" for="input_5"> Email Address <span class="form-required"> * </span> </label> <div id="cid_5" class="form-input-wide jf-required"> <input type="text" id="input_5" name="q5_emailAddress" data-type="input-textbox" class="form-textbox validate[required, Email]" size="25" value="" placeholder=" " data-component="textbox" aria-labelledby="label_5" required="" /> </div> </li> <li class="form-line form-line-column form-col-3 jf-required" data-type="control_textbox" id="id_45"> <label class="form-label form-label-left" id="label_45" for="input_45"> Cell Number <span class="form-required"> * </span> </label> <div id="cid_45" class="form-input jf-required"> <input type="text" id="input_45" name="q45_cellNumber" data-type="input-textbox" class="form-textbox validate[required, Numeric]" size="25" value="" placeholder=" " data-component="textbox" aria-labelledby="label_45" required="" /> </div> </li> <li class="form-line form-line-column form-col-4 jf-required" data-type="control_textbox" id="id_35"> <label class="form-label form-label-top" id="label_35" for="input_35"> Suit/Dress Size <span class="form-required"> * </span> </label> <div id="cid_35" class="form-input-wide jf-required"> <input type="text" id="input_35" name="q35_suitdressSize" data-type="input-textbox" class="form-textbox validate[required]" size="6" value="" placeholder=" " data-component="textbox" aria-labelledby="label_35" required="" /> </div> </li> <li class="form-line form-line-column form-col-5 jf-required" data-type="control_textbox" id="id_37"> <label class="form-label form-label-top" id="label_37" for="input_37"> Hair Color <span class="form-required"> * </span> </label> <div id="cid_37" class="form-input-wide jf-required"> <input type="text" id="input_37" name="q37_hairColor" data-type="input-textbox" class="form-textbox validate[required]" size="8" value="" placeholder=" " data-component="textbox" aria-labelledby="label_37" required="" /> </div> </li> <li class="form-line form-line-column form-col-6 jf-required" data-type="control_textbox" id="id_40"> <label class="form-label form-label-top" id="label_40" for="input_40"> Eye Color <span class="form-required"> * </span> </label> <div id="cid_40" class="form-input-wide jf-required"> <input type="text" id="input_40" name="q40_eyeColor" data-type="input-textbox" class="form-textbox validate[required]" size="8" value="" placeholder=" " data-component="textbox" aria-labelledby="label_40" required="" /> </div> </li> <li class="form-line form-line-column form-col-7 jf-required" data-type="control_textbox" id="id_39"> <label class="form-label form-label-top" id="label_39" for="input_39"> Tattoos? <span class="form-required"> * </span> </label> <div id="cid_39" class="form-input-wide jf-required"> <input type="text" id="input_39" name="q39_tattoos" data-type="input-textbox" class="form-textbox validate[required]" size="5" value="" placeholder=" " data-component="textbox" aria-labelledby="label_39" required="" /> </div> </li> <li class="form-line form-line-column form-col-8 jf-required" data-type="control_textbox" id="id_41"> <label class="form-label form-label-top" id="label_41" for="input_41"> ARE YOU 21 YRS OR OLDER? <span class="form-required"> * </span> </label> <div id="cid_41" class="form-input-wide jf-required"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="text" id="input_41" name="q41_areYou" data-type="input-textbox" class="form-textbox validate[required]" size="5" value="" placeholder=" " data-component="textbox" aria-labelledby="label_41 sublabel_input_41" required="" /> <label class="form-sub-label" for="input_41" id="sublabel_input_41" style="min-height:13px" aria-hidden="false"> This venue only permits 21+ </label> </span> </div> </li> <li class="form-line form-line-column form-col-1 form-line-column-clear" data-type="control_textbox" id="id_15"> <label class="form-label form-label-top" id="label_15" for="input_15"> Representation? </label> <div id="cid_15" class="form-input-wide"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="text" id="input_15" name="q15_representation" data-type="input-textbox" class="form-textbox" size="20" value="" placeholder=" " data-component="textbox" aria-labelledby="label_15 sublabel_input_15" /> <label class="form-sub-label" for="input_15" id="sublabel_input_15" style="min-height:13px" aria-hidden="false"> Do you work with an agency? </label> </span> </div> </li> <li class="form-line form-line-column form-col-2" data-type="control_textbox" id="id_42"> <label class="form-label form-label-top" id="label_42" for="input_42"> The Labeled Blu Collection Grand Opening is on May 8th. Are you available on this date? </label> <div id="cid_42" class="form-input-wide"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="text" id="input_42" name="q42_theLabeled" data-type="input-textbox" class="form-textbox" size="60" value="" placeholder=" " data-component="textbox" aria-labelledby="label_42 sublabel_input_42" /> <label class="form-sub-label" for="input_42" id="sublabel_input_42" style="min-height:13px" aria-hidden="false"> *Note: There is no monetary compensation if booked for Labeled Blu Collection. </label> </span> </div> </li> <li class="form-line" data-type="control_textbox" id="id_50"> <label class="form-label form-label-top form-label-auto" id="label_50" for="input_50"> Do you have any experience? If you do, please list below. </label> <div id="cid_50" class="form-input-wide"> <input type="text" id="input_50" name="q50_doYou" data-type="input-textbox" class="form-textbox" size="20" value="" data-component="textbox" aria-labelledby="label_50" /> </div> </li> <li class="form-line jf-required" data-type="control_textbox" id="id_47"> <label class="form-label form-label-top form-label-auto" id="label_47" for="input_47"> What's your IG and Facebook? <span class="form-required"> * </span> </label> <div id="cid_47" class="form-input-wide jf-required"> <input type="text" id="input_47" name="q47_whatsYour" data-type="input-textbox" class="form-textbox validate[required]" size="20" value="" data-component="textbox" aria-labelledby="label_47" required="" /> </div> </li> <li class="form-line form-line-column form-col-1 jf-required" data-type="control_fileupload" id="id_29"> <label class="form-label form-label-top" id="label_29" for="input_29"> UPLOAD 1 RECENT CLOSE UP IMAGE (VERTICAL FORMAT) <span class="form-required"> * </span> </label> <div id="cid_29" class="form-input-wide jf-required"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="file" id="input_29" name="q29_upload129" class="form-upload validate[required]" data-imagevalidate="yes" data-file-accept="pdf, doc, docx, xls, csv, txt, rtf, html, zip, mp3, wma, mpg, flv, avi, jpg, jpeg, png, gif" data-file-maxsize="10240" data-file-minsize="0" data-file-limit="2" data-component="fileupload" required="" /> <label class="form-sub-label" for="input_29" style="min-height:13px" aria-hidden="false"> WE WANT TO SEE THE NATURAL FEATURES OF YOUR FACE AND HAIR. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE. </label> </span> </div> </li> <li class="form-line form-line-column form-col-2 jf-required" data-type="control_fileupload" id="id_44"> <label class="form-label form-label-top" id="label_44" for="input_44"> UPLOAD 1 RECENT FULL BODY IMAGE (VERTICAL FORMAT) <span class="form-required"> * </span> </label> <div id="cid_44" class="form-input-wide jf-required"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="file" id="input_44" name="q44_upload1" class="form-upload validate[required]" data-imagevalidate="yes" data-file-accept="pdf, doc, docx, xls, csv, txt, rtf, html, zip, mp3, wma, mpg, flv, avi, jpg, jpeg, png, gif" data-file-maxsize="10240" data-file-minsize="0" data-file-limit="2" data-component="fileupload" required="" /> <label class="form-sub-label" for="input_44" style="min-height:13px" aria-hidden="false"> WE WANT TO SEE THE SHAPE AND FIT OF YOUR FULL BODY. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE. </label> </span> </div> </li> <li class="form-line jf-required" data-type="control_appointment" id="id_53"> <label class="form-label form-label-top" id="label_53" for="input_53"> Choose the time you'd like to audition. <span class="form-required"> * </span> </label> <div id="cid_53" class="form-input-wide jf-required"> <div id="input_53" class="appointmentFieldWrapper jfQuestion-fields"> <input class="appointmentFieldInput validate" name="q53_chooseThe[date]" id="input_53_date" /> <input class="appointmentFieldInput" name="q53_chooseThe[duration]" value="15" id="input_53_duration" /> <input class="appointmentFieldInput" name="q53_chooseThe[timezone]" value="America/New_York (GMT-04:00)" id="input_53_timezone" /> <div class="appointmentField"> </div> </div> </div> </li> <li class="form-line" data-type="control_button" id="id_30"> <div id="cid_30" class="form-input-wide"> <div style="margin-left:156px" data-align="auto" class="form-buttons-wrapper form-buttons-auto jsTest-button-wrapperField"> <button id="input_30" type="submit" class="form-submit-button submit-button jf-form-buttons jsTest-submitField" data-component="button" data-content=""> Submit </button> </div> </div> </li> <li style="clear:both"> </li> <li style="display:none"> Should be Empty: <input type="text" name="website" value="" /> </li> </ul> </div> <script> JotForm.showJotFormPowered = "new_footer"; </script> <script> JotForm.poweredByText = "Powered by JotForm"; </script> <input type="hidden" class="simple_spc" id="simple_spc" name="simple_spc" value="210874352707154" /> <script type="text/javascript"> var all_spc = document.querySelectorAll("form[id='210874352707154'] .si" + "mple" + "_spc"); for (var i = 0; i < all_spc.length; i++) { all_spc[i].value = "210874352707154-210874352707154"; } </script> <div class="formFooter-heightMask"> </div> <div class="formFooter f6"> <div class="formFooter-wrapper formFooter-leftSide"> <a href="https://www.jotform.com/?utm_source=formfooter&utm_medium=banner&utm_term=210874352707154&utm_content=jotform_logo&utm_campaign=powered_by_jotform_le" target="_blank" class="formFooter-logoLink"><img class="formFooter-logo" src="https://cdn.jotfor.ms/assets/img/logo/logo-new@1x.png" alt="Jotform Logo"></a> </div> <div class="formFooter-wrapper formFooter-rightSide"> <span class="formFooter-text"> Now create your own JotForm - It's free! </span> <a class="formFooter-button" href="https://www.jotform.com/?utm_source=formfooter&utm_medium=banner&utm_term=210874352707154&utm_content=jotform_button&utm_campaign=powered_by_jotform_le" target="_blank">Create your own JotForm</a> </div> </div> </form> <script src="https://cdn.jotfor.ms/js/vendor/imageinfo.js?v=3.3.24338" type="text/javascript"></script> <script src="https://cdn.jotfor.ms/static/prototype.forms.js" type="text/javascript"></script> <script src="https://cdn.jotfor.ms/static/jotform.forms.js?3.3.24338" type="text/javascript"></script> <script type="text/javascript"> JotForm.init(function(){ if (window.JotForm && JotForm.accessible) $('input_3').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_5').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_45').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_35').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_37').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_40').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_39').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_41').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_15').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_42').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_50').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_47').setAttribute('tabindex',0); JotForm.calendarMonths = ["January","February","March","April","May","June","July","August","September","October","November","December"]; JotForm.calendarDays = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]; JotForm.calendarOther = "Today"; JotForm.checkAppointmentAvailability = function checkAppointmentAvailability(day, slot, data) { if (!(day && slot && data && data[day])) return false; return data[day][slot]; }; (function init(props) { var PREFIX = window.location.href.indexOf('jotform.pro') > -1 || window.location.pathname.indexOf('build') > -1 || window.location.pathname.indexOf('form-templates') > -1 || window.location.pathname.indexOf('pdf-templates') > -1 || window.location.pathname.indexOf('table-templates') > -1 ? '/server.php' : JotForm.server; // boilerplate var effectsOut = null; var changed = {}; var constructed = false; var _window = window, document = _window.document; var wrapper = document.querySelector('#' + props.qid.value); var element = wrapper.querySelector('.appointmentField'); var input = wrapper.querySelector('#input_' + props.id.value + '_date'); var tzInput = wrapper.querySelector('#input_' + props.id.value + '_timezone'); function debounce(func, wait, immediate) { var timeout = void 0; return function wrappedFN() { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var context = this; var later = function later() { timeout = null; if (!immediate) func.apply.apply(func, [context].concat(args)); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply.apply(func, [context].concat(args)); }; } var classNames = function classNames(obj) { return Object.keys(obj).reduce(function (acc, key) { if (!obj[key]) return acc; return [].concat(acc, [key]); }, []).join(' '); }; var assignObject = function assignObject() { for (var _len2 = arguments.length, objects = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { objects[_key2] = arguments[_key2]; } return objects.reduce(function (acc, obj) { Object.keys(obj).forEach(function (key) { acc[key] = obj[key]; }); return acc; }, {}); }; var objectEntries = function objectEntries(obj) { return Object.keys(obj).reduce(function (acc, key) { var value = obj[key]; var pair = [key, value]; return [].concat(acc, [pair]); }, []); }; var fillArray = function fillArray(arr, value) { var newArr = []; for (var i = 0; i < arr.length; i++) { newArr.push(value); } return newArr; }; var getJSON = function getJSON(url, cb) { return new Ajax.Request(url, { evalJSON: 'force', method: 'GET', onComplete: function onComplete(response) { return cb(response.responseJSON); } }); }; var beforeRender = function beforeRender() { if (effectsOut) { effectsOut(); effectsOut = null; } }; var afterRender = function afterRender() { effectsOut = effects(); }; var setState = function setState(newState) { var changedKeys = Object.keys(newState).filter(function (key) { return state[key] !== newState[key]; }); if (!changedKeys.length) { return; } changed = changedKeys.reduce(function (acc, key) { var _assignObject; return assignObject({}, acc, (_assignObject = {}, _assignObject[key] = state[key], _assignObject)); }, changed); state = assignObject({}, state, newState); if (constructed) { render(); } }; var isStartWeekOnMonday = function isStartWeekOnMonday() { var _props = props, startDay = _props.startWeekOn.value; return !startDay || startDay === 'Monday'; }; var monthNames = function monthNames() { return (JotForm.calendarMonthsTranslated || JotForm.calendarMonths || _Utils.specialOptions.Months.value).map(function (monthName) { return String.prototype.locale ? monthName.locale() : monthName; }); }; var daysOfWeek = function daysOfWeek() { return (JotForm.calendarDaysTranslated || JotForm.calendarDays || _Utils.specialOptions.Days.value).map(function (dayName) { return String.prototype.locale ? dayName.locale() : dayName; }); }; // we need remove unnecessary "Sunday", if there is time field on the form var dayNames = function dayNames() { var days = daysOfWeek().length === 8 ? daysOfWeek().slice(1) : daysOfWeek(); return isStartWeekOnMonday() ? days : [days[days.length - 1]].concat(days.slice(0, 6)); }; var oneHour = 1000 * 60 * 60; // const oneDay = oneHour * 24; var intPrefix = function intPrefix(d) { if (d < 10) { return '0' + d; } return '' + d; }; var toFormattedDateStr = function toFormattedDateStr(date) { var _props2 = props, _props2$dateFormat$va = _props2.dateFormat.value, format = _props2$dateFormat$va === undefined ? 'yyyy-mm-dd' : _props2$dateFormat$va; if (!date) return; if (typeof date === 'string') { var _date$split = date.split('-'), _year = _date$split[0], _month = _date$split[1], _day = _date$split[2]; return format.replace(/yyyy/, _year).replace(/mm/, _month).replace(/dd/, _day); } var year = date.getFullYear(); var month = intPrefix(date.getMonth() + 1); var day = intPrefix(date.getUTCDate()); return format.replace(/yyyy/, year).replace(/mm/, month).replace(/dd/, day); }; var toDateStr = function toDateStr(date) { if (!date) return; var year = date.getFullYear(); var month = intPrefix(date.getMonth() + 1); var day = intPrefix(date.getDate()); return year + '-' + month + '-' + day; }; var toDateTimeStr = function toDateTimeStr(date) { if (!date) return; var ymd = toDateStr(date); var hour = intPrefix(date.getHours()); var minute = intPrefix(date.getMinutes()); return ymd + ' ' + hour + ':' + minute; }; var getTimezoneOffset = function getTimezoneOffset(timezone) { if (!timezone) { return 0; } var cityArgs = timezone.split(' '); var splitted = cityArgs[cityArgs.length - 1].replace(/\(GMT|\)/g, '').split(':'); if (!splitted) { return 0; } return parseInt(splitted[0] || 0, 10) + (parseInt(splitted[1] || 0, 10) / 60 || 0); }; var getGMTSuffix = function getGMTSuffix(offset) { if (offset === 0) { return ''; } var offsetMinutes = Math.abs(offset) % 60; var offsetHours = Math.abs(offset - offsetMinutes) / 60; var str = intPrefix(offsetHours) + ':' + intPrefix(offsetMinutes); if (offset < 0) { return '+' + str; } return '-' + str; }; // const toJSDate = (dateStr, timezone) => { // if (!dateStr) return; // const gmtSuffix = getGMTSuffix(timezone || state.timezone); // return new Date(`${dateStr} GMT${gmtSuffix}`); // }; var getYearMonth = function getYearMonth(date) { if (!date) return; var _date$split2 = date.split('-'), y = _date$split2[0], m = _date$split2[1]; return y + '-' + m; }; var getMondayBasedDay = function getMondayBasedDay(date) { var day = date.getUTCDay(); if (day === 0) { return 6; // sunday index } return day - 1; }; var getDay = function getDay(date) { return isStartWeekOnMonday() ? getMondayBasedDay(date) : date.getUTCDay(); }; var getUserTimezone = function getUserTimezone() { try { var tzStr = Intl.DateTimeFormat().resolvedOptions().timeZone; if (tzStr) { var tz = tzStr + ' (GMT' + getGMTSuffix(new Date().getTimezoneOffset()) + ')'; return tz; } } catch (e) { console.error(e.message); } return props.timezone.value; }; var passedProps = props; var getStateFromProps = function getStateFromProps() { var newProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var startDate = new Date(newProps.startDate ? newProps.startDate.value : ''); var today = new Date(); var date = toDateStr(new Date(Math.max(startDate, today) || today)); return { date: date, timezones: state ? state.timezones : { loading: true } }; }; var getFirstAvailableDates = function getFirstAvailableDates(cb) { var _props3 = props, _props3$formID = _props3.formID, formID = _props3$formID === undefined ? global.__formInfo.id : _props3$formID; var _state = state, _state$timezone = _state.timezone, timezone = _state$timezone === undefined ? getUserTimezone() : _state$timezone; if (!formID || !timezone) return; // eslint-disable-next-line max-len var url = PREFIX + '?action=getAppointments&formID=' + formID + '&timezone=' + encodeURIComponent(timezone) + '&ncTz=' + new Date().getTime() + '&firstAvailableDates'; return getJSON(url, function (_ref) { var content = _ref.content; return cb(content); }); }; var state = getStateFromProps(props); var loadTimezones = function loadTimezones(cb) { setState({ timezones: { loading: true } }); getJSON((props.cdnconfig.CDN || '/') + 'assets/form/timezones.json?ncTz=' + new Date().getTime(), function (data) { var timezones = objectEntries(data).reduce(function (acc, _ref2) { var group = _ref2[0], cities = _ref2[1]; acc.push({ group: group, cities: cities }); return acc; }, []); cb(timezones); }); }; var loadMonthData = function loadMonthData(startDate, endDate, cb) { var _props4 = props, _props4$formID = _props4.formID, formID = _props4$formID === undefined ? (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' ? global.__formInfo.id : null : _props4$formID, id = _props4.id.value; var _state2 = state, timezone = _state2.timezone; if (!formID || !timezone) return; // eslint-disable-next-line max-len var url = PREFIX + '?action=getAppointments&formID=' + formID + '&qid=' + id + '&timezone=' + encodeURIComponent(timezone) + '&startDate=' + toDateStr(startDate) + '&endDate=' + toDateStr(endDate) + '&ncTz=' + new Date().getTime(); return getJSON(url, function (_ref3) { var data = _ref3.content; return cb(data); }); }; var generateMonthData = function generateMonthData(startDate, endDate, data) { var d1 = startDate.getDate(); var d2 = endDate.getDate(); var dPrefix = startDate.getFullYear() + '-' + intPrefix(startDate.getMonth() + 1) + '-'; var daysLength = d2 - d1 + 1 || 0; var days = fillArray(new Array(daysLength), ''); var slots = days.reduce(function (acc, x, day) { var _assignObject2; var dayStr = '' + dPrefix + intPrefix(day + 1); return assignObject(acc, (_assignObject2 = {}, _assignObject2[dayStr] = data[dayStr] || false, _assignObject2)); }, {}); var availableDays = Object.keys(data).filter(function (d) { return !Array.isArray(slots[d]) && !!slots[d]; }); return { availableDays: availableDays, slots: slots }; }; var lastReq = void 0; var updateMonthData = function updateMonthData(startDate, endDate, data) { var _generateMonthData = generateMonthData(startDate, endDate, data), availableDays = _generateMonthData.availableDays, slots = _generateMonthData.slots; if (JSON.stringify(slots) === JSON.stringify(state.slots)) { return; } setState({ availableDays: availableDays, slots: slots }); }; var getDateRange = function getDateRange(dateStr) { var _dateStr$split = dateStr.split('-'), y = _dateStr$split[0], m = _dateStr$split[1]; var startDate = new Date(y, m - 1, 1); var endDate = new Date(y, m, 0); return [startDate, endDate]; }; var load = function load() { var _state3 = state, dateStr = _state3.date; var _getDateRange = getDateRange(dateStr), startDate = _getDateRange[0], endDate = _getDateRange[1]; setState(assignObject({ loading: true }, generateMonthData(startDate, endDate, {}))); var req = loadMonthData(startDate, endDate, function (data) { if (lastReq !== req) { return; } updateMonthData(startDate, endDate, data); var _state4 = state, availableDays = _state4.availableDays, forcedStartDate = _state4.forcedStartDate, forcedEndDate = _state4.forcedEndDate, slots = _state4.slots; var firstAvailable = availableDays.find(function (d) { var foundSlot = Object.keys(slots[d]).find(function (slot) { var slotDate = dateInTimeZone(new Date((d + ' ' + slot).replace(/-/g, '/'))); if (forcedStartDate && slotDate > forcedStartDate) return false; if (forcedEndDate && slotDate < forcedEndDate) return false; return true; }); return foundSlot; }); var newDate = availableDays.indexOf(dateStr) === -1 && firstAvailable; setState({ loading: false, date: newDate || dateStr }); }); lastReq = req; }; var dateInTimeZone = function dateInTimeZone(date) { var timezone = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : state.timezone; if (!date) return; var diffTime = (getTimezoneOffset(timezone) - state.nyTz) * oneHour; return new Date(date.getTime() - diffTime); }; var dz = function dz(date, tz1, tz2) { if (!date) return; var diffTime = (tz1 - tz2) * oneHour; return new Date(date.getTime() - diffTime); }; var revertDate = function revertDate(d, t1, t2) { if (!d) return ''; var pDate = new Date(d.replace(/-/, '/')); var utz = getTimezoneOffset(getUserTimezone()); var tz1 = getTimezoneOffset(t1) - utz; var tz2 = getTimezoneOffset(t2) - utz; var val = dz(pDate, tz1, tz2); return toDateTimeStr(val); }; var amPmConverter = function amPmConverter(_time) { var _props5 = props, _props5$timeFormat = _props5.timeFormat; _props5$timeFormat = _props5$timeFormat === undefined ? {} : _props5$timeFormat; var _props5$timeFormat$va = _props5$timeFormat.value, timeFormat = _props5$timeFormat$va === undefined ? '24 Hour' : _props5$timeFormat$va; if (!_time || !(typeof _time === 'string') || _time.indexOf('M') > -1 || !timeFormat || timeFormat === '24 Hour') { return _time; } var time = _time.substring(0, 2); var hour = time % 12 || 12; var ampm = time < 12 ? 'AM' : 'PM'; return '' + hour + _time.substring(2, 5) + ' ' + ampm; }; var validate = function validate(dateStr, cb) { var _state5 = state, defaultValue = _state5.defaultValue; if (JotForm.isEditMode() && defaultValue === dateStr) { return cb(true); } var parts = dateStr.split(' '); var slot = parts.slice(1).join(' '); var _parts$0$split = parts[0].split('-'), y = _parts$0$split[0], m = _parts$0$split[1], d = _parts$0$split[2]; var startDate = new Date(y, m - 1, 1); var endDate = new Date(y, m, 0); loadMonthData(startDate, endDate, function (data) { var day = y + '-' + m + '-' + d; var isValid = JotForm.checkAppointmentAvailability(day, amPmConverter(slot), data); cb(isValid); if (!isValid) { var _assignObject3; // add unavailable slot if it is not in response for deselection data[day] = assignObject({}, data[day], (_assignObject3 = {}, _assignObject3[slot] = false, _assignObject3)); } // still in same month if (state.date.indexOf(y + '-' + m) === 0) { updateMonthData(startDate, endDate, data); } }); }; // let validationInterval; var validation = function validation(_value) { var shouldValidate = _value || $(input).hasClassName('validate'); if (!shouldValidate) { $(input).addClassName('valid'); JotForm.corrected(input); JotForm.runConditionForId(props.id.value); return; } if (!_value) { $(input).removeClassName('valid'); JotForm.errored(input, JotForm.texts.required); JotForm.runConditionForId(props.id.value); return; } validate(_value, function (isValid) { if (isValid) { $(input).addClassName('valid'); JotForm.corrected(input); JotForm.runConditionForId(props.id.value); return; } // clearInterval(validationInterval); var parts = _value.split(' '); var dateStr = parts[0]; var date = new Date(dateStr); var day = getDay(date); var datetime = dayNames()[day] + ', ' + monthNames()[date.getMonth()] + ' ' + intPrefix(date.getUTCDate()) + ', ' + date.getFullYear(); var time = parts.slice(1).join(' '); var errorText = JotForm.texts.slotUnavailable.replace('{time}', time).replace('{date}', datetime); $(input).removeClassName('valid'); JotForm.errored(input, errorText); JotForm.runConditionForId(props.id.value); }); }; var setValue = function setValue(value) { input.value = value ? toDateTimeStr(dateInTimeZone(new Date(value.replace(/-/g, '/')))) : ''; setState({ value: value }); // trigger input event for supporting progress bar widget input.triggerEvent('input'); // clearInterval(validationInterval); validation(value); // validationInterval = setInterval(() => { validation(state.value); }, 1000 * 5); }; var handleClick = function handleClick(e) { var target = e.target; var $target = $(target); if (!$target || !$target.hasClassName) { return; } if ($target.hasClassName('disabled') && !$target.hasClassName('active')) { return; } e.preventDefault(); var value = target.dataset.value; setValue($target.hasClassName('active') ? undefined : value); }; var setTimezone = function setTimezone(timezone) { tzInput.value = timezone; setState({ timezone: timezone }); if (input.value) { var date = toDateTimeStr(dz(new Date(input.value.replace(/-/g, '/')), state.nyTz, getTimezoneOffset(state.timezone))); setDate(date.split(' ')[0]); setState({ value: date }); } }; var handleTimezoneChange = function handleTimezoneChange(e) { var target = e.target; var timezone = target.value; setTimezone(timezone); }; var setDate = function setDate(date) { return setState({ date: date }); }; var handleDateChange = function handleDateChange(e) { var target = e.target; var date = target.dataset.value; if (!date) return; setDate(date); }; var handleMonthYearChange = function handleMonthYearChange(e) { var _e$target = e.target, dataset = _e$target.dataset, inputVal = _e$target.value; var name = dataset.name; if (!name) { return; } var _state6 = state, date = _state6.date; var oldDate = new Date(date); var oldMonth = oldDate.getMonth(); var oldYear = oldDate.getFullYear(); var oldDay = oldDate.getUTCDate(); var value = inputVal || e.target.getAttribute('value'); if (name === 'month') { var newDate = new Date(oldYear, value, oldDay); var i = 1; while ('' + newDate.getMonth() !== '' + value && i < 10) { newDate = new Date(oldYear, value, oldDay - i); i++; } return setDate(toDateStr(newDate)); } return setDate(toDateStr(new Date(value, oldMonth, oldDay))); }; var toggleMobileState = function toggleMobileState() { var $wrapper = $(wrapper); if ($wrapper.hasClassName('isOpenMobile')) { $wrapper.removeClassName('isOpenMobile'); } else { $wrapper.addClassName('isOpenMobile'); } }; var keepSlotsScrollPosition = function keepSlotsScrollPosition() { var visibleSlot = element.querySelector('.appointmentSlots.slots .slot.active, .appointmentSlots.slots .slot:not(.disabled)'); element.querySelector('.appointmentSlots.slots').scrollTop = visibleSlot ? visibleSlot.offsetTop : 0; }; var handleUIUpdate = function handleUIUpdate() { try { var breakpoints = { 450: 'isLarge', 225: 'isNormal', 175: 'shouldBreakIntoNewLine' }; var offsetWidth = function () { try { var appointmentCalendarRow = element.querySelector('.appointmentFieldRow.forCalendar'); var appointmendCalendar = element.querySelector('.appointmentCalendar'); return appointmentCalendarRow.getBoundingClientRect().width - appointmendCalendar.getBoundingClientRect().width; } catch (e) { return null; } }(); if (offsetWidth === null || parseInt(wrapper.readAttribute('data-breakpoint-offset'), 10) === offsetWidth) { return; } var breakpoint = Object.keys(breakpoints).reduce(function (prev, curr) { return Math.abs(curr - offsetWidth) < Math.abs(prev - offsetWidth) ? curr : prev; }); var breakpointName = breakpoints[breakpoint]; wrapper.setAttribute('data-breakpoint', breakpointName); wrapper.setAttribute('data-breakpoint-offset', offsetWidth); } catch (e) { // noop. } }; var uiUpdateInterval = void 0; var effects = function effects() { clearInterval(uiUpdateInterval); var shouldLoad = changed.timezone && changed.timezone !== state.timezone || // time zone changed changed.date && getYearMonth(changed.date) !== getYearMonth(state.date); // y-m changed changed = {}; if (shouldLoad) { load(); } var cancelBtn = element.querySelector('.cancel'); if (cancelBtn) { cancelBtn.addEventListener('click', function () { setValue(undefined); }); } var forSelectedDate = element.querySelector('.forSelectedDate span'); if (forSelectedDate) { forSelectedDate.addEventListener('click', function () { setDate(state.value.split(' ')[0]); }); } element.querySelector('.calendar .days').addEventListener('click', handleDateChange); element.querySelector('.monthYearPicker').addEventListener('change', handleMonthYearChange); element.querySelector('.dayPicker').addEventListener('click', handleDateChange); element.querySelector('.timezonePicker').addEventListener('change', handleTimezoneChange); element.querySelector('.selectedDate').addEventListener('click', toggleMobileState); Array.prototype.slice.call(element.querySelectorAll('.monthYearPicker .pickerArrow')).forEach(function (el) { return el.addEventListener('click', handleMonthYearChange); }); Array.prototype.slice.call(element.querySelectorAll('.slot')).forEach(function (el) { return el.addEventListener('click', handleClick); }); keepSlotsScrollPosition(); uiUpdateInterval = setInterval(handleUIUpdate, 250); JotForm.runAllCalculations(); }; var renderMonthYearPicker = function renderMonthYearPicker() { var _state7 = state, date = _state7.date; var _split = (date || '-').split('-'), year = _split[0], month = _split[1]; var yearOpts = fillArray(new Array(20), '').map(function (v, i) { return '' + (2020 + i); }); return '\n <div class=\'monthYearPicker\'>\n <div class=\'pickerItem\'>\n <select class=\'pickerMonth\' data-name=\'month\'>\n ' + monthNames().map(function (monthName, i) { return '<option ' + (parseInt(month, 10) === i + 1 ? 'selected' : '') + ' value=\'' + i + '\'>' + monthName + '</option>'; }).join('') + '\n </select>\n <button type=\'button\' class=\'pickerArrow pickerMonthArrow prev\' value=\'' + (parseInt(month, 10) - 2) + '\' data-name=\'month\'></button>\n <button type=\'button\' class=\'pickerArrow pickerMonthArrow next\' value=\'' + parseInt(month, 10) + '\' data-name=\'month\'></button>\n </div>\n <div class=\'pickerItem\'>\n <select class=\'pickerYear\' data-name=\'year\'>\n ' + yearOpts.map(function (yearName) { return '<option ' + (year === yearName ? 'selected' : '') + '>' + yearName + '</option>'; }).join('') + '\n </select>\n <button type=\'button\' class=\'pickerArrow pickerYearArrow prev\' value=\'' + (parseInt(year, 10) - 1) + '\' data-name=\'year\' />\n <button type=\'button\' class=\'pickerArrow pickerYearArrow next\' value=\'' + (parseInt(year, 10) + 1) + '\' data-name=\'year\' />\n </div>\n </div>\n '; }; var getNav = function getNav() { var _state8 = state, availableDays = _state8.availableDays, dateStr = _state8.date; var next = void 0; var prev = void 0; var _dateStr$split2 = dateStr.split('-'), year = _dateStr$split2[0], month = _dateStr$split2[1]; if (availableDays) { var dayIndex = availableDays.indexOf(dateStr); if (dayIndex > 0) { prev = availableDays[dayIndex - 1]; } else { var prevDate = new Date(year, month - 1, 0); prev = toDateStr(prevDate); } if (dayIndex + 1 < availableDays.length) { next = availableDays[dayIndex + 1]; } else { var nextDate = new Date(year, month, 1); next = toDateStr(nextDate); } } return { prev: prev, next: next }; }; var renderDayPicker = function renderDayPicker() { var _state9 = state, loading = _state9.loading; var _getNav = getNav(), prev = _getNav.prev, next = _getNav.next; return '\n <div class=\'appointmentDayPicker dayPicker\'>\n <button type=\'button\' ' + (loading || !prev ? 'disabled' : '') + ' class="appointmentDayPickerButton prev" ' + (prev && 'data-value="' + prev + '"') + '>&lt;</button>\n <button type=\'button\' ' + (loading || !next ? 'disabled' : '') + ' class="appointmentDayPickerButton next" ' + (next && 'data-value="' + next + '"') + '>&gt;</button>\n </div>\n '; }; var renderTimezonePicker = function renderTimezonePicker() { var _state10 = state, timezone = _state10.timezone, timezones = _state10.timezones; return '\n <div class=\'timezonePickerWrapper\'> \n <select class=\'timezonePicker\'>\n ' + (!timezones.loading && timezones.map(function (_ref4) { var group = _ref4.group, cities = _ref4.cities; return '\n <optgroup label="' + group + '">\n ' + cities.map(function (val) { return '<option ' + (timezone.indexOf((group + '/' + val).split(' ')[0]) > -1 ? 'selected' : '') + ' value=\'' + group + '/' + val + '\'>' + val + '</option>'; }).join('') + '\n </optgroup>\n '; }).join('')) + '\n </select>\n <div class=\'timezonePickerName\'>' + timezone + '</div>\n </div>\n '; }; var renderCalendarDays = function renderCalendarDays() { var _state11 = state, slots = _state11.slots, dateStr = _state11.date, value = _state11.value, availableDays = _state11.availableDays; var days = slots ? Object.keys(slots) : []; var todayStr = toDateStr(new Date()); if (!days.length) { return ''; } var firstDay = getDay(new Date(days[0])); days.unshift.apply(days, fillArray(new Array(firstDay), 'precedingDay')); var trailingDays = Math.ceil(days.length / 7) * 7 - days.length; days.push.apply(days, fillArray(new Array(trailingDays), 'trailingDay')); var weeks = days.map(function (item, i) { return i % 7 === 0 ? days.slice(i, i + 7) : null; }).filter(function (a) { return a; }); var dateValue = value && value.split(' ')[0]; return '\n ' + weeks.map(function (week) { return '<div class=\'calendarWeek\'>' + week.map(function (day) { var dayObj = new Date(day); if (day === 'precedingDay' || day === 'trailingDay') { return '<div class="calendarDay ' + day + ' empty"></div>'; } var active = day === dateStr; var isToday = todayStr === day; var beforeStartDate = state.forcedStartDate ? state.forcedStartDate > dayObj : false; var afterEndDate = state.forcedEndDate ? state.forcedEndDate < dayObj : false; var isUnavailable = availableDays.indexOf(day) === -1 || beforeStartDate || afterEndDate; var isSelected = day === dateValue; var classes = 'calendarDay ' + classNames({ isSelected: isSelected, isToday: isToday, isUnavailable: isUnavailable, isActive: active }); return '<div class=\'' + classes + '\' data-value=\'' + day + '\'><span class=\'calendarDayEach\'>' + day.split('-')[2].replace(/^0/, '') + '</span></div>'; }).join('') + '</div>'; }).join('') + '\n '; }; var renderEmptyState = function renderEmptyState() { /* eslint-disable */ return '\n <div class="appointmentSlots-empty">\n <div class="appointmentSlots-empty-container">\n <div class="appointmentSlots-empty-icon">\n <svg width="124" height="102" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <defs>\n <path d="M55 32.001c0 21.54 17.46 39 39 39 3.457 0 6.81-.45 10-1.294v34.794H0v-104l71 .001c-9.7 7.095-16 18.561-16 31.5z" id="a"/>\n </defs>\n <g fill="none" fill-rule="evenodd">\n <g transform="translate(-1 -1)">\n <mask id="b" fill="#fff">\n <use xlink:href="#a"/>\n </mask>\n <g mask="url(#b)">\n <path d="M18.85 52.001c9.858 0 17.85 7.992 17.85 17.85 0 9.859-7.992 17.85-17.85 17.85S1 79.71 1 69.851c0-9.858 7.992-17.85 17.85-17.85zm5.666 10.842L17.38 69.98l-2.44-2.44a2.192 2.192 0 00-3.1 3.1l3.99 3.987a2.192 2.192 0 003.098 0l8.687-8.686a2.191 2.191 0 00-3.1-3.099z" fill="#D5D6DA"/>\n <path d="M92.043 10.643H81.597V7.576A6.582 6.582 0 0075.023 1a6.582 6.582 0 00-6.574 6.575v3.067H41.833V7.576A6.582 6.582 0 0035.26 1a6.582 6.582 0 00-6.574 6.575v3.149a2.187 2.187 0 00-.585-.082H19.37c-6.042 0-10.957 4.916-10.957 10.958v27.126a2.192 2.192 0 004.383 0V33.215h86.211a2.192 2.192 0 000-4.383H12.795v-7.231a6.582 6.582 0 016.574-6.575H28.1c.203 0 .398-.03.585-.08v2.82a6.582 6.582 0 006.574 6.574c3.625 0 10.574-2.95 10.574-6.574v-2.74H68.45v2.74a6.582 6.582 0 006.574 6.574c3.625 0 7.574-2.95 7.574-6.574v-2.74h9.446a6.582 6.582 0 016.574 6.575v73.072a3.95 3.95 0 01-3.946 3.945h-77.95a3.95 3.95 0 01-3.944-3.944v-5.67c0-1.047-.981-2.192-2.192-2.192-1.21 0-2.191.981-2.191 2.192v5.67c0 4.592 3.736 8.327 8.327 8.327h77.95c4.592 0 8.328-3.736 8.328-8.328V21.601c0-6.042-4.915-10.958-10.957-10.958zM37.45 17.766a2.194 2.194 0 01-2.191 2.191 2.194 2.194 0 01-2.191-2.191V7.576c0-1.209.983-2.192 2.19-2.192 1.21 0 2.192.983 2.192 2.192v10.19zm39.764 0a2.194 2.194 0 01-2.191 2.191 2.194 2.194 0 01-2.191-2.191V7.576c0-1.209.983-2.192 2.191-2.192 1.208 0 2.191.983 2.191 2.192v10.19z" fill="#D5D6DA" fill-rule="nonzero"/>\n <path d="M55.68 63.556c-4.592 0-8.328 3.736-8.328 8.327 0 4.592 3.736 8.328 8.327 8.328 4.592 0 8.328-3.736 8.328-8.328 0-4.591-3.736-8.327-8.328-8.327zm0 12.272a3.95 3.95 0 01-3.945-3.945 3.95 3.95 0 013.944-3.944 3.95 3.95 0 013.945 3.944 3.95 3.95 0 01-3.945 3.945zm26.854-12.272c-4.591 0-8.327 3.736-8.327 8.327 0 4.592 3.736 8.328 8.327 8.328 4.592 0 8.328-3.736 8.328-8.328 0-4.591-3.736-8.327-8.328-8.327zm0 12.272a3.95 3.95 0 01-3.944-3.945 3.95 3.95 0 013.944-3.944 3.95 3.95 0 013.945 3.944 3.95 3.95 0 01-3.945 3.945zM30.126 36.701c-4.591 0-8.327 3.736-8.327 8.328 0 4.591 3.736 8.327 8.327 8.327 4.592 0 8.328-3.736 8.328-8.327 0-4.592-3.736-8.328-8.328-8.328zm0 12.272a3.95 3.95 0 01-3.944-3.944 3.95 3.95 0 013.944-3.945 3.95 3.95 0 013.945 3.945 3.95 3.95 0 01-3.945 3.944z" fill="#D5D6DA" fill-rule="nonzero"/>\n <path d="M83.836 36.701c-4.592 0-8.328 3.736-8.328 8.328 0 4.591 3.736 8.327 8.328 8.327 4.591 0 8.327-3.736 8.327-8.327 0-4.592-3.736-8.328-8.327-8.328zm0 12.272a3.95 3.95 0 01-3.945-3.944 3.95 3.95 0 013.945-3.945 3.95 3.95 0 013.944 3.945 3.95 3.95 0 01-3.944 3.944z" fill="#2B3245" fill-rule="nonzero"/>\n <path d="M56.981 36.701c-4.592 0-8.327 3.736-8.327 8.328 0 4.591 3.735 8.327 8.327 8.327 4.592 0 8.327-3.736 8.327-8.327 0-4.592-3.735-8.328-8.327-8.328zm0 12.272a3.95 3.95 0 01-3.944-3.944 3.95 3.95 0 013.944-3.945 3.95 3.95 0 013.945 3.945 3.95 3.95 0 01-3.945 3.944z" fill="#D5D6DA" fill-rule="nonzero"/>\n <path d="M68.829 11.201l.001 6.375a6.375 6.375 0 006.146 6.371l.229.004a6.375 6.375 0 006.371-6.146l.004-.229-.001-6.375h6.871c6.627 0 12 5.373 12 12v8.4H11.2v-8.4c0-6.627 5.373-12 12-12h5.849l.001 6.75a6 6 0 005.775 5.996l.225.004h.375a6.375 6.375 0 006.375-6.375l-.001-6.375h27.03z" fill="#D5D6DA"/>\n </g>\n </g>\n <path d="M92 0c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32C60 14.327 74.327 0 92 0zm21.268 15.365L75.365 53.268A26.884 26.884 0 0092 59c14.912 0 27-12.088 27-27a26.88 26.88 0 00-5.732-16.635zM92 5C77.088 5 65 17.088 65 32c0 6.475 2.28 12.417 6.079 17.069l37.99-37.99A26.888 26.888 0 0092 5z" fill="#D5D6DA"/>\n </g>\n </svg>\n </div>\n <div class="appointmentSlots-empty-text">' + JotForm.texts.noSlotsAvailable + '</div>\n </div>\n </div>\n '; /* eslint-enable */ }; var dateWithAMPM = function dateWithAMPM() { var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var _props6 = props, _props6$timeFormat = _props6.timeFormat; _props6$timeFormat = _props6$timeFormat === undefined ? {} : _props6$timeFormat; var _props6$timeFormat$va = _props6$timeFormat.value, timeFormat = _props6$timeFormat$va === undefined ? '24 Hour' : _props6$timeFormat$va; var time = new Date(date.replace(/-/g, '/')).toLocaleTimeString('en-US', { hour: 'numeric', minute: 'numeric', hourCycle: timeFormat === 'AM/PM' ? 'h12' : 'h23' }); var day = date && date.split(' ')[0]; return day + ' ' + time; }; var renderSlots = function renderSlots() { var _state12 = state, dateStr = _state12.date, _state12$value = _state12.value, dateValue = _state12$value === undefined ? '' : _state12$value, _state12$defaultValue = _state12.defaultValue, defaultValue = _state12$defaultValue === undefined ? '' : _state12$defaultValue, timezone = _state12.timezone, forcedStartDate = _state12.forcedStartDate, forcedEndDate = _state12.forcedEndDate; var dateSlots = state.slots && state.slots[dateStr] || {}; var stateValue = dateWithAMPM(dateValue); var defaultValueTZ = revertDate(defaultValue, ' ', timezone); var parsedDefaultVal = dateWithAMPM(defaultValueTZ); var entries = objectEntries(dateSlots); if (!entries || !entries.length) { return renderEmptyState(); } return entries.map(function (_ref5) { var name = _ref5[0], value = _ref5[1]; var rn = amPmConverter(name); var slotValue = dateStr + ' ' + rn; var realD = dateInTimeZone(new Date(slotValue.replace(/-/g, '/'))); var active = stateValue === slotValue; var disabled = forcedStartDate && forcedStartDate > realD || forcedEndDate && forcedEndDate < realD || !(value || parsedDefaultVal === slotValue); return '<div class="appointmentSlot slot ' + classNames({ disabled: disabled, active: active }) + '" data-value="' + slotValue + '">' + name + '</div>'; }).join(''); }; var renderDay = function renderDay() { var _state13 = state, dateStr = _state13.date; var date = new Date(dateStr); var day = getDay(date); return '\n <div class=\'appointmentDate\'>\n ' + (dateStr && dayNames()[day] + ', ' + monthNames()[date.getUTCMonth()] + ' ' + intPrefix(date.getUTCDate())) + '\n </div>\n '; }; var renderCalendar = function renderCalendar() { var _state14 = state, dateStr = _state14.date; return '\n <div class=\'selectedDate\'>\n <input class=\'currentDate\' type=\'text\' value=\'' + toFormattedDateStr(dateStr) + '\' style=\'pointer-events: none;\' />\n </div>\n ' + renderMonthYearPicker() + '\n <div class=\'appointmentCalendarDays days\'>\n <div class=\'daysOfWeek\'>\n ' + dayNames().map(function (day) { return '<div class="dayOfWeek ' + day.toLowerCase() + '">' + day.toUpperCase().slice(0, 3) + '</div>'; }).join('') + '\n </div>\n ' + renderCalendarDays() + '\n </div>\n '; }; var renderSelectedDate = function renderSelectedDate() { var _state15 = state, _state15$value = _state15.value, value = _state15$value === undefined ? '' : _state15$value; var dateStr = value && value.split(' ')[0]; var _props7 = props, _props7$timeFormat = _props7.timeFormat; _props7$timeFormat = _props7$timeFormat === undefined ? {} : _props7$timeFormat; var _props7$timeFormat$va = _props7$timeFormat.value, timeFormat = _props7$timeFormat$va === undefined ? '24 Hour' : _props7$timeFormat$va; var date = new Date(dateStr); var time = new Date(value.replace(/-/g, '/')).toLocaleTimeString('en-US', { hour: 'numeric', minute: 'numeric', hourCycle: timeFormat === 'AM/PM' ? 'h12' : 'h23' }); var day = getDay(date); var datetime = dayNames()[day] + ', ' + monthNames()[date.getUTCMonth()] + ' ' + intPrefix(date.getUTCDate()) + ', ' + date.getFullYear(); var text = JotForm.texts.appointmentSelected.replace('{time}', time).replace('{date}', datetime); var valEl = '<div style=\'display: none\' class=\'jsAppointmentValue\'>' + datetime + ' ' + time + '</div>'; return value ? valEl + '<div class=\'appointmentFieldRow forSelectedDate\'><span>' + text + '</span><button type=\'button\' class=\'cancel\'>x</button></div>' : ''; }; var render = debounce(function () { var _state16 = state, loading = _state16.loading; beforeRender(); element.innerHTML = '\n <div class=\'appointmentFieldContainer\'>\n <div class=\'appointmentFieldRow forCalendar\'>\n <div class=\'calendar appointmentCalendar\'>\n <div class=\'appointmentCalendarContainer\'>\n ' + renderCalendar() + '\n </div>\n </div>\n <div class=\'appointmentDates\'>\n <div class=\'appointmentDateSelect\'>\n ' + renderDay() + '\n ' + renderDayPicker() + '\n </div>\n <div class=\'appointmentSlots slots ' + classNames({ isLoading: loading }) + '\'>\n <div class=\'appointmentSlotsContainer\'>\n ' + renderSlots() + '\n </div>\n </div>\n <div class=\'appointmentCalendarTimezone forTimezonePicker\'>\n ' + renderTimezonePicker() + '\n </div>\n </div>\n </div>\n ' + renderSelectedDate() + '\n </div>\n '; afterRender(); }); var _update = function _update(newProps) { state = assignObject({}, state, getStateFromProps(newProps)); props = newProps; load(); }; input.addEventListener('change', function (e) { if (!state.nyTz) return; var date = toDateTimeStr(dz(new Date(e.target.value.replace(/-/g, '/')), state.nyTz, getTimezoneOffset(state.timezone))); setDate(date.split(' ')[0]); setState({ value: date, defaultValue: date }); validation(date); }); tzInput.addEventListener('change', function (e) { var defaultTimezone = e.target.value; setTimezone(defaultTimezone); setState({ defaultTimezone: defaultTimezone }); }); document.addEventListener('translationLoad', function () { return render(); }); var getInitialData = function getInitialData(timezones) { getFirstAvailableDates(function (data) { var nyTz = -4; try { nyTz = getTimezoneOffset(timezones.find(function (_ref6) { var group = _ref6.group; return group === 'America'; }).cities.find(function (c) { return c.indexOf('New_York') > -1; })); } catch (e) { console.log(e); } JotForm.appointments.initialData = data; JotForm.nyTz = nyTz; JotForm.appointments.listeners.forEach(function (fn) { return fn({ data: data, timezones: timezones, nyTz: nyTz }); }); }); }; if (!JotForm.appointments) { JotForm.appointments = { listeners: [] }; loadTimezones(function (timezones) { JotForm.timezones = timezones; getInitialData(timezones); }); } var requestTry = 1; var requestTimeout = 1000; var construct = function construct(_ref7) { var data = _ref7.data, timezones = _ref7.timezones, nyTz = _ref7.nyTz; var qdata = data[props.id.value]; if (!qdata || qdata.error) { constructed = true; if (!qdata && requestTry < 4) { requestTry += 1; setTimeout(function () { getInitialData(JotForm.timezones); }, requestTry * requestTimeout); } return; } constructed = false; var userTimezone = getUserTimezone(); var setUpdatedTimezone = function setUpdatedTimezone(currentTimezone) { if (!currentTimezone) { return currentTimezone; } var _currentTimezone$spli = currentTimezone.split('/'), currentCont = _currentTimezone$spli[0], currCity = _currentTimezone$spli[1]; var currentCity = currCity && currCity.split(' (')[0]; var group = timezones.find(function (timezone) { return timezone.group === currentCont; }); if (!group) { return currentTimezone; } var matchedTimezone = group.cities.find(function (c) { return c.indexOf(currentCity) > -1; }); if (!matchedTimezone) return false; return group.group + '/' + matchedTimezone; }; var timezone = setUpdatedTimezone(userTimezone) || setUpdatedTimezone(props.timezone.value) || props.timezone.value; setTimezone(timezone); var dateStr = Object.keys(qdata)[0]; var _getDateRange2 = getDateRange(dateStr), startDate = _getDateRange2[0], endDate = _getDateRange2[1]; updateMonthData(startDate, endDate, qdata); var _state17 = state, availableDays = _state17.availableDays; var newDate = availableDays.indexOf(dateStr) === -1 ? availableDays[0] : dateStr; constructed = true; setState({ timezones: timezones, loading: false, date: newDate || dateStr, nyTz: nyTz }); setTimeout(function () { if (input.value) { input.triggerEvent('change'); } }, 100); }; JotForm.appointments.listeners.push(construct); if (JotForm.appointments.initialData) { setTimeout(function () { construct({ data: JotForm.appointments.initialData, timezones: JotForm.timezones, nyTz: JotForm.nyTz }); }, requestTimeout); } JotForm.appointments[props.id.value] = { update: function update(newProps) { return _update(assignObject(passedProps, newProps)); }, forceStartDate: function forceStartDate(newDate) { if (!newDate) { setState({ forcedStartDate: undefined }); return; } try { var forcedStartDate = new Date(newDate); if ('' + forcedStartDate === '' + state.forcedStartDate) return; var date = new Date(state.availableDays.find(function (d) { return new Date(d + ' 23:59:59') >= forcedStartDate; })); if (!date.getTime()) { date = forcedStartDate; } date = toDateStr(date); setState({ forcedStartDate: forcedStartDate, date: date }); } catch (e) { console.log(e); } }, forceEndDate: function forceEndDate(newDate) { if (!newDate) { setState({ forcedEndDate: undefined }); return; } try { var forcedEndDate = new Date(newDate); if ('' + forcedEndDate === '' + state.forcedEndDate) return; var availableDays = state.availableDays.filter(function (d) { return new Date(d + ' 00:00:00') <= forcedEndDate; }); var date = new Date(availableDays.indexOf(state.date) > -1 ? state.date : availableDays[availableDays.length - 1]); if (!date.getTime()) { date = forcedEndDate; } date = toDateStr(date); setState({ forcedEndDate: forcedEndDate, date: date }); } catch (e) { console.log(e); } }, getComparableValue: function getComparableValue() { return input.value && toDateTimeStr(dz(new Date(input.value.replace(/-/g, '/')), state.nyTz, getTimezoneOffset(props.timezone.value))) || ''; } }; return _update; })({"text":{"text":"Question","value":"Choose the time you'd like to audition."},"labelAlign":{"text":"Label Align","value":"Top","dropdown":[["Auto","Auto"],["Left","Left"],["Right","Right"],["Top","Top"]]},"required":{"text":"Required","value":"Yes","dropdown":[["No","No"],["Yes","Yes"]]},"description":{"text":"Hover Text","value":"","textarea":true},"slotDuration":{"text":"Slot Duration","value":"15","dropdown":[[15,"15 min"],[30,"30 min"],[45,"45 min"],[60,"60 min"],["custom","Custom min"]],"hint":"Select how long each slot will be."},"startDate":{"text":"Start Date","value":"2021-04-10"},"endDate":{"text":"End Date","value":"2021-04-10"},"intervals":{"text":"Intervals","value":[{"from":"10:00","to":"13:45","days":["Sat"]}],"hint":"The hours will be applied to the selected days and repeated."},"useBlockout":{"text":"Blockout Custom Dates","value":"No","dropdown":[["No","No"],["Yes","Yes"]],"hint":"Disable certain date(s) in the calendar."},"blockoutDates":{"text":"Blockout dates","value":[{"startDate":"","endDate":""}]},"useLunchBreak":{"text":"Lunch Time","value":"No","dropdown":[["No","No"],["Yes","Yes"]],"hint":"Enable lunchtime in the calendar."},"lunchBreak":{"text":"Lunchtime hours","value":[{"from":"12:00","to":"14:00"}]},"timezone":{"text":"Timezone","value":"America/New_York (GMT-04:00)"},"timeFormat":{"text":"Time Format","value":"AM/PM","dropdown":[["24 Hour","24 Hour"],["AM/PM","AM/PM"]],"icon":"images/blank.gif","iconClassName":"toolbar-time_format_24"},"months":{"value":["January","February","March","April","May","June","July","August","September","October","November","December"],"hidden":true},"days":{"value":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],"hidden":true},"startWeekOn":{"text":"Start Week On","value":"Sunday","dropdown":[["Monday","Monday"],["Sunday","Sunday"]],"toolbar":false},"rollingDays":{"text":"Rolling Days","value":"","toolbar":false},"appointmentType":{"hidden":true,"value":"single"},"dateFormat":{"hidden":true,"value":"mm/dd/yyyy"},"maxAttendee":{"hidden":true,"value":"5"},"maxEvents":{"hidden":true,"value":""},"minScheduleNotice":{"hidden":true,"value":""},"name":{"hidden":true,"value":"chooseThe"},"order":{"hidden":true,"value":"17"},"qid":{"toolbar":false,"value":"input_53"},"reminderEmails":{"hidden":true,"value":{"schedule":[{"value":"2","unit":"hour"}]}},"type":{"hidden":true,"value":"control_appointment"},"useReminderEmails":{"hidden":true,"value":"No"},"id":{"toolbar":false,"value":"53"},"qname":{"toolbar":false,"value":"q53_chooseThe"},"cdnconfig":{"CDN":"https://cdn.jotfor.ms/"},"passive":false,"formProperties":{"products":false,"highlightLine":"Enabled","coupons":false,"useStripeCoupons":false,"taxes":false,"comparePaymentForm":"","paymentListSettings":false,"newPaymentUIForNewCreatedForms":false,"formBackground":"#fff"},"formID":210874352707154,"themeVersion":"v1"}); JotForm.newDefaultTheme = false; JotForm.extendsNewTheme = false; JotForm.newPaymentUIForNewCreatedForms = false; /*INIT-END*/ }); JotForm.prepareCalculationsOnTheFly([null,{"name":"modelCasting","qid":"1","text":"Model Casting Form","type":"control_head"},null,{"name":"preferredName","qid":"3","subLabel":"","text":"Preferred Name","type":"control_textbox"},null,{"name":"emailAddress","qid":"5","text":"Email Address","type":"control_textbox"},null,null,null,null,null,null,null,null,null,{"name":"representation","qid":"15","subLabel":"Do you work with an agency?","text":"Representation?","type":"control_textbox"},null,null,null,null,null,null,null,null,null,null,null,null,null,{"name":"upload129","qid":"29","subLabel":"WE WANT TO SEE THE NATURAL FEATURES OF YOUR FACE AND HAIR. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE.","text":"UPLOAD 1 RECENT CLOSE UP IMAGE (VERTICAL FORMAT)","type":"control_fileupload"},{"name":"submit","qid":"30","text":"Submit","type":"control_button"},null,null,null,null,{"name":"suitdressSize","qid":"35","text":"Suit\u002FDress Size","type":"control_textbox"},null,{"name":"hairColor","qid":"37","text":"Hair Color","type":"control_textbox"},null,{"name":"tattoos","qid":"39","text":"Tattoos?","type":"control_textbox"},{"name":"eyeColor","qid":"40","text":"Eye Color","type":"control_textbox"},{"name":"areYou","qid":"41","subLabel":"This venue only permits 21+","text":"ARE YOU 21 YRS OR OLDER?","type":"control_textbox"},{"name":"theLabeled","qid":"42","subLabel":"*Note: There is no monetary compensation if booked for Labeled Blu Collection.","text":"The Labeled Blu Collection Grand Opening is on May 8th. Are you available on this date?","type":"control_textbox"},null,{"name":"upload1","qid":"44","subLabel":"WE WANT TO SEE THE SHAPE AND FIT OF YOUR FULL BODY. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE.","text":"UPLOAD 1 RECENT FULL BODY IMAGE (VERTICAL FORMAT)","type":"control_fileupload"},{"name":"cellNumber","qid":"45","text":"Cell Number","type":"control_textbox"},{"description":"","name":"name","qid":"46","text":"Name","type":"control_fullname"},{"description":"","name":"whatsYour","qid":"47","subLabel":"","text":"What's your IG and Facebook?","type":"control_textbox"},null,null,{"description":"","name":"doYou","qid":"50","subLabel":"","text":"Do you have any experience? If you do, please list below. ","type":"control_textbox"},null,null,{"description":"","name":"chooseThe","qid":"53","text":"Choose the time you'd like to audition.","type":"control_appointment"}]); setTimeout(function() { JotForm.paymentExtrasOnTheFly([null,{"name":"modelCasting","qid":"1","text":"Model Casting Form","type":"control_head"},null,{"name":"preferredName","qid":"3","subLabel":"","text":"Preferred Name","type":"control_textbox"},null,{"name":"emailAddress","qid":"5","text":"Email Address","type":"control_textbox"},null,null,null,null,null,null,null,null,null,{"name":"representation","qid":"15","subLabel":"Do you work with an agency?","text":"Representation?","type":"control_textbox"},null,null,null,null,null,null,null,null,null,null,null,null,null,{"name":"upload129","qid":"29","subLabel":"WE WANT TO SEE THE NATURAL FEATURES OF YOUR FACE AND HAIR. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE.","text":"UPLOAD 1 RECENT CLOSE UP IMAGE (VERTICAL FORMAT)","type":"control_fileupload"},{"name":"submit","qid":"30","text":"Submit","type":"control_button"},null,null,null,null,{"name":"suitdressSize","qid":"35","text":"Suit\u002FDress Size","type":"control_textbox"},null,{"name":"hairColor","qid":"37","text":"Hair Color","type":"control_textbox"},null,{"name":"tattoos","qid":"39","text":"Tattoos?","type":"control_textbox"},{"name":"eyeColor","qid":"40","text":"Eye Color","type":"control_textbox"},{"name":"areYou","qid":"41","subLabel":"This venue only permits 21+","text":"ARE YOU 21 YRS OR OLDER?","type":"control_textbox"},{"name":"theLabeled","qid":"42","subLabel":"*Note: There is no monetary compensation if booked for Labeled Blu Collection.","text":"The Labeled Blu Collection Grand Opening is on May 8th. Are you available on this date?","type":"control_textbox"},null,{"name":"upload1","qid":"44","subLabel":"WE WANT TO SEE THE SHAPE AND FIT OF YOUR FULL BODY. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE.","text":"UPLOAD 1 RECENT FULL BODY IMAGE (VERTICAL FORMAT)","type":"control_fileupload"},{"name":"cellNumber","qid":"45","text":"Cell Number","type":"control_textbox"},{"description":"","name":"name","qid":"46","text":"Name","type":"control_fullname"},{"description":"","name":"whatsYour","qid":"47","subLabel":"","text":"What's your IG and Facebook?","type":"control_textbox"},null,null,{"description":"","name":"doYou","qid":"50","subLabel":"","text":"Do you have any experience? If you do, please list below. ","type":"control_textbox"},null,null,{"description":"","name":"chooseThe","qid":"53","text":"Choose the time you'd like to audition.","type":"control_appointment"}]);}, 20); </script> <link href="https://cdn.jotfor.ms/static/formCss.css?3.3.24338" rel="stylesheet" type="text/css" /> <link type="text/css" media="print" rel="stylesheet" href="https://cdn.jotfor.ms/css/printForm.css?3.3.24338" /> <link type="text/css" rel="stylesheet" href="https://cdn.jotfor.ms/css/styles/nova.css?3.3.24338" /> <link type="text/css" rel="stylesheet" href="https://cdn.jotfor.ms/themes/CSS/566a91c2977cdfcd478b4567.css?themeRevisionID=59fb4852cf3bfe589c6c6f21"/> <link type="text/css" rel="stylesheet" href="https://cdn.jotfor.ms/css/styles/payment/payment_feature.css?3.3.24338" /> <style type="text/css"> .form-label-left{ width:150px; } .form-line{ padding-top:12px; padding-bottom:12px; } .form-label-right{ width:150px; } .form-all{ width:590px; color:#555 !important; font-family:"Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Verdana, sans-serif; font-size:14px; } </style> <style type="text/css" id="form-designer-style"> /* Injected CSS Code */ .form-label.form-label-auto { display: block; float: none; text-align: left; width: 100%; }/*PREFERENCES STYLE*/ .form-all { font-family: Lucida Grande, sans-serif; } .form-all .qq-upload-button, .form-all .form-submit-button, .form-all .form-submit-reset, .form-all .form-submit-print { font-family: Lucida Grande, sans-serif; } .form-all .form-pagebreak-back-container, .form-all .form-pagebreak-next-container { font-family: Lucida Grande, sans-serif; } .form-header-group { font-family: Lucida Grande, sans-serif; } .form-label { font-family: Lucida Grande, sans-serif; } .form-label.form-label-auto { display: block; float: none; text-align: left; width: 100%; } .form-line { margin-top: 12px 36px 12px 36px px; margin-bottom: 12px 36px 12px 36px px; } .form-all { max-width: 590px; width: 100%; } .form-label.form-label-left, .form-label.form-label-right, .form-label.form-label-left.form-label-auto, .form-label.form-label-right.form-label-auto { width: 150px; } .form-all { font-size: 14px } .form-all .qq-upload-button, .form-all .qq-upload-button, .form-all .form-submit-button, .form-all .form-submit-reset, .form-all .form-submit-print { font-size: 14px } .form-all .form-pagebreak-back-container, .form-all .form-pagebreak-next-container { font-size: 14px } .supernova .form-all, .form-all { background-color: #fff; } .form-all { color: #555; } .form-header-group .form-header { color: #555; } .form-header-group .form-subHeader { color: #555; } .form-label-top, .form-label-left, .form-label-right, .form-html, .form-checkbox-item label, .form-radio-item label { color: #555; } .form-sub-label { color: #6f6f6f; } .supernova { background-color: undefined; } .supernova body { background: transparent; } .form-textbox, .form-textarea, .form-dropdown, .form-radio-other-input, .form-checkbox-other-input, .form-captcha input, .form-spinner input { background-color: undefined; } .supernova { background-image: none; } #stage { background-image: none; } .form-all { background-image: none; } .form-all { position: relative; } .form-all:before { content: ""; background-image: url("https://www.jotform.com/uploads/cwatson.tv/form_files/Labeled_Blu_Collection_.6061eb7c66bea4.57727827.webp"); display: inline-block; height: 140px; position: absolute; background-size: 205px 140px; background-repeat: no-repeat; width: 100%; } .form-all { margin-top: 150px !important; } .form-all:before { top: -150px; background-position: top center; } .ie-8 .form-all:before { display: none; } .ie-8 { margin-top: auto; margin-top: initial; } /*PREFERENCES STYLE*//*__INSPECT_SEPERATOR__*/ /* Injected CSS Code */ </style> <form class="jotform-form" action="https://submit.jotform.com/submit/210874352707154/" method="post" enctype="multipart/form-data" name="form_210874352707154" id="210874352707154" accept-charset="utf-8" autocomplete="on"> <input type="hidden" name="formID" value="210874352707154" /> <input type="hidden" id="JWTContainer" value="" /> <input type="hidden" id="cardinalOrderNumber" value="" /> <div role="main" class="form-all"> <ul class="form-section page-section"> <li id="cid_1" class="form-input-wide" data-type="control_head"> <div class="form-header-group header-small"> <div class="header-text httac htvam"> <h3 id="header_1" class="form-header" data-component="header"> Model Casting Form </h3> </div> </div> </li> <li class="form-line jf-required" data-type="control_fullname" id="id_46"> <label class="form-label form-label-top form-label-auto" id="label_46" for="first_46"> Name <span class="form-required"> * </span> </label> <div id="cid_46" class="form-input-wide jf-required"> <div data-wrapper-react="true"> <span class="form-sub-label-container" style="vertical-align:top" data-input-type="first"> <input type="text" id="first_46" name="q46_name[first]" class="form-textbox validate[required]" size="10" value="" data-component="first" aria-labelledby="label_46 sublabel_46_first" required="" /> <label class="form-sub-label" for="first_46" id="sublabel_46_first" style="min-height:13px" aria-hidden="false"> First Name </label> </span> <span class="form-sub-label-container" style="vertical-align:top" data-input-type="last"> <input type="text" id="last_46" name="q46_name[last]" class="form-textbox validate[required]" size="15" value="" data-component="last" aria-labelledby="label_46 sublabel_46_last" required="" /> <label class="form-sub-label" for="last_46" id="sublabel_46_last" style="min-height:13px" aria-hidden="false"> Last Name </label> </span> </div> </div> </li> <li class="form-line form-line-column form-col-1" data-type="control_textbox" id="id_3"> <label class="form-label form-label-top" id="label_3" for="input_3"> Preferred Name </label> <div id="cid_3" class="form-input-wide"> <input type="text" id="input_3" name="q3_preferredName" data-type="input-textbox" class="form-textbox" size="25" value="" placeholder=" " data-component="textbox" aria-labelledby="label_3" /> </div> </li> <li class="form-line form-line-column form-col-2 jf-required" data-type="control_textbox" id="id_5"> <label class="form-label form-label-top" id="label_5" for="input_5"> Email Address <span class="form-required"> * </span> </label> <div id="cid_5" class="form-input-wide jf-required"> <input type="text" id="input_5" name="q5_emailAddress" data-type="input-textbox" class="form-textbox validate[required, Email]" size="25" value="" placeholder=" " data-component="textbox" aria-labelledby="label_5" required="" /> </div> </li> <li class="form-line form-line-column form-col-3 jf-required" data-type="control_textbox" id="id_45"> <label class="form-label form-label-left" id="label_45" for="input_45"> Cell Number <span class="form-required"> * </span> </label> <div id="cid_45" class="form-input jf-required"> <input type="text" id="input_45" name="q45_cellNumber" data-type="input-textbox" class="form-textbox validate[required, Numeric]" size="25" value="" placeholder=" " data-component="textbox" aria-labelledby="label_45" required="" /> </div> </li> <li class="form-line form-line-column form-col-4 jf-required" data-type="control_textbox" id="id_35"> <label class="form-label form-label-top" id="label_35" for="input_35"> Suit/Dress Size <span class="form-required"> * </span> </label> <div id="cid_35" class="form-input-wide jf-required"> <input type="text" id="input_35" name="q35_suitdressSize" data-type="input-textbox" class="form-textbox validate[required]" size="6" value="" placeholder=" " data-component="textbox" aria-labelledby="label_35" required="" /> </div> </li> <li class="form-line form-line-column form-col-5 jf-required" data-type="control_textbox" id="id_37"> <label class="form-label form-label-top" id="label_37" for="input_37"> Hair Color <span class="form-required"> * </span> </label> <div id="cid_37" class="form-input-wide jf-required"> <input type="text" id="input_37" name="q37_hairColor" data-type="input-textbox" class="form-textbox validate[required]" size="8" value="" placeholder=" " data-component="textbox" aria-labelledby="label_37" required="" /> </div> </li> <li class="form-line form-line-column form-col-6 jf-required" data-type="control_textbox" id="id_40"> <label class="form-label form-label-top" id="label_40" for="input_40"> Eye Color <span class="form-required"> * </span> </label> <div id="cid_40" class="form-input-wide jf-required"> <input type="text" id="input_40" name="q40_eyeColor" data-type="input-textbox" class="form-textbox validate[required]" size="8" value="" placeholder=" " data-component="textbox" aria-labelledby="label_40" required="" /> </div> </li> <li class="form-line form-line-column form-col-7 jf-required" data-type="control_textbox" id="id_39"> <label class="form-label form-label-top" id="label_39" for="input_39"> Tattoos? <span class="form-required"> * </span> </label> <div id="cid_39" class="form-input-wide jf-required"> <input type="text" id="input_39" name="q39_tattoos" data-type="input-textbox" class="form-textbox validate[required]" size="5" value="" placeholder=" " data-component="textbox" aria-labelledby="label_39" required="" /> </div> </li> <li class="form-line form-line-column form-col-8 jf-required" data-type="control_textbox" id="id_41"> <label class="form-label form-label-top" id="label_41" for="input_41"> ARE YOU 21 YRS OR OLDER? <span class="form-required"> * </span> </label> <div id="cid_41" class="form-input-wide jf-required"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="text" id="input_41" name="q41_areYou" data-type="input-textbox" class="form-textbox validate[required]" size="5" value="" placeholder=" " data-component="textbox" aria-labelledby="label_41 sublabel_input_41" required="" /> <label class="form-sub-label" for="input_41" id="sublabel_input_41" style="min-height:13px" aria-hidden="false"> This venue only permits 21+ </label> </span> </div> </li> <li class="form-line form-line-column form-col-1 form-line-column-clear" data-type="control_textbox" id="id_15"> <label class="form-label form-label-top" id="label_15" for="input_15"> Representation? </label> <div id="cid_15" class="form-input-wide"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="text" id="input_15" name="q15_representation" data-type="input-textbox" class="form-textbox" size="20" value="" placeholder=" " data-component="textbox" aria-labelledby="label_15 sublabel_input_15" /> <label class="form-sub-label" for="input_15" id="sublabel_input_15" style="min-height:13px" aria-hidden="false"> Do you work with an agency? </label> </span> </div> </li> <li class="form-line form-line-column form-col-2" data-type="control_textbox" id="id_42"> <label class="form-label form-label-top" id="label_42" for="input_42"> The Labeled Blu Collection Grand Opening is on May 8th. Are you available on this date? </label> <div id="cid_42" class="form-input-wide"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="text" id="input_42" name="q42_theLabeled" data-type="input-textbox" class="form-textbox" size="60" value="" placeholder=" " data-component="textbox" aria-labelledby="label_42 sublabel_input_42" /> <label class="form-sub-label" for="input_42" id="sublabel_input_42" style="min-height:13px" aria-hidden="false"> *Note: There is no monetary compensation if booked for Labeled Blu Collection. </label> </span> </div> </li> <li class="form-line" data-type="control_textbox" id="id_50"> <label class="form-label form-label-top form-label-auto" id="label_50" for="input_50"> Do you have any experience? If you do, please list below. </label> <div id="cid_50" class="form-input-wide"> <input type="text" id="input_50" name="q50_doYou" data-type="input-textbox" class="form-textbox" size="20" value="" data-component="textbox" aria-labelledby="label_50" /> </div> </li> <li class="form-line jf-required" data-type="control_textbox" id="id_47"> <label class="form-label form-label-top form-label-auto" id="label_47" for="input_47"> What's your IG and Facebook? <span class="form-required"> * </span> </label> <div id="cid_47" class="form-input-wide jf-required"> <input type="text" id="input_47" name="q47_whatsYour" data-type="input-textbox" class="form-textbox validate[required]" size="20" value="" data-component="textbox" aria-labelledby="label_47" required="" /> </div> </li> <li class="form-line form-line-column form-col-1 jf-required" data-type="control_fileupload" id="id_29"> <label class="form-label form-label-top" id="label_29" for="input_29"> UPLOAD 1 RECENT CLOSE UP IMAGE (VERTICAL FORMAT) <span class="form-required"> * </span> </label> <div id="cid_29" class="form-input-wide jf-required"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="file" id="input_29" name="q29_upload129" class="form-upload validate[required]" data-imagevalidate="yes" data-file-accept="pdf, doc, docx, xls, csv, txt, rtf, html, zip, mp3, wma, mpg, flv, avi, jpg, jpeg, png, gif" data-file-maxsize="10240" data-file-minsize="0" data-file-limit="2" data-component="fileupload" required="" /> <label class="form-sub-label" for="input_29" style="min-height:13px" aria-hidden="false"> WE WANT TO SEE THE NATURAL FEATURES OF YOUR FACE AND HAIR. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE. </label> </span> </div> </li> <li class="form-line form-line-column form-col-2 jf-required" data-type="control_fileupload" id="id_44"> <label class="form-label form-label-top" id="label_44" for="input_44"> UPLOAD 1 RECENT FULL BODY IMAGE (VERTICAL FORMAT) <span class="form-required"> * </span> </label> <div id="cid_44" class="form-input-wide jf-required"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="file" id="input_44" name="q44_upload1" class="form-upload validate[required]" data-imagevalidate="yes" data-file-accept="pdf, doc, docx, xls, csv, txt, rtf, html, zip, mp3, wma, mpg, flv, avi, jpg, jpeg, png, gif" data-file-maxsize="10240" data-file-minsize="0" data-file-limit="2" data-component="fileupload" required="" /> <label class="form-sub-label" for="input_44" style="min-height:13px" aria-hidden="false"> WE WANT TO SEE THE SHAPE AND FIT OF YOUR FULL BODY. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE. </label> </span> </div> </li> <li class="form-line jf-required" data-type="control_appointment" id="id_53"> <label class="form-label form-label-top" id="label_53" for="input_53"> Choose the time you'd like to audition. <span class="form-required"> * </span> </label> <div id="cid_53" class="form-input-wide jf-required"> <div id="input_53" class="appointmentFieldWrapper jfQuestion-fields"> <input class="appointmentFieldInput validate" name="q53_chooseThe[date]" id="input_53_date" /> <input class="appointmentFieldInput" name="q53_chooseThe[duration]" value="15" id="input_53_duration" /> <input class="appointmentFieldInput" name="q53_chooseThe[timezone]" value="America/New_York (GMT-04:00)" id="input_53_timezone" /> <div class="appointmentField"> </div> </div> </div> </li> <li class="form-line" data-type="control_button" id="id_30"> <div id="cid_30" class="form-input-wide"> <div style="margin-left:156px" data-align="auto" class="form-buttons-wrapper form-buttons-auto jsTest-button-wrapperField"> <button id="input_30" type="submit" class="form-submit-button submit-button jf-form-buttons jsTest-submitField" data-component="button" data-content=""> Submit </button> </div> </div> </li> <li style="clear:both"> </li> <li style="display:none"> Should be Empty: <input type="text" name="website" value="" /> </li> </ul> </div> <script> JotForm.showJotFormPowered = "new_footer"; </script> <script> JotForm.poweredByText = "Powered by JotForm"; </script> <input type="hidden" class="simple_spc" id="simple_spc" name="simple_spc" value="210874352707154" /> <script type="text/javascript"> var all_spc = document.querySelectorAll("form[id='210874352707154'] .si" + "mple" + "_spc"); for (var i = 0; i < all_spc.length; i++) { all_spc[i].value = "210874352707154-210874352707154"; } </script> <div class="formFooter-heightMask"> </div> <div class="formFooter f6"> <div class="formFooter-wrapper formFooter-leftSide"> <a href="https://www.jotform.com/?utm_source=formfooter&utm_medium=banner&utm_term=210874352707154&utm_content=jotform_logo&utm_campaign=powered_by_jotform_le" target="_blank" class="formFooter-logoLink"><img class="formFooter-logo" src="https://cdn.jotfor.ms/assets/img/logo/logo-new@1x.png" alt="Jotform Logo"></a> </div> <div class="formFooter-wrapper formFooter-rightSide"> <span class="formFooter-text"> Now create your own JotForm - It's free! </span> <a class="formFooter-button" href="https://www.jotform.com/?utm_source=formfooter&utm_medium=banner&utm_term=210874352707154&utm_content=jotform_button&utm_campaign=powered_by_jotform_le" target="_blank">Create your own JotForm</a> </div> </div> </form> <script src="https://cdn.jotfor.ms/js/vendor/imageinfo.js?v=3.3.24338" type="text/javascript"></script> <script src="https://cdn.jotfor.ms/static/prototype.forms.js" type="text/javascript"></script> <script src="https://cdn.jotfor.ms/static/jotform.forms.js?3.3.24338" type="text/javascript"></script> <script type="text/javascript"> JotForm.init(function(){ if (window.JotForm && JotForm.accessible) $('input_3').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_5').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_45').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_35').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_37').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_40').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_39').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_41').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_15').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_42').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_50').setAttribute('tabindex',0); if (window.JotForm && JotForm.accessible) $('input_47').setAttribute('tabindex',0); JotForm.calendarMonths = ["January","February","March","April","May","June","July","August","September","October","November","December"]; JotForm.calendarDays = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]; JotForm.calendarOther = "Today"; JotForm.checkAppointmentAvailability = function checkAppointmentAvailability(day, slot, data) { if (!(day && slot && data && data[day])) return false; return data[day][slot]; }; (function init(props) { var PREFIX = window.location.href.indexOf('jotform.pro') > -1 || window.location.pathname.indexOf('build') > -1 || window.location.pathname.indexOf('form-templates') > -1 || window.location.pathname.indexOf('pdf-templates') > -1 || window.location.pathname.indexOf('table-templates') > -1 ? '/server.php' : JotForm.server; // boilerplate var effectsOut = null; var changed = {}; var constructed = false; var _window = window, document = _window.document; var wrapper = document.querySelector('#' + props.qid.value); var element = wrapper.querySelector('.appointmentField'); var input = wrapper.querySelector('#input_' + props.id.value + '_date'); var tzInput = wrapper.querySelector('#input_' + props.id.value + '_timezone'); function debounce(func, wait, immediate) { var timeout = void 0; return function wrappedFN() { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var context = this; var later = function later() { timeout = null; if (!immediate) func.apply.apply(func, [context].concat(args)); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply.apply(func, [context].concat(args)); }; } var classNames = function classNames(obj) { return Object.keys(obj).reduce(function (acc, key) { if (!obj[key]) return acc; return [].concat(acc, [key]); }, []).join(' '); }; var assignObject = function assignObject() { for (var _len2 = arguments.length, objects = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { objects[_key2] = arguments[_key2]; } return objects.reduce(function (acc, obj) { Object.keys(obj).forEach(function (key) { acc[key] = obj[key]; }); return acc; }, {}); }; var objectEntries = function objectEntries(obj) { return Object.keys(obj).reduce(function (acc, key) { var value = obj[key]; var pair = [key, value]; return [].concat(acc, [pair]); }, []); }; var fillArray = function fillArray(arr, value) { var newArr = []; for (var i = 0; i < arr.length; i++) { newArr.push(value); } return newArr; }; var getJSON = function getJSON(url, cb) { return new Ajax.Request(url, { evalJSON: 'force', method: 'GET', onComplete: function onComplete(response) { return cb(response.responseJSON); } }); }; var beforeRender = function beforeRender() { if (effectsOut) { effectsOut(); effectsOut = null; } }; var afterRender = function afterRender() { effectsOut = effects(); }; var setState = function setState(newState) { var changedKeys = Object.keys(newState).filter(function (key) { return state[key] !== newState[key]; }); if (!changedKeys.length) { return; } changed = changedKeys.reduce(function (acc, key) { var _assignObject; return assignObject({}, acc, (_assignObject = {}, _assignObject[key] = state[key], _assignObject)); }, changed); state = assignObject({}, state, newState); if (constructed) { render(); } }; var isStartWeekOnMonday = function isStartWeekOnMonday() { var _props = props, startDay = _props.startWeekOn.value; return !startDay || startDay === 'Monday'; }; var monthNames = function monthNames() { return (JotForm.calendarMonthsTranslated || JotForm.calendarMonths || _Utils.specialOptions.Months.value).map(function (monthName) { return String.prototype.locale ? monthName.locale() : monthName; }); }; var daysOfWeek = function daysOfWeek() { return (JotForm.calendarDaysTranslated || JotForm.calendarDays || _Utils.specialOptions.Days.value).map(function (dayName) { return String.prototype.locale ? dayName.locale() : dayName; }); }; // we need remove unnecessary "Sunday", if there is time field on the form var dayNames = function dayNames() { var days = daysOfWeek().length === 8 ? daysOfWeek().slice(1) : daysOfWeek(); return isStartWeekOnMonday() ? days : [days[days.length - 1]].concat(days.slice(0, 6)); }; var oneHour = 1000 * 60 * 60; // const oneDay = oneHour * 24; var intPrefix = function intPrefix(d) { if (d < 10) { return '0' + d; } return '' + d; }; var toFormattedDateStr = function toFormattedDateStr(date) { var _props2 = props, _props2$dateFormat$va = _props2.dateFormat.value, format = _props2$dateFormat$va === undefined ? 'yyyy-mm-dd' : _props2$dateFormat$va; if (!date) return; if (typeof date === 'string') { var _date$split = date.split('-'), _year = _date$split[0], _month = _date$split[1], _day = _date$split[2]; return format.replace(/yyyy/, _year).replace(/mm/, _month).replace(/dd/, _day); } var year = date.getFullYear(); var month = intPrefix(date.getMonth() + 1); var day = intPrefix(date.getUTCDate()); return format.replace(/yyyy/, year).replace(/mm/, month).replace(/dd/, day); }; var toDateStr = function toDateStr(date) { if (!date) return; var year = date.getFullYear(); var month = intPrefix(date.getMonth() + 1); var day = intPrefix(date.getDate()); return year + '-' + month + '-' + day; }; var toDateTimeStr = function toDateTimeStr(date) { if (!date) return; var ymd = toDateStr(date); var hour = intPrefix(date.getHours()); var minute = intPrefix(date.getMinutes()); return ymd + ' ' + hour + ':' + minute; }; var getTimezoneOffset = function getTimezoneOffset(timezone) { if (!timezone) { return 0; } var cityArgs = timezone.split(' '); var splitted = cityArgs[cityArgs.length - 1].replace(/\(GMT|\)/g, '').split(':'); if (!splitted) { return 0; } return parseInt(splitted[0] || 0, 10) + (parseInt(splitted[1] || 0, 10) / 60 || 0); }; var getGMTSuffix = function getGMTSuffix(offset) { if (offset === 0) { return ''; } var offsetMinutes = Math.abs(offset) % 60; var offsetHours = Math.abs(offset - offsetMinutes) / 60; var str = intPrefix(offsetHours) + ':' + intPrefix(offsetMinutes); if (offset < 0) { return '+' + str; } return '-' + str; }; // const toJSDate = (dateStr, timezone) => { // if (!dateStr) return; // const gmtSuffix = getGMTSuffix(timezone || state.timezone); // return new Date(`${dateStr} GMT${gmtSuffix}`); // }; var getYearMonth = function getYearMonth(date) { if (!date) return; var _date$split2 = date.split('-'), y = _date$split2[0], m = _date$split2[1]; return y + '-' + m; }; var getMondayBasedDay = function getMondayBasedDay(date) { var day = date.getUTCDay(); if (day === 0) { return 6; // sunday index } return day - 1; }; var getDay = function getDay(date) { return isStartWeekOnMonday() ? getMondayBasedDay(date) : date.getUTCDay(); }; var getUserTimezone = function getUserTimezone() { try { var tzStr = Intl.DateTimeFormat().resolvedOptions().timeZone; if (tzStr) { var tz = tzStr + ' (GMT' + getGMTSuffix(new Date().getTimezoneOffset()) + ')'; return tz; } } catch (e) { console.error(e.message); } return props.timezone.value; }; var passedProps = props; var getStateFromProps = function getStateFromProps() { var newProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var startDate = new Date(newProps.startDate ? newProps.startDate.value : ''); var today = new Date(); var date = toDateStr(new Date(Math.max(startDate, today) || today)); return { date: date, timezones: state ? state.timezones : { loading: true } }; }; var getFirstAvailableDates = function getFirstAvailableDates(cb) { var _props3 = props, _props3$formID = _props3.formID, formID = _props3$formID === undefined ? global.__formInfo.id : _props3$formID; var _state = state, _state$timezone = _state.timezone, timezone = _state$timezone === undefined ? getUserTimezone() : _state$timezone; if (!formID || !timezone) return; // eslint-disable-next-line max-len var url = PREFIX + '?action=getAppointments&formID=' + formID + '&timezone=' + encodeURIComponent(timezone) + '&ncTz=' + new Date().getTime() + '&firstAvailableDates'; return getJSON(url, function (_ref) { var content = _ref.content; return cb(content); }); }; var state = getStateFromProps(props); var loadTimezones = function loadTimezones(cb) { setState({ timezones: { loading: true } }); getJSON((props.cdnconfig.CDN || '/') + 'assets/form/timezones.json?ncTz=' + new Date().getTime(), function (data) { var timezones = objectEntries(data).reduce(function (acc, _ref2) { var group = _ref2[0], cities = _ref2[1]; acc.push({ group: group, cities: cities }); return acc; }, []); cb(timezones); }); }; var loadMonthData = function loadMonthData(startDate, endDate, cb) { var _props4 = props, _props4$formID = _props4.formID, formID = _props4$formID === undefined ? (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' ? global.__formInfo.id : null : _props4$formID, id = _props4.id.value; var _state2 = state, timezone = _state2.timezone; if (!formID || !timezone) return; // eslint-disable-next-line max-len var url = PREFIX + '?action=getAppointments&formID=' + formID + '&qid=' + id + '&timezone=' + encodeURIComponent(timezone) + '&startDate=' + toDateStr(startDate) + '&endDate=' + toDateStr(endDate) + '&ncTz=' + new Date().getTime(); return getJSON(url, function (_ref3) { var data = _ref3.content; return cb(data); }); }; var generateMonthData = function generateMonthData(startDate, endDate, data) { var d1 = startDate.getDate(); var d2 = endDate.getDate(); var dPrefix = startDate.getFullYear() + '-' + intPrefix(startDate.getMonth() + 1) + '-'; var daysLength = d2 - d1 + 1 || 0; var days = fillArray(new Array(daysLength), ''); var slots = days.reduce(function (acc, x, day) { var _assignObject2; var dayStr = '' + dPrefix + intPrefix(day + 1); return assignObject(acc, (_assignObject2 = {}, _assignObject2[dayStr] = data[dayStr] || false, _assignObject2)); }, {}); var availableDays = Object.keys(data).filter(function (d) { return !Array.isArray(slots[d]) && !!slots[d]; }); return { availableDays: availableDays, slots: slots }; }; var lastReq = void 0; var updateMonthData = function updateMonthData(startDate, endDate, data) { var _generateMonthData = generateMonthData(startDate, endDate, data), availableDays = _generateMonthData.availableDays, slots = _generateMonthData.slots; if (JSON.stringify(slots) === JSON.stringify(state.slots)) { return; } setState({ availableDays: availableDays, slots: slots }); }; var getDateRange = function getDateRange(dateStr) { var _dateStr$split = dateStr.split('-'), y = _dateStr$split[0], m = _dateStr$split[1]; var startDate = new Date(y, m - 1, 1); var endDate = new Date(y, m, 0); return [startDate, endDate]; }; var load = function load() { var _state3 = state, dateStr = _state3.date; var _getDateRange = getDateRange(dateStr), startDate = _getDateRange[0], endDate = _getDateRange[1]; setState(assignObject({ loading: true }, generateMonthData(startDate, endDate, {}))); var req = loadMonthData(startDate, endDate, function (data) { if (lastReq !== req) { return; } updateMonthData(startDate, endDate, data); var _state4 = state, availableDays = _state4.availableDays, forcedStartDate = _state4.forcedStartDate, forcedEndDate = _state4.forcedEndDate, slots = _state4.slots; var firstAvailable = availableDays.find(function (d) { var foundSlot = Object.keys(slots[d]).find(function (slot) { var slotDate = dateInTimeZone(new Date((d + ' ' + slot).replace(/-/g, '/'))); if (forcedStartDate && slotDate > forcedStartDate) return false; if (forcedEndDate && slotDate < forcedEndDate) return false; return true; }); return foundSlot; }); var newDate = availableDays.indexOf(dateStr) === -1 && firstAvailable; setState({ loading: false, date: newDate || dateStr }); }); lastReq = req; }; var dateInTimeZone = function dateInTimeZone(date) { var timezone = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : state.timezone; if (!date) return; var diffTime = (getTimezoneOffset(timezone) - state.nyTz) * oneHour; return new Date(date.getTime() - diffTime); }; var dz = function dz(date, tz1, tz2) { if (!date) return; var diffTime = (tz1 - tz2) * oneHour; return new Date(date.getTime() - diffTime); }; var revertDate = function revertDate(d, t1, t2) { if (!d) return ''; var pDate = new Date(d.replace(/-/, '/')); var utz = getTimezoneOffset(getUserTimezone()); var tz1 = getTimezoneOffset(t1) - utz; var tz2 = getTimezoneOffset(t2) - utz; var val = dz(pDate, tz1, tz2); return toDateTimeStr(val); }; var amPmConverter = function amPmConverter(_time) { var _props5 = props, _props5$timeFormat = _props5.timeFormat; _props5$timeFormat = _props5$timeFormat === undefined ? {} : _props5$timeFormat; var _props5$timeFormat$va = _props5$timeFormat.value, timeFormat = _props5$timeFormat$va === undefined ? '24 Hour' : _props5$timeFormat$va; if (!_time || !(typeof _time === 'string') || _time.indexOf('M') > -1 || !timeFormat || timeFormat === '24 Hour') { return _time; } var time = _time.substring(0, 2); var hour = time % 12 || 12; var ampm = time < 12 ? 'AM' : 'PM'; return '' + hour + _time.substring(2, 5) + ' ' + ampm; }; var validate = function validate(dateStr, cb) { var _state5 = state, defaultValue = _state5.defaultValue; if (JotForm.isEditMode() && defaultValue === dateStr) { return cb(true); } var parts = dateStr.split(' '); var slot = parts.slice(1).join(' '); var _parts$0$split = parts[0].split('-'), y = _parts$0$split[0], m = _parts$0$split[1], d = _parts$0$split[2]; var startDate = new Date(y, m - 1, 1); var endDate = new Date(y, m, 0); loadMonthData(startDate, endDate, function (data) { var day = y + '-' + m + '-' + d; var isValid = JotForm.checkAppointmentAvailability(day, amPmConverter(slot), data); cb(isValid); if (!isValid) { var _assignObject3; // add unavailable slot if it is not in response for deselection data[day] = assignObject({}, data[day], (_assignObject3 = {}, _assignObject3[slot] = false, _assignObject3)); } // still in same month if (state.date.indexOf(y + '-' + m) === 0) { updateMonthData(startDate, endDate, data); } }); }; // let validationInterval; var validation = function validation(_value) { var shouldValidate = _value || $(input).hasClassName('validate'); if (!shouldValidate) { $(input).addClassName('valid'); JotForm.corrected(input); JotForm.runConditionForId(props.id.value); return; } if (!_value) { $(input).removeClassName('valid'); JotForm.errored(input, JotForm.texts.required); JotForm.runConditionForId(props.id.value); return; } validate(_value, function (isValid) { if (isValid) { $(input).addClassName('valid'); JotForm.corrected(input); JotForm.runConditionForId(props.id.value); return; } // clearInterval(validationInterval); var parts = _value.split(' '); var dateStr = parts[0]; var date = new Date(dateStr); var day = getDay(date); var datetime = dayNames()[day] + ', ' + monthNames()[date.getMonth()] + ' ' + intPrefix(date.getUTCDate()) + ', ' + date.getFullYear(); var time = parts.slice(1).join(' '); var errorText = JotForm.texts.slotUnavailable.replace('{time}', time).replace('{date}', datetime); $(input).removeClassName('valid'); JotForm.errored(input, errorText); JotForm.runConditionForId(props.id.value); }); }; var setValue = function setValue(value) { input.value = value ? toDateTimeStr(dateInTimeZone(new Date(value.replace(/-/g, '/')))) : ''; setState({ value: value }); // trigger input event for supporting progress bar widget input.triggerEvent('input'); // clearInterval(validationInterval); validation(value); // validationInterval = setInterval(() => { validation(state.value); }, 1000 * 5); }; var handleClick = function handleClick(e) { var target = e.target; var $target = $(target); if (!$target || !$target.hasClassName) { return; } if ($target.hasClassName('disabled') && !$target.hasClassName('active')) { return; } e.preventDefault(); var value = target.dataset.value; setValue($target.hasClassName('active') ? undefined : value); }; var setTimezone = function setTimezone(timezone) { tzInput.value = timezone; setState({ timezone: timezone }); if (input.value) { var date = toDateTimeStr(dz(new Date(input.value.replace(/-/g, '/')), state.nyTz, getTimezoneOffset(state.timezone))); setDate(date.split(' ')[0]); setState({ value: date }); } }; var handleTimezoneChange = function handleTimezoneChange(e) { var target = e.target; var timezone = target.value; setTimezone(timezone); }; var setDate = function setDate(date) { return setState({ date: date }); }; var handleDateChange = function handleDateChange(e) { var target = e.target; var date = target.dataset.value; if (!date) return; setDate(date); }; var handleMonthYearChange = function handleMonthYearChange(e) { var _e$target = e.target, dataset = _e$target.dataset, inputVal = _e$target.value; var name = dataset.name; if (!name) { return; } var _state6 = state, date = _state6.date; var oldDate = new Date(date); var oldMonth = oldDate.getMonth(); var oldYear = oldDate.getFullYear(); var oldDay = oldDate.getUTCDate(); var value = inputVal || e.target.getAttribute('value'); if (name === 'month') { var newDate = new Date(oldYear, value, oldDay); var i = 1; while ('' + newDate.getMonth() !== '' + value && i < 10) { newDate = new Date(oldYear, value, oldDay - i); i++; } return setDate(toDateStr(newDate)); } return setDate(toDateStr(new Date(value, oldMonth, oldDay))); }; var toggleMobileState = function toggleMobileState() { var $wrapper = $(wrapper); if ($wrapper.hasClassName('isOpenMobile')) { $wrapper.removeClassName('isOpenMobile'); } else { $wrapper.addClassName('isOpenMobile'); } }; var keepSlotsScrollPosition = function keepSlotsScrollPosition() { var visibleSlot = element.querySelector('.appointmentSlots.slots .slot.active, .appointmentSlots.slots .slot:not(.disabled)'); element.querySelector('.appointmentSlots.slots').scrollTop = visibleSlot ? visibleSlot.offsetTop : 0; }; var handleUIUpdate = function handleUIUpdate() { try { var breakpoints = { 450: 'isLarge', 225: 'isNormal', 175: 'shouldBreakIntoNewLine' }; var offsetWidth = function () { try { var appointmentCalendarRow = element.querySelector('.appointmentFieldRow.forCalendar'); var appointmendCalendar = element.querySelector('.appointmentCalendar'); return appointmentCalendarRow.getBoundingClientRect().width - appointmendCalendar.getBoundingClientRect().width; } catch (e) { return null; } }(); if (offsetWidth === null || parseInt(wrapper.readAttribute('data-breakpoint-offset'), 10) === offsetWidth) { return; } var breakpoint = Object.keys(breakpoints).reduce(function (prev, curr) { return Math.abs(curr - offsetWidth) < Math.abs(prev - offsetWidth) ? curr : prev; }); var breakpointName = breakpoints[breakpoint]; wrapper.setAttribute('data-breakpoint', breakpointName); wrapper.setAttribute('data-breakpoint-offset', offsetWidth); } catch (e) { // noop. } }; var uiUpdateInterval = void 0; var effects = function effects() { clearInterval(uiUpdateInterval); var shouldLoad = changed.timezone && changed.timezone !== state.timezone || // time zone changed changed.date && getYearMonth(changed.date) !== getYearMonth(state.date); // y-m changed changed = {}; if (shouldLoad) { load(); } var cancelBtn = element.querySelector('.cancel'); if (cancelBtn) { cancelBtn.addEventListener('click', function () { setValue(undefined); }); } var forSelectedDate = element.querySelector('.forSelectedDate span'); if (forSelectedDate) { forSelectedDate.addEventListener('click', function () { setDate(state.value.split(' ')[0]); }); } element.querySelector('.calendar .days').addEventListener('click', handleDateChange); element.querySelector('.monthYearPicker').addEventListener('change', handleMonthYearChange); element.querySelector('.dayPicker').addEventListener('click', handleDateChange); element.querySelector('.timezonePicker').addEventListener('change', handleTimezoneChange); element.querySelector('.selectedDate').addEventListener('click', toggleMobileState); Array.prototype.slice.call(element.querySelectorAll('.monthYearPicker .pickerArrow')).forEach(function (el) { return el.addEventListener('click', handleMonthYearChange); }); Array.prototype.slice.call(element.querySelectorAll('.slot')).forEach(function (el) { return el.addEventListener('click', handleClick); }); keepSlotsScrollPosition(); uiUpdateInterval = setInterval(handleUIUpdate, 250); JotForm.runAllCalculations(); }; var renderMonthYearPicker = function renderMonthYearPicker() { var _state7 = state, date = _state7.date; var _split = (date || '-').split('-'), year = _split[0], month = _split[1]; var yearOpts = fillArray(new Array(20), '').map(function (v, i) { return '' + (2020 + i); }); return '\n <div class=\'monthYearPicker\'>\n <div class=\'pickerItem\'>\n <select class=\'pickerMonth\' data-name=\'month\'>\n ' + monthNames().map(function (monthName, i) { return '<option ' + (parseInt(month, 10) === i + 1 ? 'selected' : '') + ' value=\'' + i + '\'>' + monthName + '</option>'; }).join('') + '\n </select>\n <button type=\'button\' class=\'pickerArrow pickerMonthArrow prev\' value=\'' + (parseInt(month, 10) - 2) + '\' data-name=\'month\'></button>\n <button type=\'button\' class=\'pickerArrow pickerMonthArrow next\' value=\'' + parseInt(month, 10) + '\' data-name=\'month\'></button>\n </div>\n <div class=\'pickerItem\'>\n <select class=\'pickerYear\' data-name=\'year\'>\n ' + yearOpts.map(function (yearName) { return '<option ' + (year === yearName ? 'selected' : '') + '>' + yearName + '</option>'; }).join('') + '\n </select>\n <button type=\'button\' class=\'pickerArrow pickerYearArrow prev\' value=\'' + (parseInt(year, 10) - 1) + '\' data-name=\'year\' />\n <button type=\'button\' class=\'pickerArrow pickerYearArrow next\' value=\'' + (parseInt(year, 10) + 1) + '\' data-name=\'year\' />\n </div>\n </div>\n '; }; var getNav = function getNav() { var _state8 = state, availableDays = _state8.availableDays, dateStr = _state8.date; var next = void 0; var prev = void 0; var _dateStr$split2 = dateStr.split('-'), year = _dateStr$split2[0], month = _dateStr$split2[1]; if (availableDays) { var dayIndex = availableDays.indexOf(dateStr); if (dayIndex > 0) { prev = availableDays[dayIndex - 1]; } else { var prevDate = new Date(year, month - 1, 0); prev = toDateStr(prevDate); } if (dayIndex + 1 < availableDays.length) { next = availableDays[dayIndex + 1]; } else { var nextDate = new Date(year, month, 1); next = toDateStr(nextDate); } } return { prev: prev, next: next }; }; var renderDayPicker = function renderDayPicker() { var _state9 = state, loading = _state9.loading; var _getNav = getNav(), prev = _getNav.prev, next = _getNav.next; return '\n <div class=\'appointmentDayPicker dayPicker\'>\n <button type=\'button\' ' + (loading || !prev ? 'disabled' : '') + ' class="appointmentDayPickerButton prev" ' + (prev && 'data-value="' + prev + '"') + '>&lt;</button>\n <button type=\'button\' ' + (loading || !next ? 'disabled' : '') + ' class="appointmentDayPickerButton next" ' + (next && 'data-value="' + next + '"') + '>&gt;</button>\n </div>\n '; }; var renderTimezonePicker = function renderTimezonePicker() { var _state10 = state, timezone = _state10.timezone, timezones = _state10.timezones; return '\n <div class=\'timezonePickerWrapper\'> \n <select class=\'timezonePicker\'>\n ' + (!timezones.loading && timezones.map(function (_ref4) { var group = _ref4.group, cities = _ref4.cities; return '\n <optgroup label="' + group + '">\n ' + cities.map(function (val) { return '<option ' + (timezone.indexOf((group + '/' + val).split(' ')[0]) > -1 ? 'selected' : '') + ' value=\'' + group + '/' + val + '\'>' + val + '</option>'; }).join('') + '\n </optgroup>\n '; }).join('')) + '\n </select>\n <div class=\'timezonePickerName\'>' + timezone + '</div>\n </div>\n '; }; var renderCalendarDays = function renderCalendarDays() { var _state11 = state, slots = _state11.slots, dateStr = _state11.date, value = _state11.value, availableDays = _state11.availableDays; var days = slots ? Object.keys(slots) : []; var todayStr = toDateStr(new Date()); if (!days.length) { return ''; } var firstDay = getDay(new Date(days[0])); days.unshift.apply(days, fillArray(new Array(firstDay), 'precedingDay')); var trailingDays = Math.ceil(days.length / 7) * 7 - days.length; days.push.apply(days, fillArray(new Array(trailingDays), 'trailingDay')); var weeks = days.map(function (item, i) { return i % 7 === 0 ? days.slice(i, i + 7) : null; }).filter(function (a) { return a; }); var dateValue = value && value.split(' ')[0]; return '\n ' + weeks.map(function (week) { return '<div class=\'calendarWeek\'>' + week.map(function (day) { var dayObj = new Date(day); if (day === 'precedingDay' || day === 'trailingDay') { return '<div class="calendarDay ' + day + ' empty"></div>'; } var active = day === dateStr; var isToday = todayStr === day; var beforeStartDate = state.forcedStartDate ? state.forcedStartDate > dayObj : false; var afterEndDate = state.forcedEndDate ? state.forcedEndDate < dayObj : false; var isUnavailable = availableDays.indexOf(day) === -1 || beforeStartDate || afterEndDate; var isSelected = day === dateValue; var classes = 'calendarDay ' + classNames({ isSelected: isSelected, isToday: isToday, isUnavailable: isUnavailable, isActive: active }); return '<div class=\'' + classes + '\' data-value=\'' + day + '\'><span class=\'calendarDayEach\'>' + day.split('-')[2].replace(/^0/, '') + '</span></div>'; }).join('') + '</div>'; }).join('') + '\n '; }; var renderEmptyState = function renderEmptyState() { /* eslint-disable */ return '\n <div class="appointmentSlots-empty">\n <div class="appointmentSlots-empty-container">\n <div class="appointmentSlots-empty-icon">\n <svg width="124" height="102" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <defs>\n <path d="M55 32.001c0 21.54 17.46 39 39 39 3.457 0 6.81-.45 10-1.294v34.794H0v-104l71 .001c-9.7 7.095-16 18.561-16 31.5z" id="a"/>\n </defs>\n <g fill="none" fill-rule="evenodd">\n <g transform="translate(-1 -1)">\n <mask id="b" fill="#fff">\n <use xlink:href="#a"/>\n </mask>\n <g mask="url(#b)">\n <path d="M18.85 52.001c9.858 0 17.85 7.992 17.85 17.85 0 9.859-7.992 17.85-17.85 17.85S1 79.71 1 69.851c0-9.858 7.992-17.85 17.85-17.85zm5.666 10.842L17.38 69.98l-2.44-2.44a2.192 2.192 0 00-3.1 3.1l3.99 3.987a2.192 2.192 0 003.098 0l8.687-8.686a2.191 2.191 0 00-3.1-3.099z" fill="#D5D6DA"/>\n <path d="M92.043 10.643H81.597V7.576A6.582 6.582 0 0075.023 1a6.582 6.582 0 00-6.574 6.575v3.067H41.833V7.576A6.582 6.582 0 0035.26 1a6.582 6.582 0 00-6.574 6.575v3.149a2.187 2.187 0 00-.585-.082H19.37c-6.042 0-10.957 4.916-10.957 10.958v27.126a2.192 2.192 0 004.383 0V33.215h86.211a2.192 2.192 0 000-4.383H12.795v-7.231a6.582 6.582 0 016.574-6.575H28.1c.203 0 .398-.03.585-.08v2.82a6.582 6.582 0 006.574 6.574c3.625 0 10.574-2.95 10.574-6.574v-2.74H68.45v2.74a6.582 6.582 0 006.574 6.574c3.625 0 7.574-2.95 7.574-6.574v-2.74h9.446a6.582 6.582 0 016.574 6.575v73.072a3.95 3.95 0 01-3.946 3.945h-77.95a3.95 3.95 0 01-3.944-3.944v-5.67c0-1.047-.981-2.192-2.192-2.192-1.21 0-2.191.981-2.191 2.192v5.67c0 4.592 3.736 8.327 8.327 8.327h77.95c4.592 0 8.328-3.736 8.328-8.328V21.601c0-6.042-4.915-10.958-10.957-10.958zM37.45 17.766a2.194 2.194 0 01-2.191 2.191 2.194 2.194 0 01-2.191-2.191V7.576c0-1.209.983-2.192 2.19-2.192 1.21 0 2.192.983 2.192 2.192v10.19zm39.764 0a2.194 2.194 0 01-2.191 2.191 2.194 2.194 0 01-2.191-2.191V7.576c0-1.209.983-2.192 2.191-2.192 1.208 0 2.191.983 2.191 2.192v10.19z" fill="#D5D6DA" fill-rule="nonzero"/>\n <path d="M55.68 63.556c-4.592 0-8.328 3.736-8.328 8.327 0 4.592 3.736 8.328 8.327 8.328 4.592 0 8.328-3.736 8.328-8.328 0-4.591-3.736-8.327-8.328-8.327zm0 12.272a3.95 3.95 0 01-3.945-3.945 3.95 3.95 0 013.944-3.944 3.95 3.95 0 013.945 3.944 3.95 3.95 0 01-3.945 3.945zm26.854-12.272c-4.591 0-8.327 3.736-8.327 8.327 0 4.592 3.736 8.328 8.327 8.328 4.592 0 8.328-3.736 8.328-8.328 0-4.591-3.736-8.327-8.328-8.327zm0 12.272a3.95 3.95 0 01-3.944-3.945 3.95 3.95 0 013.944-3.944 3.95 3.95 0 013.945 3.944 3.95 3.95 0 01-3.945 3.945zM30.126 36.701c-4.591 0-8.327 3.736-8.327 8.328 0 4.591 3.736 8.327 8.327 8.327 4.592 0 8.328-3.736 8.328-8.327 0-4.592-3.736-8.328-8.328-8.328zm0 12.272a3.95 3.95 0 01-3.944-3.944 3.95 3.95 0 013.944-3.945 3.95 3.95 0 013.945 3.945 3.95 3.95 0 01-3.945 3.944z" fill="#D5D6DA" fill-rule="nonzero"/>\n <path d="M83.836 36.701c-4.592 0-8.328 3.736-8.328 8.328 0 4.591 3.736 8.327 8.328 8.327 4.591 0 8.327-3.736 8.327-8.327 0-4.592-3.736-8.328-8.327-8.328zm0 12.272a3.95 3.95 0 01-3.945-3.944 3.95 3.95 0 013.945-3.945 3.95 3.95 0 013.944 3.945 3.95 3.95 0 01-3.944 3.944z" fill="#2B3245" fill-rule="nonzero"/>\n <path d="M56.981 36.701c-4.592 0-8.327 3.736-8.327 8.328 0 4.591 3.735 8.327 8.327 8.327 4.592 0 8.327-3.736 8.327-8.327 0-4.592-3.735-8.328-8.327-8.328zm0 12.272a3.95 3.95 0 01-3.944-3.944 3.95 3.95 0 013.944-3.945 3.95 3.95 0 013.945 3.945 3.95 3.95 0 01-3.945 3.944z" fill="#D5D6DA" fill-rule="nonzero"/>\n <path d="M68.829 11.201l.001 6.375a6.375 6.375 0 006.146 6.371l.229.004a6.375 6.375 0 006.371-6.146l.004-.229-.001-6.375h6.871c6.627 0 12 5.373 12 12v8.4H11.2v-8.4c0-6.627 5.373-12 12-12h5.849l.001 6.75a6 6 0 005.775 5.996l.225.004h.375a6.375 6.375 0 006.375-6.375l-.001-6.375h27.03z" fill="#D5D6DA"/>\n </g>\n </g>\n <path d="M92 0c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32C60 14.327 74.327 0 92 0zm21.268 15.365L75.365 53.268A26.884 26.884 0 0092 59c14.912 0 27-12.088 27-27a26.88 26.88 0 00-5.732-16.635zM92 5C77.088 5 65 17.088 65 32c0 6.475 2.28 12.417 6.079 17.069l37.99-37.99A26.888 26.888 0 0092 5z" fill="#D5D6DA"/>\n </g>\n </svg>\n </div>\n <div class="appointmentSlots-empty-text">' + JotForm.texts.noSlotsAvailable + '</div>\n </div>\n </div>\n '; /* eslint-enable */ }; var dateWithAMPM = function dateWithAMPM() { var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var _props6 = props, _props6$timeFormat = _props6.timeFormat; _props6$timeFormat = _props6$timeFormat === undefined ? {} : _props6$timeFormat; var _props6$timeFormat$va = _props6$timeFormat.value, timeFormat = _props6$timeFormat$va === undefined ? '24 Hour' : _props6$timeFormat$va; var time = new Date(date.replace(/-/g, '/')).toLocaleTimeString('en-US', { hour: 'numeric', minute: 'numeric', hourCycle: timeFormat === 'AM/PM' ? 'h12' : 'h23' }); var day = date && date.split(' ')[0]; return day + ' ' + time; }; var renderSlots = function renderSlots() { var _state12 = state, dateStr = _state12.date, _state12$value = _state12.value, dateValue = _state12$value === undefined ? '' : _state12$value, _state12$defaultValue = _state12.defaultValue, defaultValue = _state12$defaultValue === undefined ? '' : _state12$defaultValue, timezone = _state12.timezone, forcedStartDate = _state12.forcedStartDate, forcedEndDate = _state12.forcedEndDate; var dateSlots = state.slots && state.slots[dateStr] || {}; var stateValue = dateWithAMPM(dateValue); var defaultValueTZ = revertDate(defaultValue, ' ', timezone); var parsedDefaultVal = dateWithAMPM(defaultValueTZ); var entries = objectEntries(dateSlots); if (!entries || !entries.length) { return renderEmptyState(); } return entries.map(function (_ref5) { var name = _ref5[0], value = _ref5[1]; var rn = amPmConverter(name); var slotValue = dateStr + ' ' + rn; var realD = dateInTimeZone(new Date(slotValue.replace(/-/g, '/'))); var active = stateValue === slotValue; var disabled = forcedStartDate && forcedStartDate > realD || forcedEndDate && forcedEndDate < realD || !(value || parsedDefaultVal === slotValue); return '<div class="appointmentSlot slot ' + classNames({ disabled: disabled, active: active }) + '" data-value="' + slotValue + '">' + name + '</div>'; }).join(''); }; var renderDay = function renderDay() { var _state13 = state, dateStr = _state13.date; var date = new Date(dateStr); var day = getDay(date); return '\n <div class=\'appointmentDate\'>\n ' + (dateStr && dayNames()[day] + ', ' + monthNames()[date.getUTCMonth()] + ' ' + intPrefix(date.getUTCDate())) + '\n </div>\n '; }; var renderCalendar = function renderCalendar() { var _state14 = state, dateStr = _state14.date; return '\n <div class=\'selectedDate\'>\n <input class=\'currentDate\' type=\'text\' value=\'' + toFormattedDateStr(dateStr) + '\' style=\'pointer-events: none;\' />\n </div>\n ' + renderMonthYearPicker() + '\n <div class=\'appointmentCalendarDays days\'>\n <div class=\'daysOfWeek\'>\n ' + dayNames().map(function (day) { return '<div class="dayOfWeek ' + day.toLowerCase() + '">' + day.toUpperCase().slice(0, 3) + '</div>'; }).join('') + '\n </div>\n ' + renderCalendarDays() + '\n </div>\n '; }; var renderSelectedDate = function renderSelectedDate() { var _state15 = state, _state15$value = _state15.value, value = _state15$value === undefined ? '' : _state15$value; var dateStr = value && value.split(' ')[0]; var _props7 = props, _props7$timeFormat = _props7.timeFormat; _props7$timeFormat = _props7$timeFormat === undefined ? {} : _props7$timeFormat; var _props7$timeFormat$va = _props7$timeFormat.value, timeFormat = _props7$timeFormat$va === undefined ? '24 Hour' : _props7$timeFormat$va; var date = new Date(dateStr); var time = new Date(value.replace(/-/g, '/')).toLocaleTimeString('en-US', { hour: 'numeric', minute: 'numeric', hourCycle: timeFormat === 'AM/PM' ? 'h12' : 'h23' }); var day = getDay(date); var datetime = dayNames()[day] + ', ' + monthNames()[date.getUTCMonth()] + ' ' + intPrefix(date.getUTCDate()) + ', ' + date.getFullYear(); var text = JotForm.texts.appointmentSelected.replace('{time}', time).replace('{date}', datetime); var valEl = '<div style=\'display: none\' class=\'jsAppointmentValue\'>' + datetime + ' ' + time + '</div>'; return value ? valEl + '<div class=\'appointmentFieldRow forSelectedDate\'><span>' + text + '</span><button type=\'button\' class=\'cancel\'>x</button></div>' : ''; }; var render = debounce(function () { var _state16 = state, loading = _state16.loading; beforeRender(); element.innerHTML = '\n <div class=\'appointmentFieldContainer\'>\n <div class=\'appointmentFieldRow forCalendar\'>\n <div class=\'calendar appointmentCalendar\'>\n <div class=\'appointmentCalendarContainer\'>\n ' + renderCalendar() + '\n </div>\n </div>\n <div class=\'appointmentDates\'>\n <div class=\'appointmentDateSelect\'>\n ' + renderDay() + '\n ' + renderDayPicker() + '\n </div>\n <div class=\'appointmentSlots slots ' + classNames({ isLoading: loading }) + '\'>\n <div class=\'appointmentSlotsContainer\'>\n ' + renderSlots() + '\n </div>\n </div>\n <div class=\'appointmentCalendarTimezone forTimezonePicker\'>\n ' + renderTimezonePicker() + '\n </div>\n </div>\n </div>\n ' + renderSelectedDate() + '\n </div>\n '; afterRender(); }); var _update = function _update(newProps) { state = assignObject({}, state, getStateFromProps(newProps)); props = newProps; load(); }; input.addEventListener('change', function (e) { if (!state.nyTz) return; var date = toDateTimeStr(dz(new Date(e.target.value.replace(/-/g, '/')), state.nyTz, getTimezoneOffset(state.timezone))); setDate(date.split(' ')[0]); setState({ value: date, defaultValue: date }); validation(date); }); tzInput.addEventListener('change', function (e) { var defaultTimezone = e.target.value; setTimezone(defaultTimezone); setState({ defaultTimezone: defaultTimezone }); }); document.addEventListener('translationLoad', function () { return render(); }); var getInitialData = function getInitialData(timezones) { getFirstAvailableDates(function (data) { var nyTz = -4; try { nyTz = getTimezoneOffset(timezones.find(function (_ref6) { var group = _ref6.group; return group === 'America'; }).cities.find(function (c) { return c.indexOf('New_York') > -1; })); } catch (e) { console.log(e); } JotForm.appointments.initialData = data; JotForm.nyTz = nyTz; JotForm.appointments.listeners.forEach(function (fn) { return fn({ data: data, timezones: timezones, nyTz: nyTz }); }); }); }; if (!JotForm.appointments) { JotForm.appointments = { listeners: [] }; loadTimezones(function (timezones) { JotForm.timezones = timezones; getInitialData(timezones); }); } var requestTry = 1; var requestTimeout = 1000; var construct = function construct(_ref7) { var data = _ref7.data, timezones = _ref7.timezones, nyTz = _ref7.nyTz; var qdata = data[props.id.value]; if (!qdata || qdata.error) { constructed = true; if (!qdata && requestTry < 4) { requestTry += 1; setTimeout(function () { getInitialData(JotForm.timezones); }, requestTry * requestTimeout); } return; } constructed = false; var userTimezone = getUserTimezone(); var setUpdatedTimezone = function setUpdatedTimezone(currentTimezone) { if (!currentTimezone) { return currentTimezone; } var _currentTimezone$spli = currentTimezone.split('/'), currentCont = _currentTimezone$spli[0], currCity = _currentTimezone$spli[1]; var currentCity = currCity && currCity.split(' (')[0]; var group = timezones.find(function (timezone) { return timezone.group === currentCont; }); if (!group) { return currentTimezone; } var matchedTimezone = group.cities.find(function (c) { return c.indexOf(currentCity) > -1; }); if (!matchedTimezone) return false; return group.group + '/' + matchedTimezone; }; var timezone = setUpdatedTimezone(userTimezone) || setUpdatedTimezone(props.timezone.value) || props.timezone.value; setTimezone(timezone); var dateStr = Object.keys(qdata)[0]; var _getDateRange2 = getDateRange(dateStr), startDate = _getDateRange2[0], endDate = _getDateRange2[1]; updateMonthData(startDate, endDate, qdata); var _state17 = state, availableDays = _state17.availableDays; var newDate = availableDays.indexOf(dateStr) === -1 ? availableDays[0] : dateStr; constructed = true; setState({ timezones: timezones, loading: false, date: newDate || dateStr, nyTz: nyTz }); setTimeout(function () { if (input.value) { input.triggerEvent('change'); } }, 100); }; JotForm.appointments.listeners.push(construct); if (JotForm.appointments.initialData) { setTimeout(function () { construct({ data: JotForm.appointments.initialData, timezones: JotForm.timezones, nyTz: JotForm.nyTz }); }, requestTimeout); } JotForm.appointments[props.id.value] = { update: function update(newProps) { return _update(assignObject(passedProps, newProps)); }, forceStartDate: function forceStartDate(newDate) { if (!newDate) { setState({ forcedStartDate: undefined }); return; } try { var forcedStartDate = new Date(newDate); if ('' + forcedStartDate === '' + state.forcedStartDate) return; var date = new Date(state.availableDays.find(function (d) { return new Date(d + ' 23:59:59') >= forcedStartDate; })); if (!date.getTime()) { date = forcedStartDate; } date = toDateStr(date); setState({ forcedStartDate: forcedStartDate, date: date }); } catch (e) { console.log(e); } }, forceEndDate: function forceEndDate(newDate) { if (!newDate) { setState({ forcedEndDate: undefined }); return; } try { var forcedEndDate = new Date(newDate); if ('' + forcedEndDate === '' + state.forcedEndDate) return; var availableDays = state.availableDays.filter(function (d) { return new Date(d + ' 00:00:00') <= forcedEndDate; }); var date = new Date(availableDays.indexOf(state.date) > -1 ? state.date : availableDays[availableDays.length - 1]); if (!date.getTime()) { date = forcedEndDate; } date = toDateStr(date); setState({ forcedEndDate: forcedEndDate, date: date }); } catch (e) { console.log(e); } }, getComparableValue: function getComparableValue() { return input.value && toDateTimeStr(dz(new Date(input.value.replace(/-/g, '/')), state.nyTz, getTimezoneOffset(props.timezone.value))) || ''; } }; return _update; })({"text":{"text":"Question","value":"Choose the time you'd like to audition."},"labelAlign":{"text":"Label Align","value":"Top","dropdown":[["Auto","Auto"],["Left","Left"],["Right","Right"],["Top","Top"]]},"required":{"text":"Required","value":"Yes","dropdown":[["No","No"],["Yes","Yes"]]},"description":{"text":"Hover Text","value":"","textarea":true},"slotDuration":{"text":"Slot Duration","value":"15","dropdown":[[15,"15 min"],[30,"30 min"],[45,"45 min"],[60,"60 min"],["custom","Custom min"]],"hint":"Select how long each slot will be."},"startDate":{"text":"Start Date","value":"2021-04-10"},"endDate":{"text":"End Date","value":"2021-04-10"},"intervals":{"text":"Intervals","value":[{"from":"10:00","to":"13:45","days":["Sat"]}],"hint":"The hours will be applied to the selected days and repeated."},"useBlockout":{"text":"Blockout Custom Dates","value":"No","dropdown":[["No","No"],["Yes","Yes"]],"hint":"Disable certain date(s) in the calendar."},"blockoutDates":{"text":"Blockout dates","value":[{"startDate":"","endDate":""}]},"useLunchBreak":{"text":"Lunch Time","value":"No","dropdown":[["No","No"],["Yes","Yes"]],"hint":"Enable lunchtime in the calendar."},"lunchBreak":{"text":"Lunchtime hours","value":[{"from":"12:00","to":"14:00"}]},"timezone":{"text":"Timezone","value":"America/New_York (GMT-04:00)"},"timeFormat":{"text":"Time Format","value":"AM/PM","dropdown":[["24 Hour","24 Hour"],["AM/PM","AM/PM"]],"icon":"images/blank.gif","iconClassName":"toolbar-time_format_24"},"months":{"value":["January","February","March","April","May","June","July","August","September","October","November","December"],"hidden":true},"days":{"value":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],"hidden":true},"startWeekOn":{"text":"Start Week On","value":"Sunday","dropdown":[["Monday","Monday"],["Sunday","Sunday"]],"toolbar":false},"rollingDays":{"text":"Rolling Days","value":"","toolbar":false},"appointmentType":{"hidden":true,"value":"single"},"dateFormat":{"hidden":true,"value":"mm/dd/yyyy"},"maxAttendee":{"hidden":true,"value":"5"},"maxEvents":{"hidden":true,"value":""},"minScheduleNotice":{"hidden":true,"value":""},"name":{"hidden":true,"value":"chooseThe"},"order":{"hidden":true,"value":"17"},"qid":{"toolbar":false,"value":"input_53"},"reminderEmails":{"hidden":true,"value":{"schedule":[{"value":"2","unit":"hour"}]}},"type":{"hidden":true,"value":"control_appointment"},"useReminderEmails":{"hidden":true,"value":"No"},"id":{"toolbar":false,"value":"53"},"qname":{"toolbar":false,"value":"q53_chooseThe"},"cdnconfig":{"CDN":"https://cdn.jotfor.ms/"},"passive":false,"formProperties":{"products":false,"highlightLine":"Enabled","coupons":false,"useStripeCoupons":false,"taxes":false,"comparePaymentForm":"","paymentListSettings":false,"newPaymentUIForNewCreatedForms":false,"formBackground":"#fff"},"formID":210874352707154,"themeVersion":"v1"}); JotForm.newDefaultTheme = false; JotForm.extendsNewTheme = false; JotForm.newPaymentUIForNewCreatedForms = false; /*INIT-END*/ }); JotForm.prepareCalculationsOnTheFly([null,{"name":"modelCasting","qid":"1","text":"Model Casting Form","type":"control_head"},null,{"name":"preferredName","qid":"3","subLabel":"","text":"Preferred Name","type":"control_textbox"},null,{"name":"emailAddress","qid":"5","text":"Email Address","type":"control_textbox"},null,null,null,null,null,null,null,null,null,{"name":"representation","qid":"15","subLabel":"Do you work with an agency?","text":"Representation?","type":"control_textbox"},null,null,null,null,null,null,null,null,null,null,null,null,null,{"name":"upload129","qid":"29","subLabel":"WE WANT TO SEE THE NATURAL FEATURES OF YOUR FACE AND HAIR. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE.","text":"UPLOAD 1 RECENT CLOSE UP IMAGE (VERTICAL FORMAT)","type":"control_fileupload"},{"name":"submit","qid":"30","text":"Submit","type":"control_button"},null,null,null,null,{"name":"suitdressSize","qid":"35","text":"Suit\u002FDress Size","type":"control_textbox"},null,{"name":"hairColor","qid":"37","text":"Hair Color","type":"control_textbox"},null,{"name":"tattoos","qid":"39","text":"Tattoos?","type":"control_textbox"},{"name":"eyeColor","qid":"40","text":"Eye Color","type":"control_textbox"},{"name":"areYou","qid":"41","subLabel":"This venue only permits 21+","text":"ARE YOU 21 YRS OR OLDER?","type":"control_textbox"},{"name":"theLabeled","qid":"42","subLabel":"*Note: There is no monetary compensation if booked for Labeled Blu Collection.","text":"The Labeled Blu Collection Grand Opening is on May 8th. Are you available on this date?","type":"control_textbox"},null,{"name":"upload1","qid":"44","subLabel":"WE WANT TO SEE THE SHAPE AND FIT OF YOUR FULL BODY. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE.","text":"UPLOAD 1 RECENT FULL BODY IMAGE (VERTICAL FORMAT)","type":"control_fileupload"},{"name":"cellNumber","qid":"45","text":"Cell Number","type":"control_textbox"},{"description":"","name":"name","qid":"46","text":"Name","type":"control_fullname"},{"description":"","name":"whatsYour","qid":"47","subLabel":"","text":"What's your IG and Facebook?","type":"control_textbox"},null,null,{"description":"","name":"doYou","qid":"50","subLabel":"","text":"Do you have any experience? If you do, please list below. ","type":"control_textbox"},null,null,{"description":"","name":"chooseThe","qid":"53","text":"Choose the time you'd like to audition.","type":"control_appointment"}]); setTimeout(function() { JotForm.paymentExtrasOnTheFly([null,{"name":"modelCasting","qid":"1","text":"Model Casting Form","type":"control_head"},null,{"name":"preferredName","qid":"3","subLabel":"","text":"Preferred Name","type":"control_textbox"},null,{"name":"emailAddress","qid":"5","text":"Email Address","type":"control_textbox"},null,null,null,null,null,null,null,null,null,{"name":"representation","qid":"15","subLabel":"Do you work with an agency?","text":"Representation?","type":"control_textbox"},null,null,null,null,null,null,null,null,null,null,null,null,null,{"name":"upload129","qid":"29","subLabel":"WE WANT TO SEE THE NATURAL FEATURES OF YOUR FACE AND HAIR. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE.","text":"UPLOAD 1 RECENT CLOSE UP IMAGE (VERTICAL FORMAT)","type":"control_fileupload"},{"name":"submit","qid":"30","text":"Submit","type":"control_button"},null,null,null,null,{"name":"suitdressSize","qid":"35","text":"Suit\u002FDress Size","type":"control_textbox"},null,{"name":"hairColor","qid":"37","text":"Hair Color","type":"control_textbox"},null,{"name":"tattoos","qid":"39","text":"Tattoos?","type":"control_textbox"},{"name":"eyeColor","qid":"40","text":"Eye Color","type":"control_textbox"},{"name":"areYou","qid":"41","subLabel":"This venue only permits 21+","text":"ARE YOU 21 YRS OR OLDER?","type":"control_textbox"},{"name":"theLabeled","qid":"42","subLabel":"*Note: There is no monetary compensation if booked for Labeled Blu Collection.","text":"The Labeled Blu Collection Grand Opening is on May 8th. Are you available on this date?","type":"control_textbox"},null,{"name":"upload1","qid":"44","subLabel":"WE WANT TO SEE THE SHAPE AND FIT OF YOUR FULL BODY. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE.","text":"UPLOAD 1 RECENT FULL BODY IMAGE (VERTICAL FORMAT)","type":"control_fileupload"},{"name":"cellNumber","qid":"45","text":"Cell Number","type":"control_textbox"},{"description":"","name":"name","qid":"46","text":"Name","type":"control_fullname"},{"description":"","name":"whatsYour","qid":"47","subLabel":"","text":"What's your IG and Facebook?","type":"control_textbox"},null,null,{"description":"","name":"doYou","qid":"50","subLabel":"","text":"Do you have any experience? If you do, please list below. ","type":"control_textbox"},null,null,{"description":"","name":"chooseThe","qid":"53","text":"Choose the time you'd like to audition.","type":"control_appointment"}]);}, 20); </script> <link href="https://cdn.jotfor.ms/static/formCss.css?3.3.24338" rel="stylesheet" type="text/css" /> <link type="text/css" media="print" rel="stylesheet" href="https://cdn.jotfor.ms/css/printForm.css?3.3.24338" /> <link type="text/css" rel="stylesheet" href="https://cdn.jotfor.ms/css/styles/nova.css?3.3.24338" /> <link type="text/css" rel="stylesheet" href="https://cdn.jotfor.ms/themes/CSS/566a91c2977cdfcd478b4567.css?themeRevisionID=59fb4852cf3bfe589c6c6f21"/> <link type="text/css" rel="stylesheet" href="https://cdn.jotfor.ms/css/styles/payment/payment_feature.css?3.3.24338" /> <style type="text/css"> .form-label-left{ width:150px; } .form-line{ padding-top:12px; padding-bottom:12px; } .form-label-right{ width:150px; } .form-all{ width:590px; color:#555 !important; font-family:"Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Verdana, sans-serif; font-size:14px; } </style> <style type="text/css" id="form-designer-style"> /* Injected CSS Code */ .form-label.form-label-auto { display: block; float: none; text-align: left; width: 100%; }/*PREFERENCES STYLE*/ .form-all { font-family: Lucida Grande, sans-serif; } .form-all .qq-upload-button, .form-all .form-submit-button, .form-all .form-submit-reset, .form-all .form-submit-print { font-family: Lucida Grande, sans-serif; } .form-all .form-pagebreak-back-container, .form-all .form-pagebreak-next-container { font-family: Lucida Grande, sans-serif; } .form-header-group { font-family: Lucida Grande, sans-serif; } .form-label { font-family: Lucida Grande, sans-serif; } .form-label.form-label-auto { display: block; float: none; text-align: left; width: 100%; } .form-line { margin-top: 12px 36px 12px 36px px; margin-bottom: 12px 36px 12px 36px px; } .form-all { max-width: 590px; width: 100%; } .form-label.form-label-left, .form-label.form-label-right, .form-label.form-label-left.form-label-auto, .form-label.form-label-right.form-label-auto { width: 150px; } .form-all { font-size: 14px } .form-all .qq-upload-button, .form-all .qq-upload-button, .form-all .form-submit-button, .form-all .form-submit-reset, .form-all .form-submit-print { font-size: 14px } .form-all .form-pagebreak-back-container, .form-all .form-pagebreak-next-container { font-size: 14px } .supernova .form-all, .form-all { background-color: #fff; } .form-all { color: #555; } .form-header-group .form-header { color: #555; } .form-header-group .form-subHeader { color: #555; } .form-label-top, .form-label-left, .form-label-right, .form-html, .form-checkbox-item label, .form-radio-item label { color: #555; } .form-sub-label { color: #6f6f6f; } .supernova { background-color: undefined; } .supernova body { background: transparent; } .form-textbox, .form-textarea, .form-dropdown, .form-radio-other-input, .form-checkbox-other-input, .form-captcha input, .form-spinner input { background-color: undefined; } .supernova { background-image: none; } #stage { background-image: none; } .form-all { background-image: none; } .form-all { position: relative; } .form-all:before { content: ""; background-image: url("https://www.jotform.com/uploads/cwatson.tv/form_files/Labeled_Blu_Collection_.6061eb7c66bea4.57727827.webp"); display: inline-block; height: 140px; position: absolute; background-size: 205px 140px; background-repeat: no-repeat; width: 100%; } .form-all { margin-top: 150px !important; } .form-all:before { top: -150px; background-position: top center; } .ie-8 .form-all:before { display: none; } .ie-8 { margin-top: auto; margin-top: initial; } /*PREFERENCES STYLE*//*__INSPECT_SEPERATOR__*/ /* Injected CSS Code */ </style> <form class="jotform-form" action="https://submit.jotform.com/submit/210874352707154/" method="post" enctype="multipart/form-data" name="form_210874352707154" id="210874352707154" accept-charset="utf-8" autocomplete="on"> <input type="hidden" name="formID" value="210874352707154" /> <input type="hidden" id="JWTContainer" value="" /> <input type="hidden" id="cardinalOrderNumber" value="" /> <div role="main" class="form-all"> <ul class="form-section page-section"> <li id="cid_1" class="form-input-wide" data-type="control_head"> <div class="form-header-group header-small"> <div class="header-text httac htvam"> <h3 id="header_1" class="form-header" data-component="header"> Model Casting Form </h3> </div> </div> </li> <li class="form-line jf-required" data-type="control_fullname" id="id_46"> <label class="form-label form-label-top form-label-auto" id="label_46" for="first_46"> Name <span class="form-required"> * </span> </label> <div id="cid_46" class="form-input-wide jf-required"> <div data-wrapper-react="true"> <span class="form-sub-label-container" style="vertical-align:top" data-input-type="first"> <input type="text" id="first_46" name="q46_name[first]" class="form-textbox validate[required]" size="10" value="" data-component="first" aria-labelledby="label_46 sublabel_46_first" required="" /> <label class="form-sub-label" for="first_46" id="sublabel_46_first" style="min-height:13px" aria-hidden="false"> First Name </label> </span> <span class="form-sub-label-container" style="vertical-align:top" data-input-type="last"> <input type="text" id="last_46" name="q46_name[last]" class="form-textbox validate[required]" size="15" value="" data-component="last" aria-labelledby="label_46 sublabel_46_last" required="" /> <label class="form-sub-label" for="last_46" id="sublabel_46_last" style="min-height:13px" aria-hidden="false"> Last Name </label> </span> </div> </div> </li> <li class="form-line form-line-column form-col-1" data-type="control_textbox" id="id_3"> <label class="form-label form-label-top" id="label_3" for="input_3"> Preferred Name </label> <div id="cid_3" class="form-input-wide"> <input type="text" id="input_3" name="q3_preferredName" data-type="input-textbox" class="form-textbox" size="25" value="" placeholder=" " data-component="textbox" aria-labelledby="label_3" /> </div> </li> <li class="form-line form-line-column form-col-2 jf-required" data-type="control_textbox" id="id_5"> <label class="form-label form-label-top" id="label_5" for="input_5"> Email Address <span class="form-required"> * </span> </label> <div id="cid_5" class="form-input-wide jf-required"> <input type="text" id="input_5" name="q5_emailAddress" data-type="input-textbox" class="form-textbox validate[required, Email]" size="25" value="" placeholder=" " data-component="textbox" aria-labelledby="label_5" required="" /> </div> </li> <li class="form-line form-line-column form-col-3 jf-required" data-type="control_textbox" id="id_45"> <label class="form-label form-label-left" id="label_45" for="input_45"> Cell Number <span class="form-required"> * </span> </label> <div id="cid_45" class="form-input jf-required"> <input type="text" id="input_45" name="q45_cellNumber" data-type="input-textbox" class="form-textbox validate[required, Numeric]" size="25" value="" placeholder=" " data-component="textbox" aria-labelledby="label_45" required="" /> </div> </li> <li class="form-line form-line-column form-col-4 jf-required" data-type="control_textbox" id="id_35"> <label class="form-label form-label-top" id="label_35" for="input_35"> Suit/Dress Size <span class="form-required"> * </span> </label> <div id="cid_35" class="form-input-wide jf-required"> <input type="text" id="input_35" name="q35_suitdressSize" data-type="input-textbox" class="form-textbox validate[required]" size="6" value="" placeholder=" " data-component="textbox" aria-labelledby="label_35" required="" /> </div> </li> <li class="form-line form-line-column form-col-5 jf-required" data-type="control_textbox" id="id_37"> <label class="form-label form-label-top" id="label_37" for="input_37"> Hair Color <span class="form-required"> * </span> </label> <div id="cid_37" class="form-input-wide jf-required"> <input type="text" id="input_37" name="q37_hairColor" data-type="input-textbox" class="form-textbox validate[required]" size="8" value="" placeholder=" " data-component="textbox" aria-labelledby="label_37" required="" /> </div> </li> <li class="form-line form-line-column form-col-6 jf-required" data-type="control_textbox" id="id_40"> <label class="form-label form-label-top" id="label_40" for="input_40"> Eye Color <span class="form-required"> * </span> </label> <div id="cid_40" class="form-input-wide jf-required"> <input type="text" id="input_40" name="q40_eyeColor" data-type="input-textbox" class="form-textbox validate[required]" size="8" value="" placeholder=" " data-component="textbox" aria-labelledby="label_40" required="" /> </div> </li> <li class="form-line form-line-column form-col-7 jf-required" data-type="control_textbox" id="id_39"> <label class="form-label form-label-top" id="label_39" for="input_39"> Tattoos? <span class="form-required"> * </span> </label> <div id="cid_39" class="form-input-wide jf-required"> <input type="text" id="input_39" name="q39_tattoos" data-type="input-textbox" class="form-textbox validate[required]" size="5" value="" placeholder=" " data-component="textbox" aria-labelledby="label_39" required="" /> </div> </li> <li class="form-line form-line-column form-col-8 jf-required" data-type="control_textbox" id="id_41"> <label class="form-label form-label-top" id="label_41" for="input_41"> ARE YOU 21 YRS OR OLDER? <span class="form-required"> * </span> </label> <div id="cid_41" class="form-input-wide jf-required"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="text" id="input_41" name="q41_areYou" data-type="input-textbox" class="form-textbox validate[required]" size="5" value="" placeholder=" " data-component="textbox" aria-labelledby="label_41 sublabel_input_41" required="" /> <label class="form-sub-label" for="input_41" id="sublabel_input_41" style="min-height:13px" aria-hidden="false"> This venue only permits 21+ </label> </span> </div> </li> <li class="form-line form-line-column form-col-1 form-line-column-clear" data-type="control_textbox" id="id_15"> <label class="form-label form-label-top" id="label_15" for="input_15"> Representation? </label> <div id="cid_15" class="form-input-wide"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="text" id="input_15" name="q15_representation" data-type="input-textbox" class="form-textbox" size="20" value="" placeholder=" " data-component="textbox" aria-labelledby="label_15 sublabel_input_15" /> <label class="form-sub-label" for="input_15" id="sublabel_input_15" style="min-height:13px" aria-hidden="false"> Do you work with an agency? </label> </span> </div> </li> <li class="form-line form-line-column form-col-2" data-type="control_textbox" id="id_42"> <label class="form-label form-label-top" id="label_42" for="input_42"> The Labeled Blu Collection Grand Opening is on May 8th. Are you available on this date? </label> <div id="cid_42" class="form-input-wide"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="text" id="input_42" name="q42_theLabeled" data-type="input-textbox" class="form-textbox" size="60" value="" placeholder=" " data-component="textbox" aria-labelledby="label_42 sublabel_input_42" /> <label class="form-sub-label" for="input_42" id="sublabel_input_42" style="min-height:13px" aria-hidden="false"> *Note: There is no monetary compensation if booked for Labeled Blu Collection. </label> </span> </div> </li> <li class="form-line" data-type="control_textbox" id="id_50"> <label class="form-label form-label-top form-label-auto" id="label_50" for="input_50"> Do you have any experience? If you do, please list below. </label> <div id="cid_50" class="form-input-wide"> <input type="text" id="input_50" name="q50_doYou" data-type="input-textbox" class="form-textbox" size="20" value="" data-component="textbox" aria-labelledby="label_50" /> </div> </li> <li class="form-line jf-required" data-type="control_textbox" id="id_47"> <label class="form-label form-label-top form-label-auto" id="label_47" for="input_47"> What's your IG and Facebook? <span class="form-required"> * </span> </label> <div id="cid_47" class="form-input-wide jf-required"> <input type="text" id="input_47" name="q47_whatsYour" data-type="input-textbox" class="form-textbox validate[required]" size="20" value="" data-component="textbox" aria-labelledby="label_47" required="" /> </div> </li> <li class="form-line form-line-column form-col-1 jf-required" data-type="control_fileupload" id="id_29"> <label class="form-label form-label-top" id="label_29" for="input_29"> UPLOAD 1 RECENT CLOSE UP IMAGE (VERTICAL FORMAT) <span class="form-required"> * </span> </label> <div id="cid_29" class="form-input-wide jf-required"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="file" id="input_29" name="q29_upload129" class="form-upload validate[required]" data-imagevalidate="yes" data-file-accept="pdf, doc, docx, xls, csv, txt, rtf, html, zip, mp3, wma, mpg, flv, avi, jpg, jpeg, png, gif" data-file-maxsize="10240" data-file-minsize="0" data-file-limit="2" data-component="fileupload" required="" /> <label class="form-sub-label" for="input_29" style="min-height:13px" aria-hidden="false"> WE WANT TO SEE THE NATURAL FEATURES OF YOUR FACE AND HAIR. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE. </label> </span> </div> </li> <li class="form-line form-line-column form-col-2 jf-required" data-type="control_fileupload" id="id_44"> <label class="form-label form-label-top" id="label_44" for="input_44"> UPLOAD 1 RECENT FULL BODY IMAGE (VERTICAL FORMAT) <span class="form-required"> * </span> </label> <div id="cid_44" class="form-input-wide jf-required"> <span class="form-sub-label-container" style="vertical-align:top"> <input type="file" id="input_44" name="q44_upload1" class="form-upload validate[required]" data-imagevalidate="yes" data-file-accept="pdf, doc, docx, xls, csv, txt, rtf, html, zip, mp3, wma, mpg, flv, avi, jpg, jpeg, png, gif" data-file-maxsize="10240" data-file-minsize="0" data-file-limit="2" data-component="fileupload" required="" /> <label class="form-sub-label" for="input_44" style="min-height:13px" aria-hidden="false"> WE WANT TO SEE THE SHAPE AND FIT OF YOUR FULL BODY. PLEASE USE A BLANK WALL AND NATURAL LIGHT IF POSSIBLE. </label> </span> </div> </li> <li class="form-line jf-required" data-type="control_appointment" id="id_53"> <label class="form-label form-label-top" id="label_53" for="input_53"> Choose the time you'd like to audition. <span class="form-required"> * </span> </label> <div id="cid_53" class="form-input-wide jf-required"> <div id="input_53" class="appointmentFieldWrapper jfQuestion-fields"> <input class="appointmentFieldInput validate" name="q53_chooseThe[date]" id="input_53_date" /> <input class="appointmentFieldInput" name="q53_chooseThe[duration]" value="15" id="input_53_duration" /> <input class="appointmentFieldInput" name="q53_chooseThe[timezone]" value="America/New_York (GMT-04:00)" id="input_53_timezone" /> <div class="appointmentField"> </div> </div> </div> </li> <li class="form-line" data-type="control_button" id="id_30"> <div id="cid_30" class="form-input-wide"> <div style="margin-left:156px" data-align="auto" class="form-buttons-wrapper form-buttons-auto jsTest-button-wrapperField"> <button id="input_30" type="submit" class="form-submit-button submit-button jf-form-buttons jsTest-submitField" data-component="button" data-content=""> Submit </button> </div> </div> </li> <li style="clear:both"> </li> <li style="display:none"> Should be Empty: <input type="text" name="website" value="" /> </li> </ul> </div> <script> JotForm.showJotFormPowered = "new_footer"; </script> <script> JotForm.poweredByText = "Powered by JotForm"; </script> <input type="hidden" class="simple_spc" id="simple_spc" name="simple_spc" value="210874352707154" /> <script type="text/javascript"> var all_spc = document.querySelectorAll("form[id='210874352707154'] .si" + "mple" + "_spc"); for (var i = 0; i < all_spc.length; i++) { all_spc[i].value = "210874352707154-210874352707154"; } </script> <div class="formFooter-heightMask"> </div> <div class="formFooter f6"> <div class="formFooter-wrapper formFooter-leftSide"> <a href="https://www.jotform.com/?utm_source=formfooter&utm_medium=banner&utm_term=210874352707154&utm_content=jotform_logo&utm_campaign=powered_by_jotform_le" target="_blank" class="formFooter-logoLink"><img class="formFooter-logo" src="https://cdn.jotfor.ms/assets/img/logo/logo-new@1x.png" alt="Jotform Logo"></a> </div> <div class="formFooter-wrapper formFooter-rightSide"> <span class="formFooter-text"> Now create your own JotForm - It's free! </span> <a class="formFooter-button" href="https://www.jotform.com/?utm_source=formfooter&utm_medium=banner&utm_term=210874352707154&utm_content=jotform_button&utm_campaign=powered_by_jotform_le" target="_blank">Create your own JotForm</a> </div> </div> </form> <script type="text/javascript" src="https://form.jotform.com/jsform/210874352707154"></script><script type="text/javascript" src="https://form.jotform.com/jsform/210874352707154"></script> <iframe id="JotFormIFrame-210874352707154" title="Blu Babe Model Casting Form" onload="window.parent.scrollTo(0,0)" allowtransparency="true" allowfullscreen="true" allow="geolocation; microphone; camera" src="https://form.jotform.com/210874352707154" frameborder="0" style=" min-width: 100%; height:539px; border:none;" scrolling="no" > </iframe> <script type="text/javascript"> var ifr = document.getElementById("JotFormIFrame-210874352707154"); if (ifr) { var src = ifr.src; var iframeParams = []; if (window.location.href && window.location.href.indexOf("?") > -1) { iframeParams = iframeParams.concat(window.location.href.substr(window.location.href.indexOf("?") + 1).split('&')); } if (src && src.indexOf("?") > -1) { iframeParams = iframeParams.concat(src.substr(src.indexOf("?") + 1).split("&")); src = src.substr(0, src.indexOf("?")) } iframeParams.push("isIframeEmbed=1"); ifr.src = src + "?" + iframeParams.join('&'); } window.handleIFrameMessage = function(e) { if (typeof e.data === 'object') { return; } var args = e.data.split(":"); if (args.length > 2) { iframe = document.getElementById("JotFormIFrame-" + args[(args.length - 1)]); } else { iframe = document.getElementById("JotFormIFrame"); } if (!iframe) { return; } switch (args[0]) { case "scrollIntoView": iframe.scrollIntoView(); break; case "setHeight": iframe.style.height = args[1] + "px"; break; case "collapseErrorPage": if (iframe.clientHeight > window.innerHeight) { iframe.style.height = window.innerHeight + "px"; } break; case "reloadPage": window.location.reload(); break; case "loadScript": var src = args[1]; if (args.length > 3) { src = args[1] + ':' + args[2]; } var script = document.createElement('script'); script.src = src; script.type = 'text/javascript'; document.body.appendChild(script); break; case "exitFullscreen": if (window.document.exitFullscreen) window.document.exitFullscreen(); else if (window.document.mozCancelFullScreen) window.document.mozCancelFullScreen(); else if (window.document.mozCancelFullscreen) window.document.mozCancelFullScreen(); else if (window.document.webkitExitFullscreen) window.document.webkitExitFullscreen(); else if (window.document.msExitFullscreen) window.document.msExitFullscreen(); break; } var isJotForm = (e.origin.indexOf("jotform") > -1) ? true : false; if(isJotForm && "contentWindow" in iframe && "postMessage" in iframe.contentWindow) { var urls = {"docurl":encodeURIComponent(document.URL),"referrer":encodeURIComponent(document.referrer)}; iframe.contentWindow.postMessage(JSON.stringify({"type":"urls","value":urls}), "*"); } }; if (window.addEventListener) { window.addEventListener("message", handleIFrameMessage, false); } else if (window.attachEvent) { window.attachEvent("onmessage", handleIFrameMessage); } </script> <a href="javascript:void( window.open( 'https://form.jotform.com/210874352707154', 'blank', 'scrollbars=yes, toolbar=no, width=700, height=500' ) ) "> Blu Babe Model Casting Form </a><script src ="https://form.jotform.com/static/feedback2.js" type="text/javascript"></script><script type="text/javascript"> var JFL_210874352707154 = new JotformFeedback({ formId: '210874352707154', base: 'https://form.jotform.com/', windowTitle: 'Blu Babe Model Casting Form', background: '#FFA500', fontColor: '#FFFFFF', type: 'false', height: 500, width: 700, openOnLoad: false }); </script> <a class="btn lightbox-210874352707154" style="margin-top: 16px"> Blu Babe Model Casting Form </a><script type="text/javascript" src="https://form.jotform.com/jsform/210874352707154"></script>

<script type="text/javascript" src="https://form.jotform.com/jsform/210874352707154"></script>

<script type="text/javascript" src="https://form.jotform.com/jsform/210874352707154"></script>

Loading...
Bel-Air Bandage Skirt

Someone liked and Bought

Bel-Air Bandage Skirt

10 Minutes Ago

From Los Angeles