/*
 * Base64Image Plugin for CKEditor (http://github.com/nmmf/base64image)
 * Created by ALL-INKL.COM - Neue Medien M�nnich - 04. Feb 2014
 * Licensed under the terms of GPL, LGPL and MPL licenses.
 */
CKEDITOR.plugins.add("base64image", {
    lang: ["af", "ar", "bg", "bn", "bs", "ca", "cs", "cy", "da", "de", "de-ch", "el", "en", "en-au", "en-ca", "en-gb", "eo", "es", "et", "eu", "fa", "fi", "fo", "fr", "fr-ca", "gl", "gu", "he", "hi", "hr", "hu", "id", "is", "it", "ja", "ka", "km", "ko", "ku", "lt", "lv", "mk", "mn", "ms", "nb", "nl", "no", "pl", "pt", "pt-br", "ro", "ru", "si", "sk", "sl", "sq", "sr", "sr-latn", "sv", "th", "tr", "ug", "uk", "vi", "zh", "zh-cn"],
    requires: "dialog",
    icons: "base64image",
    hidpi: true,
    init: function (editor) {
        var pluginName = 'base64imageDialog';

        editor.ui.addButton("base64image", {
            label: editor.lang.common.image,
            command: pluginName,
            toolbar: "insert"
        });
        CKEDITOR.dialog.add(pluginName, this.path + "dialogs/base64image.js");

        var allowed = 'img[alt,!src]{border-style,border-width,float,height,margin,margin-bottom,margin-left,margin-right,margin-top,width}',
            required = 'img[alt,src]';

        editor.addCommand(pluginName, new CKEDITOR.dialogCommand(pluginName, {
            allowedContent: allowed,
            requiredContent: required,
            contentTransformations: [
                ['img{width}: sizeToStyle', 'img[width]: sizeToAttribute'],
                ['img{float}: alignmentToStyle', 'img[align]: alignmentToAttribute']
            ]
        }));
        editor.on("doubleclick", function (evt) {
            if (evt.data.element && !evt.data.element.isReadOnly() && evt.data.element.getName() === "img") {
                evt.data.dialog = pluginName;
                editor.getSelection().selectElement(evt.data.element);
            }
        });
        if (editor.addMenuItem) {
            editor.addMenuGroup("base64imageGroup");
            editor.addMenuItem("base64imageItem", {
                label: editor.lang.common.image,
                icon: this.path + "icons/base64image.png",
                command: pluginName,
                group: "base64imageGroup"
            });
        }
        if (editor.contextMenu) {
            editor.contextMenu.addListener(function (element, selection) {
                if (element && element.getName() === "img") {
                    editor.getSelection().selectElement(element);
                    return {base64imageItem: CKEDITOR.TRISTATE_ON};
                }
                return null;
            });
        }
    }
});
