Your IP : 216.73.216.61


Current Path : /home/gonzalx/www/media/jw_sigpro/assets/js/
Upload File :
Current File : /home/gonzalx/www/media/jw_sigpro/assets/js/script.js

/**
 * @version    3.8.x
 * @package    Simple Image Gallery Pro
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2021 JoomlaWorks Ltd. All rights reserved.
 * @license    https://www.joomlaworks.net/license
 */

// Joomla Specific
// If we are in Joomla 1.5 define the functions for validation
if (typeof(Joomla) === 'undefined') {
    var Joomla = {};
    Joomla.submitbutton = function(pressbutton) {
        submitform(pressbutton);
    };
    Joomla.submitform = function(pressbutton) {
        submitform(pressbutton);
    };

    function submitbutton(pressbutton) {
        Joomla.submitbutton(pressbutton);
    }
}

function SigProGalleryAction(action) {
    Joomla.submitbutton(action);
    return false;
}

function SigProPagination(limit) {
    document.adminForm.limitstart.value = limit;
    Joomla.submitform();
    return false;
}

(function($) {
    // Cookies
    function createCookie(name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        } else {
            var expires = "";
        }
        document.cookie = name + "=" + value + expires + "; path=/";
    }

    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ')
                c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0)
                return c.substring(nameEQ.length, c.length);
        }
        return null;
    }

    function eraseCookie(name) {
        createCookie(name, "", -1);
    }

    // B/C - Use modal for "add" actions
    Joomla.submitbutton = function(pressbutton) {
        if (pressbutton === 'add') {
            $('#sigProModal').css('margin-left', '-' + ($('#sigProModal').outerWidth()) / 2 + 'px');
            window.scrollTo(0, 0);
            $('#sigProModal').animate({
                'top': '0'
            }, 'fast');
        } else {
            Joomla.submitform(pressbutton);
        }
    };

    /*
    // Open modal function
    window.openModal = function(id) {
        $(id).css('margin-left', '-' + ($(id).outerWidth()) / 2 + 'px');
        window.scrollTo(0, 0);
        $(id).animate({
            'top': '0'
        }, 'fast');
    }
    */

    // Close modal function
    function closeModal() {
        var height = $('#sigProModal').outerHeight() + 200;
        $('#sigProModal').animate({
            'top': '-' + height + 'px'
        }, 'fast');
    }

    // Select K2 item from modal
    window.k2ModalSelector = function(id, name, fid, fname, output) {
        $('input[name=newFolder]').val(id);
        closeModal();
        Joomla.submitform('create');
    }

    // Select K2 item from modal (for K2 v2.8.0 or earlier)
    window.jSelectItem = function(id, title, object) {
        $('input[name=newFolder]').val(id);
        closeModal();
        Joomla.submitform('create');
    }

    // Custom checkboxes
    function setupLabel() {
        // Checkbox variables
        var checkBox = ".sigCheckbox";
        var checkBoxInput = checkBox + " input[type='checkbox']";
        var checkBoxChecked = "sigChecked";
        var checkBoxDisabled = "sigDisabled";

        // Radio variables
        var radio = ".sigRadio";
        var radioInput = radio + " input[type='radio']";
        var radioOn = "sigChecked";
        var radioDisabled = "sigDisabled";

        // Checkboxes
        if ($(checkBoxInput).length) {
            $(checkBox).each(function() {
                $(this).removeClass(checkBoxChecked);
                $(this).parents('.sigProGalleryImage').removeClass('selectedImage');
                $(this).parents('.sigProGallery').removeClass('sigProSelectedGal');
            });
            $(checkBoxInput + ":checked").each(function() {
                $(this).parents(checkBox).addClass(checkBoxChecked);
                $(this).parents('.sigProGalleryImage').toggleClass('selectedImage');
                $(this).parents('.sigProGallery').toggleClass('sigProSelectedGal');
            });
            $(checkBoxInput + ":disabled").each(function() {
                $(this).parents(checkBox).addClass(checkBoxDisabled);
                $(this).parents('.sigProGalleryImage').toggleClass('selectedImage');
                $(this).parents('.sigProGallery').toggleClass('sigProSelectedGal');
            });
        }

        /*
        // Radios
        if ($(radioInput).length) {
            $(radio).each(function() {
                $(this).removeClass(radioOn);
            });
            $(radioInput + ":checked").each(function() {
                $(this).parent(radio).addClass(radioOn);
            });
            $(radioInput + ":disabled").each(function() {
                $(this).parent(radio).addClass(radioDisabled);
            });
        };
        */
    }

    // DOM ready
    $(document).ready(function() {

        // Browser detection
        if ((typeof($.browser) != 'undefined' && $.browser.msie) || (navigator.userAgent.indexOf("MSIE") != -1)) {
            var bodyBrowserClass = 'isIE isIE' + parseInt($.browser.version, 10);
            $('body').addClass(bodyBrowserClass);
        }

        // Set Joomla version as body class
        if ($('#sigPro').hasClass('J15')) { // J1.5
            $('body').addClass('isJVersion15');
        } else if ($('#sigPro').hasClass('J25')) { // J2.5
            $('body').addClass('isJVersion25');
        } else { // J3.x (assume latest)
            $('body').addClass('isJVersion30');
        }

        // Set body class for modals
        if ($('#sigPro').data('sigpro') == 'modal') {
            $('body').addClass('isModal');
        }

        // Append the correct Joomla version on the logo
        if ($('p[align="center"]').length) {
            var JVersionNum = $('#content-box + p[align="center"]').text();
            JVersionNum = JVersionNum.replace("Joomla! ", "");
            $('#border-top .logo').append('<span class="sigJVersionSmall">' + JVersionNum + '</span>');
        }

        // Auto-dismiss system messages after 3 seconds
        window.setTimeout(function() {
            if ($('#system-message').length > 0) {
                $('#system-message').fadeOut();
            }
            if ($('#system-message-container').length > 0) {
                $('#system-message-container').fadeOut();
            }
        }, 3000);

        // Custom checkboxes
        $("#sigPro").on("click", ".sigCheckbox", function() {
            setupLabel();
        });
        setupLabel();

        // Helper classes
        $('table.adminlist tr:even').find('td').addClass('tCellEven');
        $('table.adminlist tr:odd').find('td').addClass('tCellodd');

        $('.sigAnchor').click(function(e) {
            e.preventDefault();
            var target = $(this).attr('href');
            var top = $(target).offset().top - 200;
            $('html, body').animate({
                scrollTop: top
            }, 500);
        });

        // Cache selectors
        var lastId,
            topMenu = $(".sigSideNav"),
            topMenuHeight = topMenu.outerHeight() + 15,
            // All list items
            menuItems = topMenu.find("a"),
            // Anchors corresponding to menu items
            scrollItems = menuItems.map(function() {
                var item = $($(this).attr("href"));
                if (item.length) {
                    return item;
                }
            });

        // Bind to scroll
        $(window).scroll(function() {
            // Get container scroll position
            var fromTop = $(this).scrollTop() + topMenuHeight + 100;

            // Get the id of the currently scroll item
            var cur = scrollItems.map(function() {
                if ($(this).offset().top < fromTop)
                    return this;
            });
            // Get the id of the current element
            cur = cur[cur.length - 1];
            var id = cur && cur.length ? cur[0].id : "";

            if (lastId !== id) {
                lastId = id;
                // Set/remove active class
                menuItems.parent().removeClass('active').end().filter('[href="#' + id + '"]').parent().addClass('active');
            }
        });

        // Dynamically attach buttons to system messages
        $('#system-message > dd').append('<span class="sig-icon-cancel-squared sigIconDel" title="Close"><i class="hidden">Close</i></span>');

        // ...same for Joomla 3.x
        $('#system-message-container .alert').append('<span class="sig-icon-cancel-squared sigIconDel" title="Close"><i class="hidden">Close</i></span>');

        $('.sigIconDel').click(function() {
            $(this).parents('dd.message').remove();
            $(this).parents('.alert').remove();
        });

        // if there is more than one message show the mass close button
        if ($('#system-message dd').length > 1) {
            $('#system-message').append('<div class="sigCloseMsg sigTextRight">Close All<span class="sig-icon-cancel-squared sigIconDelAll" title="Close"></span></div>');
            $('.sigIconDelAll').click(function() {
                $('#system-message-container').remove();
            });
        }
        // ...same for Joomla 3.x
        if ($('#system-message-container .alert').length > 1) {
            $('#system-message-container').append('<div class="sigCloseMsg sigTextRight">Close All<span class="sig-icon-cancel-squared sigIconDelAll" title="Close"></span></div>');
            $('.sigIconDelAll').click(function() {
                $('#system-message-container').remove();
            });
        }

        // Prevent form submission using ENTER
        $('#adminForm').bind('keypress', function(event) {
            if (event.keyCode === 13) {
                return false;
            }
        });

        // Selecting Galleries
        $('.sigProGallery input[type="checkbox"]').click(function() {
            $(this).parent().parent().toggleClass('sigProSelectedGal');
        });

        // Multi Select Galleries ( mass Adding/Removing classes)
        $('#sigPro.sigProGalleries #jToggler').click(function() {
            if ($(this).is(':checked')) {
                $('.sigProGallery').removeClass('sigProSelectedGal');
                $('.sigProGallery').addClass('sigProSelectedGal');
                $('.sigCheckbox').removeClass('sigChecked');
                $('.sigCheckbox').addClass('sigChecked');
                $('.sigProGrid').addClass('sigPaddingTop');
            } else {
                $('.sigProGallery').removeClass('sigProSelectedGal');
                $('.sigCheckbox').removeClass('sigChecked');
                $('.sigProGrid').removeClass('sigPaddingTop');
            }
        });

        // Showing the lower area of the toolbar
        $('#sigPro').on("click", 'input[type="checkbox"]', function() {
            var n = $("#sigPro .sigProGridColumn input:checked").length;

            // show/hide the lower toolbar area
            if (n > 0) {
                $('.sigProLowerToolbar').show();
                $('#selectedCount').text(n);
                $('.sigProGrid').addClass('sigPaddingTop');

                // Proper language strings
                if (n === 1) {
                    $('#sigSel1').removeClass('hidden');
                    $('#sigSel2').addClass('hidden');
                } else {
                    $('#sigSel2').removeClass('hidden');
                    $('#sigSel1').addClass('hidden');
                }

                // Force close the sidebar if two or more are selected
                if (n > 1) {
                    if ($('#sigSideBar').hasClass('openSideBar')) {
                        $('#sigSideBar').removeClass('openSideBar');
                        $('.sigProGrid').removeClass('sideBarIsOpen');
                        $('.sigProToolbar').removeClass('sideBarIsOpen');
                    }
                }
            } else { // hide the toolbar if no checkbox is checked
                $('.sigProLowerToolbar').hide();
                $('.sigProGrid').removeClass('sigPaddingTop');
            }
        });

        // Drawer menu
        $('.sideToggler').click(function() {
            $('#sigSideBar').toggleClass('openSideBar');
            $('.sigSlidingItem').toggleClass('sideBarIsOpen');
            return false;
        });

        // AJAX validation when typing folder name
        $('#folder').bind('keyup change', function() {
            if (this.value != this.lastValue) {
                if (this.timer) {
                    clearTimeout(this.timer);
                }
                $('.sigProProceedButton').css('display', 'none');
                $('#sigProValidationStatus').val('');
                $('.sigProValidation').html(SIGProLanguage.checking).removeClass('sigProValidationFail').removeClass('sigProValidationSuccess').addClass('sigProValidationWorking');

                var url = 'index.php?option=com_sigpro&view=gallery&task=validate&type=' + $('input[name=type]').val() + '&folder=' + $(this).val() + '&format=json';

                if (this.value === '') {
                    $('.sigProValidation').html('').removeClass('sigProValidationWorking');
                    return;
                }
                this.timer = setTimeout(function() {
                    $.ajax({
                        url: url,
                        dataType: 'json',
                        type: 'get',
                        success: function(response) {
                            $('.sigProValidation').removeClass('sigProValidationWorking');
                            if (response.status === 1) {
                                $('.sigProValidation').addClass('sigProValidationSuccess');
                                $('.sigProProceedButton').fadeIn('fast');
                            } else {
                                $('.sigProValidation').addClass('sigProValidationFail');
                                $('.sigProProceedButton').css('display', 'none');
                            }
                            $('.sigProValidation').html(response.message);
                            $('#sigProValidationStatus').val(response.status);
                        }
                    });
                }, 500);
                this.lastValue = this.value;
            }
        });

        // Save new folder
        $('.sigProProceedButton').click(function(event) {
            event.preventDefault();
            closeModal();
            Joomla.submitbutton('create');
        });

        // Insert links events (when called by editor)
        var editor = $('input[name=editorName]').val();
        if (editor !== '') {
            $('.sigProInsertButton').click(function(event) {
                event.preventDefault();
                var gallery = $(this).data('path');
                var width = $('input[name=width]').val();
                var height = $('input[name=height]').val();
                var displayMode = $('select[name=displayMode]').val();
                var captionsMode = $('select[name=captionsMode]').val();
                var galleryLayout = $('select[name=galleryLayout]').val();
                var tag;
                if (width || height || displayMode || captionsMode || galleryLayout) {
                    tag = '{gallery}' + gallery + ':' + width + ':' + height + ':' + displayMode + ':' + captionsMode + '::' + galleryLayout + '{/gallery}';
                } else {
                    tag = '{gallery}' + gallery + '{/gallery}';
                }
                parent.jInsertEditorText(tag, editor);
                parent.SigProModalClose();
            });
        }

        // Aspect Ratio (Landscape)
        $('.sigViewLandscape').click(function(event) {
            event.preventDefault();
            $('.sigProGalleryImageLink').removeClass('sigPortrait');
            $('.sigProGalleryPreviewImage').removeClass('sigPortrait');

            // Toggle highlighted button
            $('.sigViewPortrait').removeClass('sigHighlighted');
            $(this).addClass('sigHighlighted');

            eraseCookie('sigRatio');
            createCookie('sigRatio', 'landscape', 30);
        });

        // Aspect Ratio (Portrait)
        $('.sigViewPortrait').click(function(event) {
            event.preventDefault();
            $('.sigProGalleryImageLink').addClass('sigPortrait');
            $('.sigProGalleryPreviewImage').addClass('sigPortrait');

            // Toggle highlighted button
            $('.sigViewLandscape').removeClass('sigHighlighted');
            $(this).addClass('sigHighlighted');

            eraseCookie('sigRatio');
            createCookie('sigRatio', 'portrait', 30);
        });

        // Output the correct ratio
        var ratioCookie = readCookie('sigRatio');
        if (ratioCookie === 'portrait') {
            $('.sigViewPortrait').trigger('click');
        }

        // Close modal event
        $('.sigProModalCloseButton').click(function(event) {
            event.preventDefault();
            closeModal();
        });

        // Gallery view. Uploader, delete and preview gallery image
        if ($("#sigProUploader").length > 0) {

            // Uploader
            var token = $('#adminForm input[type=hidden]:last').attr('name');
            var name = $('#adminForm input[name=folder]').val();
            var type = $('#adminForm input[name=type]').val();
            var iOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);

            $("#sigProUploader").pluploadQueue({
                runtimes: 'html5,html4',
                url: 'index.php?option=com_sigpro&view=gallery&task=upload&folder=' + name + '&type=' + type + '&' + token + '=1&format=raw',
                max_file_size: SIGProLanguage.uploadMaxFilesize,
                multiple_queues: true,
                filters: [{
                    title: SIGProLanguage.imgLabel,
                    extensions: 'jpg,jpeg,gif,png'
                }],
                unique_names: iOS,
                init: {
                    UploadComplete: function(uploader, files) {
                        $('.sigProGridColumn').each(function(index) {
                            if (index % 4 === 0) {
                                $(this).addClass('sigProGridFirstColumn');
                            }
                        });
                    },
                    FileUploaded: function(uploader, file, info) {
                        var response = $.parseJSON(info.response);
                        if (typeof response === 'undefined' || response === null) {
                            file.status = plupload.FAILED;
                            file.name = file.name + '<span class="sigProUploadFailed">' + SIGProLanguage.imgUploadFailed + '</span>';
                            uploader.trigger('QueueChanged');
                            return false;
                        }
                        if (response.status === 0) {
                            file.status = plupload.FAILED;
                            file.name = file.name + ' - ' + response.error;
                            uploader.trigger('QueueChanged');
                            return false;
                        }
                        $('#sigPro').removeClass('sigProGalleryEmpty');
                        var element = $('#sigProImageTemplate').clone();
                        element.attr('id', 'sigProImage_' + file.name);
                        element.find('.sigProImageContainer a').attr('href', response.path).attr('title', response.path).addClass('sigProPreviewButton');
                        element.find('.sigProDeleteButton').attr('href', response.name);
                        element.find('.sigProGalleryPreviewImage').css("background-image", "url(" + response.url + ")");
                        element.find('input.sigProFilename').val(response.name);
                        element.find('input[name="image[]"]').val(response.name);
                        element.find('.sigProImageNameValue').html(response.name);
                        element.find('.sigProImageSizeValue').html(response.size);
                        element.find('.sigProImageDimensionsValue').html(response.width + ' x ' + response.height);
                        $('.sigProGrid').append(element);
                        $('a.sigProPreviewButton').unbind('click');
                    }
                }
            });

            // Delete image
            $('#sigPro').on('click', '.sigProDeleteButton', function(event) {
                event.preventDefault();
                var answer = confirm(SIGProLanguage.imgDeleteWarning);
                if (answer) {
                    var container = $(this).parents('.sigProGalleryImage');
                    $('input[name=task]').val('delete');
                    $('input[name=file]').val($(this).attr('href'));
                    var form = $('#adminForm');
                    $.post(form.attr('action'), form.serialize() + '&format=raw', function(response) {
                        $('input[name=file]').val('');
                        if (response.status) {
                            $(container).fadeOut('slow', function() {
                                $(container).remove();
                                $('a.sigProPreviewButton').unbind('click');
                                if ($('.sigProGridColumn').length > 1) {
                                    $('.sigProGridColumn').removeClass('sigProGridFirstColumn');
                                    $('.sigProGridColumn').each(function(index) {
                                        if (index % 4 === 0) {
                                            $(this).addClass('sigProGridFirstColumn');
                                        }
                                    });
                                } else {
                                    $('#sigPro').addClass('sigProGalleryEmpty');
                                }

                            });
                        } else {
                            alert(response.message);
                        }
                    }, 'json');
                }
            });

            // Language for labels
            $('#sigLang').change(function(event) {
                event.preventDefault();
                var url = 'index.php?option=com_sigpro&view=gallery&folder=' + $('input[name=folder]').val() + '&sigLang=' + $(this).val() + '&type=' + $('input[name=type]').val() + '&tmpl=' + $('input[name=tmpl]').val() + '&editorName=' + $('input[name=editorName]').val();
                var template = $('input[name=template]').val();
                if (template) {
                    var redirect = url + '&template=' + template;
                } else {
                    var redirect = url;
                }
                window.location = redirect;
            });
        }
    });
})(jQuery);