[Laszlo-checkins] r7726 - in openlaszlo/branches/devildog: . WEB-INF/lps/lfc/compiler WEB-INF/lps/lfc/core WEB-INF/lps/lfc/data WEB-INF/lps/lfc/debugger WEB-INF/lps/lfc/debugger/platform/dhtml WEB-INF/lps/lfc/debugger/platform/swf WEB-INF/lps/lfc/events WEB-INF/lps/lfc/helpers WEB-INF/lps/lfc/kernel WEB-INF/lps/lfc/kernel/dhtml WEB-INF/lps/lfc/kernel/svg WEB-INF/lps/lfc/kernel/swf WEB-INF/lps/lfc/kernel/swf/dojo/flash6 WEB-INF/lps/lfc/kernel/swf/dojo/flash8 WEB-INF/lps/lfc/kernel/swf9 WEB-INF/lps/lfc/services WEB-INF/lps/lfc/views WEB-INF/lps/schema WEB-INF/lps/server/sc/src/org/openlaszlo/sc WEB-INF/lps/server/src/org/openlaszlo/sc build-tools docs docs/includes docs/src docs/src/contributors docs/src/contributors/images docs/src/developers docs/src/developers/images docs/src/developers/images/reference-header-explanation.graffle docs/src/developers/images/reference-methods-explanation.graffle docs/src/developers/images/reference-overview-explanation.graffle docs/src/developers/programs docs/src/developers/programs/resources docs/src/developers/tutorials docs/src/developers/tutorials/programs docs/src/reference docs/src/xsl laszlo-explorer laszlo-explorer/coverpages lps/components/debugger lps/includes test/lztest

dda@openlaszlo.org dda at openlaszlo.org
Fri Jan 4 08:21:23 PST 2008


Author: dda
Date: 2008-01-04 08:20:15 -0800 (Fri, 04 Jan 2008)
New Revision: 7726

Added:
   openlaszlo/branches/devildog/docs/src/developers/branch-management.dbk
   openlaszlo/branches/devildog/docs/src/developers/change-submission.dbk
   openlaszlo/branches/devildog/docs/src/developers/data_app.dbk
   openlaszlo/branches/devildog/docs/src/developers/doc-backwards-xform.dbk
   openlaszlo/branches/devildog/docs/src/developers/doc-toolchain.dbk
   openlaszlo/branches/devildog/docs/src/developers/docbook-code.dbk
   openlaszlo/branches/devildog/docs/src/developers/docbook-local.dbk
   openlaszlo/branches/devildog/docs/src/developers/images/doc-ant-build-developers.png
   openlaszlo/branches/devildog/docs/src/developers/images/doc-ant-build.graffle
   openlaszlo/branches/devildog/docs/src/developers/images/doc-ant-build.png
   openlaszlo/branches/devildog/docs/src/developers/images/doc-toolchain-is-docbook.graffle
   openlaszlo/branches/devildog/docs/src/developers/images/doc-toolchain-is-docbook.png
   openlaszlo/branches/devildog/docs/src/developers/images/doc-toolchain.graffle
   openlaszlo/branches/devildog/docs/src/developers/images/doc-toolchain.png
   openlaszlo/branches/devildog/docs/src/developers/images/doc_overview_simple.png
   openlaszlo/branches/devildog/docs/src/developers/images/doc_reference_details.png
   openlaszlo/branches/devildog/docs/src/developers/images/docbook-to-html.graffle
   openlaszlo/branches/devildog/docs/src/developers/images/docbook-to-html.png
   openlaszlo/branches/devildog/docs/src/developers/images/js2doc2dbk.graffle
   openlaszlo/branches/devildog/docs/src/developers/images/js2doc2dbk.png
   openlaszlo/branches/devildog/docs/src/developers/images/reference-attributes-explanation.png
   openlaszlo/branches/devildog/docs/src/developers/images/reference-attributes-table.png
   openlaszlo/branches/devildog/docs/src/developers/images/reference-attributes.png
   openlaszlo/branches/devildog/docs/src/developers/images/reference-events.png
   openlaszlo/branches/devildog/docs/src/developers/images/reference-example-explanation.png
   openlaszlo/branches/devildog/docs/src/developers/images/reference-header-explanation.graffle/
   openlaszlo/branches/devildog/docs/src/developers/images/reference-header-explanation.graffle/data.plist
   openlaszlo/branches/devildog/docs/src/developers/images/reference-header-explanation.png
   openlaszlo/branches/devildog/docs/src/developers/images/reference-methods-explanation.graffle/
   openlaszlo/branches/devildog/docs/src/developers/images/reference-methods-explanation.graffle/data.plist
   openlaszlo/branches/devildog/docs/src/developers/images/reference-overview-explanation.graffle/
   openlaszlo/branches/devildog/docs/src/developers/images/reference-overview-explanation.graffle/data.plist
   openlaszlo/branches/devildog/docs/src/developers/js2doc-local.dbk
   openlaszlo/branches/devildog/docs/src/developers/js2doc-ref.dbk
   openlaszlo/branches/devildog/docs/src/developers/licenses.dbk
   openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$1.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$3.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$4.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$5.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$6.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$8.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$9.lzx
   openlaszlo/branches/devildog/docs/src/developers/source-build.dbk
Removed:
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/platform/swf/LzMemory.as
   openlaszlo/branches/devildog/docs/src/contributors/branch-management.dbk
   openlaszlo/branches/devildog/docs/src/contributors/change-submission.dbk
   openlaszlo/branches/devildog/docs/src/contributors/doc-toolchain.dbk
   openlaszlo/branches/devildog/docs/src/contributors/docbook-code.dbk
   openlaszlo/branches/devildog/docs/src/contributors/docbook-local.dbk
   openlaszlo/branches/devildog/docs/src/contributors/images/doc-toolchain.graffle
   openlaszlo/branches/devildog/docs/src/contributors/images/doc-toolchain.png
   openlaszlo/branches/devildog/docs/src/contributors/js2doc-local.dbk
   openlaszlo/branches/devildog/docs/src/contributors/js2doc-ref.dbk
   openlaszlo/branches/devildog/docs/src/contributors/licenses.dbk
   openlaszlo/branches/devildog/docs/src/contributors/release-management.dbk
   openlaszlo/branches/devildog/docs/src/contributors/source-build.dbk
   openlaszlo/branches/devildog/docs/src/developers/images/reference-header-explanation.graffle/data.plist
   openlaszlo/branches/devildog/docs/src/developers/images/reference-methods-explanation.graffle/data.plist
   openlaszlo/branches/devildog/docs/src/developers/images/reference-overview-explanation.graffle/data.plist
   openlaszlo/branches/devildog/docs/src/developers/tutorials/data_app.dbk
   openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$1.lzx
   openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$3.lzx
   openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$4.lzx
   openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$5.lzx
   openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$6.lzx
   openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$8.lzx
   openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$9.lzx
Modified:
   openlaszlo/branches/devildog/
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/Class.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/LzFormatter.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/LzRuntime.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzDictionary.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzNode.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/UserClass.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataAttrBind.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataElement.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataRequest.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataText.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzParsedPath.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzReplicationManager.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/Library.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/LzMemory.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/platform/dhtml/kernel.js
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/events/LaszloEvents.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/helpers/LzFont.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/LzLibraryCleanup.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzContextMenu.js
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/svg/LzSprite.js
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzContextMenu.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzMakeLoadSprite.as
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzMediaLoader.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzSprite.as
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/dojo/flash6/DojoExternalInterface.as
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/dojo/flash8/DojoExternalInterface.as
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/dojo/flash8/ExpressInstall.as
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzContextMenu.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzHTTPLoader.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzInputTextSprite.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzLibraryLoader.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzLoadQueue.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzLoader.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzMakeLoadSprite.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzMediaLoader.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzSoundMC.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzSprite.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzCSSStyle.js
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzIdle.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzInstantiator.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzTimer.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzTrack.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloCanvas.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloView.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzScript.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzViewLinkage.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/schema/build.xml
   openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt
   openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/sc/Assembler.java
   openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/sc/CommonGenerator.java
   openlaszlo/branches/devildog/build-tools/runlztest.sh
   openlaszlo/branches/devildog/build.xml
   openlaszlo/branches/devildog/docs/includes/docbook.css
   openlaszlo/branches/devildog/docs/includes/styles.css
   openlaszlo/branches/devildog/docs/release-notes.html
   openlaszlo/branches/devildog/docs/src/build.xml
   openlaszlo/branches/devildog/docs/src/contribset.dbk
   openlaszlo/branches/devildog/docs/src/developers/browser-integration.dbk
   openlaszlo/branches/devildog/docs/src/developers/fonts.dbk
   openlaszlo/branches/devildog/docs/src/developers/index.dbk
   openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$15.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$20.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$22.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$23.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$26.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$9.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/introductory-classes-$17.lzx
   openlaszlo/branches/devildog/docs/src/developers/programs/resources/phonebook.xml
   openlaszlo/branches/devildog/docs/src/developers/tutorials/comp-intro.dbk
   openlaszlo/branches/devildog/docs/src/developers/tutorials/laszlo_basics.dbk
   openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data-tutorial-$6.lzx
   openlaszlo/branches/devildog/docs/src/developers/tutorials/scripting.dbk
   openlaszlo/branches/devildog/docs/src/reference/index.dbk
   openlaszlo/branches/devildog/docs/src/reference/welcome.html
   openlaszlo/branches/devildog/docs/src/xsl/common-html.xsl
   openlaszlo/branches/devildog/docs/src/xsl/conditional-html.xsl
   openlaszlo/branches/devildog/docs/src/xsl/dbk-toc2nav.xsl
   openlaszlo/branches/devildog/docs/src/xsl/js2doc2dbk.xsl
   openlaszlo/branches/devildog/docs/src/xsl/lzx-pretty-print.xsl
   openlaszlo/branches/devildog/docs/src/xsl/lzx2js2doc.xsl
   openlaszlo/branches/devildog/docs/src/xsl/parameters.xsl
   openlaszlo/branches/devildog/docs/src/xsl/refguide-html.xsl
   openlaszlo/branches/devildog/laszlo-explorer/coverpages/documentation_cover.html
   openlaszlo/branches/devildog/laszlo-explorer/nav.xml
   openlaszlo/branches/devildog/laszlo-explorer/nav_dhtml.xml
   openlaszlo/branches/devildog/lps/components/debugger/newcontent.lzx
   openlaszlo/branches/devildog/lps/components/debugger/scrollingtext.lzx
   openlaszlo/branches/devildog/lps/includes/laszlo-debugger.css
   openlaszlo/branches/devildog/test/lztest/lztest-text.lzx
Log:
Merged revisions 7498-7718 via svnmerge from 
http://svn.openlaszlo.org/openlaszlo/trunk

.......
  r7499 | dda | 2007-12-10 19:01:11 -0500 (Mon, 10 Dec 2007) | 37 lines
  
  Change 20071210-dda-l by dda at freddie.local on 2007-12-10 16:16:47 EST
      in /Users/dda/laszlo/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Allow certain new keywords to be identifiers
  
  New Features: none
  
  Bugs Fixed: LPP-5226, LPP-5178
  
  Technical Reviewer: ptw
  QA Reviewer: hminsky
  Doc Reviewer: (pending)
  
  Documentation: none
  
  Release Notes: none
  
  Details:
     New keywords: internal, final, override, dynamic, static can be identifiers.
     Confirmed with SWF9 third party compiler that these are allowed, and also that
     public/private/protected are not allowed (oddly enough).
  
     Made a common shared function in the grammar to get maximal code sharing.
  
     This change fixes a problem exposed by the addition of the new keywords.
     We need the keywords to make changes to LFC files that will be shared
     among runtimes.
  
  Tests:
    http://localhost:8080/trunk/examples/components/style_example.lzx
       with SWF7 (the reported test case), also SWF8 and DHTML.
    smokecheck SWF8, DHTML
    Tried some .lzs files mentioned in LPP-5178 to verify that the
       new keywords are still accepted in the appropriate places.
.......
  r7518 | ptw | 2007-12-12 08:13:58 -0500 (Wed, 12 Dec 2007) | 55 lines
  
  Change 20071209-ptw-k by ptw at dueling-banjos.local on 2007-12-09 09:32:18 EST
      in /Users/ptw/OpenLaszlo/ringding-2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Fix Sprite memory Leaks
  
  Bugs Fixed:
  LPP-5217 'windows can leak memory
  
  Technical Reviewer: a.bargull at intensis.de (message://<475F0E97.90905@intensis.de>)
  QA Reviewer: philip at pbrdev.com (message://<20071210171315.089691DF284@hemicuda.laszlosystems.com>)
  Doc Reviewer: (pending)
  
  Details:
  
      LzMakeLoadSprite.*, LzSprite.*: Eliminate recursion argument.  Not
      used for sprites.
  
      LzSprite.*:  In #destroy set __LZdeleted flag to prevent events
      from resurrecting you.  No need for recursive sprite destruction
      now.  Move delegate removal back to destroy from predestroy.
  
      LzSprite.js:  If parent is not being deleted, remove yourself from
      your parent's childnodes array.
  
      LzIdle: Be careful to create coi Array on instance, not prototype.
  
      LzNode: Comment and simplify $once and $always processing.  Add
      comment to explain importance of __LzDeleted flag.
  
      LaszloView: Destroy the sprite _before_ you check for a recursive
      call.
  
      LzReplicationManager: Remove superfluous call to LzSprite#destroy.
  
      newcontent, scrollingtext: Remove unused id (that causes a leak).
  
  Tests:
      I modified Phil's test case to only create/destroy 1 window per
      click.  The test methodology is:
  
      1. Start test
      2. Click twice to create any shared substrate
      3. Debug.markObjects()
      4. Click once
      5. Debug.findNewObjects()
      6. Debug.whyAlive()
  
      Result: Before change, many leaked window sprites.  After change, no
      leaked window sprites.
  
      NOTE: There are still some other minor leaks that I have not
      attempted to address here, but will report as a separate bug.
.......
  r7522 | ben | 2007-12-12 16:34:57 -0500 (Wed, 12 Dec 2007) | 24 lines
  
  Change 20071212-ben-1 by ben at 45.1.59.10.in-addr.arpa on 2007-12-12 13:28:49 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Update release notes for 4.1.x (no real content, though)
  
  New Features:
  
  Bugs Fixed: LPP-5192, Update release notes for RingDing release before shipping
  
  Documentation:
  I took out the old stuff that was specific to 4.0.5|6|7 releases, and replaced
  it with TBD's for the new features and bugs fixed in 4.1. When it's time to ship,
  of course, those will have to be filled in. For the moment, though, the 
  release notes at least say something sensible, namely: 
     OpenLaszlo 4.1.x is a series of nightly builds from live development. For production,
     we recommend using OpenLaszlo 4.0.7.
  
  
  Tests:
  http://localhost:8080/trunk/docs/release-notes.html
  passes validation
.......
  r7528 | ben | 2007-12-12 19:40:55 -0500 (Wed, 12 Dec 2007) | 20 lines
  
  Change 20071212-ben-f by ben at 45.1.59.10.in-addr.arpa on 2007-12-12 16:31:21 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Eliminated links to Contributor's Guide from laszlo explorer
  
  Bugs Fixed: LPP-4123 Selecting Contributor's Guide from laszlo-explorer results in an error
  
  Documentation:
  We don't build, maintain, or ship the contributor's guide anymore, so we 
  shouldn't link to it from laszlo explorer. 
  I also modified the wording on the reference guide, pointing people at the
  local reference guide first, and the lps3 reference guide as a backup. 
  
  
  Tests:
  Laszlo Explorer -> Documentation -> right side of page, no link to Contributor's Guide.
  Laszlo Explorer -> Documentation -> in explorer menu on left side of page, no entry for Contributor's Guide
.......
  r7530 | ben | 2007-12-12 20:17:19 -0500 (Wed, 12 Dec 2007) | 24 lines
  
  Change 20071212-ben-n by ben at 45.1.59.10.in-addr.arpa on 2007-12-12 17:14:41 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Enable building contributor's guide on demand
  
  Documentation:
  There is some useful tools information in the contributor's guide. 
  This change makes it possible to build just the contributor's guide,
  and not the contributor's reference, by calling "ant contributors"
  in docs/src. 
  
  This does not change the fact that we don't maintain or ship
  the contributor's guide; it just had some tasty information in 
  it that I wanted to look at, and this was the best way to get
  that information out. Someday, we should start shipping this
  information again. 
  
  Tests:
  cd docs/src
  ant contributors
  http://localhost:8080/trunk/docs/contributors/index.html
.......
  r7539 | ben | 2007-12-13 23:50:04 -0500 (Thu, 13 Dec 2007) | 63 lines
  
  Change 20071213-ben-V by ben at slim.local on 2007-12-13 19:36:49 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Include a DOCTYPE in the doctools generated content
  
  Bugs Fixed: LPP-5258 doctools should generate html with a DOCTYPE
  
  QA Reviewer: brynn
  
  Documentation:
  
  The html that the doctools was generating did not have a doctype at all. Some
  research (thank you, Tucker) revealed that the lack of a doctype was probably
  sending IE into quirks mode, which probably explains the many visual errors we
  were seeing only in IE.
  
  This change gets saxon to insert a doctype (XHTML 1.0 Transitional) at the
  beginning of every html file it generates. This change *should* avoid quirks
  mode in everything we care about except for IE6; apparently, this combination
  will still evoke quirks mode in IE6.
  
  When this code makes it into a build, the various IE-specific visual errors should be rechecked; hopefully they will be gone! 
  
  HOWEVER: this change seems to cause tons of extra space to be inserted in program listings. That seems like a problem that we'll just have to deal with; getting a right doctype in is the Right Thing To Do. 
  
   The first lines of every generated html file now look like this: 
  
  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  
  <!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  
  ...
  
  based on http://hsivonen.iki.fi/doctype/ this doctype/xml declaration combination will provoke standards mode in almost everything:
  NS6
      Mozilla 0.6=0.9.4 and Netscape 6.0--6.2.3
  Old Moz
      Mozilla 0.9.5 through 1.1 alpha and Mozilla 1.0
  Moz & Safari
      Mozilla 1.0.1, Mozilla 1.1 beta and later, Firefox and Netscape 7, Safari v73 aka. 0.9 through Safari v419.3 aka. 2.0.4, Konqueror 3.5
  Opera 9
      Opera 9.0-9.10
  Opera 7.5
      Opera 7.5-8.02
      
  ..."Almost Standards" mode in...    
  IE 7 & Opera 7.10
      Windows IE 7 and Opera 7.10-7.23
      
  ...and quirks mode only in... 
  IE 6 & Opera 7.0
      Windows IE 6 and Opera 7.0-7.03
  Konq 3.2
     
  Tests:
  Inspect a single html page output by the doctools in both the reference and the
  devguide. Notice that it begins with a doctype. Also note that it is w3c valid
  XHTML transitional!
.......
  r7546 | ben | 2007-12-14 16:48:57 -0500 (Fri, 14 Dec 2007) | 35 lines
  
  Change 20071214-ben-J by ben at slim.local on 2007-12-14 11:43:10 PST
      in /Users/ben/src/svn/openlaszlo/trunk-to-kill-dtd
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Stop building the dtd, ever
  
  New Features:
  
  Bugs Fixed: LPP-5235 Stop generating the dtd in every build
  
  Technical Reviewer: ptw 
  QA Reviewer: minsky (pending)
  
  Documentation:
  As discussed in email, our current dtd is better than nothing at all, although, since it is not being maintained, you could save yourself some trouble by generating it once and just checking it in to svn. 
  
  I've checked in the current dtd and related files (xsd, rng, rnc) to 
  http://svn.openlaszlo.org/attic/schema/
  
  and with this change, the build no longer tries to do anything at
  all with building or thinking about or including the dtd
  
  Notice that the build file in  WEB-INF/lps/schema/build.xml 
  no longer even mentions python. This might well be our last
  use of python in the build. 
  
  Release Notes:
  
  Details:
      
  
  Tests:
  ant dist-one succeeds. 
.......
  r7550 | ptw | 2007-12-14 16:57:57 -0500 (Fri, 14 Dec 2007) | 21 lines
  
  Change 20071213-ptw-c by ptw at dueling-banjos.local on 2007-12-13 16:14:13 EST
      in /Users/ptw/OpenLaszlo/ringding-2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Fix swf try/catch
  
  Bugs Fixed:
  LPP-5252 'try/catch for swf blows up in large programs'
  
  Technical Reviewer: dda at ddanderson.com (message://<AA5457E3-8F37-46DC-87B0-2BE7A18A257D@ddanderson.com>)
  
  Details:
      Store the intermediate result as a relative value (i.e., store the
      branch offset to get to the first label, then subtract that from
      the branch offset of the second label to get the difference that
      you really want)
  
  Tests:
      I can compile the LFC with try/catch now
.......
  r7561 | ben | 2007-12-16 18:34:54 -0500 (Sun, 16 Dec 2007) | 57 lines
  
  Change 20071216-ben-s by ben at slim.local on 2007-12-16 15:20:28 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Move "building data drive applications" chapter where it belongs
  
  New Features:
  
  Bugs Fixed: (partial) LPP-5039 examples 38.3 and 38.4 broken in Chapter 38. Building Data-Driven Applications
  
  Technical Reviewer: iorio (pending)
  
  Documentation:
  
  The developer's guide chapter, "Building Data Driven Applications", is 
  not a tutorial, but the files lived inside the developers/tutorials
  directory. This made it impossible for the doctools to find the example
  code listings when building the html for that chapter. 
  
  This change moves the docbook chapter and the related example
  code out of the tutorials/ directory and into the top-level
  docs/src/developers directory. 
  
  The tutorials/ directory is an unnecessary complication that should be done
  away with. 
  
  This is not a complete fix for this bug! The applications don't
  actually appear and run; I suspect this is because they can't find the
  data files they need. I suspect more will be revealed if these build
  output warnings are addressed: 
  
  book.resources.generate:
      [mkdir] Created dir: /Users/ben/src/svn/openlaszlo/trunk/docs/developers/programs
       [copy] Copying 331 files to /Users/ben/src/svn/openlaszlo/trunk/docs/developers/programs
      [mkdir] Created dir: /Users/ben/src/svn/openlaszlo/trunk/docs/developers/images
       [copy] Copying 67 files to /Users/ben/src/svn/openlaszlo/trunk/docs/developers/images
       [copy] Copying 97 files to /Users/ben/src/svn/openlaszlo/trunk/docs/developers/images
      [mkdir] Created dir: /Users/ben/src/svn/openlaszlo/trunk/docs/developers/programs/resources
       [copy] Warning: /Users/ben/src/svn/openlaszlo/trunk/docs/src/developers/resources not found.
      [mkdir] Created dir: /Users/ben/src/svn/openlaszlo/trunk/docs/developers/data
       [copy] Warning: /Users/ben/src/svn/openlaszlo/trunk/docs/src/build/developers/data not found.
      [mkdir] Created dir: /Users/ben/src/svn/openlaszlo/trunk/docs/developers/resources
       [copy] Warning: /Users/ben/src/svn/openlaszlo/trunk/docs/src/build/developers/resources not found.
       [copy] Copying 600 files to /Users/ben/src/svn/openlaszlo/trunk/docs/developers
  
  
  Release Notes:
  
  Details:
      
  
  Tests:
  ant clean developers
  Note that the output no longer says... 
       [java] Failure reading file:/Users/ben/src/svn/openlaszlo/trunk/docs/src/build/developers/programs/data_app-$1.lzx: /Users/ben/src/svn/openlaszlo/trunk/docs/src/build/developers/programs/data_app-$1.lzx (No such file or directory) 
.......
  r7562 | ben | 2007-12-16 20:14:54 -0500 (Sun, 16 Dec 2007) | 29 lines
  
  Change 20071216-ben-d by ben at slim.local on 2007-12-16 14:43:37 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Revert revision 7539, which set doctools output to XHTML
  
  Technical Reviewer: ptw 
  
  Documentation:
  r7539 set the doctools to output xhtml. Tucker argued convincingly
  that we should not do this: 
  
      I am currently of the opinion that XHTML is not the right choice for our
      doc type See why [here](http://www.hixie.ch/advocacy/xhtml).
  
      Hixie argues that you should use HTML 4.01 Transitional (for a number of
      technical reasons detailed in the link above). See for instance
      WEB-INF/lps/templates/html-response.xslt.
      
      Basically, no current browser will process XHTML as XHTML, unless you
      go through hoops on your server and the client is Firefox. In every
      other case, your XHTML is really being rendered as 'tag soup', which
      makes it rather pointless. XHTML is a concept whose time is not yet
      here. OTOH, HTML is becoming a more and more accurate standard.
  
  This change, therefore, backs out the changes that made the output
  xhtml. 
.......
  r7571 | ben | 2007-12-17 16:41:02 -0500 (Mon, 17 Dec 2007) | 31 lines
  
  Change 20071217-ben-K by ben at slim.local on 2007-12-17 12:42:03 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Make doc build output a doctype
  
  Bugs Fixed: LPP-5258 doctools should generate html with a DOCTYPE
  
  Technical Reviewer: ptw
  
  Documentation:
  In order to generate html with a doctype, we have to tell docbook-xsl's chunker
  that we want a doctype. These two parameters are the way we do so: 
  
  +  <xsl:param name="chunker.output.doctype-public" select="'-//W3C//DTD HTML 4.01 Transitional//EN'"/>
  +  <xsl:param name="chunker.output.doctype-system" select="'http://www.w3.org/TR/html4/loose.dtd'"/>  
  
  Release Notes:
  
  Details:
      
  
  Tests:
  ant clean doc
  inspect one of the output files
  notice it begins with... 
  <!DOCTYPE html
    PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
.......
  r7573 | ptw | 2007-12-17 17:41:55 -0500 (Mon, 17 Dec 2007) | 64 lines
  
  Change 20071214-ptw-i by ptw at dueling-banjos.local on 2007-12-14 18:23:23 EST
      in /Users/ptw/OpenLaszlo/ringding-2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Make the memory tracer generic
  
  New Features: Memory tracing now works (for some definition of works)
  in DHTML in addition to SWF.
  
  Bugs Fixed:
  LPP-2071: '__LzDebug.whyAlive() incorrectly reports leaking arrays with SWF8'
  
  Technical Reviewer: a.bargull at intensis.de (pending)
  QA Reviewer: promanik at laszlosystems.com (message://<20071216160543.EBA091EF912@hemicuda.laszlosystems.com>)
  
  Documentation:
      Debug.markObjects, findNewObjects, whyAlive now work in SWF and
      DHTML.  DHTML is only beta-quality, and you will get a warning
      saying so, because it appears that some underlying runtimes
      themselves leak DOM objects (or our usage of them causes them to
      be leaked).  It works reasonably well in Safari, less well in
      Firefox, hangs Opera, is untested in IE (but IE has its own leak
      tools).
  
  Details:
      kernel.js: Initialize the debug window early so memory tracing can
      find it.  Use a static style for debugger output, so that a new
      CSSStyle object is not consed for every line of debugger output.
  
      LzMemory.lzs: Make this generic (although there are still some if
      ($as2) bits for now, I think a unified code base is better than
      splitting this into the kernels).  Add some metering to see how
      the background tracer is working.  Add some documentation.  Add
      some try/catch blocks to ignore errors trying to trace native
      wrapped objects in DHTML.  Don't trace native wrapped object slots
      that return a 'new' object each time you access them.  Use
      set/clearInterval instead of the old tracer movieclip to run the
      background task.  Fix the path evaluator to be correct and
      platform-neutral.  Use objectOwnProperties to find slots to trace.
      Make the code to hide the debugger from the leak detector generic,
      hide the debugger DOM tree.  Make whyAlive output all relevant
      data, so it can be invoked as a button, not just from the
      debugger.
  
      Library.lzs: switch from the platform leak detector to the generic
      one.
  
      LzRuntime: Use static style for debugger output.
  
      laszlo-debugger.css: Define that static style.
  
  Tests:
      The following test program works for me (pressing the 3 buttons at
      the appropriate times, creates a leak report):
  
      <canvas debug="true">
        <simplelayout axis="x" />
        <button onclick="Debug.markObjects()">Mark</button>
        <button onclick="Debug.findNewObjects()">Find New</button>
        <button onclick="Debug.whyAlive()">Why Alive</button>
      </canvas>
.......
  r7575 | ptw | 2007-12-17 20:14:14 -0500 (Mon, 17 Dec 2007) | 25 lines
  
  Change 20071217-ptw-P by ptw at dueling-banjos.local on 2007-12-17 17:56:31 EST
      in /Users/ptw/OpenLaszlo/ringding-2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Brain-oh in LzSprite.js
  
  Bugs Fixed:
  LPP-5274 'Error: this.__parent has no properties (DHTML)'
  
  Technical Reviewer: philip at pbrdev.com (pending)
  QA Reviewer: maymye (pending)
  
  Details:
      Test for __parent before using it
  
  Tests:
      Environment: OS X, FF2
      Launch laszlo-explorer in flash
      Choose Demos in navbar
      Choose Amazon
      Select the Launch in DHTML button
      Observe green checkmark at bottom right of Amazon window, NO LONGER
      turns to a red X
.......
  r7580 | ben | 2007-12-17 21:58:58 -0500 (Mon, 17 Dec 2007) | 28 lines
  
  Change 20071217-ben-0 by ben at slim.local on 2007-12-17 12:45:57 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Improve canvas sizing in embedded examples in docs
  
  Bugs Fixed: LPP-5207 (partial) change height of example code window from 200 to 400 pixels
  
  Technical Reviewer: iorio (pending)
  
  Documentation:
  This change makes the default canvas height for a live example be 400 pixels. 
  
  This change also includes an example of the best way to specify the 
  canvas height, by adding a parameter element to the programlisting element:
         <parameter role="canvas">height: 200</parameter>
       
  Examples of this usage are in docs/src/developers/tutorials/comp-intro.dbk
  
  
  Release Notes:
  
  Details:
      
  
  Tests:
.......
  r7581 | ben | 2007-12-17 22:01:58 -0500 (Mon, 17 Dec 2007) | 27 lines
  
  Change 20071217-ben-l by ben at slim.local on 2007-12-17 13:23:38 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Set canvas color for the first live example in Laszlo Basics
  
  New Features:
  
  Bugs Fixed: LPP-5221 (partial) canvas bgcolor does not work in live examples in the dguide
  
  Technical Reviewer: iorio (pending) 
  
  Documentation:
  To make a live example have a canvas color, specify the bgcolor in the programlisting's
  parameter tag: 
     <parameter role="canvas">height: 100, width: 500, bgcolor: 'green'</parameter>
  
  
  Tests:
  Notice that the first example in 
  http://localhost:8080/trunk/docs/developers/tutorials/laszlo_basics.html
  has a green background; the rest are white. 
  
  Also note that other canvas on that page and on other pages in the dev
  guide continue to have white backgrounds. 
.......
  r7586 | lou | 2007-12-18 07:39:56 -0500 (Tue, 18 Dec 2007) | 23 lines
  
  Change 20071218-lou-p by lou at loumac.local on 2007-12-18 08:27:56 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fonts chapter in the dguide: example 23.2 canvas bgcolor not rendering properly
  
  New Features:
  
  Bugs Fixed:LPP-5276
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Documentation:
  
  added    
  
  <parameter role="canvas">height: 100, width: 500, bgcolor: 'gray'</parameter>
  
  to programlisting
.......
  r7590 | lou | 2007-12-18 09:22:34 -0500 (Tue, 18 Dec 2007) | 14 lines
  
  Change 20071218-lou-r by lou at loumac.local on 2007-12-18 10:12:53 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: move the view so it is not obscured by the debug window
  
  Bugs Fixed: http://www.openlaszlo.org/jira/browse/LPP-5278
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
.......
  r7594 | lou | 2007-12-18 12:35:10 -0500 (Tue, 18 Dec 2007) | 18 lines
  
  Change 20071218-lou-7 by lou at loumac.local on 2007-12-18 13:26:02 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fix code examples in the browser integration chapter of the dguide
  
  Bugs Fixed: LPP-5279, LPP-5281
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Documentation:
  
  These code example both had <fixme> tags instead of code.
  Replace missing code with code from the 3.4 build
.......
  r7598 | ptw | 2007-12-18 17:23:37 -0500 (Tue, 18 Dec 2007) | 17 lines
  
  Change 20071218-ptw-t by ptw at dueling-banjos.local on 2007-12-18 17:09:43 EST
      in /Users/ptw/OpenLaszlo/ringding-2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Type-oh in r7576
  
  Technical Reviewer: max (message://<476724D8.2000904@openlaszlo.org>)
  QA Reviewer: mamye (pending)
  
  Details:
      Remove stray '_' noticed by Max
  
  Tests:
      Ran lpp-5213 test in DHTML, examine canvas.sprite.__children.
      Before: 100's of leaked objects, After: 3 expected objects.
.......
  r7601 | ben | 2007-12-18 19:45:54 -0500 (Tue, 18 Dec 2007) | 37 lines
  
  Change 20071218-ben-i by ben at slim.local on 2007-12-18 11:59:46 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Turn optimization off in rhino in lztest
  
  Bugs Fixed: Partially unbreaks ant runlzunit
  
  Technical Reviewer: ptw
  
  Documentation:
  
  Rhino was dying strangely in runlzunit since r7573: 
      lztest:
           [exec] Entering runlztest.sh with LPS_HOME=/home/svnbuild/builds/7583-openlaszlo-trunk tags=smoketest
           [exec] skipping test/lztest/lztest-textstyle.lzx, does not match tags smoketest
           [exec]   covers-tags: lzview smoketest
           [exec] testing test/lztest/lztest-align.lzx...........
           [exec] Compiling: test/lztest/lztest-align.lzx to test/lztest/lztest-align.js
           [exec] Exception in thread "main" java.lang.ClassFormatError: Invalid method Code length 66014 in class file org/mozilla/javascript/gen/c3
           [exec]  at java.lang.ClassLoader.defineClass1(Native Method)
           [exec]  at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
           [exec]  at java.lang.ClassLoader.defineClass(ClassLoader.java:465)
  
  We traced this to an issue that rhino has with executing very 
  long functions. I've worked around this problem by telling rhino
  not to do any optimization, with the command line parameter -opt -1.
  
  Details:
  
  ant runlzunit still fails, with erros in 
  test/lztest/lztest-node-initsequence.lzx and test/lztest/lztest-node-options.lzx
      
  
  Tests:
.......
  r7604 | lou | 2007-12-19 06:01:29 -0500 (Wed, 19 Dec 2007) | 20 lines
  
  Change 20071219-lou-1 by lou at loumac.local on 2007-12-19 06:07:42 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fix examples in the Building Data-Driven Applications chapter of the dguide
  
  Bugs Fixed: LPP-5039
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details: examples 38.3, 4, 7, and 8 use the file phonebook.xml for their data.
  At some point, this file was changed so the root element was renamed from
  "phonebook" to "contacts". This has been changed back.
      
  
  Tests: Make sure the examples work as they do in the 3.4 dguide
.......
  r7608 | lou | 2007-12-19 07:13:57 -0500 (Wed, 19 Dec 2007) | 19 lines
  
  Change 20071219-lou-t by lou at loumac.local on 2007-12-19 07:52:06 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fix Example 37.7. Manipulating datapointers in Chapter 37. Data Access and Binding in the dguide
  
  
  Bugs Fixed: LPP-5293
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details: changed selectChild(2) to selectChild(1)
      
  
  Tests: verified that the example works
.......
  r7610 | lou | 2007-12-19 07:29:25 -0500 (Wed, 19 Dec 2007) | 18 lines
  
  Change 20071219-lou-r by lou at loumac.local on 2007-12-19 08:24:51 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fixed: databinding chapter in the dguide: Example 11.4. Manipulating datapointers
  
  Bugs Fixed: LPP-5210
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details: changed selectChild(2) to selectChild(1)
      
  
  Tests: verified the example works
.......
  r7612 | lou | 2007-12-19 08:19:35 -0500 (Wed, 19 Dec 2007) | 20 lines
  
  Change 20071219-lou-f by lou at loumac.local on 2007-12-19 09:09:43 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fix Example 37.18. Using datapointer's iterator methods in the Data access and binding chapter
  
  New Features:
  
  Bugs Fixed: LPP-5294
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details: changed to look in phonebook.xml for root element "phonebook" instead of "contacts"
      
  
  Tests: verified the example works
.......
  r7614 | lou | 2007-12-19 13:16:26 -0500 (Wed, 19 Dec 2007) | 21 lines
  
  Change 20071219-lou-p by lou at loumac.local on 2007-12-19 14:06:29 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fix examples 20, 21, and 24 in Data access and binding chapter of the dguide
  
  Bugs Fixed: LPP-5295
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details: change phonebook:/contacts to phonebook:/phonebook in example code
      
  Tests: verified example code works
.......
  r7617 | pbr | 2007-12-19 14:16:13 -0500 (Wed, 19 Dec 2007) | 33 lines
  
  Change 20071218-Philip-6 by Philip at Philip-DC on 2007-12-18 16:27:25 EST
       in /cygdrive/f/laszlo/svn/src/svn/openlaszlo/trunk
       for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Fixed text size caching in IE7
  
  New Features:
  
  Bugs Fixed: LPP-5176
  
  Technical Reviewer: max
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
  LzTextSprite.getTextSize() has a cache to save computation, and this cache is erased every 1000 entries. The problem is the counter is also zeroed. In IE, the tag name includes the counter value and the name cannot be reused without generating javascript errors. I think IE is trying to reuse the name, but the object has been deleted.
  
  The fix is to never zero the counter. The cache is erased but the counter value is set to its old value.
  
  
  Tests:
  Run test in LPP-5176 in IE7/dhtml. Also tested in FF/dhtml.
  
  Files:
  M      WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js
  
  Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20071218-Philip-6.tar
.......
  r7620 | ptw | 2007-12-19 15:15:19 -0500 (Wed, 19 Dec 2007) | 19 lines
  
  Change 20071218-ptw-f by ptw at dueling-banjos.local on 2007-12-18 16:53:38 EST
      in /Users/ptw/OpenLaszlo/ringding-2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Deal with rhino
  
  Bugs Fixed:
  LPP-5288: 'failing lztest-node-initsequence and lztest-node-options'
  
  Technical Reviewer: ben at openlaszlo.org (message://<F59F9AE8-C18A-417E-843A-131108E77065@laszlosystems.com>)
  QA Reviewer: mamye (pending)
  
  Details:
      Ignore errors setting up debug console in rhino
  
  Tests:
      ant runlztest
.......
  r7624 | ben | 2007-12-19 17:50:14 -0500 (Wed, 19 Dec 2007) | 33 lines
  
  Change 20071219-ben-Q by ben at slim.local on 2007-12-19 14:42:49 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Doc tools improvements -- don't load DHTML lfc, specify history: false 
  
  New Features:
  
  Bugs Fixed: LPP-5270 $3.startExec is not a function firebug error in embed-compressed.js
      LPP-5298 Generated documentation should not include LFCdhtml.js
      LPP-5207 change height of example code window from 200 to 400 pixels
  
  Technical Reviewer: none 
  QA reviewer: liorio
  
  Documentation:
  Discussion with Max revealed that we should pass in "history: false" when we call
  Lz.swfEmbed( ... ) for a live example, so that we don't irritate the history 
  mechanism. This makes hundreds of firebug errors go away on every page of the
  developer's guide. 
  
  Also, it is just not necessary to include LFCdhtml.js when we're not planning to
  include any dhtml live examples at this point! 
  
  This change also finally makes it so that the default height of embedded examples is
  400. I'm not sure why this change does that, but it did, so, rejoice. 
  
  Tests:
  ant clean developers
  visit http://localhost:8080/trunk/docs/developers/color.html  note that there are no firebug errors
  same with http://localhost:8080/trunk/docs/developers/tutorials/laszlo_basics.html
.......
  r7626 | max | 2007-12-19 22:33:49 -0500 (Wed, 19 Dec 2007) | 28 lines
  
  Change 20071217-maxcarlson-V by maxcarlson at Roboto on 2007-12-17 18:14:44 PST
      in /Users/maxcarlson/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Add seuuport for setting/getting inputtext selection in DHTML
  
  New Features:
  
  Bugs Fixed: LPP-4106 - LzText getSelectionPosition, getSelectionSize not implemented in DHTML
  
  Technical Reviewer: promanik
  QA Reviewer: ptw
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details: lztest-text.lzx - Changed selection tests to use inputtext.
  
  LzSprite.js - Clean up quirks setting, add text_selection_use_range for IE.  Fix _parent braino.
  
  LzInputTextSprite.js - Add setSelection() and getSelectionStart() and getSelectionEnd.
      
  
  Tests: lztest-text.lzx now passes all tests in test4() - selection.  Tested in Firefox, Safari and IE 7.
.......
  r7634 | ptw | 2007-12-20 10:37:35 -0500 (Thu, 20 Dec 2007) | 20 lines
  
  Change 20071105-ptw-V by ptw at dueling-banjos.local on 2007-11-05 15:10:35 EST
      in /Users/ptw/OpenLaszlo/ringding-2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Ensure deferred events do not recurse
  
  Bugs Fixed:
  LPP-4950 'LzDelegate single-execution mechanism does not work for queued delegates'
  
  Technical Reviewer: hminksy (pending)
  QA Reviewer: a.bargull at intensis.de (message://<4755B32F.7080302@intensis.de>)
  
  Details:
      More closely mimic sendEvent when processing deferred events by
      locking the event and delegate that was deferred from recursing.
  
  Tests:
      Test case from bug no longer shows the event recursing.
.......
  r7635 | lou | 2007-12-20 10:38:45 -0500 (Thu, 20 Dec 2007) | 18 lines
  
  Change 20071220-lou-B by lou at loumac.local on 2007-12-20 11:33:17 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: replace Example 37.13 in the Data access and binding chapter
  
  Bugs Fixed: LPP-5300
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details: revert the example code to the one in r3.4
      
  
  Tests: verify visually
.......
  r7645 | ben | 2007-12-20 16:18:24 -0500 (Thu, 20 Dec 2007) | 52 lines
  
  Change 20071220-ben-8 by ben at slim.local on 2007-12-20 12:42:09 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Make example canvases get their height from the example code
  
  New Features:
  
  Bugs Fixed: LPP-5207 (really, this time) change height of example code window from 200 to 400 pixels
  
  Technical Reviewer: iorio (pending)
  QA Reviewer: brynn (pending)
  
  Documentation:
  
  Two crucial changes here! First, our build file was set up wrong when it
  generated the intermediate developers/index.dbk. It has to put this file into
  docs/src/build/developers/index.dbk; it used to put it into
  docs/developers/index.dbk -- effectively losing all the delicious processing that
  had been done to it by the dbkpreprocessexamles.xsl worksheet. That delicious
  processing includes a step that determines the canvas width and height from the
  program listing itself.
  
  Second! The part of common-html.xsl that actually sends canvas parameters to
  Lz.swfEmbed(...) was only sending the first canvas parameter it found! This
  code... 
  
  <xsl:variable name="canvas-parameters"> 
     <xsl:if
  test="parameter[@role='canvas']"> 
          <xsl:value-of select="parameter[@role='canvas']"/> 
      </xsl:if> ... 
  </xsl:variable>
  
  ...actually only puts the first answer to the xpath query
  parameter[@role='canvas'] into the variable $canvas-parameters. This is an xsl
  subtlety that I don't understand, but it has something to do with how node-sets
  are coerced into strings when their value is taken. To fix this, I have added a
  for-each which explicitly concatenates the value of each canvas parameter, with a
  comma between them. This (thank goodness) inserts the correct canvas width and
  height parameters into the call to Lz.swfEmbed.
  
  Tests:
  Note the canvas height for example 34.1, basecomponent, is 260 pixels,
  as specified in the program listing: 
  http://localhost:8080/trunk/docs/developers/custom-components.html
  
  Note that the canvas height of the first two examples is 30 pixels,
  as specified in the program listing:
  http://localhost:8080/trunk/docs/reference/lz.button.html
.......
  r7649 | ben | 2007-12-21 00:17:26 -0500 (Fri, 21 Dec 2007) | 35 lines
  
  Change 20071220-ben-S by ben at slim.local on 2007-12-20 21:05:22 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Move chapters from contributor's guide into developer's guide
  
  New Features: Chapters in devguide on doc toolchain, source build, licenses
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Documentation:
  Several good chapters were hiding away in the contributors/ directory,
  never making it into the shipped documentation. This change moves
  the tasty chapters into the developer's guide, and adds them to 
  developers/index.dbk so they are included in the developer's
  guide. These chapters are mostly incomplete, but they contain
  useful information even so. 
  
  This change also adds an appendix listing all the components 
  of the distribution, and the associated licenses.
  
  This change also consolidates several sections of the 
  developer's guide which each had one chapter into a single
  section, which I've called "Advanced Topics." 
  
  Release Notes:
  
  Details:
      
  
  Tests:
.......
  r7655 | max | 2007-12-21 10:38:05 -0500 (Fri, 21 Dec 2007) | 24 lines
  
  Change 20071220-maxcarlson-X by maxcarlson at Roboto.local on 2007-12-20 13:13:36 PST
      in /Users/maxcarlson/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: UPDATED - Fix enable/disabling of delegates bound to lztimer
  
  New Features:
  
  Bugs Fixed: LPP-5302 - LzTimer ignores disabled events
  
  Technical Reviewer: promanik
  QA Reviewer: ptw
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details: Check if a context is deleted before executing the delegate.  Add more comments to keep track of inlining, fix inlining to match implementation of execute().  We need compiler inlining!!!
      
  
  Tests: smoketest and testcase in LPP-5302 passes.
.......
  r7661 | ben | 2007-12-21 18:53:46 -0500 (Fri, 21 Dec 2007) | 19 lines
  
  Change 20071221-ben-a by ben at slim.local on 2007-12-21 15:42:59 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Improvements to contributor-oriented chapters in devguide
  
  Documentation:
  Modified the "Source Build" chapter to be up to date for the
  4.1.x build, with no python and no jython required. Updated
  it with some of the more recent changes on the wiki. This chapter
  is now just about as good as 
  http://wiki.openlaszlo.org/SubversionBuildInstructions. 
  
  Gave each chapter an id, so the html chunks have nice filenames
  instead of just "ch55.html"
  
  Removed the completely empty chapter on release management.
.......
  r7663 | ben | 2007-12-22 00:32:44 -0500 (Sat, 22 Dec 2007) | 29 lines
  
  Change 20071221-ben-X by ben at slim.local on 2007-12-21 21:24:33 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Add explanation of first part of reference doc build
  
  Documentation:
  This checkin fills in the documentation toolchain chapter in the 
  developer's guide with an overview and then with a walkthrough of
  each of the code entry points into the reference build data flow,
  with examples of the relevant source and intermediate products. 
  
  I've also added two diagrams based on the doc-toolchain.graffle
  dataflow diagram; the first, doc_overview_simple.png, is a 
  much simpler (but less accurate) representation of the doctools. 
  The second, doc_reference_details.png, is a simplified magnification 
  of three strands of the reference guide workflow. 
  
  We're keeping the original, highly-detailed data flow diagram,
  of course. 
  
  Release Notes:
  
  Details:
      
  
  Tests:
.......
  r7668 | ben | 2007-12-25 18:26:07 -0500 (Tue, 25 Dec 2007) | 7 lines
  
  Change 20071225-ben-U by ben at slim.local on 2007-12-25 15:19:54 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: More discussion of the documentation toolchain
.......
  r7671 | ben | 2007-12-26 21:10:36 -0500 (Wed, 26 Dec 2007) | 24 lines
  
  Change 20071226-ben-7 by ben at slim.local on 2007-12-26 18:06:19 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Checkpointing more work on doctools explanatory chapter
  
  Documentation:
  
  Filled out a section about how js2doc intermediate files are
  transformed into docbook files. This is the second major phase
  of the documentation toolchain. (The remaining major phase is 
  docbook to html.) 
  
  A new diagram helps focus attention on this phase of the transformation.
  
  This checkin also includes some advice on how to learn and
  modify the documentation toolchain.
  
  This checkin also adds emphasis to fragments of the program
  listings. 
  
  Tests:
.......
  r7673 | ben | 2007-12-27 16:57:29 -0500 (Thu, 27 Dec 2007) | 11 lines
  
  Change 20071227-ben-y by ben at slim.local on 2007-12-27 13:55:42 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Additional content for the chapter describing the doctools
  
  Documentation:
  Added examples of many different id's and explained their structure. 
  Rearranged the js2doc2dbk section. 
.......
  r7675 | ben | 2007-12-27 23:04:34 -0500 (Thu, 27 Dec 2007) | 13 lines
  
  Change 20071227-ben-a by ben at slim.local on 2007-12-27 20:02:53 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Improve structure of doctools chapter
  
  Documentation:
  This change improves the structure of the doctools chapter,
  adds more diagrams, and cleans up the dataflow description to
  match the document structure. 
.......
  r7678 | ben | 2007-12-29 00:53:26 -0500 (Sat, 29 Dec 2007) | 12 lines
  
  Change 20071228-ben-o by ben at slim.local on 2007-12-28 21:50:31 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: doctools explanation: the ant build process, directory structure.
  
  Documentation:
  Added a diagram and explanation of how the ant build works and where
  the important directories are and what the ant properties are that
  match the actual directories. 
.......
  r7680 | ben | 2007-12-29 19:05:47 -0500 (Sat, 29 Dec 2007) | 14 lines
  
  Change 20071229-ben-U by ben at slim.local on 2007-12-29 15:52:35 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Added pointers to the documentation about the documentation
  
  Documentation:
  
  Lest the next documentation tool maintainer overlook the words
  of wisdom I am tucking away in the chapter about the doctools,
  I have inserted pointers to that documentation at the beginning
  of many of the key files of the doc build.
.......
  r7682 | ben | 2007-12-29 19:07:53 -0500 (Sat, 29 Dec 2007) | 11 lines
  
  Change 20071229-ben-x by ben at slim.local on 2007-12-29 16:06:12 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Improvements to visual look of documentation
  
  Documentation:
  Tweaked a few styles in the doc's CSS for a more 
  pleasing visual presentation. 
.......
  r7684 | ben | 2007-12-29 19:10:26 -0500 (Sat, 29 Dec 2007) | 14 lines
  
  Change 20071229-ben-r by ben at slim.local on 2007-12-29 16:08:09 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Added an image and some explanation about how the 
           developer's guide is built by ant. 
  
  Documentation:
  
  A new image at the bottom of the chapter shows the flow
  through ant tasks in the process of building the
  developer's guide. 
.......
  r7687 | ben | 2007-12-30 17:25:07 -0500 (Sun, 30 Dec 2007) | 42 lines
  
  Change 20071230-ben-C by ben at slim.local on 2007-12-30 14:06:08 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Much doctools work and work on the documentation of the doctools
  
  New Features: Chapter for the backwards transformation, from output to source
  
  Documentation:
  This change adds a new chapter describing the "backwards transformation,"
  looking at visual elements of the output reference pages, and showing
  how those elements came from docbook, and how those elements came from
  js2doc, and how those elements came from source. 
  
  The purpose of this chapter is to give a starting point for a developer
  who wants to change a particular thing, without having to snarf the
  entire doctools structure. 
  
  Release Notes:
  
  Details:
  docs/src/developers/doc-toolchain.dbk  
     moved backwards transformation into its own chapter
     
  docs/src/developers/doc-backwards-xform.dbk
     new chapter to describe backwards transformation
     
  docs/src/developers/index.dbk
     added new chapter to the developer's guide
  
  docs/src/build.xml    
      turned off draft mode
      
  docs/src/xsl/common-html.xsl
      took out debugging messages (just diagnostic, they didn't indicate a problem)
      
  docs/src/developers/images/reference*
      added new images with captures of a reference page and sections called out    
  
  Tests:
.......
  r7693 | ben | 2008-01-01 19:52:17 -0500 (Tue, 01 Jan 2008) | 43 lines
  
  Change 20080101-ben-w by ben at slim.local on 2008-01-01 16:43:46 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Fix misplaced comma in embedded examples
  
  New Features:
  
  Bugs Fixed:
  
  Technical Reviewer: (pending)
  QA Reviewer: max (pending)
  Doc Reviewer: (pending)
  
  Documentation:
  
  Max reported a bug due to a stray comma:
  http://labs.openlaszlo.org/trunk-nightly/docs/developers/tutorials/views-tutorial.html#
  
  is failing now, due to a stray comma in the embedSWF calls, e.g.
            Lz.swfEmbed({url: 'programs/views-tutorial-$1.lzx?lzt=swf', id: 'd0e6065SWF', history: false, width: 500,
        height: 300,
        });
  
  
  This change moves around where we generate commas in the canvas parameters when 
  generating a live example. It now looks like this: 
  
   Lz.swfEmbed({url: 'programs/views-tutorial-$1.lzx?lzt=swf', id: 'd0e6061SWF', history: false
  , width: 500
  , height: 300});
  
  Release Notes:
  
  Details:
      
  
  Tests:
  build the doc
  inspect the source of tutorials/views-tutorial.html
  note good comma-ness. 
.......
  r7695 | ben | 2008-01-01 21:30:47 -0500 (Tue, 01 Jan 2008) | 15 lines
  
  Change 20080101-ben-m by ben at slim.local on 2008-01-01 18:26:23 PST
      in /Users/ben/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Description of how to trace the reference page contents back to the source
  
  Documentation:
  Febrile quest to trace important sections of the output reference *back* 
  to the xsl templates, js2doc intermediates, and docbook intermediates from
  where they originate. 
  
  After the next build, this chapter will be available at: 
  http://labs.openlaszlo.org/trunk-nightly/docs/developers/doc-backwards.html
.......
  r7702 | ptw | 2008-01-02 15:09:38 -0500 (Wed, 02 Jan 2008) | 26 lines
  
  Change 20071220-ptw-4 by ptw at dueling-banjos.local on 2007-12-20 16:36:26 EST
      in /Users/ptw/OpenLaszlo/ringding-2
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Use modern class constructor syntax
  
  Bugs Fixed:
  LPP-5307 'Our class constructor/initializer don't match JS2'
  
  Technical Reviewer: dda at ddanderson.com (Message-Id: <347A6E41-4116-4AAE-BF9B-AFCE3377DA78 at ddanderson.com>)
  QA Reviewer: max at laszlosystems.com (pending)
  
  Details:
      CommonGenerator:  Output the initializer as a compiler function
      $lzsc$initizlize.  Translate super() calls to calls to
      super.$lzsc$initialize.
  
      Parser:  accept super() calls
  
      *: Rename initialize methods to the class name, use super() calls
       to invoke the superclass initializer.
  
  Tests:
      smokecheck, sample apps
.......
  r7717 | ptw | 2008-01-03 12:57:35 -0500 (Thu, 03 Jan 2008) | 24 lines
  
  Change 20080103-maxcarlson-H by maxcarlson at Roboto.lan on 2008-01-03 00:01:55 PST
      in /Users/maxcarlson/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Fix memory leaks for CSS-styled elements
  
  New Features:
  
  Bugs Fixed: LPP-5321 - Serious memory leak for CSS styled nodes
  
  Technical Reviewer: ptw
  QA Reviewer: mdemmon
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details: Attach style caches to the relevant nodes, instead of keeping global copies.  This way, they're destroyed along with the nodes.
      
  
  Tests: See LPP-5321.  /trunk/test/style/metasuite.lzx continues to pass.
.......



Property changes on: openlaszlo/branches/devildog
___________________________________________________________________
Name: svnmerge-integrated
   - /openlaszlo/branches/wafflecone:1-5746,5818-6068,6070-6205,6207-6213,6216-6265,6267-6368,6370-6431,6433-6450,6497 /openlaszlo/trunk:1-7497
   + /openlaszlo/branches/wafflecone:1-5746,5818-6068,6070-6205,6207-6213,6216-6265,6267-6368,6370-6431,6433-6450,6497 /openlaszlo/trunk:1-7718

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/Class.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/Class.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/Class.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /***
  * Classes for Javascript with Mixins
  *
- * @copyright Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.
+ * @copyright Copyright 2007, 2008 Laszlo Systems, Inc.  All Rights Reserved.
  * Use is subject to license terms.
  *
  * @access private
@@ -26,7 +26,7 @@
   */
 var Instance = function constructor () {
   this.constructor = arguments.callee
-  this.initialize.apply(this, arguments);
+  this.$lzsc$initialize.apply(this, arguments);
 };
 Instance.prototype.constructor = Instance; 
 Instance.prototype.__initialized = false;
@@ -134,7 +134,7 @@
 });
 
 /**
-  * Instance initialize method
+  * Instance $lzsc$initialize method
   *
   * Called by Instance constructor as the last operation on a new
   * instance of a class.  Arguments are the arguments that were passed
@@ -149,7 +149,7 @@
   *
   * @devnote The call to the default method is optimized away in class constructors
   */
-Instance.prototype.addProperty('initialize', function initialize () {});
+Instance.prototype.addProperty('$lzsc$initialize', function $lzsc$initialize () {});
 
 /**
   * Class initialize method
@@ -285,9 +285,9 @@
         this.validateClassStructure();
       }
       // Call the initializer if it is not the default
-      if (this.initialize !== Instance.prototype.initialize) {
+      if (this.$lzsc$initialize !== Instance.prototype.$lzsc$initialize) {
         // Debug.debug('Initializing', this);
-        this.initialize.apply(this, arguments);
+        this.$lzsc$initialize.apply(this, arguments);
       }
     };
     nc.constructor = this;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/LzFormatter.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/LzFormatter.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/LzFormatter.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -3,7 +3,7 @@
 /**
  * Formatted output
  *
- * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+ * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
  *            Use is subject to license terms.
  *
  * @access public
@@ -21,7 +21,7 @@
   var message = '';
   var length = 0;
 
-  function initialize (message) {
+  function LzMessage (message) {
     if (arguments.length > 0) {
       this.appendInternal('' + message, message);
     }

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/LzRuntime.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/LzRuntime.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/compiler/LzRuntime.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /* -*- mode: JavaScript; c-basic-offset: 2; -*- */
 
 /**
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access private
@@ -125,7 +125,7 @@
         var dwd = dw.document;
         var span = dwd.createElement('span');
         // IE does not display \n in white-space: pre, so we translate...
-        span.innerHTML = '<span style="white-space: pre">' + msg.split('\n').join('<br />') + '</span>';
+        span.innerHTML = '<span class="OUTPUT">' + msg.split('\n').join('<br />') + '</span>';
         dwd.body.appendChild(span);
         // Scroll to end
         span.scrollIntoView(false);

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzDictionary.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzDictionary.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzDictionary.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -3,7 +3,7 @@
   *
   * Operations are containsKey, get, put, putAll
   *
-  * @copyright Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2007, 2008 Laszlo Systems, Inc.  All Rights Reserved.
   * Use is subject to license terms.
   *
   * @todo 2006-05-22 ptw Needs proper iteration support
@@ -16,7 +16,7 @@
   class LzDictionary extends Instance {
     // If object is supplied, the elements of object will be added to
     // the dictionary
-    function initialize (object) {
+    function LzDictionary (object) {
       // have to hold entries in an object not self or our methods
       // appear as keys
       this.entries = new Object;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzNode.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzNode.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/LzNode.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -2,7 +2,7 @@
   * LzNode.lzs
   *
   *   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic LZX
@@ -47,11 +47,11 @@
   * @param Boolean instcall
   * @access private
   */
-function initialize ( parent , attrs , children , instcall ){
+function LzNode ( parent , attrs , children , instcall ){
         this.__LZUID = "__U" + ++LzNode.__UIDs;
         this.__LZdeferDelegates = true;
         var qpos = LzDelegate.__LZdelegatesQueue.length;
-        super.initialize.apply(this, arguments);
+        super();
 
         // Node node start
         if ($profile) {
@@ -306,6 +306,10 @@
 /** @access private */
 var __LZUID = null;
 /** @access private */
+var __LZPropertyCache = null;
+/** @access private */
+var __LZRuleCache = null;
+/** @access private */
 var __LZdelegates = null;
 
 /** @access private */
@@ -1296,7 +1300,7 @@
   * @access private
   */
 function __LZresolveRefs ( refs ){
-    //need to resolve init= before constraints...
+    // $once are applied before $always
     for ( var p in refs ){
         var rp = refs[ p ];
         var pp;
@@ -1321,18 +1325,17 @@
                 }
             }
             this.dataBindAttribute( p , pp );
-        } else if ( !('dependencies' in rp && rp.dependencies) ){
-            if (rp instanceof Function) {
-              rp.call(this);
-            }
+        } else if ((rp instanceof Function) &&
+                   // A function with no or null dependencies is a $once
+                   (! ('dependencies' in rp && rp.dependencies))) {
+            rp.call(this);
         }
     }
 
-    // Now resolve the $always values
+    // Functions with dependencies are $always
     for ( var p in refs ){
-        // The string check prevents a dhtml error
         var rp = refs[ p ];
-        if (rp instanceof Function && ('dependencies' in rp)) {
+        if ((rp instanceof Function) && ('dependencies' in rp)) {
             this.applyConstraint( p , rp , rp.dependencies.call(this) );
         }
     }
@@ -1774,7 +1777,7 @@
     if (this.__LZdeleted == true) {
         return;
     }
-
+    // To keep delegates from resurrecting us.  See LzDelegate#execute
     this.__LZdeleted = true;
 
     if (this.ondestroy.ready) this.ondestroy.sendEvent( this );

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/UserClass.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/UserClass.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/core/UserClass.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -2,7 +2,7 @@
   * UserClass.lzs 
   *
   * 
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic LZX
@@ -74,10 +74,10 @@
   */
 static var tagname = 'class';
 
-function initialize (parent, args) {
+function LzUserClass (parent, args) {
   #pragma "warnUndefinedReferences=true"
   // TODO: [2006-05-19 ptw] The original did not do this, should we?
-  // super.initialize.apply(this, arguments);
+  // super(parent, args);
   var classobj = args.initobj;
   var classname = classobj.name;
   var attrs = classobj.attrs;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataAttrBind.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataAttrBind.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataAttrBind.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access private
@@ -11,7 +11,7 @@
 /** @access private */
 class LzDataAttrBind extends LzDatapointer {
 
-function initialize ( ndpath , attr, path ){
+function LzDataAttrBind ( ndpath , attr, path ){
                             this.setAttr = attr;
                             this.pathparent = ndpath;
                             this.node = ndpath.immediateparent;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataElement.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataElement.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataElement.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,5 +1,5 @@
 /**
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -639,8 +639,8 @@
 class LzDataElement extends LzMiniNode inherits LzDataElementTrait, LzDataNode {
     // N.B.: LzDataElement is not an LzNode so has a different
     // initialize signature.
-    function initialize ( name , attributes , children ) {
-            super.initialize.apply(this, arguments);
+    function LzDataElement ( name , attributes , children ) {
+            super(name, attributes, children);
             this.nodeName = name;
             this.attributes = attributes;
             this.ownerDocument = this;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataRequest.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataRequest.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataRequest.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -46,8 +46,8 @@
     /** @lzxtype event */
     var onstatus = LzDeclaredEvent;
 
-    function initialize (requestor) { 
-        super.initialize.apply(this, arguments);
+    function LzDataRequest (requestor) { 
+        super(requestor);
         this.requestor = requestor; 
     } 
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataText.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataText.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzDataText.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -21,8 +21,8 @@
 /**
   * @param String text: The text that this node holds.
   */
-function initialize ( text ){
-    super.initialize.apply(this, arguments);
+function LzDataText ( text ){
+    super();
     this.data = text;
 }
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzParsedPath.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzParsedPath.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzParsedPath.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,401 +1,401 @@
-/**
-  *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
-  *            Use is subject to license terms.
-  *
-  * @access private
-  * @topic LFC
-  * @subtopic Data
-  */
-
-/**
-  * @access private
-  */
-class LzParsedPath {
-
-  /** 
-    * The xpath for this LzParsedPath
-    * 
-    * @access private
-    */
-  var path = null;
-  
-  /** 
-    * Array containing selector-operations for this LzParsedPath
-    * 
-    * @access private
-    */
-  var selectors = null;
-  
-  /** 
-    * Pointer to the dataset (if part of the path) otherwise null
-    * (currently only used for "new"-datasets, see deprecated message)
-    * 
-    * @access private
-    * @deprecated may lead to memory leaks (LPP-4214)
-    */
-  var context = null;
-  
-  /** 
-    * Name of the dataset (if part of the path)
-    * 
-    * @access private
-    */
-  var dsetname = null;
-  
-  /** 
-    * Name of the datasource (if part of the path)
-    * 
-    * @access private
-    */
-  var dsrcname = null;
-  
-  /** 
-    * Array containing the path to the local-dataset
-    * 
-    * @access private
-    */
-  var islocaldata = null;
-  
-  /* Parsing information */
-  
-  /** 
-    * One of: "nodeName", "__LZgetText", "serialize", "attributes" 
-    * or "attributes.xxx" with 'xxx' as an attribute-name
-    * 
-    * @access private
-    */
-  var operator = null;
-  
-  /** 
-    * One of: "position" or "last" 
-    * 
-    * @access private
-    */
-  var aggOperator = null;
-  
-  /** 
-    * null or 0
-    * 
-    * @access private
-    */
-  var operatorArgs = null;
-  
-  /** 
-    * true if terminal operator is a attribute-selector, otherwise false
-    * 
-    * @access private
-    */
-  var hasAttrOper = false;
-  
-  /** 
-    * true if path contains a attribute-predicate
-    * 
-    * @access private
-    */
-  var hasOpSelector = false;
-  
-  /** 
-    * true if path contains ".." or "//", otherwise false
-    * 
-    * @access private
-    */
-  var hasDotDot = false;
-  
-  /** 
-    * Return the context for this LzParsedPath
-    * Should be used instead of accessing directly the deprecated field context. 
-    *
-    * @access private
-    */
-  function getContext ( dp ) {
-      if (this.context != null) {
-          return this.context;
-      } else {
-          if (this.islocaldata != null) {
-              return dp.getLocalDataContext(this.islocaldata);
-          } else {
-              if (this.dsrcname != null) {
-                  return (canvas[ this.dsrcname ])[ this.dsetname ];
-              } else {
-                  if (this.dsetname != null) {
-                      return canvas.datasets[ this.dsetname ];
-                  }
-              }
-          }
-      }
-      return null;
-  }
-  
-  function initialize ( pa, node ){
-    //split context part
-    this.path = pa;
-    this.selectors = [];
-    var nowarn = false;
-
-    var sourceindex = pa.indexOf( ":/" );
-
-    //this.context = pointer to the dataset (if part of the path) otherwise null
-
-    if ( sourceindex > -1 ){
-        //we have a dset and possible dsource
-        var sourceparts = pa.substring( 0 , sourceindex ).split( ":" );
-        if ( sourceparts.length > 1 ){
-            var dsrc = LzParsedPath.trim( sourceparts[ 0 ] );
-            var dset = LzParsedPath.trim( sourceparts[ 1 ] );
-            if (dsrc == 'local') {
-                nowarn=true;
-                this.islocaldata = dset.split('.');
-            } else {
-                //we have a datasource and a dataset
-                nowarn = ((canvas[ dsrc ])[ dset ] != null);
-                this.dsrcname = dsrc;
-                this.dsetname = dset;
-            }
-        } else {
-            var name = LzParsedPath.trim( sourceparts[ 0 ] );
-            if ( name == "new" ){
-                //Debug.write( "setting to anondset" );
-                this.context = new AnonDatasetGenerator( this );
-        /*    } else if ( name == "localdata" ) {
-                this.context = node.getLocalDataContext();
-                Debug.write('found local dataset 2', this.context);
-                this.islocaldata = true; 
-        */
-            } else {
-                nowarn = (canvas.datasets[ name ] != null);
-                this.dsetname = name;
-            }
-        }
-        if (nowarn != true){
-            if ($debug) {
-                Debug.error( "couldn't find dataset for %w", pa );
-            }
-        }
-
-        var rest = pa.substring( sourceindex + 2 );
-    } else {
-        var rest = pa;
-    }
-
-    // Too simple - see lpp-737
-    // var nodes = rest.split( "/" );
-
-    var nodes = [];
-    var currnode = '';
-    var instring = false;
-    var escape = false;
-    for (var i = 0; i < rest.length; i++) {
-        var c = rest.charAt(i);
-        if (c == '\\' && escape == false) {
-            escape = true;
-            continue;
-        } else if (escape == true) {
-            escape = false;
-            currnode += c;
-            continue;
-        } else if (instring == false && c == "/") {
-            // only count slashes as new nodes if we're not inside a string 
-            // literal
-
-            nodes.push(currnode);
-            currnode = '';
-            continue;
-        } else if (c == "'") {
-            instring = instring ? false : true;   
-        }
-        currnode += c;
-    }
-    nodes.push(currnode);
-            
-
-    if (nodes != null) {
-        for ( var i = 0 ; i < nodes.length ; i++ ){
-            var cnode = LzParsedPath.trim( nodes[ i ] );
-
-            if ( i == nodes.length - 1 ){
-                //could be terminal operator...
-                if ( cnode.charAt( 0 ) == "@" ){
-                    //attribute
-                    this.hasAttrOper = true;
-                    if ( cnode.charAt(1) == "*" ){
-                        this.operator = "attributes";
-                    } else {
-                        this.operator = "attributes."  + 
-                            cnode.substring( 1, cnode.length );
-                    }
-                    continue;
-                } else if ( cnode.charAt( cnode.length -1 ) == ")" ){
-                    //name, text , serialize
-                    if ( cnode.indexOf( "last" ) > -1 ){
-                        this.aggOperator = "last";
-                    } else if ( cnode.indexOf( "position" ) > -1 ){
-                        this.aggOperator = "position";
-                    } else if ( cnode.indexOf( "name" ) > -1 ){
-                        this.operator = "nodeName";
-                    } else if ( cnode.indexOf( "text" ) > -1 ){
-                        this.operator = "__LZgetText";
-                        this.operatorArgs = 0;
-                    } else if ( cnode.indexOf( "serialize" ) > -1 ){
-                        this.operator = "serialize";
-                        this.operatorArgs = 0;
-                    } else {
-                        this.gotError( "Unknown operator: " + cnode );
-                    }
-                    continue;
-                } else if ( cnode == "" ){
-                    //this is a trailing slash -- it should be ignored
-                    continue;
-                }
-            }
-
-            //parse predicates
-            var preds = cnode.split( '[' );
-            var n = LzParsedPath.trim( preds[ 0 ] );
-            this.selectors.push ( n =="" ? "/" : n );
-
-            if ( n =="" || n==".." ){
-                this.hasDotDot = true;
-            }
-            if (preds != null) {
-                for ( var j = 1; j < preds.length ; j++ ){
-                    var pred = LzParsedPath.trim( preds[ j ] );
-                    pred = pred.substring( 0, pred.length-1);
-                    //Debug.write( 'predicate ' + pred );
-
-                    if ( LzParsedPath.trim ( pred ).charAt( 0 ) == '@'){
-                        //Debug.write( 'found predicate ' + pred ); 
-                        var attrpred = pred.split( '=' );
-                        var a;
-                        var tattr = attrpred[ 0 ].substring(1);
-
-                        if ( attrpred.length > 1 ){
-                            var aval = LzParsedPath.trim( attrpred[1] );
-                            aval = aval.substring( 1 , aval.length-1);
-                            a = { pred : 'attrval' ,
-                                  attr : LzParsedPath.trim( tattr ),
-                                  val :  LzParsedPath.trim( aval  )};
-                        } else {
-                            a = { pred : 'hasattr',
-                                  attr : LzParsedPath.trim( tattr )};
-                        }
-
-                        //Debug.write( a.pred , a.attr , a.val );
-                        this.selectors.push( a );
-                        this.hasOpSelector = true;
-                    } else {
-                        //we have an offset
-
-                        var a = pred.split("-");
-                        //Debug.write( 'offset ' + a );
-                        a[ 0 ] = LzParsedPath.trim( a[ 0 ] );
-
-
-                        if ( a[ 0 ] == "" ){
-                            a[ 0 ] = 1;
-                        }
-
-                        if ( a[ 1 ] != null ){
-                            a[ 1 ] = LzParsedPath.trim( a[ 1 ] );
-                        }
-
-                        if (  a[ 1 ] == "" ){
-                            a[ 1 ] = Infinity;
-                        } else if ( a.length == 1 ){
-                            a[ 1 ] = a [ 0 ];
-                        }
-
-                        a.pred = "range";
-                        this.selectors.push( a );
-                    } 
-                }
-            }
-        }
-    }
-        
-    //this.nodearray = an array of strings and offset pairs that represent the 
-    //slash-separated path for the datapath, with the dataset and operator 
-    //removed. The offset part of the pair can be:
-    //*null  if there is no offset given
-    //*int   if the offset is a single number
-    //*array if the offset is dash separated
-    
-    //this.operator = "t" , "n" , or "a" plus "." and the attribute name 
-    //text, name or attribute, respectively
-}
-
-/**
-  * @access private
-  */
-static function trim ( s ){
-    var st = 0;
-    var dotrim = false;
-    while( s.charAt( st ) == " " ){
-        st++;
-        dotrim = true;
-    }
-
-    var len = s.length - st;
-
-    while( s.charAt( st + len - 1 ) == " " ){
-        len--;
-        dotrim = true;
-    } 
-
-    return dotrim ? s.substr( st , len ) : s;
-}
-/**
-  * @access private
-  */
-function toString (  ){
-    return  "Parsed path for path: " + this.path;
-}
-
-/**
-  * @access private
-  */
-function debugWrite (  ){
-    if ($debug) {
-        Debug.write( this );
-        Debug.write( "  c:" + this.context + "|");
-        Debug.write( "  n:" + this.selectors.join('|') + "|");
-        Debug.write( "  d:" + this.operator + "|");
-        Debug.write( "  " );
-    }
-}
-
-} // End of LzParsedPath
-
-
-/**
-  * @access private
-  */
-class AnonDatasetGenerator {
-
-/**
-  * @access private
-  */
-function initialize  ( pp ){
-    this.pp = pp;
-}
-
-/**
-  * @access private
-  */
-function getContext (){
-    var d = new LzDataset( );
-    var dp = d.getPointer();
-    //start at 1 to skip '/'
-    if (this.pp.selectors != null) {
-        for ( var i = 0; i < this.pp.selectors.length; i++ ){
-            if ( this.pp.selectors[ i ] == "/" ) continue;
-            dp.addNode( this.pp.selectors[ i ] );
-            dp.selectChild();
-        }
-    }
-        
-    return d;
-}
-
-var noncontext = true;
-} // End of AnonDatasetGenerator
+/**
+  *
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
+  *            Use is subject to license terms.
+  *
+  * @access private
+  * @topic LFC
+  * @subtopic Data
+  */
+
+/**
+  * @access private
+  */
+class LzParsedPath {
+
+  /** 
+    * The xpath for this LzParsedPath
+    * 
+    * @access private
+    */
+  var path = null;
+  
+  /** 
+    * Array containing selector-operations for this LzParsedPath
+    * 
+    * @access private
+    */
+  var selectors = null;
+  
+  /** 
+    * Pointer to the dataset (if part of the path) otherwise null
+    * (currently only used for "new"-datasets, see deprecated message)
+    * 
+    * @access private
+    * @deprecated may lead to memory leaks (LPP-4214)
+    */
+  var context = null;
+  
+  /** 
+    * Name of the dataset (if part of the path)
+    * 
+    * @access private
+    */
+  var dsetname = null;
+  
+  /** 
+    * Name of the datasource (if part of the path)
+    * 
+    * @access private
+    */
+  var dsrcname = null;
+  
+  /** 
+    * Array containing the path to the local-dataset
+    * 
+    * @access private
+    */
+  var islocaldata = null;
+  
+  /* Parsing information */
+  
+  /** 
+    * One of: "nodeName", "__LZgetText", "serialize", "attributes" 
+    * or "attributes.xxx" with 'xxx' as an attribute-name
+    * 
+    * @access private
+    */
+  var operator = null;
+  
+  /** 
+    * One of: "position" or "last" 
+    * 
+    * @access private
+    */
+  var aggOperator = null;
+  
+  /** 
+    * null or 0
+    * 
+    * @access private
+    */
+  var operatorArgs = null;
+  
+  /** 
+    * true if terminal operator is a attribute-selector, otherwise false
+    * 
+    * @access private
+    */
+  var hasAttrOper = false;
+  
+  /** 
+    * true if path contains a attribute-predicate
+    * 
+    * @access private
+    */
+  var hasOpSelector = false;
+  
+  /** 
+    * true if path contains ".." or "//", otherwise false
+    * 
+    * @access private
+    */
+  var hasDotDot = false;
+  
+  /** 
+    * Return the context for this LzParsedPath
+    * Should be used instead of accessing directly the deprecated field context. 
+    *
+    * @access private
+    */
+  function getContext ( dp ) {
+      if (this.context != null) {
+          return this.context;
+      } else {
+          if (this.islocaldata != null) {
+              return dp.getLocalDataContext(this.islocaldata);
+          } else {
+              if (this.dsrcname != null) {
+                  return (canvas[ this.dsrcname ])[ this.dsetname ];
+              } else {
+                  if (this.dsetname != null) {
+                      return canvas.datasets[ this.dsetname ];
+                  }
+              }
+          }
+      }
+      return null;
+  }
+  
+  function LzParsedPath ( pa, node ){
+    //split context part
+    this.path = pa;
+    this.selectors = [];
+    var nowarn = false;
+
+    var sourceindex = pa.indexOf( ":/" );
+
+    //this.context = pointer to the dataset (if part of the path) otherwise null
+
+    if ( sourceindex > -1 ){
+        //we have a dset and possible dsource
+        var sourceparts = pa.substring( 0 , sourceindex ).split( ":" );
+        if ( sourceparts.length > 1 ){
+            var dsrc = LzParsedPath.trim( sourceparts[ 0 ] );
+            var dset = LzParsedPath.trim( sourceparts[ 1 ] );
+            if (dsrc == 'local') {
+                nowarn=true;
+                this.islocaldata = dset.split('.');
+            } else {
+                //we have a datasource and a dataset
+                nowarn = ((canvas[ dsrc ])[ dset ] != null);
+                this.dsrcname = dsrc;
+                this.dsetname = dset;
+            }
+        } else {
+            var name = LzParsedPath.trim( sourceparts[ 0 ] );
+            if ( name == "new" ){
+                //Debug.write( "setting to anondset" );
+                this.context = new AnonDatasetGenerator( this );
+        /*    } else if ( name == "localdata" ) {
+                this.context = node.getLocalDataContext();
+                Debug.write('found local dataset 2', this.context);
+                this.islocaldata = true; 
+        */
+            } else {
+                nowarn = (canvas.datasets[ name ] != null);
+                this.dsetname = name;
+            }
+        }
+        if (nowarn != true){
+            if ($debug) {
+                Debug.error( "couldn't find dataset for %w", pa );
+            }
+        }
+
+        var rest = pa.substring( sourceindex + 2 );
+    } else {
+        var rest = pa;
+    }
+
+    // Too simple - see lpp-737
+    // var nodes = rest.split( "/" );
+
+    var nodes = [];
+    var currnode = '';
+    var instring = false;
+    var escape = false;
+    for (var i = 0; i < rest.length; i++) {
+        var c = rest.charAt(i);
+        if (c == '\\' && escape == false) {
+            escape = true;
+            continue;
+        } else if (escape == true) {
+            escape = false;
+            currnode += c;
+            continue;
+        } else if (instring == false && c == "/") {
+            // only count slashes as new nodes if we're not inside a string 
+            // literal
+
+            nodes.push(currnode);
+            currnode = '';
+            continue;
+        } else if (c == "'") {
+            instring = instring ? false : true;   
+        }
+        currnode += c;
+    }
+    nodes.push(currnode);
+            
+
+    if (nodes != null) {
+        for ( var i = 0 ; i < nodes.length ; i++ ){
+            var cnode = LzParsedPath.trim( nodes[ i ] );
+
+            if ( i == nodes.length - 1 ){
+                //could be terminal operator...
+                if ( cnode.charAt( 0 ) == "@" ){
+                    //attribute
+                    this.hasAttrOper = true;
+                    if ( cnode.charAt(1) == "*" ){
+                        this.operator = "attributes";
+                    } else {
+                        this.operator = "attributes."  + 
+                            cnode.substring( 1, cnode.length );
+                    }
+                    continue;
+                } else if ( cnode.charAt( cnode.length -1 ) == ")" ){
+                    //name, text , serialize
+                    if ( cnode.indexOf( "last" ) > -1 ){
+                        this.aggOperator = "last";
+                    } else if ( cnode.indexOf( "position" ) > -1 ){
+                        this.aggOperator = "position";
+                    } else if ( cnode.indexOf( "name" ) > -1 ){
+                        this.operator = "nodeName";
+                    } else if ( cnode.indexOf( "text" ) > -1 ){
+                        this.operator = "__LZgetText";
+                        this.operatorArgs = 0;
+                    } else if ( cnode.indexOf( "serialize" ) > -1 ){
+                        this.operator = "serialize";
+                        this.operatorArgs = 0;
+                    } else {
+                        this.gotError( "Unknown operator: " + cnode );
+                    }
+                    continue;
+                } else if ( cnode == "" ){
+                    //this is a trailing slash -- it should be ignored
+                    continue;
+                }
+            }
+
+            //parse predicates
+            var preds = cnode.split( '[' );
+            var n = LzParsedPath.trim( preds[ 0 ] );
+            this.selectors.push ( n =="" ? "/" : n );
+
+            if ( n =="" || n==".." ){
+                this.hasDotDot = true;
+            }
+            if (preds != null) {
+                for ( var j = 1; j < preds.length ; j++ ){
+                    var pred = LzParsedPath.trim( preds[ j ] );
+                    pred = pred.substring( 0, pred.length-1);
+                    //Debug.write( 'predicate ' + pred );
+
+                    if ( LzParsedPath.trim ( pred ).charAt( 0 ) == '@'){
+                        //Debug.write( 'found predicate ' + pred ); 
+                        var attrpred = pred.split( '=' );
+                        var a;
+                        var tattr = attrpred[ 0 ].substring(1);
+
+                        if ( attrpred.length > 1 ){
+                            var aval = LzParsedPath.trim( attrpred[1] );
+                            aval = aval.substring( 1 , aval.length-1);
+                            a = { pred : 'attrval' ,
+                                  attr : LzParsedPath.trim( tattr ),
+                                  val :  LzParsedPath.trim( aval  )};
+                        } else {
+                            a = { pred : 'hasattr',
+                                  attr : LzParsedPath.trim( tattr )};
+                        }
+
+                        //Debug.write( a.pred , a.attr , a.val );
+                        this.selectors.push( a );
+                        this.hasOpSelector = true;
+                    } else {
+                        //we have an offset
+
+                        var a = pred.split("-");
+                        //Debug.write( 'offset ' + a );
+                        a[ 0 ] = LzParsedPath.trim( a[ 0 ] );
+
+
+                        if ( a[ 0 ] == "" ){
+                            a[ 0 ] = 1;
+                        }
+
+                        if ( a[ 1 ] != null ){
+                            a[ 1 ] = LzParsedPath.trim( a[ 1 ] );
+                        }
+
+                        if (  a[ 1 ] == "" ){
+                            a[ 1 ] = Infinity;
+                        } else if ( a.length == 1 ){
+                            a[ 1 ] = a [ 0 ];
+                        }
+
+                        a.pred = "range";
+                        this.selectors.push( a );
+                    } 
+                }
+            }
+        }
+    }
+        
+    //this.nodearray = an array of strings and offset pairs that represent the 
+    //slash-separated path for the datapath, with the dataset and operator 
+    //removed. The offset part of the pair can be:
+    //*null  if there is no offset given
+    //*int   if the offset is a single number
+    //*array if the offset is dash separated
+    
+    //this.operator = "t" , "n" , or "a" plus "." and the attribute name 
+    //text, name or attribute, respectively
+}
+
+/**
+  * @access private
+  */
+static function trim ( s ){
+    var st = 0;
+    var dotrim = false;
+    while( s.charAt( st ) == " " ){
+        st++;
+        dotrim = true;
+    }
+
+    var len = s.length - st;
+
+    while( s.charAt( st + len - 1 ) == " " ){
+        len--;
+        dotrim = true;
+    } 
+
+    return dotrim ? s.substr( st , len ) : s;
+}
+/**
+  * @access private
+  */
+function toString (  ){
+    return  "Parsed path for path: " + this.path;
+}
+
+/**
+  * @access private
+  */
+function debugWrite (  ){
+    if ($debug) {
+        Debug.write( this );
+        Debug.write( "  c:" + this.context + "|");
+        Debug.write( "  n:" + this.selectors.join('|') + "|");
+        Debug.write( "  d:" + this.operator + "|");
+        Debug.write( "  " );
+    }
+}
+
+} // End of LzParsedPath
+
+
+/**
+  * @access private
+  */
+class AnonDatasetGenerator {
+
+/**
+  * @access private
+  */
+function AnonDatasetGenerator  ( pp ){
+    this.pp = pp;
+}
+
+/**
+  * @access private
+  */
+function getContext (){
+    var d = new LzDataset( );
+    var dp = d.getPointer();
+    //start at 1 to skip '/'
+    if (this.pp.selectors != null) {
+        for ( var i = 0; i < this.pp.selectors.length; i++ ){
+            if ( this.pp.selectors[ i ] == "/" ) continue;
+            dp.addNode( this.pp.selectors[ i ] );
+            dp.selectChild();
+        }
+    }
+        
+    return d;
+}
+
+var noncontext = true;
+} // End of AnonDatasetGenerator

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzReplicationManager.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzReplicationManager.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/data/LzReplicationManager.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -596,7 +596,6 @@
   * @access private
   */
 function destroyClone ( v ) {
-    if (v.sprite) v.sprite.destroy(true);
     v.destroy();
 }
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/Library.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/Library.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/Library.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -9,7 +9,7 @@
   * In some runtimes the Debug object is subclassed for added
   * functionality by the component/debug library
   *
-  * @copyright Copyright 2001-2006 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access private
@@ -53,10 +53,11 @@
   #include "debugger/LzBacktrace.lzs"
   #include "debugger/LzTrace.lzs"
   #include "debugger/LzMonitor.lzs"
+  // Add memory tracing
+  #include "debugger/LzMemory.lzs"
   if ($as2) {
     // Order beyond here has not been thought about (yet)
     #include "debugger/platform/swf/LzRemote.as"
-    #include "debugger/platform/swf/LzMemory.as"
     #include "debugger/platform/swf/LzFlashRemote.as"
   }
   // N.B.: LzInit.as is loaded as the last thing in LaszloLibrary

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/LzMemory.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/LzMemory.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/LzMemory.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -2,15 +2,19 @@
 
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access private
   * @topic LZX
   * @subtopic Debugging
+  *
+  * @devnote [2007-12-08 ptw] Throughout this file the code inside `if
+  * ($as2) { } else` is a duplicate of the following `try` block and
+  * is only needed until the compiler can correctly compile `try` for
+  * $as2.  Once that happens, the $as2 blocks can be removed.
   */
 
-
 // Memory analysis tools for the debugger
 
 // Define some annotations
@@ -38,35 +42,89 @@
 Debug.leaks = [];
 // For debugging yourself
 Debug.debugTrace = false;
+Debug.loops = 0;
+Debug.loopCount = 0;
+Debug.loopElapsed = 0;
 
 /**
   * Mark an object
+  *
+  * @param o Object: the object
+  * @returns boolean: True unless the object could not be marked
+  * (indicates it is probably a primitive object that we cannot trace
+  * through)
+  *
   * @access private
   */
 Debug.mark = function (o) {
-  var annotation = this.annotation;
-  delete o[annotation.leaked];
-  o[annotation.marked] = this.markGeneration;
+  // We can't trace things that don't support hasOwnProperty
+  if ((! (o instanceof Object)) ||
+      (! ('hasOwnProperty' in o)) ||
+      (! (o.hasOwnProperty instanceof Function))) {
+    if (this.debugTrace) {
+      console.log('Not marking %s\n', o);
+    }
+    return false;
+  }
+  if ($as2) {
+    var annotation = this.annotation;
+    delete o[annotation.leaked];
+    o[annotation.marked] = this.markGeneration;
+  } else
+  try {
+    var annotation = this.annotation;
+    delete o[annotation.leaked];
+    o[annotation.marked] = this.markGeneration;
+  } catch (e) { return false };
+  return true;
 }
 
 /**
   * Is an object marked?
+  *
+  * @param o Object: the object
+  * @returns null|false|true: If the object has been marked in this
+  * generation, `true`; if the object has been marked, but not in this
+  * generation, `false`; if the object has never been marked, `null`.
+  * The latter distinction is used by the leak detector.
+  *
+  * @note Objects that do not support hasOwnProperty cannot be traced,
+  * so they are always considered marked.
+  *
   * @access private
   */
 Debug.isMarked = function (o) {
-  // Deleted movieclips have no prototype??  Whatever, don't trace
-  if ((! (o instanceof Object || o instanceof MovieClip)) ||
-      (! (o.hasOwnProperty) instanceof Function)) {
+  // We can't trace things that don't support hasOwnProperty
+  if ((! o instanceof Object) ||
+      (! ('hasOwnProperty' in o)) ||
+      (! (o.hasOwnProperty instanceof Function))) {
     if (this.debugTrace) {
-      Debug.write('Not tracing', o);
+      console.log('Not tracing %s\n', o);
     }
     return true;
   }
   var marked = this.annotation.marked;
-  if (! o.hasOwnProperty(marked)) {
-    return false;
-  }
-  return o[marked] == this.markGeneration;
+  // Be careful calling hasOwnProperty (it could be a method in a
+  // native prototype that will fail when called on the prototype
+  // itself).  If so, pretend the object is marked -- we can't trace
+  // any deeper
+  if ($as2) {
+    if (! o.hasOwnProperty(marked)) {
+      return null;
+    }
+    return o[marked] == this.markGeneration;
+  } else
+    try {
+      if (! o.hasOwnProperty(marked)) {
+        return null;
+      }
+      return o[marked] == this.markGeneration;
+    } catch (e) {
+      if (this.debugTrace) {
+        console.log('Not tracing %s\n', o);
+      }
+      return true;
+    }
 }
 
 /**
@@ -99,13 +157,15 @@
   * @access private
   */
 Debug.traceStep = function (steps, milliseconds) {
-  // Limit background processing so player doesn't abort us.  There
-  //seems to be a limit both on total time in an idle function and
-  //number of loop iterations (or backward branches?) in an idle function
-  if (arguments.length < 1) { steps = 500; }
-  if (arguments.length < 2) { milliseconds = 2000; }
+  // Limit background processing so player doesn't abort us.  The loop
+  // limit no longer seems to be necessary
+  if (arguments.length < 1) { steps = Infinity; }
+  // The setInterval is 1400ms (because we know scriptRunningSlowly
+  // defaults to 1500
+  if (arguments.length < 2) { milliseconds = 1300; }
   var loopStart = (new Date).getTime();
   var loopCount = 0;
+  var loopElapsed = 0;
   var os = this.obstack;
   var dopath = this.noteWhy || this.debugTrace;
   var annotation = this.annotation;
@@ -116,7 +176,7 @@
   var leaked = annotation.leaked;
 
   while ((loopCount++ < steps) &&
-         (((new Date).getTime() - loopStart) < milliseconds)) {
+         ((loopElapsed = ((new Date).getTime() - loopStart)) < milliseconds)) {
     // Clear the obstack of any objects we are done with
     while (os.length > 0 && os[0].length == 0) {
       // Done with this object
@@ -124,12 +184,16 @@
 
       // If it's the last object, we are done
       if (os.length == 0) {
-        Debug.format(' ... done!\n');
-        if (this.debugTrace) { 
-          Debug.write('Stopping:', Debugmc);
-        }
-        // Stop the clip that runs us
-        __LzDebugmc.stop();
+        // Stop the idle callback
+        clearInterval(this.backgroundTask)
+        this.loops++;
+        this.loopCount += loopCount;
+        this.loopElapsed += loopElapsed;
+        this.debug("%d loops @ %0.0d iterations, %0.2d milliseconds",
+                    this.loops,
+                    this.loopCount / this.loops,
+                    this.loopElapsed / this.loops)
+        this.format(' ... done!\n');
         // done
         return true;
       }
@@ -139,37 +203,33 @@
     // This is a breadth-first search
     var ose = os[0];
     var o = ose.pop();
+    var oo = o;
     var name = ose.pop();
-    var wasLeaked = false;
+    var wasMarked = this.isMarked(o);
+    var wasLeaked = (wasMarked === null);
 
+    if (o == global.NamedNodeMap.prototype) {
+      Debug.debug("wasMarked: %s, wasLeaked: %s", wasMarked, wasLeaked);
+      Debug.inspect(o);
+    }
+
     // Make sure we didn't already get here via another path
-    if (this.isMarked(o)) {
+    if (wasMarked) {
       continue;
     }
 
-    var enumerableSlots = [];
-    // Accumulate list of enumerable slots before annotating
-    for (var p in o) {
-      // attached movie clips don't show up as 'hasOwnProperty' (but
-      // hasOwnProperty is more accurate -- consider if an instance
-      // copies a prototype property)
-      if ((! o['__proto__']) ||
-          o.hasOwnProperty(p) ||
-          (o[p] !== o.__proto__[p])) {
-        enumerableSlots.push(p);
-      }
-    }
-
-    // If asked to find leaks, collect new objects
-    if (this.findLeaks) {
-      if ((! (o instanceof Object || o instanceof MovieClip)) ||
-          (! (o.hasOwnProperty) instanceof Function)) {
-        if (this.debugTrace) {
-          Debug.format('Not recording %w as leaked\n', o);
+    if ($as2) {
+      var enumerableSlots = [];
+      // Accumulate list of enumerable slots before annotating
+      for (var p in o) {
+        // attached movie clips don't show up as 'hasOwnProperty' (but
+        // hasOwnProperty is more accurate -- consider if an instance
+        // copies a prototype property)
+        if ((! o['__proto__']) ||
+            o.hasOwnProperty(p) ||
+            (o[p] !== o.__proto__[p])) {
+          enumerableSlots.push(p);
         }
-      } else if (! o.hasOwnProperty(marked)) {
-        wasLeaked = true;
-        this.leaks.push(o);
       }
     }
 
@@ -177,29 +237,50 @@
     // But only if asked to
     if (dopath) {
       var path = ose.path.concat(name);
-      o[why] = path.join('.');
+      if ($as2) {
+        // More compact than an Array
+        o[why] = path.join("\x01");
+      } else
+      try {
+        // More compact than an Array
+        o[why] = path.join("\x01");
+      } catch (e) {};
     }
 
+    if (o !== oo) {
+      Debug.debug("Annotating %s[%s] (%#w) caused allocation of %#w", path, name, oo, o);
+    }
+    // If asked to find leaks, collect new objects
+    if (this.findLeaks && wasLeaked) {
+      this.leaks.push(o);
+    }
+
+    // Annotate why this object is alive
     // Mark the object
-    this.mark(o);
+    if (! this.mark(o)) {
+      // Don't trace into objects we can't mark
+      continue;
+    }
 
-    // N.B.: Flash-specific hack to get at otherwise unenumerable
-    // properties.  This makes all properties enumerable.
-    //
-    // The first arg is the object to twiddle.  The second argument is
-    // a list of slots to twiddle on, or null for all slots.
-    // The 3rd arg is a bitmask of flags to set:
-    // 2^2 = unwritable
-    // 2^1 = undeletable
-    // 2^0 = unenumerable
-    // The 4th argument is a bitmask of flags to clear (as above).
-    // [Cf.,
-    // http://pt.withy.org/ptalk/archives/2005/08/fourth_and_bitz.html]
-    //
-    // So, make all the properties of this object enumerable
-    ASSetPropFlags(o, null, 0, 1);
-    // But not the annotations
-    ASSetPropFlags(o, this.allAnnotations, 1, 0);
+    if ($as2) {
+      // N.B.: Flash-specific hack to get at otherwise unenumerable
+      // properties.  This makes all properties enumerable.
+      //
+      // The first arg is the object to twiddle.  The second argument is
+      // a list of slots to twiddle on, or null for all slots.
+      // The 3rd arg is a bitmask of flags to set:
+      // 2^2 = unwritable
+      // 2^1 = undeletable
+      // 2^0 = unenumerable
+      // The 4th argument is a bitmask of flags to clear (as above).
+      // [Cf.,
+      // http://pt.withy.org/ptalk/archives/2005/08/fourth_and_bitz.html]
+      //
+      // So, make all the properties of this object enumerable
+      ASSetPropFlags(o, null, 0, 1);
+      // But not the annotations
+      ASSetPropFlags(o, this.allAnnotations, 1, 0);
+    }
 
     // Rough measure of size
     var obSize = 0;
@@ -213,27 +294,51 @@
       queuedSlots.ancestors = ancestors.concat();
       queuedSlots.ancestors.push(o);
     }
-    for (var p in o) {
-      // attached movie clips don't show up as 'hasOwnProperty' (but
-      // hasOwnProperty is more accurate -- consider if an instance
-      // copies a prototype property)
-      if ((! o['__proto__']) ||
-          o.hasOwnProperty(p) ||
-          (o[p] !== o.__proto__[p])) {
-        var v = o[p];
-        // Very rough estimate of size
-        obSize += 2;            // assume hashes are 50% full
-        if (typeof(v) == 'string') {
-          // Assume strings can be packed 4 chars/word
-          obSize += Math.ceil(v.length/4);
-        }
-        // Object weight is calculated below.
+    var ownProperties = [];
+    if ($as2) {
+      this.objectOwnProperties(o, ownProperties, ownProperties);
+    } else
+    try {
+      this.objectOwnProperties(o, ownProperties, ownProperties);
+    } catch (e) {};
+    for (var i = ownProperties.length - 1; i >= 0; i--) {
+      var p = ownProperties[i];
+      var v = o[p];
+      // Very rough estimate of size
+      obSize += 2;            // assume hashes are 50% full
+      if (typeof(v) == 'string') {
+        // Assume strings can be packed 4 chars/word
+        obSize += Math.ceil(v.length/4);
+      }
+      // Object weight is calculated below.
 
-        // Optimization, skip non-objects and objects already marked
-        if ((v instanceof Object || v instanceof MovieClip) && (! this.isMarked(v))) {
-          queuedSlots.push(p, v);
+      if (v instanceof Object) {
+        if (v !== o[p]) {
+          // Debug.debug("Accessing %s[%s] (%#w) caused allocation of %#w", o, p, v, o[p]);
+        } else {
+          try {
+            v[size] = 0;
+            if (v !== o[p]) {
+              Debug.debug("Mutating %s[%s] (%#w) caused allocation of %#w", o, p, v, o[p]);
+            }
+          } catch (e) {
+            Debug.debug("Mutating %s[%s] (%#w) caused %#w", o, p, v, e);
+            v = null;
+          }
         }
       }
+      // The order of these tests is important for efficiency
+      if (
+          // Optimization: don't trace non-objects
+          (v instanceof Object) &&
+          // Correctness:  don't trace wrapper objects that are consed
+          // on each access
+          (v === o[p]) &&
+          // Optimization: don't trace objects that have already been marked
+          (! this.isMarked(v))
+         ) {
+        queuedSlots.push(p, v);
+      }
     }
 
     // Annotate size
@@ -258,8 +363,8 @@
             if (ai.hasOwnProperty(leaked)) {
               if (this.debugTrace) {
                 if (o[why].indexOf(ai[why]) != 0) {
-                  Debug.format("%w(%s) +> %w(%s)\n", o, o[why], ai, ai[why]);
-                  Debug.format("%w[%d]\n", ancestors, i);
+                  console.log("%w(%s) +> %w(%s)\n", o, o[why], ai, ai[why]);
+                  console.log("%w[%d]\n", ancestors, i);
                 }
               }
               ai[leaked] += obSize;
@@ -269,10 +374,12 @@
       }
     }
 
-    // Reset the enumerability
-    // Make everything unenumerable, and then expose your saved list
-    ASSetPropFlags(o, null, 1, 0);
-    ASSetPropFlags(o, enumerableSlots, 0, 1);
+    if ($as2) {
+      // Reset the enumerability
+      // Make everything unenumerable, and then expose your saved list
+      ASSetPropFlags(o, null, 1, 0);
+      ASSetPropFlags(o, enumerableSlots, 0, 1);
+    }
 
     // Queue the slots
     if (queuedSlots.length) {
@@ -280,6 +387,9 @@
     }
   }
 
+  this.loops++;
+  this.loopCount += loopCount;
+  this.loopElapsed += loopElapsed;
   // not done
   return false;
 }
@@ -301,6 +411,7 @@
   }
   // Start a new generation
   this.markGeneration++;
+  this.loops = this.loopCount = this.loopElapsed = 0;
   // Set flags
   this.findLeaks = findLeaks;
   if (findLeaks) {
@@ -310,17 +421,26 @@
   }
   this.noteWhy = noteWhy;
   // Don't trace self
-  for (var t = this; t !== Object.prototype; t = t['__proto__']) {
+  for (var t = this; t && (t !== Object.prototype); ) {
     this.mark(t);
+    // Cf, objectOwnProperties
+    // Use typeof == 'object' rather than instanceof Object for native prototypes
+    t = (('__proto__' in t && (typeof t.__proto__ == 'object')) ? t.__proto__ :
+         (('constructor' in t && (typeof t.constructor.prototype == 'object')) ? t.constructor.prototype : null));
+
   }
-  // Or this debugger cruft
-  if (global['_']) {
+  // Don't go 'up' above global
+  if ('frameElement' in global) {
+    this.mark(global.frameElement);
+  }
+  // Don't trace debugger history
+  if ('_' in global) {
     this.mark(global._);
   }
-  if (global['__']) {
+  if ('__' in global) {
     this.mark(global.__);
   }
-  if (global['___']) {
+  if ('___' in global) {
     this.mark(global.___);
   }
   this.mark(this.evalloader);
@@ -329,8 +449,9 @@
   osel.path = [];
   osel.ancestors = [];
   this.obstack[0] = osel;
-  // set the background task to trace
-  this.background = this.traceStep;
+
+  // Start the trace background task
+  this.backgroundTask = setInterval(function () { Debug.traceStep(); }, 1400);
 }
 
 /**
@@ -338,18 +459,13 @@
   * @access private
   */
 Debug.markObjects = function () {
-  this.initTrace();
-  // Start the debugger background task
-  // SWF-player specific
-  if (_root['__LzDebugmc']) {
-    __LzDebugmc.play();
+  if ($as2) {
   } else {
-    _root.attachMovie("__LZdebugger", "__LzDebugmc", 4794);
+    Debug.warn("Memory tracing is for experimental use only in this runtime.")
   }
-  if (this.debugTrace) {
-    Debug.write('Starting:', __LzDebugmc);
-  }
-  Debug.format('Marking objects... ');
+  Debug.format('Marking objects ... ');
+  // Output must come before init, so it is not seen as a leak
+  setTimeout(function () { Debug.initTrace(); }, 10);
 }
 
 /**
@@ -357,14 +473,14 @@
   * @access private
   */
 Debug.findNewObjects = function () {
-  this.initTrace(true, true);
-  // SWF-player specific
-  if (_root['__LzDebugmc']) {
-    __LzDebugmc.play();
-    if (this.debugTrace) {
-      Debug.write('Starting:', __LzDebugmc);
+  if (this.markGeneration > 0) {
+    if ($as2) {
+    } else {
+      Debug.warn("Memory tracing is for experimental use only in this runtime.")
     }
-    Debug.format('Finding new objects... ');
+    Debug.format('Finding new objects ... ');
+    // Output must come before init, so it is not seen as a leak
+    setTimeout(function () { Debug.initTrace(true, true); }, 10);
   } else {
     Debug.error('Call %w first', Debug.markObjects);
   }
@@ -375,24 +491,40 @@
  * A leak descriptor
  */
 class __LzLeak {
-  var obj = null;
+  var obj = void 0;
   var path = '';
-  var parent = null
+  var parent = void 0;
   var property = '';
   var leaked = 0;
 
-  function initialize (o) {
+  function __LzLeak (o) {
+    super();
     var annotations = Debug.annotation;
     var why = annotations.why;
     var leaked = annotations.leaked;
     this.obj = o;
     if (o && (why in o) && (leaked in o)) {
-      var path = o[why];
-      var lastdot = path.lastIndexOf('.');
-      this.path = path.substring(0, lastdot);
-      this.parent = eval(this.path);
-      this.property = path.substring(lastdot + 1, path.length);
-      this.leaked = o[leaked];
+      var path = o[why].split("\x01");
+      this.property = path.pop();
+      // Make pretty
+      this.path = path.join(".");
+      if ($as2) {
+        var p = eval(path[0]);
+        var pl = path.length;
+        for (var i = 1; i < pl; i++) {
+          p = p[path[i]];
+        }
+        this.parent = p;
+      } else
+      try {
+        var p = eval(path[0]);
+        var pl = path.length;
+        for (var i = 1; i < pl; i++) {
+          p = p[path[i]];
+        }
+        this.parent = p;
+      } catch (e) {};
+      this.leaked = Number(o[leaked]);
     }
   }
 
@@ -402,7 +534,7 @@
    */
   function toString () {
     if (this.obj) {
-      return Debug.formatToString("%=s.%s: (\xa3%d) %0.32#w", this.parent, this.path, this.property, this.leaked, this.obj);
+      return Debug.formatToString("%=s.%s: (\xa3%d) %0.48#w", this['parent'], this.path, this.property, this.leaked, this['obj']);
     } else {
       return '' + this.obj;
     }
@@ -419,7 +551,8 @@
 
   var sort = Array.prototype.sort;
 
-  function initialize () {
+  function __LzLeaks () {
+    super();
     var l = Debug.leaks;
     var ll = l.length;
     var annotations = Debug.annotation;
@@ -428,54 +561,87 @@
     var leaked = '_dbg_check';
 
     // Sort leaks according to path
-    l.sort(function (a, b) { 
-        var an = a[why];
-        var bn = b[why];
-        return (an > bn) - (an < bn);
+    l.sort(function (a, b) {
+        try {
+          var an = a[why];
+          var bn = b[why];
+          return (an > bn) - (an < bn);
+        } catch (e) {
+          return -1;
+        }
       });
 
     // Merge leaks under the same path
     this.length = 0;
     for (var i = 0; i < ll; i = j) {
-      var p = l[i];
-      p[leaked] = p[size];
       var j = i + 1;
-      var pn = p[why];
-      if (typeof(pn) != 'undefined') {
-        while (j < ll) {
-          var c = l[j];
-          var cn = c[why];
-          if (typeof(cn) != 'undefined') {
-            if (cn.indexOf(pn) == 0) {
-              // Don't count loops
-              if (c !== p) {
-                p[leaked] += c[size];
-              } else {
-                if (Debug.debugTrace) {
-                  Debug.format('%s is %s\n', pn, cn);
+      if ($as2) {
+        var p = l[i];
+        p[leaked] = p[size];
+        var pn = p[why];
+        if (typeof(pn) != 'undefined') {
+          while (j < ll) {
+            var c = l[j];
+            var cn = c[why];
+            if (typeof(cn) != 'undefined') {
+              if (cn.indexOf(pn) == 0) {
+                // Don't count loops
+                if (c !== p) {
+                  p[leaked] += c[size];
+                } else {
+                  if (Debug.debugTrace) {
+                    console.log('%s is %s\n', pn, cn);
+                  }
                 }
+                j++;
+                continue;
               }
-              j++;
-              continue;
             }
+            break;
           }
-          break;
         }
-      }
-      this[this.length++] = new __LzLeak(p);
+        this[this.length++] = new __LzLeak(p);
+      } else
+      try {
+        var p = l[i];
+        p[leaked] = p[size];
+        var pn = p[why];
+        if (typeof(pn) != 'undefined') {
+          while (j < ll) {
+            var c = l[j];
+            var cn = c[why];
+            if (typeof(cn) != 'undefined') {
+              if (cn.indexOf(pn) == 0) {
+                // Don't count loops
+                if (c !== p) {
+                  p[leaked] += c[size];
+                } else {
+                  if (Debug.debugTrace) {
+                    console.log('%s is %s\n', pn, cn);
+                  }
+                }
+                j++;
+                continue;
+              }
+            }
+            break;
+          }
+        }
+        this[this.length++] = new __LzLeak(p);
+      } catch (e) {j++};
     }
   }
 
-
   function _dbg_name () {
     var leakage = 0;
-    for (var i in this) {
-      var s = this[i].leaked;
+    var n = this.length;
+    for (var i = n - 1; i >=0; i--) {
+      var s = this[i]['leaked'];
       if (! isNaN(s)) {
         leakage += s;
       }
     }
-    return leakage + ' smoots';
+    return Debug.formatToString("%d smoots [%d objects @ ~%0.0d smoots each]", leakage, n, leakage / n);
   }
 }
 
@@ -486,12 +652,17 @@
   * @access private
   */
 Debug.whyAlive = function (top) {
+  if ($as2) {
+  } else {
+    Debug.warn("Memory tracing is for experimental use only in this runtime.")
+  }
   switch (arguments.length) {
     case 0:
       top = 10;
   }
   if (this['leaks']) {
     var l = new __LzLeaks();
+    var ll = l.length;
 
     // Sort the largest to the top
     l.sort(function (a, b) { 
@@ -500,11 +671,19 @@
         return (al < bl) - (al > bl); });
 
     // Output the top leaks
+    Debug.format("%w:\n", l);
+    if (top > ll) { top = ll; }
     for (var i = 0; i < top; i++) {
       Debug.format("%w\n", l[i].toString());
     }
-    if (top < l.length) {
-      Debug.write('...');
+    if (top < ll) {
+      var rest = 0;
+      var n = ll - i;
+      for (; i < ll; i++) {
+        var lil = l[i].leaked;
+        if (! isNaN(lil)) { rest += lil; }
+      }
+      Debug.format("%=s [%d more @ ~%0.0d smoots each]", l, '...', n, rest/n);
     }
 
     // Return the data for inspection

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/platform/dhtml/kernel.js
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/platform/dhtml/kernel.js	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/platform/dhtml/kernel.js	2008-01-04 16:20:15 UTC (rev 7726)
@@ -3,7 +3,7 @@
 /**
   * Runtime support for Debug
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -11,12 +11,25 @@
   * @subtopic Debugging
   */
 
+/** The HTML debug window
+  * @access private
+  */
+Debug.DebugWindow = null;
+
 /**
   * @access private
   * Instantiates an instance of the user Debugger window
   * Called last thing by the compiler when the app is completely loaded.
   */
 Debug.makeDebugWindow = function () {
+  // The application and debugger are sibling iframes in the
+  // dhtml embedding.
+  try {
+    this.DebugWindow = window.parent.frames['LaszloDebugger'];
+  } catch (e) {
+    // But not in Rhino
+  };
+
   // Name all global singletons
   var module = $modules.lz;
   var idp = new RegExp('^[_$\\w\\d]+$');
@@ -50,43 +63,27 @@
       }
     }
   }
-  // Nothing else to do for DHTML, since the Debugger window is done
-  // in HTML and is always available (see below).
 }
 
-/** The HTML debug window
-  * @access private
-  */
-Debug.DebugWindow = null;
-
 /**
   * @access private
   */
 Debug.clear = function () {
   var dw = this.DebugWindow;
-  if (! dw) {
-    // The application and debugger are sibling iframes in the
-    // embedding.
-    dw = this.DebugWindow = window.parent.frames['LaszloDebugger'];
-  }
   dw.document.body.innerHTML = '';
-}
+};
 
+
 /**
   * @access private
   */
 Debug.addHTMLText = function (str) {
   var dw = this.DebugWindow;
-  if (! dw) {
-    // The application and debugger are sibling iframes in the
-    // embedding.
-    dw = this.DebugWindow = window.parent.frames['LaszloDebugger'];
-  }
   var dwd = dw.document;
   var span = dwd.createElement('span');
   var dwdb = dwd.body;
   // IE does not display \n in white-space: pre, so we translate...
-  span.innerHTML = '<span style="white-space: pre">' + str.split('\n').join('<br />') + '</span>';
+  span.innerHTML = '<span class="OUTPUT">' + str.split('\n').join('<br />') + '</span>';
   dwdb.appendChild(span);
   // Duplicated from __write, for direct calls to this
   this.atFreshLine = (str.charAt(str.length-1) == '\n');

Deleted: openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/platform/swf/LzMemory.as

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/events/LaszloEvents.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/events/LaszloEvents.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/events/LaszloEvents.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @affects lzevent lzdelegate
@@ -32,8 +32,8 @@
   * @param String eventName: Optional, but required if eventSender is used; The name
   * of the event to register the new delegate for.
   */  
-function initialize (context, functionName, eventSender, eventName) {
-  super.initialize.apply(this, arguments);
+function LzDelegate (context, functionName, eventSender, eventName) {
+  super();
   // too expensive to leave on all the time
 //     if ($debug) {
 //         this._dbg_created = Debug.backtrace();
@@ -87,8 +87,9 @@
     // 'resurrect' the deleted view, causing a memory leak
     // Usually this is because a deleted view has idle or timer events
     // still registered.
+    // inlined in LzDelegate.sendEvent(), __LZdrainDelegatesQueue(), and LzTimer.addTimer(); 
     var context = this.c;
-    if (context) {
+    if (this.enabled && context) {
         if (context['__LZdeleted']) { 
             return;
         }
@@ -206,17 +207,31 @@
     var evq = this.__LZdelegatesQueue;
     var n = evq.length;
     var i = pos;
-    while (i < n) {
-      var d = evq[i];
-      var sd = evq[i+1];
-      /*
-      if ($debug) {
-        Debug.debug("Deferred %w.execute(%w)", d, sd);
+    if (i < n) {
+      var calledDelegates = new Array;
+      var lockedEvents = new Array;
+      while (i < n) {
+        var e = evq[i];
+        var d = evq[i+1];
+        var sd = evq[i+2];
+        // Mimic sendEvent which prohibits events and delegates from
+        // recursing
+        e.locked = true;
+        lockedEvents.push(e);
+        if (! d.event_called) {
+          d.event_called = true; //this delegate has been called
+          calledDelegates.push( d );
+          // d.execute( sd ); inlined
+          if (d.c && ! d.c.__LZdeleted && d.c[d.f]) d.c[d.f]( sd );
+        }
+        i+=3;
       }
-      */
-      // d.execute( sd ); inlined
-      if (d.c[d.f]) d.c[d.f]( sd );
-      i+=2;
+      while (d = calledDelegates.pop()) {
+        d.event_called = false;
+      }
+      while (e = lockedEvents.pop()) {
+        e.locked = false;
+      }
     }
     evq.length = pos;
   }
@@ -340,8 +355,8 @@
   *  @param Object eventSender: The owner of this event
   *  @param String eventName: The name of this event.
   */
-function initialize ( eventSender , eventName , d ){
-    super.initialize.apply(this, arguments);
+function LzEvent ( eventSender , eventName , d ){
+    super();
 
     var _evs = eventSender._events;
     if (_evs == null ){
@@ -431,10 +446,10 @@
             // properly managed
             if (d.enabled && d.c) {
                 if (d.c.__LZdeferDelegates) {
-                    evq.push(d, sd);
+                  evq.push(this, d, sd);
                 } else {
                   // d.execute( sd ); inlined
-                  if (d.c[d.f]) d.c[d.f]( sd );
+                  if (d.c && ! d.c.__LZdeleted && d.c[d.f]) d.c[d.f]( sd );
                 }
             }
         }

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/helpers/LzFont.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/helpers/LzFont.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/helpers/LzFont.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @affects lzfont
@@ -362,8 +362,8 @@
   */
 var rsbtable;
 
-function initialize ( fontobject , attrs , style ){
-    super.initialize.apply(this, arguments);
+function LzFont ( fontobject , attrs , style ){
+    super();
     this.name = fontobject.name;
 
     this.style = style;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/LzLibraryCleanup.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/LzLibraryCleanup.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/LzLibraryCleanup.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzLibraryCleanup.as
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -19,9 +19,9 @@
     static var tagname = '__libraryloadercomplete';
 
 
-    function initialize ( owner , args ) {
+    function LzLibraryCleanup ( owner , args ) {
         //this.callInherited( "constructor", arguments.callee ,owner ,args );
-        super.initialize.apply(this, arguments);
+        super(owner, args);
         var lib = LzLibrary.findLibrary(args.libname);
         lib.loading = false;
         if (lib.onload.ready) lib.onload.sendEvent(true);

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzContextMenu.js
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzContextMenu.js	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzContextMenu.js	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -19,7 +19,7 @@
   */
 class LzContextMenu extends LzNode {
 
-function initialize(del) {
+function LzContextMenu (del) {
     // set callback for "oncontextmenu" event
     this.__LZmousedowndel = new LzDelegate( this , "__hide");
     this.items = [];
@@ -165,7 +165,7 @@
   */
 class LzContextMenuItem extends LzNode {
 
-function initialize (title, del) {
+function LzContextMenuItem (title, del) {
     this.cmenuitem = {visible: true, enabled: true, separatorBefore: false, caption: title};
     this.setDelegate(del);
 }; // End of LzContextMenuItem

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzInputTextSprite.js
   *
-  * @copyright Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -231,7 +231,7 @@
 }
 
 LzInputTextSprite.prototype.__textEvent = function ( e, eventname ){
-    if (this.destroyed == true) return;
+    if (this.__LZdeleted == true) return;
     var keycode = e ? e.keyCode : event.keyCode;
     if (eventname == 'onfocus' || eventname == 'onmousedown') {
         if (eventname == 'onfocus') {
@@ -284,7 +284,7 @@
     this.__LzInputDiv.maxLength = val;    
 }
 
-LzInputTextSprite.prototype.select = function (start, end){
+LzInputTextSprite.prototype.select = function (){
     this._cancelblur = true;
     this.__show();
     this.__LzInputDiv.focus();
@@ -295,8 +295,254 @@
     //Debug.write('select', this.uid, LzKeyboardKernel.__cancelKeys);
 }
 
-LzInputTextSprite.prototype.setSelection = LzInputTextSprite.prototype.select;
+LzInputTextSprite.prototype.setSelection = function (start, end){
+    if (end == null) {
+        end = start;
+    }
+    this._cancelblur = true;
+    this.__show();
+    LzInputTextSprite.__lastfocus = this;
 
+    if (this.quirks['text_selection_use_range']) {
+        var range = this.__LzInputDiv.createTextRange(); 
+
+        // look for leading \r\n
+        var val = this.__LzInputDiv.value;
+
+        if (start > end){
+            var st = start;
+            start = end;
+            end = st;
+        }
+
+        if(this.multiline) { 
+            var offset = 0;
+            // account for leading \r\n
+            var startcounter = 0;
+            while (offset < start) {
+                offset = val.indexOf('\r\n', offset + 2); 
+                if (offset == -1) break;
+                startcounter++;
+            }
+            var midcounter = 0;
+            while (offset < end) {
+                offset = val.indexOf('\r\n', offset + 2); 
+                if (offset == -1) break;
+                midcounter++;
+            }
+            var endcounter = 0;
+            while (offset < val.length) {
+                offset = val.indexOf('\r\n', offset + 2); 
+                if (offset == -1) break;
+                endcounter++;
+            }
+
+            var tl = range.text.length;
+            var st = start;
+            var ed = end - val.length + startcounter + midcounter + endcounter + 1;
+
+            //if (endcounter) endcounter += startcounter;
+            //alert (startcounter + ', ' + midcounter + ', ' + endcounter + ', ' + st + ', ' + ed);
+        } else {
+            var st = start;
+            var ed = end - range.text.length;
+        }
+
+        range.moveStart("character", st);
+        range.moveEnd("character", ed);
+        range.select();
+        //this.__LzInputDiv.range = range;
+        //setTimeout('LzInputTextSprite.__lastfocus.__LzInputDiv.range.select()', 50);
+        //this.__LzInputDiv.focus(); 
+    } else {
+        this.__LzInputDiv.setSelectionRange(start, end);
+    }     
+    this.__LzInputDiv.focus();
+
+    if (window['LzKeyboardKernel']) LzKeyboardKernel.__cancelKeys = false;
+}
+
+LzInputTextSprite.prototype.getSelectionPosition = function (){
+    if (! this.__shown || this.disabled == true) return -1;
+    if (this.quirks['text_selection_use_range']) {
+        if (this.multiline) {
+            var p = this._getTextareaSelection();
+        } else {
+            var p = this._getTextSelection();
+        }
+
+        if (p) {
+            return p.start;
+        } else {
+            return -1;
+        }
+    } else {
+        return this.__LzInputDiv.selectionStart;
+    }
+}
+
+LzInputTextSprite.prototype.getSelectionSize = function (){
+    if (! this.__shown || this.disabled == true) return -1;
+    if (this.quirks['text_selection_use_range']) {
+        if (this.multiline) {
+            var p = this._getTextareaSelection();
+        } else {
+            var p = this._getTextSelection();
+        }
+        if (p) {
+            return p.end - p.start;
+        } else {
+            return -1;
+        }
+    } else {
+        return this.__LzInputDiv.selectionEnd - this.__LzInputDiv.selectionStart;
+    }
+}
+
+if (LzSprite.prototype.quirks['text_selection_use_range']) {
+LzInputTextSprite.prototype._getTextSelection = function (){
+    this.__LzInputDiv.focus();
+
+    var range = document.selection.createRange();
+    var bookmark = range.getBookmark();
+
+    var originalContents = contents = this.__LzInputDiv.value;
+    do {
+        var marker = "~~~" + Math.random() + "~~~";
+    } while (contents.indexOf(marker) != -1)
+
+    var parent = range.parentElement();
+    if (parent == null || ! (parent.type == "text" || parent.type == "textarea")) {
+        return;
+    }
+    range.text = marker + range.text + marker;
+    contents = this.__LzInputDiv.value;
+
+    var result = {};
+    result.start = contents.indexOf(marker);
+    contents = contents.replace(marker, "");
+    result.end = contents.indexOf(marker);
+
+    this.__LzInputDiv.value = originalContents;
+    range.moveToBookmark(bookmark);
+    range.select();
+
+    return result;
+}
+
+LzInputTextSprite.prototype._getTextareaSelection = function (){
+    var textarea = this.__LzInputDiv; 
+    var selection_range = document.selection.createRange().duplicate();
+
+    if (selection_range.parentElement() == textarea) {    // Check that the selection is actually in our textarea
+    // Create three ranges, one containing all the text before the selection,
+    // one containing all the text in the selection (this already exists), and one containing all
+    // the text after the selection.
+    var before_range = document.body.createTextRange();
+    before_range.moveToElementText(textarea);                    // Selects all the text
+    before_range.setEndPoint("EndToStart", selection_range);     // Moves the end where we need it
+
+    var after_range = document.body.createTextRange();
+    after_range.moveToElementText(textarea);                     // Selects all the text
+    after_range.setEndPoint("StartToEnd", selection_range);      // Moves the start where we need it
+
+    var before_finished = false, selection_finished = false, after_finished = false;
+    var before_text, untrimmed_before_text, selection_text, untrimmed_selection_text, after_text, untrimmed_after_text;
+
+    // Load the text values we need to compare
+    before_text = untrimmed_before_text = before_range.text;
+    selection_text = untrimmed_selection_text = selection_range.text;
+    after_text = untrimmed_after_text = after_range.text;
+
+    // Check each range for trimmed newlines by shrinking the range by 1 character and seeing
+    // if the text property has changed.  If it has not changed then we know that IE has trimmed
+    // a \r\n from the end.
+    do {
+    if (!before_finished) {
+        if (before_range.compareEndPoints("StartToEnd", before_range) == 0) {
+            before_finished = true;
+        } else {
+            before_range.moveEnd("character", -1)
+            if (before_range.text == before_text) {
+                untrimmed_before_text += "\r\n";
+            } else {
+                before_finished = true;
+            }
+        }
+    }
+    if (!selection_finished) {
+        if (selection_range.compareEndPoints("StartToEnd", selection_range) == 0) {
+            selection_finished = true;
+        } else {
+            selection_range.moveEnd("character", -1)
+            if (selection_range.text == selection_text) {
+                untrimmed_selection_text += "\r\n";
+            } else {
+                selection_finished = true;
+            }
+        }
+    }
+    if (!after_finished) {
+        if (after_range.compareEndPoints("StartToEnd", after_range) == 0) {
+            after_finished = true;
+        } else {
+            after_range.moveEnd("character", -1)
+            if (after_range.text == after_text) {
+                untrimmed_after_text += "\r\n";
+            } else {
+                after_finished = true;
+            }
+        }
+    }
+
+    } while ((!before_finished || !selection_finished || !after_finished));
+
+    // Untrimmed success test to make sure our results match what is actually in the textarea
+    // This can be removed once you're confident it's working correctly
+    var untrimmed_text = untrimmed_before_text + untrimmed_selection_text + untrimmed_after_text;
+    var untrimmed_successful = false;
+    if (textarea.value == untrimmed_text) {
+    untrimmed_successful = true;
+    }
+    // ** END Untrimmed success test
+
+    var startPoint = untrimmed_before_text.length;
+    var endPoint = startPoint + untrimmed_selection_text.length;
+    var selected_text = untrimmed_selection_text;
+
+    //alert("Start Index: " + startPoint + "\nEnd Index: " + endPoint + "\nSelected Text\n'" + selected_text + "'");
+
+    // account for leading \r\n
+    var val = this.__LzInputDiv.value;
+    var offset = 0;
+    var startcounter = 0;
+    while (offset < startPoint) {
+        offset = val.indexOf('\r\n', offset + 2); 
+        if (offset == -1) break;
+        startcounter++;
+    }
+    var midcounter = 0;
+    while (offset < endPoint) {
+        offset = val.indexOf('\r\n', offset + 2); 
+        if (offset == -1) break;
+        midcounter++;
+    }
+    var endcounter = 0;
+    while (offset < val.length) {
+        offset = val.indexOf('\r\n', offset + 2); 
+        if (offset == -1) break;
+        endcounter++;
+    }
+
+    startPoint -= startcounter;
+    endPoint -= (midcounter + startcounter);
+
+    //Debug.write(startcounter + ', ' + midcounter + ', ' + endcounter + ', ' + startPoint + ', ' + endPoint);
+    return {start: startPoint, end: endPoint};
+    }
+}
+}
+
 LzInputTextSprite.prototype.deselect = function (){
     this._cancelfocus = true;
     this.__hide();

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzSprite.js
   *
-  * @copyright Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -225,6 +225,7 @@
     ,set_height_for_multiline_inputtext: false
     ,ie_opacity: false
     ,text_measurement_use_insertadjacenthtml: false
+    ,text_selection_use_range: false
 }
 
 LzSprite.prototype.capabilities = {
@@ -243,89 +244,92 @@
 LzSprite.prototype.__updateQuirks = function(){
     if (window['Lz'] && Lz.__BrowserDetect) {
         Lz.__BrowserDetect.init();
-        if (this.quirks['inner_html_strips_newlines'] == true) {
+        var quirks = this.quirks;
+
+        if (quirks['inner_html_strips_newlines'] == true) {
             LzSprite.prototype.inner_html_strips_newlines_re = RegExp('$', 'mg');
         }
 
         // Divs intercept clicks if physically placed on top of an element
         // that's not a parent. See LPP-2680.
         // off for now
-        //this.quirks['fix_clickable'] = true;
+        //quirks['fix_clickable'] = true;
         if (Lz.__BrowserDetect.isIE) {
             if (Lz.__BrowserDetect.version < 7) {
                 // Provide IE PNG/opacity support
-                this.quirks['ie_alpha_image_loader'] = true;
+                quirks['ie_alpha_image_loader'] = true;
             } else {
-                this.quirks['invisible_parent_image_sizing_fix'] = true;
+                quirks['invisible_parent_image_sizing_fix'] = true;
             }
 
-            this.quirks['ie_opacity'] = true;
+            quirks['ie_opacity'] = true;
 
             // IE DOM leak prevention
-            this.quirks['ie_leak_prevention'] = true;
+            quirks['ie_leak_prevention'] = true;
 
             // Use images to force click tree to work in IE
-            this.quirks['fix_ie_clickable'] = true;
+            quirks['fix_ie_clickable'] = true;
 
             // workaround for IE refusing to respect divs with small heights when
             // no image is attached
-            this.quirks['fix_ie_background_height'] = true;
+            quirks['fix_ie_background_height'] = true;
 
             // workaround for IE not supporting &apos; in innerHTML
-            this.quirks['inner_html_no_entity_apos'] = true;
+            quirks['inner_html_no_entity_apos'] = true;
 
             // workaround for IE not supporting clip in divs containing inputtext
-            this.quirks['inputtext_parents_cannot_contain_clip'] = true;
+            quirks['inputtext_parents_cannot_contain_clip'] = true;
 
             // flag for components (basefocusview for now) to minimize opacity changes
-            this.quirks['minimize_opacity_changes'] = true;
+            quirks['minimize_opacity_changes'] = true;
 
             // multiline inputtext height must be set directly - height: 100% does not work.  See LPP-4119
-            this.quirks['set_height_for_multiline_inputtext'] = true;
+            quirks['set_height_for_multiline_inputtext'] = true;
 
             // text size measurement uses insertAdjacentHTML()
-            this.quirks['text_measurement_use_insertadjacenthtml'] = true;
+            quirks['text_measurement_use_insertadjacenthtml'] = true;
+            quirks['text_selection_use_range'] = true;
         } else if (Lz.__BrowserDetect.isSafari) {
             // Fix bug in where if any parent of an image is hidden the size is 0
             // TODO: Tucker claims this is fixed in the latest version of webkit
-            this.quirks['invisible_parent_image_sizing_fix'] = true;
+            quirks['invisible_parent_image_sizing_fix'] = true;
 
             // Remap alt/option key also sends control since control-click shows context menu (see LPP-2584 - Lzpix: problem with multi-selecting images in Safari 2.0.4, dhtml)
-            this.quirks['alt_key_sends_control'] = true;
+            quirks['alt_key_sends_control'] = true;
 
             // Safari scrollHeight needs to subtract scrollbar height
-            this.quirks['safari_textarea_subtract_scrollbar_height'] = true;
+            quirks['safari_textarea_subtract_scrollbar_height'] = true;
 
             // Safari doesn't like clipped or placed input text fields.
-            this.quirks['safari_avoid_clip_position_input_text'] = true;
+            quirks['safari_avoid_clip_position_input_text'] = true;
             // Safari won't show canvas tags whose parent is display: none
-            this.quirks['safari_visibility_instead_of_display'] = true;
-            this.quirks['absolute_position_accounts_for_offset'] = true;
-            this.quirks['canvas_div_cannot_be_clipped'] = true;
+            quirks['safari_visibility_instead_of_display'] = true;
+            quirks['absolute_position_accounts_for_offset'] = true;
+            quirks['canvas_div_cannot_be_clipped'] = true;
             if (Lz.__BrowserDetect.version > 523.10) {
                 this.capabilities['rotation'] = true;
             }
         } else if (Lz.__BrowserDetect.isOpera) {
             // Fix bug in where if any parent of an image is hidden the size is 0
-            this.quirks['invisible_parent_image_sizing_fix'] = true;
-            this.quirks['no_cursor_colresize'] = true;
-            this.quirks['absolute_position_accounts_for_offset'] = true;
-            this.quirks['canvas_div_cannot_be_clipped'] = true;
+            quirks['invisible_parent_image_sizing_fix'] = true;
+            quirks['no_cursor_colresize'] = true;
+            quirks['absolute_position_accounts_for_offset'] = true;
+            quirks['canvas_div_cannot_be_clipped'] = true;
         } else if (Lz.__BrowserDetect.isFirefox && Lz.__BrowserDetect.version < 2) {
                 // see http://groups.google.ca/group/netscape.public.mozilla.dom/browse_thread/thread/821271ca11a1bdbf/46c87b49c026246f?lnk=st&q=+focus+nsIAutoCompletePopup+selectedIndex&rnum=1
-                this.quirks['firefox_autocomplete_bug'] = true;
+                quirks['firefox_autocomplete_bug'] = true;
             }
         }
 
-    if (this.quirks['safari_avoid_clip_position_input_text']) {
+    if (quirks['safari_avoid_clip_position_input_text']) {
         LzSprite.prototype.__defaultStyles.lzswfinputtext.marginTop = '-2px';
         LzSprite.prototype.__defaultStyles.lzswfinputtext.marginLeft = '-2px';
         LzSprite.prototype.__defaultStyles.lzswfinputtextmultiline.marginTop = '-2px';
         LzSprite.prototype.__defaultStyles.lzswfinputtextmultiline.marginLeft = '-2px';
     }
 
-    if (this.quirks['css_hide_canvas_during_init']) {
-        if (this.quirks['safari_visibility_instead_of_display']) {
+    if (quirks['css_hide_canvas_during_init']) {
+        if (quirks['safari_visibility_instead_of_display']) {
             LzSprite.prototype.__defaultStyles.lzcanvasdiv.visibility = 'hidden';
         } else {
             LzSprite.prototype.__defaultStyles.lzcanvasdiv.display = 'none';
@@ -333,7 +337,7 @@
         LzSprite.prototype.__defaultStyles.lzcanvasclickdiv.display = 'none';
     }
 
-    if (this.quirks['hand_pointer_for_clickable']) {
+    if (quirks['hand_pointer_for_clickable']) {
         LzSprite.prototype.__defaultStyles.lzclickdiv.cursor = 'pointer';
     }
 }
@@ -1178,16 +1182,22 @@
 LzSprite.prototype.predestroy = function() {
 }
 
-LzSprite.prototype.destroy = function(recursive) {
-    if (this.destroyed == true) return;
-    //alert('destroy' + this + ', recursive ' + recursive);
-    if (recursive) {
-        if (this.__children) {
-            for (var i = 0; i < this.__children.length; i++) {
-                this.__children[i].destroy(recursive);
-            }
+LzSprite.prototype.destroy = function() {
+    if (this.__LZdeleted == true) return;
+    // To keep delegates from resurrecting us.  See LzDelegate#execute
+    this.__LZdeleted = true;
+
+    // Remove from parent if the parent is not going to be GC-ed
+    if ((this.__parent) && (! this.__parent.__LZdeleted)) {
+      var pc = this.__parent.__children;
+      for (var i = pc.length - 1; i >= 0; i--) {
+        if (pc[i] === this) {
+          pc.splice(i, 1);
+          break;
         }
+      }
     }
+
     if (this.__ImgPool) this.__ImgPool.destroy();
     if (this.__LZimg) this.__discardElement(this.__LZimg);
     if (this.__LZclick) {
@@ -1217,7 +1227,6 @@
         this.__discardElement(this.__LZcanvas);
     }
     this.__ImgPool = null;
-    this.destroyed = true;
 }
 
 /**

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzTextSprite.js
   *
-  * @copyright Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -267,7 +267,11 @@
         this._styledirty = false;
     }
 
-    if (this._sizecache.counter > this.__sizecacheupperbound) this._sizecache = {counter: 0};
+    // Empty the cache when full, but do not reset the counter because
+    // IE holds onto the object.
+    if (this._sizecache.counter > 0 && this._sizecache.counter % this.__sizecacheupperbound == 0) {
+        this._sizecache = {counter: this._sizecache.counter};
+    }
     if (this._sizecache[style] == null) this._sizecache[style] = {};
 
     var root = document.getElementById('lzTextSizeCache');

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/svg/LzSprite.js
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/svg/LzSprite.js	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/svg/LzSprite.js	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzSprite.js
   *
-  * @copyright Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -471,7 +471,7 @@
     }
 }
 
-LzSprite.prototype.destroy = function(recursive) {
+LzSprite.prototype.destroy = function() {
 }
 
 LzSprite.prototype.getMouse = function(xy) {

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzContextMenu.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzContextMenu.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzContextMenu.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -19,7 +19,7 @@
   */
 class LzContextMenu extends LzNode {
 
-function initialize(del) {
+function LzContextMenu (del) {
                                // set callback for Flash "onSelect" event
                                this.cm = new ContextMenu();
                                this.cm.hideBuiltInItems();
@@ -121,7 +121,7 @@
   */
 class LzContextMenuItem extends LzNode {
 
-function initialize (title, del) {
+function LzContextMenuItem (title, del) {
     this.cmenuitem = new ContextMenuItem(title);
     this.setDelegate(del);
 }; // End of LzContextMenuItem

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzLibraryLoader.as
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -9,13 +9,13 @@
   */
 
 //* A_LZ_COPYRIGHT_BEGIN ******************************************************
-//* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.            *
+//* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.            *
 //* Use is subject to license terms.                                          *
 //* A_LZ_COPYRIGHT_END ********************************************************
 
 class LzLibraryLoader extends LzLoader {
-    function initialize ( owner , args ) {
-        super.initialize.apply(this, arguments);
+    function LzLibraryLoader ( owner , args ) {
+        super(owner, args);
         this.owner.loadperc = 0;
         //setup loadmovie stuff that never changes
         this.mc.loader = this;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzLoader.as
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -13,8 +13,8 @@
   */
 class LzLoader {
 
-function initialize ( owner , args ){
-    super.initialize.apply(this, arguments);
+function LzLoader ( owner , args ){
+    super(owner, args);
     //Debug.write("LzLoader initialize owner=",owner,'attachref=', args.attachRef, args);
     this.mc = args.attachRef == null ? owner.__LZmovieClipRef : args.attachRef;
     //this breaks media loading in swf: this.mc = args.attachRef == null ? owner.getMCRef() : args.attachRef;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzMakeLoadSprite.as
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzMakeLoadSprite.as	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzMakeLoadSprite.as	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzMakeLoadSprite.as
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -255,7 +255,7 @@
 /**
   * @access private
   */
-LzMakeLoadSprite.destroy = function (recur) {
+LzMakeLoadSprite.destroy = function () {
     if ('updateDel' in this)
          this.updateDel.unregisterAll();
     if ('errorDel' in this)
@@ -266,5 +266,5 @@
     this.loader.unload( this.loader.mc );
 
     // call shadowed destroy()
-    this.___destroy( recur ); 
+    this.___destroy(); 
 }

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzMediaLoader.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzMediaLoader.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzMediaLoader.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzMediaLoader.as
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -12,8 +12,8 @@
   * @access private
   */
 class LzMediaLoader extends LzLoader {
-    function initialize( owner , args ) {
-        super.initialize.apply(this, arguments);
+    function LzMediaLoader ( owner , args ) {
+        super(owner, args);
 
         this.owner.owner.loadperc = 0;
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzSprite.as
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzSprite.as	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzSprite.as	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzSprite.as
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -897,7 +897,18 @@
 
 LzSprite.prototype.predestroy = function(){
     this.bringToFront();
-    
+}
+
+/**
+  * This method should remove a view, its media, and any of its subviews.
+  * @access private
+  * 
+  */
+LzSprite.prototype.destroy = function(){
+    if (this.__LZdeleted == true) return;
+    // To keep delegates from resurrecting us.  See LzDelegate#execute
+    this.__LZdeleted = true;
+
     if (this.updatePlayDel) {
         this.updatePlayDel.unregisterAll();
         delete this.updatePlayDel;
@@ -907,22 +918,7 @@
         this.doQueuedDel.unregisterAll();
         delete this.doQueuedDel;
     }
-}
 
-/**
-  * This method should remove a view, its media, and any of its subviews.
-  * @access private
-  * 
-  */
-LzSprite.prototype.destroy = function(recursive){
-    if (recursive) {
-        if (this.owner.subviews) {
-            for (var i = 0; i < this.owner.subviews.length; i++) {
-                this.owner.subviews[i].sprite.destroy(recursive);
-            }
-        }
-    }
-
     this.__LZFinishDestroyOnIdle();
 }
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/dojo/flash6/DojoExternalInterface.as
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/dojo/flash6/DojoExternalInterface.as	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/dojo/flash6/DojoExternalInterface.as	2008-01-04 16:20:15 UTC (rev 7726)
@@ -11,7 +11,7 @@
 	var _fscommandReady = false;
 	var _callbacks = [];
 
-	function initialize(){ 
+	function DojoExternalInterfaceClass(){ 
 		//getURL("javascript:alert('FLASH:DojoExternalInterface initialize')");
 		//Debug.write('DojoExternalInterface.initialize()');
 		// FIXME: Set available variable by testing for capabilities
@@ -220,7 +220,7 @@
 }
 
 /* X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.          *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.          *
 * Use is subject to license terms.                                        *
 * X_LZ_COPYRIGHT_END ******************************************************/
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/dojo/flash8/DojoExternalInterface.as
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/dojo/flash8/DojoExternalInterface.as	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/dojo/flash8/DojoExternalInterface.as	2008-01-04 16:20:15 UTC (rev 7726)
@@ -23,7 +23,7 @@
 	var argData = null;
 	var resultData = null;
 	
-	function initialize(){
+	function DojoExternalInterfaceClass(){
 		// extract the dojo base path
 		//Debug.write('initialize', flash.external.ExternalInterface.addCallback);
 		
@@ -227,7 +227,7 @@
 }
 
 /* X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.          *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.          *
 * Use is subject to license terms.                                        *
 * X_LZ_COPYRIGHT_END ******************************************************/
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/dojo/flash8/ExpressInstall.as
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/dojo/flash8/ExpressInstall.as	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/dojo/flash8/ExpressInstall.as	2008-01-04 16:20:15 UTC (rev 7726)
@@ -23,7 +23,7 @@
 	var updater = null
 	var hold = null
 	
-    function initialize(){
+    function ExpressInstall(){
 		// does the user need to update?
 		this.needsUpdate = (_root.MMplayerType == undefined) ? false : true;	
     }
@@ -75,6 +75,6 @@
 }
 
 /* X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.          *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.          *
 * Use is subject to license terms.                                        *
 * X_LZ_COPYRIGHT_END ******************************************************/

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzContextMenu.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzContextMenu.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzContextMenu.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -19,7 +19,7 @@
   */
 class LzContextMenu extends LzNode {
 
-function initialize(del) {
+function LzContextMenu (del) {
                                // set callback for Flash "onSelect" event
                                this.cm = new ContextMenu();
                                this.cm.hideBuiltInItems();
@@ -121,7 +121,7 @@
   */
 class LzContextMenuItem extends LzNode {
 
-function initialize (title, del) {
+function LzContextMenuItem (title, del) {
     this.cmenuitem = new ContextMenuItem(title);
     this.setDelegate(del);
 }; // End of LzContextMenuItem

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzHTTPLoader.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzHTTPLoader.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzHTTPLoader.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzHTTPLoader.lzs
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -15,7 +15,7 @@
 // We have an internal 'lzloader' property which points to an LzLoader (Flash-7-8-specific)
 class LzHTTPLoader {
 
-function initialize (owner, proxied) {
+function LzHTTPLoader (owner, proxied) {
     this.lzloader = this.makeLzLoader(proxied);
     this.owner = owner;
     this.options = {

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzInputTextSprite.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzInputTextSprite.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzInputTextSprite.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzInputTextSprite.lzs
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -14,11 +14,11 @@
   */
 class LzInputTextSprite extends LzTextSprite {
 
-function initialize(newowner, args) {
+function LzInputTextSprite (newowner, args) {
     // [todo pbr 10-31-07]
-    // I'm not calling super.initialize because this appears to do what
+    // I'm not calling super because this appears to do what
     // LzInputSprite ctor does 
-    // super.initialize.apply(this, arguments);
+    // super(newowner, args);
 
     this.__LZdepth = newowner.immediateparent.sprite.__LZsvdepth++;
     this.__LZsvdepth = 0;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzLibraryLoader.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzLibraryLoader.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzLibraryLoader.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzLibraryLoader.as
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -9,13 +9,13 @@
   */
 
 //* A_LZ_COPYRIGHT_BEGIN ******************************************************
-//* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.            *
+//* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.            *
 //* Use is subject to license terms.                                          *
 //* A_LZ_COPYRIGHT_END ********************************************************
 
 class LzLibraryLoader extends LzLoader {
-    function initialize ( owner , args ) {
-        super.initialize.apply(this, arguments);
+    function LzLibraryLoader ( owner , args ) {
+        super(owner, args);
         this.owner.loadperc = 0;
         //setup loadmovie stuff that never changes
         this.mc.loader = this;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzLoadQueue.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzLoadQueue.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzLoadQueue.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzLoadQueue.lzs
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -14,7 +14,7 @@
   */
 class LzLoadQueueClass {
 
-function initialize () {
+function LzLoadQueueClass () {
     this.addPriorityFunction( LzLoadQueueClass.defaultPriorityAssignment );
     this.timeoutDel = new LzDelegate( this , "checkTimeout" );
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzLoader.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzLoader.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzLoader.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzLoader.as
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -13,8 +13,8 @@
   */
 class LzLoader {
 
-function initialize ( owner , args ){
-    super.initialize.apply(this, arguments);
+function LzLoader ( owner , args ){
+    super(owner, args);
     //Debug.write("LzLoader initialize owner=",owner,'attachref=', args.attachRef, args);
     this.mc = args.attachRef == null ? owner.__LZmovieClipRef : args.attachRef;
     //this breaks media loading in swf: this.mc = args.attachRef == null ? owner.getMCRef() : args.attachRef;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzMakeLoadSprite.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzMakeLoadSprite.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzMakeLoadSprite.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzMakeLoadSprite.lzs
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -254,7 +254,7 @@
 /**
   * @access private
   */
-function destroy (recur) {
+function destroy () {
     if ('updateDel' in this)
          this.updateDel.unregisterAll();
     if ('errorDel' in this)
@@ -265,7 +265,7 @@
     this.loader.unload( this.loader.mc );
 
     // call shadowed destroy()
-    this.___destroy( recur ); 
+    this.___destroy(); 
 }
 
 } // End of LzMakeLoadSpriteClass

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzMediaLoader.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzMediaLoader.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzMediaLoader.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzMediaLoader.as
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -12,8 +12,8 @@
   * @access private
   */
 class LzMediaLoader extends LzLoader {
-    function initialize( owner , args ) {
-        super.initialize.apply(this, arguments);
+    function LzMediaLoader ( owner , args ) {
+        super(owner, args);
 
         this.owner.owner.loadperc = 0;
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzSoundMC.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzSoundMC.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzSoundMC.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzSoundMC.as
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -16,7 +16,7 @@
   */
 class LzSoundMC {
 
-function initialize (mc) {
+function LzSoundMC (mc) {
     this.init(mc);
     this._playdel = new LzDelegate( this , "testPlay" );
 }

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzSprite.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzSprite.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzSprite.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzSprite.lzs
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -10,8 +10,8 @@
 
 class LzSprite {
 
-function initialize(newowner, isroot, args) {
-    super.initialize.apply(this, arguments);
+function LzSprite (newowner, isroot, args) {
+    super();
     if (newowner == null) return this;
     this.owner = newowner;
     //Debug.write('---> New sprite', newowner, newowner.immediateparent, newowner.immediateparent.sprite);
@@ -900,14 +900,11 @@
   * @access private
   * 
   */
-function destroy(recursive){
-    if (recursive) {
-        if (this.owner.subviews) {
-            for (var i = 0; i < this.owner.subviews.length; i++) {
-                this.owner.subviews[i].sprite.destroy(recursive);
-            }
-        }
-    }
+function destroy(){
+    if (this.__LZdeleted == true) return;
+    // To keep delegates from resurrecting us.  See LzDelegate#execute
+    this.__LZdeleted = true;
+
     if (this.updatePlayDel) {
         this.updatePlayDel.unregisterAll();
         delete this.updatePlayDel;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf9/LzTextSprite.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 /**
   * LzTextSprite.lzs
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -10,11 +10,11 @@
 
 class LzTextSprite extends LzSprite {
 
-function initialize(newowner, args) {
+function LzTextSprite (newowner, args) {
     // [todo pbr 10-31-07]
-    // I'm not calling super.initialize because this appears to do what
+    // I'm not calling super because this appears to do what
     // LzInputSprite ctor does 
-    // super.initialize.apply(this, arguments);
+    // super(newowner, args);
 
     if (newowner == null) return this;
     this.__LZdepth = newowner.immediateparent.sprite.__LZsvdepth++;

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzCSSStyle.js
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzCSSStyle.js	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzCSSStyle.js	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @affects lzcssstyle lzcssstylerule
@@ -80,11 +80,6 @@
     return csssd;
 }
 
-/** @access private */
-LzCSSStyle.__LZRuleCache = {};
-LzCSSStyle.__LZPropertyCache = {};
-
-
 //LzCSSStyle.time1 = 0;
 LzCSSStyle.getPropertyValueFor = function ( initialnode , pname ){
     //Debug.warn("node: %w, pname: %w, rules: %w\n", node, pname, this._rules);
@@ -94,11 +89,14 @@
 
     var node = initialnode;
     while (node != canvas) {
-        var uid = node.__LZUID;
-        var val = this.__LZPropertyCache[uid + pname];
-        if (val != null) return val;
+        if (! node.__LZPropertyCache) {
+            node.__LZPropertyCache = {};
+        } else {
+            var val = node.__LZPropertyCache[pname];
+            if (val != null) return val;
+        }
 
-        var rules = this.__LZRuleCache[ uid ];
+        var rules = node.__LZRuleCache;
         if ( !rules ) {
             rules = new Array();
             var r;
@@ -211,7 +209,7 @@
 
             rules.sort(this.__compareSpecificity); 
         
-            this.__LZRuleCache[ uid ] = rules;
+            node.__LZRuleCache = rules;
         }
 
         //Debug.write("About to print rule array.") 
@@ -223,7 +221,7 @@
             var props = rules[i++].properties;
             if (pname in props) { 
                 val = props[pname];
-                this.__LZPropertyCache[uid + pname] = val;
+                node.__LZPropertyCache[pname] = val;
                 break;
             }
         }
@@ -248,7 +246,7 @@
     // Go through all the selectors in the selector, keeping a running
     // count of various kinds of selectors:
     /*
-    count 1 if the selector is a ’style’ attribute rather than a selector, 
+    count 1 if the selector is a `style` attribute rather than a selector, 
         0 otherwise (= a) 
     count the number of ID attributes in the selector (= b) 
     count the number of other attributes and pseudo-classes in the selector (= c) 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzIdle.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzIdle.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzIdle.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @affects lzidle
@@ -34,12 +34,14 @@
   */
 class LzIdleClass {
 
-var coi = [];
+  var coi;
 
 
 var removeCOI = null;
-function initialize () {
-this.removeCOI = new LzDelegate( this , "removeCallIdleDelegates" );
+function LzIdleClass () {
+  // Create array on instance, not prototype
+  this.coi = new Array;
+  this.removeCOI = new LzDelegate( this , "removeCallIdleDelegates" );
 }
 
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzInstantiator.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzInstantiator.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzInstantiator.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @affects lzinstantiator
@@ -19,7 +19,7 @@
 class LzInstantiatorClass {
 
 var checkQDel = null;
-function initialize () {
+function LzInstantiatorClass () {
   this.checkQDel = new LzDelegate( this , "checkQ" );
 }
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzTimer.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzTimer.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzTimer.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @affects lztimer
@@ -75,7 +75,12 @@
         // User LzTimer explicitly below; "this" is not the outer function's
         // this here.
         LzTimer.removeTimerWithID(p.delegate, p.id); 
-        p.delegate.execute( (new Date()).getTime() );
+        var del = p.delegate;
+        // Inlining LzDelegate.execute()
+        if (del.enabled && del.c) {
+            //p.delegate.execute( (new Date()).getTime() ); inlined
+            if (! del.c.__LZdeleted && del.c[del.f]) del.c[del.f]( (new Date()).getTime() );
+        }
     }
     var id = setInterval(f, milisecs);
     if ($debug) {

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzTrack.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzTrack.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/LzTrack.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @affects lztrack
@@ -122,8 +122,8 @@
 /** @access private */
 var __LZmouseupDel = null;
 
-function initialize (){
-    super.initialize.apply(this, arguments);
+function LzTrackClass (){
+    super();
 
     this.__LZtrackDel = new LzDelegate( this, "__LZtrack" );// called on idle
     this.__LZmouseupDel = new LzDelegate( this, "__LZmouseup", LzGlobalMouse, 'onmouseup');// called on global mouseup

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloCanvas.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloCanvas.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloCanvas.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @affects lzcanvas
@@ -61,9 +61,9 @@
   */
 static var tagname = 'canvas';
 
-function initialize ( args ) {
+function LzCanvas ( args ) {
     // TODO: [2006-05-19 ptw] The original did not do this, should we?
-    // super.initialize.apply(this, arguments);
+    // super(null, args);
     // Note canvas start
     if ($profile) {
         Profiler.event('start: #canvas');

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloView.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloView.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LaszloView.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @affects lzview
@@ -1157,10 +1157,10 @@
 
     super.destroy.apply(this, arguments);
 
+    if (this.sprite) { this.sprite.destroy() }
+
     if ( recursiveCall == true ) { return; }
 
-    if (this.sprite) { this.sprite.destroy(true) }
-
     //this.__LZFinishDestroyOnIdle();
 
     this.setVisible ( false );

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzScript.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzScript.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzScript.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -69,7 +69,7 @@
 static var tagname = 'script';
 
 function LzScript ( parent, args ) {
-    super(parent,null);
+    super(parent, args);
     args.script();
 }
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzViewLinkage.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzViewLinkage.lzs	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzViewLinkage.lzs	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -38,7 +38,7 @@
   * @param fromView: the view from which to originate the transformation
   * @param toView: the reference view
   */
-  function initialize ( fromView, toView ) {
+  function LzViewLinkage ( fromView, toView ) {
     //@field scale: An <b><i>LzPoint</b></i> representing the scale
     //transformation of this linkage. 1 is no transformation.
     this.scale = new Object ();

Modified: openlaszlo/branches/devildog/WEB-INF/lps/schema/build.xml
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/schema/build.xml	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/schema/build.xml	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,7 +1,7 @@
 <project name="schema" default="build">
 
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 
@@ -18,10 +18,9 @@
     <property name="rnc" value="lzx.rnc"/>
     <property name="docrng" value="lzxdoc.rng"/>
     <property name="rng" value="lzx.rng"/>
-    <property name="dtd" value="lzx.dtd"/>
     <property name="xsd" value="lzx.xsd"/>
     <property name="html" value="lzx-reference.html"/>
-    <property name="python.exec" value="python" />
+
     <mkdir dir="build"/>
     <condition property="schemas.uptodate">
         <and>
@@ -31,8 +30,6 @@
                     <include name="lzx.rnc"/>
                 </srcfiles>
             </uptodate>
-            <uptodate property="dtd.uptodate" value="false" srcfile="${rng}" targetfile="${dtd}">
-            </uptodate>
             <uptodate property="xsd.uptodate" value="false" srcfile="${rnc}" targetfile="${xsd}"/>
         </and>
     </condition>
@@ -53,17 +50,6 @@
     <style in="build/lzx.direct.rng" out="${docrng}" style="strip-private.xsl"/>
   </target>
 
-  <target name="dtd" 
-          description="Generate DTD" depends="rng"
-          unless="schemas.uptodate" >
-      <exec executable="${python.exec}" taskname="rng2dtd" failonerror="true" >
-        <arg value="rng2dtd.py"/>
-        <arg value="${rng}"/>
-        <arg value="-o"/>
-        <arg value="${dtd}"/>
-      </exec>
-  </target>
-
   <target name="clean" 
           description="Remove generated schema files" depends="init">
     <delete dir="${build}"/>

Modified: openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt	2008-01-04 16:20:15 UTC (rev 7726)
@@ -370,24 +370,39 @@
      {jjtThis.setFloatingPointValue(t.image);}
 }
 
+Token IdentifierOrAS3Keyword() #void : {Token t;}
+{
+  // Newer AS3 keywords are allowed as identifiers, other
+  // keywords (like public, private, protected) apparently are not
+  ( t=<IDENTIFIER>
+  | t=<INTERNAL>
+  | t=<FINAL>
+  | t=<STATIC>
+  | t=<OVERRIDE>
+  | t=<DYNAMIC>
+  )
+    {return t;}
+}
+
 ASTIdentifier Identifier() #Identifier : {Token t;}
 {
-  t=<IDENTIFIER>
+  ( t=IdentifierOrAS3Keyword() )
     {jjtThis.setName(t.image); return jjtThis;}
 }
 
 void IdentifierOrKeyword() #Identifier : {Token t;}
 {
-  t=<IDENTIFIER>
+  ( t=IdentifierOrAS3Keyword()
+  | t=<CLASS>
+  | t=<EXTENDS>
+  | t=<IMPLEMENTS>
+  | t=<INHERITS>
+  | t=<WITH>
+  | t=<INTERFACE>
+  | t=<TRAIT>
+  | t=<MIXIN>
+  )
     {jjtThis.setName(t.image);}
-| "class" {jjtThis.setName("class");}
-| "extends" {jjtThis.setName("extends");}
-| "implements" {jjtThis.setName("implements");}
-| "inherits" {jjtThis.setName("inherits");}
-| "with" {jjtThis.setName("with");}
-| "interface" {jjtThis.setName("interface");}
-| "trait" {jjtThis.setName("trait");}
-| "mixin" {jjtThis.setName("mixin");}
 }
 
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/sc/Assembler.java
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/sc/Assembler.java	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/sc/Assembler.java	2008-01-04 16:20:15 UTC (rev 7726)
@@ -8,7 +8,7 @@
  */
 
 /* J_LZ_COPYRIGHT_BEGIN *******************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * J_LZ_COPYRIGHT_END *********************************************************/
 
@@ -43,6 +43,12 @@
   private static byte[] backingStore;
   Hashtable constants;
 
+   // relative indicates a normal relative reference if relative is
+   // false, this reference is part of label arithmetic, that is, a
+   // difference of two labels:
+   //    (label2 - label1)
+   // this produces two references, one with positive=true and one
+   // with positive=false.
   public static class LabelReference {
     int patchloc;
     boolean relative;
@@ -77,24 +83,31 @@
       for (Iterator i =  references.iterator(); i.hasNext(); ) {
         LabelReference lr = (LabelReference)i.next();
         int patchloc = lr.patchloc;
-        int offset = location - (lr.relative ? (patchloc + 2) : 0);
-        if (!lr.positive)
-          offset = -offset;
-
-        boolean rangecheck = true;
+        int offset = location - (patchloc + 2);
         if (!lr.relative) {
-          short curval = bytes.getShort(patchloc);
-          offset += curval;
-
-          // When we're in the middle of evaluating an expression like
-          // (label1 - label0), the offset may be temporarily out of range,
-          // so disable the check
-
-          if (curval == 0)
-            rangecheck = false;
+          // If we are doing label arithmetic, we store the relative
+          // offset of the first label we encounter, when the second
+          // label is encountered it will subtract its offset.  When
+          // the instruction is first written, it will write 0 offsets
+          // at the patchloc.  So, the test for curval == 0 is saying
+          // "is this the first label we have encountered for this
+          // location?"  And if so, it will not do any arithmetic, it
+          // will simply write the offset of that label into the
+          // patchloc.
+          // FIXME [2007-12-14 ptw] (LPP-5262) This will fail if the
+          // blocks in the try are maximal
+          // Fetch unsigned:
+          int curval = bytes.getShort(patchloc) & MAX_OFFSET();
+          if (curval == 0) {
+            ;
+          } else if (lr.positive) {
+            offset = offset - curval;
+          } else {
+            offset = curval - offset;
+          }
         }
 
-        if (rangecheck && (offset < MIN_OFFSET() || offset > MAX_OFFSET())) {
+        if (offset < MIN_OFFSET() || offset > MAX_OFFSET()) {
           throw new CompilerException((this instanceof Block?"Block":"Label") + " " +
                                       name + ": jump offset " + offset + " too large");
         }

Modified: openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/sc/CommonGenerator.java
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/sc/CommonGenerator.java	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/sc/CommonGenerator.java	2008-01-04 16:20:15 UTC (rev 7726)
@@ -457,7 +457,13 @@
         if (n instanceof ASTFunctionDeclaration && !keepClassMethods) {
           SimpleNode[] c = n.getChildren();
           assert c.length == 3;
-          p.add(new ASTLiteral(((ASTIdentifier)c[0]).getName()));
+          String fname = ((ASTIdentifier)c[0]).getName();
+          // Transform constructor into '$lzsc$initialize' method
+          if (classnameString.equals(fname)) {
+            fname = "$lzsc$initialize";
+            c[0] = new ASTIdentifier(fname);
+          }
+          p.add(new ASTLiteral(fname));
           SimpleNode funexpr = new ASTFunctionExpression(0);
           funexpr.setBeginLocation(n.filename, n.beginLine, n.beginColumn);
           funexpr.setChildren(c);
@@ -792,7 +798,10 @@
     String ca = null;
     String pattern = "(arguments.callee.superclass?arguments.callee.superclass.prototype[_1]:this.nextMethod(arguments.callee, _1)).call(this, _2)";
     if (fname instanceof ASTEmptyExpression) {
-      name = "constructor";
+      // super with no selector is the constructor, which will be
+      // renamed to $lzsc$initialize in translateClassDirective to
+      // mesh with lfc/compiler/Class.lzs framework
+      name = "$lzsc$initialize";
     } else {
       name = ((ASTIdentifier)fname).getName();
     }

Modified: openlaszlo/branches/devildog/build-tools/runlztest.sh
===================================================================
--- openlaszlo/branches/devildog/build-tools/runlztest.sh	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/build-tools/runlztest.sh	2008-01-04 16:20:15 UTC (rev 7726)
@@ -2,7 +2,7 @@
 # Run several tests in the rhino runtime.
 # usage 
 # runlztest.sh [file-with-list-of-tests]
-# Copyright 2007 Laszlo Systems
+# Copyright 2007-2008 Laszlo Systems
 
 # Use a default value for the tests file if its not specified on the command line
 tests=${1:-"test/lztest/smoketest.txt"}
@@ -80,7 +80,7 @@
     echo "if (LzTestManager.failedsuites > 0) quit(3);" >> $outfile
 
     # load that file into rhino
-    $JAVA_EXEC -jar 3rd-party/jars/custom_rhino.jar $outfile
+    $JAVA_EXEC -jar 3rd-party/jars/custom_rhino.jar -opt -1 $outfile
     
     # Stop testing if we failed a test
     if [ $? != 0 ] ; then

Modified: openlaszlo/branches/devildog/build.xml
===================================================================
--- openlaszlo/branches/devildog/build.xml	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/build.xml	2008-01-04 16:20:15 UTC (rev 7726)
@@ -6,7 +6,7 @@
 <!--  Author: Eric Bloch  / Benjamin Shine                                  -->
 
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 
@@ -230,8 +230,8 @@
   </target>
   
   <!--============== Convenience Targets [simple] ==================-->
-  <target name="simple" depends="disable-tomcat,disable-dtd,build" 
-   description="Just do a simple build, without tomcat or a dtd or doc." />
+  <target name="simple" depends="disable-tomcat,build" 
+   description="Just do a simple build, without tomcat or doc." />
   
    <!--============== Convenience Targets [nightly] ==================-->
    <target name="nightly" depends="disable-tomcat"
@@ -261,11 +261,6 @@
       <property name="skip.nsi-dev" value="true" />
   </target>
 
-  <target name="disable-dtd"
-    description="Don't want the endless dtd task to run? Just run this target first.">
-    <property name="skip.dtd" value="true" />
-  </target>
-
   <!--===============  Target [init]  ===================-->
   <target name="init" description="Target for initialization" 
           depends="build-opt"
@@ -405,7 +400,6 @@
               <include name="*.sit"/>
               <include name="*.dmg"/>
               <include name="*.exe"/>
-              <include name="tools/lzx.dtd" />
               <include name="tools/lzx.rnc" />
               <include name="tools/lzx.rng" />
               <include name="tools/lzx.xsd" />
@@ -456,13 +450,7 @@
         unless="no.tomcat">
         <ant target="webapp.undeploy" />
     </target>
-  
-  <!--================  Target [dtd] ==============-->
-      <target name="dtd" depends="init"
-          description="build the dtd, only" >
-          <ant dir="${webapp-lps-home}/schema"  target="dtd" />          
-      </target>      
-  
+    
   <!--================  Target [build-source-distro] ==============-->
   <target name="build-source-distro"
       description="Build source distribution"
@@ -495,7 +483,7 @@
   </target>
 
   <target name="package-source-distro" 
-      description="Turn source dirs into packages"  depends="disable-tomcat,init,dtd">
+      description="Turn source dirs into packages"  depends="disable-tomcat,init">
       <echo message="packaging source distro into ${source-distro-gzfile}" />
       
       <!-- Create tar gz -->
@@ -706,10 +694,7 @@
   <target name="build-dist-dir-dev" 
       description="Prepares dev copy of dist directory" 
       depends="disable-tomcat,init" unless="done.build-dist-dir-dev" >
-
-      <!-- Explicitly build the dtd when we're building a distribution --> 
-     <ant target="dtd" />
-
+      
       <copy todir="${builddir-dev}" >
           <fileset dir="${builddir}">
               <patternset refid="manifest.top" />
@@ -810,8 +795,7 @@
   <!--================  Target [dist-dev] ==============-->
   <target name="dist-dev" depends="disable-tomcat,init,build-core" unless="done.dist.dev"
       description="Build 'developer' distributions" >
-      <!-- Explicitly build the dtd when we're building a distribution --> 
-      <ant dir="${webapp-lps-home}/schema"  target="dtd" />
+
       <ant target="build-dist-dir-dev" inheritrefs="true" />
 
       <ant target="prefetch" inheritrefs="true" />
@@ -1013,7 +997,7 @@
   <!--================  Target [build-dist-dir-core] ==============-->
   <target name="build-dist-dir-core" 
       description="Build lps core distribution directory for tgz (w/out precache)"
-      depends="disable-tomcat,init,build,doc,dtd" 
+      depends="disable-tomcat,init,build,doc" 
       unless="build-dist-dir-core.done">
 
       <property name="webapp"    value="${builddir}/lps-${version.id}" />

Modified: openlaszlo/branches/devildog/docs/includes/docbook.css
===================================================================
--- openlaszlo/branches/devildog/docs/includes/docbook.css	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/includes/docbook.css	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /* Stylesheet for LZX Documentation */
 /* J_LZ_COPYRIGHT_BEGIN *******************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * J_LZ_COPYRIGHT_END *********************************************************/
 
@@ -95,7 +95,7 @@
 
 /* Emphasis inside a program listing is bold blue, instead of italic */
 pre em {
-    color: blue;
+    color: #111499;
     font-weight: bold;
     font-style: normal;
 }

Modified: openlaszlo/branches/devildog/docs/includes/styles.css
===================================================================
--- openlaszlo/branches/devildog/docs/includes/styles.css	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/includes/styles.css	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 /* Stylesheet for LPS docs                                            */
 /* J_LZ_COPYRIGHT_BEGIN *******************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * J_LZ_COPYRIGHT_END *********************************************************/
 
@@ -31,9 +31,11 @@
 }
 
 h4 {
+    font-size: 12px;
 }
 
 h5 {
+    font-size: 12px;
     color: #4F4F4F;
 }
 
@@ -379,4 +381,4 @@
     font-weight: bold; 
     line-height: 18px;
     color: #333333;
-}
\ No newline at end of file
+}

Modified: openlaszlo/branches/devildog/docs/release-notes.html
===================================================================
--- openlaszlo/branches/devildog/docs/release-notes.html	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/release-notes.html	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,198 +1,42 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
-<!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+    <head>
+        <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
-<title>OpenLaszlo 4.0.5 Release Notes</title>
-
-
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-  <link rel="stylesheet" href="../lps/includes/explore.css" type="text/css" />
-  <link rel="SHORTCUT ICON" href="http://www.laszlosystems.com/images/laszlo.ico" />
-  </head>
-
-<body class="release-notes">
-
-<h1>Release Notes for OpenLaszlo 4.0.5</h1>
-
-
-<p class="bodytext">
-
-<b>OpenLaszlo 4.0.5 is the recommended platform for .swf development.</b> With OpenLaszlo 4.0.5, there is no longer any reason to continue application development using OpenLaszlo 3.4. Support for applications to DHTML remains at "beta" level; it will be fully supported with OL 4.1. This release has been tested by users world wide and vetted by the Laszlo Systems Quality Assurance team. Hundreds of improvements have been made since OpenLaszlo 4.0.</p>
-
-<p>
-For every release, we rely on the OpenLaszlo community to help ensure
-the quality of the platform release and to determine its future
-direction. To propose or participate in discussion of new features,
-see <a href="http://wiki.openlaszlo.org/Enhancement_Proposals">the wiki.</a>
-We encourage you to report any problems, and to make
-suggestions for enhancements, through our <a
-href="http://www.openlaszlo.org/jira/browse/LPP">JIRA bug tracking
-system.</a> </p>
-<p>
-Please see the <a href="http://download.openlaszlo.org/4.0.0/release-notes.html">OpenLaszlo 4.0 Release Notes</a> for an overview of significant changes since 3.x.
-</p>
-<p><i>What happened to version 4.0.4? We skipped a number. We don't like 404s.</i></p>
-<h1>New Features in 4.0.5</h1>
-<ul>
-    <li><b>Explicit Replication</b>. Please see <a href="http://wiki.openlaszlo.org/Explicit_Replication">the proposal for explicit replication on the wiki</a> for details. Expect more detailed documentation in upcoming releases. </li>
-</ul>
-<h1>Important Known Issues in 4.0.5</h1>
-<p>Some known bugs are present in this release; this is the way of the world. A few of these bugs deserve special attention:</p>
-<ul>
-    <li><a href="http://www.openlaszlo.org/jira/browse/LPP-4235">With jdk 1.6 and tomcat 5.5.23, changes to build.xml deploy task necessary</a> The bug description indicates a small change that must be made to the main build.xml file in order to use these recent versions of tomcat and java.</li>
-<li><a href="http://www.openlaszlo.org/jira/browse/LPP-3579"> Fix debugger in Safari</a> The dhtml debugger does not work in Safari 2 or Safari 3 or WebKit nightly as of r24285. If you need the Safari debugger to work, in lps.properties you can set compiler.debug.safari to true, do a clean build and flush your browser cache to allow debugging in Safari 2. This is not on by default because it makes debugging less useful in Firefox (backtaces will not see function names). WebKit and Safari 3 work correctly without any workaround. </li>
-</ul>
-
-<h1>Bugs Fixed in 4.0.5</h1>
-<ul>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4655" target="buggies">LPP-4655: History mechanism not working</a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4695" target="buggies">LPP-4695: Runtime-Exception in IE with Flash8</a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4699" target="buggies">LPP-4699: Explicit replicator displays warning when a clone's datapath is null</a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4660" target="buggies">LPP-4660:  Httpdatarequest has LzLoader value for xmldata when status is "error"   </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4610" target="buggies">LPP-4610: 'request' method is deprecated, causing trouble, needs to be removed for LzDataset </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4600" target="buggies">LPP-4600: Flash: navbar buttons in laszlo-explorer and examples have clipped text </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4584" target="buggies">LPP-4584: dataset fires multiple ondata-Events </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4583" target="buggies">LPP-4583: Improve compiler and caching performance </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4582" target="buggies">LPP-4582: YouTube demo not working due to changes of Youtube.com FLV url pattern </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4560" target="buggies">LPP-4560: lzc does not respect JAVA_OPTS on non-windows platforms </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4538" target="buggies">LPP-4538: richtexteditarea-test.lzx and richtexteditarea-driver.lzx have warnings and errors </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4535" target="buggies">LPP-4535: Memory leaks in "LzMakeLoadSprite" </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4532" target="buggies">LPP-4532: Two typos in "LzHTTPDatasource#doRequest(..)" </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4509" target="buggies">LPP-4509: internal index page has broken link to deployer's guide </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4505" target="buggies">LPP-4505: Eliminate several warnings in doc build </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4497" target="buggies">LPP-4497: Selecting Contributor's and Developer's Guide results in 404 error </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4462" target="buggies">LPP-4462: When running a SOLO SWF in an HTML file located in a different directory than the SWF, data requests are made relative to SWF, not HTML file </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4436" target="buggies">LPP-4436: window decrements its x and y coordinates when clicked </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4433" target="buggies">LPP-4433: Better performance for &lt;basetrackgroup&gt; </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4432" target="buggies">LPP-4432: Memory leaks in "basetabelement" </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4431" target="buggies">LPP-4431: &lt;list&gt; should disable "autoscrollbar" on destroy </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4418" target="buggies">LPP-4418: Wafflecone: LzDataElement.makeNodeList broken </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4370" target="buggies">LPP-4370: drawview doesn't respect visibility </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4352" target="buggies">LPP-4352: scrollrichedittext can't create scrollbar </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-3431" target="buggies">LPP-3431: Ensure richtext and richtexteditor work in OL4/SWF
-</a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4316" target="buggies">LPP-4316: "datalistselector#getItemByData(..)" and "datalistselector#getItemIndexByData(..)" should test against null </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4315" target="buggies">LPP-4315: "datalistselector#findIndex(..)" attempts to compare a "LzDataElement" against a "LzView" </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4269" target="buggies">LPP-4269: No event data in calendar demo for August 2007 </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4206" target="buggies">LPP-4206: Add support for flash 8 font smoothing APIs </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4120" target="buggies">LPP-4120: LzTrack interferes w/ window drag w/ FF DHTML </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4055" target="buggies">LPP-4055: constructWithArgs defined twice in LzNode.lzs </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-3907" target="buggies">LPP-3907: edittext and inputtext may fire onfocus resp. onblur twice </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-3560" target="buggies">LPP-3560: radiogroup and selecting an item </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-3521" target="buggies">LPP-3521: Debugger warnings when rich text editor is instantiated </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-1952" target="buggies">LPP-1952: destroy before resource is loaded leads to full load queue and hang </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4675" target="buggies">LPP-4675: Scrolling large text (100K) is very slow </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4665" target="buggies">LPP-4665: Compilation of some binary libraries fails </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4659" target="buggies">LPP-4659: DHTML: OS X: Cannot load laszlo-explorer in dhtml on OS X/FF2 </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4626" target="buggies">LPP-4626: Can only click into the first 10 to 20 pixels of inputtext </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4544" target="buggies">LPP-4544: Ability to override default container and mask views for explicit replicator </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4533" target="buggies">LPP-4533: Link to 3.4 docs on openlaszlo.org from laszlo explorer </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4414" target="buggies">LPP-4414: Improve startup performance </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4405" target="buggies">LPP-4405: Implement ExplicitReplication </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4404" target="buggies">LPP-4404: Implement DataProvider API </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4397" target="buggies">LPP-4397: rich text editor: cannot switch to the same font twice </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4396" target="buggies">LPP-4396: rich text editor: clicking bold moves insertion point </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4357" target="buggies">LPP-4357: getMouse returns absolute coordinates in DHTML + FF </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4332" target="buggies">LPP-4332: Merge release notes from 4.0.3 into legals </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4261" target="buggies">LPP-4261: Unable to load and unload resources repeatedly - DHTML </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4240" target="buggies">LPP-4240: View.updateResourceSize() generates error in DHTML </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4215" target="buggies">LPP-4215: wrappinglayout construct() method refers to args.spacing, which is undefined. should refer to this.spacing. </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4200" target="buggies">LPP-4200: Missing warnings in "LzBrowser.js" (DHTML) </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4015" target="buggies">LPP-4015: Text selection position and size should be available during onblur event </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-3726" target="buggies">LPP-3726: stretches breaks clickable in swf7/8 </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-2894" target="buggies">LPP-2894: CSS: subclasses and instances can't override style constraints set on superclass* </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-2111" target="buggies">LPP-2111: Horrendously inefficient looping in layout classes!! </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4676" target="buggies">LPP-4676: replicator xpath attribute -- double quotes is strange </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4671" target="buggies">LPP-4671: explicit lazyreplicator tag places it's first two views out of order </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4667" target="buggies">LPP-4667: replicatorselectionmanager: yet another replication manager is confusing </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4666" target="buggies">LPP-4666: explicit lazyreplication fails in test file test-replicator.lzx </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4661" target="buggies">LPP-4661: View with stretches="both" does not get onclick </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4657" target="buggies">LPP-4657: Input text does not obey font style directives in SWF7/8 </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4638" target="buggies">LPP-4638: selectionmanager test broken </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4631" target="buggies">LPP-4631: test/lfc/data/datanode.lzx fails </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4630" target="buggies">LPP-4630: Dataset subclasses doRequest oninit if autorequest="true" and request="false" </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4612" target="buggies">LPP-4612: Explicit replicator doesn't update when items are added or deleted </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4601" target="buggies">LPP-4601: Link to Deployer's Guide in Server Admin is broken </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4597" target="buggies">LPP-4597: turn debugger warnings for non-fatal issues into INFO </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4592" target="buggies">LPP-4592: basedatacombobox-based components with selectfirst="false" emits Debugger warnings </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4589" target="buggies">LPP-4589: Two messages highlighted on autocheck when one message is in inbox </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4585" target="buggies">LPP-4585: Two onmousetrackup events fired when only 1 should be fired. </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4571" target="buggies">LPP-4571: Text component not sized correctly when fontsize configured via a constraint </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4569" target="buggies">LPP-4569: Update nav_dhtml.xml whenever nav.xml for laszlo-explorer changes </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4565" target="buggies">LPP-4565: Selecting Contributor's Guide in navbar and quick index entry opens Comprehensive Reference </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4564" target="buggies">LPP-4564: Links to Contributor's Guide have (alpha), the guide has (beta) in the title </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4563" target="buggies">LPP-4563: LZX Reference gets 404 error from the quick index page </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4562" target="buggies">LPP-4562: LoadJS works differently in the dev console </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4561" target="buggies">LPP-4561: Multiple select is undone by mousedown </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4558" target="buggies">LPP-4558: test/wafflecone/test/components/incubator/richtexteditarea-driver.lzx needs to be deleted, no longer valid </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4556" target="buggies">LPP-4556: Rich text: Can't change font back to Verdana </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4553" target="buggies">LPP-4553: basefocusview warnings when canvas size changes </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4551" target="buggies">LPP-4551: debugger warnings emitted from a private LFC function </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4549" target="buggies">LPP-4549: runtime warnings should include file references, line #s </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4543" target="buggies">LPP-4543: setVisibility was not an approved API change </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4540" target="buggies">LPP-4540: Laszlo Explorer hierarchical menu does not display in dhtml/firefox/opera/safari </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4539" target="buggies">LPP-4539: Put in a header in each page of reference guide saying "this is an alpha; please look elsewhere(link) for better docs" </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4537" target="buggies">LPP-4537: Laszlo Explorer welcome page says "This is a fully-qualified release" -- but it's not </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4534" target="buggies">LPP-4534: Make a left-nav index navigator for OL 4 docs </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4530" target="buggies">LPP-4530: lzunit basedatacombobox test fails </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4521" target="buggies">LPP-4521: dhtml/flash: Clicking OK without a zip code no longer gives an error (regression) </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4520" target="buggies">LPP-4520: dhtml/swf: Window is missing in Date Picker component </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4513" target="buggies">LPP-4513: Compiler Improvements to address performance </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4510" target="buggies">LPP-4510: Quick Index page has broken doc links </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4502" target="buggies">LPP-4502: Investigate whether the docs build </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4495" target="buggies">LPP-4495: Richedittext: can't change font </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4489" target="buggies">LPP-4489: Richedittext: Can't change formatting before typing </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4487" target="buggies">LPP-4487: test/explicit-replicators/replicator.lzx not working </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4481" target="buggies">LPP-4481: Richedittext: Text size 18 doesn't seem to do anything. </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4479" target="buggies">LPP-4479: Richedittext: Successive changing of a text's properties shortens the selected text range by one character. </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4478" target="buggies">LPP-4478: Richedittext: WARNING: __LZgetNodes: p is null in LzDatapointer </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4477" target="buggies">LPP-4477: Selecting all of the text in a richedittext and then changing the text's properties doesn't change the final character. </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4474" target="buggies">LPP-4474: amazon soap fails in dhtml / wafflecone branch </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4464" target="buggies">LPP-4464: setVisible(null) warning, but it is never called </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4463" target="buggies">LPP-4463: ERROR:Class for tag include has not been defined yet </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4461" target="buggies">LPP-4461: In rich text editor, font color combo box does not update when cursor moves to different colored text </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4459" target="buggies">LPP-4459: Visible property not respected for replication </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4458" target="buggies">LPP-4458: Flash and dhtml: Cannot enter/edit text in Calendar demo (broke between r5934 and r5938) </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4456" target="buggies">LPP-4456: Idle/wait resource is out of position </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4453" target="buggies">LPP-4453: datapointer gets stuck on text elements </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4448" target="buggies">LPP-4448: fixes for dataprovider </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4428" target="buggies">LPP-4428: Make warning on CSS value is null more informative </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4427" target="buggies">LPP-4427: Clean-up for "basescrollbar" </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4425" target="buggies">LPP-4425: Source for Small applications, Demos, and Components can't be viewed </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4423" target="buggies">LPP-4423: Class hierarchy document is not found </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4421" target="buggies">LPP-4421: linkdialog driver can't make links </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4403" target="buggies">LPP-4403: 4.0 history system should warn if first argument to save() isn't a string </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4401" target="buggies">LPP-4401: Namespace separators are not recognized in datapaths - updated </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4400" target="buggies">LPP-4400: Editor for live code examples in dguide isn't working </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4394" target="buggies">LPP-4394: "LzGlobalMouse.onmousemove" is way to slow for "LzView.prototype.getMouse.dependencies" in SWF </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4356" target="buggies">LPP-4356: link dialog does not make links (regression from r5852) </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4347" target="buggies">LPP-4347: baserichedittext-test.lzx fails
-</a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-3988" target="buggies">LPP-3988: Redundant 'validate' warnings on binary library compiles </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-3738" target="buggies">LPP-3738: Remove DHTML startup warning message for IceWeasel browser </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-3431" target="buggies">LPP-3431: Ensure richtext and richtexteditor work in OL4/SWF </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-3024" target="buggies">LPP-3024: If a css'd resource is not found, an error or warning should be issued </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-2760" target="buggies">LPP-2760: Decide how the data API's should handle null values </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4663" target="buggies">LPP-4663: Class hierarchy doc not found in binary dist </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4504" target="buggies">LPP-4504: Calendar demo presents no sample data </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4496" target="buggies">LPP-4496: Links to demo apps in refguide are wrongly mapped </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4470" target="buggies">LPP-4470: Make a test/driver file for lzcombobox </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4443" target="buggies">LPP-4443: Don't warn on undefined style constraints when constant specified </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4375" target="buggies">LPP-4375: Fix lztest-text.lzx </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4374" target="buggies">LPP-4374: Fix lztest-stableborderlayout.lzx </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4351" target="buggies">LPP-4351: richtexteditarea-test has warnings and errors in debugger, but lzunit test passes
-</a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4350" target="buggies">LPP-4350: linkdialog-test fails </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4349" target="buggies">LPP-4349: test-baseedittext.lzx fails </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-4348" target="buggies">LPP-4348: rich-text: formatfontsize test fails
-</a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-1605" target="buggies">LPP-1605: ctor precedence is wrong </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-1417" target="buggies">LPP-1417: Allow backtracing to be invoked from the developer console </a></li>
-<li><a href="http://jira.openlaszlo.org/jira/browse/LPP-1635" target="buggies">LPP-1635: runtime warning on richtexteditarea test </a></li>
-</ul>
-
-
-</body>
+        <title>
+            OpenLaszlo 4.0.7 Release Notes
+        </title>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+        <link rel="stylesheet" href="../lps/includes/explore.css" type="text/css" />
+        <link rel="SHORTCUT ICON" href="http://www.laszlosystems.com/images/laszlo.ico" />
+    </head>
+    <body class="release-notes">
+        <h1>
+            Release Notes for OpenLaszlo 4.1.x
+        </h1>
+        <p class="bodytext">
+            OpenLaszlo 4.1.x is a series of nightly builds from live development. For production, we recommend using OpenLaszlo 4.0.7.
+        </p>
+        <p>
+            For every release, we rely on the OpenLaszlo community to help ensure the quality of the platform release and to determine its future direction. To propose or participate in discussion of new features, see <a href="http://wiki.openlaszlo.org/Enhancement_Proposals">the wiki.</a> We encourage you to report any problems, and to make suggestions for enhancements, through our <a href="http://www.openlaszlo.org/jira/browse/LPP">JIRA bug tracking system.</a>
+        </p>
+        <p>
+            Please see the <a href="http://download.openlaszlo.org/4.0.0/release-notes.html">OpenLaszlo 4.0 Release Notes</a> for an overview of significant changes since 3.x.
+        </p>
+        <h1>
+            New Features in 4.1.x
+        </h1>
+        <p>
+            TBD
+        </p>
+        <h1>
+            Bugs Fixed in 4.1.x
+        </h1>
+        <p>
+            TBD
+        </p>
+    </body>
 </html>

Modified: openlaszlo/branches/devildog/docs/src/build.xml
===================================================================
--- openlaszlo/branches/devildog/docs/src/build.xml	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/build.xml	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,12 +1,26 @@
 <?xml version="1.0"?>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
+ 
 <!DOCTYPE project [
     <!ENTITY build_opt SYSTEM "file:../../build-tools/build-opt.xml">
 ]>
 
+<!-- 
+  To understand the documentation toolchain, please consult the developer's guide, 
+  in Part XI, Documentation Tools and Guidelines, and especially in 
+  Chapter 52, The Documentation Toolchain. 
+  
+  In a source build of OpenLaszlo, those chapters can be found at
+  http://localhost:8080/trunk/docs/developers/developers.doctools.html
+  
+  Currently, those chapters can be found live at the following URL
+  http://labs.openlaszlo.org/trunk-nightly/docs/developers/developers.doctools.html
+  
+  [bshine 12.29.2007]
+-->
 <project name="reference" default="build">
     
   &build_opt;
@@ -40,7 +54,7 @@
         <property name="show.fixmes" value="0"/>
       </then>
       <else>
-        <property name="draft.mode" value="yes"/>
+        <property name="draft.mode" value="no"/> <!-- [bshine 12.30.2007] turn off draft bg because it bothers me ] -->
         <property name="show.comments" value="1"/>
         <if><equals arg1="${release}" arg2="Internal" casesensitive="true" trim="true"/>
         <then>
@@ -279,12 +293,15 @@
 
   </target> <!-- book.html.generate -->
 
-  <target name="book.resources.generate" depends="init">
-    <!--- @param local.input.dir
-          @param local.build.dir
-          @param local.output.dir
+  <!-- Copy resources (programs, images, data, resources) from the source directory to the output directory.
+    Note that this doesn't actively "generate" anything, it just copies stuff around. -->
+  <target name="book.resources.generate" depends="init"
+    description="Copy resources (programs, images, data, resources) from the source directory to the output directory.">
+    <!--- @param local.input.dir path to the source files on disk
+          @param local.build.dir where to put build intermediates
+          @param local.output.dir where to put the final product
        -->
-    <!-- Extract the lzx (and other) files from the *.in files. -->
+    <!-- Extract the lzx (and other) files from the input files. -->
     <mkdir dir="${local.output.dir}/programs"/>
     <copy todir="${local.output.dir}/programs">
       <fileset dir="${local.build.dir}/programs" includes="*.lzx"/>
@@ -1123,6 +1140,7 @@
     <copy todir="${developers.build.dir}">
       <fileset dir="${developers.input.dir}"/>
     </copy>
+    <copy todir="${developers.build.dir}" file="${lps.server.dir}/lib/js2doc.rnc"/>    
   </target>
   
   <target name="developers.resources" depends="developers.preprocess">
@@ -1148,7 +1166,7 @@
     <antcall target="dbk.examples.preprocess" inheritAll="true">
       <param name="local.input.dir" value="${docs.build.dir}"/> <!-- $LPS_HOME/docs/src/build --> 
       <param name="local.input.index" value="developers/${developers.input.index}"/>
-      <param name="local.output.dir" value="${developers.output.dir}"/> <!-- $LPS_HOME/docs/developers -->
+      <param name="local.output.dir" value="${developers.build.dir}"/> 
       <param name="local.output.index" value="${developers.dbk.index}"/>
       <param name="local.worksheet" value="xsl/dbkpreprocessexamples.xsl"/>
     </antcall>
@@ -1367,14 +1385,14 @@
     </foreach>
   </target>
   
-  <target name="contributors" depends="contributors.preprocess,contribref.resources,contributors.resources">
+  <target name="contributors" depends="contributors.preprocess,contributors.resources">
     <antcall target="book.html.generate" inheritAll="true">
       <param name="local.input.dir" value="${docs.output.dir}"/>
       <param name="local.input.index" value="contribindex.dbk"/>
       <param name="local.output.dir" value="${docs.output.dir}"/>
       <param name="local.output.index" value="contribindex.html"/>
       <param name="local.output.depends.dir" value="${docs.output.dir}"/>
-      <param name="local.output.depends.set" value="contribindex.html contributors/*.html contribref/*.html"/>
+      <param name="local.output.depends.set" value="contribindex.html contributors/*.html"/>
       <param name="local.worksheet" value="xsl/refguide-html.xsl"/>
     </antcall>
   </target>

Modified: openlaszlo/branches/devildog/docs/src/contribset.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/contribset.dbk	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/contribset.dbk	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <!--DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
@@ -12,8 +12,10 @@
       <xi:fallback><para>Missing: Contributors Guide</para></xi:fallback>
     </xi:include>
 
+    <!-- don't include the reference 
     <xi:include href="contribref/index.dbk">
       <xi:fallback><para>Missing: Reference</para></xi:fallback>
     </xi:include>
+    -->
 
 </set>

Deleted: openlaszlo/branches/devildog/docs/src/contributors/branch-management.dbk

Deleted: openlaszlo/branches/devildog/docs/src/contributors/change-submission.dbk

Deleted: openlaszlo/branches/devildog/docs/src/contributors/doc-toolchain.dbk

Deleted: openlaszlo/branches/devildog/docs/src/contributors/docbook-code.dbk

Deleted: openlaszlo/branches/devildog/docs/src/contributors/docbook-local.dbk

Deleted: openlaszlo/branches/devildog/docs/src/contributors/images/doc-toolchain.graffle

Deleted: openlaszlo/branches/devildog/docs/src/contributors/images/doc-toolchain.png

Deleted: openlaszlo/branches/devildog/docs/src/contributors/js2doc-local.dbk

Deleted: openlaszlo/branches/devildog/docs/src/contributors/js2doc-ref.dbk

Deleted: openlaszlo/branches/devildog/docs/src/contributors/licenses.dbk

Deleted: openlaszlo/branches/devildog/docs/src/contributors/release-management.dbk

Deleted: openlaszlo/branches/devildog/docs/src/contributors/source-build.dbk

Copied: openlaszlo/branches/devildog/docs/src/developers/branch-management.dbk (from rev 7717, openlaszlo/trunk/docs/src/developers/branch-management.dbk)

Modified: openlaszlo/branches/devildog/docs/src/developers/browser-integration.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/browser-integration.dbk	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/browser-integration.dbk	2008-01-04 16:20:15 UTC (rev 7726)
@@ -502,13 +502,29 @@
             <example role="live-example">
                 <title>Flash player version-detecting wrapper</title>
                 <programlisting>
-        <!-- remove para tags for valid DocBook LI, LPP-4594 9/3/2007   -->
-        <!-- para is not a legal child of programlisting -->
-          <!-- <para role="fixme"> -->
-                    <remark role="fixme">
-                        <emphasis role="para-label">FIXME:</emphasis>
-                    </remark>
-          <!-- </para> -->
+&lt;!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
+&lt;html&gt;
+   &lt;head&gt;
+      &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;
+   
+      &lt;link rel="SHORTCUT ICON" href="http://www.laszlosystems.com/favicon.ico"&gt;
+      &lt;title&gt;OpenLaszlo Application&lt;/title&gt;&lt;style type="text/css"&gt;
+      html, body { margin: 0; padding: 0; height: 100%; }
+      body { background-color: #ffffff; }
+    &lt;/style&gt;&lt;script language="JavaScript1.1" src="/lps-dev/lps/includes/vbembed.js" 
+    type="text/javascript"&gt;&lt;/script&gt;&lt;script src="/lps-dev/lps/includes/embed.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/head&gt;
+   &lt;body&gt;&lt;script type="text/javascript"&gt;
+          actualVersion = detectFlash();
+          requiredVersion = 6;
+          if (isIE &amp;&amp; isWin || actualVersion &gt;= requiredVersion) {
+            lzEmbed({url: 'graceie.lzx?lzt=swf', bgcolor: '#ffffff', width: '500', height: '200'}, requiredVersion);
+          } else {
+            document.write('This application requires Flash player ' + requiredVersion + '. 
+            &lt;a href="http://www.macromedia.com/go/getflashplayer" target="fpupgrade"&gt;Click here&lt;/a&gt; to upgrade.');
+          }
+        &lt;/script&gt;&lt;/body&gt;
+&lt;/html&gt;
                 </programlisting>
             </example>
             <para>Depending on which version is running, you may wish to
@@ -631,17 +647,14 @@
     globals.</para>
         <example role="live-example">
             <title>Passing query parameters to LZX application</title>
-            <programlisting>
-        <!-- remove para tags for valid DocBook LI, LPP-4594 9/3/2007   -->
-        <!-- para is not a legal child of programlisting -->
-        <!-- <para role="fixme"> -->
-                <remark role="fixme">
-                    <emphasis role="para-label">FIXME:</emphasis>example
-          showing passing of parameters</remark>
-        <!-- </para> -->
-            </programlisting>
+              <programlisting>
+&lt;script type="text/javascript"&gt;
+   lzEmbed({url: 'mainApplication'+screenW+'.lzx?lzt=swf', bgcolor: '#394660', width: screenW, height: screenH});
+&lt;/script&gt;
+
+</programlisting>
         </example>
-        <para />
+  
         <section>
             <title>Query Parameters and Global Variables</title>
             <para>Once the data has been passed in you can simply access

Copied: openlaszlo/branches/devildog/docs/src/developers/change-submission.dbk (from rev 7717, openlaszlo/trunk/docs/src/developers/change-submission.dbk)

Copied: openlaszlo/branches/devildog/docs/src/developers/data_app.dbk (from rev 7717, openlaszlo/trunk/docs/src/developers/data_app.dbk)

Copied: openlaszlo/branches/devildog/docs/src/developers/doc-backwards-xform.dbk (from rev 7717, openlaszlo/trunk/docs/src/developers/doc-backwards-xform.dbk)

Copied: openlaszlo/branches/devildog/docs/src/developers/doc-toolchain.dbk (from rev 7717, openlaszlo/trunk/docs/src/developers/doc-toolchain.dbk)

Copied: openlaszlo/branches/devildog/docs/src/developers/docbook-code.dbk (from rev 7717, openlaszlo/trunk/docs/src/developers/docbook-code.dbk)

Copied: openlaszlo/branches/devildog/docs/src/developers/docbook-local.dbk (from rev 7717, openlaszlo/trunk/docs/src/developers/docbook-local.dbk)

Modified: openlaszlo/branches/devildog/docs/src/developers/fonts.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/fonts.dbk	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/fonts.dbk	2008-01-04 16:20:15 UTC (rev 7726)
@@ -86,6 +86,7 @@
 <example role="live-example">
    <title>Using device fonts</title>
    <programlisting language="lzx">
+   <parameter role="canvas">height: 400, width: 800</parameter>
    <textobject><textdata fileref="programs/fonts-$1.lzx"/></textobject> 
    </programlisting>
 </example>
@@ -101,6 +102,7 @@
 <example role="live-example">
    <title>setting the default font on the canvas</title>
    <programlisting language="lzx">
+   <parameter role="canvas">height: 100, width: 500, bgcolor: 'gray'</parameter>
    <textobject><textdata fileref="programs/fonts-$2.lzx"/></textobject> 
    </programlisting>
 </example>

Copied: openlaszlo/branches/devildog/docs/src/developers/images/doc-ant-build-developers.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/doc-ant-build-developers.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/doc-ant-build.graffle (from rev 7717, openlaszlo/trunk/docs/src/developers/images/doc-ant-build.graffle)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/doc-ant-build.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/doc-ant-build.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/doc-toolchain-is-docbook.graffle (from rev 7717, openlaszlo/trunk/docs/src/developers/images/doc-toolchain-is-docbook.graffle)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/doc-toolchain-is-docbook.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/doc-toolchain-is-docbook.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/doc-toolchain.graffle (from rev 7717, openlaszlo/trunk/docs/src/developers/images/doc-toolchain.graffle)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/doc-toolchain.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/doc-toolchain.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/doc_overview_simple.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/doc_overview_simple.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/doc_reference_details.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/doc_reference_details.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/docbook-to-html.graffle (from rev 7717, openlaszlo/trunk/docs/src/developers/images/docbook-to-html.graffle)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/docbook-to-html.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/docbook-to-html.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/js2doc2dbk.graffle (from rev 7717, openlaszlo/trunk/docs/src/developers/images/js2doc2dbk.graffle)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/js2doc2dbk.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/js2doc2dbk.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/reference-attributes-explanation.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/reference-attributes-explanation.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/reference-attributes-table.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/reference-attributes-table.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/reference-attributes.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/reference-attributes.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/reference-events.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/reference-events.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/reference-example-explanation.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/reference-example-explanation.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/reference-header-explanation.graffle (from rev 7717, openlaszlo/trunk/docs/src/developers/images/reference-header-explanation.graffle)

Deleted: openlaszlo/branches/devildog/docs/src/developers/images/reference-header-explanation.graffle/data.plist

Copied: openlaszlo/branches/devildog/docs/src/developers/images/reference-header-explanation.graffle/data.plist (from rev 7717, openlaszlo/trunk/docs/src/developers/images/reference-header-explanation.graffle/data.plist)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/reference-header-explanation.png (from rev 7717, openlaszlo/trunk/docs/src/developers/images/reference-header-explanation.png)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/reference-methods-explanation.graffle (from rev 7717, openlaszlo/trunk/docs/src/developers/images/reference-methods-explanation.graffle)

Deleted: openlaszlo/branches/devildog/docs/src/developers/images/reference-methods-explanation.graffle/data.plist

Copied: openlaszlo/branches/devildog/docs/src/developers/images/reference-methods-explanation.graffle/data.plist (from rev 7717, openlaszlo/trunk/docs/src/developers/images/reference-methods-explanation.graffle/data.plist)

Copied: openlaszlo/branches/devildog/docs/src/developers/images/reference-overview-explanation.graffle (from rev 7717, openlaszlo/trunk/docs/src/developers/images/reference-overview-explanation.graffle)

Deleted: openlaszlo/branches/devildog/docs/src/developers/images/reference-overview-explanation.graffle/data.plist

Copied: openlaszlo/branches/devildog/docs/src/developers/images/reference-overview-explanation.graffle/data.plist (from rev 7717, openlaszlo/trunk/docs/src/developers/images/reference-overview-explanation.graffle/data.plist)

Modified: openlaszlo/branches/devildog/docs/src/developers/index.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/index.dbk	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/index.dbk	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,10 +1,23 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <!--DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
-                 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"-->
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"-->
+<!-- 
+  To understand the documentation toolchain, please consult the developer's guide, 
+  in Part XI, Documentation Tools and Guidelines, and especially in 
+  Chapter 52, The Documentation Toolchain. 
+  
+  In a source build of OpenLaszlo, those chapters can be found at
+  http://localhost:8080/trunk/docs/developers/developers.doctools.html
+  
+  Currently, those chapters can be found live at the following URL
+  http://labs.openlaszlo.org/trunk-nightly/docs/developers/developers.doctools.html
+  
+  [bshine 12.29.2007]
+-->
 <book xmlns:xi="http://www.w3.org/2003/XInclude">
   <?dbhtml dir="developers" ?>
   <?dbhtml filename="index.html" ?>
@@ -76,7 +89,7 @@
     <xi:include href="data-structures.dbk"/>
     <!-- xi:include href="data-overview.dbk"/-->
     <xi:include href="databinding.dbk"/>
-    <xi:include href="tutorials/data_app.dbk"/>
+    <xi:include href="data_app.dbk"/>
     <!-- xi:include href="static-databinding.dbk"/ -->
     <!-- xi:include href="dynamic-databinding.dbk"/ -->
     <!-- xi:include href="two-way-databinding.dbk"/ -->
@@ -85,27 +98,19 @@
     <!-- xi:include href="dataprovider.dbk"/ -->
   </part>
    
-  <part id="developers.media">
-    <title>Media</title>
+  <part id="developers.advanced">
+    <title>Advanced Topics</title>
+    <xi:include href="survey-chapter.dbk"/>    
     <xi:include href="video.dbk"/>
+    <xi:include href="performance.dbk"/>
+    <xi:include href="cookies.dbk"/>    
   </part>
    
-  <part id="developers.application">
-    <title>Examining Applications</title>
-    <xi:include href="survey-chapter.dbk"/>
-  </part>
    
-  <part id="developers.performance">
-    <title>Performance Monitoring and Tuning</title>
-    <!--xi:include href="data-pooling.dbk"/-->
-    <xi:include href="performance.dbk"/>
-    <?ignore <chapter id="colors"><title>Color in Laszlo Applications</title></chapter>?>
-  </part>
-  
+  <?ignore 
   <part id="developers.server-integration">
     <title>Server Integration</title>
     <!--xi:include href="integrating-existing.dbk"/-->
-    <xi:include href="cookies.dbk"/>
     <!--xi:include href="persistent_connection.dbk"/-->
     <!--xi:include href="logging.dbk"/-->
     <!--xi:include href="lps-request-types.dbk"/-->
@@ -113,6 +118,7 @@
     <!--xi:include href="deployers-guide.dbk"/-->
     <!--xi:include href="caching.dbk"/-->
    </part>
+   ?>
 
   <?part id="developers.advanced">
     <title>Power Programming in LZX</title>
@@ -138,12 +144,44 @@
     <xi:include href="editing-lzx.dbk"/>
     <xi:include href="debugging.dbk"/>
     <xi:include href="lzunit.dbk"/>
+    <xi:include href="source-build.dbk">
+      <xi:fallback><para>Missing: Building from Source</para></xi:fallback>
+    </xi:include>    
+  </part>  
+  
+  <part id="developers.doctools">
+    <title>Documentation Tools and Guidelines</title>
+    
+    <xi:include href="doc-toolchain.dbk">
+      <xi:fallback><para>Missing: Doc Tool Chain</para></xi:fallback>
+    </xi:include>
+
+    <xi:include href="doc-backwards-xform.dbk">
+      <xi:fallback><para>Missing: Doc Backwards Transformation</para></xi:fallback>
+    </xi:include>
+    
+    
+    <xi:include href="docbook-local.dbk">
+      <xi:fallback><para>Missing: Docbook Local Style Guide</para></xi:fallback>
+    </xi:include>
+    
+    <xi:include href="docbook-code.dbk">
+      <xi:fallback><para>Missing: Docbook Code Comment Style Guide</para></xi:fallback>
+    </xi:include>
+    
+    <xi:include href="js2doc-ref.dbk">
+      <xi:fallback><para>Missing: JS2Doc Reference</para></xi:fallback>
+    </xi:include>
+    
   </part>
   
   <part id="developers.appendices">
     <title>Appendices</title>
     <xi:include href="initialization-and-instantiation.dbk"/>
     <xi:include href="ecmascript-and-lzx.dbk"/>
+    <xi:include href="licenses.dbk">
+      <xi:fallback><para>Missing: Licenses Reference</para></xi:fallback>
+    </xi:include>    
   </part>
 
   <!--index/-->

Copied: openlaszlo/branches/devildog/docs/src/developers/js2doc-local.dbk (from rev 7717, openlaszlo/trunk/docs/src/developers/js2doc-local.dbk)

Copied: openlaszlo/branches/devildog/docs/src/developers/js2doc-ref.dbk (from rev 7717, openlaszlo/trunk/docs/src/developers/js2doc-ref.dbk)

Copied: openlaszlo/branches/devildog/docs/src/developers/licenses.dbk (from rev 7717, openlaszlo/trunk/docs/src/developers/licenses.dbk)

Copied: openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$1.lzx (from rev 7717, openlaszlo/trunk/docs/src/developers/programs/data_app-$1.lzx)

Copied: openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$3.lzx (from rev 7717, openlaszlo/trunk/docs/src/developers/programs/data_app-$3.lzx)

Copied: openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$4.lzx (from rev 7717, openlaszlo/trunk/docs/src/developers/programs/data_app-$4.lzx)

Copied: openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$5.lzx (from rev 7717, openlaszlo/trunk/docs/src/developers/programs/data_app-$5.lzx)

Copied: openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$6.lzx (from rev 7717, openlaszlo/trunk/docs/src/developers/programs/data_app-$6.lzx)

Copied: openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$8.lzx (from rev 7717, openlaszlo/trunk/docs/src/developers/programs/data_app-$8.lzx)

Copied: openlaszlo/branches/devildog/docs/src/developers/programs/data_app-$9.lzx (from rev 7717, openlaszlo/trunk/docs/src/developers/programs/data_app-$9.lzx)

Modified: openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$15.lzx
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$15.lzx	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$15.lzx	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,54 +1,28 @@
+<canvas height="150" debug="true">
+  <debug x="150"/>
+  <dataset name="onion">
+    <layer order="1"><layer><layer>core</layer></layer></layer>
+  </dataset>
 
-<canvas height="200" >
-  <dataset name="numbers"/>
-  <datapointer name="top" xpath="numbers:/"/>
-  
-  <datapointer name="numptr">
-    <handler name="ondata" args="d">
-      // d is LzDataElement object 
-      result.update(d.nodeName)
-    </handler>
-  </datapointer>
-  
-  <simplelayout spacing="5"/>
-  <text>Type in a number and press the button or the Enter key</text>
-  <view>
-    <simplelayout spacing="10" axis="x"/>
-    <edittext name="input">
-      <handler name="onkeyup" args="k">
-        if ( k == 13 ) {
-          parent.bSend.compute();
-        }
+  <view datapath="onion:/layer">
+     <simplelayout spacing="5"/>
+     <view width="${100 / this.data}" height="${100 / this.data}" 
+           bgcolor="0x09d055" datapath="@order" 
+           opacity="${Math.min(1, this.data / 3)}"/>
+    
+    <button text="Peel next layer">
+      <handler name="onclick">
+        with (parent.datapath) {
+          Debug.write(data)
+          if (!selectChild()) this.setAttribute('enabled', false) 
+          else setNodeAttribute('order', Number(p.parentNode.attributes['order']) + 1)
+         }
       </handler>
-    </edittext>
-    <button name="bSend" text="Add">
-      <handler name="onclick" method="compute"/>
-        <method name="compute">
-        top.addNode(parent.input.getText())
-        var end = top.xpathQuery('*/last()')
-        numptr.setAttribute('xpath', 'numbers:/*[' + end + ']')
-        parent.input.clearText()
-      </method>
     </button>
-</view>
-<view height="100" >
-    <text bgcolor="0xcecece" datapath="numbers:/*/name()"/>
-    <wrappinglayout axis="y" spacing="3"/>
   </view>
-  
-  <view>
-    <attribute name="sum" value="$once{0}"/>
-    <simplelayout axis="x"/>
-    <text><b>AVG: </b></text>
-    <text id="result" fgcolor="blue" fontstyle="bold">
-      <method name="update" args="v">
-        parent.sum += Number(v)
-        this.setAttribute('text', parent.sum / top.p.childNodes.length)
-      </method>
-    </text>
-  </view>
 </canvas>
+
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->

Modified: openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$20.lzx
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$20.lzx	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$20.lzx	2008-01-04 16:20:15 UTC (rev 7726)
@@ -4,7 +4,7 @@
   <simplelayout axis="x" spacing="20"/>
   
   <view name="contacts" height="150" width="100">
-    <view bgcolor="0xe0e0e0" datapath="phonebook:/contacts/contact"
+    <view bgcolor="0xe0e0e0" datapath="phonebook:/phonebook/contact"
           onmouseover="setAttribute('bgcolor', 0xc0c0c0)" onmouseout="setAttribute('bgcolor', 0xe0e0e0)"
           onclick="details.datapath.setAttribute('p', this.datapath.p)">
       <simplelayout axis="x" spacing="5"/>
@@ -24,6 +24,6 @@
   </view>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->

Modified: openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$22.lzx
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$22.lzx	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$22.lzx	2008-01-04 16:20:15 UTC (rev 7726)
@@ -6,7 +6,7 @@
           onclick="details.datapath.selectPrev()"/>
   
   <view name="details" options="releasetolayout" height="150">
-    <datapath xpath="phonebook:/contacts/contact[1]"/>
+    <datapath xpath="phonebook:/phonebook/contact[1]"/>
     <text datapath="@firstName"/>
     <text datapath="@lastName"/>
     <text datapath="@phone"/>
@@ -21,6 +21,6 @@
   <resizelayout axis="x" spacing="10"/>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->

Modified: openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$23.lzx
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$23.lzx	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$23.lzx	2008-01-04 16:20:15 UTC (rev 7726)
@@ -6,13 +6,13 @@
     <handler name="onclick">
       with (details.datapath) {
         selectPrev()
-        setXPath('phonebook:/contacts/contact[' + getNodeOffset() + ']' )
+        setXPath('phonebook:/phonebook/contact[' + getNodeOffset() + ']' )
       }
     </handler>
   </button>
   
   <view name="details" options="releasetolayout" height="150">
-    <datapath xpath="phonebook:/contacts/contact[1]"/>
+    <datapath xpath="phonebook:/phonebook/contact[1]"/>
     <text datapath="@firstName"/>
     <text datapath="@lastName"/>
     <text datapath="@phone"/>
@@ -26,7 +26,7 @@
     <handler name="onclick">
       with (details.datapath) {
         selectNext()
-        setAttribute('xpath', 'phonebook:/contacts/contact[' + getNodeOffset() + ']')
+        setAttribute('xpath', 'phonebook:/phonebook/contact[' + getNodeOffset() + ']')
       }
     </handler>
   </button>
@@ -34,6 +34,6 @@
   <resizelayout axis="x" spacing="10"/>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->

Modified: openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$26.lzx
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$26.lzx	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$26.lzx	2008-01-04 16:20:15 UTC (rev 7726)
@@ -37,7 +37,7 @@
   </button>
   
   <view name="all">
-    <datapath xpath="phonebook:/contacts/contact" pooling="true"/>
+    <datapath xpath="phonebook:/phonebook/contact" pooling="true"/>
     <view>
       <simplelayout axis="x"/>
       <checkbox width="30" datapath="@checked">
@@ -59,6 +59,6 @@
   </view>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->

Modified: openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$9.lzx
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$9.lzx	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$9.lzx	2008-01-04 16:20:15 UTC (rev 7726)
@@ -4,7 +4,7 @@
   
   <datapointer xpath="myData:/" ondata="processData()">
     <method name="processData">
-      this.selectChild(2); 
+      this.selectChild(1); 
       do {
         if (this.xpathQuery( '@show' ) == 'south park') {
             Debug.write(this.xpathQuery('lastName/text()'));
@@ -14,6 +14,6 @@
   </datapointer>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->

Modified: openlaszlo/branches/devildog/docs/src/developers/programs/introductory-classes-$17.lzx
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/programs/introductory-classes-$17.lzx	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/programs/introductory-classes-$17.lzx	2008-01-04 16:20:15 UTC (rev 7726)
@@ -2,7 +2,7 @@
 <canvas debug="true">
   <script>
     var foo = new LzView(canvas, {width: 50, height: 50, 
-                                  x: 50, y: 100,
+                                  x: 150, y: 0,
                                   bgcolor: 0,
                                   name: "myview"});
   </script>
@@ -15,6 +15,6 @@
   </button>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** --> 

Modified: openlaszlo/branches/devildog/docs/src/developers/programs/resources/phonebook.xml
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/programs/resources/phonebook.xml	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/programs/resources/phonebook.xml	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,10 +1,10 @@
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
-<contacts>
+<phonebook>
     <contact firstName="John" lastName="Smith" phone="617-555-7855" email="jsmith at mail.com"/> 
     <contact firstName="Karl" lastName="Oberschnautzer" phone="111-555-9713" email="kobe at mail.com"/> 
     <contact firstName="Lisa" lastName="Jones" phone="415-555-8743" email="ljones at mail.com"/> 
     <contact firstName="Mary" lastName="Brown" phone="212-555-5211" email="mbrown at mail.com"/>
-</contacts> 
+</phonebook> 

Copied: openlaszlo/branches/devildog/docs/src/developers/source-build.dbk (from rev 7717, openlaszlo/trunk/docs/src/developers/source-build.dbk)

Modified: openlaszlo/branches/devildog/docs/src/developers/tutorials/comp-intro.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/tutorials/comp-intro.dbk	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/tutorials/comp-intro.dbk	2008-01-04 16:20:15 UTC (rev 7726)
@@ -46,7 +46,8 @@
 <example role="live-example">
    <title>Components miscellany</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/comp-intro-$1.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/comp-intro-$1.lzx"/></textobject>
+       <parameter role="canvas">height: 500, width: 800</parameter>
    </programlisting>
 </example>
 
@@ -303,7 +304,8 @@
 <example role="live-example">
    <title>Components example-tags only</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/comp-intro-$2.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/comp-intro-$2.lzx"/></textobject>
+       <parameter role="canvas">height: 100</parameter>       
    </programlisting>
 </example>
 <?example role="live-example"><title>Components example-tags only</title><programlisting role="lzx-embednew"><filename>comp-intro-$2.lzx</filename><parameter/><code>
@@ -360,7 +362,8 @@
 <example role="live-example">
    <title>Creating components from script</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/comp-intro-$3.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/comp-intro-$3.lzx"/></textobject>
+       <parameter role="canvas">height: 150</parameter>
    </programlisting>
 </example>
 <?example role="live-example"><title>Creating components from script</title><programlisting role="lzx-embednew"><filename>comp-intro-$3.lzx</filename><parameter/><code>
@@ -403,7 +406,8 @@
 <example role="live-example">
    <title>Component APIs</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/comp-intro-$4.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/comp-intro-$4.lzx"/></textobject>
+       <parameter role="canvas">height: 150</parameter>       
    </programlisting>
 </example>
 <?example role="live-example"><title>Component APIs</title><programlisting role="lzx-embednew"><filename>comp-intro-$4.lzx</filename><parameter/><code>
@@ -449,7 +453,8 @@
 <example role="live-example">
    <title>Data-Driven Components</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/comp-intro-$5.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/comp-intro-$5.lzx"/></textobject>
+       <parameter role="canvas">height: 200, width:800</parameter>       
    </programlisting>
 </example>
 <?example role="live-example"><title>Data-Driven Components</title><programlisting role="lzx-embednew"><filename>comp-intro-$5.lzx</filename><parameter/><code>

Deleted: openlaszlo/branches/devildog/docs/src/developers/tutorials/data_app.dbk

Modified: openlaszlo/branches/devildog/docs/src/developers/tutorials/laszlo_basics.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/tutorials/laszlo_basics.dbk	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/tutorials/laszlo_basics.dbk	2008-01-04 16:20:15 UTC (rev 7726)
@@ -44,6 +44,7 @@
    <title>Empty Canvas</title>
    <programlisting language="lzx">
    <textobject><textdata fileref="programs/laszlo_basics-$1.lzx"/></textobject> 
+     <parameter role="canvas">height: 100, width: 500, bgcolor: 'green'</parameter>
    </programlisting>
 </example>
 
@@ -55,8 +56,6 @@
 &lt;/canvas&gt;
 </programlisting><?lzx-edit programs/laszlo_basics-$1.lzx></example?>
 
-
-
 <para>For this simple example we have set the background color to green, just to show that it's there.  If you don't set a background color for the
 canvas, it will be rendered white.  (Throughout the rest of this tutorial no background color will be specified for the canvas.) Now let's
 put a window on a white canvas. 
@@ -65,7 +64,8 @@
 <example role="live-example">
    <title>Simple_window</title>
    <programlisting language="lzx">
-   <textobject><textdata fileref="programs/laszlo_basics-$2.lzx"/></textobject> 
+   <textobject><textdata fileref="programs/laszlo_basics-$2.lzx"/></textobject>
+     <parameter role="canvas">height: 100, width: 500</parameter>
    </programlisting>
 </example>
 

Modified: openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data-tutorial-$6.lzx
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data-tutorial-$6.lzx	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data-tutorial-$6.lzx	2008-01-04 16:20:15 UTC (rev 7726)
@@ -4,7 +4,7 @@
   
   <datapointer xpath="myData:/" ondata="processData()">
     <method name="processData">
-      this.selectChild(2); 
+      this.selectChild(1); 
       do {
         if (this.xpathQuery( '@show' ) == 'south park') {
             Debug.write(this.xpathQuery('firstName/text()'));
@@ -14,6 +14,6 @@
   </datapointer>
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->

Deleted: openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$1.lzx

Deleted: openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$3.lzx

Deleted: openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$4.lzx

Deleted: openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$5.lzx

Deleted: openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$6.lzx

Deleted: openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$8.lzx

Deleted: openlaszlo/branches/devildog/docs/src/developers/tutorials/programs/data_app-$9.lzx

Modified: openlaszlo/branches/devildog/docs/src/developers/tutorials/scripting.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/tutorials/scripting.dbk	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/developers/tutorials/scripting.dbk	2008-01-04 16:20:15 UTC (rev 7726)
@@ -125,7 +125,7 @@
 
 <para>Functions are global to the LZX document, and they follow the same scope rules as JavaScript.</para>
 
-<para/></section><section><title>Methods</title>
+<para/></section><section id="tutorial-methods"><title>Methods</title>
 
 <para>Methods are in some ways similar to functions. They contain blocks of code between <indexterm><primary>method</primary></indexterm><sgmltag class="element">&lt;method&gt;</sgmltag><remark role="fixme">[unknown tag]</remark>
 <!--unknown tag: method-->

Modified: openlaszlo/branches/devildog/docs/src/reference/index.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/reference/index.dbk	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/reference/index.dbk	2008-01-04 16:20:15 UTC (rev 7726)
@@ -3,6 +3,19 @@
 * Copyright 2006 Laszlo Systems, Inc.  All Rights Reserved.                   *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
+<!-- 
+  To understand the documentation toolchain, please consult the developer's guide, 
+  in Part XI, Documentation Tools and Guidelines, and especially in 
+  Chapter 52, The Documentation Toolchain. 
+  
+  In a source build of OpenLaszlo, those chapters can be found at
+  http://localhost:8080/trunk/docs/developers/developers.doctools.html
+  
+  Currently, those chapters can be found live at the following URL
+  http://labs.openlaszlo.org/trunk-nightly/docs/developers/developers.doctools.html
+  
+  [bshine 12.29.2007]
+-->
 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
                  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
 <book xmlns:xi="http://www.w3.org/2003/XInclude">

Modified: openlaszlo/branches/devildog/docs/src/reference/welcome.html
===================================================================
--- openlaszlo/branches/devildog/docs/src/reference/welcome.html	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/reference/welcome.html	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,18 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
+<!-- 
+  To understand the documentation toolchain, please consult the developer's guide, 
+  in Part XI, Documentation Tools and Guidelines, and especially in 
+  Chapter 52, The Documentation Toolchain. 
+  
+  In a source build of OpenLaszlo, those chapters can be found at
+  http://localhost:8080/trunk/docs/developers/developers.doctools.html
+  
+  Currently, those chapters can be found live at the following URL
+  http://labs.openlaszlo.org/trunk-nightly/docs/developers/developers.doctools.html
+  
+  [bshine 12.29.2007]
+-->
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <title>LZX 4.1.x Reference Manual</title>
@@ -107,6 +119,6 @@
 </body>
 </html>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->

Modified: openlaszlo/branches/devildog/docs/src/xsl/common-html.xsl
===================================================================
--- openlaszlo/branches/devildog/docs/src/xsl/common-html.xsl	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/xsl/common-html.xsl	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <!DOCTYPE xsl:stylesheet [
@@ -8,7 +8,21 @@
 <!ENTITY nbsp  "&#160;">
 
 ]>
+<!-- 
+  To understand the documentation toolchain, please consult the developer's guide, 
+  in Part XI, Documentation Tools and Guidelines, and especially in 
+  Chapter 52, The Documentation Toolchain. 
+  
+  In a source build of OpenLaszlo, those chapters can be found at
+  http://localhost:8080/trunk/docs/developers/developers.doctools.html
+  
+  Currently, those chapters can be found live at the following URL
+  http://labs.openlaszlo.org/trunk-nightly/docs/developers/developers.doctools.html
+  
+  [bshine 12.29.2007]
+-->
 
+
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                 xmlns:exslt="http://exslt.org/common"
                 xmlns:dyn="http://exslt.org/dynamic"
@@ -17,6 +31,7 @@
                 xmlns:dbk="http://docbook.org/ns/docbook"
                 exclude-result-prefixes="exslt xi dbk dyn saxon"
                 version="1.0">
+
   
   <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/>
   <xsl:import href="parameters.xsl"/>
@@ -42,9 +57,7 @@
   <xsl:param name="show.fixmes" select="1"/>
 
   <xsl:param name="textdata.default.encoding"/>
-  
-  <xsl:param name="warn.no.programlisting.canvas.width" select="false()"/>
-  
+    
   <xsl:param name="show.examples.debuginfo" select="false()" />
   
   <xsl:template name="base.book.name">
@@ -114,7 +127,6 @@
     <script type="text/javascript" language="JavaScript" src="{$rootpath}{$root.relative.lps.includes}embed-compressed.js"/>
     <script type="text/javascript" language="JavaScript" src="{$rootpath}includes/docs.js"/>
     <script type="text/javascript" language="JavaScript"><xsl:text>lzOptions = { ServerRoot: '</xsl:text><xsl:value-of select="$rootpath"/><xsl:text>', dhtmlKeyboardControl: false };</xsl:text></script>
-    <script type="text/javascript" language="JavaScript"><xsl:text>Lz.dhtmlEmbedLFC('</xsl:text><xsl:value-of select="$rootpath"/><xsl:text>/lps/includes/lfc/LFCdhtml.js');</xsl:text></script>
   </xsl:template>
   
   <xsl:template name="body.attributes">
@@ -198,14 +210,33 @@
     <xsl:apply-templates select="programlisting"/>
   </xsl:template>
   
-  <xsl:template match="programlisting[@language='lzx' and textobject/textdata/@fileref]">
+    <xsl:template match="programlisting[@language='lzx' and textobject/textdata/@fileref]">
     
-    
     <!-- extract necessary information from context -->
     <xsl:variable name="fname" select="textobject/textdata/@fileref"/>
     <xsl:variable name="query-parameters" select="parameter[@role='query']"/>
-    <xsl:variable name="canvas-parameters" select="parameter[@role='canvas']"/>
-
+    
+    <!--If no canvas parameters are specified, set height to 400px and width to 500.
+      This fixes     LPP-5207 change height of example code window from 200 to 400 pixels
+      [bshine 12.16.2007]
+    -->         
+    <xsl:variable name="canvas-parameters">
+      <!-- The problem here! is that! if we do select="parameter[@role='canvas']" and there is
+        more than one parameter with role='canvas' then the value of the $canvas-parameters 
+        variable is *only* the text contents of the *first* result of the xpath query. 
+        We want to have a comma-separated list of the canvas parameters! The
+        bug LPP-5207 results from almost always discarding the canvas height, which is 
+        almost always the second canvas parameter listed. To demonstrate that this is
+        indeed the problem, in dbkpreprocessexamples.xsl switch the order of emitting
+        the canvas parameters. Notice that we now have nice canvas heights, but bad
+        canvas widths. 
+        The solution! Iterate over the result node set! -->
+      <xsl:for-each select="parameter[@role='canvas']">
+        , <xsl:value-of select="."/> <!-- do a leading comma so that we don't have a stray comma at the end -->
+      </xsl:for-each>
+     </xsl:variable>
+      
+     
     <!-- format live example -->
     <xsl:variable name="live" select="ancestor::example[@role='live-example'] or ancestor::informalexample[@role='live-example']"/>
     <xsl:if test="$live">
@@ -214,8 +245,8 @@
           <xsl:if test="$query-parameters">&amp;<xsl:value-of select="$query-parameters[1]/text()"></xsl:value-of></xsl:if>
         </xsl:variable>
         <xsl:variable name="canvas-id" select="generate-id(.)"/>
-        <xsl:variable name="swf-embed-params">{url: '<xsl:value-of select="concat($fname, '?lzt=swf', $query-param)"/>', id: '<xsl:value-of select="concat($canvas-id,'SWF')"/>', <xsl:value-of select="$canvas-parameters"/>}</xsl:variable>
-        <xsl:variable name="dhtml-embed-params">{url: '<xsl:value-of select="concat($fname, '?lzt=html&amp;lzr=dhtml', $query-param)"/>', id: '<xsl:value-of select="concat($canvas-id,'DHTML')"/>', <xsl:value-of select="$canvas-parameters"/>}</xsl:variable>
+        <xsl:variable name="swf-embed-params">{url: '<xsl:value-of select="concat($fname, '?lzt=swf', $query-param)"/>', id: '<xsl:value-of select="concat($canvas-id,'SWF')"/>', history: false <xsl:value-of select="$canvas-parameters"/>}</xsl:variable>
+        <xsl:variable name="dhtml-embed-params">{url: '<xsl:value-of select="concat($fname, '?lzt=html&amp;lzr=dhtml', $query-param)"/>', id: '<xsl:value-of select="concat($canvas-id,'DHTML')"/>' <xsl:value-of select="$canvas-parameters"/>}</xsl:variable>
         <!-- To test examples in DHTML, uncomment the second script block below.
              If you don't want to see the SWF version as well, comment out the 
              first script block. -->
@@ -246,9 +277,6 @@
         <xsl:value-of select="$fname"/>
       </xsl:variable>
       <xsl:variable name="editbuttonimg">
-        <!-- TODO [bshine 10.19.2007]
-          If we're in the top-level directory, we only need to go ../includes to get to the edit button.
-          If we're in something/tutorial then we need to go up ../../includes -->
         <xsl:call-template name="relative.path.to.lpshome"/>
         <xsl:text>docs/includes/d_t_editbutton.gif</xsl:text>
       </xsl:variable>
@@ -307,11 +335,29 @@
     </xsl:choose>
   </xsl:template>
   
+  <!-- Although this template is associated with role="lzx-embednew",
+    it does not in fact seem to be the currently favored way of 
+    setting up live examples. It seems, rather, that it was *once* new,
+    and is no longer new, but rather, it is now old. Preferred to
+    this structure is the template defined at line 201 of this file,
+    with the first line 
+    <xsl:template match="programlisting[@language='lzx' and textobject/textdata/@fileref]">
+    
+    An example of this favored usage can be found in, for instance, 
+    docs/src/developers/tutorials/comp-intro.dbk : 
+        <example role="live-example">
+        <title>Components miscellany</title>
+        <programlisting language="lzx">
+        <textobject><textdata fileref="programs/comp-intro-$1.lzx"/></textobject> 
+        </programlisting>
+        </example>
+        
+    [bshine 12.16.2007]
+    -->
   <xsl:template match="programlisting[@role='lzx-embednew']">
     <xsl:variable name="fname" select="filename/text()"/>
     <xsl:variable name="query-parameters" select="parameter/text()"/>
-    <xsl:variable name="text" select="code/text()"/>
-    
+    <xsl:variable name="text" select="code/text()"/>      
       <xsl:variable name="query-param">
         <xsl:if test="$query-parameters">&amp;<xsl:value-of select="$query-parameters"></xsl:value-of></xsl:if>
       </xsl:variable>
@@ -330,7 +376,7 @@
         </xsl:call-template>
       </xsl:variable>
       <xsl:variable name="canvas-id" select="generate-id(.)"/>
-      <xsl:variable name="swf-embed-params">{url: '<xsl:value-of select="concat($lzxdir, $fname, '?lzt=swf', $query-param)"/>', id: '<xsl:value-of select="concat($canvas-id,'SWF')"/>', width: '<xsl:copy-of select="$canvas-width"/>', height: '<xsl:copy-of select="$canvas-height"/>'}</xsl:variable>
+      <xsl:variable name="swf-embed-params">{url: '<xsl:value-of select="concat($lzxdir, $fname, '?lzt=swf', $query-param)"/>', id: '<xsl:value-of select="concat($canvas-id,'SWF')"/>', width: '<xsl:copy-of select="$canvas-width"/>', height: '<xsl:copy-of select="$canvas-height"/>', history: false}</xsl:variable>
       <xsl:variable name="dhtml-embed-params">{url: '<xsl:value-of select="concat($lzxdir, $fname, '?lzt=html&amp;lzr=dhtml', $query-param)"/>', id: '<xsl:value-of select="concat($canvas-id,'DHTML')"/>', width: '<xsl:copy-of select="$canvas-width"/>', height: '<xsl:copy-of select="$canvas-height"/>'}</xsl:variable>
 
     <div class="embedded-canvas">

Modified: openlaszlo/branches/devildog/docs/src/xsl/conditional-html.xsl
===================================================================
--- openlaszlo/branches/devildog/docs/src/xsl/conditional-html.xsl	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/xsl/conditional-html.xsl	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,8 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
+<!-- 
+  To understand the documentation toolchain, please consult the developer's guide, 
+  in Part XI, Documentation Tools and Guidelines, and especially in 
+  Chapter 52, The Documentation Toolchain. 
+  
+  In a source build of OpenLaszlo, those chapters can be found at
+  http://localhost:8080/trunk/docs/developers/developers.doctools.html
+  
+  Currently, those chapters can be found live at the following URL
+  http://labs.openlaszlo.org/trunk-nightly/docs/developers/developers.doctools.html
+  
+  [bshine 12.29.2007]
+-->
 <!DOCTYPE xsl:stylesheet [
 
 <!ENTITY lowercase      "'abcdefghijklmnopqrstuvwxyz'">

Modified: openlaszlo/branches/devildog/docs/src/xsl/dbk-toc2nav.xsl
===================================================================
--- openlaszlo/branches/devildog/docs/src/xsl/dbk-toc2nav.xsl	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/xsl/dbk-toc2nav.xsl	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <!DOCTYPE xsl:stylesheet [
@@ -9,6 +9,8 @@
 
 ]>
 
+<!-- This stylesheet is unused. [bshine 12.26.2007] -->
+
 <xsl:stylesheet version="1.0" 
                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                 xmlns:h="http://www.w3.org/1999/xhtml"

Modified: openlaszlo/branches/devildog/docs/src/xsl/js2doc2dbk.xsl
===================================================================
--- openlaszlo/branches/devildog/docs/src/xsl/js2doc2dbk.xsl	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/xsl/js2doc2dbk.xsl	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,8 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
+<!-- 
+  To understand the documentation toolchain, please consult the developer's guide, 
+  in Part XI, Documentation Tools and Guidelines, and especially in 
+  Chapter 52, The Documentation Toolchain. 
+  
+  In a source build of OpenLaszlo, those chapters can be found at
+  http://localhost:8080/trunk/docs/developers/developers.doctools.html
+  
+  Currently, those chapters can be found live at the following URL
+  http://labs.openlaszlo.org/trunk-nightly/docs/developers/developers.doctools.html
+  
+  [bshine 12.29.2007]
+-->
 <!DOCTYPE xsl:stylesheet [
 
 <!ENTITY nbsp  "&#160;">
@@ -1287,4 +1300,4 @@
     
   </xsl:template>
  
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>

Modified: openlaszlo/branches/devildog/docs/src/xsl/lzx-pretty-print.xsl
===================================================================
--- openlaszlo/branches/devildog/docs/src/xsl/lzx-pretty-print.xsl	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/xsl/lzx-pretty-print.xsl	2008-01-04 16:20:15 UTC (rev 7726)
@@ -4,8 +4,20 @@
 
 If you edit this file, please validate your work using http://validator.w3.org/
 -->
+<!-- 
+  To understand the documentation toolchain, please consult the developer's guide, 
+  in Part XI, Documentation Tools and Guidelines, and especially in 
+  Chapter 52, The Documentation Toolchain. 
+  
+  In a source build of OpenLaszlo, those chapters can be found at
+  http://localhost:8080/trunk/docs/developers/developers.doctools.html
+  
+  Currently, those chapters can be found live at the following URL
+  http://labs.openlaszlo.org/trunk-nightly/docs/developers/developers.doctools.html
+  
+  [bshine 12.29.2007]
+-->
 
-
 <!DOCTYPE xsl:stylesheet [
 
 <!ENTITY constraint    "(starts-with(normalize-space(.),'$') and
@@ -181,6 +193,6 @@
 
 </xsl:stylesheet>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->

Modified: openlaszlo/branches/devildog/docs/src/xsl/lzx2js2doc.xsl
===================================================================
--- openlaszlo/branches/devildog/docs/src/xsl/lzx2js2doc.xsl	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/xsl/lzx2js2doc.xsl	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,8 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.                   *
+* Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
+<!-- 
+  To understand the documentation toolchain, please consult the developer's guide, 
+  in Part XI, Documentation Tools and Guidelines, and especially in 
+  Chapter 52, The Documentation Toolchain. 
+  
+  In a source build of OpenLaszlo, those chapters can be found at
+  http://localhost:8080/trunk/docs/developers/developers.doctools.html
+  
+  Currently, those chapters can be found live at the following URL
+  http://labs.openlaszlo.org/trunk-nightly/docs/developers/developers.doctools.html
+  
+  [bshine 12.29.2007]
+-->
 <!DOCTYPE xsl:stylesheet [
 
 ]>

Modified: openlaszlo/branches/devildog/docs/src/xsl/parameters.xsl
===================================================================
--- openlaszlo/branches/devildog/docs/src/xsl/parameters.xsl	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/xsl/parameters.xsl	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,12 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                 version="1.0">
+  <!-- Specify a doctype. Fixes LPP-5207. [bshine 12.17.2007] -->
+  <xsl:param name="chunker.output.method" select="'html'"/>
+  <xsl:param name="chunker.output.doctype-public" select="'-//W3C//DTD HTML 4.01 Transitional//EN'"/>
+  <xsl:param name="chunker.output.doctype-system" select="'http://www.w3.org/TR/html4/loose.dtd'"/>  
   
-  <!-- todo: add doctype -->
   <!--xsl:param name="emphasis.propagates.style" select="0"/-->
   
   <!-- Adminitions -->
@@ -31,7 +34,7 @@
   <xsl:param name="index.number.separator" select="', '"/>
   <xsl:param name="index.range.separator" select="'-'"/>
   <!-- HTML -->
-  <xsl:param name="draft.mode" select="'yes'"/>
+  <xsl:param name="draft.mode" select="'no'"/> <!-- Set to 'yes' if you want a watermark -->
   <xsl:param name="draft.watermark.image" select="'./images/draft.png'"/>
   <xsl:param name="use.id.as.filename" select="1"/>
   <!-- Meta/*.info -->

Modified: openlaszlo/branches/devildog/docs/src/xsl/refguide-html.xsl
===================================================================
--- openlaszlo/branches/devildog/docs/src/xsl/refguide-html.xsl	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/docs/src/xsl/refguide-html.xsl	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,8 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2006-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2006-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
+<!-- 
+     To understand the documentation toolchain, please consult the developer's guide, 
+     in Part XI, Documentation Tools and Guidelines, and especially in 
+     Chapter 52, The Documentation Toolchain. 
+     
+     In a source build of OpenLaszlo, those chapters can be found at
+     http://localhost:8080/trunk/docs/developers/developers.doctools.html
+     
+     Currently, those chapters can be found live at the following URL
+     http://labs.openlaszlo.org/trunk-nightly/docs/developers/developers.doctools.html
+     
+     [bshine 12.29.2007]
+-->
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                 version="1.0">
 
@@ -50,4 +63,4 @@
      </xsl:template>
 
 
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>

Modified: openlaszlo/branches/devildog/laszlo-explorer/coverpages/documentation_cover.html
===================================================================
--- openlaszlo/branches/devildog/laszlo-explorer/coverpages/documentation_cover.html	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/laszlo-explorer/coverpages/documentation_cover.html	2008-01-04 16:20:15 UTC (rev 7726)
@@ -2,7 +2,7 @@
 <!-- documentation_cover.html                                              -->
 <!--                                                                       -->
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <!--=======================================================================-->
@@ -17,23 +17,21 @@
   <div class="desc">
    <strong><a href="../../docs/developers/index.html" target="laszlo-dguide">Software Developer's Guide to OpenLaszlo Applications</a></strong>
    <p>In depth explanations of OpenLaszlo concepts&#8212;from tutorials through advanced concepts.</p>
+   <strong><a href="../../docs/reference/index.html" target="laszlo-reference">LZX Reference Manual</a></strong>
+   <p>Comprehensive listing of all LZX tag definitions and APIs&#8212;
+   including tag attributes and API methods and parameters. (The previous version of the OpenLaszlo reference is <a href="http://www.openlaszlo.org/lps3/docs/reference/index.html" target="laszlo-reference">also available</a>; please consult it if you have problems with the 4.1 documentation. 
+   </p>   
   <strong><a href="../../docs/deployers/index.html" target="laszlo-deployers-guide">System Administrator's Guide to Deploying OpenLaszlo Applications</a></strong>
    <p>Information for system administrators about how to deploy the OpenLaszlo Server, including explanations of configuration settings and server
    monitoring.</p>
   <!--strong><a href="../../docs/design/index.html" target="laszlo-designer-guide">Designer's Guide</a></strong>
    <p>An explication of OpenLaszlo for
 graphic designers and information architects.</p-->
-   <strong><a href="http://www.openlaszlo.org/lps3/docs/reference/index.html" target="laszlo-reference">LZX Reference Manual</a></strong>
-   <p>Comprehensive listing of all LZX tag definitions and APIs&#8212;
-   including tag attributes and API methods and parameters. (We recommend that you use <a href="http://www.openlaszlo.org/lps3/docs/reference/index.html" target="laszlo-reference">the OpenLaszlo 3.4 Reference Manual</a>, because the <a href="../../docs/reference/index.html" target="laszlo-reference">4.0 docs included in this distribution</a> are only at "alpha" status. The 3.4 docs contain the same information as the 4.0 docs, because the API's have not changed from 3.4. Consult  <a href="../../docs/reference/index.html" target="laszlo-reference">the local 4.0 docs</a> only if you are concerned that you are missing 4.0-specific information. 
-   </p>
    <strong><a href="../../docs/component-design/index.html" target="laszlo-componentguide">Components Guide</a></strong>
    <p>A visual design guide for the LZ Components, including detailed
    explanations of their construction
    (<a href="../../docs/component-design/component-design-2.0.pdf" target="laszlo-componentguide-pdf">PDF</a>).
    </p>
-   <strong><a href="../../docs/contributors/index.html" target="laszlo-contributorsguide">Contributor's Guide</a> (alpha)</strong>
-   <p>Documentation for use by contributors to the OpenLaszlo platform, including private interfaces and kernel APIs. This is still in "alpha" status.</p>
   <strong><a href="../../index.html" target="lzquickindex">Quick Index</a></strong>
   <p>An list of links to all the content and applications referenced by the OpenLaszlo Explorer.
 </p>

Modified: openlaszlo/branches/devildog/laszlo-explorer/nav.xml
===================================================================
--- openlaszlo/branches/devildog/laszlo-explorer/nav.xml	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/laszlo-explorer/nav.xml	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 <menu>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
     <section name="Welcome" src="/laszlo-explorer/coverpages/welcome/" title="OpenLaszlo Server" 
@@ -305,12 +305,11 @@
 
   <section name="Documentation" title="Documentation" src="/laszlo-explorer/coverpages/documentation_cover.html" text="Tutorial, advanced, reference">
     <topic src="/docs/installation/index.html" name="Installation" />
-    <topic src="http://www.openlaszlo.org/lps3/docs/reference/index.html" name="LZX Reference" action="popupexternal" target="laszlolzxreference" />
+    <topic popup="/docs/reference/index.html" name="LZX Reference" action="popup" target="laszlolzxreference"/>    
     <topic popup="/docs/developers/index.html" name="Developer's Guide" action="popup" target="laszlodevguide" />
     <topic popup="/docs/deployers/index.html" name="Administrator's Guide" action="popup" target="laszloadminguide" />
     <!--topic popup="/docs/design/index.html" name="UI Designer's Guide" action="popup" target="laszlouiguide" /-->
     <topic popup="/docs/component-design/index.html" name="Components Guide" action="popup" target="laszlocomponentguide" />
-     <topic popup="/docs/contributors/index.html" name="Contributor's Guide" action="popup" target="laszlocontributorsguide" />
     <topic src="/docs/release-notes.html" name="Release Notes" />
     <topic src="/tools/index.html" name="Developer's Tools" title="Development Tools"  text="Tips for IDEs"/>
   </section>

Modified: openlaszlo/branches/devildog/laszlo-explorer/nav_dhtml.xml
===================================================================
--- openlaszlo/branches/devildog/laszlo-explorer/nav_dhtml.xml	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/laszlo-explorer/nav_dhtml.xml	2008-01-04 16:20:15 UTC (rev 7726)
@@ -1,6 +1,6 @@
 <menu>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
     <section name="Welcome" src="/laszlo-explorer/coverpages/welcome/" title="OpenLaszlo Server" 
@@ -300,12 +300,11 @@
 
   <section name="Documentation" title="Documentation" src="/laszlo-explorer/coverpages/documentation_cover.html" text="Tutorial, advanced, reference">
     <topic src="/docs/installation/index.html" name="Installation" />
-    <topic src="http://www.openlaszlo.org/lps3/docs/reference/index.html" name="LZX Reference" action="popupexternal" target="laszlolzxreference" />
+    <topic popup="/docs/reference/index.html" name="LZX Reference" action="popup" target="laszlolzxreference"/>    
     <topic popup="/docs/developers/index.html" name="Developer's Guide" action="popup" target="laszlodevguide" />
     <topic popup="/docs/deployers/index.html" name="Administrator's Guide" action="popup" target="laszloadminguide" />
     <!--topic popup="/docs/design/index.html" name="UI Designer's Guide" action="popup" target="laszlouiguide" /-->
     <topic popup="/docs/component-design/index.html" name="Components Guide" action="popup" target="laszlocomponentguide" />
-    <topic popup="/docs/contributors/index.html" name="Contributor's Guide" action="popup" target="laszlocontributorsguide" />
     <topic src="/docs/release-notes.html" name="Release Notes" />
     <topic src="/tools/index.html" name="Developer's Tools" title="Development Tools"  text="Tips for IDEs"/>
   </section>

Modified: openlaszlo/branches/devildog/lps/components/debugger/newcontent.lzx
===================================================================
--- openlaszlo/branches/devildog/lps/components/debugger/newcontent.lzx	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/lps/components/debugger/newcontent.lzx	2008-01-04 16:20:15 UTC (rev 7726)
@@ -3,7 +3,7 @@
 
  **************************************************************************-->
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2004 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 
@@ -281,7 +281,7 @@
     <view name="lower_right_corner" bgcolor="#888888" width="11" height="11"
       x="${parent.width-11}" y="${parent.height-11}"/>
 
-    <_dbg_horiz_scrollbar id="dhsb" y="${classroot.textpane.height}"  
+    <_dbg_horiz_scrollbar name="dhsb" y="${classroot.textpane.height}"  
                           width="${parent.width - 11}" 
                           bgcolor="#666666" height="13" />
 

Modified: openlaszlo/branches/devildog/lps/components/debugger/scrollingtext.lzx
===================================================================
--- openlaszlo/branches/devildog/lps/components/debugger/scrollingtext.lzx	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/lps/components/debugger/scrollingtext.lzx	2008-01-04 16:20:15 UTC (rev 7726)
@@ -281,7 +281,7 @@
     <view name="lower_right_corner" bgcolor="#888888" width="11" height="11"
       x="${parent.width-11}" y="${parent.height-11}"/>
 
-    <_dbg_horiz_scrollbar id="dhsb" y="${parent.content.height-2}"  
+    <_dbg_horiz_scrollbar name="dhsb" y="${parent.content.height-2}"  
                           width="${parent.width - 11}" 
                           bgcolor="#666666" height="13" />
 
@@ -421,7 +421,7 @@
  </class>
 </library>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2004 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <!-- @LZX_VERSION@                                                         -->

Modified: openlaszlo/branches/devildog/lps/includes/laszlo-debugger.css
===================================================================
--- openlaszlo/branches/devildog/lps/includes/laszlo-debugger.css	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/lps/includes/laszlo-debugger.css	2008-01-04 16:20:15 UTC (rev 7726)
@@ -44,7 +44,12 @@
 	background-color: white;
 }
 
+/* Debug.addText */
+span.OUTPUT
+{
+    white-space: pre;
+}
 /*
- * Copyright 2006 Laszlo Systems, Inc.  All Rights Reserved.
+ * Copyright 2006-2008 Laszlo Systems, Inc.  All Rights Reserved.
  * Use is subject to license terms.
  */

Modified: openlaszlo/branches/devildog/test/lztest/lztest-text.lzx
===================================================================
--- openlaszlo/branches/devildog/test/lztest/lztest-text.lzx	2008-01-04 11:14:08 UTC (rev 7725)
+++ openlaszlo/branches/devildog/test/lztest/lztest-text.lzx	2008-01-04 16:20:15 UTC (rev 7726)
@@ -19,7 +19,8 @@
   <text name="text3" resize="false" y="20" bgcolor="0xaaaaaa"/>
 
 <!-- text4: simple text for checking selection methods -->
-  <text name="text4" resize="false" bgcolor="0xaaaaaa"/>
+  <inputtext name="text4" resize="false" bgcolor="0xaaaaaa"/>
+  <inputtext name="text4ml" width="100" multiline="true" bgcolor="0xaaaaaa"/>
 
 <!-- text5: simple text for checking scroll methods -->
   <view name="view5">
@@ -287,6 +288,21 @@
   LzTestManager.assertEquals (2, text4.getSelectionSize(),  "text4.getSelectionSize() failure (5)");    
   LzTestManager.assertEquals (0, text4.getSelectionPosition(),  "text4.getSelectionPosition() failure (5)");    
 
+  if ($dhtml) {
+      text4ml.setText('\r\n01234\r\n\r\n567890123456789\r\n')
+  } else {
+      text4ml.setText('\n01234\n\n567890123456789\n')
+  }
+  text4ml.setSelection(5, 14);
+  LzTestManager.assertEquals (9, text4ml.getSelectionSize(),  "text4ml.getSelectionSize() failure (6)");    
+  LzTestManager.assertEquals (5, text4ml.getSelectionPosition(),  "text4ml.getSelectionPosition() failure (6)");    
+  text4ml.setSelection(6, 9);
+  LzTestManager.assertEquals (3, text4ml.getSelectionSize(),  "text4ml.getSelectionSize() failure (7)");    
+  LzTestManager.assertEquals (6, text4ml.getSelectionPosition(),  "text4ml.getSelectionPosition() failure (7)");    
+  text4ml.setSelection(5, 8);
+  LzTestManager.assertEquals (3, text4ml.getSelectionSize(),  "text4ml.getSelectionSize() failure (8)");    
+  LzTestManager.assertEquals (5, text4ml.getSelectionPosition(),  "text4ml.getSelectionPosition() failure (8)");    
+
 /*
   text4.setText ("     ");  // Note: The user cannot select a string of spaces
   text4.setSelection (0, 4);
@@ -479,7 +495,7 @@
 </canvas>
 <!-- 
 /* X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2007 Laszlo Systems, Inc.  All Rights Reserved.          *
+* Copyright 2007-2008 Laszlo Systems, Inc.  All Rights Reserved.          *
 * Use is subject to license terms.                                        *
 * X_LZ_COPYRIGHT_END ******************************************************/
 -->



More information about the Laszlo-checkins mailing list