Update of /cvsroot/dynapi/dynapi3x/src/api
In directory sc8-pr-cvs1:/tmp/cvs-serv6593/src/api

Modified Files:
        dyndocument.js dynlayer_dom.js dynlayer_ie.js dynlayer_ns4.js 
        dynlayer_opera.js event.js 
Added Files:
        dynlayer_base.js 
Log Message:
updated/added by raymond

--- NEW FILE ---
/*
        DynAPI Distribution
        DynLayer Base/Common Class

        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
        
        requires: dynapi.api.DynDocument
*/

var DynLayerBase = {};  // used by library
function DynLayer(html,x,y,w,h,color) {
        this.DynElement = DynElement;
        this.DynElement();

        if (html && html.constructor==Object){
                var args=html; // dictionary input
                html=args.html;
                x = args.x;
                y = args.y;
                w = args.w;
                h = args.h;
                color = args.color;
                this.visible = (args.visible||true);
                this.z = (args.zIndex||1);
                this._saveAnchor = args.anchor;
                this._textSelectable = (args.textSelectable||true);
                if (args.id) this.setID(args.id,true);
        }
        else {
                this.visible = true;
                this.z = 1;
                this._saveAnchor = false;
                this._textSelectable = true;
        }
        
        this.html = html;
        this.x = x;
        this.y = y;
        this.w = w;
        this.h = h;
        this.bgColor = color;
        this.elm = null;
        this.doc = null;
        this.css = null; 
};
var p = dynapi.setPrototype('DynLayer','DynElement');
p._destroy = function() {
        for (var i=0;i<this.children.length;i++) {
                this.children[i]._destroy();
        }
        this.removeAllEventListeners();
        if (this.elm) this._remove();
        DynObject.all[this.id] = null;
        this.children = null;
        this.frame = null;
        
        this.bgImage = null;
        this.bgColor = null;
        this.html = null;
        this.x = null;
        this.y = null;
        this.w = null;
        this.h = null;
        this.z = null;
        this.doc = null;
        this.css = null;
        this._dyndoc = null;
        this.parent = null;
};
p._remove = function() {        //! Overwritten by NS4
        if (this.elm) {
                //this.elm.style.visibility = "hidden";
                this.elm.innerHTML = "";
                this.elm.outerHTML = "";
                this.elm = null;
                if (this.releaseMouseEvents) this.releaseMouseEvents();
                if (this.releaseKeyEvents) this.releaseKeyEvents();
        }
        /*this.frame = null;
        this.bgImage = null;
        this.bgColor = null;
        this.html = null;
        this.z = null;
        this.w = null;
        this.h = null;
        this.elm = null;
        this.doc = null;
        this.css = null;*/
};
p._createInserted = function(divs){
        DynLayer._assignElement(this,null,divs); //! NS4 will ignore divs
        DynElement._flagCreate(this);
};
p.getOuterHTML=function() {     //! Overwritten by NS4
        var s,clip='',bgimage=' background-image:none;';
        if(this.bgImage!=null) bgimage=' background-image:url('+this.bgImage+');';
        //else if (this.bgImage==null && this.html==null) bgimage=' 
background-image:none;';
        if (this.clip) clip=' clip:rect('+this.clip[0]+'px '+this.clip[1]+'px 
'+this.clip[2]+'px '+this.clip[3]+'px);';
        else if (this.w!=null && this.h!=null) clip=' clip:rect(0px '+this.w+'px 
'+this.h+'px 0px);';
        return [
                '\n<div id="'+this.id+'" style="',
                ' left:',(this.x!=null? this.x : 0),'px;',
                ' top:',(this.y!=null? this.y : 0),'px;',               
                ((this.w!=null)? ' width:'+this.w+'px;':''),
                ((this.h!=null)? ' height:'+this.h+'px;':''),
                ((this.z)? ' z-index:'+this.z+';':''),
                ((this._cursor!=null)? ' cursor:'+this._cursor+';':''),
                ((this._overflow!=null)? ' overflow:'+this._overflow+';':''),
                ((this.bgColor!=null)? ' background-color:'+this.bgColor+';':''),
                ((this.visible==false)? ' visibility:hidden;':' visibility:inherit;'),
                bgimage,
                clip,
                this._cssBorder,
                ' position:absolute;">',
                this.getInnerHTML(),
                '</div>'
        ].join('');     
};
p.getInnerHTML=function() {     //! Overwritten by NS4
        var s = '';
        var i,ch=this.children;
        if (this.html!=null) s+=this.html;
        for (i=0;i<ch.length;i++) s+=ch[i].getOuterHTML();
        return s;       
};
p.getPageX = function() {return (this.isChild)? this.parent.getPageX()+(this.x||0) : 
this.x||0}; //! Overwritten by NS4
p.getPageY = function() {return (this.isChild)? this.parent.getPageY()+(this.y||0) : 
this.y||0}; //! Overwritten by NS4

this._cssBorder='';
p.setBorder = function(w,c){    //! Overwritten by NS4
        w = (w!=null)? w:0;
        c = (c!=null)? c:'#000000';
        if(!this.css) 
this._cssBorder='border-color:'+c+';border-width:'+w+';border-solid;';
        else {
                this.css.borderStyle="solid";   
                this.css.borderColor=c; 
                this.css.borderWidth=w+"px";    
        };
}; 
p.setVisible = function(b) { //! Overwritten by NS4
        //if (b!=this.visible) {
                this.visible = b;
                if (this.css) this.css.visibility = b? "inherit" : "hidden";
        //}
};
p.setSize = function(w,h) { //! Overwritten by NS4
        if (this._useMinSize||this._useMaxSize){
                if (this.minW && w<this.minW) w=this.minW;
                if (this.minH && h<this.minH) h=this.minH;
                if (this.maxW && w>this.maxW) w=this.maxW;
                if (this.maxH && h>this.maxH) h=this.maxH;
        }
        var cw = (w!=null && w!=this.w);
        var ch = (h!=null && h!=this.h);
        if (cw) this.w = w<0? 0 : w;
        if (ch) this.h = h<0? 0 : h;
        if (cw||ch) {
                if (this._updateAnchors) this._updateAnchors();
                if (this.css) {
                        if (cw) this.css.width = this.w||0;
                        if (ch) this.css.height = this.h||0;
                        if (cw || ch) this.css.clip = 'rect(0px '+(this.w||0)+'px 
'+(this.h||0)+'px 0px)';
                        if (this.updateLayout) this.updateLayout();
                }
        }
        if(this._hasResizeEvents) this.invokeEvent('resize');
        return (cw||ch);
};
p.setMaximumSize = function(w,h){
        this._maxW=w; this._maxH=h;
        this._useMaxSize=(w!=h!=null);
        w=(this.w>w)?w:this.w;
        h=(this.h>h)? h:this.h;
        this.setSize(this.w,this.h);
};
p.setMinimumSize = function(w,h){
        this._minW=w; this._minH=h;
        this._useMinSize=(w!=h!=null);
        this.setSize(this.w,this.h);
};

p._overflow='hidden';
p.getOverflow = function(){return this._overflow};
p.setOverflow = function(s){
        if(!s) s='default';
        this._overflow=s;
        if(this.css) this.css.overflow=s;
};

p.getAnchor = function(){
        if(!this.parent) return this._saveAnchors;
        else if (this.parent._childAnchors) {
                return this.parent._childAnchors[this.id];
        }
};
p.setAnchor = function(anchor) {
        if (anchor == null) {
                delete this._saveAnchor;
                if (this.parent && this.parent._childAnchors && 
this.parent._childAnchors[this.is]) delete this.parent._childAnchors[this.is];
        }
        else if (this.parent) {
                if (!this.parent._childAnchors) this.parent._childAnchors = {};
                var a = this.parent._childAnchors;
                a[this.id] = anchor;
                this.parent._updateAnchor(this.id);
        }
        else this._saveAnchor = anchor;
};
p.setX=function(x) {this.setLocation(x,null)};
p.setY=function(y) {this.setLocation(null,y)};
p.getX=function() {return this.x||0};
p.getY=function() {return this.y||0};
p.setPageX = function(x) {this.setPageLocation(x,null)};
p.setPageY = function(y) {this.setPageLocation(null,y)};
p.getVisible=function() {return this.visible};
p.getZIndex=function() {return this.z};
p.setZIndex=function(z) {
        if (typeof(z)=="object") {
                if (z.above) this.z = z.above.z + 1;
                else if (z.below) this.z = z.below.z - 1;
                else if (z.topmost && this.parent) {
                        var topZ=10000,ch=this.parent.children;
                        for(var i=0;i<ch.length;i++) if (ch[i].z>topZ) topZ=ch[i].z;
                        this.parent._topZ = topZ+2;
                        this.z = this.parent._topZ;
                }
        }
        else this.z = z;
        if (this.css) this.css.zIndex = this.z;
};
p.getHTML = function() {return this.html};
p.setWidth=function(w) {this.setSize(w,null)};
p.setHeight=function(h) {this.setSize(null,h)};
p.getWidth=function() {return this.w||0};
p.getHeight=function() {return this.h||0};
p.getBgImage=function() {return this.bgImage};
p.getBgColor=function() {return this.bgColor};
p.setBgColor=function(c) {      //! Overwritten by NS4
        if (c==null) c = 'transparent';
        this.bgColor = c;
        if (this.css) this.css.backgroundColor = c;
};
p.setBgImage=function(path) {   //! Overwritten by NS4
        this.bgImage=path;
        if (this.css) this.css.backgroundImage='url('+path+')';
};
p.setClip=function(clip) {      //! Overwritten by NS4
        var cc=this.getClip();
        for (var i=0;i<clip.length;i++) if (clip[i]==null) clip[i]=cc[i];
        this.clip=clip;
        if (this.css==null) return;
        var c=this.css.clip;
        this.css.clip="rect("+clip[0]+"px "+clip[1]+"px "+clip[2]+"px "+clip[3]+"px)";
};
p.getClip=function() {  //! Overwritten by NS4
        if (this.css==null || !this.css.clip) return [0,0,0,0];
        var c = this.css.clip;
        if (c) {
                if (c.indexOf("rect(")>-1) {
                        c=c.split("rect(")[1].split(")")[0].split("px");
                        for (var i=0;i<c.length;i++) c[i]=parseInt(c[i]);
                        return [c[0],c[1],c[2],c[3]];
                }
                else return [0,this.w,this.h,0];
        }
};
Index: dyndocument.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/dyndocument.js,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** dyndocument.js      9 Mar 2003 22:21:46 -0000       1.5
--- dyndocument.js      26 Mar 2003 02:22:31 -0000      1.6
***************
*** 60,71 ****
        this.doc.fgColor = color;
  };
! p.insertChild = function(c) {
        if (c && !c.isInline && c.parent == this) {
!               DynElement._flagEvent(c,'precreate');
!               this.doc.write(c.getOuterHTML());
!               c._inserted = true;
        }
  };
! p.insertAllChildren = function() {
        var i,c,str =[''];
        var ch=this.children;
--- 60,74 ----
        this.doc.fgColor = color;
  };
! p.insertChild = function(c,usebp) { // Blueprint Enabled
        if (c && !c.isInline && c.parent == this) {
!               DynElement._flagPeCreate(c);
!               if(useBlueprint) c.isInline=c._noInlineValues=true;
!               else {
!                       this.doc.write(c.getOuterHTML());
!                       c._inserted = true;
!               }
        }
  };
! p.insertAllChildren = function(usebp,bpSrc) { // Blueprint Enabled
        var i,c,str =[''];
        var ch=this.children;
***************
*** 73,84 ****
                c = ch[i];
                if(!c.isInline){
!                       DynElement._flagEvent(c,'precreate');
!                       str[i]=c.getOuterHTML();
!                       c._inserted = true;
                }
        }
!       this.doc.write(str.join('\n'));
!       this.doc.close();
  };
  p._create = function() {
        var ua=dynapi.ua;
--- 76,96 ----
                c = ch[i];
                if(!c.isInline){
!                       DynElement._flagPreCreate(c);
!                       if(usebp) c.isInline=c._noInlineValues=true;
!                       else {
!                               str[i]=c.getOuterHTML();
!                               c._inserted = true;
!                       }
                }
        }
!       if(usebp){
!               if(bpSrc) dynapi.frame.document.write('<script type="text/javascript" 
language="JavaScript" src="'+bpSrc+'"><\/script>');       
!       }
!       else {
!               this.doc.write(str.join('\n'));
!               this.doc.close();
!       }
  };
+ 
  p._create = function() {
        var ua=dynapi.ua;
***************
*** 103,107 ****
        var divs;
        // create divs object - speeds up DOM browsers on Win32. Linux & Mac?
!       if (ua.win32 && (ua.ie||ua.dom)) {
                divs={} 
                var dv,all=(ua.ie||ua.opera)? document.all.tags('div') : 
document.getElementsByTagName('div');
--- 115,119 ----
        var divs;
        // create divs object - speeds up DOM browsers on Win32. Linux & Mac?
!       if (ua.ie||ua.dom) {
                divs={} 
                var dv,all=(ua.ie||ua.opera)? document.all.tags('div') : 
document.getElementsByTagName('div');

Index: dynlayer_dom.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/dynlayer_dom.js,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** dynlayer_dom.js     9 Mar 2003 22:21:46 -0000       1.4
--- dynlayer_dom.js     26 Mar 2003 02:22:31 -0000      1.5
***************
*** 1,94 ****
  /*
        DynAPI Distribution
!       DynLayer Class
  
        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
        
!       requires: dynapi.api.DynDocument
  */
  
! function DynLayer(html,x,y,w,h,color) {
!       this.DynElement = DynElement;
!       this.DynElement();
! 
!       if (html && html.constructor==Object){
!               var args=html; // dictionary input
!               html=args.html;
!               x = args.x;
!               y = args.y;
!               w = args.w;
!               h = args.h;
!               color = args.color;
!               this.visible = (args.visible||true);
!               this.z = (args.zIndex||1);
!               this._saveAnchor = args.anchor;
!               this._textSelectable = (args.textSelectable||true);
!               if (args.id) this.setID(args.id,true);
!       }
!       else {
!               this.visible = true;
!               this.z = 1;
!               this._saveAnchor = false;
!               this._textSelectable = true;
!       }
!       
!       this.html = html;
!       this.x = x;
!       this.y = y;
!       this.w = w;
!       this.h = h;
!       this.bgColor = color;
!       this.elm = null;
!       this.doc = null;
!       this.css = null;
! };
! var p = dynapi.setPrototype('DynLayer','DynElement');
! p._destroy = function() {
!       for (var i=0;i<this.children.length;i++) {
!               this.children[i]._destroy();
!       }
!       this.removeAllEventListeners();
!       if (this.elm) this._remove();
!       DynObject.all[this.id] = null;
!       this.children = null;
!       this.frame = null;
!       
!       this.bgImage = null;
!       this.bgColor = null;
!       this.html = null;
!       this.x = null;
!       this.y = null;
!       this.w = null;
!       this.h = null;
!       this.z = null;
!       this.doc = null;
!       this.css = null;
!       this._dyndoc = null;
!       this.parent = null;
! };
! 
! p._remove = function() {
!       if (this.elm) {
!               //this.elm.style.visibility = "hidden";
!               this.elm.innerHTML = "";
!               this.elm.outerHTML = ""; // ??
!               this.elm = null;
!               if (this.releaseMouseEvents) this.releaseMouseEvents();
!               if (this.releaseKeyEvents) this.releaseKeyEvents();
!       }
!       /*this.frame = null;
!       this.bgImage = null;
!       this.bgColor = null;
!       this.html = null;
!       this.z = null;
!       this.w = null;
!       this.h = null;
!       this.elm = null;
!       this.doc = null;
!       this.css = null;*/
! };
  p._create = function() {
        if (this.parent && !this.elm) {
!               DynElement._flagEvent(this,'precreate');
                var elm, parentElement;
                parentElement = this.parent.elm;
--- 1,15 ----
  /*
        DynAPI Distribution
!       DynLayer DOM Specific Functions
  
        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
        
!       requires: dynapi.api.DynLayerBase
  */
  
! p = DynLayer.prototype;
  p._create = function() {
        if (this.parent && !this.elm) {
!               DynElement._flagPreCreate(this);
                var elm, parentElement;
                parentElement = this.parent.elm;
***************
*** 102,115 ****
  
                DynLayer._assignElement(this,elm);
!               DynElement._flagEvent(this,'create');
        }
  };
- p._createInserted = function(divs){
-       DynLayer._assignElement(this,null,divs);
-       DynElement._flagEvent(this,'create');
- };
  DynLayer._assignElement = function(dlyr,elm,divs) {
!       if (!elm ) elm = (divs)? divs[dlyr.id] : 
dlyr.parent.doc.getElementById(dlyr.id);
!       //if (!elm) elm = dlyr.parent.doc.getElementById(dlyr.id);
        dlyr.elm = elm;
        dlyr.css = elm.style;
--- 23,34 ----
  
                DynLayer._assignElement(this,elm);
!               DynElement._flagCreate(this);
        }
  };
  DynLayer._assignElement = function(dlyr,elm,divs) {
!       if (!elm ) {
!               elm = (divs)? divs[dlyr.id] : dlyr.parent.doc.getElementById(dlyr.id);
!               if (!elm) {dlyr._create();return}; // force create() for missing 
inline layer
!       }
        dlyr.elm = elm;
        dlyr.css = elm.style;
***************
*** 134,169 ****
  
  };
- p.getOuterHTML=function() {
-       var s,bgimage='',clip='';
-       if(this.bgImage!=null) bgimage=' background-image:url('+this.bgImage+');';
-       if (this.clip) clip=' clip:rect('+this.clip[0]+'px '+this.clip[1]+'px 
'+this.clip[2]+'px '+this.clip[3]+'px);';
-       else if (this.w!=null && this.h!=null) clip=' clip:rect(0px '+this.w+'px 
'+this.h+'px 0px);';
-       s=[
-               '<div id="'+this.id+'" style="',
-               ' left:',(this.x!=null? this.x : 0),'px;',
-               ' top:',(this.y!=null? this.y : 0),'px;',
-               ((this.w!=null)? ' width:'+this.w+'px;':''),
-               ((this.h!=null)? ' height:'+this.h+'px;':''),
-               ((this.z)? ' z-index:'+this.z+';':''),
-               ((this._cursor!=null)? ' cursor:'+this._cursor+';':''),
-               ((this._overflow!=null)? ' overflow:hidden;':''),
-               ((this.bgColor!=null)? ' background-color:'+this.bgColor+';':''),
-               ((this.visible==false)? ' visibility:hidden;':' visibility:inherit;'),
-               bgimage,
-               clip,
-               ' position:absolute;">',
-               this.getInnerHTML(),
-               '</div>\n'
-       ];
-       return  s.join('');
- };
- p.getInnerHTML=function() {
-       var s = '';
-       var i,ch=this.children;
-       if (this.html!=null) s+=this.html;
-       for (i=0;i<ch.length;i++) s+=ch[i].getOuterHTML();
-       return s;
- };
- 
  p.setLocation=function(x,y) {
        var cx = (x!=null && x!=this.x);
--- 53,56 ----
***************
*** 184,211 ****
        return this.setLocation(x,y);
  };
- p.getPageX=function() {return (this.isChild)? this.parent.getPageX()+(this.x||0) : 
this.x||0};
- p.getPageY=function() {return (this.isChild)? this.parent.getPageY()+(this.y||0) : 
this.y||0};
- p.setVisible=function(b) {
-       //if (b!=this.visible) {
-               this.visible = b;
-               if (this.css) this.css.visibility = b? "inherit" : "hidden";
-       //}
- };
- p.setSize = function(w,h) {
-       var cw = (w!=null && w!=this.w);
-       var ch = (h!=null && h!=this.h);
-       if (cw) this.w = w<0? 0 : w;
-       if (ch) this.h = h<0? 0 : h;
-       if (cw||ch) {
-               if (this._updateAnchors) this._updateAnchors();
-               if (this.css) {
-                       if (cw) this.css.width = this.w||0;
-                       if (ch) this.css.height = this.h||0;
-                       if (cw || ch) this.css.clip = 'rect(0px '+(this.w||0)+'px 
'+(this.h||0)+'px 0px)';
-                       if (this.updateLayout) this.updateLayout();
-               }
-       }
-       return (cw||ch);
- };
  p.setHTML = function(html) {
        if (html!=this.html) {
--- 71,74 ----
***************
*** 221,245 ****
                }
        }
  };
- p.getAnchor = function(){
-       if(!this.parent) return this._saveAnchors;
-       else if (this.parent._childAnchors) {
-               return this.parent._childAnchors[this.id];
-       }
- };
- p.setAnchor = function(anchor) {
-       if (anchor == null) {
-               delete this._saveAnchor;
-               if (this.parent && this.parent._childAnchors && 
this.parent._childAnchors[this.is]) delete this.parent._childAnchors[this.is];
-       }
-       else if (this.parent) {
-               if (!this.parent._childAnchors) this.parent._childAnchors = {};
-               var a = this.parent._childAnchors;
-               a[this.id] = anchor;
-               this.parent._updateAnchor(this.id);
-       }
-       else this._saveAnchor = anchor;
- };
- 
  p.setTextSelectable=function(b) {
        this._textSelectable = b
--- 84,89 ----
                }
        }
+       if(this._hasContentEvents) this.invokeEvent('contentchange');   
  };
  p.setTextSelectable=function(b) {
        this._textSelectable = b
***************
*** 247,282 ****
        if (!b) this.setCursor('default');
  };
- 
- p.setX=function(x) {this.setLocation(x,null)};
- p.setY=function(y) {this.setLocation(null,y)};
- p.getX=function() {return this.x||0};
- p.getY=function() {return this.y||0};
- p.setPageX = function(x) {this.setPageLocation(x,null)};
- p.setPageY = function(y) {this.setPageLocation(null,y)};
- 
- p.getVisible=function() {return this.visible};
- 
- p.setZIndex=function(z) {
-       if (typeof(z)=="object") {
-               if (z.above) this.z = z.above.z + 1;
-               else if (z.below) this.z = z.below.z - 1;
-               else if (z.topmost && this.parent) {
-                       var topZ=10000,ch=this.parent.children;
-                       for(var i=0;i<ch.length;i++) if (ch[i].z>topZ) topZ=ch[i].z;
-                       this.parent._topZ = topZ+1;
-                       this.z = this.parent._topZ;
-               }
-       }
-       else this.z = z;
-       if (this.css) this.css.zIndex = this.z;
- };
- p.getZIndex=function() {return this.z};
- p.getHTML = function() {return this.html};
- p.setWidth=function(w) {this.setSize(w,null)};
- p.setHeight=function(h) {this.setSize(null,h)};
- p.getWidth=function() {return this.w||0};
- p.getHeight=function() {return this.h||0};
- p.getBgImage=function() {return this.bgImage};
- p.getBgColor=function() {return this.bgColor};
  p.getCursor = function() {return (this._cursor=='pointer')? 'hand':this._cursor};
  p.setCursor = function(c) {
--- 91,94 ----
***************
*** 289,301 ****
        }               
  };
- p.setBgColor=function(c) {
-       if (c==null) c = 'transparent';
-       this.bgColor = c;
-       if (this.css) this.css.backgroundColor = c;
- };
- p.setBgImage=function(path) {
-       this.bgImage=path;
-       if (this.css) this.css.backgroundImage='url('+path+')';
- };
  p.getContentWidth=function() {
        if (this.elm==null) return 0;
--- 101,104 ----
***************
*** 318,341 ****
        }
  };
! p.setClip=function(clip) {
!       var cc=this.getClip();
!       for (var i=0;i<clip.length;i++) if (clip[i]==null) clip[i]=cc[i];
!       this.clip=clip;
!       if (this.css==null) return;
!       var c=this.css.clip;
!       this.css.clip="rect("+clip[0]+"px "+clip[1]+"px "+clip[2]+"px "+clip[3]+"px)";
! };
! p.getClip=function() {
!       if (this.css==null || !this.css.clip) return [0,0,0,0];
!       var c = this.css.clip;
!       if (c) {
!               if (c.indexOf("rect(")>-1) {
!                       c=c.split("rect(")[1].split(")")[0].split("px");
!                       for (var i=0;i<c.length;i++) c[i]=parseInt(c[i]);
!                       return [c[0],c[1],c[2],c[3]];
!               }
!               else return [0,this.w,this.h,0];
!       }
! };
  p.slideTo = function(endx,endy,inc,speed) {
        if (!this._slideActive) {
--- 121,125 ----
        }
  };
! 
  p.slideTo = function(endx,endy,inc,speed) {
        if (!this._slideActive) {

Index: dynlayer_ie.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/dynlayer_ie.js,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** dynlayer_ie.js      9 Mar 2003 22:21:46 -0000       1.5
--- dynlayer_ie.js      26 Mar 2003 02:22:31 -0000      1.6
***************
*** 1,93 ****
  /*
        DynAPI Distribution
!       DynLayer Class
  
        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
        
!       requires: dynapi.api.DynDocument
  */
  
! function DynLayer(html,x,y,w,h,color) {
!       this.DynElement = DynElement;
!       this.DynElement();
! 
!       if (html && html.constructor==Object){
!               var args=html; // dictionary input
!               html=args.html;
!               x = args.x;
!               y = args.y;
!               w = args.w;
!               h = args.h;
!               color = args.color;
!               this.visible = (args.visible||true);
!               this.z = (args.zIndex||1);
!               this._saveAnchor = args.anchor;
!               this._textSelectable = (args.textSelectable||true);
!               if (args.id) this.setID(args.id,true);
!       }
!       else {
!               this.visible = true;
!               this.z = 1;
!               this._saveAnchor = false;
!               this._textSelectable = true;
!       }
!       
!       this.html = html;
!       this.x = x;
!       this.y = y;
!       this.w = w;
!       this.h = h;
!       this.bgColor = color;
!       this.elm = null;
!       this.doc = null;
!       this.css = null; 
! };
! var p = dynapi.setPrototype('DynLayer','DynElement');
! p._destroy = function() {
!       for (var i=0;i<this.children.length;i++) {
!               this.children[i]._destroy();
!       }
!       this.removeAllEventListeners();
!       if (this.elm) this._remove();
!       DynObject.all[this.id] = null;
!       this.children = null;
!       this.frame = null;
!       
!       this.bgImage = null;
!       this.bgColor = null;
!       this.html = null;
!       this.x = null;
!       this.y = null;
!       this.w = null;
!       this.h = null;
!       this.z = null;
!       this.doc = null;
!       this.css = null;
!       this._dyndoc = null;
!       this.parent = null;
! };
! p._remove = function() {
!       if (this.elm) {
!               //this.elm.style.visibility = "hidden";
!               this.elm.innerHTML = "";
!               this.elm.outerHTML = "";
!               this.elm = null;
!               if (this.releaseMouseEvents) this.releaseMouseEvents();
!               if (this.releaseKeyEvents) this.releaseKeyEvents();
!       }
!       /*this.frame = null;
!       this.bgImage = null;
!       this.bgColor = null;
!       this.html = null;
!       this.z = null;
!       this.w = null;
!       this.h = null;
!       this.elm = null;
!       this.doc = null;
!       this.css = null;*/
! };
  p._create = function() {
        if (this.parent && !this.elm) {                 
!               DynElement._flagEvent(this,'precreate');                
                var elm, parentElement;
                parentElement = this.parent.elm;
--- 1,15 ----
  /*
        DynAPI Distribution
!       DynLayer IE Specific Functions
  
        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
        
!       requires: dynapi.api.DynLayerBase
  */
  
! p = DynLayer.prototype;
  p._create = function() {
        if (this.parent && !this.elm) {                 
!               DynElement._flagPreCreate(this);                
                var elm, parentElement;
                parentElement = this.parent.elm;
***************
*** 118,130 ****
                }
                DynLayer._assignElement(this,elm);
!               DynElement._flagEvent(this,'create');
        }
  };
- p._createInserted = function(divs){
-       DynLayer._assignElement(this,null,divs);
-       DynElement._flagEvent(this,'create');
- };
  DynLayer._assignElement = function(dlyr,elm,divs) {
!       if (!elm ) elm = (divs)? divs[dlyr.id] : dlyr.parent.elm.all[dlyr.id];
        dlyr.elm = elm;
        dlyr.css = elm.style;
--- 40,51 ----
                }
                DynLayer._assignElement(this,elm);
!               DynElement._flagCreate(this);
        }
  };
  DynLayer._assignElement = function(dlyr,elm,divs) {
!       if (!elm ) {
!               elm = (divs)? divs[dlyr.id] : dlyr.parent.elm.all[dlyr.id];
!               if (!elm) {dlyr._create();return}; // force create() for missing 
inline layer
!       }
        dlyr.elm = elm;
        dlyr.css = elm.style;
***************
*** 152,186 ****
  
  };
- p.getOuterHTML=function() {
-       var s,bgimage='',clip='';
-       if(this.bgImage!=null) bgimage=' background-image:url('+this.bgImage+');';
-       else if (this.bgImage==null && this.html==null) bgimage=' 
background-image:none;';
-       if (this.clip) clip=' clip:rect('+this.clip[0]+'px '+this.clip[1]+'px 
'+this.clip[2]+'px '+this.clip[3]+'px);';
-       else if (this.w!=null && this.h!=null) clip=' clip:rect(0px '+this.w+'px 
'+this.h+'px 0px);';
-       return [
-               '<div id="'+this.id+'" style="',
-               ' left:',(this.x!=null? this.x : 0),'px;',
-               ' top:',(this.y!=null? this.y : 0),'px;',               
-               ((this.w!=null)? ' width:'+this.w+'px;':''),
-               ((this.h!=null)? ' height:'+this.h+'px;':''),
-               ((this.z)? ' z-index:'+this.z+';':''),
-               ((this._cursor!=null)? ' cursor:'+this._cursor+';':''),
-               ((this._overflow!=null)? ' overflow:hidden;':''),
-               ((this.bgColor!=null)? ' background-color:'+this.bgColor+';':''),
-               ((this.visible==false)? ' visibility:hidden;':' visibility:inherit;'),
-               bgimage,
-               clip,
-               ' position:absolute;">',
-               this.getInnerHTML(),
-               '</div>\n'
-       ].join('');     
- };
- p.getInnerHTML=function() {
-       var s = '';
-       var i,ch=this.children;
-       if (this.html!=null) s+=this.html;
-       for (i=0;i<ch.length;i++) s+=ch[i].getOuterHTML();
-       return s;       
- };
  p.setLocation=function(x,y) {
        var cx = (x!=null && x!=this.x);
--- 73,76 ----
***************
*** 192,195 ****
--- 82,86 ----
                if (cy) this.css.pixelTop = this.y;
        }
+       if(this._hasLocationEvents) this.invokeEvent('locationchange');
        return (cx||cy);
  };
***************
*** 207,218 ****
        return this.setLocation(x,y);
  };
- p.getPageX=function() {return (this.isChild)? this.parent.getPageX()+(this.x||0) : 
this.x||0};
- p.getPageY=function() {return (this.isChild)? this.parent.getPageY()+(this.y||0) : 
this.y||0};
- p.setVisible=function(b) {
-       //if (b!=this.visible) {
-               this.visible = b;
-               if (this.css) this.css.visibility = b? "inherit" : "hidden";
-       //}
- };
  p.setSize = function(w,h) {
        var cw = (w!=null && w!=this.w);
--- 98,101 ----
***************
*** 236,258 ****
                if (this.css) this.elm.innerHTML = html;
        }
! };
! p.getAnchor = function(){
!       if(!this.parent) return this._saveAnchors;
!       else if (this.parent._childAnchors) {
!               return this.parent._childAnchors[this.id];
!       }
! };
! p.setAnchor = function(anchor) {
!       if (anchor == null) {
!               delete this._saveAnchor;
!               if (this.parent && this.parent._childAnchors && 
this.parent._childAnchors[this.is]) delete this.parent._childAnchors[this.is];
!       }
!       else if (this.parent) {
!               if (!this.parent._childAnchors) this.parent._childAnchors = {};
!               var a = this.parent._childAnchors;
!               a[this.id] = anchor;
!               this.parent._updateAnchor(this.id);
!       }
!       else this._saveAnchor = anchor;
  };
  p.setTextSelectable=function(b) {
--- 119,123 ----
                if (this.css) this.elm.innerHTML = html;
        }
!       if(this._hasContentEvents) this.invokeEvent('contentchange');   
  };
  p.setTextSelectable=function(b) {
***************
*** 262,298 ****
        // && this.captureMouseEvents && !this._hasMouseEvents) 
this.captureMouseEvents();
  };
- 
- p.setX=function(x) {this.setLocation(x,null)};
- p.setY=function(y) {this.setLocation(null,y)};
- p.getX=function() {return this.x||0};
- p.getY=function() {return this.y||0};
- p.setPageX = function(x) {this.setPageLocation(x,null)};
- p.setPageY = function(y) {this.setPageLocation(null,y)};
- 
- p.getVisible=function() {return this.visible};
- 
- p.setZIndex=function(z) {
-       if (typeof(z)=="object") {
-               if (z.above) this.z = z.above.z + 1;
-               else if (z.below) this.z = z.below.z - 1;
-               else if (z.topmost && this.parent) {
-                       var topZ=10000,ch=this.parent.children;
-                       for(var i=0;i<ch.length;i++) if (ch[i].z>topZ) topZ=ch[i].z;
-                       this.parent._topZ = topZ+1;
-                       this.z = this.parent._topZ;
-               }
-       }
-       else this.z = z;
-       if (this.css) this.css.zIndex = this.z;
- };
- p.getZIndex=function() {return this.z};
- 
- p.getHTML = function() {return this.html};
- p.setWidth=function(w) {this.setSize(w,null)};
- p.setHeight=function(h) {this.setSize(null,h)};
- p.getWidth=function() {return this.w||0};
- p.getHeight=function() {return this.h||0};
- p.getBgImage=function() {return this.bgImage};
- p.getBgColor=function() {return this.bgColor};
  p.getCursor = function() {return this._cursor};
  p.setCursor = function(c) {
--- 127,130 ----
***************
*** 304,316 ****
        }               
  };
- p.setBgColor=function(c) {
-       if (c==null) c = 'transparent';
-       this.bgColor = c;
-       if (this.css) this.css.backgroundColor = c;
- };
- p.setBgImage=function(path) {
-       this.bgImage=path;
-       if (this.css) this.css.backgroundImage='url('+path+')';
- };
  p.getContentWidth=function() {
        if (this.elm==null) return 0;
--- 136,139 ----
***************
*** 325,348 ****
                if (dynapi.ua.platform=="mac") return this.elm.offsetHeight;
                return parseInt(this.elm.scrollHeight);
-       }
- };
- p.setClip=function(clip) {
-       var cc=this.getClip();
-       for (var i=0;i<clip.length;i++) if (clip[i]==null) clip[i]=cc[i];
-       this.clip=clip;
-       if (this.css==null) return;
-       var c=this.css.clip;
-       this.css.clip="rect("+clip[0]+"px "+clip[1]+"px "+clip[2]+"px "+clip[3]+"px)";
- };
- p.getClip=function() {
-       if (this.css==null || !this.css.clip) return [0,0,0,0];
-       var c = this.css.clip;
-       if (c) {
-               if (c.indexOf("rect(")>-1) {
-                       c=c.split("rect(")[1].split(")")[0].split("px");
-                       for (var i=0;i<c.length;i++) c[i]=parseInt(c[i]);
-                       return [c[0],c[1],c[2],c[3]];
-               }
-               else return [0,this.w,this.h,0];
        }
  };
--- 148,151 ----

Index: dynlayer_ns4.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/dynlayer_ns4.js,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** dynlayer_ns4.js     9 Mar 2003 22:21:46 -0000       1.4
--- dynlayer_ns4.js     26 Mar 2003 02:22:31 -0000      1.5
***************
*** 1,70 ****
  /*
        DynAPI Distribution
!       DynLayer Class
  
        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
        
!       requires: dynapi.api.DynDocument
  */
  
! function DynLayer(html,x,y,w,h,color) {
!       this.DynElement = DynElement;
!       this.DynElement();
!       
!       if (html && html.constructor==Object){
!               var args=html; // dictionary input
!               html=args.html;
!               x = args.x;
!               y = args.y;
!               w = args.w;
!               h = args.h;
!               color = args.color;
!               this.visible = (args.visible||true);
!               this.z = (args.zIndex||1);
!               this._saveAnchor = args.anchor;
!               this._textSelectable = (args.textSelectable||true);
!               if (args.id) this.setID(args.id,true);
!       }
!       else {
!               this.visible = true;
!               this.z = 1;
!               this._saveAnchor = false;
!               this._textSelectable = true;
!       }
!       
!       this.html = html;
!       this.x = x;
!       this.y = y;
!       this.w = w;
!       this.h = h;
!       this.bgColor = color;
!       this.elm = null;
!       this.doc = null;
!       this.css = null;
! };
! var p = dynapi.setPrototype('DynLayer','DynElement');
! p._destroy = function() {
!       for (var i=0;i<this.children.length;i++) {
!               this.children[i]._destroy();
!       }
!       this.removeAllEventListeners();
!       if (this.elm) this._remove();
!       DynObject.all[this.id] = null;
!       this.children = null;
!       this.frame = null;
!       
!       this.bgImage = null;
!       this.bgColor = null;
!       this.html = null;
!       this.x = null;
!       this.y = null;
!       this.w = null;
!       this.h = null;
!       this.z = null;
!       this.doc = null;
!       this.css = null;
!       this._dyndoc = null;
!       this.parent = null;
! };
  p._remove = function() {
        if (this.elm) {
--- 1,12 ----
  /*
        DynAPI Distribution
!       DynLayer NS4 Specific Functions
  
        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
        
!       requires: dynapi.api.DynLayerBase
  */
  
! p = DynLayer.prototype;
  p._remove = function() {
        if (this.elm) {
***************
*** 89,93 ****
  p._create = function() {
        if (this.parent && !this.elm) {
!               DynElement._flagEvent(this,'precreate');
                var parentElement = this.parent.isClass('DynLayer')? this.parent.elm : 
this.parent.frame;
                var elm = new Layer(this.w||0, parentElement);
--- 31,35 ----
  p._create = function() {
        if (this.parent && !this.elm) {
!               DynElement._flagPreCreate(this);
                var parentElement = this.parent.isClass('DynLayer')? this.parent.elm : 
this.parent.frame;
                var elm = new Layer(this.w||0, parentElement);
***************
*** 110,122 ****
                DynLayer._assignElement(this,elm);
                //if (this.updateLayout) this.updateLayout();
!               DynElement._flagEvent(this,'create');
        }
  };
- p._createInserted = function(){
-       DynLayer._assignElement(this,null);
-       DynElement._flagEvent(this,'create');
- };
  DynLayer._assignElement = function(dlyr,elm) {
!       if (!elm) elm = dlyr.parent.doc.layers[dlyr.id];
        dlyr.elm = elm;
        dlyr.css = elm;
--- 52,63 ----
                DynLayer._assignElement(this,elm);
                //if (this.updateLayout) this.updateLayout();
!               DynElement._flagCreate(this);
        }
  };
  DynLayer._assignElement = function(dlyr,elm) {
!       if (!elm) {
!               elm = dlyr.parent.doc.layers[dlyr.id];
!               if (!elm) {dlyr._create();return}; // force create() for missing 
inline layer
!       }
        dlyr.elm = elm;
        dlyr.css = elm;
***************
*** 150,156 ****
                ((this.w!=null)? ' width='+this.w:''),
                ((this.h!=null)? ' height='+this.h:''),
!               ((this.z)? ' z-index:'+this.z:''), clip,
!               ((this.bgColor!=null)? ' bgcolor="'+this.bgColor+'"':'')+'>',
!               this.getInnerHTML(),'</layer>'
        ];      
        return s.join('');
--- 91,97 ----
                ((this.w!=null)? ' width='+this.w:''),
                ((this.h!=null)? ' height='+this.h:''),
!               ((this.z)? ' z-index:'+this.z:''), 
!               ((this.bgColor!=null)? ' bgcolor="'+this.bgColor+'"':''),
!               clip,'>',this.getInnerHTML(),'</layer>'
        ];      
        return s.join('');
***************
*** 175,178 ****
--- 116,120 ----
                else if (cy) this.css.top = this.y;
        }
+       if(this._hasLocationEvents) this.invokeEvent('locationchange'); 
        return (cx||cy);
  };
***************
*** 199,202 ****
--- 141,172 ----
  p.getPageX = function() {return this.css? this.css.pageX : null};
  p.getPageY = function() {return this.css? this.css.pageY : null};
+ 
+ p._bor_tp={h:1,anchor:{top:0,left:0,right:0}};
+ p._bor_rt={w:1,anchor:{top:0,right:0,bottom:0}};
+ p._bor_bm={h:1,anchor:{bottom:0,left:0,right:0}};
+ p._bor_lt={w:1,anchor:{top:0,left:0,bottom:0}};
+ p.setBorder = function(w,h){
+       w = (w!=null)? w:0;
+       c = (c!=null)? c:'#000000';
+       if(!this._borTp){
+               // create border layers
+               this.addChild(new DynLayer(this._bor_tp),'_borTp');//top
+               this.addChild(new DynLayer(this._bor_rt),'_borRt');//right             
 
+               this.addChild(new DynLayer(this._bor_bm),'_borBm');//bottom
+               this.addChild(new DynLayer(this._bor_lt),'_borLt'); //left
+       }
+       // width
+       this._borTp.setHeight(w);
+       this._borRt.setWidth(w);
+       this._borBm.setHeight(w);
+       this._borLt.setWidth(w);
+       // color
+       this._borTp.setBgColor(c);              
+       this._borRt.setBgColor(c);              
+       this._borBm.setBgColor(c);              
+       this._borLt.setBgColor(c);
+       // update anchors       
+       if (this._updateAnchors) this._updateAnchors(); 
+ };
  p.setVisible = function(b) {
        if (b!=this.visible) {
***************
*** 206,209 ****
--- 176,185 ----
  };
  p.setSize = function(w,h) {
+       if (this._useMinSize||this._useMaxSize){
+               if (this.minW && w<this.minW) w=this.minW;
+               if (this.minH && h<this.minH) h=this.minH;
+               if (this.maxW && w>this.maxW) w=this.maxW;
+               if (this.maxH && h>this.maxH) h=this.maxH;
+       }
        var cw = (w!=null && w!=this.w);
        var ch = (h!=null && h!=this.h);
***************
*** 218,221 ****
--- 194,198 ----
                }
        }
+       if(this._hasResizeEvents) this.invokeEvent('resize');
        return (cw||ch);
  };
***************
*** 233,257 ****
                }
        }
  };
- p.getAnchor = function(){
-       if(!this.parent) return this._saveAnchors;
-       else if (this.parent._childAnchors) {
-               return this.parent._childAnchors[this.id];
-       }
- };
- p.setAnchor = function(anchor) {
-       if (anchor == null) {
-               delete this._saveAnchor;
-               if (this.parent && this.parent._childAnchors && 
this.parent._childAnchors[this.is]) delete this.parent._childAnchors[this.is];
-       }
-       else if (this.parent) {
-               if (!this.parent._childAnchors) this.parent._childAnchors = {};
-               var a = this.parent._childAnchors;
-               a[this.id] = anchor;
-               this.parent._updateAnchor(this.id);
-       }
-       else this._saveAnchor = anchor;
- };
- 
  p.setTextSelectable=function(b) {
        this._textSelectable = b
--- 210,215 ----
                }
        }
+       if(this._hasContentEvents) this.invokeEvent('contentchange');
  };
  p.setTextSelectable=function(b) {
        this._textSelectable = b
***************
*** 263,296 ****
        // && this.captureMouseEvents && !this._hasMouseEvents) 
this.captureMouseEvents();
  };
- 
- p.setX=function(x) {this.setLocation(x,null)};
- p.setY=function(y) {this.setLocation(null,y)};
- p.getX=function() {return this.x||0};
- p.getY=function() {return this.y||0};
- p.setPageX = function(x) {this.setPageLocation(x,null)};
- p.setPageY = function(y) {this.setPageLocation(null,y)};
- p.getVisible=function() {return this.visible};
- p.setZIndex=function(z) {
-       if (typeof(z)=="object") {
-               if (z.above) this.z = z.above.z + 1;
-               else if (z.below) this.z = z.below.z - 1;
-               else if (z.topmost && this.parent) {
-                       var topZ=10000,ch=this.parent.children;
-                       for(var i=0;i<ch.length;i++) if (ch[i].z>topZ) topZ=ch[i].z;
-                       this.parent._topZ = topZ+1;
-                       this.z = this.parent._topZ;
-               }
-       }
-       else this.z = z;
-       if (this.css) this.css.zIndex = this.z;
- };
- p.getZIndex=function() {return this.z};
- p.getHTML = function() {return this.html};
- p.setWidth=function(w) {this.setSize(w,null)};
- p.setHeight=function(h) {this.setSize(null,h)};
- p.getWidth=function() {return this.w||0};
- p.getHeight=function() {return this.h||0};
- p.getBgImage=function() {return this.bgImage};
- p.getBgColor=function() {return this.bgColor};
  p.getCursor = function() {return this._cursor};
  p.setCursor = function(c) {
--- 221,224 ----

Index: dynlayer_opera.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/dynlayer_opera.js,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** dynlayer_opera.js   9 Mar 2003 22:21:46 -0000       1.4
--- dynlayer_opera.js   26 Mar 2003 02:22:31 -0000      1.5
***************
*** 1,9 ****
  /*
        DynAPI Distribution
!       DynLayer Class
  
        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
        
!       requires: dynapi.api.DynDocument
  */
  
--- 1,9 ----
  /*
        DynAPI Distribution
!       DynLayer Opera Specific Functions
  
        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
        
!       requires: dynapi.api.DynLayerBase
  */
  
***************
*** 16,101 ****
  // the all[] collection is not available 
  
! function DynLayer(html,x,y,w,h,color) {
!       this.DynElement = DynElement;
!       this.DynElement();
! 
!       if (html && html.constructor==Object){
!               var args=html; // dictionary input
!               html=args.html;
!               x = args.x;
!               y = args.y;
!               w = args.w;
!               h = args.h;
!               color = args.color;
!               this.visible = (args.visible||true);
!               this.z = (args.zIndex||1);
!               this._saveAnchor = args.anchor;
!               this._textSelectable = (args.textSelectable||true);
!               if (args.id) this.setID(args.id,true);
!       }
!       else {
!               this.visible = true;
!               this.z = 1;
!               this._saveAnchor = false;
!               this._textSelectable = true;
!       }
!       
!       this.html = html;
!       this.x = x;
!       this.y = y;
!       this.w = w;
!       this.h = h;
!       this.bgColor = color;
!       this.elm = null;
!       this.doc = null;
!       this.css = null;
! };
! var p = dynapi.setPrototype('DynLayer','DynElement');
! p._destroy = function() {
!       for (var i=0;i<this.children.length;i++) {
!               this.children[i]._destroy();
!       }
!       this.removeAllEventListeners();
!       if (this.elm) this._remove();
!       DynObject.all[this.id] = null;
!       this.children = null;
!       this.frame = null;
!       
!       this.bgImage = null;
!       this.bgColor = null;
!       this.html = null;
!       this.x = null;
!       this.y = null;
!       this.w = null;
!       this.h = null;
!       this.z = null;
!       this.doc = null;
!       this.css = null;
!       this._dyndoc = null;
!       this.parent = null;
! };
! p._remove = function() {
!       if (this.elm) {
!               //this.elm.style.visibility = "hidden";
!               this.elm.innerHTML = "";
!               this.elm.outerHTML = "";
!               this.elm = null;
!               if (this.releaseMouseEvents) this.releaseMouseEvents();
!               if (this.releaseKeyEvents) this.releaseKeyEvents();
!       }
!       /*this.frame = null;
!       this.bgImage = null;
!       this.bgColor = null;
!       this.html = null;
!       this.z = null;
!       this.w = null;
!       this.h = null;
!       this.elm = null;
!       this.doc = null;
!       this.css = null;*/
! };
  p._create = function() {
        if (this.parent && !this.elm) {
!               DynElement._flagEvent(this,'precreate');
                var elm, parentElement;
                parentElement = this.parent.elm;
--- 16,23 ----
  // the all[] collection is not available 
  
! p = DynLayer.prototype;
  p._create = function() {
        if (this.parent && !this.elm) {
!               DynElement._flagPreCreate(this);
                var elm, parentElement;
                parentElement = this.parent.elm;
***************
*** 106,119 ****
                
                DynLayer._assignElement(this,elm);
!               DynElement._flagEvent(this,'create');
        }
  };
- p._createInserted = function(divs){
-       DynLayer._assignElement(this,null,divs);
-       DynElement._flagEvent(this,'create');
- };
  DynLayer._assignElement = function(dlyr,elm,divs) {
!       if (!elm ) elm = (divs)? divs[dlyr.id] : 
dlyr.parent.doc.getElementById(dlyr.id);
! //    if (!elm) elm = dlyr.parent.elm.all[dlyr.id];
        dlyr.elm = elm;
        dlyr.css = elm.style;
--- 28,39 ----
                
                DynLayer._assignElement(this,elm);
!               DynElement._flagCreate(this);
        }
  };
  DynLayer._assignElement = function(dlyr,elm,divs) {
!       if (!elm ) {
!               elm = (divs)? divs[dlyr.id] : dlyr.parent.doc.getElementById(dlyr.id);
!               if (!elm) {dlyr._create();return}; // force create() for missing 
inline layer
!       }
        dlyr.elm = elm;
        dlyr.css = elm.style;
***************
*** 137,171 ****
        if (dlyr._hasKeyEvents) dlyr.captureKeyEvents();
  };
- p.getOuterHTML=function() {
-       var s,bgimage='',clip='';
-       if(this.bgImage!=null) bgimage=' background-image:url('+this.bgImage+');';
-       else if (this.bgImage==null && this.html==null) bgimage=' 
background-image:none;';
-       if (this.clip) clip=' clip:rect('+this.clip[0]+'px '+this.clip[1]+'px 
'+this.clip[2]+'px '+this.clip[3]+'px);';
-       else if (this.w!=null && this.h!=null) clip=' clip:rect(0px '+this.w+'px 
'+this.h+'px 0px);';
-       s=[
-               '<div id="'+this.id+'" style="',
-               ((this.visible==false)? ' visibility:hidden;':' visibility:inherit;'),
-               ' left:',(this.x!=null? this.x : 0),'px;',
-               ' top:',(this.y!=null? this.y : 0),'px;',
-               ((this.w!=null)? ' width:'+this.w+'px;':''),
-               ((this.h!=null)? ' height:'+this.h+'px;':''),
-               ((this.z)? ' z-index:'+this.z+';':''),
-               ((this._cursor!=null)? ' cursor:'+this._cursor+';':''),
-               ((this._overflow!=null)? ' overflow:hidden;':''),
-               ((this.bgColor!=null)? ' background-color:'+this.bgColor+';':''),
-               bgimage,
-               clip,
-               ' position:absolute;">',
-               this.getInnerHTML(),
-               '</div>'
-       ];
-       return  s.join('');
- };
- p.getInnerHTML=function() {
-       var i,s = '';
-       if (this.html!=null) s+=this.html;
-       for (i=0;i<this.children.length;i++) s+=this.children[i].getOuterHTML();
-       return s;
- };
  p.setLocation=function(x,y) {
        var cx = (x!=null && x!=this.x);
--- 57,60 ----
***************
*** 177,180 ****
--- 66,70 ----
                if (cy) this.css.pixelTop = this.y;
        }
+       if(this._hasLocationEvents) this.invokeEvent('locationchange');         
        return (cx||cy);
  };
***************
*** 192,219 ****
        return this.setLocation(x,y);
  };
- p.getPageX=function() {return (this.isChild)? this.parent.getPageX()+(this.x||0) : 
this.x||0};
- p.getPageY=function() {return (this.isChild)? this.parent.getPageY()+(this.y||0) : 
this.y||0};
- p.setVisible=function(b) {
-       //if (b!=this.visible) {
-               this.visible = b;
-               if (this.css) this.css.visibility = b? "inherit" : "hidden";
-       //}
- };
- p.setSize = function(w,h) {
-       var cw = (w!=null && w!=this.w);
-       var ch = (h!=null && h!=this.h);
-       if (cw) this.w = w<0? 0 : w;
-       if (ch) this.h = h<0? 0 : h;
-       if (cw||ch) {
-               if (this._updateAnchors) this._updateAnchors();
-               if (this.css) {
-                       if (cw) this.css.width = this.w||0;
-                       if (ch) this.css.height = this.h||0;
-                       if (cw || ch) this.css.clip = 'rect(0px '+(this.w||0)+'px 
'+(this.h||0)+'px 0px)';
-                       if (this.updateLayout) this.updateLayout();
-               }
-       }
-       return (cw||ch);
- };
  p.setHTML = function(html) {
        if (html!=this.html) {
--- 82,85 ----
***************
*** 221,243 ****
                if (this.css) this.elm.innerHTML = html;
        }
! };
! p.getAnchor = function(){
!       if(!this.parent) return this._saveAnchors;
!       else if (this.parent._childAnchors) {
!               return this.parent._childAnchors[this.id];
!       }
! };
! p.setAnchor = function(anchor) {
!       if (anchor == null) {
!               delete this._saveAnchor;
!               if (this.parent && this.parent._childAnchors && 
this.parent._childAnchors[this.is]) delete this.parent._childAnchors[this.is];
!       }
!       else if (this.parent) {
!               if (!this.parent._childAnchors) this.parent._childAnchors = {};
!               var a = this.parent._childAnchors;
!               a[this.id] = anchor;
!               this.parent._updateAnchor(this.id);
!       }
!       else this._saveAnchor = anchor;
  };
  p.setTextSelectable=function(b) {
--- 87,91 ----
                if (this.css) this.elm.innerHTML = html;
        }
!       if(this._hasContentEvents) this.invokeEvent('contentchange');
  };
  p.setTextSelectable=function(b) {
***************
*** 247,282 ****
        // && this.captureMouseEvents && !this._hasMouseEvents) 
this.captureMouseEvents();
  };
- 
- p.setX=function(x) {this.setLocation(x,null)};
- p.setY=function(y) {this.setLocation(null,y)};
- p.getX=function() {return this.x||0};
- p.getY=function() {return this.y||0};
- p.setPageX = function(x) {this.setPageLocation(x,null)};
- p.setPageY = function(y) {this.setPageLocation(null,y)};
- 
- p.getVisible=function() {return this.visible};
- 
- p.setZIndex=function(z) {
-       if (typeof(z)=="object") {
-               if (z.above) this.z = z.above.z + 1;
-               else if (z.below) this.z = z.below.z - 1;
-               else if (z.topmost && this.parent) {
-                       var topZ=10000,ch=this.parent.children;
-                       for(var i=0;i<ch.length;i++) if (ch[i].z>topZ) topZ=ch[i].z;
-                       this.parent._topZ = topZ+1;
-                       this.z = this.parent._topZ;
-               }
-       }
-       else this.z = z;
-       if (this.css) this.css.zIndex = this.z;
- };
- p.getZIndex=function() {return this.z};
- p.getHTML = function() {return this.html};
- p.setWidth=function(w) {this.setSize(w,null)};
- p.setHeight=function(h) {this.setSize(null,h)};
- p.getWidth=function() {return this.w||0};
- p.getHeight=function() {return this.h||0};
- p.getBgImage=function() {return this.bgImage};
- p.getBgColor=function() {return this.bgColor};
  p.getCursor = function() {return this._cursor};
  p.setCursor = function(c) {
--- 95,98 ----
***************
*** 288,300 ****
        }               
  };
- p.setBgColor=function(c) {
-       if (c==null) c = 'transparent';
-       this.bgColor = c;
-       if (this.css) this.css.backgroundColor = c;
- };
- p.setBgImage=function(path) {
-       this.bgImage=path;
-       if (this.css) this.css.backgroundImage='url('+path+')';
- };
  p.getContentWidth=function() {
        if (this.elm==null) return 0;
--- 104,107 ----
***************
*** 309,332 ****
                if (dynapi.ua.platform=="mac") return this.elm.offsetHeight;
                return parseInt(this.elm.scrollHeight);
-       }
- };
- p.setClip=function(clip) {
-       var cc=this.getClip();
-       for (var i=0;i<clip.length;i++) if (clip[i]==null) clip[i]=cc[i];
-       this.clip=clip;
-       if (this.css==null) return;
-       var c=this.css.clip;
-       this.css.clip="rect("+clip[0]+"px "+clip[1]+"px "+clip[2]+"px "+clip[3]+"px)";
- };
- p.getClip=function() {
-       if (this.css==null || !this.css.clip) return [0,0,0,0];
-       var c = this.css.clip;
-       if (c) {
-               if (c.indexOf("rect(")>-1) {
-                       c=c.split("rect(")[1].split(")")[0].split("px");
-                       for (var i=0;i<c.length;i++) c[i]=parseInt(c[i]);
-                       return [c[0],c[1],c[2],c[3]];
-               }
-               else return [0,this.w,this.h,0];
        }
  };
--- 116,119 ----

Index: event.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/event.js,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** event.js    9 Mar 2003 22:21:46 -0000       1.4
--- event.js    26 Mar 2003 02:22:31 -0000      1.5
***************
*** 5,12 ****
        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
  */
- 
  function DynEvent(type,src) {
-       this.DynObject = DynObject;
-       this.DynObject();
        this.type = type;
        this.src = src;
--- 5,9 ----
***************
*** 17,22 ****
        this.defaultValue = true;
  };
! var p = dynapi.setPrototype('DynEvent','DynObject');
! 
  p.getType = function() {return this.type};
  p.getSource = function() {return this.src};
--- 14,18 ----
        this.defaultValue = true;
  };
! var p = DynEvent.prototype; 
  p.getType = function() {return this.type};
  p.getSource = function() {return this.src};
***************
*** 39,48 ****
                for (var i=0;i<this._listeners.length;i++) if (this._listeners[i]==el) 
return;
                this._listeners[this._listeners.length] = el;           
!               // use onCreate() and onPrecreate() instead
!               //this._hasCreateEvent=(el['oncreate'])? true:this._hasCreateEvent;
!               //this._hasPrecreateEvent=(el['onprecreate'])? 
true:this._hasPrecreateEvent;            
                this._hasDragEvents=(el['ondragstart']||el['ondragmove']||
                                                        
el['ondragend']||el['ondragdrop']||
!                                                       
el['ondragover']||el['ondragout'])? true:this._hasDragEvents;                          
                                 
  
                if (this.captureMouseEvents) {
--- 35,45 ----
                for (var i=0;i<this._listeners.length;i++) if (this._listeners[i]==el) 
return;
                this._listeners[this._listeners.length] = el;           
!               // Use onCreate() and onPrecreate() function for create events
!               this._hasContentEvents=(el['oncontentchange'])? 
true:this._hasContentEvents;
!               this._hasLocationEvents=(el['onlocationchange'])? 
true:this._hasLocationEvents;
!               this._hasResizeEvents=(el['onresize'])? true:this._hasResizeEvents;
                this._hasDragEvents=(el['ondragstart']||el['ondragmove']||
                                                        
el['ondragend']||el['ondragdrop']||
!                                                       
el['ondragover']||el['ondragout'])? true:this._hasDragEvents;
  
                if (this.captureMouseEvents) {
***************
*** 113,129 ****
        this._childAnchors = [];
  };
  DynElement._flagEvent = function(c,type) {
-       if (type=="create") c._created = true;  
-       if (type=='precreate'||type=='create') {
-               // Raise onCreate/onPreCreate callback Flag
-               if (c._hasPCreateFn||c._hasCreateFn) c._flagCreateEvent(type);         
 
-       }else{
-               // Raise other events;
-               c.invokeEvent(type);
-       }
        var ch=c.children;
!       for (var i=0; i<ch.length; i++) {
!               DynElement._flagEvent(ch[i],type);
!       }
  };
  p = dynapi.setPrototype('DynElement','EventObject');
--- 110,128 ----
        this._childAnchors = [];
  };
+ DynElement._flagCreate = function(c){ // much faster than using DynElemnt._flagEvent
+       var ch=c.children;
+       c._created = true;
+       if (c._hasCreateFn) c._flagCreateEvent('create');               
+       for (var i=0; i<ch.length; i++) this._flagCreate(ch[i]);
+ };
+ DynElement._flagPreCreate = function(c){
+       var ch=c.children;
+       if (c._hasPCreateFn) c._flagCreateEvent('precreate');           
+       for (var i=0; i<ch.length; i++) this._flagCreate(ch[i]);
+ };
  DynElement._flagEvent = function(c,type) {
        var ch=c.children;
!       c.invokeEvent(type);
!       for (var i=0; i<ch.length; i++) this._flagEvent(ch[i],type);
  };
  p = dynapi.setPrototype('DynElement','EventObject');



-------------------------------------------------------
This SF.net email is sponsored by: ValueWeb: 
Dedicated Hosting for just $79/mo with 500 GB of bandwidth! 
No other company gives more support or power for your dedicated server
http://click.atdmt.com/AFF/go/sdnxxaff00300020aff/direct/01/
_______________________________________________
Dynapi-CVS mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dynapi-cvs

Reply via email to