PageSourceSearch

https://attico-303.com/js/script.js

js attico-303.com collected 2026-10-08 05:43:45 UTC 8,769 bytes, 278 lines download raw bytes

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.