<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!------ Include the above in your HEAD tag ---------->
<link type="text/css" media="print" rel="stylesheet" href="https://cdn.jotfor.ms/css/printForm.css?3.3.20500" />
<link type="text/css" rel="stylesheet" href="https://cdn.jotfor.ms/themes/CSS/5e6b428acc8c4e222d1beb91.css?themeRevisionID=5eb3b4ae85bd2e1e2966db96"/>
<link type="text/css" rel="stylesheet" href="https://cdn.jotfor.ms/css/styles/payment/payment_styles.css?3.3.20500" />
<link type="text/css" rel="stylesheet" href="https://cdn.jotfor.ms/css/styles/payment/payment_feature.css?3.3.20500" />
<style type="text/css" id="form-designer-style">
</style>
<!--Acrescenta as imagens, preços, forma de pagamento, -->
<form class="jotform-form" action="https://submit.jotform.com/submit/202675282200649/" method="post" name="form_202675282200649" id="202675282200649" accept-charset="utf-8" autocomplete="on">
<input type="hidden" name="formID" value="202675282200649" />
<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-large">
<div class="header-text httal htvam">
<h1 id="header_1" class="form-header" data-component="header">
Hospedagens
</h1>
</div>
</div>
</li>
<li class="form-line card-3col" data-type="control_paypalcomplete" id="id_19" data-payment="true">
<label class="form-label form-label-top search-enabled" id="label_19" for="input_19"> Opções </label>
<div id="cid_19" class="form-input-wide" data-layout="full">
<div data-wrapper-react="true">
<div data-wrapper-react="true">
<div class="filter-container">
<input type="text" name="productSearch-input" class="form-textbox" id="productSearch-input" size="15" placeholder="Search" autoComplete="off" />
</div>
<!--Deixa as fotos organizadas do tamanho adequado ao card-->
<input type="hidden" name="simple_fpc" data-payment_type="paypalcomplete" data-component="payment1" value="19" />
<input type="hidden" name="payment_total_checksum" id="payment_total_checksum" data-component="payment2" />
<div id="image-overlay" class="overlay-content" style="display:none">
<img id="current-image" />
<span class="lb-prev-button">
prev
</span>
<span class="lb-next-button">
next
</span>
<span class="lb-close-button">
( X )
</span>
<!--Link de fotos da pousada e hostel-->
<span class="image-overlay-product-container">
<ul class="form-overlay-item" hasicon="false" hasimages="true" iconvalue="">
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 2 foto 1.jpg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 2 foto 2.jpg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 2 foto 3.jpg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 2 foto 4.jpg?nc=1" />
</li>
</ul>
<ul class="form-overlay-item" hasicon="false" hasimages="true" iconvalue="">
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/Hostel 3 fto 1.jpg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 3 foto 2.jpg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 3 foto 3.jpg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 3 foto 4.jpg?nc=1" />
</li>
</ul>
<ul class="form-overlay-item" hasicon="false" hasimages="true" iconvalue="">
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 4 foto 1.jpg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 4 foto 2.jpg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 4 foto 3.jpg?nc=1" />
</li>
</ul>
<ul class="form-overlay-item" hasicon="false" hasimages="true" iconvalue="">
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 6 foto 1.jpg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hosyel 6 foto 2.jpg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 6 foto 3.jpg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 6 foto 4.jpg?nc=1" />
</li>
</ul>
<ul class="form-overlay-item" hasicon="false" hasimages="true" iconvalue="">
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 8 foto 1.jpeg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 8 foto 2.jpeg?nc=1" />
</li>
<li class="image-overlay-image">
<img src="https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel 8 foto 3.png?nc=1" />
</li>
</ul>
</span>
</div>
<div data-wrapper-react="true">
<span class="form-product-item hover-product-item on_col1 show_image show_desc show_option new_ui" categories="non-categorized" pid="1004" style="display:block">
<div data-wrapper-react="true" class="form-product-item-detail new_ui">
<div class="p_col">
<div class="p_checkbox">
<input type="checkbox" class="form-checkbox form-product-input" id="input_19_1004" name="q19_meusProdutos[][id]" value="1004" />
<div class="checked">
</div>
<div class="select_border">
</div>
</div>
</div>
<div class="p_image">
<div class="image_area form-product-image-with-options" style="background-image:url("https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel%202%20foto%201.jpg?nc=1")">
<div class="image_zoom">
</div>
</div>
</div>
<div for="input_19_1004" class="form-product-container">
<span data-wrapper-react="true">
<div class="title_description">
<span class="form-product-name" id="product-name-input_19_1004">
Palácios Arenal- costa Rica (Arenal Volcano)
</span>
<span class="form-product-description" id="product-name-description-input_19_1004">
Este albergue para famílias fica bem perto de Arenal Adventure World e Ecoglide Arenal Park. Relaxe em uma das 4 piscinas externas ou desfrute de outras instalações recreativas, incluindo um toboágua. Este albergue oferece comodidades adicionais, como acesso de cortesia à internet sem fio, uma TV na área comum e assistência com excursões
</span>
</div>
<span class="form-product-details">
<b>
<span data-wrapper-react="true">
$
<span id="input_19_1004_price">
118.00
</span>
</span>
</b>
</span>
</span>
<span class="form-sub-label-container " style="vertical-align:top">
<label class="form-sub-label" for="input_19_quantity_1004_0" style="min-height:13px" aria-hidden="false"> Quartos </label>
<span class="select_cont">
<select class="form-dropdown" name="q19_meusProdutos[special_1004][item_0]" id="input_19_quantity_1004_0">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
<option value="4"> 4 </option>
</select>
</span>
</span>
</div>
</div>
</span>
<div class="p_item_separator ">
</div>
<span class="form-product-item hover-product-item on_col2 show_image show_desc show_option show_subtotal new_ui" categories="non-categorized" pid="1005" style="display:block">
<div data-wrapper-react="true" class="form-product-item-detail new_ui">
<div class="p_col">
<div class="p_checkbox">
<input type="checkbox" class="form-checkbox form-product-input" id="input_19_1005" name="q19_meusProdutos[][id]" value="1005" />
<div class="checked">
</div>
<div class="select_border">
</div>
</div>
</div>
<div class="p_image">
<div class="image_area form-product-image-with-options" style="background-image:url("https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/Hostel%203%20fto%201.jpg?nc=1")">
<div class="image_zoom">
</div>
</div>
</div>
<div for="input_19_1005" class="form-product-container">
<span data-wrapper-react="true">
<div class="title_description">
<span class="form-product-name" id="product-name-input_19_1005">
El Zopilote
</span>
<span class="form-product-description" id="product-name-description-input_19_1005">
O Hotel está localizado nas colinas da floresta do vulcão Maderas, a 30 km da cidade portuária de Moyogalpa, entre Santa Cruz e Balgue. Todos os quartos são simples, mas aconchegantes, com toaletes compartilhados e chuveiros compartilhados. Todas as camas têm mosquiteiros.
</span>
</div>
<span class="form-product-details">
<b>
<span data-wrapper-react="true">
$
<span id="input_19_1005_price">
74.00
</span>
</span>
</b>
</span>
</span>
<span class="form-sub-label-container " style="vertical-align:top">
<label class="form-sub-label" for="input_19_quantity_1005_0" style="min-height:13px" aria-hidden="false"> Quartos </label>
<span class="select_cont">
<select class="form-dropdown" name="q19_meusProdutos[special_1005][item_0]" id="input_19_quantity_1005_0">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
<option value="4"> 4 </option>
</select>
</span>
</span>
</div>
</div>
</span>
<div class="p_item_separator ">
</div>
<span class="form-product-item hover-product-item on_col3 show_image show_desc show_option new_ui" categories="non-categorized" pid="1006" style="display:block">
<div data-wrapper-react="true" class="form-product-item-detail new_ui">
<div class="p_col">
<div class="p_checkbox">
<input type="checkbox" class="form-checkbox form-product-input" id="input_19_1006" name="q19_meusProdutos[][id]" value="1006" />
<div class="checked">
</div>
<div class="select_border">
</div>
</div>
</div>
<div class="p_image">
<div class="image_area form-product-image-with-options" style="background-image:url("https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel%204%20foto%201.jpg?nc=1")">
<div class="image_zoom">
</div>
</div>
</div>
<div for="input_19_1006" class="form-product-container">
<span data-wrapper-react="true">
<div class="title_description">
<span class="form-product-name" id="product-name-input_19_1006">
Vicky's Keys Eco Hostel- Antilhas Holandesas
</span>
<span class="form-product-description" id="product-name-description-input_19_1006">
Venha relaxar conosco, fazer novos amigos, saborear alguns petiscos locais e saborear um saboroso coquetel de rum em nosso jardim ou no terraço da cobertura
</span>
</div>
<span class="form-product-details">
<b>
<span data-wrapper-react="true">
$
<span id="input_19_1006_price">
64.00
</span>
</span>
</b>
</span>
</span>
<span class="form-sub-label-container " style="vertical-align:top">
<label class="form-sub-label" for="input_19_custom_1006_0" style="min-height:13px" aria-hidden="false"> Quartos </label>
<span class="select_cont">
<select class="form-dropdown" name="q19_meusProdutos[special_1006][item_0]" id="input_19_custom_1006_0">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
<option value="4"> 4 </option>
</select>
</span>
</span>
</div>
</div>
</span>
<div class="p_item_separator ">
</div>
<span class="form-product-item hover-product-item on_col1 show_image show_desc show_option new_ui" categories="non-categorized" pid="1007" style="display:block">
<div data-wrapper-react="true" class="form-product-item-detail new_ui">
<div class="p_col">
<div class="p_checkbox">
<input type="checkbox" class="form-checkbox form-product-input" id="input_19_1007" name="q19_meusProdutos[][id]" value="1007" />
<div class="checked">
</div>
<div class="select_border">
</div>
</div>
</div>
<div class="p_image">
<div class="image_area form-product-image-with-options" style="background-image:url("https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel%206%20foto%201.jpg?nc=1")">
<div class="image_zoom">
</div>
</div>
</div>
<div for="input_19_1007" class="form-product-container">
<span data-wrapper-react="true">
<div class="title_description">
<span class="form-product-name" id="product-name-input_19_1007">
Hostel Ozzie Pozzie YHA - Australia
</span>
<span class="form-product-description" id="product-name-description-input_19_1007">
Ozzie Pozzie é uma acomodação divertida, amigável e acessível para mochileiros, uma parada popular entre os viajantes que vagueiam ao longo da costa australiana todos os anos. Atende a jovens mochileiros de coração de todo o mundo.
</span>
</div>
<span class="form-product-details">
<b>
<span data-wrapper-react="true">
$
<span id="input_19_1007_price">
274.00
</span>
</span>
</b>
</span>
</span>
<span class="form-sub-label-container " style="vertical-align:top">
<label class="form-sub-label" for="input_19_quantity_1007_0" style="min-height:13px" aria-hidden="false"> Quartos </label>
<span class="select_cont">
<select class="form-dropdown" name="q19_meusProdutos[special_1007][item_0]" id="input_19_quantity_1007_0">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
<option value="4"> 4 </option>
</select>
</span>
</span>
</div>
</div>
</span>
<div class="p_item_separator ">
</div>
<span class="form-product-item hover-product-item on_col2 show_image show_desc show_option new_ui" categories="non-categorized" pid="1008" style="display:block">
<div data-wrapper-react="true" class="form-product-item-detail new_ui">
<div class="p_col">
<div class="p_checkbox">
<input type="checkbox" class="form-checkbox form-product-input" id="input_19_1008" name="q19_meusProdutos[][id]" value="1008" />
<div class="checked">
</div>
<div class="select_border">
</div>
</div>
</div>
<div class="p_image">
<div class="image_area form-product-image-with-options" style="background-image:url("https://www.jotform.com/uploads/guest_49be0d12737c55c8/form_files/hostel%208%20foto%201.jpeg?nc=1")">
<div class="image_zoom">
</div>
</div>
</div>
<!--Nome da pousada e preços-->
<div for="input_19_1008" class="form-product-container">
<span data-wrapper-react="true">
<div class="title_description">
<span class="form-product-name" id="product-name-input_19_1008">
Nómada Glamping en la Mano del Gigante
</span>
<span class="form-product-description" id="product-name-description-input_19_1008">
Amanheceres inesquecíveis e os mais belos pores-do-sol para se conectar com a Mãe Terra e com sua alma aventureira, arrisque-se a viver intensamente!
</span>
</div>
<span class="form-product-details">
<b>
<span data-wrapper-react="true">
$
<span id="input_19_1008_price">
284.00
</span>
</span>
</b>
</span>
</span>
<!--Opções de quarto-->
<span class="form-sub-label-container " style="vertical-align:top">
<label class="form-sub-label" for="input_19_custom_1008_0" style="min-height:13px" aria-hidden="false"> Quartos </label>
<span class="select_cont">
<select class="form-dropdown" name="q19_meusProdutos[special_1008][item_0]" id="input_19_custom_1008_0">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
</select>
</span>
</span>
</div>
</div>
</span>
<div class="payment_footer new_ui ">
<div class="total_area">
<div class="form-payment-total">
<div id="total-text">
Total
</div>
<div class="form-payment-price">
<span data-wrapper-react="true">
$
<span id="payment_total">
0.00
</span>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</li>
<li class="form-line" data-type="control_fullname" id="id_2">
<label class="form-label form-label-top" id="label_2" for="first_2"> Nome Completo </label>
<div id="cid_2" class="form-input-wide" data-layout="full">
<div data-wrapper-react="true">
<span class="form-sub-label-container " style="vertical-align:top" data-input-type="first">
<input type="text" id="first_2" name="q2_fullName2[first]" class="form-textbox" size="10" value="" data-component="first" aria-labelledby="label_2 sublabel_2_first" />
<label class="form-sub-label" for="first_2" id="sublabel_2_first" style="min-height:13px" aria-hidden="false"> Primeiro Nome </label>
</span>
<span class="form-sub-label-container " style="vertical-align:top" data-input-type="last">
<input type="text" id="last_2" name="q2_fullName2[last]" class="form-textbox" size="15" value="" data-component="last" aria-labelledby="label_2 sublabel_2_last" />
<label class="form-sub-label" for="last_2" id="sublabel_2_last" style="min-height:13px" aria-hidden="false"> Ultimo Nome </label>
</span>
</div>
</div>
</li>
<li class="form-line" data-type="control_email" id="id_3">
<label class="form-label form-label-top" id="label_3" for="input_3"> E-mail </label>
<div id="cid_3" class="form-input-wide" data-layout="half">
<span class="form-sub-label-container " style="vertical-align:top">
<input type="email" id="input_3" name="q3_email3" class="form-textbox validate[Email]" style="width:310px" size="310" value="" placeholder="ex: myname@example.com" data-component="email" aria-labelledby="label_3 sublabel_input_3" />
<label class="form-sub-label" for="input_3" id="sublabel_input_3" style="min-height:13px" aria-hidden="false"> example@example.com </label>
</span>
</div>
</li>
<li class="form-line" data-type="control_phone" id="id_5">
<label class="form-label form-label-top" id="label_5" for="input_5_full"> Número de Contato </label>
<div id="cid_5" class="form-input-wide" data-layout="half">
<span class="form-sub-label-container " style="vertical-align:top">
<input type="tel" id="input_5_full" name="q5_contactNumber[full]" data-type="mask-number" class="mask-phone-number form-textbox validate[Fill Mask]" style="width:310px" data-masked="true" value="" placeholder="(000) 000-0000" data-component="phone" aria-labelledby="label_5" />
<label class="form-sub-label is-empty" for="input_5_full" id="sublabel_5_masked" style="min-height:13px" aria-hidden="false"> </label>
</span>
</div>
</li>
<!--Dá a opção da pessoa selecionar quantas pessoas são-->
<li class="form-line" data-type="control_dropdown" id="id_21">
<label class="form-label form-label-top form-label-auto" id="label_21" for="input_21"> Número de pessoas </label>
<div id="cid_21" class="form-input-wide" data-layout="half">
<select class="form-dropdown" id="input_21" name="q21_numeroDe" style="width:310px" data-component="dropdown" aria-labelledby="label_21">
<option value=""> Please Select </option>
<option value="1 ou 2 pessoas"> 1 ou 2 pessoas </option>
<option value="2 a 3 pessoas"> 2 a 3 pessoas </option>
<option value="3 a 4 pessoas "> 3 a 4 pessoas </option>
<option value="4 ou mais"> 4 ou mais </option>
</select>
</div>
</li>
<!---->
<li class="form-line" data-type="control_appointment" id="id_23">
<label class="form-label form-label-top" id="label_23" for="input_23"> Agendamento </label>
<div id="cid_23" class="form-input-wide" data-layout="full">
<div id="input_23" class="appointmentFieldWrapper jfQuestion-fields">
<input class="appointmentFieldInput " name="q23_agendamento[date]" id="input_23_date" />
<input class="appointmentFieldInput" name="q23_agendamento[duration]" value="60" id="input_23_duration" />
<input class="appointmentFieldInput" name="q23_agendamento[timezone]" value="America/New_York (GMT-04:00)" id="input_23_timezone" />
<div class="appointmentField">
</div>
</div>
</div>
</li>
<!-- Tags da forma de pagamento, e dados do cartão, toda a parte estrutural -->
<li class="form-line" data-type="control_paymentmethods" id="id_20">
<label class="form-label form-label-top" id="label_20" for="input_20"> Forma de pagamento</label>
<div id="cid_20" class="form-input-wide" data-layout="full">
<div class="payment-methods-area">
<div data-wrapper-react="true" class="paypalcomplete-payment-wrapper" data-sandbox="enabled" data-currency="USD" data-auth-only="No" data-show-spb="true" data-show-card-fields="true">
<div id="paypal-commerce-platform-container">
<div class="paypal-toggle-buttons">
<div class="paypal-toggle">
<div id="paypal-card-fields">
<div class="payment-method-container" data-id="paypal-card-fields">
<input type="radio" class="form-radio" name="paypal-payment-method" data-id="paypal-card-fields" id="paypal-card-fields-input" />
<label for="paypal-card-fields-input">
<span class="CC_ico">
</span>
Debito ou Cartão de Credito
</label>
</div>
</div>
<div id="paypal-smart-buttons">
<div class="payment-method-container" data-id="paypal-smart-buttons">
<input type="radio" class="form-radio" name="paypal-payment-method" data-id="paypal-smart-buttons" id="paypal-smart-buttons-input" />
<label for="paypal-smart-buttons-input"> </label>
</div>
</div>
</div>
</div>
<div class="paypal-toggle-content " render-paypal-type="">
<div class="content-area">
<div id="paypal-credit-card-fields">
<div class="paypal-commerce-platform">
<div class="paypal-content">
<table class="form-address-table payment-form-table" style="border:0" cellPadding="0" cellSpacing="0">
<tbody>
<!-- Pede os dados do cartão-->
<tr>
<td width="50%">
<span class="form-sub-label-container " style="vertical-align:top">
<input type="text" id="19_cc_firstName" name="q19_meusProdutos[cc_firstName]" class="form-textbox cc_firstName" size="20" value="" data-component="cc_firstName" />
<label class="form-sub-label" for="19_cc_firstName" id="sublabel_cc_firstName" style="min-height:13px;margin:0 0 3px 0" aria-hidden="false"> Primeiro Nome </label>
</span>
</td>
<td width="50%">
<span class="form-sub-label-container " style="vertical-align:top">
<input type="text" id="19_cc_lastName" name="q19_meusProdutos[cc_lastName]" class="form-textbox cc_lastName" size="20" value="" data-component="cc_lastName" />
<label class="form-sub-label" for="19_cc_lastName" id="sublabel_cc_lastName" style="min-height:13px;margin:0 0 3px 0" aria-hidden="false"> Ultimo Nome </label>
</span>
</td>
</tr>
<tr>
<td width="50%">
<span class="form-sub-label-container " style="vertical-align:top">
<div class="form-textbox cc_numberMount cc_number">
</div>
<label class="form-sub-label" for="19_cc_number" id="sublabel_cc_number" style="min-height:13px;margin:0 0 3px 0" aria-hidden="false"> Número do Cartão de Credito</label>
</span>
</td>
<td width="50%">
<span class="form-sub-label-container " style="vertical-align:top">
<div class="form-textbox cc_ccvMount cc_ccv">
</div>
<label class="form-sub-label" for="19_cc_ccv" id="sublabel_cc_ccv" style="min-height:13px;margin:0 0 3px 0" aria-hidden="false"> Código de Segurança </label>
</span>
</td>
</tr>
<tr>
<td width="50%">
<span class="form-sub-label-container " style="vertical-align:top">
<div class="form-textbox cc_cardExpiryMount cc_card_expiry">
</div>
<label class="form-sub-label" for="19_cc_card_expiry" id="sublabel_cc_card_expiry" style="min-height:13px;margin:0 0 3px 0" aria-hidden="false"> Validade do Cartão </label>
</span>
</td>
<td width="50%">
<tr style="display:none">
<td>
<input id="paypal_complete_dummy" style="display:none" />
</td>
</tr>
</td>
</tr>
<div id="payments-sdk__contingency-lightbox">
</div>
</tbody>
</table>
</div>
</div>
</div>
<div id="paypal-spb-area">
<p> Clique em uma das opções do PayPal para concluir o pagamento e <b>enviar</b> o formulário.</p>
<div id="paypal-button-container" style="pointer-events:">
</div>
</div>
</div>
</div>
</div>
</div>
<input type="hidden" id="input_20_payment_method" name="q20_paymentMethods[payment_method]" class="" value="" data-component="payment_method" />
</div>
</div>
</li>
<li class="form-line" data-type="control_button" id="id_13">
<div id="cid_13" class="form-input-wide" data-layout="full">
<div data-align="center" class="form-buttons-wrapper form-buttons-center jsTest-button-wrapperField">
<button id="input_13" type="submit" class="form-submit-button submit-button jf-form-buttons jsTest-submitField" data-component="button" data-content="">
Enviar Pedido
</button>
</div>
</div>
</li>
</form>
JotForm.setConditions([{"action":[{"id":"action_1581690116457","visibility":"Hide","isError":false,"field":"10"}],"id":"1581690133174","index":"0","link":"Any","priority":"0","terms":[{"id":"term_1581690116457","field":"17","operator":"isEmpty","value":"","isError":false}],"type":"field"},{"action":[{"id":"action_0_1581690045611","visibility":"Hide","isError":false,"field":"10"}],"id":"1581689801697","index":"1","link":"Any","priority":"1","terms":[{"id":"term_0_1581690045611","field":"17","operator":"equals","value":"Yes","isError":false}],"type":"field"},{"action":[{"field":"11","visibility":"Show","id":"action_1_1581689802691"}],"id":"1581689543679","index":"2","link":"Any","priority":"2","terms":[{"field":"15","operator":"equals","value":"Yes"}],"type":"field"},{"action":[{"field":"18","visibility":"Show","id":"action_0_1581945983644","isError":false}],"id":"1581689543680","index":"3","link":"Any","priority":"3","terms":[{"field":"15","operator":"equals","value":"Yes","id":"term_0_1581945983644","isError":false}],"type":"field"},{"action":[{"field":"10","visibility":"Show","id":"action_3_1581689802691"}],"id":"1581689543681","index":"4","link":"Any","priority":"4","terms":[{"field":"15","operator":"equals","value":"Yes"}],"type":"field"}]);
JotForm.init(function(){
productID = {"0":"input_19_1004","1":"input_19_1005","2":"input_19_1006","3":"input_19_1007","4":"input_19_1008"};
paymentType = "product";
JotForm.setCurrencyFormat('USD',true, 'point');
JotForm.totalCounter({"input_19_1004":{"price":"118","quantityField":"input_19_quantity_1004_0","specialPriceField":"input_19_quantity_1004_0","specialPriceList":["10","10","10","10","10","10"]},"input_19_1005":{"price":"74","quantityField":"input_19_quantity_1005_0"},"input_19_1006":{"price":"64"},"input_19_1007":{"price":"274","quantityField":"input_19_quantity_1007_0"},"input_19_1008":{"price":"284"}});
$$('.form-product-custom_quantity').each(function(el, i){el.observe('blur', function(){isNaN(this.value) || this.value < 1 ? this.value = '0' : this.value = parseInt(this.value)})});
$$('.form-product-custom_quantity').each(function(el, i){el.observe('focus', function(){this.value == 0 ? this.value = '' : this.value})});
JotForm.handleProductLightbox();
setTimeout(function() {
$('input_3').hint('ex: myname@example.com');
}, 20);
JotForm.setPhoneMaskingValidator( 'input_5_full', '(###) ###-####' );
JotForm.calendarMonths = ["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];
JotForm.calendarDays = ["Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado","Domingo"];
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 ? '/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(':');
return parseInt(splitted[0] || 0, 10) + parseInt(splitted[1] || 0, 10) / 60;
};
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 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 ? props.timezone.value : _state$timezone;
// 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', 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 ? global.__formInfo.id : _props4$formID,
id = _props4.id.value;
var _state2 = state,
timezone = _state2.timezone;
// 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;
var newDate = availableDays.indexOf(dateStr) === -1 ? availableDays[0] : dateStr;
setState({
loading: false,
date: newDate || dateStr
});
});
lastReq = req;
};
var dateInTimeZone = function dateInTimeZone(date) {
if (!date) return;
var _state5 = state,
timezone = _state5.timezone;
var diffTime = (getTimezoneOffset(timezone) + 4) * 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 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 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 setValue = function setValue(value) {
input.value = value ? toDateTimeStr(dateInTimeZone(new Date(value.replace(/-/g, '/')))) : '';
setState({
value: value
});
// clearInterval(validationInterval);
var validation = function validation(_value) {
var shouldValidate = _value || $(input).hasClassName('validate');
if (!shouldValidate) {
$(input).addClassName('valid');
JotForm.corrected(input);
return;
}
if (!_value) {
$(input).removeClassName('valid');
return JotForm.errored(input, JotForm.texts.required);
}
validate(_value, function (isValid) {
if (isValid) {
$(input).addClassName('valid');
return JotForm.corrected(input);
}
// 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);
});
};
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, '/')), -4, 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') {
return setDate(toDateStr(new Date(oldYear, value, oldDay)));
}
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 + '"') + '><</button>\n <button type=\'button\' ' + (loading || !next ? 'disabled' : '') + ' class="appointmentDayPickerButton next" ' + (next && 'data-value="' + next + '"') + '>></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 === group + '/' + val ? '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) {
if (day === 'precedingDay' || day === 'trailingDay') {
return '<div class="calendarDay ' + day + ' empty"></div>';
}
var active = day === dateStr;
var isToday = todayStr === day;
var isUnavailable = availableDays.indexOf(day) === -1;
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 renderSlots = function renderSlots() {
var _state12 = state,
dateStr = _state12.date,
_state12$value = _state12.value,
dateValue = _state12$value === undefined ? '' : _state12$value;
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 entries = state.slots && state.slots[dateStr] && objectEntries(state.slots[dateStr]);
if (!entries || !entries.length) {
return renderEmptyState();
}
var stateTime = new Date(dateValue.replace(/-/g, '/')).toLocaleTimeString('en-US', { hour: 'numeric', minute: 'numeric', hour12: timeFormat === 'AM/PM' });
var stateDate = dateValue && dateValue.split(' ')[0];
return entries.map(function (_ref5) {
var name = _ref5[0],
value = _ref5[1];
var slotValue = dateStr + ' ' + name;
var stateValue = stateDate + ' ' + stateTime;
var isActive = stateValue === slotValue;
return '<div class="appointmentSlot slot ' + classNames({ disabled: !value, active: isActive }) + '" 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', hour12: timeFormat === 'AM/PM' });
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) {
var date = toDateTimeStr(dz(new Date(e.target.value), -4, getTimezoneOffset(state.timezone)));
setDate(date.split(' ')[0]);
setState({ value: date });
});
tzInput.addEventListener('change', function (e) {
return setTimezone(e.target.value);
});
document.addEventListener('translationLoad', function () {
return render();
});
var getInitialData = function getInitialData(timezones) {
getFirstAvailableDates(function (data) {
JotForm.appointments.initialData = data;
JotForm.appointments.listeners.forEach(function (fn) {
return fn({ data: data, timezones: timezones });
});
});
};
if (!JotForm.appointments) {
JotForm.appointments = { listeners: [] };
loadTimezones(function (timezones) {
JotForm.timezones = timezones;
getInitialData(timezones);
});
}
var requestTry = 1;
var requestTimeout = 1000;
var construct = function construct(_ref6) {
var data = _ref6.data,
timezones = _ref6.timezones;
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 _userTimezone$split = userTimezone.split('/'),
cont = _userTimezone$split[0],
city = _userTimezone$split[1];
var timezone = timezones[cont] && timezones[cont].find(function (c) {
return c.indexOf(city) !== -1;
}) && userTimezone || 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
});
};
JotForm.appointments.listeners.push(construct);
if (JotForm.appointments.initialData) {
setTimeout(function () {
construct({
data: JotForm.appointments.initialData,
timezones: JotForm.timezones
});
}, requestTimeout);
}