egroupware_official/phpgwapi/js/dynapi/api/ext/dynlayer.inline.js
2005-06-18 22:15:15 +00:00

124 lines
3.5 KiB
JavaScript

/*
DynAPI Distribution
DynLayer Inline Extension
The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
requires: dynapi.api.DynLayer
*/
var DynLayerInline = {};
DynLayer.getInline = function (id, p) {
var elm;
var pobj;
if (!p) pobj = dynapi.document;
else if (p.isClass && p.isClass('DynElement')) pobj = p;
if (pobj) {
if (dynapi.ua.ns4) elm = pobj.doc.layers[id];
else if (dynapi.ua.ie) elm = pobj.doc.all[id];
else if (dynapi.ua.dom) elm = pobj.doc.getElementById(id);
}
if (!elm) return alert("DynLayerInline Error: did not find element "+id);
var dlyr = new DynLayer();
dlyr.setID(id);
dlyr.parent = pobj;
dlyr.elm = elm;
if (dynapi.ua.ns4) dlyr.doc = elm.document;
DynLayer._importInlineValues(dlyr);
DynLayer._assignElement(dlyr,elm);
DynElement._flagCreate(dlyr);
return dlyr;
};
DynLayer.prototype._createInline = function (divs) {
if (this.parent && !this.elm) {
var ch=this.children;
DynLayer._assignElement(this,null,divs);
DynLayer._importInlineValues(this);
for (var i=0;i<ch.length;i++) DynLayer._importInlineValues(ch[i]);
DynElement._flagCreate(this);
}
};
DynLayer._importInlineValues = function(dlyr) {
if(dlyr && dlyr._noInlineValues) return;
if (dynapi.ua.def) {
if (dynapi.ua.ie) {
var css = dlyr.elm.currentStyle;
dlyr.x = parseInt(css.left);
dlyr.y = parseInt(css.top);
dlyr.w = dynapi.ua.ie4? css.pixelWidth : dlyr.elm.offsetWidth;
dlyr.h = dynapi.ua.ie4? css.pixelHeight : dlyr.elm.offsetHeight;
dlyr.bgImage = css.backgroundImage;
dlyr.bgColor = css.backgroundColor;
dlyr.html = dlyr.elm.innerHTML;
}
else if (dynapi.ua.dom) {
var css = dlyr.elm.style;
dlyr.x = parseInt(dlyr.elm.offsetLeft);
dlyr.y = parseInt(dlyr.elm.offsetTop);
dlyr.w= dlyr.elm.offsetWidth;
dlyr.h= dlyr.elm.offsetHeight;
dlyr.bgImage = css.backgroundImage;
dlyr.bgColor = css.backgroundColor;
dlyr.html = dlyr.elm.innerHTML;
}
}
else if (dynapi.ua.ns4) {
var css = dlyr.elm;
dlyr.x = parseInt(css.left);
dlyr.y = parseInt(css.top);
dlyr.w = css.clip.width;
dlyr.h = css.clip.height;
dlyr.clip = [css.clip.top,css.clip.right,css.clip.bottom,css.clip.left];
dlyr.bgColor = dlyr.doc.bgColor!=''? dlyr.doc.bgColor : null;
dlyr.bgImage = css.background.src!=''? css.background.src : null;
dlyr.html = '';
}
dlyr.z = css.zIndex;
var b = css.visibility;
dlyr.visible = (b=="inherit" || b=="show" || b=="visible" || b=="");
};
// Generate Blueprint
DynElement.prototype.getBlueprint = function(type) {
var i,c,ht,str =[];
var f,ch=this.children;
for(i=0;i<ch.length;i++) {
c = ch[i];
DynElement._flagPreCreate(c);
ht=c.getOuterHTML();
if(!type || type=='css') str[i]=ht;
else {
ht=ht.replace(/\'/g,'\\\'');
ht=ht.replace(/\r/g,'\\r');
ht=ht.replace(/\n/g,'\\n');
str[str.length]='_bw(\''+ht+'\');';
}
}
if(!type || type=='css') str=str.join('');
else str=str.join('\n');
if(type=='css') { // generate style sheet from blueprints
var ar=str.split('<div');
for(i=0;i<ar.length;i++){
ar[i]=ar[i].replace(/(.+)id="(.+)" style="(.+)"(.+)/g,'#$2 {$3}');
}
str=ar.join('');
}
return str;
};
DynElement.prototype.generateBlueprint = function(type) {
var url=dynapi.library.path+'ext/blueprint.html';
var win=window.open(url,'blueprint','width=500,height=350,scrollbars=no,status=no,toolbar=no');
var f=win.document.forms['frm'];
f.txtout.value=this.getBlueprint(type);
};
// Blueprint Document write
_bw = function(str){
document.write(str);
};