tt-rss/lib/dijit/_editor/plugins/AlwaysShowToolbar.js
2010-11-15 10:39:52 +03:00

119 lines
2.8 KiB
JavaScript

/*
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dijit._editor.plugins.AlwaysShowToolbar"]){
dojo._hasResource["dijit._editor.plugins.AlwaysShowToolbar"]=true;
dojo.provide("dijit._editor.plugins.AlwaysShowToolbar");
dojo.declare("dijit._editor.plugins.AlwaysShowToolbar",dijit._editor._Plugin,{_handleScroll:true,setEditor:function(e){
if(!e.iframe){
return;
}
this.editor=e;
e.onLoadDeferred.addCallback(dojo.hitch(this,this.enable));
},enable:function(d){
this._updateHeight();
this.connect(window,"onscroll","globalOnScrollHandler");
this.connect(this.editor,"onNormalizedDisplayChanged","_updateHeight");
return d;
},_updateHeight:function(){
var e=this.editor;
if(!e.isLoaded){
return;
}
if(e.height){
return;
}
var _1=dojo.marginBox(e.editNode).h;
if(dojo.isOpera){
_1=e.editNode.scrollHeight;
}
if(!_1){
_1=dojo.marginBox(e.document.body).h;
}
if(_1==0){
return;
}
if(dojo.isIE<=7&&this.editor.minHeight){
var _2=parseInt(this.editor.minHeight);
if(_1<_2){
_1=_2;
}
}
if(_1!=this._lastHeight){
this._lastHeight=_1;
dojo.marginBox(e.iframe,{h:this._lastHeight});
}
},_lastHeight:0,globalOnScrollHandler:function(){
var _3=dojo.isIE<7;
if(!this._handleScroll){
return;
}
var _4=this.editor.header;
var db=dojo.body;
if(!this._scrollSetUp){
this._scrollSetUp=true;
this._scrollThreshold=dojo.position(_4,true).y;
}
var _5=dojo._docScroll().y;
var s=_4.style;
if(_5>this._scrollThreshold&&_5<this._scrollThreshold+this._lastHeight){
if(!this._fixEnabled){
var _6=dojo.marginBox(_4);
this.editor.iframe.style.marginTop=_6.h+"px";
if(_3){
s.left=dojo.position(_4).x;
if(_4.previousSibling){
this._IEOriginalPos=["after",_4.previousSibling];
}else{
if(_4.nextSibling){
this._IEOriginalPos=["before",_4.nextSibling];
}else{
this._IEOriginalPos=["last",_4.parentNode];
}
}
dojo.body().appendChild(_4);
dojo.addClass(_4,"dijitIEFixedToolbar");
}else{
s.position="fixed";
s.top="0px";
}
dojo.marginBox(_4,{w:_6.w});
s.zIndex=2000;
this._fixEnabled=true;
}
var _7=(this.height)?parseInt(this.editor.height):this.editor._lastHeight;
s.display=(_5>this._scrollThreshold+_7)?"none":"";
}else{
if(this._fixEnabled){
this.editor.iframe.style.marginTop="";
s.position="";
s.top="";
s.zIndex="";
s.display="";
if(_3){
s.left="";
dojo.removeClass(_4,"dijitIEFixedToolbar");
if(this._IEOriginalPos){
dojo.place(_4,this._IEOriginalPos[1],this._IEOriginalPos[0]);
this._IEOriginalPos=null;
}else{
dojo.place(_4,this.editor.iframe,"before");
}
}
s.width="";
this._fixEnabled=false;
}
}
},destroy:function(){
this._IEOriginalPos=null;
this._handleScroll=false;
dojo.forEach(this._connects,dojo.disconnect);
if(dojo.isIE<7){
dojo.removeClass(this.editor.header,"dijitIEFixedToolbar");
}
}});
}