blob: 265c3fd60a76e54418ff007a6a5ee5c750e9a33e [file] [log] [blame]
/**
* @class button - switch to fullscreen mode and back
*
* @param elRTE rte объект-редактор
* @param String name название кнопки
*
* @author: Dmitry Levashov (dio) dio@std42.ru
* @copyright: Studio 42, http://www.std42.ru
**/
(function($) {
elRTE.prototype.ui.prototype.buttons.fullscreen = function(rte, name) {
var self = this;
this.constructor.prototype.constructor.call(this, rte, name);
this.active = true;
this.editor = rte.editor;
this.wz = rte.workzone;
this.height = 0;
this.delta = 0;
this._class = 'el-fullscreen';
setTimeout(function() {
self.height = self.wz.height();
self.delta = self.editor.outerHeight()-self.height;
}, 50);
/**
* Update editor height on window resize in fullscreen view
*
**/
function resize() {
self.wz.height($(window).height()-self.delta);
self.rte.updateHeight();
}
this.command = function() {
var w = $(window),
e = this.editor,
p = e.parents().filter(function(i, n) { return !/^(html|body)$/i.test(n.nodeName) && $(n).css('position') == 'relative'; }),
wz = this.wz,
c = this._class,
f = e.hasClass(c),
rte = this.rte,
s = this.rte.selection,
m = $.browser.mozilla,
b, h;
function save() {
if (m) {
b = s.getBookmark();
}
}
function restore() {
if (m) {
self.wz.children().toggle();
self.rte.source.focus();
self.wz.children().toggle();
s.moveToBookmark(b);
}
}
save();
p.css('position', f ? 'relative' : 'static');
if (f) {
e.removeClass(c);
wz.height(this.height);
w.unbind('resize', resize);
this.domElem.removeClass('active');
} else {
e.addClass(c).removeAttr('style');
wz.height(w.height() - this.delta).css('width', '100%');
w.bind('resize', resize);
this.domElem.addClass('active');
}
rte.updateHeight();
rte.resizable(f);
restore();
}
this.update = function() {
this.domElem.removeClass('disabled');
}
}
})(jQuery);