]> git.stg.codes - stg.git/blobdiff - doc/help/xslt/slides/browser/xbStyle-css.js
DocBook documentation stub added
[stg.git] / doc / help / xslt / slides / browser / xbStyle-css.js
diff --git a/doc/help/xslt/slides/browser/xbStyle-css.js b/doc/help/xslt/slides/browser/xbStyle-css.js
new file mode 100644 (file)
index 0000000..f5b8467
--- /dev/null
@@ -0,0 +1,791 @@
+/*
+ * xbStyle-css.js
+ * $Revision: 1.2 $ $Date: 2003/02/07 16:04:21 $
+ *
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Netscape code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2001
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Bob Clary <bclary@netscape.com>
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+// xbStyle.getClip()
+
+function cssStyleGetClip()
+{
+  var clip = this.getEffectiveValue('clip');
+
+  // hack opera
+  if (clip == 'rect()')
+    clip = '';
+
+  if (clip == '' || clip == 'auto')
+  {
+    clip = 'rect(0px, ' + this.getWidth() + 'px, ' + this.getHeight() + 'px, 0px)';
+  }
+  else
+  { 
+    clip = clip.replace(/px /g, 'px, ');
+  }
+
+  return clip;
+}
+
+// xbStyle.setClip()
+
+function cssStyleSetClip(sClipString)
+{
+  this.styleObj.clip = sClipString;
+}
+
+// xbStyle.getClipTop()
+
+function cssStyleGetClipTop()
+{
+  var clip = this.getClip();
+  var rect = new xbClipRect(clip);
+  return rect.top;
+}
+
+// xbStyle.setClipTop()
+
+function cssStyleSetClipTop(top)
+{
+  var clip = this.getClip();
+  var rect         = new xbClipRect(clip);
+  rect.top         = top;
+  this.styleObj.clip = rect.toString();
+}
+
+// xbStyle.getClipRight()
+
+function cssStyleGetClipRight()
+{
+  var clip = this.getClip();
+  var rect = new xbClipRect(clip);
+  return rect.right;
+}
+
+// xbStyle.setClipRight()
+
+function cssStyleSetClipRight(right)
+{
+  var clip = this.getClip();
+  var rect          = new xbClipRect(clip);
+  rect.right        = right;
+  this.styleObj.clip  = rect.toString();
+}
+
+// xbStyle.getClipBottom()
+
+function cssStyleGetClipBottom()
+{
+  var clip = this.getClip();
+  var rect = new xbClipRect(clip);
+  return rect.bottom;
+}
+
+// xbStyle.setClipBottom()
+
+function cssStyleSetClipBottom(bottom)
+{
+  var clip = this.getClip();
+  var rect           = new xbClipRect(clip);
+  rect.bottom        = bottom;
+  this.styleObj.clip   = rect.toString();
+}
+
+// xbStyle.getClipLeft()
+
+function cssStyleGetClipLeft()
+{
+  var clip = this.getClip();
+  var rect = new xbClipRect(clip);
+  return rect.left;
+}
+
+// xbStyle.setClipLeft()
+
+function cssStyleSetClipLeft(left)
+{
+  var clip = this.getClip();
+  var rect = new xbClipRect(clip);
+  rect.left = left;
+  this.styleObj.clip = rect.toString();
+}
+
+// xbStyle.getClipWidth()
+
+function cssStyleGetClipWidth()
+{
+  var clip = this.getClip();
+  var rect = new xbClipRect(clip);
+  return rect.getWidth();
+}
+
+// xbStyle.setClipWidth()
+
+function cssStyleSetClipWidth(width)
+{
+  var clip = this.getClip();
+  var rect = new xbClipRect(clip);
+  rect.setWidth(width);
+  this.styleObj.clip = rect.toString();
+}
+
+// xbStyle.getClipHeight()
+
+function cssStyleGetClipHeight()
+{
+  var clip = this.getClip();
+  var rect = new xbClipRect(clip);
+  return rect.getHeight();
+}
+
+// xbStyle.setClipHeight()
+
+function cssStyleSetClipHeight(height)
+{
+  var clip = this.getClip();
+  var rect = new xbClipRect(clip);
+  rect.setHeight(height);
+  this.styleObj.clip = rect.toString();
+}
+
+// the CSS attributes left,top are for absolutely positioned elements
+// measured relative to the containing element.  for relatively positioned
+// elements, left,top are measured from the element's normal inline position.
+// getLeft(), setLeft() operate on this type of coordinate.
+//
+// to allow dynamic positioning the getOffsetXXX and setOffsetXXX methods are
+// defined to return and set the position of either an absolutely or relatively
+// positioned element relative to the containing element.
+//
+//
+
+// xbStyle.getLeft()
+
+function cssStyleGetLeft()
+{
+  var left = this.getEffectiveValue('left');
+  if (typeof(left) == 'number')
+     return left;
+
+  if (left != '' && left.indexOf('px') == -1)
+  {
+    xbDEBUG.dump('xbStyle.getLeft: Element ID=' + this.object.id + ' does not use pixels as units. left=' + left + ' Click Ok to continue, Cancel to Abort');
+    return 0;
+  }
+
+  if (top == 'auto' && this.object && typeof(this.object.offsetTop) == 'number')
+  {
+    left = this.object.offsetTop + 'px';
+  }
+
+  if (left == '')
+    left = '0px';
+      
+  return xbToInt(left);
+}
+
+// xbStyle.setLeft()
+
+function cssStyleSetLeft(left)
+{
+  if (typeof(this.styleObj.left) == 'number')
+    this.styleObj.left = left;
+  else
+    this.styleObj.left = left + 'px';
+}
+
+// xbStyle.getTop()
+
+function cssStyleGetTop()
+{
+  var top = this.getEffectiveValue('top');
+  if (typeof(top) == 'number')
+     return top;
+
+  if (top != '' && top.indexOf('px') == -1)
+  {
+    xbDEBUG.dump('xbStyle.getTop: Element ID=' + this.object.id + ' does not use pixels as units. top=' + top + ' Click Ok to continue, Cancel to Abort');
+    return 0;
+  }
+
+  if (top == 'auto' && this.object && typeof(this.object.offsetTop) == 'number')
+  {
+    top = this.object.offsetTop + 'px';
+  }
+
+  if (top == '')
+    top = '0px';
+      
+  return xbToInt(top);
+}
+
+// xbStyle.setTop()
+
+function cssStyleSetTop(top)
+{
+  if (typeof(this.styleObj.top) == 'number')
+    this.styleObj.top = top;
+  else
+    this.styleObj.top = top + 'px';
+}
+
+// xbStyle.getPageX()
+
+function cssStyleGetPageX()
+{
+  var x = 0;
+  var elm = this.object;
+  var elmstyle;
+  var position;
+  
+  //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the 
+  // effective position attribute , attempt to use offsetXXX
+
+  if (typeof(elm.offsetLeft) == 'number')
+  {
+    while (elm)
+    {
+      x += elm.offsetLeft;
+      elm = elm.offsetParent;
+    }
+  }
+  else
+  {
+    while (elm)
+    {
+      if (elm.style)
+      {
+        elmstyle = new xbStyle(elm);
+        position = elmstyle.getEffectiveValue('position');
+        if (position != '' && position != 'static')
+          x += elmstyle.getLeft();
+      }
+      elm = elm.parentNode;
+    }
+  }
+  
+  return x;
+}
+
+// xbStyle.setPageX()
+
+function cssStyleSetPageX(x)
+{
+  var xParent = 0;
+  var elm = this.object.parentNode;
+  var elmstyle;
+  var position;
+  
+  //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the 
+  // effective position attribute , attempt to use offsetXXX
+
+  if (elm && typeof(elm.offsetLeft) == 'number')
+  {
+    while (elm)
+    {
+      xParent += elm.offsetLeft;
+      elm = elm.offsetParent;
+    }
+  }
+  else
+  {
+    while (elm)
+    {
+      if (elm.style)
+      {
+        elmstyle = new xbStyle(elm);
+        position = elmstyle.getEffectiveValue('position');
+        if (position != '' && position != 'static')
+          xParent += elmstyle.getLeft();
+      }
+      elm = elm.parentNode;
+    }
+  }
+  
+  x -= xParent;
+
+  this.setLeft(x);
+}
+    
+// xbStyle.getPageY()
+
+function cssStyleGetPageY()
+{
+  var y = 0;
+  var elm = this.object;
+  var elmstyle;
+  var position;
+  
+  //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the 
+  // effective position attribute , attempt to use offsetXXX
+
+  if (typeof(elm.offsetTop) == 'number')
+  {
+    while (elm)
+    {
+      y += elm.offsetTop;
+      elm = elm.offsetParent;
+    }
+  }
+  else
+  {
+    while (elm)
+    {
+      if (elm.style)
+      {
+        elmstyle = new xbStyle(elm);
+        position = elmstyle.getEffectiveValue('position');
+        if (position != '' && position != 'static')
+          y += elmstyle.getTop();
+      }
+      elm = elm.parentNode;
+    }
+  }
+  
+  return y;
+}
+
+// xbStyle.setPageY()
+
+function cssStyleSetPageY(y)
+{
+  var yParent = 0;
+  var elm = this.object.parentNode;
+  var elmstyle;
+  var position;
+  
+  //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the 
+  // effective position attribute , attempt to use offsetXXX
+
+  if (elm && typeof(elm.offsetTop) == 'number')
+  {
+    while (elm)
+    {
+      yParent += elm.offsetTop;
+      elm = elm.offsetParent;
+    }
+  }
+  else
+  {
+    while (elm)
+    {
+      if (elm.style)
+      {
+        elmstyle = new xbStyle(elm);
+        position = elmstyle.getEffectiveValue('position');
+        if (position != '' && position != 'static')
+          yParent += elmstyle.getTop();
+      }
+      elm = elm.parentNode;
+    }
+  }
+  
+  y -= yParent;
+
+  this.setTop(y);
+}
+    
+// xbStyle.getHeight()
+
+function cssStyleGetHeight()
+{
+  var display = this.getEffectiveValue('display');
+  var height = this.getEffectiveValue('height');
+
+  if (typeof(height) == 'number')
+  {
+     // Opera
+     return height;
+  }
+
+  if (height == '' || height == 'auto' || height.indexOf('%') != -1)
+  {
+    if (typeof(this.object.offsetHeight) == 'number')
+    {
+      height = this.object.offsetHeight + 'px';
+    }
+    else if (typeof(this.object.scrollHeight) == 'number')
+    {
+      height = this.object.scrollHeight + 'px';
+    }
+  }
+
+  if (height.indexOf('px') == -1)
+  {
+    xbDEBUG.dump('xbStyle.getHeight: Element ID=' + this.object.id + ' does not use pixels as units. height=' + height + ' Click Ok to continue, Cancel to Abort');
+    return 0;
+  }
+
+  height = xbToInt(height);
+
+  return height;
+}
+
+// xbStyle.setHeight()
+
+function cssStyleSetHeight(height)
+{
+  if (typeof(this.styleObj.height) == 'number')
+    this.styleObj.height = height;
+  else
+    this.styleObj.height = height + 'px';
+}
+
+// xbStyle.getWidth()
+
+function cssStyleGetWidth()
+{
+  var display = this.getEffectiveValue('display');
+  var width = this.getEffectiveValue('width');
+
+  if (typeof(width) == 'number')
+  {
+     // note Opera 6 has a bug in width and offsetWidth where 
+     // it returns the page width. Use clientWidth instead.
+     if (navigator.userAgent.indexOf('Opera') != -1)
+       return this.object.clientWidth;
+     else
+       return width;
+  }
+
+  if (width == '' || width == 'auto' || width.indexOf('%') != -1)
+  {
+    if (typeof(this.object.offsetWidth) == 'number')
+    {
+      width = this.object.offsetWidth + 'px';
+    }
+    else if (typeof(this.object.scrollHeight) == 'number')
+    {
+      width = this.object.scrollWidth + 'px';
+    }
+  }
+
+  if (width.indexOf('px') == -1)
+  {
+    xbDEBUG.dump('xbStyle.getWidth: Element ID=' + this.object.id + ' does not use pixels as units. width=' + width + ' Click Ok to continue, Cancel to Abort');
+    return 0;
+  }
+
+  width = xbToInt(width);
+
+  return width;
+}
+
+// xbStyle.setWidth()
+
+function cssStyleSetWidth(width)
+{
+  if (typeof(this.styleObj.width) == 'number')
+    this.styleObj.width = width;
+  else
+    this.styleObj.width = width + 'px';
+}
+
+// xbStyle.getVisibility()
+
+function cssStyleGetVisibility()
+{
+  return this.getEffectiveValue('visibility');
+}
+
+// xbStyle.setVisibility()
+
+function cssStyleSetVisibility(visibility)
+{
+  this.styleObj.visibility = visibility;
+}
+
+// xbStyle.getzIndex()
+
+function cssStyleGetzIndex()
+{
+  return xbToInt(this.getEffectiveValue('zIndex'));
+}
+
+// xbStyle.setzIndex()
+
+function cssStyleSetzIndex(zIndex)
+{
+  this.styleObj.zIndex = zIndex;
+}
+
+// xbStyle.getBackgroundColor()
+
+function cssStyleGetBackgroundColor()
+{
+  return this.getEffectiveValue('backgroundColor');
+}
+
+// xbStyle.setBackgroundColor()
+
+function cssStyleSetBackgroundColor(color)
+{
+  this.styleObj.backgroundColor = color;
+}
+
+// xbStyle.getColor()
+
+function cssStyleGetColor()
+{
+  return this.getEffectiveValue('color');
+}
+
+// xbStyle.setColor()
+
+function cssStyleSetColor(color)
+{
+  this.styleObj.color = color;
+}
+
+// xbStyle.moveAbove()
+
+function xbStyleMoveAbove(cont)
+{
+  this.setzIndex(cont.getzIndex()+1);
+}
+
+// xbStyle.moveBelow()
+
+function xbStyleMoveBelow(cont)
+{
+  var zindex = cont.getzIndex() - 1;
+            
+  this.setzIndex(zindex);
+}
+
+// xbStyle.moveBy()
+
+function xbStyleMoveBy(deltaX, deltaY)
+{
+  this.moveTo(this.getLeft() + deltaX, this.getTop() + deltaY);
+}
+
+// xbStyle.moveTo()
+
+function xbStyleMoveTo(x, y)
+{
+  this.setLeft(x);
+  this.setTop(y);
+}
+
+// xbStyle.moveToAbsolute()
+
+function xbStyleMoveToAbsolute(x, y)
+{
+  this.setPageX(x);
+  this.setPageY(y);
+}
+
+// xbStyle.resizeBy()
+
+function xbStyleResizeBy(deltaX, deltaY)
+{
+  this.setWidth( this.getWidth() + deltaX );
+  this.setHeight( this.getHeight() + deltaY );
+}
+
+// xbStyle.resizeTo()
+
+function xbStyleResizeTo(x, y)
+{
+  this.setWidth(x);
+  this.setHeight(y);
+}
+
+// xbStyle.setInnerHTML()
+
+function xbSetInnerHTML(str)
+{
+  if (typeof(this.object.innerHTML) != 'undefined')
+    this.object.innerHTML = str;
+}
+
+
+// Extensions to xbStyle that are not supported by Netscape Navigator 4
+// but that provide cross browser implementations of properties for 
+// Mozilla, Gecko, Netscape 6.x and Opera
+
+// xbStyle.getBorderTopWidth()
+
+function cssStyleGetBorderTopWidth()
+{
+  return xbToInt(this.getEffectiveValue('borderTopWidth'));
+}
+
+// xbStyle.getBorderRightWidth()
+
+function cssStyleGetBorderRightWidth()
+{
+  return xbToInt(this.getEffectiveValue('borderRightWidth'));
+}
+
+// xbStyle.getBorderBottomWidth()
+
+function cssStyleGetBorderBottomWidth()
+{
+  return xbToInt(this.getEffectiveValue('borderBottomWidth'));
+}
+
+// xbStyle.getBorderLeftWidth()
+
+function cssStyleGetBorderLeftWidth()
+{
+  return xbToInt(this.getEffectiveValue('borderLeftWidth'));
+}
+
+// xbStyle.getMarginTop()
+
+function cssStyleGetMarginTop()
+{
+  return xbToInt(this.getEffectiveValue('marginTop'));
+}
+
+// xbStyle.getMarginRight()
+
+function cssStyleGetMarginRight()
+{
+  return xbToInt(this.getEffectiveValue('marginRight'));
+}
+
+// xbStyle.getMarginBottom()
+
+function cssStyleGetMarginBottom()
+{
+  return xbToInt(this.getEffectiveValue('marginBottom'));
+}
+
+// xbStyle.getMarginLeft()
+
+function cssStyleGetMarginLeft()
+{
+  return xbToInt(this.getEffectiveValue('marginLeft'));
+}
+
+// xbStyle.getPaddingTop()
+
+function cssStyleGetPaddingTop()
+{
+  return xbToInt(this.getEffectiveValue('paddingTop'));
+}
+
+// xbStyle.getPaddingRight()
+
+function cssStyleGetPaddingRight()
+{
+  return xbToInt(this.getEffectiveValue('paddingRight'));
+}
+
+// xbStyle.getPaddingBottom()
+
+function cssStyleGetPaddingBottom()
+{
+  return xbToInt(this.getEffectiveValue('paddingBottom'));
+}
+
+// xbStyle.getPaddingLeft()
+
+function cssStyleGetPaddingLeft()
+{
+  return xbToInt(this.getEffectiveValue('paddingLeft'));
+}
+
+// xbStyle.getClientWidth()
+
+function cssStyleGetClientWidth()
+{
+  return this.getWidth() + this.getPaddingLeft() + this.getPaddingRight();
+  /*
+  if (typeof(this.object.clientWidth) == 'number')
+    return this.object.clientWidth;
+
+  return null;
+    */
+}
+
+// xbStyle.getClientHeight()
+
+function cssStyleGetClientHeight()
+{
+  return this.getHeight() + this.getPaddingTop() + this.getPaddingBottom();
+  /*
+  if (typeof(this.object.clientHeight) == 'number')
+    return this.object.clientHeight;
+
+  return null;
+  */
+}
+
+xbStyle.prototype.getClip            = cssStyleGetClip;
+xbStyle.prototype.setClip            = cssStyleSetClip;  
+xbStyle.prototype.getClipTop         = cssStyleGetClipTop;
+xbStyle.prototype.setClipTop         = cssStyleSetClipTop;  
+xbStyle.prototype.getClipRight       = cssStyleGetClipRight;
+xbStyle.prototype.setClipRight       = cssStyleSetClipRight;  
+xbStyle.prototype.getClipBottom      = cssStyleGetClipBottom;
+xbStyle.prototype.setClipBottom      = cssStyleSetClipBottom;  
+xbStyle.prototype.getClipLeft        = cssStyleGetClipLeft;
+xbStyle.prototype.setClipLeft        = cssStyleSetClipLeft;  
+xbStyle.prototype.getClipWidth       = cssStyleGetClipWidth;
+xbStyle.prototype.setClipWidth       = cssStyleSetClipWidth;  
+xbStyle.prototype.getClipHeight      = cssStyleGetClipHeight;
+xbStyle.prototype.setClipHeight      = cssStyleSetClipHeight;  
+xbStyle.prototype.getLeft            = cssStyleGetLeft;
+xbStyle.prototype.setLeft            = cssStyleSetLeft;
+xbStyle.prototype.getTop             = cssStyleGetTop;
+xbStyle.prototype.setTop             = cssStyleSetTop;
+xbStyle.prototype.getPageX           = cssStyleGetPageX;
+xbStyle.prototype.setPageX           = cssStyleSetPageX;
+xbStyle.prototype.getPageY           = cssStyleGetPageY;
+xbStyle.prototype.setPageY           = cssStyleSetPageY;
+xbStyle.prototype.getVisibility      = cssStyleGetVisibility;
+xbStyle.prototype.setVisibility      = cssStyleSetVisibility;
+xbStyle.prototype.getzIndex          = cssStyleGetzIndex;
+xbStyle.prototype.setzIndex          = cssStyleSetzIndex;            
+xbStyle.prototype.getHeight          = cssStyleGetHeight;
+xbStyle.prototype.setHeight          = cssStyleSetHeight;
+xbStyle.prototype.getWidth           = cssStyleGetWidth;
+xbStyle.prototype.setWidth           = cssStyleSetWidth;
+xbStyle.prototype.getBackgroundColor = cssStyleGetBackgroundColor;
+xbStyle.prototype.setBackgroundColor = cssStyleSetBackgroundColor;
+xbStyle.prototype.getColor           = cssStyleGetColor;
+xbStyle.prototype.setColor           = cssStyleSetColor;
+xbStyle.prototype.setInnerHTML       = xbSetInnerHTML;
+xbStyle.prototype.getBorderTopWidth    = cssStyleGetBorderTopWidth;
+xbStyle.prototype.getBorderRightWidth  = cssStyleGetBorderRightWidth;
+xbStyle.prototype.getBorderBottomWidth = cssStyleGetBorderBottomWidth;
+xbStyle.prototype.getBorderLeftWidth   = cssStyleGetBorderLeftWidth;
+xbStyle.prototype.getMarginLeft        = cssStyleGetMarginLeft;
+xbStyle.prototype.getMarginTop         = cssStyleGetMarginTop;
+xbStyle.prototype.getMarginRight       = cssStyleGetMarginRight;
+xbStyle.prototype.getMarginBottom      = cssStyleGetMarginBottom;
+xbStyle.prototype.getMarginLeft        = cssStyleGetMarginLeft;
+xbStyle.prototype.getPaddingTop        = cssStyleGetPaddingTop;
+xbStyle.prototype.getPaddingRight      = cssStyleGetPaddingRight;
+xbStyle.prototype.getPaddingBottom     = cssStyleGetPaddingBottom;
+xbStyle.prototype.getPaddingLeft       = cssStyleGetPaddingLeft;
+xbStyle.prototype.getClientWidth       = cssStyleGetClientWidth;
+xbStyle.prototype.getClientHeight      = cssStyleGetClientHeight;
+