+++ /dev/null
-var _id = 0, _pid = 0, _lid = 0, _pLayer;
-var _mLists = new Array();
-document.lists = _mLists;
-var isNav4, isIE4;
-if (parseInt(navigator.appVersion.charAt(0)) >= 4) {
- isNav4 = (navigator.appName == "Netscape") ? true : false;
- isIE4 = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;
-}
-
-function List(visible, width, height, bgColor) {
- this.setIndent = setIndent;
- this.addItem = addItem;
- this.addList = addList;
- this.build = build;
- this.rebuild = rebuild;
- this.setFont = _listSetFont;
- this._writeList = _writeList;
- this._showList = _showList;
- this._updateList = _updateList;
- this._updateParent = _updateParent;
- this.onexpand = null; this.postexpand = null;
- this.lists = new Array(); // sublists
- this.items = new Array(); // layers
- this.types = new Array(); // type
- this.strs = new Array(); // content
- this.x = 0;
- this.y = 0;
- this.visible = visible;
- this.id = _id;
- this.i = 18;
- this.space = true;
- this.pid = 0;
- this.fontIntro = false;
- this.fontOutro = false;
- this.width = width || 350;
- this.height = height || 22;
- this.parLayer = false;
- this.built = false;
- this.shown = false;
- this.needsUpdate = false;
- this.needsRewrite = false;
- this.parent = null;
- this.l = 0;
- if(bgColor) this.bgColor = bgColor;
- else this.bgColor = null;
- _mLists[_id++] = this;
-}
-
-function _listSetFont(i,j) {
- this.fontIntro = i;
- this.fontOutro = j;
-}
-
-function setIndent(indent) {
- this.i = indent;
- if (this.i < 0) {
- this.i = 0;
- this.space = false;
- }
-}
-
-function setClip(layer, l, r, t, b) {
- if(isNav4) {
- layer.clip.left = l; layer.clip.right = r;
- layer.clip.top = t; layer.clip.bottom = b;
- } else {
- layer.style.pixelWidth = r-l;
- layer.style.pixelHeight = b-t;
- layer.style.clip = "rect("+t+","+r+","+b+","+l+")";
- }
-}
-
-function _writeList() {
- self.status = "List: Writing list...";
- var layer, str, clip;
- for (var i = 0; i < this.types.length; i++) {
- layer = this.items[i];
- if (isNav4) layer.visibility = "hidden";
- else layer.style.visibility = "hidden";
- str = "";
-
- alert(layer);
-
- if(isNav4) layer.document.open();
-
- str += "<TABLE WIDTH="+this.width+" NOWRAP BORDER=0 CELLPADDING=0 CELLSPACING=0><TR>";
- if(this.types[i] == "list") {
- str += "<TD WIDTH=15 NOWRAP VALIGN=MIDDLE><A TARGET='_self' HREF=\"javascript:expand("+this.lists[i].id+");\"><IMG BORDER=0 SRC=\"../graphics/true.gif\" NAME=\"_img"+this.lists[i].id+"\"></A></TD>";
- _pid++;
- } else if(this.space)
- str += "<TD WIDTH=15 NOWRAP> </TD>";
- if(this.l>0 && this.i>0) str += "<TD WIDTH="+this.l*this.i+" NOWRAP> </TD>";
- str += "<TD HEIGHT="+(this.height-3)+" WIDTH="+(this.width-15-this.l*this.i)+" VALIGN=MIDDLE ALIGN=LEFT>";
- if(this.fontIntro) str += this.fontIntro;
- str += this.strs[i];
- if(this.fontOutro) str += this.fontOutro;
- str += "</TD></TABLE>";
- if(isNav4) {
- layer.document.writeln(str);
- layer.document.close();
- } else layer.innerHTML = str;
- if(this.types[i] == "list" && this.lists[i].visible)
- this.lists[i]._writeList();
- }
- this.built = true;
- this.needsRewrite = false;
- self.status = '';
-}
-
-function _showList() {
- var layer;
- for(var i = 0; i < this.types.length; i++) {
- layer = this.items[i];
- setClip(layer, 0, this.width, 0, this.height-1);
- var bg = layer.oBgColor || this.bgColor;
- if(isIE4) {
- if((bg == null) || (bg == "null")) bg = "";
- layer.style.backgroundColor = bg;
- } else layer.document.bgColor = bg;
- if(this.types[i] == "list" && this.lists[i].visible)
- this.lists[i]._showList();
- }
- this.shown = true;
- this.needsUpdate = false;
-}
-
-function _updateList(pVis, x, y) {
- var currTop = y, layer;
- for(var i = 0; i < this.types.length; i++) {
- layer = this.items[i];
- if(this.visible && pVis) {
- if(isNav4) {
- layer.visibility = "visible";
- layer.top = currTop;
- layer.left = x;
- } else {
- layer.style.visibility = "visible";
- layer.style.pixelTop = currTop;
- layer.style.pixelLeft = x;
- }
- currTop += this.height;
- } else {
- if(isNav4) layer.visibility = "hidden";
- else layer.style.visibility = "hidden";
- }
- if(this.types[i] == "list") {
- if(this.lists[i].visible) {
- if(!this.lists[i].built || this.lists[i].needsRewrite) this.lists[i]._writeList();
- if(!this.lists[i].shown || this.lists[i].needsUpdate) this.lists[i]._showList();
- if(isNav4) layer.document.images[0].src = "../graphics/true.gif";
- else eval('document.images._img'+this.lists[i].id+'.src = "../graphics/true.gif"');
- } else {
- if(isNav4) layer.document.images[0].src = "../graphics/false.gif";
- else eval('document.images._img'+this.lists[i].id+'.src = "../graphics/false.gif"');
- }
- if(this.lists[i].built)
- currTop = this.lists[i]._updateList(this.visible && pVis, x, currTop);
- }
- }
- return currTop;
-}
-
-function _updateParent(pid, l) {
- var layer;
- if(!l) l = 0;
- this.pid = pid;
- this.l = l;
- for(var i = 0; i < this.types.length; i++)
- if(this.types[i] == "list")
- this.lists[i]._updateParent(pid, l+1);
-}
-
-function expand(i) {
- _mLists[i].visible = !_mLists[i].visible;
- if(_mLists[i].onexpand != null) _mLists[i].onexpand(_mLists[i].id);
- _mLists[_mLists[i].pid].rebuild();
- if(_mLists[i].postexpand != null) _mLists[i].postexpand(_mLists[i].id);
-}
-
-function build(x, y) {
- alert("got here1");
-
- this._updateParent(this.id);
- this._writeList();
- this._showList();
- this._updateList(true, x, y);
- this.x = x; this.y = y;
-}
-
-function rebuild() {
- this._updateList(true, this.x, this.y);
-}
-
-function addItem(str, bgColor, layer) {
- var testLayer = false;
- if(!document.all) document.all = document.layers;
- if(!layer) {
- if(isIE4 || !this.parLayer) {
- alert('document.all.lItem'+_lid);
- testLayer = eval('document.all.lItem'+_lid);
- } else {
- _pLayer = this.parLayer;
- testLayer = eval('_pLayer.document.layers.lItem'+_lid);
- }
- if(testLayer) {
- layer = testLayer;
- } else {
- if(isNav4) {
- if(this.parLayer) layer = new Layer(this.width, this.parLayer);
- else layer = new Layer(this.width);
- } else {
- return;
- }
- }
- }
- if(bgColor) layer.oBgColor = bgColor;
- this.items[this.items.length] = layer;
- this.types[this.types.length] = "item";
- this.strs[this.strs.length] = str;
- _lid++;
-}
-
-function addList(list, str, bgColor, layer) {
- var testLayer = false;
- if(!document.all) document.all = document.layers;
- if(!layer) {
- if(isIE4 || !this.parLayer) testLayer = eval('document.all.lItem'+_lid);
- else {
- _pLayer = this.parLayer;
- testLayer = eval('_pLayer.document.layers.lItem'+_lid);
- }
- if(testLayer) layer = testLayer;
- else {
- if(isNav4) {
- if(this.parLayer) layer = new Layer(this.width, this.parLayer);
- else layer = new Layer(this.width);
- } else return;
- }
- }
- if(bgColor) layer.oBgColor = bgColor;
- this.lists[this.items.length] = list;
- this.items[this.items.length] = layer;
- this.types[this.types.length] = "list";
- this.strs[this.strs.length] = str;
- list.parent = this;
- _lid++;
-}
-
if (overlayIE) {
overlayLx = document.body.clientWidth;
overlayLy = document.body.clientHeight;
+
+ if (document.body.parentElement) {
+ // For IE6
+ overlayLx = document.body.parentElement.clientWidth;
+ overlayLy = document.body.parentElement.clientHeight;
+ }
+
overlayH = overlayDiv.offsetHeight;
overlayW = overlayDiv.offsetWidth;
} else if (overlayNS4) {
document.overlayDiv.visibility="visible";
} else if (overlayNS6) {
var div = document.getElementById("overlayDiv");
- div.style.left=overlayX;
- div.style.top=overlayY+window.pageYOffset;
+ var leftpx = overlayX;
+ var toppx = overlayY+window.pageYOffset;
+
+ div.style.left = leftpx + "px";
+ div.style.top = toppx + "px";
}
}
function loopfunc() {
overlayRefresh();
- setTimeout('loopfunc()',overlayDelay);
+// setTimeout('loopfunc()',overlayDelay);
}
function overlaySetup(corner) {
+++ /dev/null
-/**
- * resize.js 0.3 970811
- * by gary smith
- * js component for "reloading page onResize"
- */
-
-if(!window.saveInnerWidth) {
- window.onresize = resize;
- window.saveInnerWidth = window.innerWidth;
- window.saveInnerHeight = window.innerHeight;
-}
-
-function resize() {
- if (saveInnerWidth < window.innerWidth ||
- saveInnerWidth > window.innerWidth ||
- saveInnerHeight > window.innerHeight ||
- saveInnerHeight < window.innerHeight )
- {
- window.history.go(0);
- }
-}
}
/* ====================================================================== */
+
+body.topnavigation { margin-top: 5px;
+ margin-left: 10px;
+ margin-right: 10px;
+ }
+
+body.foil { margin-top: 5px;
+ margin-left: 10px;
+ margin-right: 10px;
+ }
+
+body.botnavigation { margin-top: 0px;
+ padding-top: 0px;
+ margin-left: 10px;
+ margin-right: 10px;
+ }
+
+/* ====================================================================== */
// -*- Java -*-
+//
+// $Id$
+//
+// Copyright (C) 2002 Norman Walsh
+//
+// You are free to use, modify and distribute this software without limitation.
+// This software is provided "AS IS," without a warranty of any kind.
+//
+// This script assumes that the Netscape 'ua.js' module has also been loaded.
+
+function newPage(filename, overlay) {
+ divs = xbGetElementsByName("DIV");
+
+ if (divs) {
+ var xdiv = divs[0];
+
+ if (xdiv) {
+ var xid = xdiv.getAttribute("id");
+
+ var mytoc = window.top.frames[0];
+ if (mytoc.lastUnderlined) {
+ mytoc.lastUnderlined.style.textDecoration = "none";
+ }
-function selectBrowser() {
- var browserName = navigator.appName;
- var browserVersion = parseFloat(navigator.appVersion);
- var userAgent = navigator.userAgent;;
-
- if (browserName == "Netscape" && browserVersion>=5) {
- // Netscape 6 is Mozilla 5
- return "ns6";
- }
-
- if (browserName == "Netscape" && browserVersion>=4) {
- return "ns4";
- }
-
- if (browserName == "Microsoft Internet Explorer"
- && userAgent.indexOf("MSIE 6") > 0) {
- return "ie6";
- }
-
- if (browserName == "Microsoft Internet Explorer"
- && userAgent.indexOf("MSIE 5") > 0) {
- return "ie5";
- }
-
- return null;
-}
-
-function newPage(filename,overlay) {
- if (selectBrowser() != "ie5"
- && selectBrowser() != "ie6") {
- return;
- }
-
- if (overlay != 0) {
- overlaySetup('ll');
- }
-
- var parent = self.parent;
-
- var gparent = null;
- if (parent != null) {
- gparent = parent.parent;
- }
-
- var filemap = null;
- if (gparent != null) {
- filemap = gparent.filemap;
- }
+ var tdiv = xbGetElementById(xid, mytoc);
- if (filename == "toc.html") {
- if (filemap == null) {
- walk_toc();
- }
- } else {
- if (filemap != null) {
- var id = filemap[filename];
- if (id != null) {
- highlight_toc(id);
+ if (tdiv) {
+ var ta = tdiv.getElementsByTagName("a").item(0);
+ ta.style.textDecoration = "underline";
+ mytoc.lastUnderlined = ta;
}
}
}
-}
-
-function navigate (bk,fw,overlay) {
- var frame = window;
- if (frame.name != "foil") {
- frame = frame.parent;
- }
- if (frame.name != "foil") {
- frame = frame.parent;
- }
- kc=event.keyCode;
- // [space] or [Enter] or [n] or [N] for next slide
- if (((kc==32)||(kc==13)||(kc==110)||(kc==78)) && (fw != "")) {
- frame.location=fw;
- }
-
- // [P] or [p] for previous slide
- if (((kc==80)||(kc==112)) && (bk != "")) {
- frame.location=bk;
+ if (overlay != 0) {
+ overlaySetup('lc');
}
}
-function walk_toc() {
- var doc = self.document;
- var filemap = new Array();
- var fileidx = new Array();
- var filermap = new Array();
- var fileridx = new Array();
- var idx = 0;
- var sectmap = new Array();
- var section = "";
- var title = "";
-
- var parent = self.parent;
- var gparent = null;
- if (parent != null) {
- gparent = parent.parent;
- }
- for (var i = 0; i < doc.all.length-2; i++) {
- var div_elem = doc.all.item(i);
- var img_elem = doc.all.item(i+1);
- var a_elem = doc.all.item(i+2);
-
- if (img_elem.tagName == "A") {
- a_elem = img_elem;
- }
-
- if (div_elem.tagName == "DIV"
- && a_elem.tagName == "A") {
- var id = div_elem.getAttribute("ID");
- var file = a_elem.getAttribute("HREF");
- var pos = file.lastIndexOf("/");
- if (pos > 0) {
- file = file.substring(pos+1);
- }
+function navigate (evt) {
+ var kc = -1;
- // if (div_elem.className == "toc-section") {
- // section = a_elem.innerText;
- // }
-
- if (div_elem.className == "toc-slidesinfo") {
- title = a_elem.innerText;
- }
-
- if (id != "") {
- fileidx[idx] = file;
- fileridx[file] = idx;
- idx++;
- filemap[file] = id;
- filermap[id] = file;
- sectmap[file] = section;
- }
- }
- }
-
- // Squirrel this away on the top frame
- if (gparent != null) {
- gparent.prestitle = title;
- gparent.filemap = filemap;
- gparent.filermap = filermap;
- gparent.fileidx = fileidx;
- gparent.fileridx = fileridx;
- gparent.sectmap = sectmap;
+ if (navigator.org == 'microsoft') {
+ kc = window.event.keyCode;
} else {
- alert("Unexpected frame context in slides.js");
+ kc = evt.which;
}
-}
-
-function highlight_toc(id) {
- var frame = window.parent.parent.frames("toc");
- var doc = frame.document;
- var div = null;
- // find the div
- for (var i = 0; i < doc.all.length; i++) {
- if (doc.all.item(i).tagName == "DIV") {
- if (doc.all.item(i).getAttribute("ID") == id) {
- div = doc.all.item(i);
- break;
- }
- }
- }
+ var forward = (kc==32) || (kc==13) || (kc==110) || (kc==78);
+ var backward = (kc==80) || (kc==112);
- var a = div.children(0);
- if (a != null && a.tagName != "A") {
- a = div.children(1);
- }
+ var links = xbGetElementsByName("LINK");
+ var count = 0;
+ var target = "";
- if (a != null && a.tagName == "A") {
- if (frame.lastA != null) {
- frame.lastA.style.textDecorationUnderline = false;
+ for (count = 0; count < links.length; count++) {
+ if (forward && (links[count].getAttribute("rel") == 'next')) {
+ target = links[count].getAttribute("href");
+ }
+ if (backward && (links[count].getAttribute("rel") == 'previous')) {
+ target = links[count].getAttribute("href");
}
- a.style.textDecorationUnderline = true;
- frame.lastA = a;
- }
-}
-
-function write_nav(id) {
- var frame = window.parent.frames("navbar");
- var doc = frame.document;
-
- if (id == null) {
- id = self.parent.filemap[self.parent.fileidx[0]];
- }
-
- var file = self.parent.filermap[id];
- var num = self.parent.fileridx[file];
- var prev = null;
- var next = null;
-
- if (num > 0) {
- prev = self.parent.fileidx[num-1];
- }
-
- if (num < self.parent.fileidx.length) {
- next = self.parent.fileidx[num+1];
- }
-
- doc.open();
- doc.close();
- doc.write("<html><head>\n");
- doc.write("<link type='text/css' rel='stylesheet' href='slides.css'>\n");
- doc.write("<title>nav frame</title>\n");
- doc.write("</head><body bgcolor='#8399B1'>\n");
- doc.write("<table width='100%' border=0 cellpadding=0 cellspacing=0>\n");
- doc.write("<tr>\n");
- doc.write("<td align=left valign=center width='33%'>");
- if (prev != null) {
- doc.write("<a href='" + prev + "' target='foil'>");
- doc.write("<img src='../graphics/left.png' border='0'>");
- doc.write("</a>");
- } else {
- doc.write(" ");
- }
- doc.write("</td>\n");
- doc.write("<td align=center valign=bottom width='34%'>");
- if (num > 0) {
- doc.write("<span class='navfooter'>Slide " + num + "</span>");
- } else {
- doc.write(" ");
- }
- doc.write("</td>\n");
- doc.write("<td align=right valign=center width='33%'>");
- if (next) {
- doc.write("<a href='" + next + "' target='foil'>");
- doc.write("<img src='../graphics/right.png' border='0'>");
- doc.write("</a>");
- } else {
- doc.write(" ");
}
- doc.write("</td>\n");
- doc.write("</tr>\n");
- doc.write("</table>\n");
- doc.close();
-}
-function write_header(file) {
- var frame = window.parent.frames("header");
- var doc = frame.document;
- var title = self.parent.prestitle;
- var section = self.parent.sectmap[file];
-
- var bgcolor = "#8399B1";
- var header = title + ": " + section;
-
- if (file == 'titlefoil.html') {
- header = "";
+ if (target != "") {
+ window.location = target;
}
-
- doc.open();
- doc.close();
- doc.write("<html><head>\n");
- doc.write("<link type='text/css' rel='stylesheet' href='slides.css'>\n");
- doc.write("<title>header frame</title>\n");
- doc.write("</head><body bgcolor='" + bgcolor + "'>\n");
- doc.write("<table width='100%' border=0 cellpadding=0 cellspacing=0>\n");
- doc.write("<tr>\n");
- doc.write("<td align=center valign=center width='100%'>");
- doc.write("<span class=navheader>" + header + "</span>");
- doc.write("</td>\n");
- doc.write("</tr>\n");
- doc.write("</table>\n");
- doc.close();
}
-
--- /dev/null
+/*\r
+ua.js revision 0.200 2001-12-03\r
+\r
+Contributor(s): Bob Clary, Netscape Communications, Copyright 2001\r
+\r
+Netscape grants you a royalty free license to use, modify and \r
+distribute this software provided that this copyright notice \r
+appears on all copies. This software is provided "AS IS," \r
+without a warranty of any kind.\r
+*/\r
+\r
+function xbDetectBrowser()\r
+{\r
+ var oldOnError = window.onerror;\r
+ var element = null;\r
+\r
+ window.onerror = null;\r
+ \r
+ // work around bug in xpcdom Mozilla 0.9.1\r
+ window.saveNavigator = window.navigator;\r
+\r
+ navigator.OS = '';\r
+ navigator.version = parseFloat(navigator.appVersion);\r
+ navigator.org = '';\r
+ navigator.family = '';\r
+\r
+ var platform;\r
+ if (typeof(window.navigator.platform) != 'undefined')\r
+ {\r
+ platform = window.navigator.platform.toLowerCase();\r
+ if (platform.indexOf('win') != -1)\r
+ navigator.OS = 'win';\r
+ else if (platform.indexOf('mac') != -1)\r
+ navigator.OS = 'mac';\r
+ else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)\r
+ navigator.OS = 'nix';\r
+ }\r
+\r
+ var i = 0;\r
+ var ua = window.navigator.userAgent.toLowerCase();\r
+ \r
+ if (ua.indexOf('opera') != -1)\r
+ {\r
+ i = ua.indexOf('opera');\r
+ navigator.family = 'opera';\r
+ navigator.org = 'opera';\r
+ navigator.version = parseFloat('0' + ua.substr(i+6), 10);\r
+ }\r
+ else if ((i = ua.indexOf('msie')) != -1)\r
+ {\r
+ navigator.org = 'microsoft';\r
+ navigator.version = parseFloat('0' + ua.substr(i+5), 10);\r
+ \r
+ if (navigator.version < 4)\r
+ navigator.family = 'ie3';\r
+ else\r
+ navigator.family = 'ie4'\r
+ }\r
+ else if (ua.indexOf('gecko') != -1)\r
+ {\r
+ navigator.family = 'gecko';\r
+ var rvStart = navigator.userAgent.indexOf('rv:') + 3;\r
+ var rvEnd = navigator.userAgent.indexOf(')', rvStart);\r
+ var rv = navigator.userAgent.substring(rvStart, rvEnd);\r
+ var decIndex = rv.indexOf('.');\r
+ if (decIndex != -1)\r
+ {\r
+ rv = rv.replace(/\./g, '')\r
+ rv = rv.substring(0, decIndex-1) + '.' + rv.substr(decIndex)\r
+ }\r
+ navigator.version = parseFloat(rv);\r
+\r
+ if (ua.indexOf('netscape') != -1)\r
+ navigator.org = 'netscape';\r
+ else if (ua.indexOf('compuserve') != -1)\r
+ navigator.org = 'compuserve';\r
+ else\r
+ navigator.org = 'mozilla';\r
+ }\r
+ else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1))\r
+ {\r
+ var is_major = parseFloat(navigator.appVersion);\r
+ \r
+ if (is_major < 4)\r
+ navigator.version = is_major;\r
+ else\r
+ {\r
+ i = ua.lastIndexOf('/')\r
+ navigator.version = parseFloat('0' + ua.substr(i+1), 10);\r
+ }\r
+ navigator.org = 'netscape';\r
+ navigator.family = 'nn' + parseInt(navigator.appVersion);\r
+ }\r
+ else if ((i = ua.indexOf('aol')) != -1 )\r
+ {\r
+ // aol\r
+ navigator.family = 'aol';\r
+ navigator.org = 'aol';\r
+ navigator.version = parseFloat('0' + ua.substr(i+4), 10);\r
+ }\r
+ else if ((i = ua.indexOf('hotjava')) != -1 )\r
+ {\r
+ // hotjava\r
+ navigator.family = 'hotjava';\r
+ navigator.org = 'sun';\r
+ navigator.version = parseFloat(navigator.appVersion);\r
+ }\r
+\r
+ window.onerror = oldOnError;\r
+}\r
+\r
+xbDetectBrowser();\r
+\r
--- /dev/null
+/*
+xbCollapsibleLists.js 2001-02-26
+
+Contributor(s): Michael Bostock, Netscape Communications, Copyright 1997
+ Bob Clary, Netscape Communications, Copyright 2001
+ Seth Dillingham, Macrobyte Resources, Copyright 2001
+ Mark Filanowicz, Amdahl IT Services, Copyright 2002
+
+Netscape grants you a royalty free license to use, modify or
+distribute this software provided that this copyright notice
+appears on all copies. This software is provided "AS IS,"
+without a warranty of any kind.
+
+See xbCollapsibleLists.js.changelog.html for details of changes.
+*/
+
+
+var xbcl__id = 0;
+var xbcl_item_id = 0;
+var xbcl_mLists = new Array();
+var xbcl_parentElement = null;
+
+document.lists = xbcl_mLists;
+
+function List(visible, width, height, bgColor, collapsedImageURL, expandedImageURL)
+{
+ this.lists = new Array(); // sublists
+ this.items = new Array(); // layers
+ this.types = new Array(); // type
+ this.strs = new Array(); // content
+ this.visible = visible;
+ this.id = xbcl__id;
+ this.width = width || 350;
+ this.height = height || 22;
+
+ this.collapsedImageURL = collapsedImageURL || 'false.gif';
+ this.expandedImageURL = expandedImageURL || 'true.gif';
+
+ if (bgColor)
+ this.bgColor = bgColor;
+
+ xbcl_mLists[xbcl__id++] = this;
+}
+
+function xbcl_SetFont(i,j)
+{
+ this.fontIntro = i;
+ this.fontOutro = j;
+}
+
+function xbcl_GetFont()
+{
+ return [this.fontIntro, this.fontOutro];
+}
+
+function xbcl_setIndent(indent)
+{
+ this.i = indent;
+ if (this.i < 0)
+ {
+ this.i = 0;
+ this.space = false;
+ }
+ else
+ this.space = true;
+}
+
+function xbcl_getIndent(indent)
+{
+ return this.i;
+}
+
+function xbcl_writeItemDOMHTML( obj, s, flList, listObj )
+{
+ var styleObj;
+ var outerDiv, innerLeft, innerRight;
+ var str;
+ var leftEdge = 0;
+
+ styleObj = new xbStyle(obj);
+ styleObj.setVisibility('hidden');
+ outerDiv = document.createElement( "DIV" );
+ outerDiv.id = "DIV_" + obj.id;
+ styleObj = new xbStyle( outerDiv );
+ styleObj.setWidth( this.width );
+
+ if ( flList )
+ {
+ innerLeft = document.createElement( "DIV" );
+ innerLeft.style.position = "absolute";
+ innerLeft.style.valign = "middle";
+ leftEdge = 15;
+
+ styleObj = new xbStyle( innerLeft );
+ styleObj.setWidth( 15 );
+ styleObj.setBackgroundColor( "transparent" );
+
+ if ( listObj.visible )
+ str = '<A TARGET="_self" HREF="javascript:xbcl_expand(' + listObj.id + ');"><IMG BORDER="0" SRC="' + this.expandedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '"></A>';
+ else
+ str = '<A TARGET="_self" HREF="javascript:xbcl_expand(' + listObj.id + ');"><IMG BORDER="0" SRC="' + this.collapsedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '"></A>';
+
+ innerLeft.innerHTML = str;
+ outerDiv.appendChild( innerLeft );
+ }
+ else if ( this.space )
+ leftEdge = 15;
+
+ innerRight = document.createElement( "DIV" );
+ innerRight.noWrap = true;
+ innerRight.style.position = "absolute";
+
+ styleObj = new xbStyle( innerRight );
+ styleObj.setLeft( leftEdge + ( this.l * this.i ) );
+ styleObj.setWidth( this.width - 15 - this.l * this.i );
+ styleObj.setBackgroundColor( "transparent" );
+
+ // start of change by Mark Filanowicz 02-22-2002
+ if ( flList )
+ {
+ s = this.fontIntro + '<A TARGET="_self" STYLE="text-decoration: none;" HREF="javascript:xbcl_expand(' + listObj.id + ');">' + s + this.fontOutro;
+ }
+ else
+ {
+ s = this.fontIntro + s + this.fontOutro;
+ }
+ // end of change by Mark Filanowicz 02-22-2002
+
+
+ innerRight.innerHTML = s;
+ outerDiv.appendChild( innerRight );
+
+ obj.appendChild( outerDiv );
+
+ return;
+}
+
+function xbcl_writeItem( obj, s, flList, listObj )
+{
+ var cellStyle = '';
+ var str = '';
+ var styleObj = new xbStyle( obj );
+
+ styleObj.setVisibility( 'hidden' );
+
+ if ( document.body && document.body.style )
+ cellStyle = ' style="background-color: transparent;"';
+
+ str += '<TABLE WIDTH='+this.width+' NOWRAP BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR>';
+
+ if ( flList )
+ {
+ str += '<TD WIDTH="15" NOWRAP VALIGN="MIDDLE"' + cellStyle + '>';
+ str += '<A TARGET="_self" HREF="javascript:xbcl_expand(' + listObj.id + ');">';
+
+ if ( listObj.visible )
+ str += '<IMG BORDER="0" SRC="' + this.expandedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '">';
+ else
+ str += '<IMG BORDER="0" SRC="' + this.collapsedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '">';
+
+ str += '</A></TD>';
+ }
+ else if (this.space)
+ str += '<TD WIDTH="15" NOWRAP' + cellStyle + '> </TD>';
+
+ if (this.l>0 && this.i>0)
+ str += '<TD WIDTH="' + this.l*this.i+ '" NOWRAP' + cellStyle + '> </TD>';
+
+ str += '<TD HEIGHT="' + ( this.height - 3) + '" WIDTH="' + ( this.width - 15 - this.l * this.i ) + '" VALIGN="MIDDLE" ALIGN="LEFT"' + cellStyle + '>';
+
+ // start of change by Mark Filanowicz 02-22-2002
+ if ( flList )
+ {
+ str += this.fontIntro + '<A TARGET="_self" STYLE="text-decoration: none;" HREF="javascript:xbcl_expand(' + listObj.id + ');">' + s + this.fontOutro;
+ }
+ else
+ {
+ str += this.fontIntro + s + this.fontOutro;
+ }
+ // end of change by Mark Filanowicz 02-22-2002
+
+ str += '</TD></TR></TABLE>';
+
+ styleObj.setInnerHTML( str );
+
+ return;
+}
+
+function xbcl_writeList()
+{
+ var item;
+ var i;
+ var flList;
+
+ for ( i = 0; i < this.types.length; i++ )
+ {
+ item = this.items[ i ];
+ flList = ( this.types[ i ] == 'list' );
+
+ this._writeItem( item, this.strs[ i ], flList, this.lists[ i ] );
+
+ if ( flList && this.lists[ i ].visible )
+ this.lists[ i ]._writeList();
+ }
+
+ this.built = true;
+ this.needsRewrite = false;
+ self.status = '';
+}
+
+function xbcl_showList()
+{
+ var item;
+ var styleObj;
+ var i;
+
+ for (i = 0; i < this.types.length; i++)
+ {
+ item = this.items[i];
+ styleObj = new xbStyle(item);
+ styleObj.setClipLeft(0);
+ styleObj.setClipRight(this.width);
+ styleObj.setClipTop(0);
+ if (item.height)
+ {
+ styleObj.setClipBottom(item.height);
+ styleObj.setHeight(item.height);
+ }
+ else
+ {
+ styleObj.setClipBottom(this.height);
+ styleObj.setHeight(this.height);
+ }
+
+ if ( this.visible )
+ styleObj.setVisibility( 'visible' );
+
+ var bg = item.oBgColor || this.bgColor;
+ if ((bg == null) || (bg == 'null'))
+ bg = '';
+
+ styleObj.setBackgroundColor(bg);
+
+ if (this.types[i] == 'list' && this.lists[i].visible)
+ this.lists[i]._showList();
+ }
+ this.shown = true;
+ this.needsUpdate = false;
+}
+
+function xbcl_setImage(list, item, file)
+{
+ var id = '_img' + list.id;
+ var img = null;
+
+ // for DOMHTML or IE4 use cross browser getElementById from xbStyle
+ // can't use it for NN4 since it only works for layers in NN4
+ if (document.layers)
+ img = item.document.images[0];
+ else
+ img = xbGetElementById(id);
+
+ if (img)
+ img.src = file;
+}
+
+function xbcl_getHeight()
+{
+ var totalHeight = 0;
+ var i;
+
+ if (!this.visible)
+ return 0;
+
+ for (i = 0; i < this.types.length; i++)
+ {
+ if (this.items[i].height)
+ totalHeight += this.items[i].height;
+ else
+ totalHeight += this.height;
+
+ if ((this.types[i] == 'list') && this.lists[i].visible)
+ {
+ totalHeight += this.lists[i].getHeight();
+ }
+ }
+
+ return totalHeight;
+}
+
+function xbcl_updateList(pVis, x, y)
+{
+ var currTop = y;
+ var item;
+ var styleObj;
+ var i;
+
+ for (i = 0; i < this.types.length; i++)
+ {
+ item = this.items[i];
+ styleObj = new xbStyle(item);
+
+ if (this.visible && pVis)
+ {
+ styleObj.moveTo(x, currTop);
+ if (item.height) // allow custom heights for each item
+ currTop += item.height;
+ else
+ currTop += this.height;
+
+ styleObj.setVisibility('visible');
+ }
+ else
+ {
+ styleObj.setVisibility('hidden');
+ }
+
+ if (this.types[i] == 'list')
+ {
+ if (this.lists[i].visible)
+ {
+ if (!this.lists[i].built || this.lists[i].needsRewrite)
+ this.lists[i]._writeList();
+
+ if (!this.lists[i].shown || this.lists[i].needsUpdate)
+ this.lists[i]._showList();
+
+ xbcl_setImage(this.lists[i], item, this.expandedImageURL );
+ }
+ else
+ xbcl_setImage(this.lists[i], item, this.collapsedImageURL );
+
+ if (this.lists[i].built)
+ currTop = this.lists[i]._updateList(this.visible && pVis, x, currTop);
+ }
+ }
+ return currTop;
+}
+
+function xbcl_updateParent( pid, l )
+{
+ var i;
+
+ if ( !l )
+ l = 0;
+
+ this.pid = pid;
+ this.l = l;
+
+ for ( i = 0; i < this.types.length; i++ )
+ {
+ if ( this.types[ i ] == 'list' )
+ {
+ this.lists[ i ]._updateParent( pid, l + 1 );
+ }
+ }
+}
+
+function xbcl_expand(i)
+{
+ xbcl_mLists[i].visible = !xbcl_mLists[i].visible;
+
+ if (xbcl_mLists[i].onexpand != null)
+ xbcl_mLists[i].onexpand(xbcl_mLists[i].id);
+
+ xbcl_mLists[xbcl_mLists[i].pid].rebuild();
+
+ if (xbcl_mLists[i].postexpand != null)
+ xbcl_mLists[i].postexpand(xbcl_mLists[i].id);
+}
+
+function xbcl_build(x, y)
+{
+ this._updateParent(this.id);
+ this._writeList();
+ this._showList();
+ this._updateList(true, x, y);
+ this.x = x;
+ this.y = y;
+}
+
+function xbcl_rebuild()
+{
+ this._updateList(true, this.x, this.y);
+}
+
+function xbcl_getNewItem()
+{
+ var newItem = null;
+
+ newItem = xbGetElementById('lItem' + xbcl_item_id);
+
+ if (!newItem)
+ {
+ if (document.all && !document.getElementById)
+ {
+ var parentElement = this.parentElement;
+ if (!parentElement)
+ parentElement = document.body;
+
+ parentElement.insertAdjacentHTML('beforeEnd', '<div id="lItem' + xbcl_item_id + '" style="position:absolute;"></div>');
+ newItem = xbGetElementById('lItem' + xbcl_item_id);
+ }
+ else if (document.layers)
+ {
+ if (this.parentElement)
+ newItem = new Layer(this.width, this.parentElement);
+ else
+ newItem = new Layer(this.width);
+ }
+ else if (document.createElement)
+ {
+ newItem = document.createElement('div');
+ newItem.id= 'lItem' + xbcl_item_id;
+ newItem.style.position = 'absolute';
+
+ if (this.parentElement)
+ this.parentElement.appendChild(newItem);
+ else
+ document.body.appendChild(newItem);
+ }
+ }
+
+ return newItem;
+}
+
+function xbcl_addItem(str, bgColor, item)
+{
+ if (!item)
+ item = this._getNewItem();
+
+ if (!item)
+ return;
+
+ if (bgColor)
+ item.oBgColor = bgColor;
+
+ this.items[this.items.length] = item;
+ this.types[this.types.length] = 'item';
+ this.strs[this.strs.length] = str;
+ ++xbcl_item_id;
+
+ if ( this.built )
+ {
+ this._writeItem( item, str, false );
+ xbcl_mLists[this.pid].rebuild();
+ if ( this.visible )
+ this._showList();
+ else
+ this.needsUpdate = true;
+ }
+
+ return item;
+}
+
+function xbcl_addList(list, str, bgColor, item)
+{
+ if (!item)
+ item = this._getNewItem();
+
+ if (!item)
+ return;
+
+ if (bgColor)
+ item.oBgColor = bgColor;
+
+ this.lists[this.items.length] = list;
+ this.items[this.items.length] = item;
+ this.types[this.types.length] = 'list';
+ this.strs[this.strs.length] = str;
+ ++xbcl_item_id;
+
+ list.parentList = this;
+
+ list.pid = this.pid;
+ list.l = this.l + 1;
+
+ if ( this.built )
+ {
+ this._writeItem( item, str, true, list );
+ xbcl_mLists[ this.pid ].rebuild();
+ if ( this.visible )
+ this._showList();
+ else
+ this.needsUpdate = true;
+ }
+
+ return item;
+}
+
+List.prototype.setIndent = xbcl_setIndent;
+List.prototype.getIndent = xbcl_getIndent;
+List.prototype.addItem = xbcl_addItem;
+List.prototype.addList = xbcl_addList;
+List.prototype.build = xbcl_build;
+List.prototype.rebuild = xbcl_rebuild;
+List.prototype.setFont = xbcl_SetFont;
+List.prototype.getFont = xbcl_GetFont;
+List.prototype.getHeight = xbcl_getHeight;
+
+List.prototype._writeList = xbcl_writeList;
+List.prototype._getNewItem = xbcl_getNewItem;
+
+if ( document.getElementById && document.createElement )
+ List.prototype._writeItem = xbcl_writeItemDOMHTML;
+else
+ List.prototype._writeItem = xbcl_writeItem;
+
+List.prototype._showList = xbcl_showList;
+List.prototype._updateList = xbcl_updateList;
+List.prototype._updateParent = xbcl_updateParent;
+
+List.prototype.onexpand = null;
+List.prototype.postexpand = null;
+List.prototype.lists = null; // sublists
+List.prototype.items = null; // layers
+List.prototype.types = null; // type
+List.prototype.strs = null; // content
+List.prototype.x = 0;
+List.prototype.y = 0;
+List.prototype.visible = false;
+List.prototype.id = -1;
+List.prototype.i = 18;
+List.prototype.space = true;
+List.prototype.pid = 0;
+List.prototype.fontIntro = '';
+List.prototype.fontOutro = '';
+List.prototype.width = 350;
+List.prototype.height = 22;
+List.prototype.built = false;
+List.prototype.shown = false;
+List.prototype.needsUpdate = false;
+List.prototype.needsRewrite = false;
+List.prototype.l = 0;
+List.prototype.bgColor = null;
+List.prototype.parentList = null;
+List.prototype.parentElement = null;
--- /dev/null
+/*\r
+xbDOM.js v 0.004 2002-03-09\r
+\r
+Contributor(s): Bob Clary, Netscape Communications, Copyright 2001, 2002\r
+\r
+Netscape grants you a royalty free license to use, modify and \r
+distribute this software provided that this copyright notice \r
+appears on all copies. This software is provided "AS IS," \r
+without a warranty of any kind.\r
+\r
+Change Log: \r
+\r
+2002-03-15: v 0.004\r
+ bclary -\r
+ fix bug in bugfix for 0.003 in xbGetElementsByName \r
+ to not confuse elements with length properties with arrays\r
+\r
+2002-03-09: v 0.003\r
+ bclary -\r
+ fix bug in xbGetElementsByName in Internet Explorer when there is\r
+ only one instance of an element with name value.\r
+\r
+2002-01-19: v 0.002\r
+ bclary - \r
+ nav4FindElementsByName\r
+ removed erroneous obj and return\r
+ added search of form elements\r
+ xbFindElementsByNameAndType\r
+ renamed from FindElementsByNameAndType\r
+ removed erroneouse obj and return\r
+ xbSetInnerHTML\r
+ ported over from xbStyle since it is more\r
+ appropriate here.\r
+\r
+2001-11-27: v 0.01\r
+ bclary - \r
+ removed from xbStyle\r
+*/\r
+\r
+function xbToInt(s)\r
+{\r
+ var i = parseInt(s, 10);\r
+ if (isNaN(i))\r
+ i = 0;\r
+\r
+ return i;\r
+}\r
+\r
+function xbGetWindowWidth(windowRef)\r
+{\r
+ var width = 0;\r
+\r
+ if (!windowRef)\r
+ windowRef = window;\r
+ \r
+ if (typeof(windowRef.innerWidth) == 'number')\r
+ width = windowRef.innerWidth;\r
+ else if (windowRef.document.body && typeof(windowRef.document.body.clientWidth) == 'number')\r
+ width = windowRef.document.body.clientWidth; \r
+ \r
+ return width;\r
+}\r
+\r
+function xbGetWindowHeight(windowRef)\r
+{\r
+ var height = 0;\r
+ \r
+ if (!windowRef)\r
+ windowRef = window;\r
+\r
+ if (typeof(windowRef.innerWidth) == 'number')\r
+ height = windowRef.innerHeight;\r
+ else if (windowRef.document.body && typeof(windowRef.document.body.clientWidth) == 'number')\r
+ height = windowRef.document.body.clientHeight; \r
+\r
+ return height;\r
+}\r
+\r
+function nav4FindLayer(doc, id)\r
+{\r
+ var i;\r
+ var subdoc;\r
+ var obj;\r
+ \r
+ for (i = 0; i < doc.layers.length; ++i)\r
+ {\r
+ if (doc.layers[i].id && id == doc.layers[i].id)\r
+ return doc.layers[i];\r
+ \r
+ subdoc = doc.layers[i].document;\r
+ obj = nav4FindLayer(subdoc, id);\r
+ if (obj != null)\r
+ return obj;\r
+ }\r
+ return null;\r
+}\r
+\r
+function nav4FindElementsByName(doc, name, elmlist)\r
+{\r
+ var i;\r
+ var j;\r
+ var subdoc;\r
+\r
+ for (i = 0; i < doc.images.length; ++i)\r
+ {\r
+ if (doc.images[i].name && name == doc.images[i].name)\r
+ elmlist[elmlist.length] = doc.images[i];\r
+ }\r
+\r
+ for (i = 0; i < doc.forms.length; ++i)\r
+ {\r
+ for (j = 0; j < doc.forms[i].elements.length; j++)\r
+ if (doc.forms[i].elements[j].name && name == doc.forms[i].elements[j].name)\r
+ elmlist[elmlist.length] = doc.forms[i].elements[j];\r
+\r
+ if (doc.forms[i].name && name == doc.forms[i].name)\r
+ elmlist[elmlist.length] = doc.forms[i];\r
+ }\r
+\r
+ for (i = 0; i < doc.anchors.length; ++i)\r
+ {\r
+ if (doc.anchors[i].name && name == doc.anchors[i].name)\r
+ elmlist[elmlist.length] = doc.anchors[i];\r
+ }\r
+\r
+ for (i = 0; i < doc.links.length; ++i)\r
+ {\r
+ if (doc.links[i].name && name == doc.links[i].name)\r
+ elmlist[elmlist.length] = doc.links[i];\r
+ }\r
+\r
+ for (i = 0; i < doc.applets.length; ++i)\r
+ {\r
+ if (doc.applets[i].name && name == doc.applets[i].name)\r
+ elmlist[elmlist.length] = doc.applets[i];\r
+ }\r
+\r
+ for (i = 0; i < doc.embeds.length; ++i)\r
+ {\r
+ if (doc.embeds[i].name && name == doc.embeds[i].name)\r
+ elmlist[elmlist.length] = doc.embeds[i];\r
+ }\r
+\r
+ for (i = 0; i < doc.layers.length; ++i)\r
+ {\r
+ if (doc.layers[i].name && name == doc.layers[i].name)\r
+ elmlist[elmlist.length] = doc.layers[i];\r
+ \r
+ subdoc = doc.layers[i].document;\r
+ nav4FindElementsByName(subdoc, name, elmlist);\r
+ }\r
+}\r
+\r
+function xbGetElementsByNameAndType(name, type, windowRef)\r
+{\r
+ if (!windowRef)\r
+ windowRef = window;\r
+\r
+ var elmlist = new Array();\r
+\r
+ xbFindElementsByNameAndType(windowRef.document, name, type, elmlist);\r
+\r
+ return elmlist;\r
+}\r
+\r
+function xbFindElementsByNameAndType(doc, name, type, elmlist)\r
+{\r
+ var i;\r
+ var subdoc;\r
+ \r
+ for (i = 0; i < doc[type].length; ++i)\r
+ {\r
+ if (doc[type][i].name && name == doc[type][i].name)\r
+ elmlist[elmlist.length] = doc[type][i];\r
+ }\r
+\r
+ if (doc.layers)\r
+ {\r
+ for (i = 0; i < doc.layers.length; ++i)\r
+ {\r
+ subdoc = doc.layers[i].document;\r
+ xbFindElementsByNameAndType(subdoc, name, type, elmlist);\r
+ }\r
+ }\r
+}\r
+\r
+//alert("layers: " + document.layers + " all: " + document.all);\r
+\r
+if (document.layers)\r
+{\r
+ xbGetElementById = function (id, windowRef)\r
+ {\r
+ if (!windowRef)\r
+ windowRef = window;\r
+\r
+ return nav4FindLayer(windowRef.document, id);\r
+ };\r
+\r
+ xbGetElementsByName = function (name, windowRef)\r
+ {\r
+ if (!windowRef)\r
+ windowRef = window;\r
+\r
+ var elmlist = new Array();\r
+\r
+ nav4FindElementsByName(windowRef.document, name, elmlist);\r
+\r
+ return elmlist;\r
+ };\r
+\r
+}\r
+else if (document.all)\r
+{\r
+ xbGetElementById = function (id, windowRef)\r
+ {\r
+ if (!windowRef) windowRef = window;\r
+ var elm = windowRef.document.all[id];\r
+ if (!elm) elm = null;\r
+ return elm;\r
+ };\r
+\r
+ xbGetElementsByName = function (name, windowRef)\r
+ {\r
+ if (!windowRef) windowRef = window; \r
+\r
+ var i;\r
+ var idnamelist = windowRef.document.all.tags(name);\r
+ var elmlist = new Array();\r
+\r
+ if (!idnamelist) {\r
+ return null;\r
+ }\r
+\r
+ if (!idnamelist.length || idnamelist.name == name)\r
+ {\r
+ if (idnamelist)\r
+ elmlist[elmlist.length] = idnamelist;\r
+ }\r
+ else\r
+ {\r
+ for (i = 0; i < idnamelist.length; i++)\r
+ {\r
+ if (idnamelist.item(i).tagName == name)\r
+ elmlist[elmlist.length] = idnamelist[i];\r
+ }\r
+ }\r
+\r
+ return elmlist;\r
+ }\r
+\r
+}\r
+else if (document.getElementById)\r
+{\r
+ xbGetElementById = function (id, windowRef) { if (!windowRef) windowRef = window; return windowRef.document.getElementById(id); };\r
+ xbGetElementsByName = function (name, windowRef) { if (!windowRef) windowRef = window; return windowRef.document.getElementsByTagName(name); };\r
+}\r
+else \r
+{\r
+ xbGetElementById = function (id, windowRef) { return null; }\r
+ xbGetElementsByName = function (name, windowRef) { return new Array(); }\r
+}\r
+\r
+if (typeof(window.pageXOffset) == 'number')\r
+{\r
+ xbGetPageScrollX = function (windowRef) { if (!windowRef) windowRef = window; return windowRef.pageXOffset; };\r
+ xbGetPageScrollY = function (windowRef) { if (!windowRef) windowRef = window; return windowRef.pageYOffset; };\r
+}\r
+else if (document.all)\r
+{\r
+ xbGetPageScrollX = function (windowRef) { if (!windowRef) windowRef = window; return windowRef.document.body.scrollLeft; };\r
+ xbGetPageScrollY = function (windowRef) { if (!windowRef) windowRef = window; return windowRef.document.body.scrollTop; };\r
+}\r
+else\r
+{\r
+ xbGetPageScrollX = function (windowRef) { return 0; };\r
+ xbGetPageScrollY = function (windowRef) { return 0; };\r
+}\r
+\r
+if (document.layers)\r
+{\r
+ xbSetInnerHTML = function (element, str) { element.document.write(str); element.document.close(); };\r
+}\r
+else if (document.all || document.getElementById)\r
+{\r
+ xbSetInnerHTML = function (element, str) { if (typeof(element.innerHTML) != 'undefined') element.innerHTML = str; };\r
+}\r
+else\r
+{\r
+ xbSetInnerHTML = function (element, str) {};\r
+}\r
+\r
+\r
+// eof: xbDOM.js\r
--- /dev/null
+/*\r
+xbDebug.js revision: 0.003 2002-02-26\r
+\r
+Contributor(s): Bob Clary, Netscape Communications, Copyright 2001\r
+\r
+Netscape grants you a royalty free license to use, modify and \r
+distribute this software provided that this copyright notice \r
+appears on all copies. This software is provided "AS IS," \r
+without a warranty of any kind.\r
+\r
+ChangeLog:\r
+\r
+2002-02-25: bclary - modified xbDebugTraceOject to make sure \r
+ that original versions of wrapped functions were not\r
+ rewrapped. This had caused an infinite loop in IE.\r
+\r
+2002-02-07: bclary - modified xbDebug.prototype.close to not null\r
+ the debug window reference. This can cause problems with\r
+ Internet Explorer if the page is refreshed. These issues will\r
+ be addressed at a later date.\r
+*/\r
+\r
+function xbDebug()\r
+{\r
+ this.on = false;\r
+ this.stack = new Array();\r
+ this.debugwindow = null;\r
+ this.execprofile = new Object();\r
+}\r
+\r
+xbDebug.prototype.push = function ()\r
+{\r
+ this.stack[this.stack.length] = this.on;\r
+ this.on = true;\r
+}\r
+\r
+xbDebug.prototype.pop = function ()\r
+{\r
+ this.on = this.stack[this.stack.length - 1];\r
+ --this.stack.length;\r
+}\r
+\r
+xbDebug.prototype.open = function ()\r
+{\r
+ if (this.debugwindow && !this.debugwindow.closed)\r
+ this.close();\r
+ \r
+ this.debugwindow = window.open('about:blank', 'DEBUGWINDOW', 'height=400,width=600,resizable=yes,scrollbars=yes');\r
+\r
+ this.debugwindow.title = 'xbDebug Window';\r
+ this.debugwindow.document.write('<html><head><title>xbDebug Window</title></head><body><h3>Javascript Debug Window</h3></body></html>');\r
+ this.debugwindow.focus();\r
+}\r
+\r
+xbDebug.prototype.close = function ()\r
+{\r
+ if (!this.debugwindow)\r
+ return;\r
+ \r
+ if (!this.debugwindow.closed)\r
+ this.debugwindow.close();\r
+\r
+ // bc 2002-02-07, other windows may still hold a reference to this: this.debugwindow = null;\r
+}\r
+\r
+xbDebug.prototype.dump = function (msg)\r
+{\r
+ if (!this.on)\r
+ return;\r
+ \r
+ if (!this.debugwindow || this.debugwindow.closed)\r
+ this.open();\r
+ \r
+ this.debugwindow.document.write(msg + '<br>');\r
+ \r
+ return;\r
+}\r
+\r
+var xbDEBUG = new xbDebug();\r
+\r
+window.onunload = function () { xbDEBUG.close(); }\r
+\r
+function xbDebugGetFunctionName(funcref)\r
+{\r
+\r
+ if (funcref.name)\r
+ return funcref.name;\r
+\r
+ var name = funcref + '';\r
+ name = name.substring(name.indexOf(' ') + 1, name.indexOf('('));\r
+ funcref.name = name;\r
+\r
+ return name;\r
+}\r
+\r
+function xbDebugCreateFunctionWrapper(scopename, funcname, precall, postcall)\r
+{\r
+ var wrappedfunc;\r
+ var scopeobject = eval(scopename);\r
+ var funcref = scopeobject[funcname];\r
+\r
+ scopeobject['xbDebug_orig_' + funcname] = funcref;\r
+\r
+ wrappedfunc = function () \r
+ {\r
+ precall(scopename, funcname, arguments);\r
+ var rv = funcref.apply(this, arguments);\r
+ postcall(scopename, funcname, arguments, rv);\r
+ return rv;\r
+ };\r
+\r
+ if (typeof(funcref.constructor) != 'undefined')\r
+ wrappedfunc.constructor = funcref.constuctor;\r
+\r
+ if (typeof(funcref.prototype) != 'undefined')\r
+ wrappedfunc.prototype = funcref.prototype;\r
+\r
+ scopeobject[funcname] = wrappedfunc;\r
+}\r
+\r
+function xbDebugPersistToString(obj)\r
+{\r
+ var s = '';\r
+ var p;\r
+\r
+ if (obj == null)\r
+ return 'null';\r
+\r
+ switch(typeof(obj))\r
+ {\r
+ case 'number':\r
+ return obj;\r
+ case 'string':\r
+ return '"' + obj + '"';\r
+ case 'undefined':\r
+ return 'undefined';\r
+ case 'boolean':\r
+ return obj + '';\r
+ }\r
+\r
+ return '[' + xbDebugGetFunctionName(obj.constructor) + ']';\r
+}\r
+\r
+function xbDebugTraceBefore(scopename, funcname, funcarguments) \r
+{\r
+ var i;\r
+ var s = '';\r
+ var execprofile = xbDEBUG.execprofile[scopename + '.' + funcname];\r
+ if (!execprofile)\r
+ execprofile = xbDEBUG.execprofile[scopename + '.' + funcname] = { started: 0, time: 0, count: 0 };\r
+\r
+ for (i = 0; i < funcarguments.length; i++)\r
+ {\r
+ s += xbDebugPersistToString(funcarguments[i]);\r
+ if (i < funcarguments.length - 1)\r
+ s += ', ';\r
+ }\r
+\r
+ xbDEBUG.dump('enter ' + scopename + '.' + funcname + '(' + s + ')');\r
+ execprofile.started = (new Date()).getTime();\r
+}\r
+\r
+function xbDebugTraceAfter(scopename, funcname, funcarguments, rv) \r
+{\r
+ var i;\r
+ var s = '';\r
+ var execprofile = xbDEBUG.execprofile[scopename + '.' + funcname];\r
+ if (!execprofile)\r
+ xbDEBUG.dump('xbDebugTraceAfter: execprofile not created for ' + scopename + '.' + funcname);\r
+ else if (execprofile.started == 0)\r
+ xbDEBUG.dump('xbDebugTraceAfter: execprofile.started == 0 for ' + scopename + '.' + funcname);\r
+ else \r
+ {\r
+ execprofile.time += (new Date()).getTime() - execprofile.started;\r
+ execprofile.count++;\r
+ execprofile.started = 0;\r
+ }\r
+\r
+ for (i = 0; i < funcarguments.length; i++)\r
+ {\r
+ s += xbDebugPersistToString(funcarguments[i]);\r
+ if (i < funcarguments.length - 1)\r
+ s += ', ';\r
+ }\r
+\r
+ xbDEBUG.dump('exit ' + scopename + '.' + funcname + '(' + s + ')==' + xbDebugPersistToString(rv));\r
+}\r
+\r
+function xbDebugTraceFunction(scopename, funcname)\r
+{\r
+ xbDebugCreateFunctionWrapper(scopename, funcname, xbDebugTraceBefore, xbDebugTraceAfter);\r
+}\r
+\r
+function xbDebugTraceObject(scopename, objname)\r
+{\r
+ var objref = eval(scopename + '.' + objname);\r
+ var p;\r
+\r
+ if (!objref || !objref.prototype)\r
+ return;\r
+\r
+ for (p in objref.prototype)\r
+ {\r
+ if (typeof(objref.prototype[p]) == 'function' && (p+'').indexOf('xbDebug_orig') == -1)\r
+ {\r
+ xbDebugCreateFunctionWrapper(scopename + '.' + objname + '.prototype', p + '', xbDebugTraceBefore, xbDebugTraceAfter);\r
+ }\r
+ }\r
+}\r
+\r
+function xbDebugDumpProfile()\r
+{\r
+ var p;\r
+ var execprofile;\r
+ var avg;\r
+\r
+ for (p in xbDEBUG.execprofile)\r
+ {\r
+ execprofile = xbDEBUG.execprofile[p];\r
+ avg = Math.round ( 100 * execprofile.time/execprofile.count) /100;\r
+ xbDEBUG.dump('Execution profile ' + p + ' called ' + execprofile.count + ' times. Total time=' + execprofile.time + 'ms. Avg Time=' + avg + 'ms.');\r
+ }\r
+}\r
--- /dev/null
+/*\r
+xbStyle.js Revision: 0.202 2002-02-11\r
+\r
+Contributor(s): Bob Clary, Original Work, Copyright 2000\r
+ Bob Clary, Netscape Communications, Copyright 2001\r
+\r
+Netscape grants you a royalty free license to use, modify and \r
+distribute this software provided that this copyright notice \r
+appears on all copies. This software is provided "AS IS," \r
+without a warranty of any kind.\r
+\r
+Change Log:\r
+\r
+2001-07-19: bclary - fixed function cssStyleGetLeft() and cssStyleGetTop() to \r
+ correctly handle the case where the initial style.left/style.top\r
+ are not initialized. This fixes positioning for relatively positioned\r
+ DIVS and as a result fixes behavior for ILAYERs exposed as relatively\r
+ positioned divs.\r
+2001-10-02: bclary - added missing xbClipRect.getHeight/setHeight methods.\r
+\r
+2001-11-20: bclary - removed use of practical browser sniffer, \r
+ added object sniffing, and limited support for opera\r
+ note opera returns ints for HTMLElement.style.[left|top|height|width] etc.\r
+\r
+2002-02-11: v 0.201 bclary - with the help of Rob Johnston <rob_johnston@hotmail.com>\r
+ found that the "if (document.getElementsByName)" test excluded\r
+ IE4. Added a test for document.all to enable IE4 to fully use \r
+ xbStyle.\r
+\r
+2002-03-12: v 0.202 Daniel Resare contributed a patch to cssStyleSetPage[X|Y]() which\r
+ handles the case where the element has no parentNode.\r
+*/\r
+\r
+function xbStyleNotSupported() {}\r
+\r
+function xbStyleNotSupportStringValue(propname) { xbDEBUG.dump(propname + ' is not supported in this browser'); return '';};\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbClipRect\r
+\r
+function xbClipRect(a1, a2, a3, a4)\r
+{\r
+ this.top = 0;\r
+ this.right = 0;\r
+ this.bottom = 0;\r
+ this.left = 0;\r
+\r
+ if (typeof(a1) == 'string')\r
+ {\r
+ var val;\r
+ var ca;\r
+ var i;\r
+ \r
+ if (a1.indexOf('rect(') == 0)\r
+ {\r
+ // I would have preferred [0-9]+[a-zA-Z]+ for a regexp\r
+ // but NN4 returns null for that. \r
+ ca = a1.substring(5, a1.length-1).match(/-?[0-9a-zA-Z]+/g);\r
+ for (i = 0; i < 4; ++i)\r
+ {\r
+ val = xbToInt(ca[i]);\r
+ if (val != 0 && ca[i].indexOf('px') == -1)\r
+ {\r
+ xbDEBUG.dump('xbClipRect: A clipping region ' + a1 + ' was detected that did not use pixels as units. Click Ok to continue, Cancel to Abort');\r
+ return;\r
+ }\r
+ ca[i] = val;\r
+ }\r
+ this.top = ca[0];\r
+ this.right = ca[1];\r
+ this.bottom = ca[2];\r
+ this.left = ca[3];\r
+ }\r
+ } \r
+ else if (typeof(a1) == 'number' && typeof(a2) == 'number' && typeof(a3) == 'number' && typeof(a4) == 'number')\r
+ {\r
+ this.top = a1;\r
+ this.right = a2;\r
+ this.bottom = a3;\r
+ this.left = a4;\r
+ }\r
+}\r
+\r
+xbClipRect.prototype.top = 0;\r
+xbClipRect.prototype.right = 0;\r
+xbClipRect.prototype.bottom = 0;\r
+xbClipRect.prototype.left = 0;\r
+\r
+\r
+function xbClipRectGetWidth()\r
+{\r
+ return this.right - this.left;\r
+}\r
+xbClipRect.prototype.getWidth = xbClipRectGetWidth; \r
+\r
+function xbClipRectSetWidth(width)\r
+{\r
+ this.right = this.left + width;\r
+}\r
+xbClipRect.prototype.setWidth = xbClipRectSetWidth;\r
+\r
+function xbClipRectGetHeight()\r
+{\r
+ return this.bottom - this.top;\r
+}\r
+xbClipRect.prototype.getHeight = xbClipRectGetHeight; \r
+\r
+function xbClipRectSetHeight(height)\r
+{\r
+ this.bottom = this.top + height;\r
+}\r
+xbClipRect.prototype.setHeight = xbClipRectSetHeight;\r
+\r
+function xbClipRectToString()\r
+{\r
+ return 'rect(' + this.top + 'px ' + this.right + 'px ' + this.bottom + 'px ' + this.left + 'px )' ;\r
+}\r
+xbClipRect.prototype.toString = xbClipRectToString;\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle\r
+//\r
+// Note Opera violates the standard by cascading the effective values\r
+// into the HTMLElement.style object. We can use IE's HTMLElement.currentStyle\r
+// to get the effective values. In Gecko we will use the W3 DOM Style Standard getComputedStyle\r
+\r
+function xbStyle(obj, position)\r
+{\r
+ if (typeof(obj) == 'object' && typeof(obj.style) != 'undefined') \r
+ this.styleObj = obj.style;\r
+ else if (document.layers) // NN4\r
+ {\r
+ if (typeof(position) == 'undefined')\r
+ position = '';\r
+ \r
+ this.styleObj = obj;\r
+ this.styleObj.position = position;\r
+ }\r
+ this.object = obj;\r
+}\r
+\r
+xbStyle.prototype.styleObj = null;\r
+xbStyle.prototype.object = null;\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.getEffectiveValue()\r
+// note that xbStyle's constructor uses the currentStyle object \r
+// for IE5+ and that Opera's style object contains computed values\r
+// already. Netscape Navigator's layer object also contains the \r
+// computed values as well. Note that IE4 will not return the \r
+// computed values.\r
+\r
+function xbStyleGetEffectiveValue(propname)\r
+{\r
+ var value = null;\r
+\r
+ // W3/Gecko\r
+ if (document.defaultView && document.defaultView.getComputedStyle)\r
+ {\r
+ if (navigator.family == 'gecko')\r
+ {\r
+ // xxxHack: work around Gecko getComputedStyle bugs...\r
+ switch(propname)\r
+ {\r
+ case 'clip':\r
+ return this.styleObj[propname];\r
+ case 'top':\r
+ if (navigator.family == 'gecko' && navigator.version < 0.96 && this.styleObj.position == 'relative')\r
+ return this.object.offsetTop;\r
+ case 'left':\r
+ if (navigator.family == 'gecko' && navigator.version < 0.96 && this.styleObj.position == 'relative')\r
+ return this.object.offsetLeft;\r
+ }\r
+ }\r
+ // Note that propname is the name of the property in the CSS Style\r
+ // Object. However the W3 method getPropertyValue takes the actual\r
+ // property name from the CSS Style rule, i.e., propname is \r
+ // 'backgroundColor' but getPropertyValue expects 'background-color'.\r
+\r
+ var capIndex;\r
+ var cappropname = propname;\r
+ while ( (capIndex = cappropname.search(/[A-Z]/)) != -1)\r
+ {\r
+ if (capIndex != -1)\r
+ cappropname = cappropname.substring(0, capIndex) + '-' + cappropname.substring(capIndex, capIndex).toLowerCase() + cappropname.substr(capIndex+1);\r
+ }\r
+\r
+ value = document.defaultView.getComputedStyle(this.object, '').getPropertyValue(cappropname);\r
+\r
+ // xxxHack for Gecko:\r
+ if (!value && this.styleObj[propname])\r
+ value = this.styleObj[propname];\r
+ }\r
+ else if (typeof(this.styleObj[propname]) == 'undefined') \r
+ value = xbStyleNotSupportStringValue(propname);\r
+ else \r
+ {\r
+ if (navigator.family != 'ie4' || navigator.version < 5)\r
+ {\r
+ // IE4+, Opera, NN4\r
+ value = this.styleObj[propname];\r
+ }\r
+ else\r
+ {\r
+ // IE5+\r
+ value = this.object.currentStyle[propname];\r
+ if (!value)\r
+ value = this.styleObj[propname];\r
+ }\r
+ }\r
+\r
+ return value;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.getClip()\r
+\r
+function cssStyleGetClip()\r
+{\r
+ var clip = this.getEffectiveValue('clip');\r
+\r
+ // hack opera\r
+ if (clip == 'rect()')\r
+ clip = '';\r
+\r
+ if (clip == '')\r
+ clip = 'rect(0px ' + this.getWidth() + 'px ' + this.getHeight() + 'px 0px)';\r
+\r
+ return clip;\r
+}\r
+\r
+function nsxbStyleGetClip()\r
+{\r
+ var clip = this.styleObj.clip;\r
+ var rect = new xbClipRect(clip.top, clip.right, clip.bottom, clip.left);\r
+ return rect.toString();\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.setClip()\r
+\r
+function cssStyleSetClip(sClipString)\r
+{\r
+ this.styleObj.clip = sClipString;\r
+}\r
+\r
+function nsxbStyleSetClip(sClipString)\r
+{\r
+ var rect = new xbClipRect(sClipString);\r
+ this.styleObj.clip.top = rect.top;\r
+ this.styleObj.clip.right = rect.right;\r
+ this.styleObj.clip.bottom = rect.bottom;\r
+ this.styleObj.clip.left = rect.left;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.getClipTop()\r
+\r
+function cssStyleGetClipTop()\r
+{\r
+ var clip = this.getClip()\r
+ var rect = new xbClipRect(clip);\r
+ return rect.top;\r
+}\r
+\r
+function nsxbStyleGetClipTop()\r
+{\r
+ return this.styleObj.clip.top;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.setClipTop()\r
+\r
+function cssStyleSetClipTop(top)\r
+{\r
+ var clip = this.getClip();\r
+ var rect = new xbClipRect(clip);\r
+ rect.top = top;\r
+ this.styleObj.clip = rect.toString();\r
+}\r
+\r
+function nsxbStyleSetClipTop(top)\r
+{\r
+ return this.styleObj.clip.top = top;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.getClipRight()\r
+\r
+function cssStyleGetClipRight()\r
+{\r
+ var clip = this.getClip();\r
+ var rect = new xbClipRect(clip);\r
+ return rect.right;\r
+}\r
+\r
+function nsxbStyleGetClipRight()\r
+{\r
+ return this.styleObj.clip.right;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.setClipRight()\r
+\r
+function cssStyleSetClipRight(right)\r
+{\r
+ var clip = this.getClip();\r
+ var rect = new xbClipRect(clip);\r
+ rect.right = right;\r
+ this.styleObj.clip = rect.toString();\r
+}\r
+\r
+function nsxbStyleSetClipRight(right)\r
+{\r
+ return this.styleObj.clip.right = right;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.getClipBottom()\r
+\r
+function cssStyleGetClipBottom()\r
+{\r
+ var clip = this.getClip();\r
+ var rect = new xbClipRect(clip);\r
+ return rect.bottom;\r
+}\r
+\r
+function nsxbStyleGetClipBottom()\r
+{\r
+ return this.styleObj.clip.bottom;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.setClipBottom()\r
+\r
+function cssStyleSetClipBottom(bottom)\r
+{\r
+ var clip = this.getClip();\r
+ var rect = new xbClipRect(clip);\r
+ rect.bottom = bottom;\r
+ this.styleObj.clip = rect.toString();\r
+}\r
+\r
+function nsxbStyleSetClipBottom(bottom)\r
+{\r
+ return this.styleObj.clip.bottom = bottom;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.getClipLeft()\r
+\r
+function cssStyleGetClipLeft()\r
+{\r
+ var clip = this.getClip();\r
+ var rect = new xbClipRect(clip);\r
+ return rect.left;\r
+}\r
+\r
+function nsxbStyleGetClipLeft()\r
+{\r
+ return this.styleObj.clip.left;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.setClipLeft()\r
+\r
+function cssStyleSetClipLeft(left)\r
+{\r
+ var clip = this.getClip();\r
+ var rect = new xbClipRect(clip);\r
+ rect.left = left;\r
+ this.styleObj.clip = rect.toString();\r
+}\r
+\r
+function nsxbStyleSetClipLeft(left)\r
+{\r
+ return this.styleObj.clip.left = left;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.getClipWidth()\r
+\r
+function cssStyleGetClipWidth()\r
+{\r
+ var clip = this.getClip();\r
+ var rect = new xbClipRect(clip);\r
+ return rect.getWidth();\r
+}\r
+\r
+function nsxbStyleGetClipWidth()\r
+{\r
+ return this.styleObj.clip.width;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.setClipWidth()\r
+\r
+function cssStyleSetClipWidth(width)\r
+{\r
+ var clip = this.getClip();\r
+ var rect = new xbClipRect(clip);\r
+ rect.setWidth(width);\r
+ this.styleObj.clip = rect.toString();\r
+}\r
+\r
+function nsxbStyleSetClipWidth(width)\r
+{\r
+ return this.styleObj.clip.width = width;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.getClipHeight()\r
+\r
+function cssStyleGetClipHeight()\r
+{\r
+ var clip = this.getClip();\r
+ var rect = new xbClipRect(clip);\r
+ return rect.getHeight();\r
+}\r
+\r
+function nsxbStyleGetClipHeight()\r
+{\r
+ return this.styleObj.clip.height;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////\r
+// xbStyle.setClipHeight()\r
+\r
+function cssStyleSetClipHeight(height)\r
+{\r
+ var clip = this.getClip();\r
+ var rect = new xbClipRect(clip);\r
+ rect.setHeight(height);\r
+ this.styleObj.clip = rect.toString();\r
+}\r
+\r
+function nsxbStyleSetClipHeight(height)\r
+{\r
+ return this.styleObj.clip.height = height;\r
+}\r
+\r
+// the CSS attributes left,top are for absolutely positioned elements\r
+// measured relative to the containing element. for relatively positioned\r
+// elements, left,top are measured from the element's normal inline position.\r
+// getLeft(), setLeft() operate on this type of coordinate.\r
+//\r
+// to allow dynamic positioning the getOffsetXXX and setOffsetXXX methods are\r
+// defined to return and set the position of either an absolutely or relatively\r
+// positioned element relative to the containing element.\r
+//\r
+//\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getLeft()\r
+\r
+function cssStyleGetLeft()\r
+{\r
+ var left = this.getEffectiveValue('left');\r
+ if (typeof(left) == 'number')\r
+ return left;\r
+\r
+ if (left != '' && left.indexOf('px') == -1)\r
+ {\r
+ xbDEBUG.dump('xbStyle.getLeft: Element ID=' + this.object.id + ' does not use pixels as units. left=' + left + ' Click Ok to continue, Cancel to Abort');\r
+ return 0;\r
+ }\r
+\r
+ if (left == '')\r
+ left = this.styleObj.left = '0px';\r
+ \r
+ return xbToInt(left);\r
+}\r
+\r
+function nsxbStyleGetLeft()\r
+{\r
+ return this.styleObj.left;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.setLeft()\r
+\r
+function cssStyleSetLeft(left)\r
+{\r
+ if (typeof(this.styleObj.left) == 'number')\r
+ this.styleObj.left = left;\r
+ else\r
+ this.styleObj.left = left + 'px';\r
+}\r
+\r
+function nsxbStyleSetLeft(left)\r
+{\r
+ this.styleObj.left = left;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getTop()\r
+\r
+function cssStyleGetTop()\r
+{\r
+ var top = this.getEffectiveValue('top');\r
+ if (typeof(top) == 'number')\r
+ return top;\r
+\r
+ if (top != '' && top.indexOf('px') == -1)\r
+ {\r
+ xbDEBUG.dump('xbStyle.getTop: Element ID=' + this.object.id + ' does not use pixels as units. top=' + top + ' Click Ok to continue, Cancel to Abort');\r
+ return 0;\r
+ }\r
+\r
+ if (top == '')\r
+ top = this.styleObj.top = '0px';\r
+ \r
+ return xbToInt(top);\r
+}\r
+\r
+function nsxbStyleGetTop()\r
+{\r
+ return this.styleObj.top;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.setTop()\r
+\r
+function cssStyleSetTop(top)\r
+{\r
+ if (typeof(this.styleObj.top) == 'number')\r
+ this.styleObj.top = top;\r
+ else\r
+ this.styleObj.top = top + 'px';\r
+}\r
+\r
+function nsxbStyleSetTop(top)\r
+{\r
+ this.styleObj.top = top;\r
+}\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getPageX()\r
+\r
+function cssStyleGetPageX()\r
+{\r
+ var x = 0;\r
+ var elm = this.object;\r
+ var elmstyle;\r
+ var position;\r
+ \r
+ //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the \r
+ // effective position attribute , attempt to use offsetXXX\r
+\r
+ if (typeof(elm.offsetLeft) == 'number')\r
+ {\r
+ while (elm)\r
+ {\r
+ x += elm.offsetLeft;\r
+ elm = elm.offsetParent;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ while (elm)\r
+ {\r
+ if (elm.style)\r
+ {\r
+ elmstyle = new xbStyle(elm);\r
+ position = elmstyle.getEffectiveValue('position');\r
+ if (position != '' && position != 'static')\r
+ x += elmstyle.getLeft();\r
+ }\r
+ elm = elm.parentNode;\r
+ }\r
+ }\r
+ \r
+ return x;\r
+}\r
+\r
+function nsxbStyleGetPageX()\r
+{\r
+ return this.styleObj.pageX;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.setPageX()\r
+\r
+function cssStyleSetPageX(x)\r
+{\r
+ var xParent = 0;\r
+ var elm = this.object.parentNode;\r
+ var elmstyle;\r
+ var position;\r
+ \r
+ //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the \r
+ // effective position attribute , attempt to use offsetXXX\r
+\r
+ if (elm && typeof(elm.offsetLeft) == 'number')\r
+ {\r
+ while (elm)\r
+ {\r
+ xParent += elm.offsetLeft;\r
+ elm = elm.offsetParent;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ while (elm)\r
+ {\r
+ if (elm.style)\r
+ {\r
+ elmstyle = new xbStyle(elm);\r
+ position = elmstyle.getEffectiveValue('position');\r
+ if (position != '' && position != 'static')\r
+ xParent += elmstyle.getLeft();\r
+ }\r
+ elm = elm.parentNode;\r
+ }\r
+ }\r
+ \r
+ x -= xParent;\r
+\r
+ this.setLeft(x);\r
+}\r
+ \r
+function nsxbStyleSetPageX(x)\r
+{\r
+ this.styleObj.x = this.styleObj.x + x - this.styleObj.pageX;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getPageY()\r
+\r
+function cssStyleGetPageY()\r
+{\r
+ var y = 0;\r
+ var elm = this.object;\r
+ var elmstyle;\r
+ var position;\r
+ \r
+ //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the \r
+ // effective position attribute , attempt to use offsetXXX\r
+\r
+ if (typeof(elm.offsetTop) == 'number')\r
+ {\r
+ while (elm)\r
+ {\r
+ y += elm.offsetTop;\r
+ elm = elm.offsetParent;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ while (elm)\r
+ {\r
+ if (elm.style)\r
+ {\r
+ elmstyle = new xbStyle(elm);\r
+ position = elmstyle.getEffectiveValue('position');\r
+ if (position != '' && position != 'static')\r
+ y += elmstyle.getTop();\r
+ }\r
+ elm = elm.parentNode;\r
+ }\r
+ }\r
+ \r
+ return y;\r
+}\r
+\r
+function nsxbStyleGetPageY()\r
+{\r
+ return this.styleObj.pageY;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.setPageY()\r
+\r
+function cssStyleSetPageY(y)\r
+{\r
+ var yParent = 0;\r
+ var elm = this.object.parentNode;\r
+ var elmstyle;\r
+ var position;\r
+ \r
+ //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the \r
+ // effective position attribute , attempt to use offsetXXX\r
+\r
+ if (elm && typeof(elm.offsetTop) == 'number')\r
+ {\r
+ while (elm)\r
+ {\r
+ yParent += elm.offsetTop;\r
+ elm = elm.offsetParent;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ while (elm)\r
+ {\r
+ if (elm.style)\r
+ {\r
+ elmstyle = new xbStyle(elm);\r
+ position = elmstyle.getEffectiveValue('position');\r
+ if (position != '' && position != 'static')\r
+ yParent += elmstyle.getTop();\r
+ }\r
+ elm = elm.parentNode;\r
+ }\r
+ }\r
+ \r
+ y -= yParent;\r
+\r
+ this.setTop(y);\r
+}\r
+ \r
+function nsxbStyleSetPageY(y)\r
+{\r
+ this.styleObj.y = this.styleObj.y + y - this.styleObj.pageY;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getHeight()\r
+\r
+function cssStyleGetHeight()\r
+{\r
+ var height = this.getEffectiveValue('height');\r
+ if (typeof(height) == 'number')\r
+ return height;\r
+\r
+ if ((height == 'auto' || height.indexOf('%') != -1) && typeof(this.object.offsetHeight) == 'number')\r
+ height = this.object.offsetHeight + 'px';\r
+\r
+ if (height != '' && height != 'auto' && height.indexOf('px') == -1)\r
+ {\r
+ xbDEBUG.dump('xbStyle.getHeight: Element ID=' + this.object.id + ' does not use pixels as units. height=' + height + ' Click Ok to continue, Cancel to Abort');\r
+ return 0;\r
+ }\r
+\r
+ height = xbToInt(height);\r
+\r
+ return height;\r
+}\r
+\r
+function nsxbStyleGetHeight()\r
+{\r
+ //if (this.styleObj.document && this.styleObj.document.height)\r
+ // return this.styleObj.document.height;\r
+ \r
+ return this.styleObj.clip.height;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.setHeight()\r
+\r
+function cssStyleSetHeight(height)\r
+{\r
+ if (typeof(this.styleObj.height) == 'number')\r
+ this.styleObj.height = height;\r
+ else\r
+ this.styleObj.height = height + 'px';\r
+}\r
+\r
+function nsxbStyleSetHeight(height)\r
+{\r
+ this.styleObj.clip.height = height;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getWidth()\r
+\r
+function cssStyleGetWidth()\r
+{\r
+ var width = this.getEffectiveValue('width');\r
+ if (typeof(width) == 'number')\r
+ return width;\r
+\r
+ if ((width == 'auto' || width.indexOf('%') != -1) && typeof(this.object.offsetWidth) == 'number')\r
+ width = this.object.offsetWidth + 'px';\r
+\r
+ if (width != '' && width != 'auto' && width.indexOf('px') == -1)\r
+ {\r
+ xbDEBUG.dump('xbStyle.getWidth: Element ID=' + this.object.id + ' does not use pixels as units. width=' + width + ' Click Ok to continue, Cancel to Abort');\r
+ return 0;\r
+ }\r
+\r
+ width = xbToInt(width);\r
+\r
+ return width;\r
+}\r
+\r
+function nsxbStyleGetWidth()\r
+{\r
+ //if (this.styleObj.document && this.styleObj.document.width)\r
+ // return this.styleObj.document.width;\r
+ \r
+ return this.styleObj.clip.width;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.setWidth()\r
+\r
+function cssStyleSetWidth(width)\r
+{\r
+ if (typeof(this.styleObj.width) == 'number')\r
+ this.styleObj.width = width;\r
+ else\r
+ this.styleObj.width = width + 'px';\r
+}\r
+\r
+// netscape will not dynamically change the width of a \r
+// layer. It will only happen upon a refresh.\r
+function nsxbStyleSetWidth(width)\r
+{\r
+ this.styleObj.clip.width = width;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getVisibility()\r
+\r
+function cssStyleGetVisibility()\r
+{\r
+ return this.getEffectiveValue('visibility');\r
+}\r
+\r
+function nsxbStyleGetVisibility()\r
+{\r
+ switch(this.styleObj.visibility)\r
+ {\r
+ case 'hide':\r
+ return 'hidden';\r
+ case 'show':\r
+ return 'visible';\r
+ }\r
+ return '';\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.setVisibility()\r
+\r
+function cssStyleSetVisibility(visibility)\r
+{\r
+ this.styleObj.visibility = visibility;\r
+}\r
+\r
+function nsxbStyleSetVisibility(visibility)\r
+{\r
+ switch(visibility)\r
+ {\r
+ case 'hidden':\r
+ visibility = 'hide';\r
+ break;\r
+ case 'visible':\r
+ visibility = 'show';\r
+ break;\r
+ case 'inherit':\r
+ break;\r
+ default:\r
+ visibility = 'show';\r
+ break;\r
+ }\r
+ this.styleObj.visibility = visibility;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getzIndex()\r
+\r
+function cssStyleGetzIndex()\r
+{\r
+ return xbToInt(this.getEffectiveValue('zIndex'));\r
+}\r
+\r
+function nsxbStyleGetzIndex()\r
+{\r
+ return this.styleObj.zIndex;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.setzIndex()\r
+\r
+function cssStyleSetzIndex(zIndex)\r
+{\r
+ this.styleObj.zIndex = zIndex;\r
+}\r
+\r
+function nsxbStyleSetzIndex(zIndex)\r
+{\r
+ this.styleObj.zIndex = zIndex;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getBackgroundColor()\r
+\r
+function cssStyleGetBackgroundColor()\r
+{\r
+ return this.getEffectiveValue('backgroundColor');\r
+}\r
+\r
+function nsxbStyleGetBackgroundColor()\r
+{\r
+ return this.styleObj.bgColor;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.setBackgroundColor()\r
+\r
+function cssStyleSetBackgroundColor(color)\r
+{\r
+ this.styleObj.backgroundColor = color;\r
+}\r
+\r
+function nsxbStyleSetBackgroundColor(color)\r
+{\r
+ if (color)\r
+ {\r
+ this.styleObj.bgColor = color;\r
+ this.object.document.bgColor = color;\r
+ this.resizeTo(this.getWidth(), this.getHeight());\r
+ }\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getColor()\r
+\r
+function cssStyleGetColor()\r
+{\r
+ return this.getEffectiveValue('color');\r
+}\r
+\r
+function nsxbStyleGetColor()\r
+{\r
+ return '#ffffff';\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.setColor()\r
+\r
+function cssStyleSetColor(color)\r
+{\r
+ this.styleObj.color = color;\r
+}\r
+\r
+function nsxbStyleSetColor(color)\r
+{\r
+ this.object.document.fgColor = color;\r
+}\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.moveAbove()\r
+\r
+function xbStyleMoveAbove(cont)\r
+{\r
+ this.setzIndex(cont.getzIndex()+1);\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.moveBelow()\r
+\r
+function xbStyleMoveBelow(cont)\r
+{\r
+ var zindex = cont.getzIndex() - 1;\r
+ \r
+ this.setzIndex(zindex);\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.moveBy()\r
+\r
+function xbStyleMoveBy(deltaX, deltaY)\r
+{\r
+ this.moveTo(this.getLeft() + deltaX, this.getTop() + deltaY);\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.moveTo()\r
+\r
+function xbStyleMoveTo(x, y)\r
+{\r
+ this.setLeft(x);\r
+ this.setTop(y);\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.moveToAbsolute()\r
+\r
+function xbStyleMoveToAbsolute(x, y)\r
+{\r
+ this.setPageX(x);\r
+ this.setPageY(y);\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.resizeBy()\r
+\r
+function xbStyleResizeBy(deltaX, deltaY)\r
+{\r
+ this.setWidth( this.getWidth() + deltaX );\r
+ this.setHeight( this.getHeight() + deltaY );\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.resizeTo()\r
+\r
+function xbStyleResizeTo(x, y)\r
+{\r
+ this.setWidth(x);\r
+ this.setHeight(y);\r
+}\r
+\r
+////////////////////////////////////////////////////////////////////////\r
+// Navigator 4.x resizing...\r
+\r
+function nsxbStyleOnresize()\r
+{\r
+ if (saveInnerWidth != xbGetWindowWidth() || saveInnerHeight != xbGetWindowHeight())\r
+ location.reload();\r
+\r
+ return false;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.setInnerHTML()\r
+\r
+function xbSetInnerHTML(str)\r
+{\r
+ if (typeof(this.object.innerHTML) != 'undefined')\r
+ this.object.innerHTML = str;\r
+}\r
+\r
+function nsxbSetInnerHTML(str)\r
+{\r
+ this.object.document.open('text/html');\r
+ this.object.document.write(str);\r
+ this.object.document.close();\r
+}\r
+\r
+////////////////////////////////////////////////////////////////////////\r
+// Extensions to xbStyle that are not supported by Netscape Navigator 4\r
+// but that provide cross browser implementations of properties for \r
+// Mozilla, Gecko, Netscape 6.x and Opera\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getBorderTopWidth()\r
+\r
+function cssStyleGetBorderTopWidth()\r
+{\r
+ return xbToInt(this.getEffectiveValue('borderTopWidth'));\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getBorderRightWidth()\r
+\r
+function cssStyleGetBorderRightWidth()\r
+{\r
+ return xbToInt(this.getEffectiveValue('borderRightWidth'));\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getBorderBottomWidth()\r
+\r
+function cssStyleGetBorderBottomWidth()\r
+{\r
+ return xbToInt(this.getEffectiveValue('borderLeftWidth'));\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getBorderLeftWidth()\r
+\r
+function cssStyleGetBorderLeftWidth()\r
+{\r
+ return xbToInt(this.getEffectiveValue('borderLeftWidth'));\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getMarginTop()\r
+\r
+function cssStyleGetMarginTop()\r
+{\r
+ return xbToInt(this.getEffectiveValue('marginTop'));\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getMarginRight()\r
+\r
+function cssStyleGetMarginRight()\r
+{\r
+ return xbToInt(this.getEffectiveValue('marginRight'));\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getMarginBottom()\r
+\r
+function cssStyleGetMarginBottom()\r
+{\r
+ return xbToInt(this.getEffectiveValue('marginBottom'));\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getMarginLeft()\r
+\r
+function cssStyleGetMarginLeft()\r
+{\r
+ return xbToInt(this.getEffectiveValue('marginLeft'));\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getPaddingTop()\r
+\r
+function cssStyleGetPaddingTop()\r
+{\r
+ return xbToInt(this.getEffectiveValue('paddingTop'));\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getPaddingRight()\r
+\r
+function cssStyleGetPaddingRight()\r
+{\r
+ return xbToInt(this.getEffectiveValue('paddingRight'));\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getPaddingBottom()\r
+\r
+function cssStyleGetPaddingBottom()\r
+{\r
+ return xbToInt(this.getEffectiveValue('paddingBottom'));\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getPaddingLeft()\r
+\r
+function cssStyleGetPaddingLeft()\r
+{\r
+ return xbToInt(this.getEffectiveValue('paddingLeft'));\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getClientTop()\r
+\r
+function cssStyleGetClientTop()\r
+{\r
+ return this.getTop() - this.getMarginTop() - this.getBorderTopWidth() - this.getPaddingTop();\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getClientLeft()\r
+\r
+function cssStyleGetClientLeft()\r
+{\r
+ return this.getLeft() - this.getMarginLeft() - this.getBorderLeftWidth() - this.getPaddingLeft();\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getClientWidth()\r
+\r
+function cssStyleGetClientWidth()\r
+{\r
+ return this.getMarginLeft() + this.getBorderLeftWidth() + this.getPaddingLeft() + this.getWidth() + this.getPaddingRight() + this.getBorderRightWidth() + this.getMarginRight();\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// xbStyle.getClientHeight()\r
+\r
+function cssStyleGetClientHeight()\r
+{\r
+ return this.getMarginTop() + this.getBorderTopWidth() + this.getPaddingTop() + this.getHeight() + this.getPaddingBottom() + this.getBorderBottomWidth() + this.getMarginBottom();\r
+}\r
+\r
+////////////////////////////////////////////////////////////////////////\r
+\r
+xbStyle.prototype.getEffectiveValue = xbStyleGetEffectiveValue;\r
+xbStyle.prototype.moveAbove = xbStyleMoveAbove;\r
+xbStyle.prototype.moveBelow = xbStyleMoveBelow;\r
+xbStyle.prototype.moveBy = xbStyleMoveBy;\r
+xbStyle.prototype.moveTo = xbStyleMoveTo;\r
+xbStyle.prototype.moveToAbsolute = xbStyleMoveToAbsolute;\r
+xbStyle.prototype.resizeBy = xbStyleResizeBy;\r
+xbStyle.prototype.resizeTo = xbStyleResizeTo;\r
+\r
+if (document.all || document.getElementsByName)\r
+{\r
+ xbStyle.prototype.getClip = cssStyleGetClip;\r
+ xbStyle.prototype.setClip = cssStyleSetClip; \r
+ xbStyle.prototype.getClipTop = cssStyleGetClipTop;\r
+ xbStyle.prototype.setClipTop = cssStyleSetClipTop; \r
+ xbStyle.prototype.getClipRight = cssStyleGetClipRight;\r
+ xbStyle.prototype.setClipRight = cssStyleSetClipRight; \r
+ xbStyle.prototype.getClipBottom = cssStyleGetClipBottom;\r
+ xbStyle.prototype.setClipBottom = cssStyleSetClipBottom; \r
+ xbStyle.prototype.getClipLeft = cssStyleGetClipLeft;\r
+ xbStyle.prototype.setClipLeft = cssStyleSetClipLeft; \r
+ xbStyle.prototype.getClipWidth = cssStyleGetClipWidth;\r
+ xbStyle.prototype.setClipWidth = cssStyleSetClipWidth; \r
+ xbStyle.prototype.getClipHeight = cssStyleGetClipHeight;\r
+ xbStyle.prototype.setClipHeight = cssStyleSetClipHeight; \r
+ xbStyle.prototype.getLeft = cssStyleGetLeft;\r
+ xbStyle.prototype.setLeft = cssStyleSetLeft;\r
+ xbStyle.prototype.getTop = cssStyleGetTop;\r
+ xbStyle.prototype.setTop = cssStyleSetTop;\r
+ xbStyle.prototype.getPageX = cssStyleGetPageX;\r
+ xbStyle.prototype.setPageX = cssStyleSetPageX;\r
+ xbStyle.prototype.getPageY = cssStyleGetPageY;\r
+ xbStyle.prototype.setPageY = cssStyleSetPageY;\r
+ xbStyle.prototype.getVisibility = cssStyleGetVisibility;\r
+ xbStyle.prototype.setVisibility = cssStyleSetVisibility;\r
+ xbStyle.prototype.getzIndex = cssStyleGetzIndex;\r
+ xbStyle.prototype.setzIndex = cssStyleSetzIndex; \r
+ xbStyle.prototype.getHeight = cssStyleGetHeight;\r
+ xbStyle.prototype.setHeight = cssStyleSetHeight;\r
+ xbStyle.prototype.getWidth = cssStyleGetWidth;\r
+ xbStyle.prototype.setWidth = cssStyleSetWidth;\r
+ xbStyle.prototype.getBackgroundColor = cssStyleGetBackgroundColor;\r
+ xbStyle.prototype.setBackgroundColor = cssStyleSetBackgroundColor;\r
+ xbStyle.prototype.getColor = cssStyleGetColor;\r
+ xbStyle.prototype.setColor = cssStyleSetColor;\r
+ xbStyle.prototype.setInnerHTML = xbSetInnerHTML;\r
+ xbStyle.prototype.getBorderTopWidth = cssStyleGetBorderTopWidth;\r
+ xbStyle.prototype.getBorderRightWidth = cssStyleGetBorderRightWidth;\r
+ xbStyle.prototype.getBorderBottomWidth = cssStyleGetBorderBottomWidth;\r
+ xbStyle.prototype.getBorderLeftWidth = cssStyleGetBorderLeftWidth;\r
+ xbStyle.prototype.getMarginLeft = cssStyleGetMarginLeft;\r
+ xbStyle.prototype.getMarginTop = cssStyleGetMarginTop;\r
+ xbStyle.prototype.getMarginRight = cssStyleGetMarginRight;\r
+ xbStyle.prototype.getMarginBottom = cssStyleGetMarginBottom;\r
+ xbStyle.prototype.getMarginLeft = cssStyleGetMarginLeft;\r
+ xbStyle.prototype.getPaddingTop = cssStyleGetPaddingTop;\r
+ xbStyle.prototype.getPaddingRight = cssStyleGetPaddingRight;\r
+ xbStyle.prototype.getPaddingBottom = cssStyleGetPaddingBottom;\r
+ xbStyle.prototype.getPaddingLeft = cssStyleGetPaddingLeft;\r
+ xbStyle.prototype.getClientTop = cssStyleGetClientTop;\r
+ xbStyle.prototype.getClientLeft = cssStyleGetClientLeft;\r
+ xbStyle.prototype.getClientWidth = cssStyleGetClientWidth;\r
+ xbStyle.prototype.getClientHeight = cssStyleGetClientHeight;\r
+}\r
+else if (document.layers)\r
+{\r
+ xbStyle.prototype.getClip = nsxbStyleGetClip;\r
+ xbStyle.prototype.setClip = nsxbStyleSetClip; \r
+ xbStyle.prototype.getClipTop = nsxbStyleGetClipTop;\r
+ xbStyle.prototype.setClipTop = nsxbStyleSetClipTop; \r
+ xbStyle.prototype.getClipRight = nsxbStyleGetClipRight;\r
+ xbStyle.prototype.setClipRight = nsxbStyleSetClipRight; \r
+ xbStyle.prototype.getClipBottom = nsxbStyleGetClipBottom;\r
+ xbStyle.prototype.setClipBottom = nsxbStyleSetClipBottom; \r
+ xbStyle.prototype.getClipLeft = nsxbStyleGetClipLeft;\r
+ xbStyle.prototype.setClipLeft = nsxbStyleSetClipLeft; \r
+ xbStyle.prototype.getClipWidth = nsxbStyleGetClipWidth;\r
+ xbStyle.prototype.setClipWidth = nsxbStyleSetClipWidth; \r
+ xbStyle.prototype.getClipHeight = nsxbStyleGetClipHeight;\r
+ xbStyle.prototype.setClipHeight = nsxbStyleSetClipHeight; \r
+ xbStyle.prototype.getLeft = nsxbStyleGetLeft;\r
+ xbStyle.prototype.setLeft = nsxbStyleSetLeft;\r
+ xbStyle.prototype.getTop = nsxbStyleGetTop;\r
+ xbStyle.prototype.setTop = nsxbStyleSetTop;\r
+ xbStyle.prototype.getPageX = nsxbStyleGetPageX;\r
+ xbStyle.prototype.setPageX = nsxbStyleSetPageX;\r
+ xbStyle.prototype.getPageY = nsxbStyleGetPageY;\r
+ xbStyle.prototype.setPageY = nsxbStyleSetPageY;\r
+ xbStyle.prototype.getVisibility = nsxbStyleGetVisibility;\r
+ xbStyle.prototype.setVisibility = nsxbStyleSetVisibility;\r
+ xbStyle.prototype.getzIndex = nsxbStyleGetzIndex;\r
+ xbStyle.prototype.setzIndex = nsxbStyleSetzIndex; \r
+ xbStyle.prototype.getHeight = nsxbStyleGetHeight;\r
+ xbStyle.prototype.setHeight = nsxbStyleSetHeight;\r
+ xbStyle.prototype.getWidth = nsxbStyleGetWidth;\r
+ xbStyle.prototype.setWidth = nsxbStyleSetWidth;\r
+ xbStyle.prototype.getBackgroundColor = nsxbStyleGetBackgroundColor;\r
+ xbStyle.prototype.setBackgroundColor = nsxbStyleSetBackgroundColor;\r
+ xbStyle.prototype.getColor = nsxbStyleGetColor;\r
+ xbStyle.prototype.setColor = nsxbStyleSetColor;\r
+ xbStyle.prototype.setInnerHTML = nsxbSetInnerHTML;\r
+ xbStyle.prototype.getBorderTopWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.getBorderRightWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.getBorderBottomWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.getBorderLeftWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.getMarginLeft = xbStyleNotSupported;\r
+ xbStyle.prototype.getMarginTop = xbStyleNotSupported;\r
+ xbStyle.prototype.getMarginRight = xbStyleNotSupported;\r
+ xbStyle.prototype.getMarginBottom = xbStyleNotSupported;\r
+ xbStyle.prototype.getMarginLeft = xbStyleNotSupported;\r
+ xbStyle.prototype.getPaddingTop = xbStyleNotSupported;\r
+ xbStyle.prototype.getPaddingRight = xbStyleNotSupported;\r
+ xbStyle.prototype.getPaddingBottom = xbStyleNotSupported;\r
+ xbStyle.prototype.getPaddingLeft = xbStyleNotSupported;\r
+ xbStyle.prototype.getClientTop = xbStyleNotSupported;\r
+ xbStyle.prototype.getClientLeft = xbStyleNotSupported;\r
+ xbStyle.prototype.getClientWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.getClientHeight = xbStyleNotSupported;\r
+\r
+ window.saveInnerWidth = window.innerWidth;\r
+ window.saveInnerHeight = window.innerHeight;\r
+\r
+ window.onresize = nsxbStyleOnresize;\r
+\r
+}\r
+else \r
+{\r
+ xbStyle.prototype.toString = xbStyleNotSupported;\r
+ xbStyle.prototype.getClip = xbStyleNotSupported;\r
+ xbStyle.prototype.setClip = xbStyleNotSupported;\r
+ xbStyle.prototype.getClipTop = xbStyleNotSupported;\r
+ xbStyle.prototype.setClipTop = xbStyleNotSupported;\r
+ xbStyle.prototype.getClipRight = xbStyleNotSupported;\r
+ xbStyle.prototype.setClipRight = xbStyleNotSupported;\r
+ xbStyle.prototype.getClipBottom = xbStyleNotSupported;\r
+ xbStyle.prototype.setClipBottom = xbStyleNotSupported;\r
+ xbStyle.prototype.getClipLeft = xbStyleNotSupported;\r
+ xbStyle.prototype.setClipLeft = xbStyleNotSupported;\r
+ xbStyle.prototype.getClipWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.setClipWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.getClipHeight = xbStyleNotSupported;\r
+ xbStyle.prototype.setClipHeight = xbStyleNotSupported;\r
+ xbStyle.prototype.getLeft = xbStyleNotSupported;\r
+ xbStyle.prototype.setLeft = xbStyleNotSupported;\r
+ xbStyle.prototype.getTop = xbStyleNotSupported;\r
+ xbStyle.prototype.setTop = xbStyleNotSupported;\r
+ xbStyle.prototype.getVisibility = xbStyleNotSupported;\r
+ xbStyle.prototype.setVisibility = xbStyleNotSupported;\r
+ xbStyle.prototype.getzIndex = xbStyleNotSupported;\r
+ xbStyle.prototype.setzIndex = xbStyleNotSupported;\r
+ xbStyle.prototype.getHeight = xbStyleNotSupported;\r
+ xbStyle.prototype.setHeight = xbStyleNotSupported;\r
+ xbStyle.prototype.getWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.setWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.getBackgroundColor = xbStyleNotSupported;\r
+ xbStyle.prototype.setBackgroundColor = xbStyleNotSupported;\r
+ xbStyle.prototype.getColor = xbStyleNotSupported;\r
+ xbStyle.prototype.setColor = xbStyleNotSupported;\r
+ xbStyle.prototype.setInnerHTML = xbStyleNotSupported;\r
+ xbStyle.prototype.getBorderTopWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.getBorderRightWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.getBorderBottomWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.getBorderLeftWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.getMarginLeft = xbStyleNotSupported;\r
+ xbStyle.prototype.getMarginTop = xbStyleNotSupported;\r
+ xbStyle.prototype.getMarginRight = xbStyleNotSupported;\r
+ xbStyle.prototype.getMarginBottom = xbStyleNotSupported;\r
+ xbStyle.prototype.getMarginLeft = xbStyleNotSupported;\r
+ xbStyle.prototype.getPaddingTop = xbStyleNotSupported;\r
+ xbStyle.prototype.getPaddingRight = xbStyleNotSupported;\r
+ xbStyle.prototype.getPaddingBottom = xbStyleNotSupported;\r
+ xbStyle.prototype.getPaddingLeft = xbStyleNotSupported;\r
+ xbStyle.prototype.getClientTop = xbStyleNotSupported;\r
+ xbStyle.prototype.getClientLeft = xbStyleNotSupported;\r
+ xbStyle.prototype.getClientWidth = xbStyleNotSupported;\r
+ xbStyle.prototype.getClientHeight = xbStyleNotSupported;\r
+}\r
+\r
+\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+<article>
+<articleinfo>
+<title>The Slides Document Type</title>
+<releaseinfo role="CVS">$Id$</releaseinfo>
+<author><firstname>Norman</firstname><surname>Walsh</surname>
+ <affiliation><address><email>ndw@nwalsh.com</email></address></affiliation>
+</author>
+</articleinfo>
+
+<para>The Slides Document Type is an XML vocabulary derived from
+DocBook. It is used to create presentations (slides, foils, whatever
+you call them) in HTML or print.</para>
+
+<para>Presentations are by nature visual and the Slides stylesheets
+provide a wide range of options to control how the transformation from
+XML to HTML is performed.</para>
+
+<para>This document is a first attempt at describing what some of
+these options are and how to use them.</para>
+
+<section id="ch.stylesheet">
+<title>Choose a Stylesheet</title>
+
+<para>At the highest level, you can choose one of four stylesheets:</para>
+
+<itemizedlist>
+<listitem>
+<para><filename>slides.xsl</filename> produces basic slides in HTML, one page
+per slide.
+</para>
+</listitem>
+
+<listitem>
+<para><filename>frames.xsl</filename> produces slides in HTML using frames.
+</para>
+</listitem>
+
+<listitem>
+<para><filename>w3c.xsl</filename> produces basic slides in HTML, one
+page per slide, using a navigation style similar to that of most W3C
+talks.
+</para>
+</listitem>
+
+<listitem>
+<para><filename>fo-plain.xsl</filename> produces basic slides, one
+page per slide, for print using XSL Formatting Objects.
+</para>
+</listitem>
+</itemizedlist>
+
+</section>
+
+<section id="ch.browser">
+<title>Choose a Browser</title>
+
+
+</article>
titlepage-fo-plain.xsl
+param.xsl
include ../../cvstools/Makefile.incl
TTLTEMPLATEXSL=/sourceforge/docbook/xsl/template/titlepage.xsl
-all: titlepage-fo-plain.xsl
+PARAMPROF=.param.profiled
+PARAMSTRIP=.param.stripped
+
+all: titlepage-fo-plain.xsl param.xsl
%.xsl: %.xml
$(XSLT) $< $(TTLTEMPLATEXSL) $@
+xml: param.xml
+
+html: param.html
+
+param.html: param.xml
+ $(XSLT) $< ../../xsl/docsrc/lrefentry.xsl $@
+
+param.xml: param.xweb
+ $(XSLT) $< ../../xsl/profiling/profile.xsl $(PARAMPROF) profile.condition=html
+ $(XSLT) $(PARAMPROF) ../../xsl/profiling/strip-attributes.xsl $(PARAMSTRIP) attributes=condition
+ $(XSLT) $(PARAMSTRIP) ../../litprog/wdocbook.xsl $@
+ $(RM) $(PARAMPROF) $(PARAMSTRIP)
+
+param.xsl: param.xweb
+ $(XSLT) $< ../../xsl/profiling/profile.xsl $(PARAMPROF) profile.condition=html
+ $(XSLT) $(PARAMPROF) ../../xsl/profiling/strip-attributes.xsl $(PARAMSTRIP) attributes=condition
+ $(XSLT) $(PARAMSTRIP) ../../litprog/xtangle.xsl $@
+ $(RM) $(PARAMPROF) $(PARAMSTRIP)
+
clean:
rm -f titlepage-fo-plain.xsl
<xsl:import href="slides.xsl"/>
-<xsl:param name="titlefoil.html" select="'titlefoil.html'"/>
-
-<xsl:param name="ns4" select="1"/>
-<xsl:param name="ie5" select="1"/>
-<xsl:param name="multiframe" select="0"/>
-
-<xsl:param name="multiframe.top.bgcolor" select="'white'"/>
-<xsl:param name="multiframe.bottom.bgcolor" select="'white'"/>
-
<xsl:template match="slides">
<xsl:variable name="title">
<xsl:choose>
</xsl:if>
<xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
<xsl:with-param name="filename" select="concat($base.dir,'frames.html')"/>
<xsl:with-param name="content">
<html>
</xsl:with-param>
</xsl:call-template>
- <xsl:if test="$ie5 != 0">
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="filename" select="concat($base.dir,'ie5toc.html')"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>TOC - <xsl:value-of select="$title"/></title>
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
- </xsl:attribute>
- </link>
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="slides.js"/>
- </xsl:attribute>
- </script>
- <xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
- </xsl:if>
- </head>
- <body class="toc" onload="newPage('toc.html',{$overlay});">
- <xsl:call-template name="body.attributes"/>
- <div class="toc">
- <xsl:apply-templates mode="toc"/>
- </div>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
+ <xsl:with-param name="filename" select="concat($base.dir,'toc.html')"/>
+ <xsl:with-param name="content">
+ <html>
+ <head>
+ <title>TOC - <xsl:value-of select="$title"/></title>
+ <link type="text/css" rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="css.stylesheet"/>
+ </xsl:attribute>
+ </link>
- <xsl:if test="$ns4 != 0">
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="filename" select="concat($base.dir,'ns4toc.html')"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>TOC - <xsl:value-of select="$title"/></title>
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
- </xsl:attribute>
- </link>
- <script type="text/javascript" language="JavaScript1.2">
- <xsl:attribute name="src">
- <xsl:call-template name="list.js"/>
- </xsl:attribute>
- </script>
- <script type="text/javascript" language="JavaScript1.2">
- <xsl:attribute name="src">
- <xsl:call-template name="resize.js"/>
- </xsl:attribute>
- </script>
- <script type="text/javascript" language="JavaScript"><xsl:text>
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="JavaScript1.2"/>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$dynamic.toc != 0">
+ <script language="JavaScript"><xsl:text>
function init() {
var width = </xsl:text>
<xsl:value-of select="$toc.width"/>
<xsl:text>;
myList = new List(true, width, height, "</xsl:text>
<xsl:value-of select="$toc.bg.color"/>
+<xsl:text>","</xsl:text>
+<xsl:call-template name="plus.image"/>
+<xsl:text>","</xsl:text>
+<xsl:call-template name="minus.image"/>
<xsl:text>");
</xsl:text>
<xsl:apply-templates mode="ns-toc"/>
<xsl:text>; }
</xsl:text>
</style>
- </head>
- <body class="toc" onload="init({$overlay});">
- <xsl:call-template name="body.attributes"/>
- <div id="spacer"></div>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="filename" select="concat($base.dir,'toc.html')"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>TOC - <xsl:value-of select="$title"/></title>
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
- </xsl:attribute>
- </link>
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="slides.js"/>
- </xsl:attribute>
- </script>
- <script type="text/javascript" language="JavaScript">
- <xsl:if test="$ns4 != 0">
- <xsl:text><![CDATA[
-if (selectBrowser() == "ns4") {
- location.replace("ns4toc.html");
-}
-]]></xsl:text>
- </xsl:if>
- <xsl:if test="$ie5 != 0">
- <xsl:text><![CDATA[
-if (selectBrowser() == "ie5") {
- location.replace("ie5toc.html");
-}
-]]></xsl:text>
- </xsl:if>
- </script>
- <xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
</xsl:if>
</head>
<body class="toc">
<xsl:call-template name="body.attributes"/>
- <div class="toc">
- <xsl:apply-templates mode="toc"/>
- </div>
+ <xsl:if test="$dynamic.toc != 0">
+ <xsl:attribute name="onload">
+ <xsl:text>init(</xsl:text>
+ <xsl:value-of select="$overlay"/>
+ <xsl:text>);</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$dynamic.toc = 0">
+ <div class="toc">
+ <xsl:apply-templates mode="toc"/>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <div id="spacer"/>
+ </xsl:otherwise>
+ </xsl:choose>
</body>
</html>
</xsl:with-param>
<xsl:template match="slidesinfo">
<xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
<xsl:with-param name="filename"
select="concat($base.dir,$titlefoil.html)"/>
<xsl:with-param name="content">
<title><xsl:value-of select="title"/></title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <xsl:if test="$ie5 != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="slides.js"/>
+
+ <link rel="next">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="(following::section|following::foil)[1]"
+ mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="(following::section|following::foil)[1]/title"/>
+ </xsl:attribute>
+ </link>
+
+ <xsl:for-each select="../section">
+ <link rel="section">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
</xsl:attribute>
- </script>
+ <xsl:attribute name="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="JavaScript1.2"/>
</xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
<xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
</head>
<body class="titlepage">
<xsl:call-template name="body.attributes"/>
<xsl:choose>
- <xsl:when test="$ie5 != 0">
+ <xsl:when test="$active.toc != 0">
<xsl:attribute name="onload">
<xsl:text>newPage('</xsl:text>
<xsl:value-of select="$titlefoil.html"/>
<xsl:value-of select="$overlay"/>
<xsl:text>);</xsl:text>
</xsl:attribute>
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate('','foil01.html',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>)</xsl:text>
- </xsl:attribute>
</xsl:when>
<xsl:when test="$overlay != 0">
<xsl:attribute name="onload">
</xsl:attribute>
</xsl:when>
</xsl:choose>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
<div class="{name(.)}">
<xsl:apply-templates mode="titlepage.mode"/>
</div>
<a href="foil01.html">
<img alt="Next" border="0">
<xsl:attribute name="src">
- <xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$right.image"/>
+ <xsl:call-template name="right.image"/>
</xsl:attribute>
</img>
</a>
<xsl:text>.html</xsl:text>
</xsl:variable>
- <xsl:variable name="nextfoil">
- <xsl:apply-templates select="foil[1]" mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="prevfoil">
- <xsl:choose>
- <xsl:when test="preceding::foil">
- <xsl:apply-templates select="preceding::foil[1]" mode="filename"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
<xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
<xsl:with-param name="filename" select="concat($base.dir,$thissection)"/>
<xsl:with-param name="content">
<head>
<title><xsl:value-of select="title"/></title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <xsl:if test="$ie5 != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="slides.js"/>
- </xsl:attribute>
- </script>
+
+ <xsl:call-template name="section-links"/>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="JavaScript1.2"/>
</xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
<xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
</head>
<xsl:choose>
<xsl:text>.html</xsl:text>
</xsl:variable>
- <frameset rows="25,*,25" border="0" name="foil" framespacing="0">
- <frame src="top-{$thissection}" name="top" marginheight="0" scrolling="no" frameborder="0"/>
+ <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}"
+ border="0" name="foil" framespacing="0">
+ <frame src="top-{$thissection}" name="top" marginheight="0"
+ scrolling="no" frameborder="0"/>
<frame src="body-{$thissection}" name="body" marginheight="0" frameborder="0"/>
- <frame src="bot-{$thissection}" name="bottom" marginheight="0" scrolling="no" frameborder="0"/>
+ <frame src="bot-{$thissection}" name="bottom" marginheight="0"
+ scrolling="no" frameborder="0"/>
<noframes>
<body class="frameset">
<xsl:call-template name="body.attributes"/>
</xsl:variable>
<xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
<xsl:with-param name="filename" select="concat($base.dir,'top-',$section)"/>
<xsl:with-param name="content">
<html>
<title>Navigation</title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <xsl:if test="$ie5 != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="slides.js"/>
- </xsl:attribute>
- </script>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="JavaScript1.2"/>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
+
<xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
</head>
- <body class="navigation" bgcolor="{$multiframe.top.bgcolor}">
+ <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
<xsl:call-template name="section-top-nav">
<xsl:with-param name="prev-target" select="'foil'"/>
<xsl:with-param name="next-target" select="'foil'"/>
<xsl:text>.html</xsl:text>
</xsl:variable>
- <xsl:variable name="nextfoil">
- <xsl:apply-templates select="foil[1]" mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="prevfoil">
- <xsl:choose>
- <xsl:when test="preceding::foil">
- <xsl:apply-templates select="preceding::foil[1]" mode="filename"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
<xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
<xsl:with-param name="filename" select="concat($base.dir,'body-',$thissection)"/>
<xsl:with-param name="content">
<html>
<title>Body</title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <xsl:if test="$ie5 != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="slides.js"/>
- </xsl:attribute>
- </script>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="JavaScript1.2"/>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
+
<xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
</head>
<xsl:apply-templates select="." mode="singleframe"/>
<xsl:text>.html</xsl:text>
</xsl:variable>
- <xsl:variable name="nextfoil">
- <xsl:apply-templates select="foil[1]" mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="prevfoil">
- <xsl:choose>
- <xsl:when test="preceding::foil">
- <xsl:apply-templates select="preceding::foil[1]" mode="filename"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
<xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
<xsl:with-param name="filename" select="concat($base.dir,'bot-',$thissection)"/>
<xsl:with-param name="content">
<html>
<title>Navigation</title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <xsl:if test="$ie5 != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="slides.js"/>
- </xsl:attribute>
- </script>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="JavaScript1.2"/>
</xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
<xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
</head>
- <body class="navigation" bgcolor="{$multiframe.bottom.bgcolor}">
+ <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
<xsl:call-template name="section-bottom-nav"/>
</body>
</html>
<xsl:text>.html</xsl:text>
</xsl:variable>
- <xsl:variable name="nextfoil">
- <xsl:apply-templates select="foil[1]" mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="prevfoil">
- <xsl:choose>
- <xsl:when test="preceding::foil">
- <xsl:apply-templates select="preceding::foil[1]" mode="filename"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
<body class="section">
<xsl:call-template name="body.attributes"/>
<xsl:choose>
- <xsl:when test="$ie5 != 0">
+ <xsl:when test="$active.toc != 0">
<xsl:attribute name="onload">
<xsl:text>newPage('</xsl:text>
<xsl:value-of select="$thissection"/>
<xsl:value-of select="$overlay"/>
<xsl:text>);</xsl:text>
</xsl:attribute>
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate('</xsl:text>
- <xsl:value-of select="$prevfoil"/>
- <xsl:text>','</xsl:text>
- <xsl:value-of select="$nextfoil"/>
- <xsl:text>',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>)</xsl:text>
- </xsl:attribute>
</xsl:when>
<xsl:when test="$overlay != 0">
<xsl:attribute name="onload">
</xsl:attribute>
</xsl:when>
</xsl:choose>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
<div class="{name(.)}" id="{$id}">
<a name="{$id}"/>
<xsl:if test="$multiframe=0">
<xsl:call-template name="section-top-nav"/>
- <hr/>
</xsl:if>
<div class="{name(.)}" id="{$id}">
<xsl:text>position:absolute;visibility:visible;</xsl:text>
</xsl:attribute>
</xsl:if>
- <hr/>
<xsl:call-template name="section-bottom-nav"/>
</div>
</xsl:if>
</body>
</xsl:template>
+<xsl:template name="section-links">
+ <xsl:variable name="prevfoil"
+ select="(preceding::foil|/slides)[last()]"/>
+
+ <xsl:variable name="nextfoil" select="foil[1]"/>
+
+ <xsl:if test="$prevfoil">
+ <link rel="previous">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prevfoil" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$prevfoil/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$nextfoil">
+ <link rel="next">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$nextfoil" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$nextfoil/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
<xsl:template match="foil">
<xsl:variable name="id">
<xsl:call-template name="object.id"/>
</xsl:variable>
- <xsl:variable name="section" select="ancestor::section"/>
-
<xsl:variable name="thisfoil">
<xsl:apply-templates select="." mode="filename"/>
</xsl:variable>
- <xsl:variable name="nextfoil">
- <xsl:apply-templates select="(following::foil
- |following::section)[1]"
- mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="prevfoil">
- <xsl:choose>
- <xsl:when test="preceding-sibling::foil">
- <xsl:apply-templates select="preceding-sibling::foil[1]"
- mode="filename"/>
- </xsl:when>
- <xsl:when test="parent::section">
- <xsl:apply-templates select="parent::section[1]"
- mode="filename"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
<xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
<xsl:with-param name="filename" select="concat($base.dir,$thisfoil)"/>
<xsl:with-param name="content">
<head>
<title><xsl:value-of select="title"/></title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <xsl:if test="$ie5 != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="slides.js"/>
- </xsl:attribute>
- </script>
+
+ <xsl:call-template name="foil-links"/>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="JavaScript1.2"/>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
+
<xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
</head>
<xsl:choose>
<xsl:apply-templates select="." mode="filename"/>
</xsl:variable>
- <xsl:variable name="nextfoil">
- <xsl:apply-templates select="(following::foil
- |following::section)[1]"
- mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="prevfoil">
- <xsl:choose>
- <xsl:when test="preceding-sibling::foil">
- <xsl:apply-templates select="preceding-sibling::foil[1]"
- mode="filename"/>
- </xsl:when>
- <xsl:when test="parent::section">
- <xsl:apply-templates select="parent::section[1]"
- mode="filename"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <frameset rows="25,*,25" border="0" name="foil" framespacing="0">
+ <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" border="0" name="foil" framespacing="0">
<xsl:attribute name="onkeypress">
- <xsl:text>navigate('</xsl:text>
- <xsl:value-of select="$prevfoil"/>
- <xsl:text>','</xsl:text>
- <xsl:value-of select="$nextfoil"/>
- <xsl:text>',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>)</xsl:text>
+ <xsl:text>navigate(event)</xsl:text>
</xsl:attribute>
<frame src="top-{$thisfoil}" name="top" marginheight="0" scrolling="no" frameborder="0">
<xsl:attribute name="onkeypress">
- <xsl:text>navigate('</xsl:text>
- <xsl:value-of select="$prevfoil"/>
- <xsl:text>','</xsl:text>
- <xsl:value-of select="$nextfoil"/>
- <xsl:text>',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>)</xsl:text>
+ <xsl:text>navigate(event)</xsl:text>
</xsl:attribute>
</frame>
<frame src="body-{$thisfoil}" name="body" marginheight="0" frameborder="0">
<xsl:attribute name="onkeypress">
- <xsl:text>navigate('</xsl:text>
- <xsl:value-of select="$prevfoil"/>
- <xsl:text>','</xsl:text>
- <xsl:value-of select="$nextfoil"/>
- <xsl:text>',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>)</xsl:text>
+ <xsl:text>navigate(event)</xsl:text>
</xsl:attribute>
</frame>
<frame src="bot-{$thisfoil}" name="bottom" marginheight="0" scrolling="no" frameborder="0">
<xsl:attribute name="onkeypress">
- <xsl:text>navigate('</xsl:text>
- <xsl:value-of select="$prevfoil"/>
- <xsl:text>','</xsl:text>
- <xsl:value-of select="$nextfoil"/>
- <xsl:text>',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>)</xsl:text>
+ <xsl:text>navigate(event)</xsl:text>
</xsl:attribute>
</frame>
<noframes>
</xsl:variable>
<xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
<xsl:with-param name="filename" select="concat($base.dir,'top-',$thisfoil)"/>
<xsl:with-param name="content">
<html>
<title>Navigation</title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <xsl:if test="$ie5 != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="slides.js"/>
- </xsl:attribute>
- </script>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="JavaScript1.2"/>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
+
<xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
</head>
- <body class="navigation" bgcolor="{$multiframe.top.bgcolor}">
+ <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
<xsl:call-template name="foil-top-nav">
<xsl:with-param name="prev-target" select="'foil'"/>
<xsl:with-param name="next-target" select="'foil'"/>
</xsl:variable>
<xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
<xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoil)"/>
<xsl:with-param name="content">
<html>
<title>Body</title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <xsl:if test="$ie5 != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="slides.js"/>
- </xsl:attribute>
- </script>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="JavaScript1.2"/>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
+
<xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
</head>
<xsl:apply-templates select="." mode="singleframe"/>
</xsl:variable>
<xsl:call-template name="write.chunk">
+ <xsl:with-param name="indent" select="$output.indent"/>
<xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoil)"/>
<xsl:with-param name="content">
<html>
<title>Navigation</title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <xsl:if test="$ie5 != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="slides.js"/>
- </xsl:attribute>
- </script>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0
+ or $dynamic.toc != 0 or $active.toc != 0">
+ <script language="JavaScript1.2"/>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
+
<xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
</head>
- <body class="navigation" bgcolor="{$multiframe.bottom.bgcolor}">
+ <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
<xsl:call-template name="foil-bottom-nav"/>
</body>
</html>
<xsl:apply-templates select="." mode="filename"/>
</xsl:variable>
- <xsl:variable name="nextfoil">
- <xsl:apply-templates select="(following::foil
- |following::section)[1]"
- mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="prevfoil">
- <xsl:choose>
- <xsl:when test="preceding-sibling::foil">
- <xsl:apply-templates select="preceding-sibling::foil[1]"
- mode="filename"/>
- </xsl:when>
- <xsl:when test="parent::section">
- <xsl:apply-templates select="parent::section[1]"
- mode="filename"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
<body class="foil">
<xsl:call-template name="body.attributes"/>
<xsl:choose>
- <xsl:when test="$ie5 != 0">
+ <xsl:when test="$active.toc != 0">
<xsl:attribute name="onload">
<xsl:text>newPage('</xsl:text>
<xsl:value-of select="$thisfoil"/>
<xsl:value-of select="$overlay"/>
<xsl:text>);</xsl:text>
</xsl:attribute>
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate('</xsl:text>
- <xsl:value-of select="$prevfoil"/>
- <xsl:text>','</xsl:text>
- <xsl:value-of select="$nextfoil"/>
- <xsl:text>',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>)</xsl:text>
- </xsl:attribute>
</xsl:when>
<xsl:when test="$overlay != 0">
<xsl:attribute name="onload">
</xsl:attribute>
</xsl:when>
</xsl:choose>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
<div class="{name(.)}" id="{$id}">
<a name="{$id}"/>
<xsl:if test="$multiframe=0">
<xsl:call-template name="foil-top-nav"/>
- <hr/>
</xsl:if>
<xsl:apply-templates/>
<xsl:text>position:absolute;visibility:visible;</xsl:text>
</xsl:attribute>
</xsl:if>
- <hr/>
<xsl:call-template name="foil-bottom-nav"/>
</div>
</xsl:if>
</body>
</xsl:template>
+<xsl:template name="foil-links">
+ <xsl:variable name="nextfoil" select="(following::foil
+ |following::section)[1]"/>
+
+ <xsl:variable name="prevfoil" select="(preceding-sibling::foil[1]
+ |parent::section[1]
+ |/slides)[last()]"/>
+
+
+ <xsl:if test="$prevfoil">
+ <link rel="previous">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prevfoil" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$prevfoil/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$nextfoil">
+ <link rel="next">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$nextfoil" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$nextfoil/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+</xsl:template>
+
<!-- ============================================================ -->
<xsl:template match="slidesinfo" mode="toc">
<xsl:variable name="id">
<xsl:call-template name="object.id"/>
</xsl:variable>
- <div id="{$id}" class="toc-slidesinfo">
- <a href="{$titlefoil.html}" target="foil">
+ <DIV id="{$id}" class="toc-slidesinfo">
+ <A href="{$titlefoil.html}" target="foil">
<xsl:choose>
<xsl:when test="titleabbrev">
<xsl:apply-templates select="titleabbrev" mode="toc"/>
<xsl:apply-templates select="title" mode="toc"/>
</xsl:otherwise>
</xsl:choose>
- </a>
+ </A>
<hr/>
- </div>
+ </DIV>
</xsl:template>
<xsl:template match="section" mode="toc">
<xsl:text>.html</xsl:text>
</xsl:variable>
- <div class="toc-section" id="{$id}">
+ <DIV class="toc-section" id="{$id}">
<img alt="-">
<xsl:attribute name="src">
- <xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$minus.image"/>
+ <xsl:call-template name="minus.image"/>
</xsl:attribute>
</img>
- <a href="{$thissection}" target="foil">
+ <A href="{$thissection}" target="foil">
<xsl:choose>
<xsl:when test="titleabbrev">
<xsl:apply-templates select="titleabbrev" mode="toc"/>
<xsl:apply-templates select="title" mode="toc"/>
</xsl:otherwise>
</xsl:choose>
- </a>
+ </A>
<xsl:apply-templates select="foil" mode="toc"/>
- </div>
+ </DIV>
</xsl:template>
<xsl:template match="foil" mode="toc">
<xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
<xsl:variable name="foil">
- <xsl:apply-templates select="." mode="foil-filename"/>
+ <xsl:apply-templates select="." mode="filename"/>
</xsl:variable>
- <div id="{$id}" class="toc-foil">
+ <DIV id="{$id}" class="toc-foil">
<img alt="-">
<xsl:attribute name="src">
- <xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$bullet.image"/>
+ <xsl:call-template name="bullet.image"/>
</xsl:attribute>
</img>
- <a href="{$foil}" target="foil">
+ <A href="{$foil}" target="foil">
<xsl:choose>
<xsl:when test="titleabbrev">
<xsl:apply-templates select="titleabbrev" mode="toc"/>
<xsl:apply-templates select="title" mode="toc"/>
</xsl:otherwise>
</xsl:choose>
- </a>
- </div>
+ </A>
+ </DIV>
</xsl:template>
</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:output method="html"/>
+
+<xsl:param name="graphics.dir" select="''"/>
+
+<xsl:param name="bullet.image" select="'bullet.gif'"/>
+<xsl:param name="right.image" select="'right.gif'"/>
+<xsl:param name="left.image" select="'left.gif'"/>
+
+<xsl:param name="plus.image" select="'plus.gif'"/>
+<xsl:param name="minus.image" select="'minus.gif'"/>
+
+<xsl:param name="hidetoc.image" select="'hidetoc.gif'"/>
+<xsl:param name="showtoc.image" select="'showtoc.gif'"/>
+
+<xsl:template name="graphics-file">
+ <xsl:param name="image" select="'bullet.gif'"/>
+
+ <xsl:variable name="source.graphics.dir">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'graphics-dir'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$source.graphics.dir != ''">
+ <xsl:value-of select="$source.graphics.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:when test="$graphics.dir != ''">
+ <xsl:value-of select="$graphics.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:value-of select="$image"/>
+</xsl:template>
+
+<xsl:template name="bullet.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$bullet.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="left.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$left.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="right.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$right.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="plus.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$plus.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="minus.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$minus.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="hidetoc.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$hidetoc.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="showtoc.image">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:call-template name="graphics-file">
+ <xsl:with-param name="image" select="$showtoc.image"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:output method="html"/>
+
+<xsl:param name="script.dir" select="''"/>
+
+<xsl:param name="ua.js" select="'ua.js'"/>
+<xsl:param name="xbDOM.js" select="'xbDOM.js'"/>
+<xsl:param name="xbStyle.js" select="'xbStyle.js'"/>
+<xsl:param name="xbCollapsibleLists.js" select="'xbCollapsibleLists.js'"/>
+
+<xsl:param name="overlay.js" select="'overlay.js'"/>
+<xsl:param name="slides.js" select="'slides.js'"/>
+
+<xsl:template name="script-file">
+ <xsl:param name="js" select="'slides.js'"/>
+
+ <xsl:variable name="source.script.dir">
+ <xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'script-dir'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$source.script.dir != ''">
+ <xsl:value-of select="$source.script.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ <xsl:when test="$script.dir != ''">
+ <xsl:value-of select="$script.dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:value-of select="$js"/>
+</xsl:template>
+
+<xsl:template name="ua.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'JavaScript1.2'"/>
+ <script language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$ua.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </script>
+</xsl:template>
+
+<xsl:template name="xbDOM.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'JavaScript1.2'"/>
+ <script language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$xbDOM.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </script>
+</xsl:template>
+
+<xsl:template name="xbStyle.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'JavaScript1.2'"/>
+ <script language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$xbStyle.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </script>
+</xsl:template>
+
+<xsl:template name="xbCollapsibleLists.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'JavaScript1.2'"/>
+ <script language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$xbCollapsibleLists.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </script>
+</xsl:template>
+
+<xsl:template name="overlay.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'JavaScript1.2'"/>
+ <script language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$overlay.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </script>
+</xsl:template>
+
+<xsl:template name="slides.js">
+ <!-- Danger Will Robinson: template shadows parameter -->
+ <xsl:param name="language" select="'JavaScript1.2'"/>
+ <script language="{$language}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="script-file">
+ <xsl:with-param name="js" select="$slides.js"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </script>
+</xsl:template>
+
+</xsl:stylesheet>
--- /dev/null
+<book xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<bookinfo>
+<title>Slides Parameter Reference</title>
+<releaseinfo role="meta">
+$Id$
+</releaseinfo>
+<author>
+ <surname>Walsh</surname>
+ <firstname>Norman</firstname>
+</author>
+<copyright>
+ <year>2002</year>
+ <holder>Norman Walsh</holder>
+</copyright>
+</bookinfo>
+
+<preface><title>Introduction</title>
+
+<para>This is reference documentation for the Slides stylesheet parameters.
+</para>
+
+<para>This reference describes each of the parameters.
+These are the <quote>easily customizable</quote> parts of the stylesheet.
+If you want to specify an alternate value for one or more of these
+parameters, you can do so in a <quote>driver</quote> stylesheet.</para>
+
+<para>For example, if you want to change the <literal>keyboard.nav</literal>
+parameter to <filename>0</filename>, you might create a driver
+stylesheet like this:</para>
+
+<programlisting><![CDATA[<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+ <xsl:import href="http://docbook.sourceforge.net/release/slides/current/xsl/slides.xsl"/>
+
+ <xsl:param name="keyboard.nav" select="0"/>
+
+</xsl:stylesheet>]]></programlisting>
+
+<para>Naturally, you have to change the
+<sgmltag class='attribute'>href</sgmltag> attribute on
+<literal><xsl:import></literal> to point to the stylesheet
+on your system.</para>
+
+<para>This is not intended to be <quote>user</quote> documentation.
+It is provided for developers writing customization layers for the
+stylesheets, and for anyone who's interested in <quote>how it
+works</quote>.</para>
+
+<para>Although I am trying to be thorough, this documentation is known
+to be incomplete. Don't forget to read the source, too :-)</para>
+</preface>
+
+<reference>
+<title>General Parameters</title>
+
+<refentry id="keyboard.nav">
+<refmeta>
+<refentrytitle>keyboard.nav</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>keyboard.nav</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='keyboard.nav.frag'>
+<xsl:param name="keyboard.nav" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="css.stylesheet">
+<refmeta>
+<refentrytitle>css.stylesheet</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>css.stylesheet</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='css.stylesheet.frag'>
+<xsl:param name="css.stylesheet" select="'slides.css'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="titlefoil.html">
+<refmeta>
+<refentrytitle>titlefoil.html</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>titlefoil.html</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='titlefoil.html.frag'>
+<xsl:param name="titlefoil.html" select="'titlefoil.html'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="toc.html">
+<refmeta>
+<refentrytitle>toc.html</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.html</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='toc.html.frag'>
+<xsl:param name="toc.html" select="'toc.html'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="output.indent">
+<refmeta>
+<refentrytitle>output.indent</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>output.indent</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='output.indent.frag'>
+<xsl:param name="output.indent" select="'no'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="overlay">
+<refmeta>
+<refentrytitle>overlay</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>overlay</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='overlay.frag'>
+<xsl:param name="overlay" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+</reference>
+
+<reference>
+<title>Frame Parameters</title>
+
+<refentry id="nav.separator">
+<refmeta>
+<refentrytitle>nav.separator</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>nav.separator</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='nav.separator.frag'>
+<xsl:param name="nav.separator" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="toc.row.height">
+<refmeta>
+<refentrytitle>toc.row.height</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.row.height</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='toc.row.height.frag'>
+<xsl:param name="toc.row.height" select="22"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="toc.bg.color">
+<refmeta>
+<refentrytitle>toc.bg.color</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.bg.color</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='toc.bg.color.frag'>
+<xsl:param name="toc.bg.color" select="'#FFFFFF'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="toc.width">
+<refmeta>
+<refentrytitle>toc.width</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.width</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='toc.width.frag'>
+<xsl:param name="toc.width" select="250"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="toc.hide.show">
+<refmeta>
+<refentrytitle>toc.hide.show</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>toc.hide.show</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='toc.hide.show.frag'>
+<xsl:param name="toc.hide.show" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="dynamic.toc">
+<refmeta>
+<refentrytitle>dynamic.toc</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>dynamic.toc</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='dynamic.toc.frag'>
+<xsl:param name="dynamic.toc" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="active.toc">
+<refmeta>
+<refentrytitle>active.toc</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>active.toc</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='active.toc.frag'>
+<xsl:param name="active.toc" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="multiframe">
+<refmeta>
+<refentrytitle>multiframe</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='multiframe.frag'>
+<xsl:param name="multiframe" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="multiframe.top.bgcolor">
+<refmeta>
+<refentrytitle>multiframe.top.bgcolor</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe.top.bgcolor</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='multiframe.top.bgcolor.frag'>
+<xsl:param name="multiframe.top.bgcolor" select="'white'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="multiframe.bottom.bgcolor">
+<refmeta>
+<refentrytitle>multiframe.bottom.bgcolor</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe.bottom.bgcolor</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='multiframe.bottom.bgcolor.frag'>
+<xsl:param name="multiframe.bottom.bgcolor" select="'white'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="multiframe.navigation.height">
+<refmeta>
+<refentrytitle>multiframe.navigation.height</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>multiframe.navigation.height</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='multiframe.navigation.height.frag'>
+<xsl:param name="multiframe.navigation.height" select="40"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+</reference>
+
+<reference>
+<title>Graphics Parameters</title>
+
+<refentry id="graphics.dir">
+<refmeta>
+<refentrytitle>graphics.dir</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>graphics.dir</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='graphics.dir.frag'>
+<xsl:param name="graphics.dir" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="bullet.image">
+<refmeta>
+<refentrytitle>bullet.image</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>bullet.image</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='bullet.image.frag'>
+<xsl:param name="bullet.image" select="'bullet.gif'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="right.image">
+<refmeta>
+<refentrytitle>right.image</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>right.image</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='right.image.frag'>
+<xsl:param name="right.image" select="'right.gif'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="left.image">
+<refmeta>
+<refentrytitle>left.image</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>left.image</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='left.image.frag'>
+<xsl:param name="left.image" select="'left.gif'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="plus.image">
+<refmeta>
+<refentrytitle>plus.image</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>plus.image</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='plus.image.frag'>
+<xsl:param name="plus.image" select="'plus.gif'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="minus.image">
+<refmeta>
+<refentrytitle>minus.image</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>minus.image</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='minus.image.frag'>
+<xsl:param name="minus.image" select="'minus.gif'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="hidetoc.image">
+<refmeta>
+<refentrytitle>hidetoc.image</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>hidetoc.image</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='hidetoc.image.frag'>
+<xsl:param name="hidetoc.image" select="'hidetoc.gif'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="showtoc.image">
+<refmeta>
+<refentrytitle>showtoc.image</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>showtoc.image</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='showtoc.image.frag'>
+<xsl:param name="showtoc.image" select="'showtoc.gif'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+</reference>
+
+<reference>
+<title>JavaScript Parameters</title>
+
+<refentry id="script.dir">
+<refmeta>
+<refentrytitle>script.dir</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>script.dir</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='script.dir.frag'>
+<xsl:param name="script.dir" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="ua.js">
+<refmeta>
+<refentrytitle>ua.js</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>ua.js</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='ua.js.frag'>
+<xsl:param name="ua.js" select="'ua.js'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="xbDOM.js">
+<refmeta>
+<refentrytitle>xbDOM.js</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbDOM.js</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='xbDOM.js.frag'>
+<xsl:param name="xbDOM.js" select="'xbDOM.js'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="xbStyle.js">
+<refmeta>
+<refentrytitle>xbStyle.js</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbStyle.js</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='xbStyle.js.frag'>
+<xsl:param name="xbStyle.js" select="'xbStyle.js'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="xbCollapsibleLists.js">
+<refmeta>
+<refentrytitle>xbCollapsibleLists.js</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>xbCollapsibleLists.js</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='xbCollapsibleLists.js.frag'>
+<xsl:param name="xbCollapsibleLists.js" select="'xbCollapsibleLists.js'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="overlay.js">
+<refmeta>
+<refentrytitle>overlay.js</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>overlay.js</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='overlay.js.frag'>
+<xsl:param name="overlay.js" select="'overlay.js'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+
+<refentry id="slides.js">
+<refmeta>
+<refentrytitle>slides.js</refentrytitle>
+<refmiscinfo role="type"></refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.js</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='slides.js.frag'>
+<xsl:param name="slides.js" select="'slides.js'"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>FIXME:</para>
+
+</refsect1>
+</refentry>
+</reference>
+
+<appendix><title>The Stylesheet</title>
+
+<para>The <filename>param.xsl</filename> stylesheet is just a wrapper
+around all these parameters.</para>
+
+<src:fragment id="top" mundane-result-prefixes="xsl">
+
+<!-- This file is generated from param.xweb; do not edit this file! -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ exclude-result-prefixes="src"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id$
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://nwalsh.com/docbook/xsl/ for copyright
+ and other information.
+
+ ******************************************************************** -->
+
+<src:fragref linkend="keyboard.nav.frag"/>
+<src:fragref linkend="css.stylesheet.frag"/>
+<src:fragref linkend="titlefoil.html.frag"/>
+<src:fragref linkend="toc.html.frag"/>
+<src:fragref linkend="output.indent.frag"/>
+<src:fragref linkend="overlay.frag"/>
+<src:fragref linkend="nav.separator.frag"/>
+<src:fragref linkend="toc.row.height.frag"/>
+<src:fragref linkend="toc.bg.color.frag"/>
+<src:fragref linkend="toc.width.frag"/>
+<src:fragref linkend="toc.hide.show.frag"/>
+<src:fragref linkend="dynamic.toc.frag"/>
+<src:fragref linkend="active.toc.frag"/>
+<src:fragref linkend="multiframe.frag"/>
+<src:fragref linkend="multiframe.top.bgcolor.frag"/>
+<src:fragref linkend="multiframe.bottom.bgcolor.frag"/>
+<src:fragref linkend="multiframe.navigation.height.frag"/>
+<src:fragref linkend="graphics.dir.frag"/>
+<src:fragref linkend="bullet.image.frag"/>
+<src:fragref linkend="right.image.frag"/>
+<src:fragref linkend="left.image.frag"/>
+<src:fragref linkend="plus.image.frag"/>
+<src:fragref linkend="minus.image.frag"/>
+<src:fragref linkend="hidetoc.image.frag"/>
+<src:fragref linkend="showtoc.image.frag"/>
+<src:fragref linkend="script.dir.frag"/>
+<src:fragref linkend="ua.js.frag"/>
+<src:fragref linkend="xbDOM.js.frag"/>
+<src:fragref linkend="xbStyle.js.frag"/>
+<src:fragref linkend="xbCollapsibleLists.js.frag"/>
+<src:fragref linkend="overlay.js.frag"/>
+<src:fragref linkend="slides.js.frag"/>
+
+</xsl:stylesheet>
+</src:fragment>
+
+</appendix>
+
+</book>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
-<xsl:import href="../../xsl/html/chunk.xsl"/>
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/>
+<xsl:include href="jscript.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="param.xsl"/>
<xsl:output method="html"/>
<xsl:strip-space elements="slides foil section"/>
-<xsl:param name="css-stylesheet">slides.css</xsl:param>
-<xsl:param name="graphics.dir">graphics</xsl:param>
-<xsl:param name="toc.row.height">22</xsl:param>
-<xsl:param name="bullet.image" select="'bullet.gif'"/>
-<xsl:param name="minus.image" select="'minus.gif'"/>
-<xsl:param name="right.image" select="'right.gif'"/>
-<xsl:param name="left.image" select="'left.gif'"/>
-
-<xsl:param name="script.dir" select="''"/>
-<xsl:param name="overlay.js" select="'overlay.js'"/>
-<xsl:param name="slides.js" select="'slides.js'"/>
-<xsl:param name="list.js" select="'list.js'"/>
-<xsl:param name="resize.js" select="'resize.js'"/>
-
-<xsl:param name="titlefoil.html" select="'index.html'"/>
-<xsl:param name="toc.html" select="'toc.html'"/>
-
-<xsl:param name="toc.bg.color">#FFFFFF</xsl:param>
-<xsl:param name="toc.width">250</xsl:param>
-<xsl:param name="toc.hide.show" select="0"/>
-
-<xsl:param name="overlay" select="0"/>
-
-<xsl:param name="ie5" select="0"/>
-
-<xsl:param name="output.indent" select="'no'"/>
-
<!-- ============================================================ -->
<xsl:template name="overlayDiv.attributes">
<!-- ============================================================ -->
-<xsl:template name="graphics.dir">
- <!-- danger will robinson: template shadows parameter -->
- <xsl:variable name="source.graphics.dir">
- <xsl:call-template name="dbhtml-attribute">
- <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
- <xsl:with-param name="attribute" select="'graphics-dir'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$source.graphics.dir != ''">
- <xsl:value-of select="$source.graphics.dir"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$graphics.dir"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="css-stylesheet">
+<xsl:template name="css.stylesheet">
<!-- danger will robinson: template shadows parameter -->
- <xsl:variable name="source.css-stylesheet">
+ <xsl:variable name="source.css.stylesheet">
<xsl:call-template name="dbhtml-attribute">
<xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
<xsl:with-param name="attribute" select="'css-stylesheet'"/>
</xsl:variable>
<xsl:choose>
- <xsl:when test="$source.css-stylesheet != ''">
- <xsl:value-of select="$source.css-stylesheet"/>
+ <xsl:when test="$source.css.stylesheet != ''">
+ <xsl:value-of select="$source.css.stylesheet"/>
</xsl:when>
<xsl:otherwise>
- <xsl:value-of select="$css-stylesheet"/>
+ <xsl:value-of select="$css.stylesheet"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
-<xsl:template name="script-file">
- <xsl:param name="js" select="'slides.js'"/>
-
- <xsl:variable name="source.script.dir">
- <xsl:call-template name="dbhtml-attribute">
- <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
- <xsl:with-param name="attribute" select="'script-dir'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$source.script.dir != ''">
- <xsl:value-of select="$source.script.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:when test="$script.dir != ''">
- <xsl:value-of select="$script.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- </xsl:choose>
- <xsl:value-of select="$js"/>
-</xsl:template>
-
-<xsl:template name="slides.js">
- <!-- danger will robinson: template shadows parameter -->
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$slides.js"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="list.js">
- <!-- danger will robinson: template shadows parameter -->
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$list.js"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="resize.js">
- <!-- danger will robinson: template shadows parameter -->
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$resize.js"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="overlay.js">
- <!-- danger will robinson: template shadows parameter -->
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$overlay.js"/>
- </xsl:call-template>
-</xsl:template>
-
<!-- ============================================================ -->
<xsl:template match="/">
<title><xsl:value-of select="slidesinfo/title"/></title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
- </xsl:if>
+
<link rel="top">
<xsl:attribute name="href">
<xsl:apply-templates select="/slides" mode="filename"/>
<xsl:value-of select="/slides/slidesinfo/title[1]"/>
</xsl:attribute>
</link>
+
<xsl:for-each select="section">
<link rel="section">
<xsl:attribute name="href">
</xsl:attribute>
</link>
</xsl:for-each>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
+ <script language="JavaScript1.2"/>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ </xsl:if>
</head>
<body class="tocpage">
<xsl:call-template name="body.attributes"/>
<xsl:text>overlaySetup('lc')</xsl:text>
</xsl:attribute>
</xsl:if>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
<h1 class="title">
<a href="{$titlefoil.html}">
<a href="{$titlefoil.html}">
<img alt="Next" border="0">
<xsl:attribute name="src">
- <xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$right.image"/>
+ <xsl:call-template name="right.image"/>
</xsl:attribute>
</img>
</a>
<title><xsl:value-of select="title"/></title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
- </xsl:if>
+
<link rel="contents" href="{$toc.html}">
<xsl:attribute name="title">
<xsl:value-of select="(following::section|following::foil)[1]/title"/>
</xsl:attribute>
</link>
+
<link rel="next">
<xsl:attribute name="href">
<xsl:apply-templates select="(following::section|following::foil)[1]"
</xsl:attribute>
</link>
</xsl:for-each>
+
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
+ <script language="JavaScript1.2"/>
+ </xsl:if>
+
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ </xsl:if>
</head>
<body class="titlepage">
<xsl:call-template name="body.attributes"/>
<xsl:text>overlaySetup('lc')</xsl:text>
</xsl:attribute>
</xsl:if>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
<xsl:call-template name="slidesinfo-top-nav"/>
<xsl:if test="$overlay != 0">
<hr/>
</xsl:if>
+ <xsl:call-template name="slidesinfo-bottom-nav"/>
</div>
-
- <xsl:call-template name="slidesinfo-bottom-nav"/>
</body>
</html>
</xsl:with-param>
</span>
</td>
<td align="right" width="20%" valign="top">
- <a href="foil01.html">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="(following::section|following::foil)[1]"
+ mode="filename"/>
+ </xsl:attribute>
<img alt="Next" border="0">
<xsl:attribute name="src">
- <xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$right.image"/>
+ <xsl:call-template name="right.image"/>
</xsl:attribute>
</img>
</a>
<title><xsl:value-of select="title"/></title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
- </xsl:if>
- <link rel="contents" href="{$toc.html}">
- <xsl:attribute name="title">
- <xsl:value-of select="(following::section|following::foil)[1]/title"/>
- </xsl:attribute>
- </link>
+ <xsl:call-template name="section-links"/>
- <link rel="top">
- <xsl:attribute name="href">
- <xsl:apply-templates select="/slides" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="/slides/slidesinfo/title[1]"/>
- </xsl:attribute>
- </link>
-
- <xsl:if test="parent::section">
- <link rel="up">
- <xsl:attribute name="href">
- <xsl:apply-templates select="parent::section[1]" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="parent::section[1]/title"/>
- </xsl:attribute>
- </link>
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
+ <script language="JavaScript1.2"/>
</xsl:if>
- <xsl:if test="$prevfoil">
- <link rel="previous">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prevfoil" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$prevfoil/title"/>
- </xsl:attribute>
- </link>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
- <xsl:if test="$nextfoil">
- <link rel="next">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$nextfoil" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$nextfoil/title"/>
- </xsl:attribute>
- </link>
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
-
- <xsl:for-each select="foil">
- <link rel="slides">
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="title[1]"/>
- </xsl:attribute>
- </link>
- </xsl:for-each>
-
- <xsl:for-each select="../section">
- <link rel="section">
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="title[1]"/>
- </xsl:attribute>
- </link>
- </xsl:for-each>
</head>
<body class="section">
<xsl:call-template name="body.attributes"/>
<xsl:text>overlaySetup('lc')</xsl:text>
</xsl:attribute>
</xsl:if>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
<div class="{name(.)}" id="{$id}">
<a name="{$id}"/>
<xsl:call-template name="section-top-nav"/>
<span class="navheader"><xsl:apply-templates/></span>
</xsl:template>
+<xsl:template name="section-links">
+ <xsl:variable name="prevfoil"
+ select="(preceding::foil|/slides)[last()]"/>
+
+ <xsl:variable name="nextfoil" select="foil[1]"/>
+
+ <link rel="contents" href="{$toc.html}">
+ <xsl:attribute name="title">
+ <xsl:value-of select="(following::section|following::foil)[1]/title"/>
+ </xsl:attribute>
+ </link>
+
+ <link rel="top">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="/slides" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="/slides/slidesinfo/title[1]"/>
+ </xsl:attribute>
+ </link>
+
+ <xsl:if test="parent::section">
+ <link rel="up">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="parent::section[1]" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="parent::section[1]/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$prevfoil">
+ <link rel="previous">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prevfoil" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$prevfoil/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$nextfoil">
+ <link rel="next">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$nextfoil" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$nextfoil/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:for-each select="foil">
+ <link rel="slides">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:for-each select="../section">
+ <link rel="section">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+</xsl:template>
+
<!-- ============================================================ -->
<xsl:template match="foil">
<xsl:call-template name="object.id"/>
</xsl:variable>
- <xsl:variable name="section" select="ancestor::section"/>
-
<xsl:variable name="thisfoil">
<xsl:apply-templates select="." mode="filename"/>
</xsl:variable>
<title><xsl:value-of select="title"/></title>
<link type="text/css" rel="stylesheet">
<xsl:attribute name="href">
- <xsl:call-template name="css-stylesheet"/>
- </xsl:attribute>
- </link>
- <xsl:if test="$overlay != '0'">
- <script type="text/javascript" language="JavaScript">
- <xsl:attribute name="src">
- <xsl:call-template name="overlay.js"/>
- </xsl:attribute>
- </script>
- </xsl:if>
-
- <link rel="contents" href="{$toc.html}">
- <xsl:attribute name="title">
- <xsl:value-of select="(following::section|following::foil)[1]/title"/>
+ <xsl:call-template name="css.stylesheet"/>
</xsl:attribute>
</link>
- <link rel="top">
- <xsl:attribute name="href">
- <xsl:apply-templates select="/slides" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="/slides/slidesinfo/title[1]"/>
- </xsl:attribute>
- </link>
-
- <xsl:if test="parent::section">
- <link rel="up">
- <xsl:attribute name="href">
- <xsl:apply-templates select="parent::section[1]" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="parent::section[1]/title"/>
- </xsl:attribute>
- </link>
- </xsl:if>
-
- <xsl:if test="$prevfoil">
- <link rel="previous">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prevfoil" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$prevfoil/title"/>
- </xsl:attribute>
- </link>
- </xsl:if>
+ <xsl:call-template name="foil-links"/>
- <xsl:if test="preceding-sibling::foil">
- <link rel="first">
- <xsl:attribute name="href">
- <xsl:apply-templates select="preceding-sibling::foil[last()]"
- mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="preceding-sibling::foil[last()]/title"/>
- </xsl:attribute>
- </link>
+ <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
+ <script language="JavaScript1.2"/>
</xsl:if>
- <xsl:if test="$nextfoil">
- <link rel="next">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$nextfoil" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$nextfoil/title"/>
- </xsl:attribute>
- </link>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:call-template name="ua.js"/>
+ <xsl:call-template name="xbDOM.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
+ <xsl:call-template name="xbStyle.js"/>
+ <xsl:call-template name="xbCollapsibleLists.js"/>
+ <xsl:call-template name="slides.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
- <xsl:if test="following-sibling::foil">
- <link rel="last">
- <xsl:attribute name="href">
- <xsl:apply-templates select="following-sibling::foil[last()]"
- mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="following-sibling::foil[last()]/title"/>
- </xsl:attribute>
- </link>
+ <xsl:if test="$overlay != '0'">
+ <xsl:call-template name="overlay.js">
+ <xsl:with-param name="language" select="'JavaScript'"/>
+ </xsl:call-template>
</xsl:if>
-
- <xsl:for-each select="../../section">
- <link rel="section">
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="title[1]"/>
- </xsl:attribute>
- </link>
- </xsl:for-each>
-
- <xsl:for-each select="../foil">
- <link rel="slides">
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="title[1]"/>
- </xsl:attribute>
- </link>
- </xsl:for-each>
</head>
<body class="foil">
<xsl:call-template name="body.attributes"/>
<xsl:text>overlaySetup('lc')</xsl:text>
</xsl:attribute>
</xsl:if>
+ <xsl:if test="$keyboard.nav != 0">
+ <xsl:attribute name="onkeypress">
+ <xsl:text>navigate(event)</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
<div class="{name(.)}" id="{$id}">
<a name="{$id}"/>
<xsl:call-template name="foil-top-nav"/>
</h1>
</xsl:template>
+<xsl:template name="foil-links">
+ <xsl:variable name="nextfoil" select="(following::foil
+ |following::section)[1]"/>
+
+ <xsl:variable name="prevfoil" select="(preceding-sibling::foil[1]
+ |parent::section[1]
+ |/slides)[last()]"/>
+
+
+ <link rel="contents" href="{$toc.html}">
+ <xsl:attribute name="title">
+ <xsl:value-of select="(following::section|following::foil)[1]/title"/>
+ </xsl:attribute>
+ </link>
+
+ <link rel="top">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="/slides" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="/slides/slidesinfo/title[1]"/>
+ </xsl:attribute>
+ </link>
+
+ <xsl:if test="parent::section">
+ <link rel="up">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="parent::section[1]" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="parent::section[1]/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$prevfoil">
+ <link rel="previous">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$prevfoil" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$prevfoil/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="preceding-sibling::foil">
+ <link rel="first">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="preceding-sibling::foil[last()]"
+ mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="preceding-sibling::foil[last()]/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="$nextfoil">
+ <link rel="next">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="$nextfoil" mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$nextfoil/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:if test="following-sibling::foil">
+ <link rel="last">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="following-sibling::foil[last()]"
+ mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="following-sibling::foil[last()]/title"/>
+ </xsl:attribute>
+ </link>
+ </xsl:if>
+
+ <xsl:for-each select="../../section">
+ <link rel="section">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+
+ <xsl:for-each select="../foil">
+ <link rel="slides">
+ <xsl:attribute name="href">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="title[1]"/>
+ </xsl:attribute>
+ </link>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- ============================================================ -->
+
<xsl:template match="processing-instruction('Pub')">
<xsl:variable name="pidata"><xsl:value-of select="(.)"/></xsl:variable>
<xsl:choose>
<!-- ============================================================ -->
-<xsl:template match="foil" mode="foil-filename">
- <xsl:text>foil</xsl:text>
- <xsl:number count="foil" level="any" format="01"/>
- <xsl:text>.html</xsl:text>
-</xsl:template>
-
-<!-- ============================================================ -->
-
<xsl:template match="slides" mode="toc">
<p class="toctitle">
<b>
<xsl:text>myList.addItem('</xsl:text>
- <xsl:text disable-output-escaping="yes"><div id="</xsl:text>
+ <xsl:text disable-output-escaping="yes"><DIV id="</xsl:text>
<xsl:value-of select="$id"/>
<xsl:text disable-output-escaping="yes">" class="toc-slidesinfo"></xsl:text>
- <xsl:text disable-output-escaping="yes"><a href="</xsl:text>
+ <xsl:text disable-output-escaping="yes"><A href="</xsl:text>
<xsl:value-of select="$titlefoil.html"/>
<xsl:text disable-output-escaping="yes">" target="foil"></xsl:text>
</xsl:otherwise>
</xsl:choose>
- <xsl:text disable-output-escaping="yes"></a></div></xsl:text>
+ <xsl:text disable-output-escaping="yes"></A></DIV></xsl:text>
<xsl:text>'); </xsl:text>
</xsl:template>
<xsl:template match="section" mode="ns-toc">
- <xsl:variable name="foil">
- <xsl:apply-templates select="foil[1]" mode="foil-filename"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
</xsl:variable>
<xsl:text>subList = new List(false, width, height, "</xsl:text>
<xsl:apply-templates select="foil" mode="ns-toc"/>
<xsl:text>myList.addList(subList, '</xsl:text>
- <xsl:text disable-output-escaping="yes"><div class="toc-section"></xsl:text>
- <xsl:text disable-output-escaping="yes"><a href="</xsl:text>
- <xsl:value-of select="$foil"/>
+ <xsl:text disable-output-escaping="yes"><DIV id="</xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text disable-output-escaping="yes">" class="toc-section"></xsl:text>
+
+ <xsl:text disable-output-escaping="yes"><A href="</xsl:text>
+ <xsl:apply-templates select="." mode="filename"/>
<xsl:text disable-output-escaping="yes">" target="foil"></xsl:text>
<xsl:choose>
</xsl:otherwise>
</xsl:choose>
- <xsl:text disable-output-escaping="yes"></a></div></xsl:text>
+ <xsl:text disable-output-escaping="yes"></A></DIV></xsl:text>
<xsl:text>'); </xsl:text>
</xsl:template>
<xsl:template match="foil" mode="ns-toc">
<xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
- <xsl:variable name="foil">
- <xsl:apply-templates select="." mode="foil-filename"/>
- </xsl:variable>
<xsl:choose>
<xsl:when test="ancestor::section">
</xsl:otherwise>
</xsl:choose>
- <xsl:text disable-output-escaping="yes"><div id="</xsl:text>
+ <xsl:text disable-output-escaping="yes"><DIV id="</xsl:text>
<xsl:value-of select="$id"/>
<xsl:text disable-output-escaping="yes">" class="toc-foil"></xsl:text>
<xsl:text disable-output-escaping="yes"><img alt="-" src="</xsl:text>
- <xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$bullet.image"/>
+ <xsl:call-template name="bullet.image"/>
<xsl:text disable-output-escaping="yes">"></xsl:text>
- <xsl:text disable-output-escaping="yes"><a href="</xsl:text>
- <xsl:value-of select="$foil"/>
+ <xsl:text disable-output-escaping="yes"><A href="</xsl:text>
+ <xsl:apply-templates select="." mode="filename"/>
<xsl:text disable-output-escaping="yes">" target="foil"></xsl:text>
<xsl:choose>
</xsl:otherwise>
</xsl:choose>
- <xsl:text disable-output-escaping="yes"></a></div></xsl:text>
+ <xsl:text disable-output-escaping="yes"></A></DIV></xsl:text>
<xsl:text>'); </xsl:text>
</xsl:template>
</xsl:if>
<img alt="Prev" border="0">
<xsl:attribute name="src">
- <xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$left.image"/>
+ <xsl:call-template name="left.image"/>
</xsl:attribute>
</img>
</a>
</xsl:if>
<img alt="Next" border="0">
<xsl:attribute name="src">
- <xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$right.image"/>
+ <xsl:call-template name="right.image"/>
</xsl:attribute>
</img>
</a>
</xsl:if>
<img alt="Prev" border="0">
<xsl:attribute name="src">
- <xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$left.image"/>
+ <xsl:call-template name="left.image"/>
</xsl:attribute>
</img>
</a>
</xsl:if>
<img alt="Next" border="0">
<xsl:attribute name="src">
- <xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$right.image"/>
+ <xsl:call-template name="right.image"/>
</xsl:attribute>
</img>
</a>
</xsl:template>
<xsl:template name="generate.toc.hide.show">
- <xsl:if test="$toc.hide.show=1 and $ie5=1">
- <td>
+ <xsl:if test="$toc.hide.show != 0">
+ <td>
<img hspace="4">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="'hidetoc.gif'"/>
+ <xsl:attribute name="src">
+ <xsl:call-template name="hidetoc.image"/>
</xsl:attribute>
<xsl:attribute name="onClick">
-if (parent.parent.document.all.topframe.cols=="0,*")
-{
- parent.parent.document.all.topframe.cols="<xsl:value-of select="$toc.width"/>,*";
- this.src = "<xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="'hidetoc.gif'"/>";
-}
-else
-{
+if (parent.parent.document.all.topframe.cols=="0,*") {
+ parent.parent.document.all.topframe.cols="<xsl:value-of select="$toc.width"/>,*";
+ this.src = "<xsl:call-template name="hidetoc.image"/>";
+} else {
parent.parent.document.all.topframe.cols="0,*";
- this.src = "<xsl:call-template name="graphics.dir"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="'showtoc.gif'"/>";
-};
+ this.src = "<xsl:call-template name="showtoc.image"/>";
+};
</xsl:attribute>
</img>
</td>