PageSourceSearch

https://brainmap.biz/js/main.js

js brainmap.biz collected 2026-10-02 01:18:29 UTC 23,731 bytes, 573 lines download raw bytes

1/*
2
3[Main Script]
4
5Project     : CloudSky - Multipurpose Domain, Hosting and WHMCS Template
6Version     : 1.5
7Author      : ThemeLooks
8Author URI  : https://themeforest.net/user/themelooks
9
10*/
11
12;(function ($) {
13    'use strict';
14
15    /* ------------------------------------------------------------------------- *
16     * COMMON VARIABLES
17     * ------------------------------------------------------------------------- */
18    var $wn = $(window),
19        $document = $(document),
20        $body = $('body'),
21        isRTL = $('html').attr('dir') === 'rtl' ? true : false;
22
23    /* ------------------------------------------------------------------------- *
24     * CHECK DATA
25     * ------------------------------------------------------------------------- */
26    var checkData = function (data, value) {
27        return typeof data === 'undefined' ? value : data;
28    };
29
30    $(function () {
31        /* ------------------------------------------------------------------------- *
32         * BACKGROUND IMAGE
33         * ------------------------------------------------------------------------- */
34        var $bgImg = $('[data-bg-img]');
35
36        $bgImg.css('background-image', function () {
37            return 'url("' + $(this).data('bg-img') + '")';
38        }).addClass('bg--img').removeAttr('data-bg-img').attr('data-rjs', 2);
39
40        /* ------------------------------------------------------------------------- *
41         * RETINAJS
42         * ------------------------------------------------------------------------- */
43        $('img').attr('data-rjs', 2);
44
45        retinajs();
46
47        /* ------------------------------------------------------------------------- *
48         * STICKY
49         * ------------------------------------------------------------------------- */
50        var $sticky = $('[data-trigger="sticky"]');
51
52        $sticky.each(function () {
53            $sticky.sticky({
54                zIndex: 999
55            });
56        });
57
58        /* ------------------------------------------------------------------------- *
59         * FORM VALIDATION
60         * ------------------------------------------------------------------------- */
61        var $formValidation = $('[data-form="validate"]');
62
63        $formValidation.each(function () {
64            var $t = $(this);
65
66            $t.validate({
67                errorPlacement: function () {
68                    return true;
69                }
70            });
71        });
72
73        /* ------------------------------------------------------------------------- *
74         * AJAX FORM
75         * ------------------------------------------------------------------------- */
76        var $ajaxForm = $('[data-form="ajax"]');
77
78        $ajaxForm.each(function () {
79            var $form = $(this),
80                $formStatus = $form.find('.status');
81
82            $form.validate({
83                errorPlacement: function () {
84                    return true;
85                },
86                submitHandler: function (el) {
87                    var $form = $(el),
88                        formUrl = $form.attr('action'),
89                        formData = $form.serialize();
90
91                    $.post(formUrl, formData, function (res) {
92                        $formStatus.show().html(res).delay(3000).fadeOut('show');
93                    });
94                }
95            });
96        });
97
98        /* ------------------------------------------------------------------------- *
99         * COUNTER UP
100         * ------------------------------------------------------------------------- */
101        var $counterUp = $('[data-trigger="counterUp"]');
102
103        if ( $counterUp.length ) {
104            $counterUp.counterUp({
105                delay: 10,
106                time: 1000
107            });
108        }
109
110        /* -------------------------------------------------------------------------*
111         * COUNTDOWN
112         * -------------------------------------------------------------------------*/
113        var $countDown = $('[data-countdown]');
114
115        $countDown.each(function () {
116            var $t = $(this);
117
118            $t.countdown($t.data('countdown'), function(e) {
119                $(this).html( '<ul>' + e.strftime('<li><strong>%D</strong><span>Days</span></li><li><strong>%H</strong><span>Hours</span></li><li><strong>%M</strong><span>Minutes</span></li><li><strong>%S</strong><span>Secounds</span></li>') + '</ul>' );
120            });
121        });
122
123        /* ------------------------------------------------------------------------- *
124         * ZOOM IMAGE
125         * ------------------------------------------------------------------------- */
126        var $zoomImg = $('[data-trigger="zoom"]');
127
128        if ( $zoomImg.length ) {
129            $zoomImg.zoom();
130        }
131
132        /* ------------------------------------------------------------------------- *
133         * SPINNER
134         * ------------------------------------------------------------------------- */
135        var $spinner = $('[data-trigger="spinner"]');
136
137        if ( $spinner.length ) {
138            $spinner.spinner();
139        }
140
141        /* ------------------------------------------------------------------------- *
142         * PRODUCTS SECTION
143         * ------------------------------------------------------------------------- */
144        var $productRatingSelect = $('#productRatingSelect');
145
146        if ( $productRatingSelect.length ) {
147            $productRatingSelect.barrating({
148                theme: 'fontawesome-stars-o',
149                hoverState: false
150            });
151        }
152
153        var $productImgGallery = $('.product--img-gallery');
154
155        $productImgGallery.on('shown.bs.tab', '[data-toggle="tab"]', function () {
156            var $t = $(this);
157
158            $t.parents('.owl-carousel').find('a').removeClass('current');
159            $t.addClass('current');
160        });
161
162        /* ------------------------------------------------------------------------- *
163         * CART SECTION
164         * ------------------------------------------------------------------------- */
165        var $cartItems = $('.cart--items');
166
167        $cartItems.on('click', '.remove', function (e) {
168            e.preventDefault();
169
170            e.$el = $(this);
171            e.$parents = e.$el.parent('td').parent('tr');
172
173            e.$el.fadeOut(function () {
174                if ( e.$parents.index() === 0 && e.$parents.next().length === 0 ) {
175                    e.$parents.html('<td colspan="6" class="empty">No products in cart.</td>');
176                } else {
177                    e.$parents.remove();
178                }
179            });
180        });
181
182        /* ------------------------------------------------------------------------- *
183         * CHECKOUT SECTION
184         * ------------------------------------------------------------------------- */
185        var $checkoutPayment = $('#checkoutPayment');
186
187        $checkoutPayment.on('click', '[data-toggle="collapse"]', function (e) {
188            if ( !$(this).hasClass('collapsed') ) {
189                e.stopPropagation();
190            }
191        });
192
193        /* ------------------------------------------------------------------------- *
194         * OWL CAROUSEL
195         * ------------------------------------------------------------------------- */
196        var $owlCarousel = $('.owl-carousel');
197
198        $owlCarousel.each(function () {
199            var $t = $(this);
200
201            $t.owlCarousel({
202                rtl: isRTL,
203                items: checkData( $t.data('owl-items'), 1 ),
204                margin: checkData( $t.data('owl-margin'), 0 ),
205                loop: checkData( $t.data('owl-loop'), true ),
206                autoplay: checkData( $t.data('owl-autoplay'), true ),
207                smartSpeed: checkData( $t.data('owl-speed'), 2500 ),
208                autoplaySpeed: checkData( $t.data('owl-speed'), 2500 ),
209                mouseDrag: checkData( $t.data('owl-drag'), true ),
210                nav: checkData( $t.data('owl-nav'), false ),
211                navText: ['<i class="fa fa-angle-left"></i>', '<i class="fa fa-angle-right"></i>'],
212                dots: checkData( $t.data('owl-dots'), false ),
213                responsive: checkData( $t.data('owl-responsive'), {} )
214            });
215        });
216
217        /* ------------------------------------------------------------------------- *
218         * DROPDOWN MENU
219         * ------------------------------------------------------------------------- */
220        var $dropdownMenu = $('.dropdown-menu');
221
222        $dropdownMenu.on('click', '.dropdown-toggle', function (e) {
223            e.stopPropagation();
224            e.preventDefault();
225
226            $(this).parent('.dropdown').toggleClass('open').siblings().removeClass('open');
227        });
228
229        /* ------------------------------------------------------------------------- *
230         * HEADER SECTION
231         * ------------------------------------------------------------------------- */
232        var $header = $('.header--section'),
233            headerAdjust = function () {
234                $header.next().css('padding-top', function (i, value) {
235                    var $t = $(this),
236                        data = $t.data('padding-top');
237
238                    if ( typeof data === 'undefined' ) {
239                        $t.data('padding-top', value);
240                        value = parseInt( value, 10 ) + $header.outerHeight();
241                    } else {
242                        value = data + $header.outerHeight();
243                    }
244
245                    return value;
246                });
247            };
248
249        headerAdjust();
250        $wn.on('resize', headerAdjust);
251
252        /* ------------------------------------------------------------------------- *
253         * BANNER SECTION
254         * ------------------------------------------------------------------------- */
255        var $banner = $('.banner--section'),
256            bannerHeight = function () {
257                $banner.css('height', function (wn, bn) {
258                    wn = $wn.outerHeight();
259                    bn = parseInt( bn, 10 );
260
261                    return wn > bn ? wn : bn;
262                });
263            },
264            $bannerItem = $('.banner--item'),
265            bannerItemHeight = function () {
266                $bannerItem.css( 'padding-top', $banner.css('padding-top') );
267                $banner.css( 'padding-top', 0 );
268            };
269
270        bannerHeight();
271        $wn.on('resize', bannerHeight);
272
273        bannerItemHeight();
274        $wn.on('resize', bannerItemHeight);
275
276        window.mobilecheck = function () {
277            var check = false;
278            (function (a) {
279                if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true;
280            })(navigator.userAgent || navigator.vendor || window.opera);
281            return check;
282        };
283        let is_mobile = mobilecheck();
284
285        if (is_mobile) {
286            //$banner.css('height', $wn.outerHeight() - 1000);
287        }
288
289        /* ------------------------------------------------------------------------- *
290         * FAQ SECTION
291         * ------------------------------------------------------------------------- */
292        var $faqItems = $('.faq--items');
293
294        $faqItems.on('click', '[data-toggle="collapse"]', function () {
295            return !$(this).hasClass('collapsed') ? false : '';
296        });
297
298        /* ------------------------------------------------------------------------- *
299         * PRICING SECTION
300         * ------------------------------------------------------------------------- */
301        var $pricingItem = $('.pricing--item');
302
303        $pricingItem.css('margin-top', function () {
304            var $t = $(this), $parent;
305
306            if ( $t.children('.features').is(':first-child') ) {
307                $parent = $t.parent();
308
309                $t.addClass('pricing--heading');
310                $parent.parent().addClass('features--striped');
311
312                return $parent.siblings().find('.features').position().top - 20;
313            }
314        });
315
316        /* ------------------------------------------------------------------------- *
317         * VPS PRICING SECTION
318         * ------------------------------------------------------------------------- */
319        var $vpsPricingSlider = $('.vps--pricing-slider'),
320            $vpsPricingSliderHandle = $vpsPricingSlider.children('.ui-slider-handle'),
321            $vpsPricingFeatureValue = $('.vps--pricing-feature-value'),
322            $vpsPricingPrice = $('.vps--pricing-price span'),
323            $vpsPricingPriceM = $vpsPricingPrice.next(),
324            $vpsPricingOrder = $('.vps--pricing-action .order'),
325            $vpsPricingView = $('.vps--pricing-action .view'),
326            changingVpsPlans;
327
328        changingVpsPlans = function ( res, indx ) {
329            $vpsPricingFeatureValue.empty();
330
331            for ( var i = 0; i < $vpsPricingFeatureValue.length; i++ ) {
332                $vpsPricingFeatureValue.eq(i).text( res[ indx ][1][i] );
333            }
334
335            $vpsPricingSliderHandle.html( '<span>' + res[ indx ][0] + '</span>' );
336
337            $vpsPricingPrice.text( res[ indx ][2] );
338            $vpsPricingPriceM.text( res[ indx ][3] );
339            $vpsPricingOrder.attr( 'href', res[ indx ][4] );
340            $vpsPricingView.attr( 'href', res[ indx ][5] );
341        };
342
343        if ( $vpsPricingSlider.length ) {
344            $.getJSON('json/vps-plans.json', function (res) {
345                var vpsData = res;
346
347                $vpsPricingSlider.slider({
348                    range: 'min',
349                    min: 0,
350                    max: vpsData.vps_plans.length - 1,
351                    step: 1,
352                    value: vpsData.vps_default_plan,
353                    create: function () {
354                        changingVpsPlans( vpsData.vps_plans, 1 );
355                    },
356                    slide: function (e, ui) {
357                        changingVpsPlans( vpsData.vps_plans, ui.value );
358                    }
359                });
360            });
361        }
362
363        $vpsPricingSlider.siblings('.ui-slider-nav').on('click', function () {
364            var $t = $(this),
365                value = $vpsPricingSlider.slider('value');
366
367            if ( $t.hasClass('ui-slider-next') ) {
368                value++;
369            } else {
370                value--;
371            }
372
373            $vpsPricingSlider.slider('value', value);
374        });
375
376        /* ------------------------------------------------------------------------- *
377         * MAP
378         * ------------------------------------------------------------------------- */
379        var $map = $('[data-trigger="map"]');
380
381        $.fn.initMap = function () {
382            var $el = this,
383                map;
384
385            if ( typeof google !== 'undefined' ) {
386                map = new google.maps.Map($el[0], {
387                    center: {lat: $el.data('map-latitude'), lng: $el.data('map-longitude')},
388                    zoom: $el.data('map-zoom'),
389                    scrollwheel: false,
390                    disableDefaultUI: true,
391                    zoomControl: true
392                });
393
394                if ( typeof $el.data('map-marker') !== 'undefined' ) {
395                    var data = $el.data('map-marker'),
396                        i = 0;
397
398                    for ( i; i < data.length; i++ ) {
399                        new google.maps.Marker({
400                            position: {lat: data[i][0], lng: data[i][1]},
401                            map: map,
402                            animation: google.maps.Animation.DROP,
403                            draggable: true
404                        });
405                    }
406                }
407            }
408        };
409
410        $map.each(function () {
411            $(this).css('min-height', '350px').initMap();
412        });
413
414        /* ------------------------------------------------------------------------- *
415         * COOKIE
416         * ------------------------------------------------------------------------- */
417        var $cookieNotify = $('#cookieNotify'),
418            cookieNotifyString = document.cookie,
419            cookieNotifyRegex = new RegExp('cookieNotify');
420
421        if ( $cookieNotify.length && !cookieNotifyRegex.test(cookieNotifyString) ) {
422            $cookieNotify.removeClass('hidden');
423        }
424
425        $cookieNotify.on('click', '[data-dismiss]', function (e) {
426            e.stopPropagation();
427            e.preventDefault();
428            $cookieNotify.slideUp('slow');
429            document.cookie = 'cookieNotify=true';
430        });
431
432        /* ------------------------------------------------------------------------- *
433         * BACK TO TOP BUTTON
434         * ------------------------------------------------------------------------- */
435        var $backToTop = $('#backToTop');
436
437        $backToTop.on('click', 'a', function (e) {
438            e.preventDefault();
439
440            $('html, body').animate({
441                scrollTop: 0
442            }, 1200);
443        });
444
445        /* ------------------------------------------------------------------------- *
446         * COLOR SWITCHER
447         * ------------------------------------------------------------------------- */
448        if ( typeof $.cColorSwitcher !== "undefined" ) {
449            $.cColorSwitcher({
450                'switcherTitle': 'Main Colors',
451                'switcherColors': [{
452                    bgColor: '#ff5252',
453                    filepath: 'css/colors/theme-color-1.css'
454                }, {
455                    bgColor: '#82b440',
456                    filepath: 'css/colors/theme-color-2.css'
457                }, {
458                    bgColor: '#2683ff',
459                    filepath: 'css/colors/theme-color-3.css'
460                }, {
461                    bgColor: '#e91e63',
462                    filepath: 'css/colors/theme-color-4.css'
463                }, {
464                    bgColor: '#f69323',
465                    filepath: 'css/colors/theme-color-5.css'
466                }, {
467                    bgColor: '#ffcb1a',
468                    filepath: 'css/colors/theme-color-6.css'
469                }, {
470                    bgColor: '#00b249',
471                    filepath: 'css/colors/theme-color-7.css'
472                }, {
473                    bgColor: '#d48b91',
474                    filepath: 'css/colors/theme-color-8.css'
475                }, {
476                    bgColor: '#179ea8',
477                    filepath: 'css/colors/theme-color-9.css'
478                }, {
479                    bgColor: '#8cbeb2',
480                    filepath: 'css/colors/theme-color-10.css'
481                }],
482                'switcherTarget': $('#changeColorScheme')
483            });
484        }
485    });
486
487    $wn.on('load', function () {
488        /* ------------------------------------------------------------------------- *
489         * BODY SCROLLING
490         * ------------------------------------------------------------------------- */
491        var isBodyScrolling = function () {
492            if ( $wn.scrollTop() > 1 ) {
493                $body.addClass('isScrolling');
494            } else {
495                $body.removeClass('isScrolling');
496            }
497        };
498
499        isBodyScrolling();
500        $wn.on('scroll', isBodyScrolling);
501
502        /* ------------------------------------------------------------------------- *
503         * ADJUST ROW
504         * ------------------------------------------------------------------------- */
505        var $adjustRow = $('.AdjustRow');
506
507        if ( $adjustRow.length ) {
508            // $adjustRow.isotope({
509            //     originLeft: isRTL ? false : true,
510            //     layoutMode: 'fitRows'
511            // });
512        }
513
514        /* ------------------------------------------------------------------------- *
515         * GALLERY SECTION
516         * ------------------------------------------------------------------------- */
517        var $portfolioItems = $('.portfolio--items'),
518            $portfolioFilterMenu = $('.portfolio--filter-menu');
519
520        if ( $portfolioItems.length ) {
521            $portfolioItems.isotope({
522                animationEngine: 'best-available',
523                itemSelector: '.portfolio--item',
524                originLeft: isRTL ? false : true,
525                masonry: {
526                    columnWidth: '.portfolio--item'
527                }
528            });
529        }
530
531        $portfolioFilterMenu.on('click', 'li', function (e) {
532            e.preventDefault();
533
534            var $t = $(this),
535                f = $t.data('target'),
536                s = (f !== '*') ? '[data-cat~="'+ f +'"]' : f;
537
538            $portfolioItems.isotope({
539                filter: s
540            });
541
542            $t.addClass('active').siblings().removeClass('active');
543        });
544
545        /* ------------------------------------------------------------------------- *
546         * PRELOADER
547         * ------------------------------------------------------------------------- */
548        var $bodyPreloader = $('#preloader');
549
550        if ( $bodyPreloader.length ) {
551            $bodyPreloader.fadeOut('slow');
552        }
553
554        /* ------------------------------------------------------------------------- *
555         * SCROLLING ANIMATIONS
556         * ------------------------------------------------------------------------- */
557        var $scrollRevealGroup = $('[data-scroll-reveal="group"]'),
558            scrollReveal = '';
559
560        if ( typeof ScrollReveal === "function" ) {
561            scrollReveal = ScrollReveal();
562
563            scrollReveal.reveal('[data-scroll-reveal="left"]', {origin: 'left', mobile: false, duration: 8
56300})
564            scrollReveal.reveal('[data-scroll-reveal="right"]', {origin: 'right', mobile: false, duration: 800})
565            scrollReveal.reveal('[data-scroll-reveal="bottom"]', {duration: 800});
566
567            $scrollRevealGroup.each(function () {
568                scrollReveal.reveal($(this).children(), {duration: 800}, 150);
569            });
570        }
571    });
572
573})(jQuery);

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.