HEX
Server: Apache
System: Linux msm5694.mjhst.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: camjab_ssh (1000)
PHP: 5.3.29
Disabled: NONE
Upload Files
File: /home/httpd/html/freecam2.com/public_html/templates/default/js/main.js
(function () {
    "use strict";
    /**
     * Easy selector helper function
     */
    const select = (el, all = false) => {
        el = el.trim()
        if (all) {
            return [...document.querySelectorAll(el)]
        } else {
            return document.querySelector(el)
    }
    }

    /**
     * Easy event listener function
     */
    const on = (type, el, listener, all = false) => {
        let selectEl = select(el, all)
        if (selectEl) {
            if (all) {
                selectEl.forEach(e => e.addEventListener(type, listener))
            } else {
                selectEl.addEventListener(type, listener)
            }
    }
    }

    /**
     * Easy on scroll event listener
     */
    const onscroll = (el, listener) => {
        el.addEventListener('scroll', listener)
    }

    /**
     * Navbar links active state on scroll
     */
    let navbarlinks = select('#navbar .scrollto', true)
    const navbarlinksActive = () => {
        let position = window.scrollY + 200
        navbarlinks.forEach(navbarlink => {
            if (!navbarlink.hash)
                return
            let section = select(navbarlink.hash)
            if (!section)
                return
            if (position >= section.offsetTop && position <= (section.offsetTop + section.offsetHeight)) {
                navbarlink.classList.add('active')
            } else {
                navbarlink.classList.remove('active')
            }
        })
    }
    window.addEventListener('load', navbarlinksActive)
    onscroll(document, navbarlinksActive)

    /**
     * Scrolls to an element with header offset
     */
    const scrollto = (el) => {
        let header = select('header')
        let offset = header.offsetHeight

        let elementPos = select(el).offsetTop
        window.scrollTo({
            top: elementPos - offset,
            behavior: 'smooth'
        })
    }
    /**
     * Mobile nav toggle
     */


    /**
     * Mobile nav dropdowns activate
     */
    on('click', '.navbar .dropdown > a', function (e) {
        if (select('#navbar').classList.contains('navbar-mobile')) {
            e.preventDefault()
            this.nextElementSibling.classList.toggle('dropdown-active')
        }
    }, true)

    /**
     * Scroll with offset on links with a class name .scroll to
     */
    on('click', '.scrollto', function (e) {
        if (select(this.hash)) {
            e.preventDefault()

            let navbar = select('#navbar')
            if (navbar.classList.contains('navbar-mobile')) {
                navbar.classList.remove('navbar-mobile')
                let navbarToggle = select('.mobile-nav-toggle')
                navbarToggle.classList.toggle('bi-list')
                navbarToggle.classList.toggle('bi-x')
            }
            scrollto(this.hash)
        }
    }, true)
    /**
     * Toggle .header-scrolled class to #header when page is scrolled
     */
    let selectHeader = select('.header')
    if (selectHeader) {
        const headerScrolled = () => {
            if (window.scrollY > 100) {
                selectHeader.classList.add('header-scrolled')
            } else {
                selectHeader.classList.remove('header-scrolled')
            }
        }
        window.addEventListener('load', headerScrolled)
        onscroll(document, headerScrolled)
    }
    /**
     * Scroll with ofset on page load with hash links in the url
     */
    window.addEventListener('load', () => {
        if (window.location.hash) {
            if (select(window.location.hash)) {
                scrollto(window.location.hash)
            }
        }
    });
    /*load more
     $(document).ready(function () {
     $(".img-col").slice(0, 30).show();
     $("#loadMore").on("click", function (e) {
     e.preventDefault();
     $(".img-col:hidden").slice(0, 30).slideDown();
     if ($(".img-col:hidden").length == 0) {
     $("#loadMore").text("No Content").addClass("noContent");
     }
     });
     
     });*/
    $(document).ready(function () {
        $('.close-link').click(function (e) {
            e.preventDefault();
            $(this).parent('.side-link').remove(); // remove element which is being clicked
        });
    });

    function addFav() {
        $(document).on('click', '[data-mb="addFav"]', function (e) {
            e.preventDefault();

            var xhr,
                    _this = $(this),
                    site = _this.attr('data-site'),
                    model = _this.attr('data-model');

            if (xhr && xhr.readyState() !== 4) {
                xhr.abort();
            }

            xhr = $.ajax({
                url: "includes/inc.add_favorites.php",
                method: "POST",
                dataType: "html",
                data: {
                    site: site,
                    username: model
                },
                success: function (data) {
                    $('#addFavModal .modal-body').html(data);
                    var favModal = new bootstrap.Modal(document.getElementById('addFavModal'));
                    favModal.show();
                }
            });
        });
    }
    function remFav() {
        $(document).on('click', '[data-mb="remFav"]', function (e) {
            e.preventDefault();

            var xhr,
                    _this = $(this),
                    site = _this.attr('data-site'),
                    model = _this.attr('data-model');

            if (xhr && xhr.readyState() !== 4) {
                xhr.abort();
            }

            xhr = $.ajax({
                url: "../includes/inc.del_favorites.php",
                method: "POST",
                dataType: "html",
                data: {
                    site: site,
                    username: model
                },
                success: function (data) {
                    _this.parent().parent().remove();
                }
            });
        });
    }

    function rating() {
        $(document).on('click', '[data-mb="rate"]:not(.disabled)', function (e) {
            e.preventDefault();

            var xhr,
                    _this = $(this),
                    action = 'rating',
                    performer_site = _this.parent().data('site'),
                    performer_name = _this.parent().data('performer'),
                    rate = _this.attr('data-rate');

            if (xhr && xhr.readyState() !== 4) {
                xhr.abort();
            }

            xhr = $.ajax({
                url: "../includes/ajax.rating.php",
                method: "POST",
                dataType: "html",
                data: {
                    action: action,
                    performer_site: performer_site,
                    performer_name: performer_name,
                    rate: rate
                },
                success: function (data) {
                    var res = JSON.parse(data);
                    var info = res.message;
                    var title;
                    if (res.success === true) {
                        title = 'Success';
                        $('[data-rating="total"]').html(res.newRating + '%');
                        _this.addClass('active');
                        $('[data-mb="rate"]').addClass('disabled');
                    } else {
                        title = 'Error';
                    }
                    $('#infoModal .modal-title').html(title);
                    $('#infoModal .modal-body').html(info);
                    var infoModal = new bootstrap.Modal(document.getElementById('infoModal'));
                    infoModal.show();
                }
            });
        });
    }
    
    $(document).ready(function () {
        addFav();
        remFav();
        rating();
        if ($('.t-comments').length > 0) {
            mbComments();
        }
        
        $('.mobile-nav-toggle').click(function (e) {
            e.preventDefault();
            $('#navbar').toggleClass('navbar-mobile');
            $(this).find('i').toggleClass('bi-list');
            $(this).find('i').toggleClass('bi-x');
        });
        $('.show-categories').click(function (e) {
            e.preventDefault();
            $('#mobile-categories').toggleClass('list-container-mobile');
            $(this).toggleClass('bi-x');
            $('body').toggleClass('categories-open');
        });
    });



})()