﻿// Name:        HTMLEditor.Toolbar_buttons.CommonButton.debug.js
// Assembly:    AjaxControlToolkit
// Version:     4.1.7.1213
// FileVersion: 4.1.7.1213
Type.registerNamespace("Sys.Extended.UI.HTMLEditor.ToolbarButton");

Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton = function(element) {
    Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.initializeBase(this, [element]);

    this._loaded = false;
    this._preservePlace = false;
    this._editPanel = null;
    this._activeModes = null;
    this._app_onload$delegate = Function.createDelegate(this, this._app_onload);
    this._cssClass = "";

    this._onmouseover$delegate = Function.createDelegate(this, this._onmouseover);
    this._onmouseout$delegate = Function.createDelegate(this, this._onmouseout);
    this._onmousedown$delegate = Function.createDelegate(this, this._onmousedown);
    this._onmouseup$delegate = Function.createDelegate(this, this._onmouseup);
    this._onclick$delegate = Function.createDelegate(this, this._onclick);
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.prototype = {

    get_preservePlace: function() {
        return this._preservePlace;
    },
    set_preservePlace: function(value) {
        this._preservePlace = value;
    },

    set_activeEditPanel: function(value) {
        this._editPanel = value;
        if (this._editPanel == null) {
            this.hideButton();
        } else {
            if (this.isAllowedActiveMode(this._editPanel.get_activeMode()) && this.canBeShown()) {
                this.showButton();
                this.onEditPanelActivity();
            } else {
                this.hideButton();
            }
        }
    },

    isImage: function() {
        return true;
    },

    checkRangeInDesign: function() {
        if (typeof this._designPanel == "undefined") return false;
        if (this._designPanel == null) return false;
        if (this._designPanel.isPopup()) return false;

        var parent = Sys.Extended.UI.HTMLEditor.getSelParent(this._designPanel);
        if (parent.nodeType == 3) parent = parent.parentNode;
        return (parent.ownerDocument == this._designPanel._doc);
    },

    get_buttonName: function() {
        var name = Object.getType(this).getName();
        name = name.substring(name.lastIndexOf(".") + 1);
        return name;
    },

    get_message: function(messageName) {
        var expression = "Sys.Extended.UI.Resources.HTMLEditor_toolbar_button_" + this.get_buttonName() + "_message_" + messageName;
        return eval(expression);
    },

    isDisplayed: function() {
        var element = this.get_element();
        if (element) {
            var style = element.style;
            return (style.display != "none" && style.visibility != "hidden");
        } else {
            return false;
        }
    },

    hideButton: function() {
        var element = this.get_element();
        if (element) {
            if (!this._preservePlace) {
                element.style.display = "none";
            } else {
                element.style.visibility = "hidden";
            }
        }
    },

    showButton: function() {
        var element = this.get_element();
        if (element) {
            if (element.style.display == "none") {
                element.style.display = "";
            }
            if (this._preservePlace) {
                element.style.visibility = "visible";
            }
        }
    },

    canBeShown: function() {
        return true;
    },

    onEditPanelActivity: function() {
    },

    get_activeModes: function() {
        if (this._activeModes == null) {
            this._activeModes = [];
        }
        return this._activeModes;
    },
    set_activeModes: function(value) {
        this.get_activeModes().push(value);
    },

    get_activeModesIds: function() {
    },
    set_activeModesIds: function(value) {
        var arr = value.split(";");
        for (var i = 0; i < arr.length; i++) {
            this.set_activeModes(parseInt(arr[i]));
        }
    },

    set_toolTip: function(value) {
        this.get_element().title = value;
    },
    get_toolTip: function() {
        return this.get_element().title;
    },

    isAllowedActiveMode: function(value) {
        for (var i = 0; i < this.get_activeModes().length; i++) {
            if (this.get_activeModes()[i] == value) {
                return true;
            }
        }
        return false;
    },

    initialize: function() {
        Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.callBaseMethod(this, "initialize");

        Sys.Application.add_load(this._app_onload$delegate);
        var element = this.get_element();

        if (this._preservePlace && !this.canBeShown()) {
            element.style.display = "none";
        }

        this._cssClass = element.className;

        if (this.isImage()) {
            $addHandlers(element, {
                mouseover: this._onmouseover$delegate,
                mouseout: this._onmouseout$delegate,
                mousedown: this._onmousedown$delegate,
                mouseup: this._onmouseup$delegate,
                click: this._onclick$delegate
            });
        }

        if (Sys.Extended.UI.HTMLEditor.isIE) {
            function diveSelectable(el) {
                if (el.nodeType == 1 && el.tagName) {
                    var tag = el.tagName.toUpperCase();
                    if (tag != "INPUT" && tag != "TEXTAREA" && tag != "IFRAME") {
                        el.unselectable = "on";
                    }
                    for (var k = 0; k < el.childNodes.length; k++) {
                        diveSelectable(el.childNodes.item(k));
                    }
                }
            }

            diveSelectable(element);
        } else {
            try {
                element.style.MozUserSelect = "none";
                element.parentNode.style.MozUserSelect = "none";
            } catch (ex) { }
        }
    },

    dispose: function() {
        if (this.isImage()) {
            $common.removeHandlers(this.get_element(), {
                mouseover: this._onmouseover$delegate,
                mouseout: this._onmouseout$delegate,
                mousedown: this._onmousedown$delegate,
                mouseup: this._onmouseup$delegate,
                click: this._onclick$delegate
            });
        }

        this._loaded = false;
        Sys.Application.remove_load(this._app_onload$delegate);
        Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.callBaseMethod(this, "dispose");
    },

    _app_onload: function(sender, e) {
        this.onButtonLoaded();
        this._loaded = true;
    },

    onButtonLoaded: function() {
    },

    _onmouseover: function(e) {
        if (!this.isEnable()) {
            return false;
        }
        Sys.UI.DomElement.addCssClass(this.get_element(), this._cssClass + "_hover");
        return true;
    },

    _onmouseout: function(e) {
        if (!this.isEnable()) {
            return false;
        }
        Sys.UI.DomElement.removeCssClass(this.get_element(), this._cssClass + "_hover");
        Sys.UI.DomElement.removeCssClass(this.get_element(), this._cssClass + "_mousedown");
        return true;
    },

    _onmousedown: function(e) {
        if (!this.isEnable()) {
            return null;
        }
        Sys.UI.DomElement.addCssClass(this.get_element(), this._cssClass + "_mousedown");
        return false;
    },

    _onmouseup: function(e) {
        if (!this.isEnable()) {
            return false;
        }
        Sys.UI.DomElement.removeCssClass(this.get_element(), this._cssClass + "_mousedown");
        return true;
    },

    _onclick: function(e) {
        if (!this.isEnable()) {
            return false;
        }
        return true;
    },

    isEnable: function() {
        if (!this._loaded) {
            return false;
        }
        if (this._editPanel == null) {
            return false;
        }
        return true;
    },

    setActivity: function(value) {
        if (value) {
            Sys.UI.DomElement.addCssClass(this.get_element(), this._cssClass + "_active");
        } else {
            Sys.UI.DomElement.removeCssClass(this.get_element(), this._cssClass + "_active");
        }
    }
}

Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton.registerClass("Sys.Extended.UI.HTMLEditor.ToolbarButton.CommonButton", Sys.UI.Control);

