# buttonizer-multifunctional-button/1.0.3/js/dashboard.js

Buttonizer – Floating Menus, Sticky Buttons, &amp; Popup Builder, version 1.0.3. 695 lines.

- Page: https://pluginprobe.com/plugins/buttonizer-multifunctional-button/1.0.3/code/js/dashboard.js
- Raw: https://pluginprobe.com/plugins/buttonizer-multifunctional-button/1.0.3/raw/js/dashboard.js
- Modified: 2017-09-01T12:26:28+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/buttonizer-multifunctional-button/1.0.3/code/js/dashboard.js#L10-L20`.

```javascript

var buttonizer = {
    settings: {
        wpButtonSaveKey: 'buttonizer_buttons',
        wpCategorySaveKey: 'buttonizer_page_categories',
        windowNumber: 0,
        hasChanges: false,
        clickedButton: false
    },

    setTimouts: {
        a: function() {
            return setTimeout(function() { }, 0)
        },
        b: function() {
            return setTimeout(function() { }, 0)
        },
    },

    init: function() {
        buttonizer.overwriteFavIcon();
        buttonizer.faInit();
        buttonizer.initButtons();

        // WP color picker
        jQuery('#button_unpushed').wpColorPicker();
        jQuery('#button_pushed').wpColorPicker();
        jQuery('#icon_color').wpColorPicker();

        jQuery(".savebutton").each(function() {
            jQuery(this).click(buttonizer.saveAnimation);
        });

        jQuery("input, textarea, select").change(function() {
            buttonizer.settings.hasChanges = true;
        });

        var iconImage = jQuery.wpMediaUploader({
            target : '.smartcat-uploader', // The class wrapping the textbox
            uploaderTitle : 'Select or upload image', // The title of the media upload popup
            uploaderButton : 'Set image', // the text of the button in the media upload popup
            multiple : false, // Allow the user to select multiple images
            buttonText : '<i class="fa fa-image"></i> <span>Upload image</span>', // The text of the upload button
            buttonClass : '.smartcat-upload', // the class of the upload button
            previewSize : '32px', // The preview image size
            modal : false, // is the upload button within a bootstrap modal ?
            buttonStyle : { // style the button

            },
        });

        setTimeout(function() {
            // Init preview button
            jQuery('.button-preview').css({
                'background-color': jQuery("#button_unpushed").val()
            });

            jQuery(".button-preview").hover(function() {
                jQuery(this).css({
                    'background-color': jQuery("#button_pushed").val()
                });
            }, function() {
                jQuery(this).css({
                    'background-color': jQuery("#button_unpushed").val()
                });
            });
        }, 500);

        // Remove the spam from other plugins
        setTimeout(function() {
            var foundOurContent = false;
            if(jQuery(".buttonizerWarning").length > 0) {
                foundOurContent = true;
                var buttonizerData = jQuery(".buttonizerWarning").html();
                var buttonizerStyle = jQuery(".buttonizerWarning").attr('class');
            }

            jQuery("#wordpress-plugin-message-spam").remove();

            if(foundOurContent) {
                jQuery(".nav-tab-wrapper").after('<div class="'+ buttonizerStyle +'">'+ buttonizerData +'</div>');
            }
        }, 1000);

        jQuery(".icon-or-image").each(function() {
            var type = jQuery(this).data("type");
            var currentContainer = jQuery(this);

            jQuery(this).find(".placeholder-choose a").click(function() {
                if(type == 'image') {
                    type = 'icon';

                    currentContainer.find(".image-placeholder").hide();
                    currentContainer.find(".icon-placeholder").show();

                    currentContainer.find("input").val("");
                }else {
                    type = 'image';

                    currentContainer.find(".image-placeholder").show();
                    currentContainer.find(".icon-placeholder").hide();
                }
            });
        });

        // Hash
        if(document.location.hash != "") {
            var tabKey = document.location.hash;
            buttonizer.tabNavigate(tabKey.replace("#tab_", ""));
        }

        jQuery(".buttonizer-click-to-pro").each(function() {
            jQuery(this).click(function(e) {
                e.preventDefault();
                buttonizer.proInfoWindow();
            });
        });

        buttonizer.loadPageCategorie();
    },

    proInfoWindow: function() {
        buttonizer.createWindow({
            title: 'You like Buttonizer?',
            text: '<p>Are you ready to try Buttonizer PRO?</p><p><b class="color-buttonizer">What do you get?</b></p>'+

            '<div class="color-buttonizer-blue buttonizer-pro-checklist"><i class="fa fa-check"></i> Show on opening hours</div>' +
            '<div class="color-buttonizer-orange buttonizer-pro-checklist"><i class="fa fa-check"></i> Show buttons on specific pages: Use page rules</div>' +
            '<div class="color-buttonizer-blue buttonizer-pro-checklist"><i class="fa fa-check"></i> Unlimited page rules</div>' +
            '<div class="color-buttonizer-orange buttonizer-pro-checklist"><i class="fa fa-check"></i> Add custom image or button-icon</div>' +
            '<div class="color-buttonizer-blue buttonizer-pro-checklist"><i class="fa fa-check"></i> Exit intend</div>' +
            '<div class="color-buttonizer-orange buttonizer-pro-checklist"><i class="fa fa-check"></i> Show on scroll</div>' +
            '<div class="color-buttonizer-blue buttonizer-pro-checklist"><i class="fa fa-check"></i> Show on timeout</div>' +
            '<br />' +
            '<p class="color-buttonizer text-right"><b>Do you <span><i class="fa fa-heart"></i></span> these features?</b></p>',
            closeText: 'Upgrade',
            callback: function() {
                document.location.href = 'admin.php?page=Buttonizer-pricing';
            }
        });
    },

    overwriteFavIcon: function() {
        (function() {
            var link = document.querySelector("link[rel*='icon']") || document.createElement('link');
            link.type = 'image/x-icon';
            link.rel = 'shortcut icon';
            link.href = faviconUrl;
            document.getElementsByTagName('head')[0].appendChild(link);
        })();
    },

    tabNavigate: function(key) {
        jQuery(".vertical-tabs .tab-container").each(function() {
            if(jQuery(this).attr('id') == "tab_container_" + key) {
                jQuery(this).show();
            }else{
                jQuery(this).hide();
            }
        });

        jQuery(".vertical-tabs .tabs a").each(function() {
            if(jQuery(this).attr('id') == "tab_container_" + key) {
                jQuery(this).addClass('nav-tab-active');
            }else{
                jQuery(this).removeClass('nav-tab-active');
            }
        });

        // jQuery("type[name=_wp_http_referer]").val();
    },

    loadPageCategorie: function() {
        jQuery(".page-categorie-styling").each(function() {
            var maxLoaded = 10;
            var isLoaded = 10;
            var table = jQuery(this);
            jQuery(this).addClass("initialized")

            table.find("tr").each(function() {
                jQuery(this).click(function(e) {
                    if(jQuery(e.target).attr("type") != "checkbox") {
                        jQuery(this).find("input").click();
                    }
                });
            });

            jQuery(".categories-load-more[data-id="+ jQuery(this).attr("data-id") +"]").click(function() {
                maxLoaded += 10;
                isLoaded = 0;


                table.find("tr").each(function() {
                    isLoaded++;
                    if(isLoaded <= maxLoaded) {
                        jQuery(this).show();
                    }else{
                        return;
                    }
                });

                if(jQuery(".page-categorie-styling[data-id="+ jQuery(this).attr("data-id") +"] tr").length < maxLoaded) {
                    jQuery(this).hide();
                }
            });
        });
    },

    saveAnimation: function() {
        jQuery(".savebutton").each(function() {
            jQuery(this).html('<i class="fa fa-cog fa-spin"></i> <span>Saving</span>');
        });
        buttonizer.settings.clickedButton = true;
        jQuery('form#buttonizer').submit();
    },

    /*
     * Buttons
     */
    initButtons: function() {
        jQuery(".button-row").each(function() {
            var rowObj = jQuery(this);
            var rowId = jQuery(this).attr("button-id")
            var buttonTitle = rowObj.find(".row-info span .row-title");
            var buttonEdit = rowObj.find(".row-info .pencil-edit");
            var buttonTitleField = rowObj.find(".button_title");
            var doubleClick = setTimeout(function() {}, 100);
            var isCategory = rowObj.hasClass('is_category');
            var clicked = 0;

            buttonEdit.click(function(e) {
                e.preventDefault();
                buttonTitle.dblclick();
            });

            buttonTitle.html(buttonTitleField.val());

            rowObj.find(".row-info").click(function(e) {

                if(
                    jQuery(e.target).hasClass('fa-desktop') ||
                    jQuery(e.target).hasClass('fa-mobile') ||
                    jQuery(e.target).hasClass('fa-pencil') ||
                    jQuery(e.target).hasClass('mobiledesktop')
                ) {
                    return;
                }

                clicked = 0;
                clearInterval(doubleClick);
                doubleClick = setTimeout(function() {
                    if(clicked == 0) {
                        if(rowObj.hasClass("opened")) {
                            rowObj.removeClass("opened");
                        }else{
                            rowObj.addClass("opened");
                        }
                    }
                    clicked = 0;
                }, 100);
            });

            buttonTitle.dblclick(function() {
                buttonizer.updateTitle(buttonTitle, buttonTitleField, false);

                clicked++;
            });

            rowObj.find(".button_showonphone").change(function(e) {
                var isSelected = jQuery(this).is(":checked");

                if(!isSelected) {
                    jQuery("#btn_row_" + rowId + " .row-info .mobile-button").addClass("selected");
                }else {
                    jQuery("#btn_row_" + rowId + " .row-info .mobile-button").removeClass("selected");
                }
            });

            rowObj.find('.button_title').change(function() {
                newTitle = jQuery(this).val();

                if(buttonizer.checkTitleDuplicate(newTitle, rowId)) {
                    buttonizer.updateTitle(buttonTitle, buttonTitleField, true, newTitle);
                    return;
                }

                buttonTitle.html(newTitle);
            });

            rowObj.find(".button_showondesktop").change(function(e) {
                var isSelected = jQuery(this).is(":checked");

                if(!isSelected) {
                    jQuery("#btn_row_" + rowId + " .row-info .desktop-button").addClass("selected");
                }else {
                    jQuery("#btn_row_" + rowId + " .row-info .desktop-button").removeClass("selected");
                }
            });

            jQuery("#button_"+ rowId +"_icon").change(function(e) {
                console.log("test");
                rowObj.find(".button-icon").attr('class', "fa "+ jQuery(this).val() +" button-icon");
            });

            if(isCategory) {
                var checked = false;
                rowObj.find(".select-all").click(function() {
                    if(!checked) {
                        checked = true;
                        rowObj.find(".page-categorie-styling input[type=checkbox]").attr("checked", "checked");
                    }else{
                        checked = false;
                        rowObj.find(".page-categorie-styling input[type=checkbox]").removeAttr("checked");
                    }
                });
            }
        });
    },

    updateTitle: function(buttonTitle, buttonTitleField, isDuplicate, text) {
        if(!text) {
            var text = '';
        }

        if(!isDuplicate) {
            var newTitle = prompt("You can change the title of the button.\n\nNote: The visitor won't see this text - for internal use only:", buttonTitleField.val());
        }else{
            var newTitle = prompt("You can change the title of the button.\n\nNote: The visitor won't see this text - for internal use only:\n\nWARNING: This name is already in use. Please change the name of the button. Duplicates are not allowed due Google Analytics event names.", text);
        }

        if(!newTitle || newTitle == "") {
            if(isDuplicate) {
                buttonTitleField.val(buttonTitle.html());
            }
            return;
        }

        if(buttonizer.checkTitleDuplicate(newTitle)) {
            buttonizer.updateTitle(buttonTitle, buttonTitleField, true, newTitle);
            return;
        }

        buttonTitle.html(newTitle);
        buttonTitleField.val(newTitle);
    },

    checkTitleDuplicate: function(text, allowRowId) {
        isDuplicate = false;
        if(!allowRowId) {
            var allowRowId = -1;
        }

        jQuery(".button-row").each(function() {
            if(jQuery(this).find('.button_title').val() == text && jQuery(this).attr("button-id") != allowRowId) {
                isDuplicate = true;
            }
        });

        return isDuplicate;
    },

    removeRow: function(id) {
        var buttonName = jQuery("#btn_row_" +id + " .row-info span .row-title").html();
        var wasCategory = jQuery("#btn_row_" + id).hasClass('is_category');

        if(confirm("Are you sure you want to remove the row with the text: '"+ buttonName +"'?\n\nThis is not recoverable.")) {
            jQuery("#btn_row_" +id).remove();

            if(jQuery(".button-row").length > 1) {
                jQuery(".buttonizer-no-buttons").hide();
            }else{
                jQuery(".buttonizer-no-buttons").show();
            }
        }
    },

    toggleMobile: function(id) {
        var isSelected = jQuery("#button_"+ id +"_show_on_phone").is(":checked");

        if(!isSelected) {
            jQuery("#btn_row_" + id + " .row-info .mobile-button").removeClass("selected");
            jQuery("#button_"+ id +"_show_on_phone").click();
        }else {
            jQuery("#btn_row_" + id + " .row-info .mobile-button").addClass("selected");
            jQuery("#button_"+ id +"_show_on_phone").click();
        }
    },

    toggleDesktop: function(id) {
        var isSelected = jQuery("#button_"+ id +"_show_on_desktop").is(":checked");

        if(!isSelected) {
            jQuery("#btn_row_" + id + " .row-info .desktop-button").removeClass("selected");
            jQuery("#button_"+ id +"_show_on_desktop").click();
        }else {
            jQuery("#btn_row_" + id + " .row-info .desktop-button").addClass("selected");
            jQuery("#button_"+ id +"_show_on_desktop").click();
        }
    },

    addRow: function() {
        if(jQuery("#new-button").hasClass('disabled')) {
            return;
        }
        jQuery(".buttonizer-no-buttons").hide();

        var isCategory = jQuery(".button-row[button-id=-1]").hasClass("is_category");

        jQuery("#new-button").attr('disabled', 'disabled').addClass('disabled');
        var defaultRow = jQuery(".button-row[button-id=-1]").html();
        var numberOfButtons = jQuery(".button-row").length - (isCategory ? 1 : 0);

        numberOfButtons = Math.floor(Date.now() / 1000);
        numberOfButtons = numberOfButtons + "-" + Math.floor((Math.random() * 999) + 100);
        numberOfButtons = numberOfButtons.replace('-', '');

        var newData = defaultRow.replace('/-1/g', numberOfButtons);
        newData = newData.replace('-1', numberOfButtons);

        jQuery("#button-rows, #page-categories").append('<div class="button-row ' + (isCategory ? 'is_category' : '') + '" id="btn_row_'+ numberOfButtons +'" button-id="'+ numberOfButtons +'">' + newData + '</div>');

        clearInterval(buttonizer.setTimouts.a);
        clearInterval(buttonizer.setTimouts.b);

        buttonizer.setTimouts.a = setTimeout(function() {
            jQuery(".button-row *").unbind("click");
            jQuery(".button-row").removeClass("opened");
            jQuery(".fontawesome-searcher-clicker").remove();
            jQuery("#btn_row_"+ numberOfButtons +" .button_title").val("New button " + numberOfButtons);

            if(isCategory) {
                jQuery("#btn_row_"+ numberOfButtons +" input").each(function() {
                    jQuery(this).attr("name", buttonizer.settings.wpCategorySaveKey + "[category_"+ numberOfButtons +"][]");
                });

                jQuery("#btn_row_"+ numberOfButtons + " select").attr("name", buttonizer.settings.wpCategorySaveKey + "[category_"+ numberOfButtons +"_type]");
            }
        }, 100);


        buttonizer.setTimouts.b = setTimeout(function() {
            buttonizer.initButtons();
            if(!isCategory) {
                buttonizer.updateRowInputNames(numberOfButtons);
                jQuery("#btn_row_"+ numberOfButtons).addClass('opened');
                jQuery("#btn_row_"+ numberOfButtons + " input.button_title").focus();
            }else{
                console.log("Initialize new page category");
                jQuery("#btn_row_"+ numberOfButtons + " #categoryIsUsed").val(numberOfButtons);
                jQuery("#btn_row_"+ numberOfButtons + " #categoryIsUsed").attr("name", buttonizer.settings.wpCategorySaveKey + '[categorieOrder][]');
                jQuery("#btn_row_"+ numberOfButtons + " .delete-button").attr("href", "javascript:buttonizer.removeRow("+ numberOfButtons +")");
                jQuery("#btn_row_"+ numberOfButtons + " .button_title").attr("name", buttonizer.settings.wpCategorySaveKey + "[category_"+ numberOfButtons +"_title]").val('New page category ' + (jQuery(".button-row").length - 1));
                jQuery("#btn_row_"+ numberOfButtons + " .row-title").html("New page category " + (jQuery(".button-row").length - 1));
            }
            buttonizer.faInit();
            buttonizer.loadPageCategorie();
            jQuery("#new-button").removeAttr('disabled').removeClass('disabled');
        }, 400);
    },

    updateRowInputNames: function(buttonId) {
        // Textfield
        jQuery("#btn_row_"+ buttonId + " .button_textfield")
            .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_text]")
            .attr("id", "button_"+ buttonId +"_text").val("");

        // Iconfield
        jQuery("#btn_row_"+ buttonId + " .button_iconfield").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_icon]");

        // Button title
        jQuery("#btn_row_"+ buttonId + " .button_title").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_title]");

        // Button show on page category
        jQuery("#btn_row_"+ buttonId + " #button_category").attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_show_on_pages]");

        // Show on phone
        jQuery("#btn_row_"+ buttonId + " .button_showonphone")
            .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_show_on_phone]")
            .attr("id", "button_"+ buttonId +"_show_on_phone");

        jQuery("label[for='button_"+ -1 +"_show_on_phone']").attr("for", "button_"+ buttonId +"_show_on_phone");

        // Show on desktop
        jQuery("#btn_row_"+ buttonId + " .button_showondesktop")
            .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_show_on_desktop]")
            .attr("id", "button_"+ buttonId +"_show_on_desktop");

        jQuery("label[for='button_"+ -1 +"_show_on_desktop']").attr("for", "button_"+ buttonId +"_show_on_desktop");

        // Url
        jQuery("#btn_row_"+ buttonId + " .button_isurl")
            .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_url]")
            .attr("id", "button_"+ buttonId +"_url");

        jQuery("label[for='button_"+ -1 +"_url']").attr("for", "button_"+ buttonId +"_url");

        // Is phone buttonId
        jQuery("#btn_row_"+ buttonId + " .button_isphonenumber")
            .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_is_phonenumber]")
            .attr("id", "button_"+ buttonId +"_is_phonenumber");

        jQuery("label[for='button_"+ -1 +"_is_phonenumber']").attr("for", "button_"+ buttonId +"_is_phonenumber");

        // New tab
        jQuery("#btn_row_"+ buttonId + " .button_isnewtab")
            .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_url_newtab]")
            .attr("id", "button_"+ buttonId +"_url_newtab");

        jQuery("label[for='button_"+ -1 +"_url_newtab']").attr("for", "button_"+ buttonId +"_url_newtab");


        // Show only on opening hours
        jQuery("#btn_row_"+ buttonId + " .button_showwhenopened")
            .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_show_when_opened]")
            .attr("id", "button_"+ buttonId +"_show_when_opened");

        jQuery("label[for='button_"+ -1 +"_show_when_opened']").attr("for", "button_"+ buttonId +"_show_when_opened");

        // Show only on opening hours
        jQuery("#btn_row_"+ buttonId + " .button_hidelabel")
            .attr("name", buttonizer.settings.wpButtonSaveKey + "[button_"+ buttonId +"_hide_label]")
            .attr("id", "button_"+ buttonId +"_hide_label");

        jQuery("label[for='button_"+ -1 +"_hide_label']").attr("for", "button_"+ buttonId +"_hide_label");

        /*
         * Link fixes
         */
        // Delete button link
        jQuery("#btn_row_"+ buttonId + " .delete-button").attr("href", "javascript:buttonizer.removeRow("+ buttonId +")");

        // Show on mobile button link
        jQuery("#btn_row_"+ buttonId + " .mobiledesktop.mobile-button").attr("href", "javascript:buttonizer.toggleMobile("+ buttonId +")");

        // Show on desktop button link
        jQuery("#btn_row_"+ buttonId + " .mobiledesktop.desktop-button").attr("href", "javascript:buttonizer.toggleDesktop("+ buttonId +")");
    },

    createWindow: function(data) {
        this.settings.windowNumber++;
        var currentWindow = this.settings.windowNumber;

        if(!data.title) {
            data.title = '';
        }

        if(!data.text) {
            data.text = '<p>This dialog has not text.</p><p>Weird, isn\'t it?</p>';
        }

        if(!data.closeText) {
            data.closeText = 'Close';
        }

        if(!data.callback) {
            data.callback = function() {};
        }

        var windowStyle = '<div class="fs-modal active" id="buttonizer-window-'+ currentWindow +'"><div class="fs-modal-dialog">';

            windowStyle += '<div class="fs-modal-header"><h4>'+ data.title +'</h4><a href="!#" class="fs-close"><i class="dashicons dashicons-no" title="Dismiss"></i></a></div>';

    		windowStyle += '<div class="fs-modal-body"><div class="fs-modal-panel active">';
                windowStyle += data.text;
            windowStyle += '</div></div>';

    		windowStyle += '<div class="fs-modal-footer"><button class="button button-primary" tabindex="3">'+ data.closeText +'</button></div>';

        windowStyle += '</div></div>';

        jQuery("body").append(windowStyle);

        jQuery("#buttonizer-window-"+ currentWindow + " .fs-close, #buttonizer-window-"+ currentWindow + " button").click(function(e) {
            e.preventDefault();
            jQuery("#buttonizer-window-"+ currentWindow).fadeOut();

            if(!jQuery(this).hasClass("fs-close")) {
                data.callback();
            }
        })
    },

    /*
     * Font awesome searcher
     */
    faSettings: {
        objects: 0,
        currentSelect: {},
        currentObject: {},
        isGenerated: false,
        isOpened: false
    },
    faInit: function() {
        buttonizer.faSettings.isOpened = false;

        if(buttonizer.faSettings.isGenerated == false) {
            buttonizer.faSettings.isGenerated = true;
            fontAwesome = jQuery.map(fontAwesome, function(value, index) {
                return [index];
            });
        }

        jQuery("body").click(function(e){
            if(!jQuery(e.target).closest('.fontawesome-searcher').length && !jQuery(e.target).closest('.fontawesome-searcher-clicker').length){
                jQuery(".fontawesome-searcher").hide();
                buttonizer.faSettings.isOpened = false;
            }
        });

        var typeTimeOut = setTimeout(function() { buttonizer.faSearchWord(''); }, 300);

        var adminBody = jQuery("#wpbody");

        jQuery(".fontawesome-searcher .fontawesome-searcher-searchbar input").keyup(function() {
            clearInterval(typeTimeOut);

            typeTimeOut = setTimeout(function() { buttonizer.faSearchWord(jQuery(".fontawesome-searcher .fontawesome-searcher-searchbar input").val()); }, 300);
        });

    	jQuery("select.fa-chooser").each(function() {
    		buttonizer.faSettings.objects++;
    		var obj = jQuery(this);

    		obj.hide();
    		obj.parent().append("<a href=\"javascript:void(0)\" class=\"fontawesome-searcher-clicker\" id=\"fa-chooser_"+ buttonizer.faSettings.objects +"\">Icon: "+ obj.val() +" &nbsp; <i class=\"fa "+ obj.val() +"\"></i></a>");

    		var newObject = jQuery("#fa-chooser_" + buttonizer.faSettings.objects);
    		newObject.click(function(e) {
                if(buttonizer.faSettings.isOpened == false || buttonizer.faSettings.currentSelect != obj) {
                    jQuery(".fontawesome-searcher .fontawesome-searcher-searchbar input").focus();
                    buttonizer.faSettings.isOpened = true;

                    // Update process
        			jQuery(".fontawesome-searcher").css({
        				"top": newObject.offset().top - 20 + newObject.height(),
        				"left": newObject.offset().left - adminBody.offset().left,
        				"width": newObject.width()
        			}).show();

                    buttonizer.faSettings.currentSelect = obj;
                    buttonizer.faSettings.currentObject = newObject;
                }else{
                    buttonizer.faSettings.isOpened = false;
                    jQuery(".fontawesome-searcher").hide();
                }

    			e.preventDefault();
    		});
    	});
    },
    faSearchWord: function(word) {
        var foundMatches = [];

        for(var i = 0; i < fontAwesome.length; i++) {
            if(fontAwesome[i].indexOf(word) !== -1) {
                foundMatches.push(fontAwesome[i]);
            }
        };

        if(foundMatches.length == 0) {
            jQuery(".fontawesome-searcher .no-matches-found").show();
            jQuery(".fontawesome-searcher .fontawesome-searcher-icons").hide();
        }else{
            jQuery(".fontawesome-searcher .no-matches-found").hide();
            jQuery(".fontawesome-searcher .fontawesome-searcher-icons").show();

            var text = '<table><tr>';
            for(var b = 0; b < foundMatches.length; b++) {
                if(b % 4 == 0) {
                    text += "</tr><tr>";
                }

                text += '<td><a href="javascript:buttonizer.faChooseIcon(\''+ foundMatches[b] +'\')"><i class="fa '+ foundMatches[b] +'"></i></a></td>';
            };

            text += '</tr>';

            jQuery(".fontawesome-searcher .fontawesome-searcher-icons").html(text);
        }
    },
    faChooseIcon: function(icon) {
        buttonizer.faSettings.currentSelect.val(icon).change();
        buttonizer.faSettings.currentObject.html("Icon: "+ icon +" &nbsp; <i class=\"fa "+ icon +"\"></i>");
        jQuery("#" + buttonizer.faSettings.currentObject.attr("id")).click();
    }
}

document.addEventListener('DOMContentLoaded', buttonizer.init, false);

window.onbeforeunload = function(){
    if(buttonizer.settings.hasChanges && !buttonizer.settings.clickedButton) {
        return 'You have unsaved data. Are you sure you want to leave?';
    }
};

```
