Update of /cvsroot/dynapi/dynapi2x/src/ext
In directory usw-pr-cvs1:/tmp/cvs-serv19326/src/ext

Added Files:
        debug.html debug.js functions.js library.html library.js 
Log Message:
initial import


--- NEW FILE ---
<html>
<title>DynAPI Debugger</title>
<script>

var dynapi = window.opener.dynapi;

function handleError(msg, url, lno) {
        dynapi.debug.error(msg, "Debugger", lno);
};

var win = this;
win.onload = function() {
        // move the debug window to the right edge?
        //dynapi.debug.win.clientWidth = 200;
        //win.document.body.style.width = 200; //clientWidth=200
        //alert(win.setSize)
        //alert(win.document.body.clientWidth)
        
        var w = dynapi.ua.mac? (dynapi.ua.ie?330:300) : 360;
        if (dynapi.ua.ie) {
                var f = dynapi.frame;
                var b = f.document.body;
                var x = Math.min(f.screenLeft+b.clientWidth+20,screen.width-w-10);
                dynapi.debug.win.moveTo(x,f.screenTop-50);
        }
        else if (dynapi.ua.ns4) {  
                var f = dynapi.frame;
                dynapi.debug.win.moveTo(f.screenX+f.outerWidth,f.screenY);
        }
        dynapi.debug.print();
}

if (!dynapi.ua.ns6) self.onerror = handleError;


</script>
<style type="text/css">
</style>
<body bgcolor="#D4D0C8" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" 
marginwidth="0" marginheight="0" scrolling=no style="overflow:hidden">

<script>
var stat = 'DynAPI '+dynapi.version+' ['+dynapi.ua.b+' '+dynapi.ua.v+']';
var str='<form name=debugform><font face="'+(dynapi.ua.mac?'Monaco':'Courier')+'" 
size="1">'+
        '<table cellspacing=0 cellpadding=0 border=0><tr><td colspan=2>'+
        '<textarea name="print" cols="'+(dynapi.ua.mac? (dynapi.ua.ie?42:42) :40)+'" 
rows="'+(dynapi.ua.ie?12:13)+'" wrap="off"></textarea><br>'+
        '<input type=text name="stat" size="'+(dynapi.ua.mac? (dynapi.ua.ie?44:46) 
:42)+'" style="font-family:'+(dynapi.ua.mac?'Monaco':'Courier')+';" 
value="'+stat+'"><br>'+
        '<textarea name="eval" cols="'+(dynapi.ua.mac? (dynapi.ua.ie?42:42) :40)+'" 
rows="'+(dynapi.ua.ie?7:8)+'" wrap="off"></textarea><br>'+
        '</td></tr><tr>'+
        '<td><input type=button value="Evaluate" 
onclick="window.opener.DynAPI.debug.evaluate(this.form.eval.value)"></td>'+
        '<td align=right><input type="button" value="Clear" 
onclick="{this.form.print.value=\'\'; this.form.stat.value=\'\'; 
this.form.eval.value=\'\';}"></td></tr></table>'+
        '</font></form>';
document.open();
document.write(str);
document.close();

</script>
</body>
</html>
--- NEW FILE ---
/*
        DynAPI Distribution
        Debugger

        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
*/

function Debugger() {
        this.inherit('DynObject');
        this.win = null;
        this._buffer = dynapi._debugBuffer;
        dynapi._debugBuffer = null;

        // close the debug window on unload
        this.closeOnUnLoad = false;
        dynapi.onUnload(function() {
                if (dynapi.debug.closeOnUnLoad) dynapi.debug.close();
        });

        this.open();
}
dynapi.setPrototype('Debugger','DynObject');
Debugger.prototype.isLoaded = function() {
        return (this.win!=null && typeof(this.win.document.debugform)=="object");
};
Debugger.prototype.status = function(str) {
        if (this.isLoaded()) {
                for (var i=1;i<arguments.length;i++) {
                        str += ', '+arguments[i];
                }
                this.win.document.debugform.stat.value = str;
        };
};
// lists all known properties of an object
Debugger.prototype.inspect = function(obj,showFunctions) {
        this.print('Inspecting:');
        var v;
        if (typeof(obj)=='object') {
                for (var i in obj) {
                        if (typeof(obj[i])=='undefined') v = "null";
                        else if (typeof(obj[i])=='function') {
                                if (showFunctions==false) continue;
                                else v = '[Function]';
                        }
                        else if (typeof(obj[i])=='object' && 
typeof(obj[i].length)!='undefined') v = 'Array ['+obj[i]+']';
                        else if (typeof(obj[i])=='object') v = '[Object]';
                        else v = obj[i];
                        this.print('    '+i+' = '+v);
                }
        }
        else this.print('    undefined');
};
// output text to the debug window
Debugger.prototype.print = function(s) {
        if (!s) s = '';
        else s = s + '\n';
        if (this.isLoaded()) {
                if (this._buffer != '') {  // dump buffer
                        s = this._buffer + s;
                        this._buffer = '';
                }
                this.win.document.debugform.print.value += s;
                
                // Does mozilla has something like this?
                if (dynapi.ua.ie) {
                        var po = this.win.document.debugform.print;
                        po.scrollTop = po.scrollHeight;
                        var range = po.createTextRange();
                        range.collapse(false);
                        range.select();
                }
        }
        else this._buffer += s;
};
// output a browser generated error to the debug window
Debugger.prototype.error = function(msg, url, lno) {
        if (url && url.indexOf(dynapi.documentPath)==0) {
                url = url.substring(dynapi.documentPath.length);
        }
        this.print('Error:'+ (lno? ' Line '+lno : '') +' ['+url+']\n       '+msg);
};
// evaluates an expression in the scope of the main dynapi window
Debugger.prototype.evaluate = function(str) {
        dynapi.frame.eval(str);
};
// enters text to the evaluate field in the debugger widnow
Debugger.prototype.setEvaluate = function(str) {
        if (this.isLoaded()) this.win.document.debugform.eval.value = str
};
// opens the debugger window
Debugger.prototype.open = function() {
        var p = dynapi.library.path;
        if (!this.isLoaded() && p) {
                var url = dynapi.documentPath+p+'ext/debug.html#';
                var w = dynapi.ua.mac? (dynapi.ua.ie?330:300) : 350;
                var h = dynapi.ua.mac? (dynapi.ua.ie?405:365) : dynapi.ua.ie? 420:465;
                this.win = 
window.open(url,'debugwin','width='+w+',height='+h+',scrollbars=no,status=no,toolbar=no');
  //,resizable=no
                this.win.focus();
                this.print();
                
                dynapi.frame.onerror = function(msg, url, lno) {
                        dynapi.debug.error(msg, url, lno);
                };
        }
};
Debugger.prototype.close = function() {
        if (this.isLoaded()) {
                this.win.close();
                this.win = null;
        }
};

dynapi.debug = new Debugger();

--- NEW FILE ---
/*
        DynAPI Distribution
        dynapi.functions extension
        
        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
*/

dynapi.functions.DecToHex = function(val){
        lo=val%16;
        val-=lo;
        lo+=48;
        if (lo>57) lo+=7;
        hi=val/16;
        hi+=48;
        if (hi>57) hi+=7;
        return String.fromCharCode(hi,lo);
};
dynapi.functions.getColor = function(r,g,b) { 
        return 
'#'+dynapi.functions.DecToHex(r)+dynapi.functions.DecToHex(g)+dynapi.functions.DecToHex(b);
};
dynapi.functions.getRandomColor = function() {
        var s = '';
        for (var i=0;i<3;i++) s += 
dynapi.functions.DecToHex(Math.floor(255*Math.random()));
        return s;
};
dynapi.functions.createRedPal = function(pal) {
        var r=g=b=0;
        for (var i=0; i<256; i++){
                pal[i]=dynapi.functions.getColor(r,g,b);
                r+=8;
                if (r>255) { r=255; g+=6; b+=2; }
                if (g>255) { g=255; b+=2; }
                if (b>255) { b=255; }
        }
};
dynapi.functions.createGrayPal = function(pal) {
        var r=0;
        for (var i=0; i<256; i++){
                pal[i]=dynapi.functions.getColor(r,r,r);
                r+=4;
                if (r>255) { r=255; }
        }
};
dynapi.functions.createBluePal = function(pal){
        var r=g=b=0;
        for (var i=0; i<256; i++){
                pal[i]=dynapi.functions.getColor(r,g,b);
                b+=6;
                if (b>255) { b=255; g+=2; }
                if (g>255) { g=255; r+=2; }
        }
};
dynapi.functions.createGreenPal = function(pal) {
        var r=g=b=0;
        for (var i=0; i<256; i++){
                pal[i]=dynapi.functions.getColor(r,g,b);
                g+=6;
                if (g>255) { g=255; b+=2; }
                if (b>255) { b=255; r+=2; }
        }
};
dynapi.functions.radianToDegree = function(radian) {
        return radian*180/Math.PI
};
dynapi.functions.degreeToRadian = function(degree) {
        return degree*Math.PI/180
};
dynapi.functions.sintable = function(lsin) {
        for (var i=0; i<361; i+=1) lsin[i]=Math.sin((i/180)*Math.PI);
};
dynapi.functions.costable = function(lcos) {
        for (var i=0; i<361; i+=1) lcos[i]=Math.cos((i/180)*Math.PI);
};
--- NEW FILE ---
<script>
dynapi.library._handleLoad(this);
</script>
--- NEW FILE ---
/*
        DynAPI Distribution
        Dynamic Loading extension to dynapi.library

        The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
*/

// begin loading the object
DynAPILibrary.prototype.load = function(n,fn) {
        var list = this._queue(n,null,arguments[2]);
        //return dynapi.debug.print('going to load: '+list);
        if (list.length) {
                var s,src;
                for (var i=0;i<list.length;i++) {
                        src = list[i];
                        s = this.scripts[list[i]];
                        if (i==list.length-1 && fn!=null) s.fn = fn;
                        this.loadList[this.loadList.length] = src;
                }
                this._load();
        }
        else if (fn) fn();
};

// reload the object
DynAPILibrary.prototype.reload = function(n,fn,force) {
        var s = this.objects[n];
        if (s) {
                s.loaded = false;
                this.load(n,fn,force);
        }
};

// load a script that is not added to the library
DynAPILibrary.prototype.loadScript = function(src,fn) {
        if (!this.scripts[src]) {
                var n = 'unnamed'+this._c++;
                s = this.add(n,src);  // generate a name for the script
                s.unnamed = true;
                s.fn = null;
                s.dep = [];
                this.load(n,fn);
        }
};

// inserts the script element into the page
DynAPILibrary.prototype._load = function() {
        if (this.busy) return; // dynapi.debug.print('Library Warning: busy');
        else {
                if (this.loadIndex<this.loadList.length-1) {
                        this.busy = true;
                        this.loadIndex++;
                        var src = this.loadList[this.loadIndex];
                        //if (!confirm('load: '+src+' ?')) return;
                        var rsrc = src + '?'+Math.random();     // random ensures 
cached files are not loaded
                        var s = this.scripts[src];
                        if (dynapi.ua.ns4) {
                                // delete the constructors
                                for (var j=0;j<s.objects.length;j++) {
                                        var n = s.objects[j];
                                        if (dynapi.frame[n]) {
                                                dynapi.frame[n] = null;
                                                if (s.pkg) dynapi.frame[s.pkg+'.'+n] = 
null;
                                        }
                                }
                                this.elm.src = dynapi._path+'ext/library.html?js='+src;
                        }
                        else if (dynapi.ua.ie && (dynapi.ua.v==4 || dynapi.ua.mac)) {
                                
dynapi.frame.document.body.insertAdjacentHTML('beforeEnd','<script 
language="javascript" src="'+rsrc+'" defer><\/script>');
                                this._export(src);
                        }
                        else {
                                var elm = s.elm = 
dynapi.frame.document.createElement('script');
                                elm.src = rsrc;
                                elm.type = 'text/javascript';
                                elm.defer = true;
                                if (dynapi.ua.ie) {
                                        elm.C = 0;
                                        var o = this;
                                        elm.onreadystatechange = function() {
                                                elm.C++;
                                                if (elm.C==2 || 
elm.readyState=="complete") {  // use 2nd statechange for onload
                                                        o._export(src);
                                                }
                                        }
                                }
                                
dynapi.frame.document.getElementsByTagName('head')[0].appendChild(elm);
                                
                                // I could not find way to know when the script is 
complete in Moz v0.9.3
                                if (dynapi.ua.ns6) 
setTimeout(this+'._export("'+src+'")',100);
                        }
                }
        }
};

// executed after a script is finished loading, run main() functions
DynAPILibrary.prototype._export = function(src) {
        var src = this.loadList[this.loadIndex];
        var s = this.scripts[src];
        if (s) {
                this._register(s);

                // run elm.main)() before global main()
                if (dynapi.ua.ns4 && typeof(this.elm.main)=="function") {
                        this.elm.main();
                        this.elm.main = null;
                }
                                
                // run global main() if available
                if (typeof(main)=="function") {
                        main();
                        main = null;
                }

                // clear out all functions in the layer's scope
                if (dynapi.ua.ns4) {
                        for (var i in this.elm) {
                                if (typeof(this.elm[i])=="function") delete 
this.elm[i];
                        }
                }
                this.busy = false;

                // load next file
                this._load();
        }
        //else return alert('Library Error: unknown script '+src);
};

// registers the script as loaded, exports the objects
DynAPILibrary.prototype._register = function(s) {
        //dynapi.debug.print('loaded "'+s.src+'"');
        s.loaded = true;
        s.queued = false;
        if (!s.unnamed) {
                var n,found;
                // loop through each object that the script contains
                for (var i=0;i<s.objects.length;i++) {
                        found = false;
                        n = s.objects[i];
                        
                        // scope local objects in the layer to the DynAPI frame
                        if (dynapi.ua.ns4 && this.elm && 
typeof(this.elm[n])!="undefined") {
                                dynapi.frame[n] = this.elm[n];
                                found = true;
                        }
                        else if (typeof(dynapi.frame[n])!="undefined") found = true;
                        else if (n.indexOf('.')>0) {
                                var ns = n.split('.'), o = dynapi.frame, b = false;
                                for (var j=0;j<ns.length;j++) {
                                        o = o[ns[j]];
                                }
                                if (typeof(o)!="undefined") found = true;
                        }
                        else if (typeof(dynapi[n])!="undefined") found = true;
                        
                        if (found) {
                                if (s.pkg) {
                                        // make package link: dynapi.api.DynLayer = 
DynLayer
                                        if (s.pkg!="dynapi") this.packages[s.pkg][n] = 
dynapi.frame[n];
                                        n = s.pkg+'.'+n;
                                }
                                dynapi.debug.print('loaded ['+n+']');
                        }
                        else {
                                dynapi.debug.print('Library Error: could not find 
['+n+']');
                        }
                }
        }
        // run handler if available
        if (s.fn) {
                s.fn();
                delete s.fn;
        }
};

// called from /lib/dynapi/library.html to write the <script>, NS4 only
DynAPILibrary.prototype._handleLoad = function(elm) {
        var args = dynapi.functions.getURLArguments(elm.src);
        var js = args["js"];
        if (js) {
                if (js.indexOf('http')!=0) {
                        var l = dynapi.frame.document.location;
                        if (js.substr(0,1)=='/') js = l.port+'//'+host+src;
                        else js = dynapi.documentPath+js;
                }
                elm.document.write('<script language="JavaScript" 
src="'+js+'?r'+Math.random()+'"><\/script>');
                elm.document.close();
                elm.onload = function() {
                        dynapi.library._export(js);
                }
        }
};

// inserts the layer for NS4, register included scripts
DynAPILibrary.prototype._create = function() {
        // ensure a previous main function is wiped out
        if (typeof(main)=="function") main = null;
                
        // register objects from scripts included by dynapi.library.include() or 
manually
        var s;
        for (var i in this.scripts) {
                s = this.scripts[i];
                if (s.loaded || (s.objects[0] && dynapi.frame[s.objects[0]])) 
this._register(s);
        }
        
        // create NS4 layer to load scripts into
        if (dynapi.ua.ns4) this.elm = new Layer(0, dynapi.frame);
        this.busy = false;
        
        // load any scripts before proceeding
        if (this.loadList.length) {
                var s = this.scripts[this.loadList[this.loadList.length-1]];
                s.fn = function() {
                        setTimeout('dynapi._onLoad()',1);
                }
                this._load();
        }
        else setTimeout('dynapi._onLoad()',1);
};


_______________________________________________
Dynapi-CVS mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dynapi-cvs

Reply via email to