xxxxxxxxxx
1
<!DOCTYPE html>
2
<html lang="en">
3
4
<head>
5
<meta charset="utf-8" />
6
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
7
<meta http-equiv="x-ua-compatible" content="ie=edge" />
8
<title>GalileoSoft - Servicos</title>
9
<link rel="shortcut icon" href="assets/favicon.png" />
10
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css">
11
<link href="css/bootstrap.min.css" rel="stylesheet" />
12
<link href="css/mdb.min.css" rel="stylesheet" />
13
<link href="css/style.css" rel="stylesheet">
14
<link href="css/addons-pro/fsscroller.min.css" rel="stylesheet" />
15
<link href="css/galileoCSS.css" rel="stylesheet">
16
<!--<link href="css/fullPageVideoCarousel.css" rel="stylesheet">-->
17
<style>
18
.box {
19
position: absolute;
20
top: 50%;
21
left: 50%;
22
margin-top: -75px;
23
margin-left: -100px;
24
width: 200px;
25
height: 150px;
26
background-color: #fff;
27
border-radius: 5px;
28
box-shadow: 0 0 10px rgba(0, 0, 0, 0.54);
29
}
30
31
.info {
32
position: absolute;
33
top: 0;
34
left: 0;
35
height: 100%;
36
width: 100%;
37
display: flex;
38
flex-direction: column;
39
align-items: center;
40
justify-content: center;
41
font-size: 32px;
42
}
43
</style>
44
</head>
45
46
<body>
47
<header>
48
<nav id="navbar-example" class="navbar navbar-expand-md fixed-top navbar-dark scrolling-navbar">
49
<div class="container" >
50
<button class="navbar-toggler second-button order-1" type="button" data-toggle="collapse" data-target=".navLinks"
51
aria-controls="navbarSupportedContent23" aria-expanded="false" aria-label="Toggle navigation">
52
<div class="animated-icon2"><span></span><span></span><span></span><span></span></div>
53
</button>
54
<div class="collapse navbar-collapse navLinks order-md-0">
55
<ul class="nav navbar-nav nav-fill flex-fill flex-nowrap ml-auto">
56
<li class="nav-item">
57
<a class="nav-link px-4 text-white" href="#">Home</a>
58
</li>
59
<li class="nav-item">
60
<a class="nav-link px-4 text-white" href="#home-servicos">Soluções</a>
61
</li>
62
</ul>
63
</div>
64
<a class="navbar-brand mx-sm-5 order-0 order-md-1" href="#">
65
<img src="assets/logomarga-galileo.png" alt="">
66
</a>
67
<div class="collapse navbar-collapse navLinks order-md-2">
68
<ul class="navbar-nav nav-fill flex-fill mr-auto">
69
<li class="nav-item">
70
<a class="nav-link px-4 text-white" href="#home-portifolio">Portfólio</a>
71
</li>
72
<li class="nav-item">
73
<a class="nav-link px-4 text-white" data-toggle="modal" data-target="#modalContato" href="">Contato</a>
74
</li>
75
</ul>
76
</div>
77
</div>
78
</nav>
79
</header>
80
81
<div class="full-screen-scroller 1stSection">
82
<div class="fss-dotted-scrollspy">
83
<button type="button" class="fss-nav-btn fss-mainview-prev">
84
<i class="fas fa-chevron-up"></i>
85
</button>
86
<a href="#view-1" class="fss-nav-item active"></a>
87
<a href="#view-2" class="fss-nav-item"></a>
88
<a href="#view-3" class="fss-nav-item"></a>
89
<button type="button" class="fss-nav-btn fss-mainview-next">
90
<i class="fas fa-chevron-down"></i>
91
</button>
92
</div>
93
94
<div fss-anchor="view-1" class="fss-mainview fss-active" style="background-color:#000;">
95
<div class="fss-subview">
96
<div class="fss-dotted-scrollspy">
97
<button type="button" class="fss-nav-btn fss-subview-prev">
98
<i class="fas fa-chevron-left"></i>
99
</button>
100
<a href="#subview-a" class="fss-nav-item active"></a>
101
<a href="#subview-b" class="fss-nav-item"></a>
102
<button type="button" class="fss-nav-btn fss-subview-next">
103
<i class="fas fa-chevron-right"></i>
104
</button>
105
</div>
106
<div fss-anchor="subview-a" class="fss-subview-item d-flex flex-center">
107
<div class="container-fluid">
108
<div class="row">
109
<div class="col-12">
110
<h1 class="h1-responsive text-center">Você sabe o que é o Armazenamento em Nuvem Conhecido como CloudStorage?</h1>
111
</div>
112
</div>
113
<div class="row">
114
<div class="col-4">
115
<img src="assets/servicos-cloud.jpg" class="img-fluid" alt="Imagem representativa do GalileoCloud">
116
</div>
117
<div class="col-8">
118
<p>
119
Trata-se de um modelo de armazenamento de arquivos online que permite que você mantenha seus dados
120
sincronizados com todos os seus dispositivos (tablets, smartphones, notebooks e Desktops).
121
</p>
122
<p>
123
Os dados ficam armazenados em um servidor seguro e todas as alterações realizadas em qualquer um de seus
124
dispositivos são propagadas de volta, e podem ser acessados via internet pelo site ou aplicativo,
125
desde que se tenha acesso ao usuário e senha.
126
</p>
127
</div>
128
</div>
129
<div class="row">
130
<div class="col-12">
131
<h2 class="h2-responsive text-center">
132
Conheça as vantagens de se contratar o GalileoCloud:
133
</h2>
134
</div>
135
</div>
136
</div>
137
</div>
138
139
<div fss-anchor="subview-b" class="fss-subview-item fss-active" style="background-color:#000;">
140
<div class="box">
141
<div class="info">Subview B</div>
142
</div>
143
</div>
144
</div>
145
</div>
146
147
<div fss-anchor="view-2" class="fss-mainview" style="background-image: url('https://mdbootstrap.com/img/Photos/Others/images/76.jpg'); background-repeat: no-repeat; background-size: cover; background-position: center center;">
148
<div class="box">
149
<div class="info">View 2</div>
150
</div>
151
</div>
152
153
<div fss-anchor="view-3" class="fss-mainview" style="background-image: url('https://mdbootstrap.com/img/Photos/Others/images/91.jpg'); background-repeat: no-repeat; background-size: cover; background-position: center center;">
154
<div class="box">
155
<div class="info">View 3</div>
156
</div>
157
</div>
158
</div>
159
<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
160
<script type="text/javascript" src="js/popper.min.js"></script>
161
<script type="text/javascript" src="js/bootstrap.min.js"></script>
162
<script type="text/javascript" src="js/mdb.min.js"></script>
163
<script type="text/javascript" src="js/addons-pro/mdb-fsscroller.min.js"></script>
164
<script type="text/javascript" src="js/galileoJS.js"></script>
165
<script type="text/javascript" src="js/site-galileosoft.js"></script>
166
<script>
167
$(document).ready(function () {
168
$(".full-screen-scroller").fullScreenScroller();
169
});
170
171
</script>
172
</body>
173
174
</html>
175
xxxxxxxxxx
1
/* CSS EXTRACTED FROM fsscroller.css */
2
3
html,
4
body {
5
margin: 0;
6
height: 100%; }
7
8
.full-screen-scroller {
9
position: relative;
10
overflow-y: scroll;
11
height: 100%;
12
width: 100%; }
13
.full-screen-scroller .fss-mainview {
14
position: relative;
15
height: 100%;
16
width: 100%;
17
font-size: 16px;
18
vertical-align: bottom;
19
white-space: normal; }
20
.full-screen-scroller .fss-subview {
21
overflow: hidden;
22
height: 100%;
23
white-space: nowrap;
24
font-size: 0; }
25
.full-screen-scroller .fss-subview-item {
26
position: relative;
27
display: inline-block;
28
height: 100%;
29
width: 100%;
30
font-size: 16px;
31
vertical-align: bottom;
32
white-space: normal; }
33
.full-screen-scroller .fss-dotted-scrollspy {
34
position: fixed;
35
right: 20px;
36
top: 50vh;
37
-webkit-transform: translate(0, -50%);
38
-ms-transform: translate(0, -50%);
39
transform: translate(0, -50%);
40
display: -webkit-box;
41
display: -webkit-flex;
42
display: -ms-flexbox;
43
display: flex;
44
-webkit-box-orient: vertical;
45
-webkit-box-direction: normal;
46
-webkit-flex-direction: column;
47
-ms-flex-direction: column;
48
flex-direction: column;
49
-webkit-box-align: center;
50
-webkit-align-items: center;
51
-ms-flex-align: center;
52
align-items: center;
53
-webkit-box-pack: center;
54
-webkit-justify-content: center;
55
-ms-flex-pack: center;
56
justify-content: center;
57
z-index: 1000; }
58
.full-screen-scroller .fss-dotted-scrollspy .fss-nav-item {
59
padding: 0.5rem; }
60
.full-screen-scroller .fss-dotted-scrollspy .fss-nav-item::after {
61
content: "";
62
display: block;
63
width: 0.5rem;
64
height: 0.5rem;
65
-webkit-border-radius: 50%;
66
border-radius: 50%;
67
background: rgba(255, 255, 255, 0.54); }
68
.full-screen-scroller .fss-dotted-scrollspy .fss-nav-item:hover::after {
69
background: white; }
70
.full-screen-scroller .fss-dotted-scrollspy .fss-nav-item.active::after {
71
background: white; }
72
.full-screen-scroller .fss-dotted-scrollspy .fss-nav-btn {
73
background: transparent;
74
border: none;
75
-webkit-box-shadow: none;
76
box-shadow: none;
77
color: white;
78
font-size: 1rem;
79
color: rgba(255, 255, 255, 0.54);
80
display: -webkit-box;
81
display: -webkit-flex;
82
display: -ms-flexbox;
83
display: flex;
84
-webkit-box-pack: center;
85
-webkit-justify-content: center;
86
-ms-flex-pack: center;
87
justify-content: center;
88
-webkit-box-align: center;
89
-webkit-align-items: center;
90
-ms-flex-align: center;
91
align-items: center;
92
outline: none;
93
cursor: pointer; }
94
.full-screen-scroller .fss-dotted-scrollspy .fss-nav-btn:hover {
95
color: white; }
96
.full-screen-scroller .fss-subview .fss-dotted-scrollspy {
97
position: absolute;
98
right: 50%;
99
top: calc(100% - 20px);
100
-webkit-transform: translate(50%, -100%);
101
-ms-transform: translate(50%, -100%);
102
transform: translate(50%, -100%);
103
-webkit-box-orient: horizontal;
104
-webkit-box-direction: normal;
105
-webkit-flex-direction: row;
106
-ms-flex-direction: row;
107
flex-direction: row; }
108
109
/* CSS EXTRACTED FROM style.css */
110
/* Navbar animation */
111
.navbar {
112
background-color: #3b1a3733;
113
}
114
.top-nav-collapse {
115
background-color: #3b1a37f2;
116
}
117
/* Adding color to the Navbar on mobile */
118
@media only screen and (max-width: 768px) {
119
.navbar {
120
background-color: #3b1a37f2;
121
}
122
}
123
/* Footer color for sake of consistency with Navbar */
124
.page-footer {
125
background-color: #3b1a37;
126
}
127
/*Footer Coleta lead*/
128
footer .md-form.input-group label{
129
top: 15%!important;
130
}
131
/*Hamburguer Menu Animation*/
132
/* Icon 1 */
133
.animated-icon1, .animated-icon2, .animated-icon3 {
134
width: 30px;
135
height: 20px;
136
position: relative;
137
margin: 0px;
138
-webkit-transform: rotate(0deg);
139
-moz-transform: rotate(0deg);
140
-o-transform: rotate(0deg);
141
transform: rotate(0deg);
142
-webkit-transition: .5s ease-in-out;
143
-moz-transition: .5s ease-in-out;
144
-o-transition: .5s ease-in-out;
145
transition: .5s ease-in-out;
146
cursor: pointer;
147
}
148
.animated-icon1 span, .animated-icon2 span, .animated-icon3 span {
149
display: block;
150
position: absolute;
151
height: 3px;
152
width: 100%;
153
border-radius: 9px;
154
opacity: 1;
155
left: 0;
156
-webkit-transform: rotate(0deg);
157
-moz-transform: rotate(0deg);
158
-o-transform: rotate(0deg);
159
transform: rotate(0deg);
160
-webkit-transition: .25s ease-in-out;
161
-moz-transition: .25s ease-in-out;
162
-o-transition: .25s ease-in-out;
163
transition: .25s ease-in-out;
164
}
165
.animated-icon1 span {
166
background: #e65100;
167
}
168
.animated-icon2 span {
169
background: #e3f2fd;
170
}
171
.animated-icon3 span {
172
background: #f3e5f5;
173
}
174
.animated-icon1 span:nth-child(1) {
175
top: 0px;
176
}
177
.animated-icon1 span:nth-child(2) {
178
top: 10px;
179
}
180
.animated-icon1 span:nth-child(3) {
181
top: 20px;
182
}
183
.animated-icon1.open span:nth-child(1) {
184
top: 11px;
185
-webkit-transform: rotate(135deg);
186
-moz-transform: rotate(135deg);
187
-o-transform: rotate(135deg);
188
transform: rotate(135deg);
189
}
190
.animated-icon1.open span:nth-child(2) {
191
opacity: 0;
192
left: -60px;
193
}
194
.animated-icon1.open span:nth-child(3) {
195
top: 11px;
196
-webkit-transform: rotate(-135deg);
197
-moz-transform: rotate(-135deg);
198
-o-transform: rotate(-135deg);
199
transform: rotate(-135deg);
200
}
201
/* Icon 3*/
202
.animated-icon2 span:nth-child(1) {
203
top: 0px;
204
}
205
.animated-icon2 span:nth-child(2), .animated-icon2 span:nth-child(3) {
206
top: 10px;
207
}
208
.animated-icon2 span:nth-child(4) {
209
top: 20px;
210
}
211
.animated-icon2.open span:nth-child(1) {
212
top: 11px;
213
width: 0%;
214
left: 50%;
215
}
216
.animated-icon2.open span:nth-child(2) {
217
-webkit-transform: rotate(45deg);
218
-moz-transform: rotate(45deg);
219
-o-transform: rotate(45deg);
220
transform: rotate(45deg);
221
}
222
.animated-icon2.open span:nth-child(3) {
223
-webkit-transform: rotate(-45deg);
224
-moz-transform: rotate(-45deg);
225
-o-transform: rotate(-45deg);
226
transform: rotate(-45deg);
227
}
228
.animated-icon2.open span:nth-child(4) {
229
top: 11px;
230
width: 0%;
231
left: 50%;
232
}
233
/* Icon 4 */
234
.animated-icon3 span:nth-child(1) {
235
top: 0px;
236
-webkit-transform-origin: left center;
237
-moz-transform-origin: left center;
238
-o-transform-origin: left center;
239
transform-origin: left center;
240
}
241
.animated-icon3 span:nth-child(2) {
242
top: 10px;
243
-webkit-transform-origin: left center;
244
-moz-transform-origin: left center;
245
-o-transform-origin: left center;
246
transform-origin: left center;
247
}
248
.animated-icon3 span:nth-child(3) {
249
top: 20px;
250
-webkit-transform-origin: left center;
251
-moz-transform-origin: left center;
252
-o-transform-origin: left center;
253
transform-origin: left center;
254
}
255
.animated-icon3.open span:nth-child(1) {
256
-webkit-transform: rotate(45deg);
257
-moz-transform: rotate(45deg);
258
-o-transform: rotate(45deg);
259
transform: rotate(45deg);
260
top: 0px;
261
left: 8px;
262
}
263
.animated-icon3.open span:nth-child(2) {
264
width: 0%;
265
opacity: 0;
266
}
267
.animated-icon3.open span:nth-child(3) {
268
-webkit-transform: rotate(-45deg);
269
-moz-transform: rotate(-45deg);
270
-o-transform: rotate(-45deg);
271
transform: rotate(-45deg);
272
top: 21px;
273
left: 8px;
274
}
275
/*Cores*/
276
.verde-fluorescente{
277
color: #b1f843!important;
278
}
279
.verde-claro{
280
color: #b6d374;
281
}
282
.verde-medio{
283
color: #9cca33!important;
284
}
285
.verde-escuro{
286
color: #2d3a12;
287
}
288
.roxo-claro{
289
color: #3B1A37;
290
}
291
.roxo-escuro{
292
color: #331630;
293
}
294
.text-muted-custom {
295
color: #99a2ab!important;
296
}
297
.cinza-claro{
298
color: #bdbdbd!important;
299
}
300
.bg-verde-claro{
301
background-color: #90ba38!important;
302
}
303
/*Utilidades*/
304
.border-3px{
305
border: 3px solid #dee2e6;
306
}
307
.btn-outline-verde{
308
border: 2px solid #2d3a12!important;
309
color: #2d3a12!important;
310
background-color: transparent!important;
311
}
312
.btn-outline-verde-claro{
313
border: 2px solid #0dfa60!important;
314
color: #0dfa60!important;
315
background-color: transparent!important;
316
}
317
.btn-gradient-amarelo{
318
background: linear-gradient(50deg,#d17a07,#b03f2dcc);
319
/*background: linear-gradient(50deg,#A74626DB,#EFCC6ACF);*/
320
}
321
.btn-gradient-amarelo-reverse{
322
background: linear-gradient(50deg,#b03f2dcc,#d17a07)
323
}
324
.btn-gradient-amarelo-claro{
325
background: linear-gradient(150deg,#b03f2dcc,#ff9800d6);
326
/*background: linear-gradient(140deg,#EFCC6ACF,#FF9800D6);*/
327
}
328
.btn-gradient-azul{
329
background: linear-gradient(50deg,#55006b,#355ec3de);
330
/*background: linear-gradient(140deg,#EFCC6ACF,#FF9800D6);*/
331
}
332
.btn-gradient-azul-claro{
333
background: linear-gradient(140deg,#355ec3de,#55006b);
334
/*background: linear-gradient(140deg,#EFCC6ACF,#FF9800D6);*/
335
}
336
.gradient-roxo-btnWhatsapp{
337
background: linear-gradient(362deg,#55006b9e,#355ec391);
338
}
339
.gradient-roxo-btnTelefone{
340
background: linear-gradient(-182deg,#355ec391,#55006b9e);
341
}
342
.gradient-roxo-btnEmail{
343
background: linear-gradient(-188deg,#355ec391,#55006b9e);
344
}
345
.btn-gradient-azul:hover{
346
color: #000;
347
font-weight: 600;
348
}
349
.btn-gradient-azul-claro:hover{
350
color: #000;
351
font-weight: 600;
352
}
353
.gradient-roxo-btnWhatsapp:hover{
354
color: #000;
355
font-weight: 600;
356
}
357
.gradient-roxo-btnTelefone:hover{
358
color: #000;
359
font-weight: 600;
360
}
361
.gradient-roxo-btnEmail:hover{
362
color: #000;
363
font-weight: 600;
364
}
365
.transparencia-roxa{
366
background-color: rgba(61, 33, 64, 0.25);
367
z-index: -1;
368
}
369
.transparencia-roxa-clara{
370
background-color: #55006b26;
371
}
372
.transparencia-preta{
373
background-color: #00000080;
374
}
375
.transparencia-azul{
376
background-color: rgba(52, 59, 113, 0.25);
377
}
378
/*HOME - Serviços*/
379
.activador-custom{
380
position: static!important;
381
right: auto!important;
382
}
383
.img-servicos-home{
384
z-index: -2;
385
}
386
/*HOME - FAQ*/
387
#home-faq{
388
background-color: #f6f6f6;
389
}
390
.numero-faq{
391
color: #90ba38;
392
}
393
.pergunta-faq{
394
color: #2d3a12;
395
}
396
.botao-faq{
397
color: #2d3a12!important;
398
font-weight: 600!important;
399
}
400
.collapse-content a.collapsed:after {
401
content: 'Continuar Lendo' !important;
402
}
403
.collapse-content a:not(.collapsed):after {
404
content: 'Entendi'
405
}
406
/*HOME-PORTIFOLIO*/
407
.cta-carousel-clientes-wrapper{
408
margin-bottom: 2rem;
409
}
410
.carousel-indicators-customClientes{
411
margin-bottom: 0;
412
}
413
414
/*HOME-MODAL DE CONTATO*/
415
.bg-modal-contato{
416
background-image: url("../assets/bg-modal-contato.jpg");
417
}
418
.form-dark .font-small {
419
font-size: 0.8rem;
420
}
421
.form-dark [type="radio"] + label,
422
.form-dark [type="checkbox"] + label {
423
font-size: 0.8rem;
424
}
425
.form-dark [type="checkbox"] + label:before {
426
top: 2px;
427
width: 15px;
428
height: 15px;
429
}
430
.form-dark .md-form label {
431
color: #fff;
432
}
433
.form-dark input[type=email]:focus:not([readonly]) {
434
border-bottom: 1px solid #00C851;
435
-webkit-box-shadow: 0 1px 0 0 #00C851;
436
box-shadow: 0 1px 0 0 #00C851;
437
}
438
.form-dark input[type=email]:focus:not([readonly]) + label {
439
color: #fff;
440
}
441
.form-dark input[type=text]:focus:not([readonly]) {
442
border-bottom: 1px solid #00C851;
443
-webkit-box-shadow: 0 1px 0 0 #00C851;
444
box-shadow: 0 1px 0 0 #00C851;
445
}
446
.form-dark input[type=text]:focus:not([readonly]) + label {
447
color: #fff;
448
}
449
.form-dark input[type=tel]:focus:not([readonly]) {
450
border-bottom: 1px solid #00C851;
451
-webkit-box-shadow: 0 1px 0 0 #00C851;
452
box-shadow: 0 1px 0 0 #00C851;
453
}
454
.form-dark textarea[type=text]:focus:not([readonly]) + label {
455
color: #fff;
456
}
457
.form-dark textarea[type=text]:focus:not([readonly]) {
458
border-bottom: 1px solid #00C851;
459
-webkit-box-shadow: 0 1px 0 0 #00C851;
460
box-shadow: 0 1px 0 0 #00C851;
461
}
462
.md-form textarea~label.active{
463
color: #fff;
464
}
465
.form-dark input[type=tel]:focus:not([readonly]) + label {
466
color: #fff;
467
}
468
.form-dark input[type=password]:focus:not([readonly]) {
469
border-bottom: 1px solid #00C851;
470
-webkit-box-shadow: 0 1px 0 0 #00C851;
471
box-shadow: 0 1px 0 0 #00C851; }
472
473
.form-dark input[type=password]:focus:not([readonly]) + label {
474
color: #fff; }
475
476
.form-dark input[type="checkbox"] + label:before {
477
content: '';
478
position: absolute;
479
top: 0;
480
left: 0;
481
width: 17px;
482
height: 17px;
483
z-index: 0;
484
border: 1.5px solid #fff;
485
border-radius: 1px;
486
margin-top: 2px;
487
-webkit-transition: 0.2s;
488
transition: 0.2s; }
489
.form-dark input[type="checkbox"]:checked + label:before {
490
top: -4px;
491
left: -3px;
492
width: 12px;
493
height: 22px;
494
border-style: solid;
495
border-width: 2px;
496
border-color: transparent #00c851 #00c851 transparent;
497
-webkit-transform: rotate(40deg);
498
-ms-transform: rotate(40deg);
499
transform: rotate(40deg);
500
-webkit-backface-visibility: hidden;
501
-webkit-transform-origin: 100% 100%;
502
-ms-transform-origin: 100% 100%;
503
transform-origin: 100% 100%; }
504
.form-dark .modal-header {
505
border-bottom: none;
506
}
507
.accordion-custom .card .card-header{
508
background-color: #710ad1 !important;
509
border-radius: 25px;
510
}
511
.accordion-custom .card .card-header:hover{
512
background-color: #108e3ca3 !important;
513
}
514
.accordion-custom > div{
515
background-color: #ddcdf53b!important;
516
border-radius: 25px!important;
517
}
518
.accordion-custom .card .card-header .fas{
519
background-color: rgba(0,0,0,.03) !important;
520
font-size: 2.2rem;
521
padding-left: 15px;
522
margin-right: 3px;
523
}
524
525
/*SOLICITAR ORÇAMENTO*/
526
body#body-solicitarOrcamento{
527
height: 100%;
528
}
529
#videoBg-solicitarOrcamento {
530
position: fixed;
531
right: 0;
532
bottom: 0;
533
min-width: 100%;
534
min-height: 100%;
535
}
536
.content-solicitarOrcamento {
537
position: inherit;
538
bottom: 0;
539
width: 100%;
540
padding: 20px;
541
}
542
.fix-flexCenter-height{
543
min-height: 100%;
544
height: initial!important;
545
}
546
.form-box{
547
background-image: url("../assets/bg-form-astronauta.png");
548
background-position: center;
549
background-repeat: no-repeat;
550
-webkit-background-size: cover;
551
background-size: cover;
552
color: #fff;
553
text-align: center;
554
-webkit-box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.92) !important;
555
box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.92) !important;
556
}
557
.form-box a {
558
color: #fff;
559
}
560
.form-box a:hover {
561
color: #dfdfdf;
562
}
563
.form-box input[type=text], .form-box input[type=password], .form-box input[type=email], .form-box textarea {
564
border-bottom: 1px solid #fff;
565
}
566
.form-box .md-form input[type=text]:focus:not([readonly]), .form-box .md-form input[type=password]:focus:not([readonly]), .form-box .md-form input[type=email]:focus:not([readonly]), .form-box .md-form textarea.md-textarea:focus:not([readonly]) {
567
border-bottom: 1px solid #bbdefb !important;
568
-webkit-box-shadow: 0 1px 0 0 #bbdefb !important;
569
box-shadow: 0 1px 0 0 #bbdefb !important;
570
}
571
.form-box .md-form label {
572
color: #fff;
573
}
574
.form-box .md-form label.active {
575
color: #bbdefb !important;
576
}
577
/* Remove chrome autofil background color */
578
@-webkit-keyframes autofill {
579
to {
580
color: #fff;
581
background: transparent;
582
}
583
}
584
input:-webkit-autofill {
585
-webkit-animation-name: autofill;
586
-webkit-animation-fill-mode: both;
587
}
588
.md-form>input[type]:-webkit-autofill:not(.browser-default):not([type="search"])+label,
589
.md-form >input[type=date]:not(.browser-default)+label,
590
.md-form >input[type=time]:not(.browser-default)+label {
591
transform: translateY(-25px);
592
transform-origin: 0 0;
593
font-size: .8rem;
594
}
595
.input-fix label.active {
596
transform: translateY(-100%) !important;
597
}
598
.textarea-fix label.active{
599
transform: translateY(-30%) !important;
600
}
601
602
/* CSS EXTRACTED FROM galileoCSS.css*/
603
/*Utilidades*/
604
.clickableElement{
605
cursor: pointer;
606
}
607
.hideSection{
608
display: none!important;
609
}
610
.card-same-height{
611
min-height: 100%;
612
}
613
/*Tipografia*/
614
.fw-300{
615
font-weight: 300!important;
616
}
617
.fw-400{
618
font-weight: 400!important;
619
}
620
.fw-500{
621
font-weight: 500!important;
622
}
623
.fw-600{
624
font-weight: 600!important;
625
}
626
.fz-08-rem{
627
font-size: 0.8rem!important;
628
}
629
.fz-1-rem{
630
font-size: 1rem!important;
631
}
632
.fz-11-rem{
633
font-size: 1.1rem!important;
634
}
635
.fz-12-rem{
636
font-size: 1.2rem!important;
637
}
638
.fz-13-rem{
639
font-size: 1.3rem!important;
640
}
641
.fz-15-rem{
642
font-size: 1.5rem!important;
643
}
644
.fz-17-rem{
645
font-size: 1.7rem!important;
646
}
647
.fz-18-rem{
648
font-size: 1.8rem!important;
649
}
650
.fz-3-rem{
651
font-size: 3rem!important;
652
}
653
@media (min-width: 576px){
654
.w-sm-75 {
655
width: 75%!important;
656
}
657
}
658
@media (min-width: 768px){
659
.w-md-75{
660
width: 75%!important;
661
}
662
}
663
xxxxxxxxxx
1
//Plugin initialize
2
$(document).ready(function () {
3
$(".full-screen-scroller").fullScreenScroller();
4
});
5
6
//JS EXTRACTED FROM mdb-fsscroller.js
7
8
/*!
9
* jQuery Mousewheel 3.1.13
10
*
11
* Copyright 2015 jQuery Foundation and other contributors
12
* Released under the MIT license.
13
* http://jquery.org/license
14
*/
15
!(function (a) {
16
"function" == typeof define && define.amd ?
17
define(["jquery"], a) :
18
"object" == typeof exports ?
19
(module.exports = a) :
20
a(jQuery);
21
})(function (a) {
22
function b(b) {
23
var g = b || window.event,
24
h = i.call(arguments, 1),
25
j = 0,
26
l = 0,
27
m = 0,
28
n = 0,
29
o = 0,
30
p = 0;
31
if (
32
((b = a.event.fix(g)),
33
(b.type = "mousewheel"),
34
"detail" in g && (m = -1 * g.detail),
35
"wheelDelta" in g && (m = g.wheelDelta),
36
"wheelDeltaY" in g && (m = g.wheelDeltaY),
37
"wheelDeltaX" in g && (l = -1 * g.wheelDeltaX),
38
"axis" in g && g.axis === g.HORIZONTAL_AXIS && ((l = -1 * m), (m = 0)),
39
(j = 0 === m ? l : m),
40
"deltaY" in g && ((m = -1 * g.deltaY), (j = m)),
41
"deltaX" in g && ((l = g.deltaX), 0 === m && (j = -1 * l)),
42
0 !== m || 0 !== l)
43
) {
44
if (1 === g.deltaMode) {
45
var q = a.data(this, "mousewheel-line-height");
46
(j *= q), (m *= q), (l *= q);
47
} else if (2 === g.deltaMode) {
48
var r = a.data(this, "mousewheel-page-height");
49
(j *= r), (m *= r), (l *= r);
50
}
51
if (
52
((n = Math.max(Math.abs(m), Math.abs(l))),
53
(!f || f > n) && ((f = n), d(g, n) && (f /= 40)),
54
d(g, n) && ((j /= 40), (l /= 40), (m /= 40)),
55
(j = Math[j >= 1 ? "floor" : "ceil"](j / f)),
56
(l = Math[l >= 1 ? "floor" : "ceil"](l / f)),
57
(m = Math[m >= 1 ? "floor" : "ceil"](m / f)),
58
k.settings.normalizeOffset && this.getBoundingClientRect)
59
) {
60
var s = this.getBoundingClientRect();
61
(o = b.clientX - s.left), (p = b.clientY - s.top);
62
}
63
return (
64
(b.deltaX = l),
65
(b.deltaY = m),
66
(b.deltaFactor = f),
67
(b.offsetX = o),
68
(b.offsetY = p),
69
(b.deltaMode = 0),
70
h.unshift(b, j, l, m),
71
e && clearTimeout(e),
72
(e = setTimeout(c, 200)),
73
(a.event.dispatch || a.event.handle).apply(this, h)
74
);
75
}
76
}
77
78
function c() {
79
f = null;
80
}
81
82
function d(a, b) {
83
return (
84
k.settings.adjustOldDeltas && "mousewheel" === a.type && b % 120 === 0
85
);
86
}
87
var e,
88
f,
89
g = ["wheel", "mousewheel", "DOMMouseScroll", "MozMousePixelScroll"],
90
h =
91
"onwheel" in document || document.documentMode >= 9 ? ["wheel"] : ["mousewheel", "DomMouseScroll", "MozMousePixelScroll"],
92
i = Array.prototype.slice;
93
if (a.event.fixHooks)
94
for (var j = g.length; j;) a.event.fixHooks[g[--j]] = a.event.mouseHooks;
95
var k = (a.event.special.mousewheel = {
96
version: "3.1.12",
97
setup: function () {
98
if (this.addEventListener)
99
for (var c = h.length; c;) this.addEventListener(h[--c], b, !1);
100
else this.onmousewheel = b;
101
a.data(this, "mousewheel-line-height", k.getLineHeight(this)),
102
a.data(this, "mousewheel-page-height", k.getPageHeight(this));
103
},
104
teardown: function () {
105
if (this.removeEventListener)
106
for (var c = h.length; c;) this.removeEventListener(h[--c], b, !1);
107
else this.onmousewheel = null;
108
a.removeData(this, "mousewheel-line-height"),
109
a.removeData(this, "mousewheel-page-height");
110
},
111
getLineHeight: function (b) {
112
var c = a(b),
113
d = c["offsetParent" in a.fn ? "offsetParent" : "parent"]();
114
return (
115
d.length || (d = a("body")),
116
parseInt(d.css("fontSize"), 10) || parseInt(c.css("fontSize"), 10) || 16
117
);
118
},
119
getPageHeight: function (b) {
120
return a(b).height();
121
},
122
settings: {
123
adjustOldDeltas: !0,
124
normalizeOffset: !0
125
}
126
});
127
a.fn.extend({
128
mousewheel: function (a) {
129
return a ? this.bind("mousewheel", a) : this.trigger("mousewheel");
130
},
131
unmousewheel: function (a) {
132
return this.unbind("mousewheel", a);
133
}
134
});
135
});
136
137
/*
138
* =================================================
139
* viewscroller
140
* Copyright (c) 2016 Marcin Gierczak
141
* =================================================
142
*/
143
(function ($) {
144
$.fn.fullScreenScroller = function (params) {
145
// User's settings of this plugin
146
147
params = $.extend({
148
// Animation
149
animSpeedMainView: 700, // Animation speed of mainviews: 0 - fastest
150
animSpeedSubView: 700, // Animation speed of subviews: 0 - fastest
151
animEffectMainView: "easeInOutCubic", // Animation effect of mainviews change - jQuery (easing)
152
animEffectSubView: "easeInOutCubic", // Animation effect of subviews change - jQuery (easing)
153
animEffectMainViewCss3: "ease", // Animation effect of mainviews change - CSS3 (easing)
154
animEffectSubViewCss3: "ease", // Animation effect of subviews change - CSS3 (easing)
155
156
// Steering
157
useKeyboard: true, // Use keyboard to change views
158
useScrollbar: false, // Use scrollbar to change views
159
changeWhenAnim: true, // Change views when they are changing
160
loopMainViews: false, // Change horizontal views (mainviews) in loop mode
161
loopSubViews: false, // Change vertical views (subviews) in loop mode
162
fitToView: true, // Will the browser fit to the closest view (works if the useScrollbar option is true)
163
timeToFit: 1000, // Time between stop scrolling and start fitting to the closest view
164
165
// Mainbag dimension
166
fixedWidth: 0, // (in px) width of the mainbag - if 0 - then width = 100% of window (in px) = .mainbag { width: XXX }
167
spaceMainBag: 0, // (in px) a total value of the right and the left CSS margin dimensions of the .mainbag, for example: if .mainbag { left: XXX, right: YYY} then spaceMainBag = XXX + YYY
168
169
// Callbacks
170
beforeChange: null, // Callback which is called before views change
171
afterChange: null, // Callback which is called after views change
172
beforeResize: null, // Callback which is called before browser window resize
173
afterResize: null, // Callback which is called after browser window resize
174
175
// Views size
176
viewsHeight: [] // Array of mainviews height
177
},
178
params
179
);
180
181
// Main functions
182
$.fn.fullScreenScroller.setAnimSpeedMainView = function (val) {
183
var animSpeedMainView = 700;
184
185
params.animSpeedMainView = parseInt(val, 10) || animSpeedMainView;
186
};
187
188
$.fn.fullScreenScroller.setAnimSpeedSubView = function (val) {
189
var animSpeedSubView = 700;
190
191
params.animSpeedSubView = parseInt(val, 10) || animSpeedSubView;
192
};
193
194
$.fn.fullScreenScroller.setAnimEffectMainView = function (effectName) {
195
params.animEffectMainView = effectName;
196
};
197
198
$.fn.fullScreenScroller.setAnimEffectSubView = function (effectName) {
199
params.animEffectSubView = effectName;
200
};
201
202
$.fn.fullScreenScroller.setAnimEffectMainViewCss3 = function (effectName) {
203
params.animEffectMainViewCss3 = effectName;
204
};
205
206
$.fn.fullScreenScroller.setAnimEffectSubViewCss3 = function (effectName) {
207
params.animEffectSubViewCss3 = effectName;
208
};
209
210
$.fn.fullScreenScroller.setUseKeyboard = function (isActive) {
211
params.useKeyboard = isActive;
212
};
213
214
$.fn.fullScreenScroller.setChangeWhenAnim = function (isActive) {
215
params.changeWhenAnim = isActive;
216
};
217
218
$.fn.fullScreenScroller.setLoopMainViews = function (isActive) {
219
params.loopMainViews = isActive;
220
};
221
222
$.fn.fullScreenScroller.setLoopSubViews = function (isActive) {
223
params.loopSubViews = isActive;
224
};
225
226
$.fn.fullScreenScroller.setFitToView = function (isActive) {
227
params.fitToView = isActive;
228
};
229
230
$.fn.fullScreenScroller.setTimeToFit = function (val) {
231
var timeToFit = 1000;
232
233
params.timeToFit = parseInt(val, 10) || timeToFit;
234
};
235
236
$.fn.fullScreenScroller.setUseScrollbar = function (isActive) {
237
params.useScrollbar = isActive;
238
changeView(allBagObjs[0], allBagObjs[0].viewsData.views[0], false, false);
239
changeCssOnScrollbarVisible();
240
onResize(false, false, false);
241
};
242
243
$.fn.fullScreenScroller.setFixedWidth = function (val) {
244
params.fixedWidth = parseInt(val, 10) || 0;
245
setMainbagDimWhenFixed();
246
calcViewsDimensions();
247
onResize(false, true, false);
248
};
249
250
$.fn.fullScreenScroller.setSpaceMainBag = function (val) {
251
params.spaceMainBag = parseInt(val, 10) || 0;
252
calcViewsDimensions();
253
onResize(false, true, false);
254
};
255
256
$.fn.fullScreenScroller.showMainView = function (dir) {
257
dir === "next" ?
258
showMainView(direction.NEXT) :
259
showMainView(direction.PREV);
260
};
261
262
$.fn.fullScreenScroller.showSubView = function (bagNbr, dir) {
263
dir === "next" ?
264
showSubView(bagNbr, direction.NEXT) :
265
showSubView(bagNbr, direction.PREV);
266
};
267
268
$.fn.fullScreenScroller.showView = function (anchor) {
269
setHash(anchor, false);
270
};
271
272
$.fn.fullScreenScroller.getCurrentBagNbr = function () {
273
return getCurrBagNbr();
274
};
275
276
// Main classes
277
var mainbag_sel = ".full-screen-scroller"; // mainbag class
278
var subbag_sel = ".fss-subview"; // subbag class
279
var mainview_sel = ".fss-mainview"; // mainview class
280
var subview_sel = ".fss-subview-item"; // subview class
281
var anchor_sel = ".fss-nav-item"; // Any anchor class
282
var active_sel = ".fss-active"; // Active view class
283
var center_sel = ".fss-center"; // Any content class inside a view
284
var subviewprev_sel = ".fss-subview-prev"; // Class for the element which changes current subview to the previous subview
285
var subviewnext_sel = ".fss-subview-next"; // Class for the element which changes current subview to the next subview
286
var mainviewprev_sel = ".fss-mainview-prev"; // Class for the element which changes current mainview to the previous mainview
287
var mainviewnext_sel = ".fss-mainview-next"; // Class for the element which changes current mainview to the next mainview
288
var getallmainviews_sel = mainbag_sel + ">" + mainview_sel; // Select all mainviews from the mainbag
289
var getallsubviews_sel = subbag_sel + ">" + subview_sel; // Select all subviews from the subbag
290
291
// Types of bags (container for views)
292
var bagType = {
293
MAINBAG: 0, // Bag type for mainviews
294
SUBBAG: 1 // Bag type for subviews
295
};
296
297
// DO NOT CHANGE!!! Shows view direction
298
var direction = {
299
NEXT: 1,
300
PREV: -1
301
};
302
303
var timeoutId = 0; // DO NOT CHANGE!!! setTimeout of bindHash function
304
var timeouts = []; // DO NOT CHANGE!!! Array of setTimeouts for scrolling
305
var times = 0; // DO NOT CHANGE!!! How many times beforeChange event has been fired
306
var allBagObjs = []; // DO NOT CHANGE!!! Array of all bag objects (one mainbag and all subbags)
307
var byAnchor = false; // DO NOT CHANGE!!! Is this first time when views are changing by anchor
308
var currentMainView = ""; // DO NOT CHANGE!!! Name of current view
309
var stopHashEvent = false; // DO NOT CHANGE!!!
310
var $window = $(window); // DO NOT CHANGE!!!
311
var $document = $(document); // DO NOT CHANGE!!!
312
var windowHeight = $window.height(); // DO NOT CHANGE!!!
313
var windowWidth = $window.width(); // DO NOT CHANGE!!!
314
var isChanging = false; // DO NOT CHANGE!!!
315
var isStart = false; // DO NOT CHANGE!!! Declare hidden scrolling effect
316
var startTime = Date.now(); // DO NOT CHANGE!!! For mousewheel events handling
317
var stepViaX = 10; // Step to start scrolling a page by X axis (in px) - for touch only!
318
var stepViaY = 50; // Step to start scrolling a page by Y axis (in px) - for touch only!
319
var correctHeight = true; // Corrects height of each view when mobile browser's toolbar has been hidden/shown (this generates visual skip effect)
320
321
// ----------------------------------------
322
// START SELECTOR CACHE
323
// ----------------------------------------
324
325
// Selector cache function
326
function SelectorCache() {
327
var collection = {};
328
329
function getFromCache(selector) {
330
if (undefined === collection[selector]) {
331
collection[selector] = $(selector);
332
}
333
334
return collection[selector];
335
}
336
337
return {
338
get: getFromCache
339
};
340
}
341
342
// Creates cache object
343
var sel = new SelectorCache();
344
345
// ----------------------------------------
346
// START VIEWS LOGIC
347
// ----------------------------------------
348
349
// Adds indexOf function for IE8 only (polyfill)
350
var addIndexOf = function () {
351
var len;
352
353
if (!Array.prototype.indexOf) {
354
// IE8 only - add indexOf function
355
Array.prototype.indexOf = function (viewsData, start) {
356
len = this.length;
357
358
for (var i = start || 0, j = len; i < j; i++) {
359
if (this[i] === viewsData) {
360
return i;
361
}
362
}
363
364
return -1;
365
};
366
}
367
};
368
369
// Adds includes function to IE (polyfill) - ECMAScript 6
370
var addIncludes = function () {
371
if (!String.prototype.includes) {
372
String.prototype.includes = function () {
373
"use strict";
374
375
return String.prototype.indexOf.apply(this, arguments) !== -1;
376
};
377
}
378
};
379
380
// Checks if resize event is fired during mobile orientation change
381
var isMobile = function () {
382
if (typeof window.orientation !== "undefined") {
383
// Smartphones usually support this property but not desktop browsers
384
return true;
385
}
386
387
return false;
388
};
389
390
// Checks if orientation has been changed
391
var isMobileOrientation = function () {
392
var currWindowHeight = $window.height();
393
var currWindowWidth = $window.width();
394
395
if (Math.abs(windowHeight - currWindowHeight) > 100) {
396
windowHeight = currWindowHeight;
397
return true;
398
}
399
400
if (Math.abs(windowWidth - currWindowWidth) > 100) {
401
windowWidth = currWindowWidth;
402
return true;
403
}
404
405
return false;
406
};
407
408
// Gets view name
409
var getViewName = function (mainViewNbr, view) {
410
var viewId = "#" + view.attr("fss-anchor");
411
412
if (viewId === "#undefined") {
413
viewId = "";
414
}
415
416
return mainViewNbr + viewId;
417
};
418
419
// Gets all mainviews from the mainbag
420
var getAllMainViews = function () {
421
var mainViews = [];
422
423
sel.get(getallmainviews_sel).each(function (mainViewNbr) {
424
mainViews.push(getViewName(mainViewNbr, $(this)));
425
});
426
427
return mainViews;
428
};
429
430
// Gets all subviews from specified mainview
431
var getAllSubViews = function (mainViewNbr) {
432
var subViews = [];
433
var subViewNbr = 0;
434
var subViewsLength;
435
// Gets specified (based on mainViewNbr) mainview from mainbag
436
var getSpecifiedMainView = sel
437
.get(getallmainviews_sel)
438
.slice(mainViewNbr, mainViewNbr + 1);
439
440
// Gets all subviews from specified mainview
441
getSpecifiedMainView
442
.find(sel.get(getallsubviews_sel))
443
.each(function (subViewNbr) {
444
subViews.push(getViewName(subViewNbr, $(this)));
445
});
446
447
subViewsLength = subViews.length;
448
449
while (subViewNbr < subViewsLength) {
450
subViewNbr++;
451
}
452
453
return subViews;
454
};
455
456
// Gets bag number which includes the view
457
var getBagNbr = function (viewName) {
458
for (
459
var bagObjNbr = 0, len = allBagObjs.length; bagObjNbr < len; bagObjNbr++
460
) {
461
for (
462
var viewNbr = 0, len2 = allBagObjs[bagObjNbr].viewsData.views.length; viewNbr < len2; viewNbr++
463
) {
464
if (
465
allBagObjs[bagObjNbr].viewsData.views[viewNbr].split("#")[1] ===
466
viewName
467
) {
468
return bagObjNbr;
469
}
470
}
471
}
472
473
return -1;
474
};
475
476
// Gets current bag number for the viewname from url
477
var getCurrBagNbr = function () {
478
if (window.location.hash.indexOf("#") > -1) {
479
urlViewName = window.location.hash.replace("#", "");
480
var subviews = [],
481
anchor_sel =
482
"div[fss-anchor=" +
483
urlViewName +
484
"], section[fss-anchor=" +
485
urlViewName +
486
"], article[fss-anchor=" +
487
urlViewName +
488
"]";
489
sel
490
.get(anchor_sel)
491
.find(sel.get(getallsubviews_sel))
492
.each(function (idx) {
493
subviews.push($(this).attr("fss-anchor"));
494
});
495
496
if (subviews.length > 0) {
497
return getBagNbr(subviews[0]);
498
} else if (subviews.length === 0) {
499
sel
500
.get(anchor_sel)
501
.parents(sel.get(subbag_sel))
502
.each(function (idx) {
503
subviews.push($(this).attr("class"));
504
});
505
if (subviews.length > 0) {
506
if (subviews[0].includes(subbag_sel.replace(".", ""))) {
507
return getBagNbr(urlViewName);
508
}
509
}
510
}
511
512
return -1;
513
} else {
514
return 0;
515
}
516
};
517
518
// Sets hash in the URL
519
var setHash = function (id, addHash) {
520
if (addHash === true) {
521
stopHashEvent = true;
522
} else {
523
stopHashEvent = false;
524
}
525
526
var ffsNavItemHrefToId = ".fss-nav-item[href='#" + id + "']";
527
528
$(ffsNavItemHrefToId).parent().find(".fss-nav-item").removeClass("active");
529
$(ffsNavItemHrefToId).addClass("active");
530
window.location.hash = id;
531
};
532
533
// Creates bag object
534
var createBagObj = function (container, views, bagType) {
535
var newBagObj = new bagObject();
536
537
newBagObj.setBagObj(container, views, bagType);
538
539
return newBagObj;
540
};
541
542
// Creates bag objects for all subviews inside each mainview
543
var createBagObjsForAllSubViews = function (mainViews) {
544
var subViews = [];
545
var mainViewName = "";
546
var mainViewNbr = 0;
547
var subViewNbr = 0;
548
var len = mainViews.length;
549
550
while (mainViewNbr < len) {
551
subViews = getAllSubViews(mainViewNbr);
552
mainViewName = mainViews[mainViewNbr].split("#")[1];
553
554
if (subViews.length > 0) {
555
allBagObjs.push(
556
createBagObj(
557
subbag_sel +
558
"|" +
559
subViewNbr +
560
"|" +
561
mainViewName +
562
"|" +
563
mainViewNbr,
564
subViews,
565
bagType.SUBBAG
566
)
567
);
568
subViewNbr++;
569
}
570
571
mainViewNbr++;
572
}
573
};
574
575
// Creates bag objects for all views
576
var createBagObjsForAllViews = function () {
577
var mainViews = getAllMainViews();
578
579
allBagObjs.push(createBagObj(mainbag_sel, mainViews, bagType.MAINBAG));
580
createBagObjsForAllSubViews(mainViews);
581
};
582
583
// Changes view on the hash change
584
var changeViewOnHashChange = function () {
585
var id;
586
var viewData;
587
588
if (stopHashEvent === false && window.location.hash.indexOf("#") > -1) {
589
id = window.location.hash.replace("#", "");
590
viewData = getViewDataForID(id);
591
592
if (typeof viewData !== "undefined" && viewData.length > 0) {
593
changeView(allBagObjs[viewData[0]], viewData[1], false, false);
594
}
595
}
596
597
stopHashEvent = false;
598
};
599
600
// Looks for anchor id among all views in all bag objects and return the view data which has the same id
601
var getViewDataForID = function (id) {
602
var viewData = [];
603
var views;
604
var bagType;
605
606
for (
607
var subObjNbr = 0, len = allBagObjs.length; subObjNbr < len; subObjNbr++
608
) {
609
views = allBagObjs[subObjNbr].viewsData.views;
610
bagType = allBagObjs[subObjNbr].viewsData.bagType;
611
612
for (var viewNbr = 0, len2 = views.length; viewNbr < len2; viewNbr++) {
613
if (views[viewNbr].indexOf("#") > -1) {
614
if (views[viewNbr].split("#")[1] === id) {
615
viewData.push(subObjNbr, views[viewNbr], bagType);
616
return viewData;
617
}
618
}
619
}
620
}
621
};
622
623
// Gets view number
624
var getViewNbr = function (bagObj, direction) {
625
var nbr =
626
bagObj.viewsData.views.indexOf(bagObj.viewsData.activeView) + direction;
627
628
if (
629
(params.loopSubViews &&
630
typeof bagObj.viewsData.views[nbr] === "undefined" &&
631
bagObj.viewsData.container.includes(subbag_sel)) ||
632
(params.loopMainViews &&
633
typeof bagObj.viewsData.views[nbr] === "undefined" &&
634
bagObj.viewsData.container.includes(mainbag_sel))
635
) {
636
nbr = nbr < 0 ? bagObj.viewsData.views.length - 1 : 0;
637
}
638
639
return nbr;
640
};
641
642
// Adds styles to the bag selectors when useScrollbar option is enabled
643
var changeCssOnScrollbarVisible = function () {
644
sel.get("body").css("overflow-y", "hidden"); // Needed due to Firefox when useScrollbar = false, not required in other browsers
645
sel.get("html").css("overflow-y", "hidden");
646
647
if (params.useScrollbar) {
648
sel.get(".full-screen-scroller").css("overflow-y", "scroll");
649
} else {
650
sel.get(".full-screen-scroller").css("overflow-y", "hidden");
651
}
652
};
653
654
// Checks if window has been resized
655
var checkIfResize = function (animSpeed, isResize) {
656
var resizeWindowTime = 1;
657
658
return isResize ? resizeWindowTime : animSpeed;
659
};
660
661
// Sets views position
662
var calcViewsPos = function (bagObj) {
663
var isValidVHA;
664
665
bagObj.viewsData.viewsPos.length = 0;
666
isValidVHA = isValidViewsHeightArray();
667
668
for (
669
var viewNbr = 0, len = bagObj.viewsData.views.length; viewNbr < len; viewNbr++
670
) {
671
bagObj.viewsData.bagType === bagType.SUBBAG ?
672
setSubViewsPos(bagObj, viewNbr) :
673
setMainViewsPos(bagObj, viewNbr, isValidVHA);
674
}
675
};
676
677
// Sets subviews position
678
var setSubViewsPos = function (bagObj, viewNbr) {
679
var width = sel.get(mainbag_sel).width();
680
681
windowWidth = $window.width();
682
params.fixedWidth === 0 ?
683
(width = windowWidth - params.spaceMainBag) :
684
(width = params.fixedWidth);
685
bagObj.viewsData.viewsPos.push(width * viewNbr);
686
};
687
688
// Sets mainviews position
689
var setMainViewsPos = function (bagObj, viewNbr, isValidVHA) {
690
windowHeight = $window.height();
691
692
if (viewNbr === 0) {
693
bagObj.viewsData.viewsPos.push(0);
694
} else if (
695
viewNbr > 0 &&
696
isValidVHA &&
697
params.viewsHeight.length >= viewNbr &&
698
params.viewsHeight[viewNbr - 1] !== 0
699
) {
700
bagObj.viewsData.viewsPos.push(
701
bagObj.viewsData.viewsPos[viewNbr - 1] +
702
params.viewsHeight[viewNbr - 1]
703
); // Sets view size defined by a user
704
} else if (viewNbr > 0) {
705
bagObj.viewsData.viewsPos.push(
706
bagObj.viewsData.viewsPos[viewNbr - 1] + windowHeight
707
); // Sets default view size (100% vh/vw)
708
}
709
};
710
711
// Calculates which view is closer to the current scroll position
712
var calcViewPos = function (viewsPosArr) {
713
var currPos = $window.scrollTop();
714
var prevDiffPos = 0;
715
var diffPos = 0;
716
var getArrNbr = 0;
717
718
for (
719
var viewPosNbr = 0, len = viewsPosArr.length; viewPosNbr < len; viewPosNbr++
720
) {
721
diffPos = Math.abs(viewsPosArr[viewPosNbr] - currPos);
722
723
if (diffPos < prevDiffPos) {
724
getArrNbr = viewPosNbr;
725
}
726
727
prevDiffPos = diffPos;
728
}
729
730
return getArrNbr; // Returns view number which includes the closest value to the current scroll position
731
};
732
733
// Sets width and height css properties for mainviews and subviews
734
var calcViewsDimensions = function () {
735
var width = sel.get(mainbag_sel).width(),
736
height = $window.height();
737
738
params.fixedWidth === 0 ?
739
(width = $window.width() - params.spaceMainBag) :
740
(width = params.fixedWidth);
741
sel.get(mainbag_sel).css("width", width + "px");
742
sel.get(mainview_sel).css("height", height + "px");
743
744
if (isValidViewsHeightArray()) {
745
setViewHeight(height);
746
}
747
748
sel.get(subview_sel).css("width", width + "px");
749
sel.get(subbag_sel).each(function (idx) {
750
$(this).css("width", width * $(this).find(subview_sel).length + "px"); // How many subviews are placed inside the subbag
751
});
752
};
753
754
// Sets mainviews height
755
var setViewHeight = function (height) {
756
var currViewHeight;
757
758
Array.prototype.forEach.call(params.viewsHeight, function (
759
viewHeight,
760
viewNbr
761
) {
762
currViewHeight = parseInt(viewHeight, 10);
763
764
if (currViewHeight === 0) {
765
currViewHeight = height;
766
}
767
768
viewNbr++;
769
sel
770
.get(mainview_sel + ":nth-child(" + viewNbr + ")")
771
.css("height", currViewHeight + "px");
772
});
773
};
774
775
// Checks if viewsHeight array is valid
776
var isValidViewsHeightArray = function () {
777
Array.prototype.forEach.call(params.viewsHeight, function (viewHeight) {
778
if (isNaN(viewHeight) || parseInt(viewHeight, 10) < 0) {
779
return false;
780
}
781
});
782
783
return true;
784
};
785
786
// Adds own classes with subbag number
787
var addClassesForSubBags = function () {
788
sel.get(subbag_sel).each(function (subBagNbr) {
789
$(this).addClass(subbag_sel.replace(".", "") + "-" + subBagNbr);
790
});
791
};
792
793
// Adds wrappers for subbags (generates tag: <div style="..."'>subbag</div>
794
var addWrappersForSubBags = function () {
795
sel
796
.get(subbag_sel)
797
.wrap(
798
'<div style="overflow: hidden; height: 100%; width: 100%;"></div>'
799
);
800
};
801
802
// Sets dimension of mainbag includes rooms for menu right or left
803
var setStartDimension = function () {
804
params.fixedWidth === 0 ?
805
sel
806
.get(mainbag_sel)
807
.css(
808
"width",
809
sel.get(mainbag_sel).width() - params.spaceMainBag + "px"
810
) :
811
sel.get(mainbag_sel).css("width", params.fixedWidth + "px");
812
};
813
814
// Sets mainbag's position on absolute when its width is fixed
815
var setMainbagDimWhenFixed = function () {
816
if (params.fixedWidth > 0) {
817
sel.get(mainbag_sel).css({
818
position: "absolute"
819
});
820
}
821
};
822
823
// Sets active view (for fss-active class)
824
var setActiveView = function () {
825
sel
826
.get(mainbag_sel)
827
.find(sel.get(active_sel))
828
.each(function (viewNbr) {
829
if (viewNbr === 0) {
830
setHash($(this).attr("fss-anchor"));
831
}
832
});
833
};
834
835
// Shows next or prev subview
836
var showSubView = function (currBagNbr, dir) {
837
if (currBagNbr > -1) {
838
// Prevent views from scrolling when they are still animate
839
if (params.changeWhenAnim || (!params.changeWhenAnim && !isChanging)) {
840
changeView(allBagObjs[currBagNbr], "", false, false, dir);
841
}
842
}
843
};
844
845
// Shows next or prev mainview
846
var showMainView = function (dir) {
847
// Prevent views from scrolling when they are still animate
848
if (params.changeWhenAnim || (!params.changeWhenAnim && !isChanging)) {
849
changeView(allBagObjs[0], "", false, false, dir);
850
}
851
};
852
853
// Scrolls views on x or y axis - via jQuery
854
var animatejQuery = function (
855
elem,
856
viewPos,
857
isResize,
858
orientation,
859
callback
860
) {
861
if (orientation === "x") {
862
elem.stop().animate({
863
scrollLeft: viewPos
864
},
865
checkIfResize(params.animSpeedSubView, isResize),
866
params.animEffectSubView,
867
function () {
868
// Calls when jQuery animation is over
869
if (typeof callback === "function") {
870
callback();
871
}
872
}
873
);
874
} else {
875
elem.stop().animate({
876
scrollTop: viewPos
877
},
878
checkIfResize(params.animSpeedMainView, isResize),
879
params.animEffectMainView,
880
function () {
881
// Calls when jQuery animation is over
882
if (typeof callback === "function") {
883
callback();
884
}
885
}
886
);
887
}
888
};
889
890
// Shows specified view - this function manage of views change
891
var changeView = function (bagObj, viewName, isResize, isScroll, direction) {
892
var indexOfView;
893
var viewPosition;
894
var viewType;
895
var viewSelector;
896
var container;
897
var containerNbr;
898
var elem;
899
900
if (typeof direction !== "undefined") {
901
// Show next or previous view
902
viewName = bagObj.viewsData.views[getViewNbr(bagObj, direction)];
903
}
904
905
if (
906
bagObj.viewsData.views.length > 0 &&
907
typeof viewName !== "undefined"
908
) {
909
indexOfView = bagObj.viewsData.views.indexOf(viewName);
910
viewPosition = bagObj.viewsData.viewsPos[indexOfView];
911
viewType = bagObj.viewsData.bagType;
912
viewSelector = bagObj.viewsData.container;
913
scrollPos = 0;
914
915
if (
916
isStart ||
917
(byAnchor === false &&
918
((typeof isResize === "undefined" && isScroll === false) ||
919
(bagObj.viewsData.activeView !== viewName && isResize === false)))
920
) {
921
callFuncBeforeChange();
922
}
923
924
if (viewSelector === mainbag_sel) {
925
currentMainView = viewName.split("#")[1];
926
} else {
927
if (!isStart) {
928
if (!isResize && currentMainView !== viewSelector.split("|")[2]) {
929
byAnchor = true; // Informs that changing view is fired by anchor
930
changeView(
931
allBagObjs[0],
932
viewSelector.split("|")[3] + "#" + viewSelector.split("|")[2],
933
false,
934
false
935
); // Change view when anchor is changed
936
}
937
938
currentMainView = viewSelector.split("|")[2];
939
}
940
}
941
942
if (!isResize && !isStart) {
943
if (window.location.hash !== viewName.split("#")[1]) {
944
setHash(viewName.split("#")[1], true); // Also changes hash to the current view, ex. view-2
945
}
946
}
947
948
if (viewType === bagType.SUBBAG) {
949
container = viewSelector.split("|")[0];
950
containerNbr = viewSelector.split("|")[1];
951
viewSelector = sel.get(container + "-" + containerNbr); // Gets subbag container from the DOM
952
} else {
953
viewSelector = sel.get(viewSelector);
954
}
955
956
elem = viewSelector; // Get current view container
957
isChanging = true; // Prevent of scrolling views when they are still animate
958
959
if (viewType === bagType.SUBBAG) {
960
animatejQuery(elem.parent(), viewPosition, isResize, "x", function () {
961
animationDone(isScroll, bagObj, viewName);
962
});
963
} else {
964
if (!isScroll) {
965
unbindWheel();
966
}
967
968
unbindScroll();
969
animatejQuery(elem, viewPosition, isResize, "y", function () {
970
animationDone(isScroll, bagObj, viewName);
971
});
972
973
if (!params.useScrollbar) {
974
bindWheel();
975
}
976
}
977
978
if (!isStart) {
979
bagObj.viewsData.activeView = viewName; // Sets name of the current view, for example: 1#view-2
980
byAnchor = false;
981
}
982
}
983
};
984
985
// Calls when jQuery or CSS3 animation is over
986
var animationDone = function (isScroll, bagObj, viewName) {
987
callFuncAfterChange();
988
989
if (!params.useScrollbar && !isScroll) {} else {
990
stopHashEvent = false;
991
unbindResize();
992
recalcWindowHeight();
993
changeViewHeightOnMobileToolbar();
994
bindResize();
995
bindScroll();
996
}
997
998
isChanging = false; // Prevent of scrolling views when they are changing
999
isStart = false; // Clear hidden scrolling effect
1000
};
1001
1002
// Recalculates window height property
1003
var recalcWindowHeight = function () {
1004
if ($window.height() !== windowHeight) {
1005
onResize(false, false, false);
1006
windowHeight = $window.height();
1007
}
1008
};
1009
1010
// This code changes view's height if mobile browser is hiding/showing toolbar
1011
var changeViewHeightOnMobileToolbar = function () {
1012
if (allBagObjs[0].viewsData.viewsPos.length > 1) {
1013
if (
1014
correctHeight &&
1015
isMobile() &&
1016
$window.height() !==
1017
Math.abs(
1018
allBagObjs[0].viewsData.viewsPos[0] -
1019
allBagObjs[0].viewsData.viewsPos[1]
1020
)
1021
) {
1022
calcViewsDimensions();
1023
1024
for (
1025
var bagObjNbr = 0, len = allBagObjs.length; bagObjNbr < len; bagObjNbr++
1026
) {
1027
calcViewsPos(allBagObjs[bagObjNbr]);
1028
changeView(
1029
allBagObjs[bagObjNbr],
1030
allBagObjs[bagObjNbr].viewsData.activeView,
1031
true
1032
);
1033
}
1034
}
1035
}
1036
};
1037
1038
// Calls function before change view
1039
var callFuncBeforeChange = function () {
1040
var stop = false;
1041
1042
if (typeof params.beforeChange === "function") {
1043
stop = params.beforeChange();
1044
}
1045
1046
times++;
1047
1048
if (stop) {
1049
// Stop changing views if beforeChange function returns false
1050
return false;
1051
}
1052
};
1053
1054
// Calls function after change view
1055
var callFuncAfterChange = function () {
1056
if (times > 0) {
1057
if (typeof params.afterChange === "function") {
1058
params.afterChange();
1059
}
1060
1061
times -= 1; // This variable counts how many beforeChange callback has been invoked
1062
}
1063
};
1064
1065
// ----------------------------------------
1066
// START REGION EVENTS
1067
// ----------------------------------------
1068
1069
// Adds click event to all anchors with 'fss-anchor' class declared
1070
var bindAnchor = function () {
1071
// If user click on this element, application will search for id of the anchor among all views inside all bag objects and for this id change view
1072
sel.get(anchor_sel).on("click", onAnchor);
1073
};
1074
1075
// Sets anchor
1076
var onAnchor = function (event) {
1077
var currHashId;
1078
var viewData;
1079
var id;
1080
1081
event.preventDefault();
1082
id = $(this)
1083
.attr("href")
1084
.replace("#", "");
1085
viewData = getViewDataForID(id);
1086
currHashId = window.location.hash.substr(1);
1087
1088
if (viewData && viewData.length > 0) {
1089
// Prevent of changing views when they are still animate
1090
if (
1091
params.changeWhenAnim ||
1092
(!params.changeWhenAnim && !isChanging) ||
1093
id !== currHashId
1094
) {
1095
setHash(id);
1096
}
1097
}
1098
};
1099
1100
// Adds hashchange event
1101
var bindHashChange = function () {
1102
$window.on("hashchange", changeViewOnHashChange);
1103
};
1104
1105
// Removes hashchange event
1106
var unbindHashChange = function () {
1107
$window.off("hashchange", changeViewOnHashChange);
1108
};
1109
1110
// Adds scroll event
1111
var bindScroll = function () {
1112
$window.on("scroll", onScroll);
1113
};
1114
1115
// Removes scroll event
1116
var unbindScroll = function () {
1117
$window.off("scroll", onScroll);
1118
};
1119
1120
// Scrolls the window
1121
var onScroll = function () {
1122
var idx;
1123
var go;
1124
var currPos;
1125
1126
// Sets hash name and the current view
1127
idx = calcViewPos(allBagObjs[0].viewsData.viewsPos); // Calculates which view is closer to the current scroll position
1128
clearTimeout(timeoutId);
1129
unbindHashChange();
1130
1131
if (
1132
window.location.hash !==
1133
"#" + allBagObjs[0].viewsData.views[idx].split("#")[1]
1134
) {
1135
setHash(allBagObjs[0].viewsData.views[idx].split("#")[1], false); // Sets the hash to the closests view
1136
allBagObjs[0].viewsData.activeView = allBagObjs[0].viewsData.views[idx]; // Sets current view on mainbag
1137
}
1138
1139
// Delays hash bind after hash change (there is very small timespan between hash change and hash bind)
1140
timeoutId = setTimeout(function () {
1141
bindHashChange();
1142
}, 10);
1143
1144
// Fire the scroll
1145
Array.prototype.forEach.call(timeouts, function (elem) {
1146
clearTimeout(elem);
1147
});
1148
1149
currPos = $window.scrollTop();
1150
timeouts.length = 0;
1151
timeouts.push(
1152
setTimeout(function () {
1153
if (params.fitToView) {
1154
// Let's scroll only when scrollTop position is other than current mainview's position
1155
go = true;
1156
1157
Array.prototype.forEach.call(
1158
allBagObjs[0].viewsData.viewsPos,
1159
function (elem) {
1160
if (elem === currPos) {
1161
go = false;
1162
}
1163
}
1164
);
1165
1166
if (go) {
1167
isStart = true;
1168
changeView(
1169
allBagObjs[0],
1170
allBagObjs[0].viewsData.activeView,
1171
false,
1172
false
1173
);
1174
}
1175
}
1176
}, params.timeToFit)
1177
);
1178
};
1179
1180
// Adds mousewheel event
1181
var bindWheel = function () {
1182
$window.on("mousewheel", onMouseWheel);
1183
};
1184
1185
// Removes mousewheel event
1186
var unbindWheel = function () {
1187
$window.off("mousewheel", onMouseWheel);
1188
};
1189
1190
// Changes view depending on the mouse wheel direction
1191
var onMouseWheel = function (event) {
1192
var wheelTime = Date.now();
1193
// Calculates time to prevent views from scrolling at the same time (especially on MAC OS)
1194
var timeDiff = wheelTime - startTime;
1195
startTime = wheelTime;
1196
1197
// Prevents views from scrolling when ctrl key is pressed and when the time diff is less than 50 ms
1198
if (!event.ctrlKey && timeDiff > 50) {
1199
event.deltaY < 0 ?
1200
showMainView(direction.NEXT) :
1201
showMainView(direction.PREV);
1202
}
1203
};
1204
1205
// Adds click event on elements with next or prev class
1206
var bindPrevNextClickEvent = function () {
1207
sel.get(subviewprev_sel).each(function (idx) {
1208
$(this).on("click", function () {
1209
currBagNbr = getCurrBagNbr();
1210
1211
if (currBagNbr > -1) {
1212
showSubView(currBagNbr, direction.PREV);
1213
}
1214
});
1215
});
1216
1217
sel.get(subviewnext_sel).each(function (idx) {
1218
$(this).on("click", function () {
1219
currBagNbr = getCurrBagNbr();
1220
1221
if (currBagNbr > -1) {
1222
showSubView(currBagNbr, direction.NEXT);
1223
}
1224
});
1225
});
1226
1227
sel.get(mainviewprev_sel).each(function (idx) {
1228
$(this).on("click", function () {
1229
showMainView(direction.PREV);
1230
});
1231
});
1232
1233
sel.get(mainviewnext_sel).each(function (idx) {
1234
$(this).on("click", function () {
1235
showMainView(direction.NEXT);
1236
});
1237
});
1238
};
1239
1240
// Adds touch event
1241
var bindTouch = function () {
1242
touchAttachEvents(window);
1243
};
1244
1245
// Adds resize event to the window selector
1246
var bindResize = function () {
1247
$window.on("resize", onResize);
1248
};
1249
1250
// Adds resize event to the window selector
1251
var unbindResize = function () {
1252
$window.off("resize", onResize);
1253
};
1254
1255
// Changes view depending on the window size
1256
var onResize = function (e, isRoomChange, isCallback) {
1257
if (
1258
!isMobile() ||
1259
isRoomChange ||
1260
(isMobile() && isMobileOrientation())
1261
) {
1262
// Releases beforeEvent
1263
if (
1264
typeof params.beforeResize === "function" &&
1265
typeof isCallback === "undefined"
1266
) {
1267
params.beforeResize();
1268
}
1269
1270
// Recalculates dimension of each view
1271
calcViewsDimensions();
1272
1273
for (
1274
var bagObjNbr = 0, len = allBagObjs.length; bagObjNbr < len; bagObjNbr++
1275
) {
1276
calcViewsPos(allBagObjs[bagObjNbr]);
1277
changeView(
1278
allBagObjs[bagObjNbr],
1279
allBagObjs[bagObjNbr].viewsData.activeView,
1280
true
1281
);
1282
}
1283
1284
// Releases afterEvent
1285
if (
1286
typeof params.afterResize === "function" &&
1287
typeof isCallback === "undefined"
1288
) {
1289
params.afterResize();
1290
}
1291
}
1292
};
1293
1294
// Adds keyboard events
1295
var bindKeyboard = function () {
1296
$document.on("keydown", onKeyDown);
1297
};
1298
1299
// Removes keyboard event
1300
var unbindKeyboard = function () {
1301
$document.off("keydown", onKeyDown);
1302
};
1303
1304
// Changes views by keyboard
1305
var onKeyDown = function (e) {
1306
var UP_KEY_CODE = 38;
1307
var DOWN_KEY_CODE = 40;
1308
var LEFT_KEY_CODE = 37;
1309
var RIGHT_KEY_CODE = 39;
1310
var HOME_KEY_CODE = 36;
1311
var END_KEY_CODE = 35;
1312
var PAGEUP_KEY_CODE = 33;
1313
var PAGEDOWN_KEY_CODE = 34;
1314
var currBagNbr = 0;
1315
1316
var getKey = function (e) {
1317
if (window.event) {
1318
return e.keyCode; // IE
1319
} else if (e.which) {
1320
return e.which; // Firefox/Opera
1321
}
1322
};
1323
1324
var keynum = getKey(e);
1325
1326
// Gets the current view id from the URL
1327
currBagNbr = getCurrBagNbr();
1328
1329
if (params.useKeyboard) {
1330
switch (keynum) {
1331
case PAGEUP_KEY_CODE:
1332
case UP_KEY_CODE:
1333
if (!params.useScrollbar) {
1334
showMainView(direction.PREV);
1335
}
1336
break;
1337
case PAGEDOWN_KEY_CODE:
1338
case DOWN_KEY_CODE:
1339
if (!params.useScrollbar) {
1340
showMainView(direction.NEXT);
1341
}
1342
break;
1343
case RIGHT_KEY_CODE:
1344
if (currBagNbr === 0) currBagNbr = 1;
1345
if (currBagNbr > -1) {
1346
showSubView(currBagNbr, direction.NEXT);
1347
}
1348
break;
1349
case LEFT_KEY_CODE:
1350
if (currBagNbr === 0) currBagNbr = 1;
1351
if (currBagNbr > -1) {
1352
showSubView(currBagNbr, direction.PREV);
1353
}
1354
break;
1355
case HOME_KEY_CODE:
1356
if (!params.useScrollbar) {
1357
setHash(allBagObjs[0].viewsData.views[0].split("#")[1]);
1358
}
1359
break;
1360
case END_KEY_CODE:
1361
if (!params.useScrollbar) {
1362
setHash(
1363
allBagObjs[0].viewsData.views[
1364
allBagObjs[0].viewsData.views.length - 1
1365
].split("#")[1]
1366
);
1367
}
1368
break;
1369
}
1370
}
1371
};
1372
1373
// ----------------------------------------
1374
// START REGION TOUCHES
1375
// ----------------------------------------
1376
1377
var touchable;
1378
var touches = []; // Includes all touches vectors
1379
var posXGlobal = 0; // Contains pointer position on the x axis
1380
var posYGlobal = 0; // Contains pointer position on the y axis
1381
1382
// Cursor positions
1383
var cursorPos = {
1384
x: null,
1385
y: null
1386
};
1387
1388
// Checks if your browser support touches
1389
var isTouchDevice = function () {
1390
return (
1391
"ontouchstart" in window ||
1392
navigator.MaxTouchPoints > 0 ||
1393
navigator.msMaxTouchPoints > 0
1394
);
1395
};
1396
1397
// Binds touch events
1398
var touchAttachEvents = function (elem) {
1399
if (window.PointerEvent) {
1400
elem.addEventListener("pointermove", onCursorMove, false);
1401
}
1402
1403
if (touchable) {
1404
elem.addEventListener("touchstart", onTouchStart, false);
1405
elem.addEventListener("touchmove", onCursorMove, false);
1406
elem.addEventListener("touchend", onTouchEnd, false);
1407
}
1408
};
1409
1410
// Sets current touch position
1411
var touchesChange = function (event) {
1412
setPointerPosition(event);
1413
1414
return cursorPos.x + "|" + cursorPos.y;
1415
};
1416
1417
// Sets pointer position
1418
var setPointerPosition = function (event) {
1419
var touchesLength;
1420
1421
if (touchable) {
1422
touches = event.touches;
1423
1424
if (touches) {
1425
touchesLength = touches.length;
1426
1427
for (var touchNbr = 0; touchNbr < touchesLength; touchNbr++) {
1428
var touch = touches[touchNbr];
1429
cursorPos.x = getCursorPosX(touch);
1430
cursorPos.y = getCursorPosY(touch);
1431
}
1432
}
1433
} else {
1434
cursorPos.x = getCursorPosX(event);
1435
cursorPos.y = getCursorPosY(event);
1436
}
1437
};
1438
1439
// Gets coordinates of all touches
1440
var onTouchStart = function (event) {
1441
var pos = touchesChange(event).split("|");
1442
1443
posXGlobal = parseInt(pos[0], 10);
1444
posYGlobal = parseInt(pos[1], 10);
1445
};
1446
1447
// Changes views depending on touch direction
1448
var onTouchEnd = function (event) {
1449
var pos = touchesChange(event).split("|");
1450
var currBagNbr = 0;
1451
var stepX = stepViaX;
1452
var stepY = stepViaY;
1453
var afterPos0 = parseInt(pos[0], 10);
1454
var afterPos1 = parseInt(pos[1], 10);
1455
var beforePosXPrev = parseInt(posXGlobal + stepX, 10);
1456
var beforePosXNext = parseInt(posXGlobal - stepX, 10);
1457
var beforePosYPrev = parseInt(posYGlobal + stepY, 10);
1458
var beforePosYNext = parseInt(posYGlobal - stepY, 10);
1459
1460
// Checks which direction takes to scroll
1461
if (Math.abs(afterPos0 - posXGlobal) < Math.abs(afterPos1 - posYGlobal)) {
1462
// Scroll vertically
1463
if (afterPos1 > beforePosYPrev) {
1464
// Scroll page up
1465
if (!params.useScrollbar) {
1466
showMainView(direction.PREV);
1467
}
1468
} else if (afterPos1 < beforePosYNext) {
1469
// Scroll page down
1470
if (!params.useScrollbar) {
1471
showMainView(direction.NEXT);
1472
}
1473
}
1474
} else {
1475
// Scroll horizontally
1476
currBagNbr = getCurrBagNbr();
1477
1478
if (currBagNbr > -1) {
1479
if (afterPos0 > beforePosXPrev) {
1480
// Scroll page right
1481
showSubView(currBagNbr, direction.PREV);
1482
} else if (afterPos0 < beforePosXNext) {
1483
// Scroll page left
1484
showSubView(currBagNbr, direction.NEXT);
1485
}
1486
}
1487
}
1488
};
1489
1490
// Sets current cursor position
1491
var onCursorMove = function (event) {
1492
if (!params.useScrollbar) {
1493
event.preventDefault ?
1494
event.preventDefault() :
1495
(event.returnValue = false); // preventDefault - other than IE8, returnValue - IE8
1496
}
1497
1498
setPointerPosition(event);
1499
};
1500
1501
// Gets x cursor position
1502
var getCursorPosX = function (obj) {
1503
return obj.clientX;
1504
};
1505
1506
// Gets y cursor position
1507
var getCursorPosY = function (obj) {
1508
return obj.clientY;
1509
};
1510
1511
// ----------------------------------------
1512
// START INIT FUNCTION
1513
// ----------------------------------------
1514
1515
// Init function
1516
var init = function () {
1517
touchable = isTouchDevice();
1518
addIndexOf();
1519
addIncludes();
1520
setStartDimension();
1521
1522
addClassesForSubBags();
1523
addWrappersForSubBags();
1524
calcViewsDimensions();
1525
changeCssOnScrollbarVisible();
1526
createBagObjsForAllViews();
1527
1528
for (
1529
var bagObjNbr = 0, len = allBagObjs.length; bagObjNbr < len; bagObjNbr++
1530
) {
1531
calcViewsPos(allBagObjs[bagObjNbr]);
1532
}
1533
1534
// Corrects subviews position after first page load without any URL anchor and when the scrollbar is visible
1535
onResize(false, false, false);
1536
1537
// Checks if scrolling by wheel is not activated
1538
if (!params.useScrollbar) {
1539
bindWheel();
1540
}
1541
1542
setActiveView();
1543
// Sets appropriate view after page is loaded (based on hash name from URL)
1544
changeViewOnHashChange();
1545
bindAnchor();
1546
bindHashChange();
1547
bindScroll();
1548
bindResize();
1549
bindTouch();
1550
bindPrevNextClickEvent();
1551
1552
// Checks if changing of views by keyboard is activated
1553
if (params.useKeyboard) {
1554
bindKeyboard();
1555
}
1556
1557
setMainbagDimWhenFixed();
1558
};
1559
1560
// ----------------------------------------
1561
// START MAIN BAG OBJECT
1562
// ----------------------------------------
1563
1564
// Main bag object
1565
var bagObject = function () {
1566
// Views data
1567
var viewsData = {
1568
activeView: "", // Active view
1569
container: "", // Class name of the bag
1570
bagType: bagType.MAINBAG, // Type of bag (0 - mainbag or 1 - subbag) - important for scrolling
1571
views: [], // Names of views, for example: [0#view-1, 1#view-2. 2#view-3, 3#view-4, 4#view-5]
1572
viewsPos: [] // Positions of views
1573
};
1574
1575
// Sets bag object
1576
var setBagObj = function (container, viewList, bagType) {
1577
viewsData.container = container;
1578
viewsData.views = viewList;
1579
viewsData.bagType = bagType;
1580
viewsData.activeView = viewsData.views[0];
1581
};
1582
1583
return {
1584
setBagObj: setBagObj,
1585
viewsData: viewsData
1586
};
1587
};
1588
1589
init();
1590
};
1591
})(jQuery);
1592
1593
//JS EXTRACTED FROM site-galileosoft.js
1594
//Animação do Hamburger Button
1595
$(function () {
1596
$('.first-button').on('click', function () {
1597
1598
$('.animated-icon1').toggleClass('open');
1599
});
1600
$('.second-button').on('click', function () {
1601
1602
$('.animated-icon2').toggleClass('open');
1603
});
1604
$('.third-button').on('click', function () {
1605
1606
$('.animated-icon3').toggleClass('open');
1607
});
1608
});
1609
//Scripts para fazer o fadeOut e fadeIn dos slides de home-serviços (foi necessário criar duas functions separadas
1610
// devido a viewBase aparecer só uma vez, e mudar o navegador ao mudar de view)
1611
function trocaView(elementoQueSai, elementoQueEntra) { //Troca viewBase para viewCorpo
1612
$(elementoQueSai).addClass('fadeOut animated');
1613
$(elementoQueSai).on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() {
1614
$(elementoQueSai).addClass('hideSection');
1615
$(elementoQueSai).removeClass('fadeOut animated');
1616
$(elementoQueEntra).removeClass('hideSection');
1617
$(elementoQueEntra).addClass('fadeIn animated');
1618
$(elementoQueSai).off('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend');
1619
});
1620
$(elementoQueEntra).on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() {
1621
$(elementoQueSai).removeClass('fadeIn animated');
1622
$(elementoQueEntra).off('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend');
1623
});
1624
}
1625
function trocaServico(elementoQueSai, elementoQueEntra) { //Troca de serviço ativo dentro da viewCorpo
1626
if($(elementoQueEntra).hasClass('viewAtiva')===false){
1627
$(elementoQueSai).addClass('fadeOut animated');
1628
$(elementoQueSai).on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() {
1629
$(elementoQueSai).addClass('hideSection');
1630
$(elementoQueSai).removeClass('fadeOut animated viewAtiva');
1631
$(elementoQueEntra).removeClass('hideSection');
1632
$(elementoQueEntra).addClass('fadeIn animated viewAtiva');
1633
$(elementoQueSai).off('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend');
1634
});
1635
$(elementoQueEntra).on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() {
1636
$(elementoQueSai).removeClass('fadeIn animated');
1637
$(elementoQueEntra).off('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend');
1638
});
1639
}
1640
}
1641
//Envia Form Modal Contato
1642
function enviaFormModalContato() {
1643
var validado = 1;
1644
$("form#modalContato-form > div > input, form#modalContato-form > div > textarea").each(function () {
1645
if(this.value==""){
1646
toastr.error('Um campo obrigatório nao foi preenchido!', 'Confira se digitou seu Nome, Telefone e Mensagem');
1647
validado = 0;
1648
return false
1649
}
1650
});
1651
if (validado === 1){
1652
ShowLoader();
1653
var formData = $("#modalContato-form").serializeArray();
1654
var dataObj = {};
1655
$(formData).each(function(i, field){
1656
dataObj[field.name] = field.value;
1657
});
1658
dataObj["submit"] = 'ok';
1659
1660
$.ajax({
1661
type: "POST",
1662
url: "php/handlerModalForm.php",
1663
data: dataObj,
1664
dataType: "json",
1665
success: function (data) {
1666
if(data.tipo==="sucesso"){
1667
HideLoader();
1668
toastr.success(data.mensagem,data.titulo);
1669
}
1670
else{
1671
HideLoader();
1672
toastr.error(data.mensagem,data.titulo);
1673
}
1674
}
1675
});
1676
}
1677
}
1678
1679
//JS EXTRACTED FROM galileoJS.js
1680
//Ativa as animações em dispositivos de tela grande
1681
var largura = screen.width;
1682
if( largura >= 768 ){
1683
// Animations init
1684
new WOW().init();
1685
}
1686
//Faz os includes
1687
$(function(){
1688
var includes = $('[data-include]');
1689
jQuery.each(includes, function(){
1690
var file = $(this).data('include') + '.html';
1691
$(this).load(file);
1692
});
1693
1694
});
1695
//Verifica se os includes foram adicionados
1696
function checkInclude() {
1697
var checkInclude = document.getElementById('checkInclude');
1698
if(checkInclude){
1699
return true
1700
}
1701
else{
1702
return false
1703
}
1704
}
1705
//ScrolSpy da Navbar
1706
$(document).ready(function scrollSpy() {
1707
if(checkInclude() === true){
1708
var pagina = window.location.pathname;
1709
var start = pagina.lastIndexOf("/");
1710
var stop = pagina.lastIndexOf(".");
1711
if(pagina.substr(start+1,stop-start-1)==='') {
1712
$(document).ready(function () {
1713
$('#navbar-index').addClass('active');
1714
});
1715
}else{
1716
$(document).ready( function () {
1717
$('#navbar-' + pagina.substr(start + 1, stop - start - 1)).addClass('active');
1718
});
1719
}
1720
}
1721
else {
1722
setTimeout(scrollSpy,1);
1723
}
1724
});
1725
//ScrollToTop Navbar
1726
function scrollToTop() {
1727
$('body, html').animate({scrollTop: 0},1000);
1728
}
1729
//TODO futuramente passar um ID para scrollar até ele
1730
function scrollToSection() {
1731
var position = $('#navegacao-principal').height()-10;
1732
$('html, body').animate({
1733
scrollTop: position
1734
}, 1000)
1735
}
1736
//Padding Para a Navbar nao Sobrepor o Conteudo
1737
function setPadding() {
1738
var navbarHeight = $("#navbar-example").height();
1739
navbarHeight = navbarHeight + 26;
1740
$(".1stSection").css("padding-top",navbarHeight);
1741
// if(checkInclude() === true){
1742
//
1743
// }
1744
// else {
1745
// setTimeout(setPadding,1)
1746
// }
1747
}
1748
$(document).ready(setPadding());
1749
$(window).resize(function () {
1750
setPadding();
1751
});
1752
//Script para fazer o fadeOut e fadeIn dos slides
1753
function trocaSlide(elementoQueSai, elementoQueEntra) {
1754
$(elementoQueSai).addClass('zoomOut animated');
1755
$(elementoQueSai).on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() {
1756
$(elementoQueSai).addClass('hideSection');
1757
$(elementoQueSai).removeClass('zoomOut animated');
1758
$(elementoQueEntra).removeClass('hideSection');
1759
$(elementoQueEntra).addClass('zoomIn animated');
1760
$(elementoQueSai).off('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend');
1761
});
1762
$(elementoQueEntra).on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() {
1763
$(elementoQueSai).removeClass('zoomIn animated');
1764
$(elementoQueEntra).off('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend');
1765
});
1766
scrollToTop();
1767
}
1768
// Abre a modal de cursos com a Respectiva TAB ativa
1769
function escolheTabAtiva(nomeDaTab,nomeDaModal){
1770
var tabAtiva;
1771
var modalAtiva;
1772
var tabAtivaFinal;
1773
tabAtiva = document.getElementsByClassName(nomeDaTab);
1774
$(tabAtiva).addClass('active show');
1775
modalAtiva = document.getElementById(nomeDaModal);
1776
$(modalAtiva).on('hidden.bs.modal', function(){
1777
tabAtivaFinal = document.getElementsByClassName('active show');
1778
$(tabAtivaFinal).removeClass('active show');
1779
});
1780
}
1781
// Radio Card
1782
$("[data-card-type='radio-card']").on('click',function () {
1783
var cardGroup = $(this).attr("data-card-group");
1784
$("[data-card-group='"+cardGroup+"']:not(.radio-card-active) div.radio-card-icon").addClass('d-none').removeClass('active');
1785
$(this).addClass('radio-card-active');
1786
$("[data-card-group='"+cardGroup+"'].radio-card-active div.radio-card-icon").removeClass('d-none').addClass('active');
1787
$(this).removeClass('radio-card-active');
1788
});
1789
//Loader para Envio de Forms
1790
function ShowLoader() {
1791
var overlay = jQuery(
1792
'<div id="loading-overlay" style="position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(255, 255, 255, 0.6); z-index: 10000;">' +
1793
' <div style="text-align: center; width: 100%; position: absolute; top: 40%; margin-top: -50px;"> ' +
1794
' <div class="preloader-wrapper big active"> ' +
1795
' <div class="spinner-layer spinner-blue"> ' +
1796
' <div class="circle-clipper left"> ' +
1797
' <div class="circle"></div> ' +
1798
' </div>' +
1799
' <div class="gap-patch"> ' +
1800
' <div class="circle"></div> ' +
1801
' </div>' +
1802
' <div class="circle-clipper right"> ' +
1803
' <div class="circle"></div> ' +
1804
' </div> ' +
1805
' </div> ' +
1806
' <div class="spinner-layer spinner-red"> ' +
1807
' <div class="circle-clipper left"> ' +
1808
' <div class="circle"></div> ' +
1809
' </div>' +
1810
' <div class="gap-patch"> ' +
1811
' <div class="circle"></div> ' +
1812
' </div>' +
1813
' <div class="circle-clipper right"> ' +
1814
' <div class="circle"></div> ' +
1815
' </div> ' +
1816
' </div> ' +
1817
' <div class="spinner-layer spinner-yellow"> ' +
1818
' <div class="circle-clipper left"> ' +
1819
' <div class="circle"></div> ' +
1820
' </div>' +
1821
' <div class="gap-patch"> ' +
1822
' <div class="circle"></div> ' +
1823
' </div>' +
1824
' <div class="circle-clipper right"> ' +
1825
' <div class="circle"></div> ' +
1826
' </div> ' +
1827
' </div> ' +
1828
' <div class="spinner-layer spinner-green"> ' +
1829
' <div class="circle-clipper left"> ' +
1830
' <div class="circle"></div> ' +
1831
' </div>' +
1832
' <div class="gap-patch"> ' +
1833
' <div class="circle"></div> ' +
1834
' </div>' +
1835
' <div class="circle-clipper right"> ' +
1836
' <div class="circle"></div> ' +
1837
' </div> ' +
1838
' </div> ' +
1839
' </div> ' +
1840
' </div> ' +
1841
'</div>');
1842
overlay.appendTo(document.body);
1843
}
1844
function HideLoader() {
1845
$('#loading-overlay').remove();
1846
}
Console errors: 0