Subversion Repositories wimsdev

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.         DynAPI Distribution
  3.         DynLayer Inline Extension
  4.  
  5.         The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
  6.        
  7.         requires: dynapi.api.DynLayer
  8. */
  9.  
  10. var DynLayerInline = {};
  11.  
  12. DynLayer.getInline = function (id, p) {
  13.         var elm;
  14.         var pobj;
  15.         if (!p) pobj = dynapi.document;
  16.         else if (p.isClass && p.isClass('DynElement')) pobj = p;
  17.        
  18.         if (pobj) {
  19.                 if (dynapi.ua.ns4) elm = pobj.doc.layers[id];
  20.                 else if (dynapi.ua.ie) elm = pobj.doc.all[id];
  21.                 else if (dynapi.ua.dom) elm = pobj.doc.getElementById(id);
  22.         }
  23.         if (!elm) return alert("DynLayerInline Error: did not find element "+id);
  24.  
  25.         var dlyr = new DynLayer();
  26.         dlyr.setID(id);
  27.         dlyr.parent = pobj;
  28.         dlyr.elm = elm;
  29.         if (dynapi.ua.ns4) dlyr.doc = elm.document;
  30.         DynLayer._importInlineValues(dlyr);
  31.         DynLayer._assignElement(dlyr,elm);
  32.         DynElement._flagCreate(dlyr);
  33.         return dlyr;
  34. };
  35.  
  36. DynLayer.prototype._createInline = function (divs) {
  37.     if (this.parent && !this.elm) {
  38.                 var ch=this.children;
  39.                 DynLayer._assignElement(this,null,divs);
  40.                 DynLayer._importInlineValues(this);
  41.                 for (var i=0;i<ch.length;i++) DynLayer._importInlineValues(ch[i]);     
  42.                 DynElement._flagCreate(this);
  43.     }
  44. };
  45.  
  46. DynLayer._importInlineValues = function(dlyr) {
  47.         if(dlyr && dlyr._noInlineValues) return;
  48.         if (dynapi.ua.def) {
  49.                 if (dynapi.ua.ie) {
  50.                         var css = dlyr.elm.currentStyle;
  51.                         dlyr.x = parseInt(css.left);
  52.                         dlyr.y = parseInt(css.top);
  53.                         dlyr.w = dynapi.ua.ie4? css.pixelWidth : dlyr.elm.offsetWidth;
  54.                         dlyr.h = dynapi.ua.ie4? css.pixelHeight : dlyr.elm.offsetHeight;
  55.                         dlyr.bgImage = css.backgroundImage;
  56.                         dlyr.bgColor = css.backgroundColor;
  57.                         dlyr.html = dlyr.elm.innerHTML;
  58.                 }      
  59.                 else if (dynapi.ua.dom) {
  60.                         var css = dlyr.elm.style;
  61.                         dlyr.x = parseInt(dlyr.elm.offsetLeft);
  62.                         dlyr.y = parseInt(dlyr.elm.offsetTop);
  63.                         dlyr.w=  dlyr.elm.offsetWidth;
  64.                         dlyr.h= dlyr.elm.offsetHeight;
  65.                         dlyr.bgImage = css.backgroundImage;
  66.                         dlyr.bgColor = css.backgroundColor;
  67.                         dlyr.html = dlyr.elm.innerHTML;
  68.                 }
  69.  
  70.         }
  71.         else if (dynapi.ua.ns4) {
  72.                 var css = dlyr.elm;
  73.                 dlyr.x = parseInt(css.left);
  74.                 dlyr.y = parseInt(css.top);
  75.                 dlyr.w = css.clip.width;
  76.                 dlyr.h = css.clip.height;
  77.                 dlyr.clip = [css.clip.top,css.clip.right,css.clip.bottom,css.clip.left];
  78.                 dlyr.bgColor = dlyr.doc.bgColor!=''? dlyr.doc.bgColor : null;
  79.                 dlyr.bgImage = css.background.src!=''? css.background.src : null;
  80.                 dlyr.html = '';
  81.         }
  82.         dlyr.z = css.zIndex;
  83.         var b = css.visibility;
  84.         dlyr.visible = (b=="inherit" || b=="show" || b=="visible" || b=="");
  85. };
  86.  
  87. // Generate Blueprint
  88. DynElement.prototype.generateBlueprint = function(type) {
  89.         var i,c,ht,str =[];
  90.         var f,ch=this.children;
  91.         var url=dynapi.library.path+'ext/blueprint.html';
  92.         var win = window.open(url,'blueprint','width=500,height=350,scrollbars=no,status=no,toolbar=no');
  93.  
  94.         for(i=0;i<ch.length;i++) {
  95.                 c = ch[i];
  96.                 DynElement._flagPreCreate(c);
  97.                 ht=c.getOuterHTML();
  98.                 if(!type || type=='css') str[i]=ht;
  99.                 else {
  100.                         ht=ht.replace(/\'/g,'\\\'');
  101.                         ht=ht.replace(/\r/g,'\\r');
  102.                         ht=ht.replace(/\n/g,'\\n');
  103.                         str[str.length]='_bw(\''+ht+'\');';
  104.                 }
  105.         }
  106.         if(!type || type=='css') str=str.join('');
  107.         else str=str.join('\n');
  108.         if(type=='css') {       // generate style sheet from blueprints
  109.                 var ar=str.split('<div');
  110.                 for(i=0;i<ar.length;i++){
  111.                         ar[i]=ar[i].replace(/(.+)id="(.+)" style="(.+)"(.+)/g,'#$2 {$3}');
  112.                 }
  113.                 str=ar.join('');
  114.         }
  115.         f=win.document.forms['frm'];
  116.         f.txtout.value=str;
  117. };
  118.  
  119. // Blueprint Document write
  120. _bw = function(str){
  121.         document.write(str);
  122. }