1/*jshint jquery:true */ 2 3$(document).ready(function($) { 4 "use strict"; 5 6 /* global google: false */ 7 /*jshint -W018 */ 8 9 /*-------------------------------------------------*/ 10 /* = datepicker 11 /*-------------------------------------------------*/ 12 13 try{ 14 15 $( "#date" ).datepicker(); 16 17 } catch(err) { 18 } 19 20 /*-------------------------------------------------*/ 21 /* = OWL carousell 22 /*-------------------------------------------------*/ 23 try { 24 var owlWrap = $('.owl-wrapper'); 25 26 if (owlWrap.length > 0) { 27 28 if (jQuery().owlCarousel) { 29 owlWrap.each(function(){ 30 31 var carousel= $(this).find('.owl-carousel'), 32 dataNum = $(this).find('.owl-carousel').attr('data-num'), 33 dataNum2, 34 dataNum3; 35 36 if ( dataNum == 1 ) { 37 dataNum2 = 1; 38 dataNum3 = 1; 39 } else if ( dataNum == 2 ) { 40 dataNum2 = 2; 41 dataNum3 = dataNum - 1; 42 } else { 43 dataNum2 = dataNum - 1; 44 dataNum3 = dataNum - 2; 45 } 46 47 carousel.owlCarousel({ 48 autoPlay: 24000, 49 navigation : true, 50 items : dataNum, 51 itemsDesktop : [1199,dataNum2], 52 itemsDesktopSmall : [991,dataNum3], 53 itemsTablet : [768, dataNum3], 54 }); 55 56 }); 57 } 58 } 59 60 } catch(err) { 61 62 } 63 64 /* ---------------------------------------------------------------------- */ 65 /* Contact Map 66 /* ---------------------------------------------------------------------- */ 67 68 try { 69 var fenway = [42.345573,-71.098326]; //Change a map coordinate here! 70 var markerPosition = [42.345573,-71.098326]; //Change a map marker here! 71 $('#map') 72 .gmap3({ 73 center:fenway, 74 zoom: 13, 75 mapTypeId: "shadeOfGrey", // to select it directly 76 scrollwheel: false, 77 mapTypeControlOptions: { 78 mapTypeIds: [google.maps.MapTypeId.ROADMAP, "shadeOfGrey"] 79 } 80 }) 81 .styledmaptype( 82 "shadeOfGrey", 83 [ 84 {"featureType":"all","elementType":"labels.text.fill","stylers":[{"saturation":36},{"color":"#000000"},{"lightness":60}]}, 85 {"featureType":"all","elementType":"labels.text.stroke","stylers":[{"visibility":"on"},{"color":"#000000"},{"lightness":86}]}, 86 {"featureType":"all","elementType":"labels.icon","stylers":[{"visibility":"off"}]}, 87 {"featureType":"administrative","elementType":"geometry.fill","stylers":[{"color":"#000000"},{"lightness":90}]}, 88 {"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"color":"#000000"},{"lightness":87},{"weight":1.2}]}, 89 {"featureType":"landscape","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":90}]}, 90 {"featureType":"poi","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":91}]}, 91 {"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#000000"},{"lightness":87}]}, 92 {"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#000000"},{"lightness":99},{"weight":0.2}]}, 93 {"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":88}]}, 94 {"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":86}]}, 95 {"featureType":"transit","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":79}]}, 96 {"featureType":"water","elementType":"geometry","stylers":[{"color":"#000000"},{"lightness":87}]} 97 ], 98 {name: "Shades of Grey"}); 99 $('#map') 100 .gmap3({ 101 center: fenway, 102 zoom: 13, 103 mapTypeId : google.maps.MapTypeId.ROADMAP 104 }) 105 .marker({ 106 position: markerPosition, 107 icon: 'images/marker.png' 108 }); 109 } catch(err) { 110 111 } 112 113 /*-------------------------------------------------*/ 114 /* = flexslider 115 /*-------------------------------------------------*/ 116 117 try { 118 119 var SliderPost = $('.flexslider'); 120 121 SliderPost.flexslider({ 122 slideshowSpeed: 10000, 123 easing: "swing" 124 }); 125 } catch(err) { 126 127 } 128 129 /* ---------------------------------------------------------------------- */ 130 /* Contact Form 131 /* ---------------------------------------------------------------------- */ 132 133 function validateEmail(email) { 134 const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 135 return re.test(String(email).toLowerCase()); 136 } 137 138 function validate(){ 139 const name = document.getElementById("name").value ?? '' 140 const email = document.getElementById("mail").value ?? '' 141 const comments = document.getElementById("comment").value ?? '' 142 143 if(name.trim().length == 0 || !validateEmail(email)|| comments.trim().length == 0){ 144 $('#msg').removeClass('alert-success').removeClass('alert-danger').addClass('alert-danger').html("Los campos de Email y Nombre son requeridos.").fadeIn('slow').delay(5000).fadeOut('slow'); 145 return false 146 } 147 return { name, email, comments } 148 } 149 150 var submitContact = $('#submit_contact'), 151 submitReservation = $('#submit_reservation'), 152 message = $('#msg'); 153 154 submitContact.on('click', function(e){ 155 e.preventDefault(); 156 157 var $this = $(this); 158 159 const val = validate() 160 if(!val) return; 161 162 const dataObj = { 163 ...val, 164 website: document.getElementById("website").value, 165 subject: document.getElementById("subject").value, 166 type: "CONTACT" 167 } 168 169 $.ajax({ 170 type: "POST", 171 url: './.netlify/functions/mail', 172 dataType: 'json', 173 contentType: 'application/json', 174 data: JSON.stringify(dataObj), 175 success: function(data) { 176 177 if(data.info !== 'error'){ 178 $this.parents('form').find('input[type=text],textarea,select').filter(':visible').val(''); 179 message.hide().removeClass('alert-success').removeClass('alert-danger').addClass('alert-success').html("Tu mensaje ha sido envi
179ado. Gracias!").fadeIn('slow').delay(5000).fadeOut('slow'); 180 } else { 181 message.hide().removeClass('alert-success').removeClass('alert-danger').addClass('alert-danger').html(data.msg).fadeIn('slow').delay(5000).fadeOut('slow'); 182 } 183 } 184 }); 185 }); 186 187 function validateReservation(){ 188 const name = document.getElementById("name").value ?? '' 189 const email = document.getElementById("mail").value ?? '' 190 const date = document.getElementById("date").value ?? '' 191 const time = document.getElementById("time").value ?? '' 192 const guests = document.getElementById("guests").value ?? '' 193 const phone = document.getElementById("phone-number").value ?? '' 194 195 if(name.trim().length == 0 || !validateEmail(email)|| date.trim().length == 0){ 196 $('#msg').removeClass('alert-success').removeClass('alert-danger').addClass('alert-danger').html("Todos los campos son requeridos.").fadeIn('slow').delay(5000).fadeOut('slow'); 197 return false 198 } 199 200 if(time.trim().length == 0 || guests.trim().length == 0|| phone.trim().length == 0){ 201 $('#msg').removeClass('alert-success').removeClass('alert-danger').addClass('alert-danger').html("Todos los campos son requeridos.").fadeIn('slow').delay(5000).fadeOut('slow'); 202 return false 203 } 204 return { name, email, date, time, guests, phone } 205 } 206 207 submitReservation.on('click', function(e){ 208 e.preventDefault(); 209 210 var $this = $(this); 211 212 const val = validateReservation() 213 if(!val) return; 214 215 const dataObj = { 216 ...val, 217 type: "RESERVATION" 218 } 219 220 $.ajax({ 221 type: "POST", 222 url: './.netlify/functions/mail', 223 dataType: 'json', 224 contentType: 'application/json', 225 data: JSON.stringify(dataObj), 226 success: function(data) { 227 228 if(data.info !== 'error'){ 229 $this.parents('form').find('input[type=text]').filter(':visible').val(''); 230 message.hide().removeClass('alert-success').removeClass('alert-danger').addClass('alert-success').html("Tu resevación ha sido enviado. Gracias!").fadeIn('slow').delay(5000).fadeOut('slow'); 231 } else { 232 message.hide().removeClass('alert-success').removeClass('alert-danger').addClass('alert-danger').html(data.msg).fadeIn('slow').delay(5000).fadeOut('slow'); 233 } 234 } 235 }); 236 }); 237 238 /* ---------------------------------------------------------------------- */ 239 /* Header animate after scroll 240 /* ---------------------------------------------------------------------- */ 241 242 (function() { 243 244 var docElem = document.documentElement, 245 didScroll = false, 246 changeHeaderOn = 70; 247 document.querySelector( 'header, a.go-top' ); 248 function init() { 249 window.addEventListener( 'scroll', function() { 250 if( !didScroll ) { 251 didScroll = true; 252 setTimeout( scrollPage, 100 ); 253 } 254 }, false ); 255 } 256 257 function scrollPage() { 258 var sy = scrollY(); 259 if ( sy >= changeHeaderOn ) { 260 $( 'header' ).addClass('active'); 261 $( 'a.go-top' ).addClass('active'); 262 } 263 else { 264 $( 'header' ).removeClass('active'); 265 $( 'a.go-top' ).removeClass('active'); 266 } 267 didScroll = false; 268 } 269 270 function scrollY() { 271 return window.pageYOffset || docElem.scrollTop; 272 } 273 274 init(); 275 276 })(); 277 278});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.